diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index d359ca6f4c..0000000000 --- a/.editorconfig +++ /dev/null @@ -1,22 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://EditorConfig.org - -root = true - -; Use 2 spaces for indentation in all Ruby files - -[*.rb] -indent_style = space -indent_size = 2 - -[Rakefile] -indent_style = space -indent_size = 2 - -[Gemfile*] -indent_style = space -indent_size = 2 - -[config.ru] -indent_style = space -indent_size = 2 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 176a458f94..0000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index bfbe7bd2c0..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,11 +0,0 @@ -**Description:** - - -**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/.github/move.yml b/.github/move.yml deleted file mode 100644 index e041083c9a..0000000000 --- a/.github/move.yml +++ /dev/null @@ -1,13 +0,0 @@ -# Configuration for move-issues - https://github.com/dessant/move-issues - -# Delete the command comment. Ignored when the comment also contains other content -deleteCommand: true -# Close the source issue after moving -closeSourceIssue: true -# Lock the source issue after moving -lockSourceIssue: false -# Set custom aliases for targets -# aliases: -# r: repo -# or: owner/repo - diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index e5b0f5e954..0000000000 --- a/.github/stale.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 60 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 7 -# Issues with these labels will never be considered stale -#exemptLabels: -# - pinned -# - security -# Label to use when marking an issue as stale -staleLabel: Stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6713e9e11c..0000000000 --- a/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -.bundle -.DS_Store -.sass-cache -.gist-cache -.pygments-cache -public -sass.old -source.old -source/_stash -source/stylesheets/screen.css -vendor -node_modules -source/.jekyll-metadata -*.iml -.idea/ -/.vs/home-assistant.github.io/v15/.suo -/.vs/ProjectSettings.json -/.vs/slnx.sqlite -/.vs/config/applicationhost.config -/.vs/slnx.sqlite-journal -/.vs/VSWorkspaceState.json diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index be241929d6..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "_deploy"] - path = _deploy - url = https://github.com/home-assistant/home-assistant.github.io.git diff --git a/.jekyll-metadata b/.jekyll-metadata new file mode 100644 index 0000000000..beefda1ae3 Binary files /dev/null and b/.jekyll-metadata differ diff --git a/.powrc b/.powrc deleted file mode 100644 index 4777f08fcd..0000000000 --- a/.powrc +++ /dev/null @@ -1,5 +0,0 @@ -if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ] ; then - source "$rvm_path/scripts/rvm" - source ".rvmrc" -fi - \ No newline at end of file diff --git a/.project b/.project deleted file mode 100644 index 8039da0a1c..0000000000 --- a/.project +++ /dev/null @@ -1,11 +0,0 @@ - - - home-assistant.github.io - - - - - - - - diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 35cee72dcb..0000000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.4.3 diff --git a/.slugignore b/.slugignore deleted file mode 100644 index 0a41d01373..0000000000 --- a/.slugignore +++ /dev/null @@ -1,3 +0,0 @@ -plugins -sass -source diff --git a/.themes/classic/.editorconfig b/.themes/classic/.editorconfig deleted file mode 100644 index 940fea3e50..0000000000 --- a/.themes/classic/.editorconfig +++ /dev/null @@ -1,44 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://EditorConfig.org - - -; Use 2 spaces for indentation in SCSS, JavaScript, HTML, and XML - -[*.scss] -indent_style = space -indent_size = 2 - -[*.js] -indent_style = space -indent_size = 2 - -[*.html] -indent_style = space -indent_size = 2 - -[*.xml] -indent_style = space -indent_size = 2 - - -; Use 4 spaces for indentation in Markdown files - -[*.md] -indent_style = space -indent_size = 4 - -[*.markdown] -indent_style = space -indent_size = 4 - - -; Override default indentation for some library files - -[jwplayer/glow/glow.xml] -indent_style = tab - -[libs/jXHR.js] -indent_style = tab - -[libs/swfobject-dynamic.js] -indent_style = tab diff --git a/.themes/classic/sass/_base.scss b/.themes/classic/sass/_base.scss deleted file mode 100644 index 05fdd005cb..0000000000 --- a/.themes/classic/sass/_base.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "base/utilities"; -@import "base/solarized"; -@import "base/theme"; -@import "base/typography"; -@import "base/layout"; diff --git a/.themes/classic/sass/_partials.scss b/.themes/classic/sass/_partials.scss deleted file mode 100644 index 99c28b6378..0000000000 --- a/.themes/classic/sass/_partials.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import "partials/header"; -@import "partials/navigation"; -@import "partials/blog"; -@import "partials/sharing"; -@import "partials/syntax"; -@import "partials/archive"; -@import "partials/sidebar"; -@import "partials/footer"; diff --git a/.themes/classic/sass/base/_layout.scss b/.themes/classic/sass/base/_layout.scss deleted file mode 100644 index 81903428f5..0000000000 --- a/.themes/classic/sass/base/_layout.scss +++ /dev/null @@ -1,192 +0,0 @@ -$max-width: 1200px !default; - -// Padding used for layout margins -$pad-min: 18px !default; -$pad-narrow: 25px !default; -$pad-medium: 35px !default; -$pad-wide: 55px !default; - -// Sidebar widths used in media queries -$sidebar-width-medium: 240px !default; -$sidebar-pad-medium: 15px !default; -$sidebar-pad-wide: 20px !default; -$sidebar-width-wide: 300px !default; - -$indented-lists: false !default; - -$header-font-size: 1em !default; -$header-padding-top: 1.5em !default; -$header-padding-bottom: 1.5em !default; - -.group { @include pie-clearfix; } - -@mixin collapse-sidebar { - float: none; - width: auto; - clear: left; - margin: 0; - padding: 0 $pad-medium 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid lighten($sidebar-border, 4); - section { - &.odd, &.even { float: left; width: 48%; } - &.odd { margin-left: 0; } - &.even { margin-left: 4%; } - } - &.thirds section { - width: 30%; - margin-left: 5%; - &.first { - margin-left: 0; - clear: both; - } - } -} - -body { - -webkit-text-size-adjust: none; - max-width: $max-width; - position: relative; - margin: 0 auto; - > header, > nav, > footer, #content > article, #content > div > article, #content > div > section { - @extend .group; - padding-left: $pad-min; - padding-right: $pad-min; - @media only screen and (min-width: 480px) { - padding-left: $pad-narrow; - padding-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - padding-left: $pad-medium; - padding-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - padding-left: $pad-wide; - padding-right: $pad-wide; - } - } - div.pagination { - @extend .group; - margin-left: $pad-min; - margin-right: $pad-min; - @media only screen and (min-width: 480px) { - margin-left: $pad-narrow; - margin-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - margin-left: $pad-medium; - margin-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - margin-left: $pad-wide; - margin-right: $pad-wide; - } - } - > header { - font-size: $header-font-size; - padding-top: $header-padding-top; - padding-bottom: $header-padding-bottom; - } -} - -#content { - overflow: hidden; - > div, > article { width: 100%; } -} - -aside.sidebar { - float: none; - padding: 0 $pad-min 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid $sidebar-border; - @extend .group; -} - -.flex-content { max-width: 100%; height: auto; } - -.basic-alignment { - &.left { float: left; margin-right: 1.5em; } - &.right { float: right; margin-left: 1.5em; } - &.center { display:block; margin: 0 auto 1.5em; } - &.left, &.right { margin-bottom: .8em; } -} - -.toggle-sidebar { &, .no-sidebar & { display: none; }} - -body.sidebar-footer { - @media only screen and (min-width: 750px) { - aside.sidebar{ @include collapse-sidebar; } - } - #content { margin-right: 0px; } - .toggle-sidebar { display: none; } -} - -@media only screen and (min-width: 550px) { - body > header { font-size: $header-font-size; } -} -@media only screen and (min-width: 750px) { - aside.sidebar { @include collapse-sidebar; } -} -#main, #content, .sidebar { - @extend .group; -} -@media only screen and (min-width: 768px) { - body { -webkit-text-size-adjust: auto; } - body > header { font-size: $header-font-size * 1.2; } - #main { - padding: 0; - margin: 0 auto; - } - #content { - overflow: visible; - margin-right: $sidebar-width-medium; - position: relative; - .no-sidebar & { margin-right: 0; border-right: 0; } - .collapse-sidebar & { margin-right: 20px; } - > div, > article { - padding-top: $pad-medium/2; - padding-bottom: $pad-medium/2; - float: left; - } - } - aside.sidebar { - width: $sidebar-width-medium - $sidebar-pad-medium*2; - padding: 0 $sidebar-pad-medium $sidebar-pad-medium; - background: none; - clear: none; - float: left; - margin: 0 -100% 0 0; - section { - width: auto; margin-left: 0; - &.odd, &.even { float: none; width: auto; margin-left: 0; } - } - .collapse-sidebar & { - @include collapse-sidebar; - } - } -} - -@media only screen and (min-width: 992px) { - body > header { font-size: $header-font-size * 1.3; } - #content { margin-right: $sidebar-width-wide; } - #content { - > div, > article { - padding-top: $pad-wide/2; - padding-bottom: $pad-wide/2; - } - } - aside.sidebar { - width: $sidebar-width-wide - $sidebar-pad-wide*2; - padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide; - .collapse-sidebar & { - padding: { left: $pad-wide; right: $pad-wide; } - } - } -} - -@if $indented-lists == false { - @media only screen and (min-width: 768px) { - ul, ol { margin-left: 0; } - } -} - diff --git a/.themes/classic/sass/base/_solarized.scss b/.themes/classic/sass/base/_solarized.scss deleted file mode 100644 index 45d8fc5eff..0000000000 --- a/.themes/classic/sass/base/_solarized.scss +++ /dev/null @@ -1,46 +0,0 @@ -$base03: #002b36 !default; //darkest blue -$base02: #073642 !default; //dark blue -$base01: #586e75 !default; //darkest gray -$base00: #657b83 !default; //dark gray -$base0: #839496 !default; //medium gray -$base1: #93a1a1 !default; //medium light gray -$base2: #eee8d5 !default; //cream -$base3: #fdf6e3 !default; //white -$solar-yellow: #b58900 !default; -$solar-orange: #cb4b16 !default; -$solar-red: #dc322f !default; -$solar-magenta: #d33682 !default; -$solar-violet: #6c71c4 !default; -$solar-blue: #268bd2 !default; -$solar-cyan: #2aa198 !default; -$solar-green: #859900 !default; - -$solarized: dark !default; - -@if $solarized == light { - - $_base03: $base03; - $_base02: $base02; - $_base01: $base01; - $_base00: $base00; - $_base0: $base0; - $_base1: $base1; - $_base2: $base2; - $_base3: $base3; - - $base03: $_base3; - $base02: $_base2; - $base01: $_base1; - $base00: $_base0; - $base0: $_base00; - $base1: $_base01; - $base2: $_base02; - $base3: $_base03; -} - -/* non highlighted code colors */ -$pre-bg: $base03 !default; -$pre-border: darken($base02, 5) !default; -$pre-color: $base1 !default; - - diff --git a/.themes/classic/sass/base/_theme.scss b/.themes/classic/sass/base/_theme.scss deleted file mode 100644 index c35136d5ac..0000000000 --- a/.themes/classic/sass/base/_theme.scss +++ /dev/null @@ -1,85 +0,0 @@ -$noise-bg: image-url('noise.png') top left !default; -$img-border: inline-image('dotted-border.png') !default; - -// Main Link Colors -$link-color: lighten(#165b94, 3) !default; -$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default; -$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default; -$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default; - -// Main Section Colors -$main-bg: #f8f8f8 !default; -$page-bg: #252525 !default; -$article-border: #eeeeee !default; - -$header-bg: #333 !default; -$header-border: lighten($header-bg, 15) !default; -$title-color: #f2f2f2 !default; -$subtitle-color: #aaa !default; - -$text-color: #222 !default; -$text-color-light: #aaa !default; -$type-border: #ddd !default; - -/* Navigation */ -$nav-bg: #ccc !default; -$nav-bg-front: image-url('noise.png') !default; -$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)) !default; -$nav-color: darken($nav-bg, 38) !default; -$nav-color-hover: darken($nav-color, 25) !default; -$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default; -$nav-border: darken($nav-bg, 10) !default; -$nav-border-top: lighten($nav-bg, 15) !default; -$nav-border-bottom: darken($nav-bg, 25) !default; -$nav-border-left: darken($nav-bg, 11) !default; -$nav-border-right: lighten($nav-bg, 7) !default; - -/* Sidebar colors */ -$sidebar-bg: #f2f2f2 !default; -$sidebar-link-color: $text-color !default; -$sidebar-link-color-hover: $link-color-hover !default; -$sidebar-link-color-active: $link-color-active !default; -$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default; -$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default; -$sidebar-border-hover: darken($sidebar-bg, 7) !default; -$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default; -$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default; - -$footer-color: #888 !default; -$footer-bg: #ccc !default; -$footer-bg-front: image-url('noise.png') !default; -$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)) !default; -$footer-color: darken($footer-bg, 38) !default; -$footer-color-hover: darken($footer-color, 10) !default; -$footer-border-top: lighten($footer-bg, 15) !default; -$footer-border-bottom: darken($footer-bg, 15) !default; -$footer-link-color: darken($footer-bg, 38) !default; -$footer-link-color-hover: darken($footer-color, 25) !default; -$page-border-bottom: darken($footer-bg, 5) !default; - - -/* Core theme application */ - -a { - @include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active); -} -aside.sidebar a { - @include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active); -} -a { - @include transition(color .3s); -} - -html { - background: $page-bg image-url('line-tile.png') top left; -} -body { - > div { - background: $sidebar-bg $noise-bg; - border-bottom: 1px solid $page-border-bottom; - > div { - background: $main-bg $noise-bg; - border-right: 1px solid $sidebar-border; - } - } -} diff --git a/.themes/classic/sass/base/_typography.scss b/.themes/classic/sass/base/_typography.scss deleted file mode 100644 index 9a6bbacd2a..0000000000 --- a/.themes/classic/sass/base/_typography.scss +++ /dev/null @@ -1,164 +0,0 @@ -$blockquote: $type-border !default; -$sans: "PT Sans", "Helvetica Neue", Arial, sans-serif !default; -$serif: "PT Serif", Georgia, Times, "Times New Roman", serif !default; -$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; -$heading-font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif !default; -$header-title-font-family: $heading-font-family !default; -$header-subtitle-font-family: $heading-font-family !default; - -// Fonts -.heading { - font-family: $heading-font-family; -} -.sans { font-family: $sans; } -.serif { font-family: $serif; } -.mono { font-family: $mono; } - -body > header h1 { - font-size: 2.2em; - @extend .heading; - font-family: $header-title-font-family; - font-weight: normal; - line-height: 1.2em; - margin-bottom: 0.6667em; -} -body > header h2 { - font-family: $header-subtitle-font-family; -} - -body { - line-height: 1.5em; - color: $text-color; - @extend .serif; -} -h1 { - font-size: 2.2em; - line-height: 1.2em; -} - -@media only screen and (min-width: 992px) { - body { font-size: 1.15em; } - h1 { font-size: 2.6em; line-height: 1.2em; } -} - -#{headings()}{ - @extend .heading; - text-rendering: optimizelegibility; - margin-bottom: 1em; - font-weight: bold; -} -h2, section h1 { - font-size: 1.5em; -} -h3, section h2, section section h1 { - font-size: 1.3em; -} -h4, section h3, section section h2, section section section h1 { - font-size: 1em; -} -h5, section h4, section section h3 { - font-size: .9em; -} -h6, section h5, section section h4, section section section h3 { - font-size: .8em; -} - -p, article blockquote, ul, ol { margin-bottom: 1.5em; } - -ul { list-style-type: disc; - ul { list-style-type: circle; margin-bottom: 0px; - ul { list-style-type: square; margin-bottom: 0px; }}} - -ol { list-style-type: decimal; - ol { list-style-type: lower-alpha; margin-bottom: 0px; - ol { list-style-type: lower-roman; margin-bottom: 0px; }}} - -ul, ol { &, ul, ol { margin-left: 1.3em; }} -ul, ol { ul, ol { margin-bottom: 0em; }} - -strong { font-weight: bold; } - -em { font-style: italic; } - -sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;} -sup { top: -.5em; } -sub { bottom: -.5em; } - -a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; } - -q { font-style: italic; - &:before { content: "\201C"; } - &:after { content: "\201D"; } -} - -em, dfn { font-style: italic; } - -strong, dfn { font-weight: bold; } - -del, s { text-decoration: line-through; } - -abbr, acronym { border-bottom: 1px dotted; cursor: help; } - -pre, code, tt { @extend .mono; } - -hr { margin-bottom: 0.2em; } - -small { font-size: .8em; } - -big { font-size: 1.2em; } - -article blockquote { - $bq-margin: 1.2em; - font-style: italic; - position: relative; - font-size: 1.2em; - line-height: 1.5em; - padding-left: 1em; - border-left: 4px solid rgba($text-color-light, .5); - cite { - font-style: italic; - a { color: $text-color-light !important; word-wrap: break-word; } - &:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; } - } - @media only screen and (min-width: 992px) { - padding-left: 1.5em; - border-left-width: 4px; - } -} - -.pullquote-right:before, -.pullquote-left:before { - /* Reset metrics. */ - padding: 0; - border: none; - - /* Content */ - content: attr(data-pullquote); - - /* Pull out to the right, modular scale based margins. */ - float: right; - width: 45%; - margin: .5em 0 1em 1.5em; - - /* Baseline correction */ - position: relative; - top: 7px; - font-size: 1.4em; - line-height: 1.45em; -} - -.pullquote-left:before { - /* Make left pullquotes align properly. */ - float: left; - margin: .5em 1.5em 1em 0; -} - -/* @extend this to force long lines of continuous text to wrap */ -.force-wrap { - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - white-space: pre-wrap; - word-wrap: break-word; -} - diff --git a/.themes/classic/sass/base/_utilities.scss b/.themes/classic/sass/base/_utilities.scss deleted file mode 100644 index 2d49e659e7..0000000000 --- a/.themes/classic/sass/base/_utilities.scss +++ /dev/null @@ -1,28 +0,0 @@ -@mixin mask-image($img, $repeat: no-repeat){ - @include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms); - @include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms); - width: image-width($img); - height: image-height($img); -} - -@mixin shadow-box($border: #fff .5em solid, $shadow: rgba(#000, .15) 0 1px 4px, $border-radius: .3em) { - @include border-radius($border-radius); - @include box-shadow($shadow); - @include box-sizing(border-box); - border: $border; -} - -@mixin selection($bg, $color: inherit, $text-shadow: none){ - * { - &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } - } -} - -@function text-color($color, $dark: dark, $light: light){ - $text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000; - $text-color: if($text-color >= 150, $dark, $light); - @return $text-color; -} - diff --git a/.themes/classic/sass/custom/_colors.scss b/.themes/classic/sass/custom/_colors.scss deleted file mode 100644 index 740266a810..0000000000 --- a/.themes/classic/sass/custom/_colors.scss +++ /dev/null @@ -1,43 +0,0 @@ -// Here you can easily change your sites's color scheme. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. -// If you need a handy color picker try http://hslpicker.com - -//$header-bg: #263347; -//$subtitle-color: lighten($header-bg, 58); -//$nav-bg: desaturate(lighten(#8fc17a, 18), 5); -//$nav-bg-front: image-url('noise.png'); -//$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)); -//$sidebar-bg: desaturate(#eceff5, 8); -//$sidebar-link-color: saturate(#526f9a, 10); -//$sidebar-link-color-hover: darken(#7ab662, 9); -//$footer-bg: #ccc !default; -//$footer-bg-front: image-url('noise.png'); -//$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)); - - -/* To use the light Solarized highlighting theme uncomment the following line */ -//$solarized: light; - -/* If you want to tweak the Solarized colors you can do that here */ -//$base03: #002b36; //darkest blue -//$base02: #073642; //dark blue -//$base01: #586e75; //darkest gray -//$base00: #657b83; //dark gray -//$base0: #839496; //medium gray -//$base1: #93a1a1; //medium light gray -//$base2: #eee8d5; //cream -//$base3: #fdf6e3; //white -//$solar-yellow: #b58900; -//$solar-orange: #cb4b16; -//$solar-red: #dc322f; -//$solar-magenta: #d33682; -//$solar-violet: #6c71c4; -//$solar-blue: #268bd2; -//$solar-cyan: #2aa198; -//$solar-green: #859900; - - -/* Non highlighted code colors */ -//$pre-bg: $base03; -//$pre-border: darken($base02, 5); -//$pre-color: $base1; diff --git a/.themes/classic/sass/custom/_fonts.scss b/.themes/classic/sass/custom/_fonts.scss deleted file mode 100644 index 1a6b2a0628..0000000000 --- a/.themes/classic/sass/custom/_fonts.scss +++ /dev/null @@ -1,10 +0,0 @@ -// Here you can easily change font faces which are used in your site. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites's. -// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html - -//$sans: "Optima", sans-serif; -//$serif: "Baskerville", serif; -//$mono: "Courier", monospace; -//$heading-font-family: "Verdana", sans-serif; -//$header-title-font-family: "Futura", sans-serif; -//$header-subtitle-font-family: "Futura", sans-serif; diff --git a/.themes/classic/sass/custom/_layout.scss b/.themes/classic/sass/custom/_layout.scss deleted file mode 100644 index 74c7de9d42..0000000000 --- a/.themes/classic/sass/custom/_layout.scss +++ /dev/null @@ -1,21 +0,0 @@ -// Here you can easily change your sites's layout. -// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works. - -//$header-font-size: 1em; -//$header-padding-top: 1.5em; -//$header-padding-bottom: 1.5em; - -//$max-width: 1350px; -//$indented-lists: true; - -// Padding used for layout margins -//$pad-min: 18px; -//$pad-narrow: 25px; -//$pad-medium: 35px; -//$pad-wide: 55px; - -// Sidebar widths used in media queries -//$sidebar-width-medium: 240px; -//$sidebar-pad-medium: 15px; -//$sidebar-pad-wide: 20px; -//$sidebar-width-wide: 300px; diff --git a/.themes/classic/sass/custom/_styles.scss b/.themes/classic/sass/custom/_styles.scss deleted file mode 100644 index 91ffcccf6c..0000000000 --- a/.themes/classic/sass/custom/_styles.scss +++ /dev/null @@ -1,2 +0,0 @@ -// This File is imported last, and will override other styles in the cascade -// Add styles here to make changes without digging in too much diff --git a/.themes/classic/sass/partials/_archive.scss b/.themes/classic/sass/partials/_archive.scss deleted file mode 100644 index 9ef1e82449..0000000000 --- a/.themes/classic/sass/partials/_archive.scss +++ /dev/null @@ -1,72 +0,0 @@ -#archive { - #content > div { &, > article { padding-top: 0; } } -} -#blog-archives { - article { - padding: 1em 0 1em; - position: relative; - background: $img-border bottom left repeat-x; - &:last-child { - background: none; - } - footer { padding: 0; margin: 0;} - } - h1 { color: $text-color; margin-bottom: .3em; } - h2 { display: none; } - h1 { - font-size: 1.5em; - a { - @include hover-link; - color: inherit; - &:hover { color: $link-color-hover; } - font-weight: normal; - display: inline-block; - } - } - a.category, time { - @extend .sans; - color: $text-color-light; - } - color: $text-color-light; - .entry-content { display: none; } - time { - font-size: .9em; - line-height: 1.2em; - .month, .day { display: inline-block; } - .month { text-transform: uppercase; } - } - p { margin-bottom: 1em; } - &, .entry-content { a { @include link-colors(inherit, $link-color-hover); }} - a:hover { color: $link-color-hover; } - @media only screen and (min-width: 550px) { - article { margin-left: 5em; } - h2 { - margin-bottom: .3em; - font-weight: normal; - display: inline-block; - position: relative; top: -1px; - float: left; - &:first-child { padding-top: .75em; } - } - time { - position: absolute; - text-align: right; - left: 0em; - top: 1.8em; - } - .year { display: none; } - article { - padding:{left: 4.5em; bottom: .7em;} - } - a.category { - line-height: 1.1em; - } - } -} -#content > .category { - article { - margin-left: 0; - padding-left: 6.8em; - } - .year { display: inline; } -} diff --git a/.themes/classic/sass/partials/_blog.scss b/.themes/classic/sass/partials/_blog.scss deleted file mode 100644 index 57fe7a8aec..0000000000 --- a/.themes/classic/sass/partials/_blog.scss +++ /dev/null @@ -1,141 +0,0 @@ -article { - padding-top: 1em; - a { @extend .force-wrap; } - header { - position: relative; - padding-top: 2em; - padding-bottom: 1em; - margin-bottom: 1em; - background: $img-border bottom left repeat-x; - h1 { - margin: 0; - a { text-decoration: none; - &:hover { text-decoration: underline; } } - } - p { - font-size: .9em; - color: $text-color-light; - margin: 0; - &.meta { - @extend .sans; - text-transform: uppercase; - position: absolute; top: 0; - } - } - @media only screen and (min-width: 768px) { - margin-bottom: 1.5em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - } - } - h2 { - padding-top: 0.8em; - background: $img-border top left repeat-x; - } - .entry-content & h2:first-child, header + h2 { padding-top: 0; } - h2:first-child, header + h2 { background: none; } - .feature { - padding-top: .5em; - margin-bottom: 1em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - font-size: 2.0em; font-style: italic; - line-height: 1.3em; - } - img, video, .flash-video { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box; - } - video, .flash-video { margin: 0 auto 1.5em; } - video { display: block; width: 100%; } - .flash-video { - > div { - position: relative; - display: block; - padding-bottom: 56.25%; - padding-top: 1px; - height: 0; - overflow: hidden; - iframe, object, embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } - } - > footer { - padding-bottom: 2.5em; - margin-top: 2em; - @extend .sans; - p.meta { - margin-bottom: .8em; - font-size: .85em; - clear: both; - overflow: hidden; - } - .byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before { - @extend .separator; - } - } - -} -article + article { - .blog-index & { - background: $img-border top left repeat-x; - } -} -#content .blog-index { - padding: { top: 0; bottom: 0; } - article { padding-top: 2em; } - article header { background: none; padding-bottom: 0; } - article h1 { - font-size: 2.2em; - a { color: inherit; &:hover { color: $link-color-hover; } } - } - a[rel=full-article] { - background: darken($main-bg, 5); - display: inline-block; - padding: .4em .8em; - margin-right: .5em; - text-decoration: none; - color: mix($text-color, $text-color-light); - @extend .serif; - @include transition(background-color .5s); - &:hover { - background: $link-color-hover; - text-shadow: none; - color: $main-bg; - } - } - footer { - @extend .sans; - margin-top: 1em; - } -} - -.separator { - content: "\2022 "; - padding: 0 .4em 0 .2em; - display: inline-block; -} - -#content div.pagination { - text-align: center; - font-size: .95em; - position: relative; - background: $img-border top left repeat-x; - padding: {top: 1.5em; bottom: 1.5em;} - a { - text-decoration: none; - color: $text-color-light; - &.prev { position: absolute; left: 0; } - &.next { position: absolute; right: 0; } - &:hover { color: $link-color-hover; } - &[href*=archive] { - &:before, &:after { content: '\2014'; padding: 0 .3em; } - } - } -} diff --git a/.themes/classic/sass/partials/_footer.scss b/.themes/classic/sass/partials/_footer.scss deleted file mode 100644 index 3741122512..0000000000 --- a/.themes/classic/sass/partials/_footer.scss +++ /dev/null @@ -1,19 +0,0 @@ -body > footer { - @extend .sans; - font-size: .8em; - color: $footer-color; - text-shadow: lighten($footer-bg, 5) 0 1px; - background-color: $footer-bg; - @include background($footer-bg-front, $footer-bg-back); - border-top: 1px solid $footer-border-top; - position: relative; - padding-top: 1em; - padding-bottom: 1em; - margin-bottom: 3em; - @include border-bottom-radius(.4em); - z-index: 1; - a { - @include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color); - } - p:last-child { margin-bottom: 0; } -} diff --git a/.themes/classic/sass/partials/_header.scss b/.themes/classic/sass/partials/_header.scss deleted file mode 100644 index e3c6c020c2..0000000000 --- a/.themes/classic/sass/partials/_header.scss +++ /dev/null @@ -1,18 +0,0 @@ -body > header { - background: $header-bg; - h1 { - display: inline-block; - margin: 0; - a, a:visited, a:hover { - color: $title_color; - text-decoration: none; - } - } - h2 { - margin: .2em 0 0; - @extend .sans; - font-size: 1em; - color: $subtitle-color; - font-weight: normal; - } -} diff --git a/.themes/classic/sass/partials/_navigation.scss b/.themes/classic/sass/partials/_navigation.scss deleted file mode 100644 index 30fa011d18..0000000000 --- a/.themes/classic/sass/partials/_navigation.scss +++ /dev/null @@ -1,137 +0,0 @@ -body > nav { - position: relative; - background-color: $nav-bg; - @include background($nav-bg-front, $nav-bg-back); - border: { - top: 1px solid $nav-border-top; - bottom: 1px solid $nav-border-bottom; } - padding-top: .35em; - padding-bottom: .35em; - form { - @include background-clip(padding-box); - margin: 0; padding: 0; - .search { - padding: .3em .5em 0; - font-size: .85em; - font-family: $sans; - line-height: 1.1em; - width: 95%; - @include border-radius(.5em); - @include background-clip(padding-box); - @include box-shadow(lighten($nav-bg, 2) 0 1px); - background-color: lighten($nav-bg, 15); - border: 1px solid $nav-border; - color: #888; - &:focus { - color: #444; - border-color: #80b1df; - @include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset); - background-color: #fff; - outline: none; - } - } - } - fieldset[role=search]{ float: right; width: 48%; } - fieldset.mobile-nav{ float: left; width: 48%; - select{ width: 100%; font-size: .8em; border: 1px solid #888;} - } - ul { display: none; } - @media only screen and (min-width: 550px) { - font-size: .9em; - ul { - @include horizontal-list(0); - float: left; - display: block; - padding-top: .15em; - } - ul.subscription { - margin-left: .8em; - float: right; - li:last-child a { padding-right: 0; } - } - ul li { - margin: 0; - } - a { - @include link-colors($nav-color, $nav-color-hover, $visited: $nav-color); - font-family: $sans; - text-shadow: lighten($nav-bg, 12) 0 1px; - float: left; - text-decoration: none; - font-size: 1.1em; - padding: .1em 0; - line-height: 1.5em; - } - li + li { - border-left: 1px solid $nav-border-left; - margin-left: .8em; - a { - padding-left: .8em; - border-left: 1px solid $nav-border-right; - } - } - form { - float: right; - text-align: left; - padding-left: .8em; - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px; - .search { - width: 93%; - font-size: .95em; - line-height: 1.2em; - } - } - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px; - .search { width: 91%; } - } - fieldset.mobile-nav { display: none; } - fieldset[role=search]{ width: 99%; } - } - @media only screen and (min-width: 992px) { - form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px; - } - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px; - } - } -} -.no-placeholder { - body > nav .search { - background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat; - text-indent: 1.3em; - } -} -@mixin mask-subscription-nav($feed: 'rss.png'){ - position: relative; top: 0px; - text-indent: -999999em; - background-color: $nav-border-right; - border: 0; - padding: 0; - &,&:after { @include mask-image($feed); } - &:after { - content: ""; - position: absolute; top: -1px; left: 0; - background-color: lighten($nav-color, 25); - } - &:hover:after { background-color: lighten($nav-color, 20); } -} -.maskImage { - body > nav { - @media only screen and (min-width: 550px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px; - } - } - @media only screen and (min-width: 992px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px; - } - } - } - ul.subscription { position: relative; top: .2em; li, a { border: 0; padding: 0; }} - a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); } - a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); } -} - diff --git a/.themes/classic/sass/partials/_sharing.scss b/.themes/classic/sass/partials/_sharing.scss deleted file mode 100644 index 3eecb488e8..0000000000 --- a/.themes/classic/sass/partials/_sharing.scss +++ /dev/null @@ -1,8 +0,0 @@ -.sharing { - p.meta + & { - padding: { top: 1em; left: 0; } - background: $img-border top left repeat-x; - } -} - -#fb-root { display: none; } diff --git a/.themes/classic/sass/partials/_sidebar.scss b/.themes/classic/sass/partials/_sidebar.scss deleted file mode 100644 index cd8c1ca263..0000000000 --- a/.themes/classic/sass/partials/_sidebar.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import "sidebar/base"; -@import "sidebar/googleplus"; -@import "sidebar/pinboard"; -@import "sidebar/delicious"; diff --git a/.themes/classic/sass/partials/_syntax.scss b/.themes/classic/sass/partials/_syntax.scss deleted file mode 100644 index 5465286fde..0000000000 --- a/.themes/classic/sass/partials/_syntax.scss +++ /dev/null @@ -1,261 +0,0 @@ -.highlight, html .gist .gist-file .gist-syntax .gist-highlight { - table td.code { width: 100%; } - border: 1px solid $pre-border !important; -} -.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { - text-align: right; - font-size: 13px; - line-height: 1.45em; - @if $solarized == light { - background: lighten($base03, 1) $noise-bg !important; - border-right: 1px solid darken($base02, 2) !important; - @include box-shadow(lighten($base03, 2) -1px 0 inset); - text-shadow: lighten($base02, 2) 0 -1px; - } @else { - background: $base02 $noise-bg !important; - border-right: 1px solid darken($base03, 2) !important; - @include box-shadow(lighten($base02, 2) -1px 0 inset); - text-shadow: darken($base02, 10) 0 -1px; - } - span { color: $base01 !important; } - padding: .8em !important; - @include border-radius(0); -} - -figure.code, .gist-file, pre { - @include box-shadow(rgba(#000, .06) 0 0 10px); - .highlight pre { @include box-shadow(none); } -} - -.gist .highlight, figure.code .highlight { - @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); -} -html .gist .gist-file { - margin-bottom: 1.8em; - position: relative; - border: none; - padding-top: image-height("code_bg.png") !important; - .highlight { - margin-bottom: 0; - } - .gist-syntax { - border-bottom: 0 !important; - background: none !important; - .gist-highlight { - background: $base03 !important; - } - .highlight pre { - @extend .pre-code; - padding: 0; - } - } - .gist-meta { - padding: .6em 0.8em; - border: 1px solid lighten($base02, 2) !important; - color: $base01; - font-size: .7em !important; - @if $solarized == light { - background: lighten($base03, 2) $noise-bg; - border: 1px solid $pre-border !important; - border-top: 1px solid lighten($base03, 2) !important; - } @else { - background: $base02 $noise-bg; - } - @extend .sans; - line-height: 1.5em; - a { - color: mix($base1, $base01) !important; - @include hover-link; - &:hover { color: $base1 !important; } - } - a[href*='#file'] { - position: absolute; top: 0; left:0; right:-10px; - color: #474747 !important; - @extend .code-title; - &:hover { color: $link-color !important; } - } - a[href*=raw]{ - @extend .download-source; - top: .4em; - } - } -} -pre { - background: $pre-bg $noise-bg; - @include border-radius(.4em); - @extend .mono; - border: 1px solid $pre-border; - line-height: 1.45em; - font-size: 13px; - margin-bottom: 2.1em; - padding: .8em 1em; - color: $pre-color; - overflow: auto; -} -h3.filename { - @extend .code-title; - + pre { @include border-top-radius(0px); } -} - -p, li { - code { - @extend .mono; - display: inline-block; - white-space: no-wrap; - background: #fff; - font-size: .8em; - line-height: 1.5em; - color: #555; - border: 1px solid #ddd; - @include border-radius(.4em); - padding: 0 .3em; - margin: -1px 0; - } - pre code { font-size: 1em !important; background: none; border: none; } -} - -.pre-code { - font-family: $mono !important; - overflow: scroll; - overflow-y: hidden; - display: block; - padding: .8em; - overflow-x: auto; - line-height: 1.45em; - background: $base03 $noise-bg !important; - color: $base1 !important; - span { color: $base1 !important; } - span { font-style: normal !important; font-weight: normal !important; } - - .c { color: $base01 !important; font-style: italic !important; } /* Comment */ - .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ - .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ - .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ - .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ - .err { color: $solar-red !important; background: none !important; } /* Error */ - .k { color: $solar-orange !important; } /* Keyword */ - .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ - .p { color: $base1 !important; } /* Operator */ - .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ - .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ - .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ - .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ - //.gr { color: #aa0000 } /* Generic.Error */ - .gh { color: $base01 !important; } /* Generic.Heading */ - .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ - .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ - //.go { color: #888888 } /* Generic.Output */ - //.gp { color: #555555 } /* Generic.Prompt */ - .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ - .gu { color: $solar-violet !important; } /* Generic.Subheading */ - //.gt { color: #aa0000 } /* Generic.Traceback */ - .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ - .kd { color: $solar-blue !important; } /* Keyword.Declaration */ - .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ - .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ - .kt { color: $solar-cyan !important; } /* Keyword.Type */ - .n { color: $solar-blue !important; } - .na { color: $solar-blue !important; } /* Name.Attribute */ - .nb { color: $solar-green !important; } /* Name.Builtin */ - .nc { color: $solar-magenta !important;} /* Name.Class */ - .no { color: $solar-yellow !important; } /* Name.Constant */ - //.ni { color: #800080 } /* Name.Entity */ - .nl { color: $solar-green !important; } - .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ - .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ - .nn { color: $solar-yellow !important; } /* Name.Namespace */ - .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ - .nx { color: $solar-yellow !Important; } - //.bp { color: #999999 } /* Name.Builtin.Pseudo */ - //.vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: $solar-blue !important; } /* Name.Variable.Global */ - .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ - .nv { color: $solar-blue !important; } /* Name.Variable */ - //.w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ - .m { color: $solar-cyan !important; } /* Literal.Number */ - .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ - .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ - //.mo { color: #009999 } /* Literal.Number.Oct */ - .s { color: $solar-cyan !important; } /* Literal.String */ - //.sb { color: #d14 } /* Literal.String.Backtick */ - //.sc { color: #d14 } /* Literal.String.Char */ - .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ - .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ - .se { color: $solar-red !important; } /* Literal.String.Escape */ - //.sh { color: #d14 } /* Literal.String.Heredoc */ - .si { color: $solar-blue !important; } /* Literal.String.Interpol */ - //.sx { color: #d14 } /* Literal.String.Other */ - .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ - .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ - //.ss { color: #990073 } /* Literal.String.Symbol */ - //.il { color: #009999 } /* Literal.Number.Integer.Long */ - div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} -} - -.highlight, .gist-highlight { - pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } - margin-bottom: 1.8em; - background: $base03; - overflow-y: hidden; - overflow-x: auto; -} - -$solar-scroll-bg: rgba(#fff, .15); -$solar-scroll-thumb: rgba(#fff, .2); -@if $solarized == light { - $solar-scroll-bg: rgba(#000, .15); - $solar-scroll-thumb: rgba(#000, .15); -} - -pre, .highlight, .gist-highlight { - &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } - &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } -} - -.highlight code { - @extend .pre-code; background: #000; -} -figure.code { - background: none; - padding: 0; - border: 0; - margin-bottom: 1.5em; - pre { margin-bottom: 0; } - figcaption { - position: relative; - @extend .code-title; - a { @extend .download-source; } - } - .highlight { - margin-bottom: 0; - } -} - -.code-title { - text-align: center; - font-size: 13px; - line-height: 2em; - text-shadow: #cbcccc 0 1px 0; - color: #474747; - font-weight: normal; - margin-bottom: 0; - @include border-top-radius(5px); - font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; - background: #aaaaaa image-url("code_bg.png") top repeat-x; - border: 1px solid #565656; - border-top-color: #cbcbcb; - border-left-color: #a5a5a5; - border-right-color: #a5a5a5; - border-bottom: 0; -} - -.download-source { - position: absolute; right: .8em; - @include hover-link; - color: #666 !important; - z-index: 1; - font-size: 13px; - text-shadow: #cbcccc 0 1px 0; - padding-left: 3em; -} diff --git a/.themes/classic/sass/partials/sidebar/_base.scss b/.themes/classic/sass/partials/sidebar/_base.scss deleted file mode 100644 index 5441304e27..0000000000 --- a/.themes/classic/sass/partials/sidebar/_base.scss +++ /dev/null @@ -1,106 +0,0 @@ -.side-shadow-border { - @include box-shadow(lighten($sidebar-bg, 5) 0 1px); -} -aside.sidebar { - overflow: hidden; - color: $sidebar-color; - text-shadow: lighten($sidebar-bg, 8) 0 1px; - a { @extend .force-wrap; } - section { - @extend .sans; - font-size: .8em; - line-height: 1.4em; - margin-bottom: 1.5em; - h1 { - margin: 1.5em 0 0; - padding-bottom: .2em; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - + p { - padding-top: .4em; - } - } - } - img { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box($border: #fff .3em solid); - } - ul { - margin-bottom: 0.5em; - margin-left: 0; - } - li { - list-style: none; - padding: .5em 0; - margin: 0; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - p:last-child { - margin-bottom: 0; - } - } - a { - color: inherit; - @include transition(color .5s); - } - &:hover a { - color: $sidebar-link-color; - &:hover { color: $sidebar-link-color-hover; } - } -} -.aside-alt-link { - color: $sidebar-link-color-subdued; - &:hover { - color: $sidebar-link-color-subdued-hover; - } -} - -@media only screen and (min-width: 768px) { - .toggle-sidebar { - outline: none; - position: absolute; right: -10px; top: 0; bottom: 0; - display: inline-block; - text-decoration: none; - color: mix($text-color-light, $sidebar-bg); - width: 9px; - cursor: pointer; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - @include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0))); - } - &:after { - position: absolute; right: -11px; top: 0; - width: 20px; - font-size: 1.2em; - line-height: 1.1em; - padding-bottom: .15em; - @include border-bottom-right-radius(.3em); - text-align: center; - background: $main-bg $noise-bg; - border-bottom: 1px solid $sidebar-border; - border-right: 1px solid $sidebar-border; - content: "\00BB"; - text-indent: -1px; - } - .collapse-sidebar & { - text-indent: 0px; - right: -20px; - width: 19px; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - } - &:after { - border-left: 1px solid $sidebar-border; - text-shadow: #fff 0 1px; - content: "\00AB"; - left: 0px; right: 0; - text-align: center; - text-indent: 0; - border: 0; - border-right-width: 0; - background: none; - } - } - } -} diff --git a/.themes/classic/sass/partials/sidebar/_delicious.scss b/.themes/classic/sass/partials/sidebar/_delicious.scss deleted file mode 100644 index e962702e5f..0000000000 --- a/.themes/classic/sass/partials/sidebar/_delicious.scss +++ /dev/null @@ -1,4 +0,0 @@ -.delicious-posts { - a.delicious-link { margin-bottom: .5em; display: block; } - p { font-size: 1em; } -} diff --git a/.themes/classic/sass/partials/sidebar/_googleplus.scss b/.themes/classic/sass/partials/sidebar/_googleplus.scss deleted file mode 100644 index c2a693ee7f..0000000000 --- a/.themes/classic/sass/partials/sidebar/_googleplus.scss +++ /dev/null @@ -1,26 +0,0 @@ -.googleplus { - h1 { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - -o-box-shadow: none !important; - box-shadow: none !important; - border-bottom: 0px none !important; - } - a { - text-decoration: none; - white-space: normal !important; - line-height: 32px; - - img { - float: left; - margin-right: 0.5em; - border: 0 none; - } - } -} - -.googleplus-hidden { - position: absolute; - top: -1000em; - left: -1000em; -} diff --git a/.themes/classic/sass/partials/sidebar/_pinboard.scss b/.themes/classic/sass/partials/sidebar/_pinboard.scss deleted file mode 100644 index 9f9ab46114..0000000000 --- a/.themes/classic/sass/partials/sidebar/_pinboard.scss +++ /dev/null @@ -1,12 +0,0 @@ -#pinboard_linkroll { - .pin-title, .pin-description { - display: block; - margin-bottom: .5em; - } - .pin-tag { - @include hover-link; - @extend .aside-alt-link; - &:after { content: ','; } - &:last-child:after { content: ''; } - } -} diff --git a/.themes/classic/sass/plugins/_plugins.scss b/.themes/classic/sass/plugins/_plugins.scss deleted file mode 100644 index 3b4ba0b8a8..0000000000 --- a/.themes/classic/sass/plugins/_plugins.scss +++ /dev/null @@ -1,6 +0,0 @@ -/* - Add plugin stylesheets to this directory and they will be automatically - Imported. Load order is alphabetical and styles can be overriden in - custom/_style.scss which is loaded after all plugin stylesheets. -*/ - diff --git a/.themes/classic/sass/screen.scss b/.themes/classic/sass/screen.scss deleted file mode 100644 index 75eac0a24d..0000000000 --- a/.themes/classic/sass/screen.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import "compass"; -@include global-reset; - -@import "custom/colors"; -@import "custom/fonts"; -@import "custom/layout"; -@import "base"; -@import "partials"; -@import "plugins/**/*"; -@import "custom/styles"; diff --git a/.themes/classic/source/_includes/after_footer.html b/.themes/classic/source/_includes/after_footer.html deleted file mode 100644 index 08b8e3400a..0000000000 --- a/.themes/classic/source/_includes/after_footer.html +++ /dev/null @@ -1,5 +0,0 @@ -{% include disqus.html %} -{% include facebook_like.html %} -{% include google_plus_one.html %} -{% include twitter_sharing.html %} -{% include custom/after_footer.html %} diff --git a/.themes/classic/source/_includes/archive_post.html b/.themes/classic/source/_includes/archive_post.html deleted file mode 100644 index 210dbbbe73..0000000000 --- a/.themes/classic/source/_includes/archive_post.html +++ /dev/null @@ -1,8 +0,0 @@ -{% capture category %}{{ post.categories | size }}{% endcapture %} -

{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

- -{% if category != '0' %} - -{% endif %} diff --git a/.themes/classic/source/_includes/article.html b/.themes/classic/source/_includes/article.html deleted file mode 100644 index 842799773e..0000000000 --- a/.themes/classic/source/_includes/article.html +++ /dev/null @@ -1,29 +0,0 @@ -{% unless page.no_header %} -
- {% if index %} -

{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

- {% else %} -

{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

- {% endif %} - {% unless page.meta == false %} -

- {% include post/date.html %}{{ time }} - {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} - | Comments - {% endif %} -

- {% endunless %} -
-{% endunless %} -{% if index %} -
{{ content | excerpt }}
- {% capture excerpted %}{{ content | has_excerpt }}{% endcapture %} - {% if excerpted == 'true' %} - - {% endif %} -{% else %} -
{{ content }}
-{% endif %} diff --git a/.themes/classic/source/_includes/asides/delicious.html b/.themes/classic/source/_includes/asides/delicious.html deleted file mode 100644 index 115cdcbc58..0000000000 --- a/.themes/classic/source/_includes/asides/delicious.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if site.delicious_user %} -
-

On Delicious

-
- -

My Delicious Bookmarks »

-
-{% endif %} \ No newline at end of file diff --git a/.themes/classic/source/_includes/asides/github.html b/.themes/classic/source/_includes/asides/github.html deleted file mode 100644 index b0bf95965f..0000000000 --- a/.themes/classic/source/_includes/asides/github.html +++ /dev/null @@ -1,30 +0,0 @@ -{% if site.github_user %} -
-

GitHub Repos

- - {% if site.github_show_profile_link %} - @{{site.github_user}} on GitHub - {% endif %} - - -
-{% endif %} diff --git a/.themes/classic/source/_includes/asides/googleplus.html b/.themes/classic/source/_includes/asides/googleplus.html deleted file mode 100644 index 00a0aa856c..0000000000 --- a/.themes/classic/source/_includes/asides/googleplus.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.googleplus_user %} -
-

- - - Google+ - -

-
-{% endif %} - diff --git a/.themes/classic/source/_includes/asides/pinboard.html b/.themes/classic/source/_includes/asides/pinboard.html deleted file mode 100644 index c89c3e7b77..0000000000 --- a/.themes/classic/source/_includes/asides/pinboard.html +++ /dev/null @@ -1,19 +0,0 @@ -{% if site.pinboard_user %} -
-

My Pinboard

- -

My Pinboard Bookmarks »

-
- -{% endif %} diff --git a/.themes/classic/source/_includes/asides/recent_posts.html b/.themes/classic/source/_includes/asides/recent_posts.html deleted file mode 100644 index 4b1084747c..0000000000 --- a/.themes/classic/source/_includes/asides/recent_posts.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

Recent Posts

- -
diff --git a/.themes/classic/source/_includes/custom/after_footer.html b/.themes/classic/source/_includes/custom/after_footer.html deleted file mode 100644 index bce25dd972..0000000000 --- a/.themes/classic/source/_includes/custom/after_footer.html +++ /dev/null @@ -1,3 +0,0 @@ -{% comment %} - Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example) -{% endcomment %} diff --git a/.themes/classic/source/_includes/custom/asides/about.html b/.themes/classic/source/_includes/custom/asides/about.html deleted file mode 100644 index 59d309e4d8..0000000000 --- a/.themes/classic/source/_includes/custom/asides/about.html +++ /dev/null @@ -1,4 +0,0 @@ -
-

About Me

-

A little something about me.

-
diff --git a/.themes/classic/source/_includes/custom/category_feed.xml b/.themes/classic/source/_includes/custom/category_feed.xml deleted file mode 100644 index 8c93ed3917..0000000000 --- a/.themes/classic/source/_includes/custom/category_feed.xml +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: null ---- - - - - <![CDATA[{% if site.titlecase %}{{ page.title | titlecase | cdata_escape }}{% else %}{{ page.title | cdata_escape }}{% endif %} | {{ site.title | cdata_escape }}]]> - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - - {% if site.email %}{% endif %} - - Octopress - - {% for post in site.categories[page.category] limit: 5 %} - - <![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]> - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - - - {% endfor %} - diff --git a/.themes/classic/source/_includes/custom/footer.html b/.themes/classic/source/_includes/custom/footer.html deleted file mode 100644 index e12f067884..0000000000 --- a/.themes/classic/source/_includes/custom/footer.html +++ /dev/null @@ -1,4 +0,0 @@ -

- Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} - - Powered by Octopress -

diff --git a/.themes/classic/source/_includes/custom/head.html b/.themes/classic/source/_includes/custom/head.html deleted file mode 100644 index 824a41e749..0000000000 --- a/.themes/classic/source/_includes/custom/head.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/.themes/classic/source/_includes/custom/header.html b/.themes/classic/source/_includes/custom/header.html deleted file mode 100644 index 35f9c0595d..0000000000 --- a/.themes/classic/source/_includes/custom/header.html +++ /dev/null @@ -1,6 +0,0 @@ -
-

{{ site.title }}

- {% if site.subtitle %} -

{{ site.subtitle }}

- {% endif %} -
diff --git a/.themes/classic/source/_includes/custom/navigation.html b/.themes/classic/source/_includes/custom/navigation.html deleted file mode 100644 index d6bd42460b..0000000000 --- a/.themes/classic/source/_includes/custom/navigation.html +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/.themes/classic/source/_includes/disqus.html b/.themes/classic/source/_includes/disqus.html deleted file mode 100644 index 49c6a29cdb..0000000000 --- a/.themes/classic/source/_includes/disqus.html +++ /dev/null @@ -1,21 +0,0 @@ -{% comment %} Load script if disquss comments are enabled and `page.comments` is either empty (index) or set to true {% endcomment %} -{% if site.disqus_short_name and page.comments != false %} - -{% endif %} diff --git a/.themes/classic/source/_includes/facebook_like.html b/.themes/classic/source/_includes/facebook_like.html deleted file mode 100644 index d263e6d294..0000000000 --- a/.themes/classic/source/_includes/facebook_like.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if site.facebook_like %} -
- -{% endif %} diff --git a/.themes/classic/source/_includes/footer.html b/.themes/classic/source/_includes/footer.html deleted file mode 100644 index 3a8c768747..0000000000 --- a/.themes/classic/source/_includes/footer.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/footer.html %} diff --git a/.themes/classic/source/_includes/google_analytics.html b/.themes/classic/source/_includes/google_analytics.html deleted file mode 100644 index 4d4d596906..0000000000 --- a/.themes/classic/source/_includes/google_analytics.html +++ /dev/null @@ -1,13 +0,0 @@ -{% if site.google_analytics_tracking_id %} - -{% endif %} diff --git a/.themes/classic/source/_includes/google_plus_one.html b/.themes/classic/source/_includes/google_plus_one.html deleted file mode 100644 index b69ddaeb49..0000000000 --- a/.themes/classic/source/_includes/google_plus_one.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if site.google_plus_one %} - -{% endif %} diff --git a/.themes/classic/source/_includes/head.html b/.themes/classic/source/_includes/head.html deleted file mode 100644 index 48d1018fca..0000000000 --- a/.themes/classic/source/_includes/head.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - {% if page.title %}{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} - {% endif %}{{ site.title }} - - - {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} - - {% if page.keywords %}{% endif %} - - - - - - - - {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} - - - - - - - - - {% include custom/head.html %} - {% include google_analytics.html %} - diff --git a/.themes/classic/source/_includes/header.html b/.themes/classic/source/_includes/header.html deleted file mode 100644 index 524de6514b..0000000000 --- a/.themes/classic/source/_includes/header.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/header.html %} diff --git a/.themes/classic/source/_includes/navigation.html b/.themes/classic/source/_includes/navigation.html deleted file mode 100644 index 2f0e628068..0000000000 --- a/.themes/classic/source/_includes/navigation.html +++ /dev/null @@ -1,15 +0,0 @@ - - {% if site.simple_search %} -
-
- - -
-
- {% endif %} -{% include custom/navigation.html %} diff --git a/.themes/classic/source/_includes/post/author.html b/.themes/classic/source/_includes/post/author.html deleted file mode 100644 index 83dd6a89a7..0000000000 --- a/.themes/classic/source/_includes/post/author.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if post.author %} - {% assign author = post.author %} -{% elsif page.author %} - {% assign author = page.author %} -{% else %} - {% assign author = site.author %} -{% endif %} -{% if author %}Posted by {{ author }}{% endif %} diff --git a/.themes/classic/source/_includes/post/categories.html b/.themes/classic/source/_includes/post/categories.html deleted file mode 100644 index 4a98b29d5d..0000000000 --- a/.themes/classic/source/_includes/post/categories.html +++ /dev/null @@ -1,10 +0,0 @@ -{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} -{% unless category == '0' %} - - {% if post %} - {{ post.categories | category_links }} - {% else %} - {{ page.categories | category_links }} - {% endif %} - -{% endunless %} diff --git a/.themes/classic/source/_includes/post/date.html b/.themes/classic/source/_includes/post/date.html deleted file mode 100644 index a86953c200..0000000000 --- a/.themes/classic/source/_includes/post/date.html +++ /dev/null @@ -1,5 +0,0 @@ -{% if page.date %}{% capture time %}{{ page.date_time_html }}{% endcapture %}{% endif %} -{% if post.date %}{% capture time %}{{ post.date_time_html }}{% endcapture %}{% endif %} - -{% if page.updated %}{% capture updated %}{{ page.date_time_updated_html }}{% endcapture %}{% endif %} -{% if post.updated %}{% capture updated %}{{ post.date_time_updated_html }}{% endcapture %}{% endif %} diff --git a/.themes/classic/source/_includes/post/disqus_thread.html b/.themes/classic/source/_includes/post/disqus_thread.html deleted file mode 100644 index b1acd8cca8..0000000000 --- a/.themes/classic/source/_includes/post/disqus_thread.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.themes/classic/source/_includes/post/sharing.html b/.themes/classic/source/_includes/post/sharing.html deleted file mode 100644 index d639faa1f2..0000000000 --- a/.themes/classic/source/_includes/post/sharing.html +++ /dev/null @@ -1,11 +0,0 @@ -
- {% if site.twitter_tweet_button %} - - {% endif %} - {% if site.google_plus_one %} -
- {% endif %} - {% if site.facebook_like %} -
- {% endif %} -
diff --git a/.themes/classic/source/_includes/twitter_sharing.html b/.themes/classic/source/_includes/twitter_sharing.html deleted file mode 100644 index 7cd5fbc288..0000000000 --- a/.themes/classic/source/_includes/twitter_sharing.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.twitter_follow_button or site.twitter_tweet_button %} - -{% endif %} diff --git a/.themes/classic/source/_layouts/category_index.html b/.themes/classic/source/_layouts/category_index.html deleted file mode 100644 index 85a6307204..0000000000 --- a/.themes/classic/source/_layouts/category_index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -footer: false ---- - -
-{% for post in site.categories[page.category] %} -{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} -{% unless year == this_year %} - {% assign year = this_year %} -

{{ year }}

-{% endunless %} -
- {% include archive_post.html %} -
-{% endfor %} -
diff --git a/.themes/classic/source/_layouts/default.html b/.themes/classic/source/_layouts/default.html deleted file mode 100644 index f23b07b88f..0000000000 --- a/.themes/classic/source/_layouts/default.html +++ /dev/null @@ -1,14 +0,0 @@ -{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %} -{% include head.html %} - -
{% include header.html %}
- -
-
- {{ content | expand_urls: root_url }} -
-
- - {% include after_footer.html %} - - diff --git a/.themes/classic/source/_layouts/page.html b/.themes/classic/source/_layouts/page.html deleted file mode 100644 index 8ba6ec9457..0000000000 --- a/.themes/classic/source/_layouts/page.html +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: default ---- - -
-
- {% if page.title %} -
-

{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

- {% if page.date %}

{% include post/date.html %}{{ time }}

{% endif %} -
- {% endif %} - {{ content }} - {% unless page.footer == false %} -
- {% if page.date or page.author %}

- {% if page.author %}{% include post/author.html %}{% endif %} - {% include post/date.html %}{% if updated %}{{ updated }}{% else %}{{ time }}{% endif %} - {% if page.categories %}{% include post/categories.html %}{% endif %} -

{% endif %} - {% unless page.sharing == false %} - {% include post/sharing.html %} - {% endunless %} -
- {% endunless %} -
-{% if site.disqus_short_name and page.comments == true %} -
-

Comments

-
{% include post/disqus_thread.html %}
-
-{% endif %} -
-{% unless page.sidebar == false %} - -{% endunless %} diff --git a/.themes/classic/source/_layouts/post.html b/.themes/classic/source/_layouts/post.html deleted file mode 100644 index b450681bd0..0000000000 --- a/.themes/classic/source/_layouts/post.html +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: default -single: true ---- - -
-
- {% include article.html %} -
-

- {% include post/author.html %} - {% include post/date.html %}{{ time }}{% if updated %} {{ updated }}{% endif %} - {% include post/categories.html %} -

- {% unless page.sharing == false %} - {% include post/sharing.html %} - {% endunless %} -

- {% if page.previous.url %} - « {{page.previous.title}} - {% endif %} - {% if page.next.url %} - {{page.next.title}} » - {% endif %} -

-
-
-{% if site.disqus_short_name and page.comments == true %} -
-

Comments

-
{% include post/disqus_thread.html %}
-
-{% endif %} -
-{% unless page.sidebar == false %} - -{% endunless %} diff --git a/.themes/classic/source/atom.xml b/.themes/classic/source/atom.xml deleted file mode 100644 index 403328f347..0000000000 --- a/.themes/classic/source/atom.xml +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: null ---- - - - - <![CDATA[{{ site.title | cdata_escape }}]]> - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - - {% if site.email %}{% endif %} - - Octopress - - {% for post in site.posts limit: 20 %} - - <![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]> - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - - - {% endfor %} - diff --git a/.themes/classic/source/blog/archives/index.html b/.themes/classic/source/blog/archives/index.html deleted file mode 100644 index f1d9cee324..0000000000 --- a/.themes/classic/source/blog/archives/index.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: Blog Archive -footer: false ---- - -
-{% for post in site.posts reverse %} -{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} -{% unless year == this_year %} - {% assign year = this_year %} -

{{ year }}

-{% endunless %} -
- {% include archive_post.html %} -
-{% endfor %} -
diff --git a/.themes/classic/source/images/noise.png b/.themes/classic/source/images/noise.png deleted file mode 100644 index 46cdf03fdf..0000000000 Binary files a/.themes/classic/source/images/noise.png and /dev/null differ diff --git a/.themes/classic/source/index.html b/.themes/classic/source/index.html deleted file mode 100644 index 64b665e4f0..0000000000 --- a/.themes/classic/source/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: default ---- - -
- {% assign index = true %} - {% for post in paginator.posts %} - {% assign content = post.content %} -
- {% include article.html %} -
- {% endfor %} - -
- diff --git a/.themes/classic/source/javascripts/octopress.js b/.themes/classic/source/javascripts/octopress.js deleted file mode 100644 index faaf3dbee4..0000000000 --- a/.themes/classic/source/javascripts/octopress.js +++ /dev/null @@ -1,151 +0,0 @@ -function getNav() { - var mainNav = $('ul.main-navigation, ul[role=main-navigation]').before('
') - var mobileNav = $('fieldset.mobile-nav').append(' + + + + + + + + +
+
+
+
+ +
+

+ Bluetooth BCM43xx +

+
+
+

Start this add-on to activate the BCM43xx Bluetooth chipset.

+

Supported platforms: Raspberry Pi 3.

+
+
+ +
+
+ + + + + + + diff --git a/addons/cec_scan/index.html b/addons/cec_scan/index.html new file mode 100644 index 0000000000..192bf08dce --- /dev/null +++ b/addons/cec_scan/index.html @@ -0,0 +1,162 @@ + + + + + + + + + CEC Scanner - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ CEC Scanner +

+
+
+

Help you to discover the HDMI CEC address. Start the add-on and look into the log to see all connected device on HDMI.

+
+
+ +
+
+ + + + + + + diff --git a/addons/check_config/index.html b/addons/check_config/index.html new file mode 100644 index 0000000000..601d60bb05 --- /dev/null +++ b/addons/check_config/index.html @@ -0,0 +1,171 @@ + + + + + + + + + Check Home Assistant configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Check Home Assistant configuration +

+
+
+

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 addon will help you avoid errors due to breaking changes, resulting in a smooth update.

+
{
+  "version": "latest"
+}
+
+
+

Configuration variables:

+
    +
  • version (Required): Version of Home Assistant that you plan to install.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/addons/configurator/index.html b/addons/configurator/index.html new file mode 100644 index 0000000000..55ba5a65ee --- /dev/null +++ b/addons/configurator/index.html @@ -0,0 +1,220 @@ + + + + + + + + + HASS Configurator - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ HASS Configurator +

+
+
+

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.

+

+ +Screenshot of the HASS Configurator. +

+

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

Add-on Configuration

+
{
+  "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"],
+  "banlimit": 0,
+  "ignore_pattern": ["__pycache__"],
+  "dirsfirst": false,
+  "sesame": "somesecretnobodycanguess"
+}
+
+
+
    +
  • 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.
  • +
  • banlimit (Optional): Ban access from IPs after banlimit failed login attempts. The default value 0 disables this feature. Restart the add-on to clear the list of banned IP addresses.
  • +
  • ignore_pattern (Optional): Files and folders to ignore in the UI.
  • +
  • dirsfirst (Optional): List directories before files in the file browser.
  • +
  • sesame (Optional): Secret token to dynamically allow access from the IP the request originates from. Open your bookmark https://hassio.yourdomain.com:8123/somesecretnobodycanguess while allowed_networks is set to [] and boom! Open Sesame! You can use the Network status menu to revoke IP addresses for which access has been granted.
  • +
+

Embedding into Home-Assistant

+

Using the Home Assistant component panel_iframe it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration from within the Home Assistant frontend.

+

An example configuration would look like this:

+
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/addons/dhcp_server/index.html b/addons/dhcp_server/index.html new file mode 100644 index 0000000000..c7275b5b89 --- /dev/null +++ b/addons/dhcp_server/index.html @@ -0,0 +1,209 @@ + + + + + + + + + DHCP server - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ DHCP server +

+
+
+

Create a simple DHCP server for your network and allow setting fixed IPs for devices.

+
{
+  "domain": "mynetwork.local",
+  "dns": ["8.8.8.8", "8.8.4.4"],
+  "networks": [
+    {
+      "subnet": "192.168.1.0",
+      "netmask": "255.255.255.0",
+      "range_start": "192.168.1.100",
+      "range_end": "192.168.1.200",
+      "broadcast": "192.168.1.255",
+      "gateway": "192.168.1.1",
+      "interface": "eth0"
+    }
+  ],
+  "hosts": [
+    {
+      "name": "webcam_xy",
+      "mac": "aa:bb:ee:cc",
+      "ip": "192.168.1.40"
+    }
+  ]
+}
+
+
+

Configuration variables:

+
    +
  • domain (Required): Your network domain name.
  • +
  • dns (Required): A list of DNS server for your network.
  • +
  • networks (Optional): A list of network to provide DHCP. +  - subnet (Required): Your network schema. +  - netmask (Required): Your network netmask. +  - range_start (Required): Start address for dhcp leases. +  - range_end (Required): End address for dhcp leases. +  - broadcast (Required): Network broadcast address. +  - gateway (Required): A List of gateways. +
      +
    • interface (Required): Interface on that will be listen. Normally is eth0 for ethernet wired connection and wlan0 for wireless connection.
    • +
    +
  • +
  • hosts (Optional): A list of fixed IPs for devices. +
      +
    • name (Required): Name/hostname of your device. +  - mac (Required): Mac address of your device. +  - ip (Required): Fix ip address for device.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/addons/dnsmasq/index.html b/addons/dnsmasq/index.html new file mode 100644 index 0000000000..8e42b11659 --- /dev/null +++ b/addons/dnsmasq/index.html @@ -0,0 +1,184 @@ + + + + + + + + + Dnsmasq - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Dnsmasq +

+
+
+

Setup and manage a Dnsmasq 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.

+

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

+
{
+  "defaults": ["8.8.8.8", "8.8.4.4"],
+  "forwards": [
+    {"domain": "mystuff.local", "server": "192.168.1.40"}
+  ],
+  "hosts": [
+    {"host": "home.mydomain.io", "ip": "192.168.1.10"}
+  ],
+  "interface": "eth1"
+}
+
+
+

Configuration variables:

+
    +
  • defaults (Required): A list of DNS servers to forward default requests to.
  • +
  • forwards (Optional): A list of domains that will forward to a specific server.
  • +
  • hosts (Optional): A list of hosts to resolve statically.
  • +
  • interface (Optional): If an interface is set, it listens only on this interface. Needs to be set for ResinOS. Normally is eth0 for ethernet wired connection and wlan0 for wireless connection.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/addons/duckdns/index.html b/addons/duckdns/index.html new file mode 100644 index 0000000000..2bf2b9d567 --- /dev/null +++ b/addons/duckdns/index.html @@ -0,0 +1,190 @@ + + + + + + + + + DuckDNS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ DuckDNS +

+
+
+

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

+
{
+  "lets_encrypt": {
+    "accept_terms": true
+  },
+  "token": "sdfj-2131023-dslfjsd-12321",
+  "domains": ["my-domain.duckdns.org"]
+}
+
+
+

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, it will generate & update Let’s Enrypt certificates for your DuckDNS domain.
  • +
+

Home Assistant configuration

+

Use the following configuration in Home Assistant to use the generated certificate:

+
http:
+  base_url: https://my-domain.duckdns.org:8123
+  ssl_certificate: /ssl/fullchain.pem
+  ssl_key: /ssl/privkey.pem
+
+
+

If you use a port other than 8123 or an SSL proxy, change the port number accordingly.

+

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 - noting that you’ll only need to forward the TCP port.

+

Ensure that you allocate the Home Assistant system a fixed IP on your network before you configure port forwarding. You can do this either on the computer itself (see the install guide or via a static lease on your router.

+
+
+ +
+
+ + + + + + + diff --git a/addons/git_pull/index.html b/addons/git_pull/index.html new file mode 100644 index 0000000000..4e389cd044 --- /dev/null +++ b/addons/git_pull/index.html @@ -0,0 +1,204 @@ + + + + + + + + + GIT pull - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ GIT pull +

+
+
+

Load and update configuration files for Home Assistant from a GIT repository.

+
{
+  "repository": "https://example.com/my_configs.git",
+  "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. You have to add .git to your GITHub-Repository-URL (see example Config)
  • +
  • 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_user (Optional): Username to use when authenticating to a repo with a username and password.
  • +
  • deployment_password (Optional): Password to use when authenticating to a repo. Ignored if deployment_user is not set.
  • +
  • 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: <user>@<host>:<repository path>.
  • +
  • +

    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.

+

+You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a git repository. If the script does not find the necessary git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a .git folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is ls -a /config. +

+
+
+ +
+
+ + + + + + + diff --git a/addons/google_assistant/index.html b/addons/google_assistant/index.html new file mode 100644 index 0000000000..bd747db970 --- /dev/null +++ b/addons/google_assistant/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Google Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Google Assistant +

+
+
+

+ If you want to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant, then you want the Google Assistant component. +

+

Google Assistant is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact via the DialogFlow integration with Home-Assistant. You can also use Google Actions to extend its functionality.

+

To enable access to the Google Assistant API, do the following:

+
    +
  1. In the Cloud Platform Console, go to the Projects page. Select an existing project or create a new project
  2. +
  3. Open the project. In the top of the page search for Google Assistant API or use this link and enable it.
  4. +
  5. Create an OAuth Client ID, pick type “Other”, click “Create” and download the JSON file by clicking the Download JSON button on the right side.
  6. +
+

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:

+
**** 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 <card #>,<device #>. 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 the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device.

+
{
+  "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
  • +
+

Home Assistant configuration

+

Use the Home Assistant DialogFlow component to integrate the add-on into Home Assistant.

+
+
+ +
+
+ + + + + + + diff --git a/addons/homematic/index.html b/addons/homematic/index.html new file mode 100644 index 0000000000..ca8fb7667d --- /dev/null +++ b/addons/homematic/index.html @@ -0,0 +1,216 @@ + + + + + + + + + HomeMatic - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ HomeMatic +

+
+
+

Set up a HomeMatic hardware layer. At the moment we don’t support hmIP, but that is in progress. For learning and handling devices use our internal HomeMatic panel and services (in progress) or use Homematic-Manager > 2.0.

+

The logic layer will be Home-Assistant. There is no ReGa or other logic layer installed. You can’t import an existing configuration, you’ll need re-learn it into Home-Assistant.

+

Follow devices will be supported and tested:

+ +
{
+  "rf_enable": true,
+  "rf": [
+    {
+      "type": "CCU2",
+      "device": "/dev/ttyAMA0"
+    }
+  ],
+  "wired_enable": false,
+  "wired": [
+    {
+      "serial": "xy",
+      "key": "abc",
+      "ip": "192.168.0.0"
+    }
+  ]
+}
+
+
+

Configuration variables:

+
    +
  • rf_enable (Require): Boolean. Enable or disable BidCoS-RF.
  • +
  • wired_enable (Require): Boolean. Enable or disable BidCoS-Wired.
  • +
+

For RF devices

+
    +
  • type (Require): Device type for RFD service. Look into the manual of your device.
  • +
  • device (Require): Device on the host.
  • +
+

For RF devices

+
    +
  • serial (Require): Serial number of the device.
  • +
  • key (Require): Encrypted key.
  • +
  • ip (Require): IP address of LAN gateway.
  • +
+

Home Assistant configuration

+

Use the following configuration in Home Assistant to use it:

+
homematic:
+  interfaces:
+    rf:
+      host: core-homematic
+      port: 2001
+
+
+

Raspberry Pi3

+

With HM-MOD-PRI-PCB you need to add follow into your config.txt on boot partition:

+
dtoverlay=pi3-miniuart-bt
+
+
+
+
+ +
+
+ + + + + + + diff --git a/addons/index.html b/addons/index.html new file mode 100644 index 0000000000..94f161fb1f --- /dev/null +++ b/addons/index.html @@ -0,0 +1,250 @@ + + + + + + + + + Hass.io Add-ons - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Hass.io Add-ons +

+
+
+

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

+

+Add-ons are only available if you've used the Hass.io installer. If you installed Home Assistant using any other method then you cannot use add-ons (but you can achieve the same result manually). +

+

Featured add-ons

+
    +
  • + DuckDNS
    + Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt. +
  • +
  • + Google Assistant
    + Enhance your Hass.io installation with Google Assistant. +
  • +
  • + HASS Configurator
    + Browser-based configuration file editor for Home Assistant. +
  • +
  • + Mosquitto MQTT broker
    + Fast and reliable MQTT broker. +
  • +
  • + SSH Server
    + Allow logging in remotely to Hass.io using SSH. +
  • +
  • + Samba
    + Manage your Home Assistant and custom add-ons over Samba. +
  • +
+

Other add-ons

+
    +
  • + Bluetooth BCM43xx
    + Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3. +
  • +
  • + CEC Scanner
    + Scan HDMI CEC devices. +
  • +
  • + Check Home Assistant configuration
    + Check your current Home Assistant configuration against a new version. +
  • +
  • + DHCP server
    + A simple DHCP server. +
  • +
  • + Dnsmasq
    + A simple DNS server. +
  • +
  • + GIT pull
    + Load and update configuration files for Home Assistant from a GIT repository. +
  • +
  • + HomeMatic
    + HomeMatic hardware support to turn you Home-Assistant into a CCU. +
  • +
  • + Let's Encrypt
    + Automatically manage your SSL certificate using Let's Encrypt. +
  • +
  • + MariaDB
    + MariaDB Server is one of the most popular database servers in the world. +
  • +
  • + NGINX SSL proxy
    + NGINX Home Assistant SSL proxy. +
  • +
  • + RPC Shutdown
    + Simple way for remote windows shutdowns. +
  • +
  • + Snips.ai
    + Enhance your Hass.io installation with a local voice assistant. +
  • +
  • + TellStick
    + Telldus TellStick service enabler and tools. +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/addons/lets_encrypt/index.html b/addons/lets_encrypt/index.html new file mode 100644 index 0000000000..ffe3e563d6 --- /dev/null +++ b/addons/lets_encrypt/index.html @@ -0,0 +1,185 @@ + + + + + + + + + Let's Encrypt - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Let's Encrypt +

+
+
+

+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 certificate. This addon will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. This add-on uses port 80 to verify the certificate request. You will need to stop all other add-ons that also use this port.

+
{
+  "email": "example@example.com",
+  "domains": ["example.com", "mqtt.example.com", "hass.example.com"]
+}
+
+
+

Configuration variables:

+
    +
  • email (Required): Your email address for registration on Let’s Encrypt.
  • +
  • domains (Required): A list of domains to create/renew the certificate.
  • +
+

Home Assistant configuration

+

Use the following configuration in Home Assistant to use the generated certificate:

+
http:
+  base_url: https://my-domain.tld:8123
+  ssl_certificate: /ssl/fullchain.pem
+  ssl_key: /ssl/privkey.pem
+
+
+

If you use another port such as 8123 or an SSL proxy, change the port number.

+
+
+ +
+
+ + + + + + + diff --git a/addons/mariadb/index.html b/addons/mariadb/index.html new file mode 100644 index 0000000000..2f670b90ac --- /dev/null +++ b/addons/mariadb/index.html @@ -0,0 +1,207 @@ + + + + + + + + + MariaDB - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MariaDB +

+
+
+

Set up a mariadb 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.

+
{
+  "databases": ["homeassistant"],
+  "logins": [
+    {
+      "username": "hass",
+      "host": "homeassistant",
+      "password": "securePassword"
+    }
+  ],
+  "rights": [
+    {
+      "username": "hass",
+      "host": "homeassistant",
+      "database": "homeassistant",
+      "grant": "ALL PRIVILEGES ON"
+    }
+  ]
+}
+
+
+

Configuration variables:

+
    +
  • databases (Require): List of databases.
  • +
  • logins (Require): List of SQL accounts to create or update. +
      +
    • username (Require): Username for account.
    • +
    • host (Require): Host for account. If you need an account on multiple hosts, use ‘%’.
    • +
    • password (Require): Password for account.
    • +
    +
  • +
  • rights (Require): List of rights to be granted. +
      +
    • username (Require): Username for granted rights.
    • +
    • host (Require): Host is a part of username like above.
    • +
    • database (Require): Database name on which to grant user rights.
    • +
    • grant (Require): SQL grant part for access too.
    • +
    +
  • +
+

Home Assistant configuration

+

Use the following configuration in Home Assistant to use the database above:

+
recorder:
+  db_url: mysql://hass:securePassword@core-mariadb/homeassistant
+
+
+
+
+ +
+
+ + + + + + + diff --git a/addons/mosquitto/index.html b/addons/mosquitto/index.html new file mode 100644 index 0000000000..1396955dfe --- /dev/null +++ b/addons/mosquitto/index.html @@ -0,0 +1,203 @@ + + + + + + + + + Mosquitto MQTT broker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Mosquitto MQTT broker +

+
+
+

Set up Mosquitto as MQTT broker.

+
{
+  "plain": true,
+  "ssl": false,
+  "anonymous": true,
+  "logins": [
+    {"username": "testuser", "password": "mypw"}
+  ],
+  "customize": {
+    "active": false,
+    "folder": "mosquitto"
+  },
+  "certfile": "fullchain.pem",
+  "keyfile": "privkey.pem"
+}
+
+
+

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

+

Configuration variables:

+
    +
  • plain (Optional): Listen on port 1883 without SSL/TLS. Defaults to true.
  • +
  • ssl (Optional): Listen on port 8883 with SSL/TLS. This requires certificates. Defaults to false.
  • +
  • anonymous (Optional): Allow anonymous connections. If logins is set, the anonymous user can only read data. Defaults to true.
  • +
  • logins (Optional): A list of users that will be created with username and password.
  • +
  • customize (Optional): If you enable it, it reads additional configuration files (*.conf) from /share/mosquitto.
  • +
+

Home Assistant configuration

+

To use the Mosquitto as broker add the following entry to the configuration.yaml file.

+
# Example configuration.yaml entry
+mqtt:
+  broker: core-mosquitto
+
+
+

If username and password are set up in add-on, your configuration.yaml file should contain that data.

+
mqtt:
+  broker: core-mosquitto
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+
+
+ +
+
+ + + + + + + diff --git a/addons/nginx_proxy/index.html b/addons/nginx_proxy/index.html new file mode 100644 index 0000000000..0218ef7602 --- /dev/null +++ b/addons/nginx_proxy/index.html @@ -0,0 +1,185 @@ + + + + + + + + + NGINX SSL proxy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ NGINX SSL proxy +

+
+
+

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

+
{
+  "domain": "home.example.com",
+  "certfile": "fullchain.pem",
+  "keyfile": "privkey.pem",
+  "customize": {
+    "active": false,
+    "default": "nginx_proxy_default*.conf",
+    "servers": "nginx_proxy/*.conf"
+  }
+}
+
+
+

Configuration variables:

+
    +
  • domain (Required): Domain they will proxy run with it.
  • +
  • certfile (Required): Certificate file to use in the /ssl dir.
  • +
  • keyfile (Required): Private key file to use in the /ssl dir.
  • +
  • customize (Optional): If true, additional NGINX configuration files for the default server and additional servers are read from files in the /share dir specified by the default and servers variables.
  • +
+

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

+
+
+ +
+
+ + + + + + + diff --git a/addons/rpc_shutdown/index.html b/addons/rpc_shutdown/index.html new file mode 100644 index 0000000000..2af687853f --- /dev/null +++ b/addons/rpc_shutdown/index.html @@ -0,0 +1,187 @@ + + + + + + + + + RPC Shutdown - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ RPC Shutdown +

+
+
+

Allows you to shut down a Windows computer with a service call from Home Assistant.

+
{
+  "computers": [
+    {
+      "alias": "test-pc",
+      "address": "192.168.0.1",
+      "credentials": "user%password"
+    }
+  ]
+}
+
+
+
    +
  • computers (Required): A list of computer objects to shutdown from Home-Assistant.
  • +
  • computers/alias (Required): Set an alias for this record which becomes the name for the input.
  • +
  • computers/address (Required): IP address or NetBIOS name of the computer for the shutdown.
  • +
  • computers/credentials (Required): Credentials for logging into computer. Use a % as the delimiter of username and password.
  • +
+

Home Assistant

+

Use the following inside Home Assistant service call to use it:

+
service: hassio.addon_stdin
+data:
+  addon: core_rpc_shutdown
+  input: test-pc
+
+
+
+
+ +
+
+ + + + + + + diff --git a/addons/samba/index.html b/addons/samba/index.html new file mode 100644 index 0000000000..b8b278b3de --- /dev/null +++ b/addons/samba/index.html @@ -0,0 +1,189 @@ + + + + + + + + + Samba - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Samba +

+
+
+

This addon allows you to set up a Samba server to access hass.io folders using Windows network shares.

+
{
+  "name": "hassio",
+  "workgroup": "WORKGROUP",
+  "guest": true,
+  "map": {
+    "config": true,
+    "addons": true,
+    "share": true,
+    "backup": true,
+    "ssl": false
+  },
+  "username": "",
+  "password": "",
+  "interface": "eth0"
+}
+
+
+

Configuration variables:

+
    +
  • name (Optional): Set netbios name of Hass.io device. Default is hassio.
  • +
  • workgroup (Optional): Set network workgroup name. Default is WORKGROUP.
  • +
  • guest (Optional): Allow login without a username or password. Default is true.
  • +
  • map (Optional): Control which folders will be exposed. config shares the Home Assistant configuration folder. addons shares the local custom repositiory. share shares a folder that can be accessed by add-ons and Home Assistant. backup shares access to snapshot files. ssl shares certificate storage. Be careful with the ssl option! Defaults are all set to true, except for ssl.
  • +
  • username (Optional): Username for logging in if guest login is not used.
  • +
  • password (Optional): Password for username. An empty password is not supported.
  • +
  • interface (Optional): Interface that will start the share. Normally this is eth0 for ethernet wired connection and wlan0 for wireless connection.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/addons/snips/index.html b/addons/snips/index.html new file mode 100644 index 0000000000..0285a2bae9 --- /dev/null +++ b/addons/snips/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Snips.ai - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Snips.ai +

+
+
+

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:

+
**** 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 <card #>,<device #>. Change the configuration options and click save.

+

Now start the add-on.

+

Add-On configuration

+
{
+  "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
  • +
+

Home Assistant configuration

+

Use the Home Assistant Snips.ai component to integrate the add-on into Home Assistant.

+
snips:
+
+
+
+
+ +
+
+ + + + + + + diff --git a/addons/ssh/index.html b/addons/ssh/index.html new file mode 100644 index 0000000000..d6794f7f91 --- /dev/null +++ b/addons/ssh/index.html @@ -0,0 +1,189 @@ + + + + + + + + + SSH Server - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ SSH Server +

+
+
+

Setting up an SSH 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. Try it out:

+
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 and these for other platforms. It is possible to set a password for login since version 2.0 but for high security use private/public keys. You can not run both variants at the same time.

+

To start this add-on for the first time, you either need to include an ssh key (enclosed in quotation marks, on a single line without line breaks) or set a password in the options section.

+
{
+  "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 (Optional): Your public keys for the authorized key file. Every element will be a line inside that file.
  • +
  • password (Optional): Set a password for login. We do not recommend this variant.
  • +
+
+ +
+

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

+
+
+ +
+
+ + + + + + + diff --git a/addons/tellstick/index.html b/addons/tellstick/index.html new file mode 100644 index 0000000000..e5481609a0 --- /dev/null +++ b/addons/tellstick/index.html @@ -0,0 +1,242 @@ + + + + + + + + + TellStick - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ TellStick +

+
+
+

Setting up the Tellstick service and tools contained in the telldus-core package and adding configuration to enable Tellstick and Tellstick Duo to work on your Hass.io.

+

To use this add-on, you first install it from the list of Built-in add-ons in Hass.io. +After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the valid parameters for Tellstick configuration file (tellstick.conf).

+

After any changes have been made to the configuration, you need to restart the add-on for the changes to take effect.

+

Configuration variables:

+
    +
  • id (Required): A number and must be unique for each device.
  • +
  • name (Required): A name for easy identification of the device.
  • +
  • protocol (Required): This is the protocol the device uses. More on the different protocols later down.
  • +
  • model (Optional): The model parameter is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus self-learning, etc.
  • +
  • house (Optional): Depending on protocol the values here can vary a lot to identify or group per house or type.
  • +
  • unit (Optional): Unit identifier, in most cases a value between 1 to 16 and often used in combination with the house.
  • +
  • fade (Optional): Fade is either true or false and tells a dimmer if it should fade smooth or instant between values (only for IKEA protocol as it seems).
  • +
  • code (Optional): A number series based on ones and zeroes often used for dip-switch based devices.
  • +
+

You will need to add internal communication details to configuration.yaml to enable the integration from Hass.io and the add-on.

+
# Example configuration.yaml entry
+
+tellstick:
+    host: core-tellstick
+    port: [50800, 50801]
+    
+
+
+

To add lights, sensors and switches you follow the guidelines for each type individually that is described for Home Assistant

+

The add-on will also enable you to interact with the tdtool via a Home Assistant services call, see example below for self-learning device.

+

Examples

+

Example for adding more devices in the add-on configuration (note the comma separator between devices):

+
{
+  "devices": [
+    {
+      "id": 1,
+      "name": "Outdoor light",
+      "protocol": "everflourish",
+      "model": "selflearning-switch",
+      "house": "A",
+      "unit": "1"
+    },
+    {
+      "id": 2,
+      "name": "Hallway dimmer",
+      "protocol": "risingsun",
+      "model": "selflearning-dimmer",
+      "house": "A",
+      "unit": "2"
+    }
+  ]
+}
+
+
+

Service calls

+

If you wish to teach a selflearning device in your TellStick configuration:

+

Go to Home Assistant service call in Developer tools and select.

+
    +
  • Service: hassio.addon_stdin
  • +
  • Enter service Data: +{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}
  • +
+

Replace 1 with the corresponding ID of the device in your TellStick configuration.

+

You can also use this to list devices or sensors and read the output in the add-on log: +{"addon":"core_tellstick","input":{"function":"list-sensors"}}

+

Supported service commands

+
    +
  • +

    "function":"list": List currently configured devices with name and device id and all discovered sensors.

    +
  • +
  • "function":"list-sensors"
  • +
  • +

    "function":"list-devices": Alternative devices/sensors listing: Shows devices and/or sensors using key=value format (with tabs as separators, one device/sensor per line, no header lines.)

    +
  • +
  • +

    "function":"on","device":"x": Turns on device. ’x’ could either be an integer of the device-id, or the name of the device.

    +
  • +
  • +

    "function":"off","device":"x": Turns off device. ’x’ could either be an integer of the device-id, or the name of the device.

    +
  • +
  • +

    "function":"bell","device":"x": Sends bell command to devices supporting this. ’x’ could either be an integer of the device-id, or the name of the device.

    +
  • +
  • "function":"learn","device":"x": Sends a special learn command to devices supporting this. This is normally devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/source/assets/HomeAssistant_APIAI.zip b/assets/HomeAssistant_APIAI.zip similarity index 100% rename from source/assets/HomeAssistant_APIAI.zip rename to assets/HomeAssistant_APIAI.zip diff --git a/source/assets/get_lutron_cert.zip b/assets/get_lutron_cert.zip similarity index 100% rename from source/assets/get_lutron_cert.zip rename to assets/get_lutron_cert.zip diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png b/assets/jwplayer/glow/controlbar/background.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/background.png rename to assets/jwplayer/glow/controlbar/background.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/blankButton.png b/assets/jwplayer/glow/controlbar/blankButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/blankButton.png rename to assets/jwplayer/glow/controlbar/blankButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png b/assets/jwplayer/glow/controlbar/divider.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/divider.png rename to assets/jwplayer/glow/controlbar/divider.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/assets/jwplayer/glow/controlbar/fullscreenButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png rename to assets/jwplayer/glow/controlbar/fullscreenButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png rename to assets/jwplayer/glow/controlbar/fullscreenButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButton.png b/assets/jwplayer/glow/controlbar/muteButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/muteButton.png rename to assets/jwplayer/glow/controlbar/muteButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/assets/jwplayer/glow/controlbar/muteButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png rename to assets/jwplayer/glow/controlbar/muteButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/assets/jwplayer/glow/controlbar/normalscreenButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png rename to assets/jwplayer/glow/controlbar/normalscreenButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png rename to assets/jwplayer/glow/controlbar/normalscreenButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png b/assets/jwplayer/glow/controlbar/pauseButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png rename to assets/jwplayer/glow/controlbar/pauseButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/assets/jwplayer/glow/controlbar/pauseButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png rename to assets/jwplayer/glow/controlbar/pauseButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButton.png b/assets/jwplayer/glow/controlbar/playButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/playButton.png rename to assets/jwplayer/glow/controlbar/playButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/assets/jwplayer/glow/controlbar/playButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png rename to assets/jwplayer/glow/controlbar/playButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/assets/jwplayer/glow/controlbar/timeSliderBuffer.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png rename to assets/jwplayer/glow/controlbar/timeSliderBuffer.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png rename to assets/jwplayer/glow/controlbar/timeSliderCapLeft.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/assets/jwplayer/glow/controlbar/timeSliderCapRight.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png rename to assets/jwplayer/glow/controlbar/timeSliderCapRight.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png b/assets/jwplayer/glow/controlbar/timeSliderProgress.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png rename to assets/jwplayer/glow/controlbar/timeSliderProgress.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/assets/jwplayer/glow/controlbar/timeSliderRail.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png rename to assets/jwplayer/glow/controlbar/timeSliderRail.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/assets/jwplayer/glow/controlbar/unmuteButton.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png rename to assets/jwplayer/glow/controlbar/unmuteButton.png diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/assets/jwplayer/glow/controlbar/unmuteButtonOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png rename to assets/jwplayer/glow/controlbar/unmuteButtonOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/background.png b/assets/jwplayer/glow/display/background.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/background.png rename to assets/jwplayer/glow/display/background.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png b/assets/jwplayer/glow/display/bufferIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png rename to assets/jwplayer/glow/display/bufferIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png b/assets/jwplayer/glow/display/muteIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/muteIcon.png rename to assets/jwplayer/glow/display/muteIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png b/assets/jwplayer/glow/display/playIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/display/playIcon.png rename to assets/jwplayer/glow/display/playIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/dock/button.png b/assets/jwplayer/glow/dock/button.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/dock/button.png rename to assets/jwplayer/glow/dock/button.png diff --git a/.themes/classic/source/assets/jwplayer/glow/glow.xml b/assets/jwplayer/glow/glow.xml similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/glow.xml rename to assets/jwplayer/glow/glow.xml diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png b/assets/jwplayer/glow/playlist/item.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/item.png rename to assets/jwplayer/glow/playlist/item.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png b/assets/jwplayer/glow/playlist/itemOver.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png rename to assets/jwplayer/glow/playlist/itemOver.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/assets/jwplayer/glow/playlist/sliderCapBottom.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png rename to assets/jwplayer/glow/playlist/sliderCapBottom.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/assets/jwplayer/glow/playlist/sliderCapTop.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png rename to assets/jwplayer/glow/playlist/sliderCapTop.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png b/assets/jwplayer/glow/playlist/sliderRail.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png rename to assets/jwplayer/glow/playlist/sliderRail.png diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderThumb.png b/assets/jwplayer/glow/playlist/sliderThumb.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/playlist/sliderThumb.png rename to assets/jwplayer/glow/playlist/sliderThumb.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedIcon.png b/assets/jwplayer/glow/sharing/embedIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/embedIcon.png rename to assets/jwplayer/glow/sharing/embedIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png b/assets/jwplayer/glow/sharing/embedScreen.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png rename to assets/jwplayer/glow/sharing/embedScreen.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png b/assets/jwplayer/glow/sharing/shareIcon.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png rename to assets/jwplayer/glow/sharing/shareIcon.png diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png b/assets/jwplayer/glow/sharing/shareScreen.png similarity index 100% rename from .themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png rename to assets/jwplayer/glow/sharing/shareScreen.png diff --git a/.themes/classic/source/assets/jwplayer/player.swf b/assets/jwplayer/player.swf similarity index 100% rename from .themes/classic/source/assets/jwplayer/player.swf rename to assets/jwplayer/player.swf diff --git a/atom.xml b/atom.xml new file mode 100644 index 0000000000..38dae4cb28 --- /dev/null +++ b/atom.xml @@ -0,0 +1,3242 @@ + + + + <![CDATA[Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[0.65: Rename entities, new filter sensor, UpCloud and Channels]]> + + 2018-03-09T00:01:00+00:00 + https://home-assistant.io/blog/2018/03/09/release-65 +

+ +

Release 0.65 has arrived and oh boy, is it awesome. First off, in case you have missed the previous release notes and announcements: Starting with this release, Home Assistant has dropped support for Python 3.4. The minimum supported version is now Python 3.5.3. If you are on Hass.io or Docker, you’ll automatically be running the latest and greatest. If you’re on an older Hassbian installation or did your own Linux setup you’ll need to upgrade to at least Python 3.5.3.

+ +

Naming entities

+ +

With the introduction of the entity registry in 0.63, Home Assistant is making sure that the same devices always receive the same entity IDs. This release is taking it a step further by allowing users to change the name of a device from the frontend. Changing the name will be instantly applied and overrides whatever name the device is given by the integration. If you want to switch back to the name from the integration, set the name to blank.

+ +

This feature is, just like the entity registry, only available for integrations that provide unique IDs for their entities. Adding this to each integration is still a work in progress.

+ +

+ Screencap of interaction with the UI to override the name of a light. + The new entity registry settings page in action. +

+ +

Filter sensor

+ +

The filter sensor is a new 2nd order sensor by @dgomes: it will consume data from a sensor entity and apply filters to it. For the initial implementation it comes with Low-pass, Outlier and Throttle filters. Expect more to be added in the future.

+ +
sensor:
+  - platform: filter
+    name: "filtered realistic humidity"
+    entity_id: sensor.realistic_humidity
+    filters:
+      - filter: outlier
+        window_size: 4
+        radius: 4.0
+      - filter: lowpass
+        time_constant: 10
+        precision: 2
+
+
+ +

+ Chart showing a humidity sensor with a lot of spikes and a smooth graph produced by the new filter sensor. + Graph showing both the input sensor and the output of the filter sensor. +

+ +

Light Group

+ +

We have had some discussion lately and realized that our current group component is very limiting. Extending it would probably lead to more confusion so we’ve decided to take a new approach: groups that are designed to be part of a specific component. The first one in this series comes at the hand of @OttoWinter: the group light (docs).

+ +

The group light creates a single light inside Home Assistant that is representing a group of lights. All commands will be forwarded and the state is a combination of all the lights.

+ +
light:
+  - platform: group
+    name: Cool Light Group
+    entities:
+      - light.amazing_light
+      - light.foobar
+      - light.sun
+
+
+ +

HomeKit

+ +

HomeKit got some more upgrades. We’ve added support for temperature sensors in Fahrenheit, alarm systems, switches and thermostats. Just a few releases more and we should be able to cover it all.

+ +

Optional words for the Conversation component

+ +

The conversation component has always been a great introduction to controlling your house by voice. There is no hotword detection or powerful language engine behind it, but it gives a great intro to what is possible. Starting with this release, it will get a little bit more powerful with the introduction of optional words. To mark a word optional, wrap it in square brackets: Change the light to [the color] {color}.

+ +
# Example configuration.yaml entry
+conversation:
+  intents:
+    LivingRoomTemperature:
+     - What is the temperature in the living room
+     - What is [the] living room temperature
+
+intent_script:
+  LivingRoomTemperature:
+    speech:
+      text: It is currently  degrees in the living room.
+
+
+ +

+ Screenshot of the frontend with the conversation panel open. + Have conversations with Home Assistant via the conversation component. +

+ +

New Platforms

+ + + +

Release 0.65.1 - March 10

+ + + +

Release 0.65.2 - March 10

+ + + +

Release 0.65.3 - March 11

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + +

Breaking Changes

+ + + +

All changes

+ + + +]]>
+
+ + + <![CDATA[0.64: Over 1000 integrations! New: HomeKit, BMW, August.]]> + + 2018-02-26T00:01:00+00:00 + https://home-assistant.io/blog/2018/02/26/release-64 +

+ +

🎉 1000 integrations, 1000 integrations, 1000 integrations! 🎉

+ +

That’s right, Home Assistant 0.64 is here! In case you have missed our latest Cloud update, the Home Assistant Alexa skill is now live in all regions and we’re working with Google in getting the Smart Home skill for Google Assistant approved. Exciting times!

+ +

In the meanwhile, some great new integrations have landed, including yet another car 🚗 This time it’s BMW.

+ +

This is going to be the last release that supports Python 3.4. Starting with the next release, the minimum version required will be Python 3.5.3. Learn more here.

+ +

HomeKit

+ +

Native HomeKit support has arrived! Thanks to @cdce8p It is now possible to expose some devices over HomeKit to allow control via Siri and other things speaking the HomeKit protocol. Initial support has been added for temperature sensors and cover devices. Expect more devices to be added soon.

+ +

Check the HomeKit docs

+ +

Hass.io UI update

+ +

Some of you already noticed that your Hass.io panel looks a bit different since this morning: @pvizeli pressed the red green button and the new UI got live. The Hass.io team (@frenck @ryanm101) is doing a great job in adding new features (like partial or encrypted snapshots) to the Hass.io backend and fixing bugs. However, those features where only added to the command line tools but not to the frontend.

+ +

That’s where @c727 and @ciotlosm jumped in. They made new features accessible via the frontend and improved the overall navigation.

+ +

We know that some features are still missing or broken, we are fixing this right now! Check this issue first before you report any issues related to the Hass.io panel, please.

+ +

Chart.js

+ +

The frontend is now rendering the graphs and charts using Chart.js thanks to the hard work by @fanthos. This means that you can now render all the charts without being connected to the internet!

+ +

August integration

+ +

Major new integration by @snjoetw: August locks and door bells! Lock and unlock from Home Assistant and detect when your doorbell is rung or senses motion. Awesome!

+ +

Cast bug fixes

+ +

@OttoWinter has crushed a bunch of bugs for our ChromeCast integration. Including that nasy Cast group discovery issue! He is working on some more improvements that should arrive soon, stay tuned. Awesome work Otto!

+ +

New Platforms

+ + + +

Release 0.64.1 - February 27

+ + + +

Release 0.64.2 - March 1

+ + + +

Release 0.64.3 - March 2

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ +
    +
  • Home Assistant now defaults to purge recorded history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain before starting 0.64 for the first time, for example: +
      recorder:
    +    purge_keep_days: 30
    +
    +
    + +

    If you want to keep the previous default of never deleting history, use this configuration:

    +
      recorder:
    +    purge_interval: 0
    +
    +
    +

    (@amelchio - #12271) (breaking change)

    +
  • +
  • Show a persistent_notification if no symbols and no currencies are configured (@ChristianKuehnel - #12252) (sensor.alpha_vantage docs) (breaking change)
  • +
  • Updated RainMachine unique IDs to play better with the entity registry. If RainMachine had been configured previously, new entries will be placed into the entity registry, causing there to be two of each program/zone defined. To address, simply alter the entity_registry.yaml as desired. (@bachya - #12315) (switch.rainmachine docs) (breaking change)
  • +
  • Updated AirVisual unique IDs to play better with the entity registry. If AirVisual had been configured previously, new entries will be placed into the entity registry, causing there to be two of each sensor type defined. To address, simply alter the entity_registry.yaml as desired. (@bachya - #12319) (sensor.airvisual docs) (breaking change)
  • +
  • Custom component devs only: voluptuous now requires default values for config keys to be valid values. (@balloob - #12463) (breaking change)
  • +
  • Fixes usps platform. Dependency myusps now leverages Selenium webdriver to overcome login issues. This is a breaking change since the user must now have additional dependencies installed - either google-chrome and chromedriver, or phantomjs. There is a new config option driver that allows the user to specify their preference, though phantomjs is the default. Doc PR forthcoming that will outline choices and make suggestions based on user’s OS. + (@happyleavesaoc - #12465) (usps docs) (breaking change)
  • +
  • LimitlessLED has been converted to assumed state. Will no longer turn the lights off when restarting Home Assistant. Will no longer revert changes made by other controllers. (@amelchio - #12475) (light.limitlessled docs) (breaking change)
  • +
+ +

All changes

+ + + +]]>
+
+ + + <![CDATA[Cloud Update]]> + + 2018-02-19T01:00:00+00:00 + https://home-assistant.io/blog/2018/02/19/cloud-update + We’re happy to announce that the Home Assistant skill is now available in Canada, UK, Germany, India and Australia! Check it out in the Amazon Alexa Skill store.

+ +

In the meanwhile, we have also been working on the Google Assistant integration. We passed the first verification and are now working with Google to do the final verification. Stay tuned!

+ +

In less than 2 weeks the open beta is about to expire. We’re still working on setting up the company and payment system so we can start accepting payments. Until we do, Home Assistant Cloud will remain free.

+ +]]>
+
+ + + <![CDATA[0.63: Entity Registry, SQL Sensor, Mercedes cars]]> + + 2018-02-10T01:00:00+00:00 + https://home-assistant.io/blog/2018/02/10/release-63 +

+ +

Date set for dropping Python 3.4 support

+ +

As announced in October, we’re going to drop Python 3.4 support in 2018. We’ve now decided that in two releases, 0.65, the minimum Python version that will be supported is bumped to 3.5.3. This won’t impact most users. You are already fine if you’re using Hass.io, the latest Debian stable (Stretch) or a derivative of that (Raspbian, Ubuntu).

+ +

Entity Registry

+ +

This release introduces the entity registry. The entity registry allows integrations to reserve entity IDs. This means that we’ll automatically grant an entity ID to a device. It’s reserved so that no other device will ever get that entity ID. It also means that as a user, you will be able to customize the entity IDs for these devices.

+ +

For an integration to leverage the entity registry, it needs to define a unique ID for each of their entities. A unique ID is something that we can uniquely identify the device and that is not configurable. So a serial number and mac address are ok, IP addresses or names are not.

+ +

Examples of integrations that have unique IDs defined in this release are Z-Wave, Hue, Nest, LIFX, Sonos, Apple TV.

+ +

To update the entity ID that will be assigned to your device, update <config>/entity_registry.yaml and restart Home Assistant (reloading on the fly is planned for a future release).

+ +

The entity registry will assign an entity ID the first time that a device is seen. This should be the same entity ID as it always was before. If this is not the case, update the registration entity to change it back to the old entity ID.

+ +

We’re planning a lot of cool stuff around the entity registry. Stay tuned!

+ +

New Platforms

+ + + +

Release 0.63.1 - February 12

+ + + +

Release 0.63.2 - February 14

+ + + +

Release 0.63.3 - February 17

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ +
    +
  • updated sensor name (@philklei - #12084) (sensor.tahoma docs) (breaking change)
  • +
  • Originally Canary camera is added per location and only displays an image that was captured due to motion. Now it is per device (each location can have multiple devices) with live stream support. (@snjoetw - #11949) (canary docs) (camera.canary docs) (breaking change)
  • +
  • Avoid influxdb filling connection pool: The influxdb retry_queue_limit configuration variable no longer has any effect and can be removed. (@amelchio - #12182) (influxdb docs) (breaking change)
  • +
  • Some spelling mistakes in default entity names have been fixed in (@OttoWinter - #12041). This is causing these entity_id changes: +
      +
    • Seven segments display: image_processing.seven_segement_ocr_[...]image_processing.seven_segment_ocr_[...]
    • +
    • Rain Bird Switch: switch.sprinker_[...]switch.sprinkler_[...]
    • +
    • OpenEVSE Sensor: sensor.ambient_termperaturesensor.ambient_temperature
    • +
    • Fido: sensor.[...]_internaltional_remainingsensor.[...]_international remaining
    • +
    +
  • +
  • From version 0.64, Home Assistant will by default purge recorded state history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain: +
      recorder:
    +    purge_keep_days: 30
    +
    +
    + +

    If you want to keep the previous default of never deleting history, use this configuration:

    +
      recorder:
    +    purge_interval: 0
    +
    +
    +

    (@amelchio - #11976)

    +
  • +
  • +

    Fix duplicate entity_ids in System Monitor (@fanaticDavid - #12124) (sensor.systemmonitor docs) (breaking change)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ResourceOld Entity IDNew Entity ID
    disk_usesensor.disk_usedsensor.disk_use
    disk_use_percentsensor.disk_usedsensor.disk_use_percent
    load_15msensor.average_load_15msensor.load_15m
    load_1msensor.average_load_1msensor.load_1m
    load_5msensor.average_load_5msensor.load_5m
    memory_freesensor.ram_availablesensor.memory_free
    memory_usesensor.ram_usedsensor.memory_use
    memory_use_percentsensor.ram_usedsensor.memory_use_percent
    network_insensor.receivedsensor.network_in
    network_outsensor.sentsensor.network_out
    packets_insensor.packets_receivedsensor.packets_in
    packets_outsensor.packets_sentsensor.packets_out
    processor_usesensor.cpu_usedsensor.processor_use
    swap_usesensor.swap_usedsensor.swap_use
    swap_use_percentsensor.swap_usedsensor.swap_use_percent
    +
  • +
  • Developers only: Following EntityComponent methods have been removed: extract_from_service, async_update_group, async_reset, prepare_reload (@balloob - #12237) (breaking change)
  • +
+ +

All changes

+ + + +]]>
+
+ + + <![CDATA[Disabling Disqus comments]]> + + 2018-02-09T01:00:00+00:00 + https://home-assistant.io/blog/2018/02/09/disabling-disqus + Last week, starting with the release of Home Assistant 0.62, we switched to using our community forums for comments on our blog posts. By doing so, people are able to use their existing Home Assistant community accounts to comment on our blog posts and engage with one another. It has been easier for our users to stay in the loop with one less channel to keep track off.

+ +

Previously, we were using the free version of Disqus to power comments on our blog. After the switch, to preserve the old comments, we decided to keep Disqus active on the older blog post pages. However, today we decided to turn them off.

+ +

Today Disqus changed their advertisement strategy and turned on irrelevant graphical advertisement above and below the comment thread (screenshot). On a phone, it took so much screen real estate that it filled the whole page with an advertisement for weight loss milk. Previously, Disqus had advertisements in an unobtrusive way: showing suggested content a visitor might also be interesed in.

+ +

Today we have switched all blog posts to the new commenting system and are no longer serving Disqus comments. We are exploring ways to restore the old comments.

+]]>
+
+ + + <![CDATA[0.62: MyChevy, Iota and Venstar Thermostat]]> + + 2018-01-27T01:00:00+00:00 + https://home-assistant.io/blog/2018/01/27/release-62 +

+ +

Second release of the year and it’s buzzing on GitHub. This release we had 70 people contribute code. We’ve also managed to finally get our PR count below a 100 open PRs again. A lot of cool stuff still waiting to make it to a future Home Assistant release.

+ +

I want to give a shout out to @martinhjelmare and @frenck. Martin is doing an amazing job at code reviews and Franck has been kicking ass with Hass.io add-ons and keeping track of our documentation PRs. Thanks for this amazing work!

+ +

MyChevy

+ +

With this new integration by @sdague you are able to keep an eye on your Chevy Bolt EV. Keep track if your car is plugged in, the battery stats and the range it is currently capable of driving. Hip!

+ +

New Platforms

+ + + +

Release 0.62.1 - January 30

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ +
    +
  • Tahoma platform will get new entity IDs (@glpatcern - #11547) (tahoma docs) (cover.tahoma docs) (breaking change)
  • +
  • Mold indicator: attribute names no longer include spaces or periods (@olskar - #11694) (sensor.mold_indicator docs) (breaking change)
  • +
  • Custom component devs only: EntityComponent.add_entity(entity) and EntityComponent.async_add_entity(entity) have been removed. Use EntityComponent.add_entities([entity]) and EntityComponent.async_add_entities([entity]) instead. Also EntityComponent.entities is no longer a dictionary but instead an iterable. Use EntityComponent.get_entity(entity_id) to get entity by id. (@balloob - #11691) (breaking change)
  • +
+ +

All changes

+ + + +]]>
+
+ + + <![CDATA[Clarification about Emulated Hue]]> + + 2018-01-21T01:00:00+00:00 + https://home-assistant.io/blog/2018/01/21/clarification-emulated-hue + There are some misconceptions floating around about the future of the Emulated Hue component and I would like to set the record straight. The Emulated Hue component is not going to be removed nor will we ever remove any functionality from Home Assistant to push you to support the Home Assistant project by subscribing to the Community Support Package.

+ +

The reason people are concerned about the future of the Emulated Hue component is because of a poor choice of words in a deprecation message. This message was introduced a year ago when we deprecated the config option type: alexa for the Emulated Hue component:

+ +
+

Alexa type is deprecated and will be removed in a future version

+
+ +

That config option should never have been called type: alexa but instead have been called mode: legacy. If you think about it, why would emulating something even have different modes it emulates based on the consumer? That means that one of the two emulation modes is incorrect.

+ +

The old implementation was not 100% correct. It was correct enough to work with Alexa (the original target) but not with Google Home. When fixing Emulated Hue we added type: alexa to re-enable the old implementation so that people did not have to go through the trouble to re-add their Alexa devices. The option was deprecated to indicate that we would remove the incorrect emulation in the future. However, we forgot about actually following through with that.

+ +

The mistake we made was calling the correct mode google_home although it had nothing to do with Google Home. It confused people and they kept adding type: alexa to their configuration, triggering the deprecation warning.

+ +

The warning will be updated starting Home Assistant 0.62 and will also include a link to this blog post.

+ +

More info:

+ + + +]]>
+
+ + + <![CDATA[0.61: Coinbase, Discogs, iGlo, Sochain]]> + + 2018-01-14T18:00:00+00:00 + https://home-assistant.io/blog/2018/01/14/release-61 +

+ +

Almost a 100 contributors to this release 🎉 That’s what you get when you skip a release. It’s a little late but “Happy New Year” and welcome to 0.61 the first release 2018.

+ +

This release contain some breaking changes. Please make sure that you check the section below if you are running into trouble.

+ +

Assistant configs

+ +

We made a mistake in the foundation of both the Google Assistant and Alexa integrations: they were storing their config inside customize. This is not the right place and we moved them to be under the components itself. See the breaking changes section on how to migrate.

+ +

Hass.io updates

+ +

@pvizeli has made it easier to create and restore snapshots for Hass.io by calling the new services. This way it will be easy to automate the creation of a snapshot at night. The updater has also been fixed and will now report on new versions of Hass.io that are available.

+ +

Improved loading speed

+ +

@amelchio has made startup of Home Assistant even faster. All service descriptions are now loaded only when needed by the frontend instead of during startup. This did mean that we had to enforce our service convention. We found a few platforms that didn’t follow this and they have been updated:

+ +
todoist.new_task -> calendar.todoist_new_task
+
+snapcast.snapcast_snapshot -> media_player.snapcast_snapshot
+snapcast.snapcast_restore -> media_player.snapcast_restore
+
+mopar.remote_command -> sensor.mopar_remote_command
+
+broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107
+broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107
+
+
+ +

New Platforms

+ + + +

Release 0.61.1 - January 16

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ +
    +
  • Extend Threshold binary sensor to support ranges. This means that you can now set up and lower. (@DanNixon - #11110) (binary_sensor.threshold docs) (breaking change)
  • +
  • The Steam game platform contains changes: +
      +
    • game attribute no longer set in device_state_attributes if no game is currently being played as the string “None” is no longer passed if no current game is being played, instead the game attribute is not present.
    • +
    • States now use lower snake case.
    • +
    • The “Play” and “Trade” states has been renamed to “looking_to_play” and “looking_to_trade”. +(@frwickst - #11182) (sensor.steam_online docs) (breaking change)
    • +
    +
  • +
  • The tile platform now shows only active Tiles by default; to show all Tiles, including expired/inactive ones, show_inactive must be True. The following state attributes have been removed: last_seen and last_updated. (@bachya - #11172) (device_tracker.tile docs) (breaking change)
  • +
  • The hidden_string feature has been removed from the isy994 component. Previously, this allowed entities to be “hidden” in Home Assistant if a configured string was present in an ISY device’s name or folder path. This was removed because hiding devices is now done via the customization feature. +Note however, that this feature was replaced by a new ignore_string config option, which will now cause Home Assistant to completely ignore devices with the matching string so that they will not be imported as a Home Assistant device at all. This can be helpful if you have nodes in the ISY that aren’t useful at all in Hass (IR transmitter nodes are a good example.) (@OverloadUT - #11243) (isy994 docs) (binary_sensor.isy994 docs) (cover.isy994 docs) (fan.isy994 docs) (light.isy994 docs) (lock.isy994 docs) (sensor.isy994 docs) (switch.isy994 docs) (breaking change)
  • +
  • The egardia alarm panel platform no longer a need the users to run a separate Egardiaserver component. It can now also run on HASS.io. (@jeroenterheerdt - #11344) (alarm_control_panel.egardia docs) (breaking change)
  • +
  • The binary sensor platform of the DoorBird integration has been deleted, so remove DoorBird from your binary_sensor configuration. Instead, set the doorbell_events option of the doorbird component to True. The last_visitor option has been removed from the camera component, as it is now always added as an entity. (@Klikini - #11193) (camera.doorbird docs) (breaking change)
  • +
  • The following attributes of the TP-Link switch and light platform have been renamed: +
      +
    • Light: current_consumption -> current_power_w, daily_consumption -> daily_energy_kwh and monthly_consumption -> monthly_energy_kwh
    • +
    • Switch: current -> current_a, current_consumption -> current_power_w, total_consumption -> total_energy_kwh and daily_consumption -> today_energy_kwh (@DanNixon - #10979) (light.tplink docs) (switch.tplink docs) (breaking change)
    • +
    +
  • +
  • Move IMAP Email Content body to an attribute (@notoriousbdg - #11096) (sensor.imap_email_content docs) (breaking change)
  • +
  • Automations which were using state that was returning target_temperature of the netatmo climate platform needs an update. (@ciotlosm - #11345) (climate.netatmo docs) (breaking change)
  • +
  • The default availability payloads for the MQTT switch platform have changed from “ON” and “OFF” to “online” and “offline” (in order to match the majority of MQTT platforms that already supported availability reporting). (@DanNixon - #11336) (breaking change)
  • +
  • +

    Customizations for how entities are exposed to Alexa are no longer set via customize. Instead they are set via the configuration of the cloud component:

    + +
      cloud:
    +    alexa:
    +      entity_config:
    +        switch.kitchen:
    +          name: 'Name for Alexa'
    +          description: 'Description for Alexa'
    +          display_categories: 'LIGHT'
    +
    +
    +

    (@balloob - #11461) (cloud docs) (alexa.smart_home docs) (breaking change)

    +
  • +
  • The extension of the alpha_vantage requires an update of the configuration as now are exchange data available as well. (@ChristianKuehnel - #11427) (sensor.alpha_vantage docs) (breaking change)
  • +
  • The prometheus component now supports pushing all sensors and fixes wrong metrics. If may require that you update your configuration. (@michaelkuty - #11159) (prometheus docs) (breaking change)
  • +
  • Insteon local devices will now use their address as the entity_id and name. The friendly name can be customized using the standard customization configuration. (@camrun91 - #11088) (insteon_local docs) (fan.insteon_local docs) (light.insteon_local docs) (switch.insteon_local docs) (breaking change)
  • +
  • +

    Google Assistant is no longer configured via customize but instead has its configuration under the google_assistant entry in your configuration.yaml. The attributes will no longer have to be prefixed with google_assistant_ either.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Old optionNew option
    google_assistantexpose
    aliasesaliases
    google_assistant_namename
    google_assistant_typetype
    + +

    Before:

    + +
      homeassistant:
    +    customize:
    +      switch.kitchen:
    +        google_assistant: false
    +        google_assistant_name: nice lights
    +        google_assistant_type: light
    +        aliases:
    +          - roof lights
    +
    +  google_assistant:
    +
    +
    + +

    After:

    + +
      google_assistant:
    +    entity_config:
    +      switch.kitchen:
    +        expose: false
    +        alias: roof lights
    +        name: nice lights
    +        type: light
    +
    +
    +

    (@balloob - #11499) (cloud docs) (google_assistant docs) (breaking change)

    +
  • +
  • The climate.set_aux_heat service is no longer available for the Sensibo climate platform. Now call climate.turn_on or climate.turn_off. (@andrey-git - #11579) (climate.sensibo docs) (breaking change)
  • +
  • +

    Release 0.61.0 introduced a lazy service loading strategy that relied on all components and platforms following our naming convention. After the release we realized that not all services did, which have been addressed by this fix. This results in certain services changing names:

    + +
     todoist.new_task -> calendar.todoist_new_task
    +
    + snapcast.snapcast_snapshot -> media_player.snapcast_snapshot
    + snapcast.snapcast_restore -> media_player.snapcast_restore
    +
    + mopar.remote_command -> sensor.mopar_remote_command
    +
    + broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107
    + broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107
    +
    +
    +

    (@amelchio - #11677) (calendar.todoist docs) (media_player.snapcast docs) (media_player.soundtouch docs) (sensor.mopar docs) (switch.broadlink docs) (switch.scsgate docs) (breaking change)

    +
  • +
+ +

All changes

+ + + +]]>
+
+ + + <![CDATA[Thank You]]> + + 2017-12-28T22:00:00+00:00 + https://home-assistant.io/blog/2017/12/28/thank-you + 2017 is almost over and this means it’s time to do a little recap of our 2017. This was a great year for Home Assistant. Again, we were able to stick to our bi-weekly release cycle. There were 25 releases over the year and each release included the work of around 60 contributors.

+ +

We got 10.000 stars on GitHub, reached 10.000 commits in the main repo (over 4300 were made in 2017), got a Thomas-Krenn award, participated in Hacktoberfest, we have now almost 1000 integrations (the exact number is 938), we moved to Discord and we are up to over 2 million pageviews per month on our forum. Beside that we announced the Home Assistant cloud and have regular Home Assistant Podcasts.

+ +

We also do not want to forget to mention Hass.io and all the great Hass.io add-ons.

+ +

Uff, what a year…Thank you, dear community for being so helpful, supportive and awesome 🙇.

+ +

A very big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. You are the foundation for our success and all of you can be proud of yourself.

+ +

We would also like to thanks all the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thank you GitHub, TravisCI, CloudFlare, Discord and Discourse!

+ +

Some of us are taking a break and spending some quality time with family and loved ones.

+ +

Stay tuned for more Home Assistant awesomeness in 2018. We will keep the pace but first: Happy New Year!

+ +

– Home Assistant Organization

+ +]]>
+
+ + + <![CDATA[Introducing Home Assistant Cloud]]> + + 2017-12-17T03:00:00+00:00 + https://home-assistant.io/blog/2017/12/17/introducing-home-assistant-cloud + Today we’re introducing the next step in the Home Assistant saga: the Home Assistant Cloud. The goal of the Home Assistant Cloud is to bridge the gap between your local Home Assistant instance and services in the cloud while delivering the maximum possible security and privacy.

+ +

The first service that is supported via the Home Assistant Cloud is the Amazon Alexa Smart Home skill. This integration will allow you to control all your devices in Home Assistant via Amazon Alexa. You will be able to say “Alexa, turn on the kitchen lights” and your local Home Assistant will turn on the lights. Because Alexa talks to Home Assistant, it doesn’t matter what kind of lights they are! Anything that is linked to Home Assistant will work. IKEA lights, a 10 year old X10 switch or something you’ve made yourself. As long as Home Assistant can control it, you can control it via Alexa.

+ +

We have designed the Home Assistant Cloud with security in mind. When you activate the new Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet.

+ +

Integrations like Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger!

+ +

We are making the beta of the Home Assistant Cloud publicly available today. During the beta period the Home Assistant Cloud will be free to use. We are currently planning to run a beta till March 1, 2018 0:00 UTC. Once the beta ends, the Home Assistant Cloud will be part of our Community Support package which will run at $5 USD/month.

+ +

By subscribing to the Community Support package you will show your support for the Home Assistant organization, its projects and its community. It will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud.

+ +

So if you ever felt like donating money to support the development of Home Assistant and Hass.io: sign up for the Home Assistant Cloud!

+ +

Why not take donations?

+ +

With donations you have to convince people to keep donating and it will be hard to plan around the amount of available money. The biggest concern is what do you do when there is not enough money. We could shut down the servers or again depend on the wallets of our developers. We could run Wikipedia style advertisements for donating, but those are even more annoying than running advertisements.

+ +

Getting started

+ +

Upgrade Home Assistant to 0.60 and enable the cloud and config components:

+ +
# Example configuration.yaml entry
+cloud:
+config:
+
+
+ +

Now restart Home Assistant and navigate to the configuration panel. It will offer a new cloud section. Here you can create an account and login. Once logged in, your instance will connect to the cloud.

+ +

The next step is to configure Alexa. This can be done by enabling the Home Assistant skill for Alexa and link your Home Assistant cloud account.

+ +

Once you’re done, ask Alexa to discover devices (“Alexa, discover devices”) and you are all set to control them: “Alexa, turn on <device name>”.

+ +

See the Cloud component configuration to learn how to filter which devices get exposed to Alexa.

+ +

FAQ

+ +

Last updated: February 22, 2018

+ +

I thought the Home Assistant crew didn’t like the cloud?

+ +

You are right, we don’t! The Home Assistant Cloud is not an alternative to running your local Home Assistant instance. All control and automations are still running locally.

+ +

Instead, the Home Assistant Cloud is an extension of your local instance. It allows to communicate with companies that force us to communicate via a public available cloud endpoint like Amazon Alexa and Google Assistant.

+ +

Home Assistant Cloud is only used to route the messages to your local Home Assistant instance. All messages are processed locally.

+ +

(Some people have suggested we rename to Home Assistant Bridge to avoid this confusion)

+ +

Will Home Assistant and Hass.io remain open source?

+ +

Yes. Yes. Yes! Home Assistant is the work of hundreds of developers all working together in creating something amazing. The only thing that will require a subscription is the optional cloud functionality.

+ +

Where is the source code for the Alexa skill?

+ +

All messages are processed locally and so the Alexa skill code is part of the Home Assistant code. The Home Assistant Cloud only routes the messages to your local Home Assistant instance. This means that you can audit the source code to check all the things that the cloud can do:

+ + + +

What other features will come to the cloud?

+ +

We have a lot of ideas! We are not going to make any promises but here are some things that we’re looking into:

+ +
    +
  • Google Home / Google Assistant Smart Home skill
  • +
  • Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant.
  • +
  • Encrypted backups of your Hass.io data
  • +
  • Text to speech powered by AWS Polly
  • +
  • Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud.
  • +
  • IFTTT integration
  • +
  • Alexa shopping list integration
  • +
+ +

What countries are supported at launch?

+ +

As of February 2018, we are live in all countries that have Alexa except for Japan (which is under certification).

+ +

How is the connection made to the cloud?

+ +

The connection is made using a WebSocket connection over HTTPS. See the source here.

+ +

I think that the price is too high for what I get.

+ +

The Home Assistant Cloud functionality is a perk for becoming a supporter of the Home Assistant project. As a supporter you will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. You are not paying to just maintain the cloud servers.

+ +

The perks offered for being a supporter will also extend over time, as noted in this answer.

+ +

What will the Home Assistant organization do with the funds ?

+ +

The plan is to hire developers to work fulltime on Home Assistant. We have grown a lot in the last 4 years and the work load is pushing the limits of what our core developers can do. Open source burn out is very common (1, 2) and we want to avoid this by moving most organization and release chores to a paid position.

+ +

For more background on these topics, check out HASS Podcast 15.

+ +]]>
+
+ + + <![CDATA[0.60: Beckhoff/TwinCAT, WebDav, Gearbest, iAlarm]]> + + 2017-12-17T02:00:00+00:00 + https://home-assistant.io/blog/2017/12/17/release-60 +

+ +

The biggest change for 0.60 will be covered in a separate blog post. Thus, we will keep it short here. Just one thing: This is the last release in 2017. We will be back to our bi-weekly release cycle in 2018.

+ +

A big “Thank you” to all people who supported us to make this release possible.

+ +

TwinCAT

+

With the brand-new ADS (automation device specification) component by @stlehmann allows you to hook Home Assistant into this fieldbus independent interface which is often used between Beckhoff devices running with TwinCAT.

+ +

WebDav calendar

+

Thanks to @maxlaverse Home Assistant support now WebDav calendars.

+ +

Tracking prices

+

With the new gearbest sensor there is now an additional sensor available to track the price of a product.

+ +

Financial details

+

Yahoo! has discontinued their financial service. To fill this gap we have now the alpha_vantage sensor which is intruded in this release and allows you to monitor the stock market.

+ +

New Platforms

+ + + +

Release 0.60.1 - January 6

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ + + +

All changes

+ + + +]]>
+
+ + + <![CDATA[0.59: Order pizza, Entity Picker, Color Wheel]]> + + 2017-12-03T02:00:00+00:00 + https://home-assistant.io/blog/2017/12/03/release-59 +

+ +

We are proud to announce the availability of Home Assistant 0.59. To keep you in the loop: This is the second last release in 2017. We have stuck to our bi-weekly release cycle for another year but we decided that we will take a little break between Christmas and New Year.

+ +

Dominos Pizza platform

+

With the Dominos Pizza integration made by @wardcraigj your home is now taking care that you don’t starve. In combination with a Skybell or a DoorBird you will know exactly when the pizza is in front of your door.

+ +

Color picker

+

@NovapaX created a new color picker. While dragging the color badge with your finger, a badge will appear above your finger so you can see the current color.

+ +

+ Screenshot of the color wheel. + Screenshot of the color wheel. +

+ +

Shopping list tweaks

+

@balloob has refreshed the shopping list UI to make it more usable. It’s now possible to add items by typing, instead of just voice. Also editing has been made easier.

+ +

Entity picker

+

@balloob improved the way if you want to pick an entity. In the automation editor, the script editor and the service section of the Developer Tools it’s much easier to identify the right one! The automation editor will only suggest relevant entities.

+ +

+ Screenshot of the Entity Picker. + Screenshot of the of the Entity Picker. +

+ +

Hass.io Add-ons

+

If you follow our twitter feed then you may already know that @frenck spent some time to bring new stuff to the Community Hass.io Add-ons repository.

+ + + +

New Platforms

+ + + +

Release 0.59.1 - December 4

+ + + +

Release 0.59.2 - December 6

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ + + +

All changes

+ + + +]]>
+
+ + + <![CDATA[Set up Hass.io on top of a virtual machine]]> + + 2017-11-29T06:00:00+00:00 + https://home-assistant.io/blog/2017/11/29/hassio-virtual-machine + The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with Hass.io. For a test or if you have a system which is already hosting virtual machines then the Hass.io installer is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with libvirt support and the guest will be running Debian 9. Hass.io will be installed on the guest.

+ + + +

Assuming that you already have setup libvirtd. You might need to install virt-builder and virt-viewer additionally.

+ +
$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer
+
+
+ +

We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use $ virt-builder --list to get an overview about what’s operating systems are available if you prefer to use a different system.

+ +
$ sudo virt-builder debian-9 \
+    --output /var/lib/libvirt/images/hassio.img \
+    --format qcow2 \
+    --size 10G \
+    --root-password password:test123 \
+    --hostname hassio \
+    --firstboot-command "dpkg-reconfigure openssh-server"
+[...]
+[ 147.6] Finishing off
+                   Output file: /var/lib/libvirt/images/hassio.img
+                   Output size: 10.0G
+                 Output format: qcow2
+            Total usable space: 9.3G
+                    Free space: 8.1G (87%)
+
+
+ +

Now, we are making our new virtual machine available for libvirtd. If you get an error that the OS is unknown, use $ osinfo-query os to get the name to use with --os-variant. To access the virtual machine is connected to the bridge bridge0.

+ +
$ sudo virt-install --name hassio --import --ram 1024 \
+     --os-variant debian9 -w bridge=bridge0 \
+     --autostart --disk /var/lib/libvirt/images/hassio.img
+
+
+ +

+ + Hass.io virtual machine in Virtual Machine Manager +

+ +

Depending on your preferences you can use the Virtual Machine Manager (virt-manager) or virsh to manage the created virtual machine. Log in and create an user with # useradd ha and set a password with # passwd ha. We will need that user to make a SSH connection to the virtual machine.

+ +

Log in as ha with the given password. If your are using the default network of libvirtd then the DHCP range is defined in /var/lib/libvirt/dnsmasq/default.conf. In this guide the virtual machine is present at 192.168.0.109.

+ +
$ ssh ha@192.168.0.109
+ha@192.168.0.109's password: 
+Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64
+[...]
+$ 
+
+
+ +

Install the requirements after you switch the user to root.

+ +
$ su
+Password: 
+root@hassio:/home/ha# 
+root@hassio:/home/ha# apt-get update
+root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \
+    apt-transport-https ca-certificates
+
+
+ +

We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages.

+ +
root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg 
+root@hassio:/home/ha# apt-key add gpg
+OK
+root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list
+root@hassio:/home/ha# apt-get update
+
+
+ +

Now, it’s possible to install a current release of Docker.

+ +
root@hassio:/home/ha# apt-get -y install docker-ce
+
+
+ +

Start docker and enable it.

+ +
root@hassio:/home/ha# systemctl start docker && systemctl enable docker
+
+
+ +

An installation script will take care about the setup of all moving parts.

+ +
root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -
+[INFO] Install supervisor docker
+[INFO] Install generic HostControl
+[INFO] Install startup scripts
+[INFO] Init systemd
+Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
+[INFO] Start services
+
+
+ +

If it’s done, then there will be two new containers.

+ +
root@hassio:/home/ha# docker ps
+CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS               NAMES
+ada5bbfc74f0        homeassistant/qemux86-64-homeassistant   "/usr/bin/entry.sh..."   4 minutes ago       Up 4 minutes                            homeassistant
+5954ac452ffc        homeassistant/amd64-hassio-supervisor    "/usr/bin/entry.sh..."   7 minutes ago       Up 7 minutes                            hassio_supervisor
+
+
+ +

After a connection to the container which is containing Home Assistant is made, you will see the log output.

+ +
root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0
+2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sun.sun, old_state=<state sun.sun=below_horizon; next_dawn=2017-11-29T06:17:58+00:00,...
+
+
+ +

For further details about the container, inspect can help.

+ +
root@hassio:/home/ha# docker inspect bb32b525d1ad
+[...]
+            "OnBuild": null,
+            "Labels": {
+                "io.hass.arch": "amd64",
+                "io.hass.machine": "qemux86-64",
+                "io.hass.type": "homeassistant",
+                "io.hass.version": "0.58.1"
+            }
+[...]
+
+
+ +

Hass.io is now ready. The frontend is available at http://192.168.0.109:8123. Yes, the IP address is the one of the guest.

+ +

+ + Hass.io overview +

+ +

Keep in mind that there are limitations with this approach. Not all add-ons will work and some don’t make sense to use as the hardware is not present. E.g., use the SSH community add-on instead of the default SSH add-on.

+ +]]>
+
+ + + <![CDATA[0.58: More translations, faster frontend, system log]]> + + 2017-11-18T04:00:00+00:00 + https://home-assistant.io/blog/2017/11/18/release-58 +

+ +

+The Hass.io release of 0.58 will be delayed by a couple of days because Pascal is moving this weekend. +

+ +

Translation update

+ +

Translations are up and running in full speed. Shortly after the last release we got our translation pipeline figured out. @armills and @c727 are doing an amazing job managing this project. We’ve doubled the number of supported languages to 42 and the amount of keys to translate went from 8 to 130. Our translators are on top of their game and 79% is already translated.

+ +

Talking about our translators, we now have 445 people with an account to help with translations. Not bad for 3 weeks!

+ +

And because more translations is more better, @robbiet480 has added the iOS app to Lokalise, our translation management platform. The iOS app is currently supported in 7 different languages.

+ +

Learn more about how to help with translations

+ +

Frontend improvements continue

+ +

Thanks to @Andrey-git we now are able to serve the frontend in modern JavaScript. Leveraging modern JavaScript makes the frontend faster to load and run. For now it’s opt-in but we’re looking into making it opt-out in the future. The ES5 version of the frontend will remain available for older devices.

+ +

To try it once, add ?latest to your Home Assistant bookmark. To make it the default on your installation, update your config to look like this:

+ +
frontend:
+  javascript_version: latest
+
+
+ +

+For Custom UI users: your custom UI will need to be updated before it can work with the new version of the frontend. +

+ +

System log enhanced

+ +

Our about screen that shows the error logs has gained a nice upgrade by @postlund. Now the 50 latest exceptions will be displayed with the option to get more information.

+ +

+ Screenshot of the about screen showing the system log. + Screenshot of the about screen showing the system log. +

+ +

New Platforms

+ + + +

Release 0.58.1 - November 21

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

Breaking Changes

+ +
    +
  • hass.states.is_state_attr(entity_id, attribute, value) has been removed. The template version still exists. Unused method parameter wait has been removed from hass.bus.async_fire (@balloob - #10305) (breaking change)
  • +
  • Refactor Neato botvac components as a vacuum (@jabesq - #9946) (neato docs) (switch.neato docs) (vacuum.neato docs) (breaking change) (new-platform)
  • +
  • Lutron released a firmware updated for the Caseta system which removed our ability to connect to and control the bridge device over SSH, breaking compatibility with pylutron_caseta and Home Assistant. Component has been updated to work again, please see the docs on how to set it up. (@mdonoughe - #10286) (lutron_caseta docs) (breaking change)
  • +
+ +

All changes

+ + + +]]>
+
+ + + <![CDATA[Secure remote access to Home Assistant using Tor]]> + + 2017-11-12T08:00:00+00:00 + https://home-assistant.io/blog/2017/11/12/tor + Routers and gateways provided by broadband internet providers are very often limited regarding features and configuration possibilities. Most of these limitations affect the opportunities that allow users to set up port-forwarding, DMZ, and DHCP reservations since the suppliers figured that average user does not want (or should not) deal with these. Making your Home Assistant instance available remotely (and securely), in this case, becomes more difficult. Are you one of those unlucky ones?

+ +

There are a couple of options available to achieve a remote (and secure) accessible Home Assistant instance. However, almost all of them require you to: open one or more ports on your router, expose a public IP address, and require you to reserve a fixed IP in your DHCP server (or set up a static IP address). Examples of these are:

+ +
    +
  • Combination of DuckDNS (or similar), Let’s Encrypt (SSL), DHCP reservation, and forwarding a port to your device running Home Assistant.
  • +
  • Setup a VPN, which often requires more hardware and software. Additionally, it also requires port-forwarding, DHCP reservation and most likely DuckDNS (or similar).
  • +
  • SSH tunnel-ing. Which still requires port-forwarding, DHCP reservation and most likely (yeah, you’ve guessed it) DuckDNS (or similar).
  • +
+ +

There is, however, another option available that most people do not realize: Tor. Tor offers a capability that they refer to as Tor’s Hidden Services, which allows you to securely access your Home Assistant installation without the need for all these things. No need to forward and open ports, no need to expose your public IP, no DNS entry, no need for SSL certificates, and you do not have to assign a fixed IP to the device running your Home Assistant.

+ +

The most amazing part? It is super easy to set up!

+ + + +

Setting up Tor

+ +

Our documentation provides a detailed guide about setting up a Tor’s Hidden Service. The setup is straight-forward:

+ +
    +
  1. Install Tor. On a Debian-based system: $ sudo apt-get install tor. On Fedora: $ sudo dnf install tor
  2. +
  3. +

    Modify Tor’s main configuration file /etc/tor/torrc to include the following lines:

    + +
     ############### This section is just for location-hidden services ###
    +
    + ## Once you have configured a hidden service, you can look at the
    + ## contents of the file ".../hidden_service/hostname" for the address
    + ## to tell people.
    + ...
    + HiddenServiceDir /var/lib/tor/homeassistant/
    + HiddenServicePort 80 127.0.0.1:8123
    + ...
    +
    +
    +
  4. +
  5. Restart Tor: $ sudo systemctl restart tor
  6. +
  7. +

    The Tor-generated hostname file contains the hostname you need to access your installation.

    + +
     $ sudo cat /var/lib/tor/homeassistant/hostname
    + abcdef1234567890.onion
    +
    +
    +
  8. +
+ +

Tor add-on for Hass.io

+ +

Franck Nijhof (@frenck) created the Tor add-on for Hass.io. This add-on makes the installation and the setup extremely simple. Go to the Hass.io panel, then to the Store, copy https://github.com/hassio-addons/repository into the text box of Add-On Repositories and save it.

+ +

A new entry Tor will show-up in the list of add-ons. Click on it to install it. The configuration is done in Options. Please refer to the Configuration documentation for further details. A possible configuration could look like the sample below (which is the default configuration).

+ +
{
+  "log_level": "info",
+  "socks": false,
+  "hidden_services": true,
+  "stealth": false,
+  "client_names": [],
+  "ports": [
+    "8123:80"
+  ]
+}
+
+
+ +

When you are done, press Save and then Start. In the Logs section, you can see what the add-on is doing. Watch out for an entry like the one below, which will tell you your hostname on the Tor network.

+ +
INFO: -----------------------------------------------------------
+INFO: Your Home Assistant instance is available on Tor!
+INFO: Address: abcdef1234567890.onion
+INFO: -----------------------------------------------------------
+
+
+ +

Don’t worry if you missed it, restarting the add-on will display it again. The details are also stored and available in the /ssl/tor/hidden_service/hostname file.

+ +

Tor clients

+ +

To access you Home Assistant via the Tor Hidden Service, you will need a Tor client. There are multiple clients, for different devices and platforms, available. The Tor Browser is by far the simplest option, which is available for Windows, MacOS & Linux.

+ +

Simply download and install the Tor Browser, start it, and enter the “dot onion” address you’ve gained from the earlier steps (abcdef1234567890.onion in this case). Voila!

+ +

Some other clients:

+ + + +

Cranking up security

+ +

The setup described in this blog post is easy and relatively secure, but anyone who knows your .onion address can still connect to your Home Assistant instance (Remember to use passwords!). With all of the discussion about putting your IoT on the Tor Network, maybe you want to add an extra layer of defense, especially if you’re going to be the only one that uses it. Tor offers an additional layer of security, called “Hidden Service Authentication”, usually referred to as “Stealth”-mode.

+ +

This “Stealth”-mode adds an extra layer of security to your Hidden Service by only responding to a client that passes a unique secret cookie as it connects. Obviously, this requires additional configuration on the Tor client applications.

+ +

Additional information can be found in the Tor documentation and the Tor add-on repository, including how to setup the “Stealth”-mode. The Tor Project itself provides details about a variaty of topics in their documentation.

+]]>
+
+ + + <![CDATA[Home Assistant and The Things Network (TTN)]]> + + 2017-11-10T12:00:00+00:00 + https://home-assistant.io/blog/2017/11/10/ttn-with-mqtt + The Home Assistant integration for The Things Network (TTN) uses their Storage feature to get the sensor data. The easiest way to observe TTN sensors would be MQTT as it doesn’t requires any additional configuration.

+ +

At the moment Home Assistant only supports one MQTT broker. This means that you can’t subscribe to topics which are located on different brokers.

+ + + +

Subscribe to the TTN Broker

+ +

To check what your devices are sending, subscribe to the topic +/devices/+/up with a command-line tool like mosquitto_sub. The <Region> is the postfix of the Handler entry in your Application overview. <AppID> is the Application ID and <AppKey> is your access key.

+ +
$ mosquitto_sub -v -h <Region>.thethings.network -t '+/devices/+/up' -u '<AppID>' -P '<AppKey>'
+{
+	"app_id": "ha-demo",
+	"dev_id": "device01",
+	"hardware_serial": "AJDJENDNHRBFBBT",
+	"port": 1,
+    [...]
+
+
+ +

The payload contains details about the device itself and the sensor data. The sensor data is stored in payload_fields. Depending on the device configuration it may contain a single value or multiple values.

+ +

The relay

+ +

To be able to work locally with the MQTT data that is received from the devices connected to TTN, we need to transfer it to the local broker. With this simple script below all messages from a given device are re-published on your local MQTT broker after they are received. Modify the script with your details as outlined in the previous section.

+ +
"""Relay MQTT messages from The Things Network to a local MQTT broker."""
+import paho.mqtt.client as mqtt
+import paho.mqtt.publish as publish
+
+DEVICE_NAME = '<DeviceID>'
+
+TTN_BROKER = '<Region>.thethings.network'
+TTN_USERNAME = '<AppID>'
+TTN_PASSWORD = '<AppKey>'
+TTN_TOPIC = '+/devices/{}/up'.format(DEVICE_NAME)
+
+LOCAL_BROKER = '192.168.0.2'
+LOCAL_TOPIC = 'home/ttn/garden_temp'
+
+
+def on_connect(client, userdata, flags, rc):
+    """Subscribe to topic after connection to broker is made."""
+    print("Connected with result code", str(rc))
+    client.subscribe(TTN_TOPIC)
+
+
+def on_message(client, userdata, msg):
+    """Relay message to a different broker."""
+    publish.single(
+        LOCAL_TOPIC, payload=msg.payload, qos=0, retain=False,
+        hostname=LOCAL_BROKER, port=1883, client_id='ttn-local',
+        keepalive=60, will=None, auth=None, tls=None, protocol=mqtt.MQTTv311)
+
+
+client = mqtt.Client()
+client.username_pw_set(TTN_USERNAME, password=TTN_PASSWORD)
+client.on_connect = on_connect
+client.on_message = on_message
+client.connect(TTN_BROKER, 1883, 60)
+
+client.loop_forever()
+
+
+ +

Save it and run it. As soon as a MQTT message is received from your device you should see it on your local broker (here 192.168.0.2) if you subscribe to # or the topic given in the script above home/ttn/garden_temp.

+ +
$ mosquitto_sub -h 192.168.0.2 -t "#" -d
+
+
+ +

The sensor

+ +

All we would need now, is a mqtt sensor with a value_template. With a sophisticated custom sensor it would be possible to displaying a little more than just the state. The device is only sending the temperature {"temperature": 7.5} but there are other details available which the sensor should show.

+ +
"""Support for The Things Network MQTT sensors."""
+import asyncio
+from datetime import timedelta
+import json
+import logging
+
+import voluptuous as vol
+
+import homeassistant.components.mqtt as mqtt
+from homeassistant.components.mqtt import CONF_STATE_TOPIC
+from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT
+from homeassistant.core import callback
+import homeassistant.helpers.config_validation as cv
+from homeassistant.helpers.entity import Entity
+
+_LOGGER = logging.getLogger(__name__)
+
+DEFAULT_NAME = 'MQTT TTN Sensor'
+DEFAULT_FORCE_UPDATE = False
+DEPENDENCIES = ['mqtt']
+
+PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({
+    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
+    vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
+
+})
+
+
+@asyncio.coroutine
+def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
+    """Set up the TTN MQTT Sensor."""
+    async_add_devices([MqttTtnSensor(
+        config.get(CONF_NAME), config.get(CONF_STATE_TOPIC),
+        config.get(CONF_UNIT_OF_MEASUREMENT))
+    ])
+
+
+class MqttTtnSensor(Entity):
+    """Representation of a sensor."""
+
+    def __init__(self, name, state_topic, unit_of_measurement):
+        """Initialize the sensor."""
+        self._state = None
+        self._name = name
+        self._unit_of_measurement = unit_of_measurement
+        self._attributes = {}
+        self._state_topic = state_topic
+
+    def async_added_to_hass(self):
+        """Subscribe to MQTT events."""
+        @callback
+        def message_received(topic, payload, qos):
+            """Handle new MQTT messages."""
+
+            try:
+                data = json.loads(payload)
+            except json.JSONDecodeError:
+                _LOGGER.error("Invalid JSON data received: %s", data)
+
+            self._state = data['payload_fields'][next(
+                iter(data['payload_fields']))]
+            self._attributes = data
+            del self._attributes['payload_fields']
+            del self._attributes['metadata']
+            self.async_schedule_update_ha_state()
+
+        return mqtt.async_subscribe(
+            self.hass, self._state_topic, message_received, 0)
+
+    @property
+    def should_poll(self):
+        """No polling needed."""
+        return False
+
+    @property
+    def name(self):
+        """Return the name of the sensor."""
+        return self._name
+
+    @property
+    def unit_of_measurement(self):
+        """Return the unit this state is expressed in."""
+        return self._unit_of_measurement
+
+    @property
+    def state_attributes(self):
+        """Return the attributes of the entity."""
+        return self._attributes
+
+    @property
+    def state(self):
+        """Return the state of the entity."""
+        return self._state
+
+
+ +

Store it in <config_dir>/custom_components/sensor/mqtt_ttn.py and it will handle the messages.

+ +

The configuration

+ +

Now create the mqtt_ttn sensor entry for your device.

+ +
sensor:
+  - platform: mqtt_ttn
+    name: TTN Sensor
+    state_topic: "home/ttn/garden_temp"
+
+
+ +

This solution is not production-ready, scalable or stable but it could fill the gape till Home Assistant is able to connect to multiple MQTT brokers. If you have multiple devices relay all messages to your local broker and add a configuration variable to mqtt_ttn sensor which allows you to select the device.

+]]>
+
+ + + <![CDATA[Translating Home Assistant]]> + + 2017-11-06T01:00:00+00:00 + https://home-assistant.io/blog/2017/11/05/frontend-translations + +The Home Assistant sidebar in 12 different languages +The Home Assistant sidebar in 12 different languages. +

+ +

Translations

+ +

As mentioned in the 0.57 release notes, Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. @c727 took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with Lokalise to manage our translations!

+ +

Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our public signup link, and start translating right away. We’ve created a translation startup guide with additional details about how to contribute. Instructions are provided there for how to request a new language.

+ +

Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright!

+ +]]>
+
+ + + <![CDATA[0.57: Translations, Hacktoberfest, Timers]]> + + 2017-11-04T04:00:00+00:00 + https://home-assistant.io/blog/2017/11/04/release-57 + +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.

+ +

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, to make the translation process accessible to anyone who would like to contribute. Stay tuned for a blog post with more documentation soon.

+ +

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!

+ +

Hacktoberfest

+ +

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

+ + + +

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.

+ +

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.

+ +

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

+ +

Timer

+ +

Okay, one more highlight before we’ll let you check out the changelog. Contributor @danielperna84 (famous for creating the HASS 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.

+ +

New Platforms

+ +

+ + + +

release 0.57.1 - november 4

+ +
    +
  • Fix login screen not showing when no password stored (@balloob)
  • +
+ +

release 0.57.2 - november 5

+ +
    +
  • Update frontend with fixes for setting temperature on climate card (@balloob)
  • +
  • Fix setting max brightness for TRADFRI (@ggravlingen - #10359)
  • +
+ +

release 0.57.3 - november 11

+ + + +

If you need help…

+ +

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ + + +

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

All changes

+ + + +]]>
+
+ + + <![CDATA[Home Assistant and SSH]]> + + 2017-11-02T08:00:00+00:00 + https://home-assistant.io/blog/2017/11/02/secure-shell-tunnel + Most system engineers are very familiar with SSH (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 then enable the SSH Server add-on. You must also have a public IP address or hostname which can be provided by dynamic DNS (e.g., NO-IP or DuckDNS). +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.

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

+ +
$ ssh -L 8000:localhost:8123 ha@192.168.0.11
+
+
+ +

The first time you establish the connection you need to accept the fingerprint.

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

+ +

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 instead of passwords to avoid bruteforce attacks.
  • +
+ +]]>
+
+ + + <![CDATA[Home Assistant Demo]]> + + 2017-10-28T08:00:00+00:00 + https://home-assistant.io/blog/2017/10/28/demo + 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/

+ +

+ + Home Assistant’s online demo +

+ + + +

--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 allows you to run a demo locally including the latest features. Make sure that you have a backup of your configuration.

+ +
$ 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 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:

+ +
sensor:
+  - platform: demo
+binary_sensor:
+  - platform: demo
+switch:
+  - platform: demo
+
+
+ +

+ + Home Assistant’s demo platforms +

+ +

random platforms

+

Till now the frontend is static. Nothing is changing over time. Starting with 0.57 we ship a random binary sensor platform in addition to the already available random sensor.

+ +

By adding those platform to your configuration.yaml file, your demo will become more interactive.

+ +
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 platforms or the input_* components it would even be possible to simulate a complete apartment or a house. For a hint check the sample below:

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

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 and the embedded MQTT broker. Simply add MQTT to your configuration.yaml file with discovery:

+ +
mqtt:
+  discovery: true
+
+
+ +

Download the sample script. It depends on paho-mqtt. If you run the script inside your Home Assistant’s virtual environment 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.

+ +
(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. Also, take a look at that repository if you need a logo for your slides.

+ +]]>
+
+ +
diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html new file mode 100644 index 0000000000..ddc0215a82 --- /dev/null +++ b/blog/2014/12/18/website-launched/index.html @@ -0,0 +1,206 @@ + + + + + + + + + Website launched! - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Website launched!

+
+ + + Less than one minute reading time + + +
    +
  • Website
  • +
+
+ Comments +
+
+

I finally took the time to setup a simple website to help people getting started with Home Assistant. The process was super smooth thanks to the great tools Jekyll and Octopress and the great services GitHub Pages and CloudFlare.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html new file mode 100644 index 0000000000..b98e303193 --- /dev/null +++ b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html @@ -0,0 +1,240 @@ + + + + + + + + + Home Control, Automation & the Smart Home - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Control, Automation & the Smart Home

+
+ + + four minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+

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

+

As a bare minimum a hub has to keep track of the state of each device and should be able to control them if possible. For example, it has to know which lights are on or off and offer a way to control the lights. For a sensor it only has to know the value. A hub with these capabilities offers home control.

+

+ + Hub dashboard example + + Example of a hub’s dashboard. Showing the state of 2 persons, 4 lights and the sun. +

+ +

A step up from home control is to have the user setup triggers to send commands based on information in the home control layer. For example, to turn on the lights when a person arrives home. A hub with these capabilities is capable of home automation.

+

Most hubs on the market today offer this in various degrees of functionality and usability. Some IoT-capable devices offer this too, but only control themselves and are usually limited to location and time-based events.

+

The last category, and this is still very much in the future, is the smart home. A self-learning and adopting system that will decide which events should impact other devices.

+

An example of a smart home in action is that it observes that when person A comes home, the lights in the living room and the kitchen switch on. While if person B comes home, the lights in the living room and the study room are switched on. The next time person A or B comes home, the smart home will turn on its preferred lights without any configuration being set by the user.

+

A glimpse today at how the future can look is the Nest thermostat. A thermostat smart enough to learn your schedule and adjust its own temperature accordingly.

+

All this results in the following overview of Home Automation.

+

+ + Home Automation landscape + + Overview of the home automation landscape. +

+

Challenges

+

You are probably wondering, this all seems relatively simple, why don’t I have my very own smart home yet? There are a couple of challenges today that keep us from stepping into the future.

+

More Internet of Things-capable devices

+

The majority of the IoT products out there are either lights, switches or presence detection. That’s not enough for your home to be very smart about. We need televisions, fridges, ovens and more to join the party to increase the number of devices that we can control.

+

More data

+

Most first generation IoT devices are only exposing information that is needed for controlling it. We need to be able to track all interactions with each device for our smart home to learn how interaction with devices influence other things. For example, we need to be able to track how many cups of coffee were made or how often the fridge was open. This will increase the information flow and open up a whole bunch of new possibilities. For example, the smart home can order new coffee when you’re running low.

+

Easy to use, open software that we can trust

+

To increase adoption we will need people to trust their smart home system. It will be very tough to convince people to upgrade all their devices and upload all interactions with each of them to the cloud. This data could reveal their whole life including all bad habits. That’s why such a system should be simple and open-source so people can validate that their data generated at home stays home.

+

Anoter important booster for adoption is that the software should be easy to set up and use by the average user. A lot of people are not burning their hands yet on Home Automation because they are scared of configurating it.

+

Home Assistant is trying to be this software. It is not there yet but trying hard. Device discovery and a user interface for configuring home automation are problems we hope to tackle in 2015 while not sacrificing any modularity or usability.

+

Happy new year!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html new file mode 100644 index 0000000000..381546bab9 --- /dev/null +++ b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html @@ -0,0 +1,230 @@ + + + + + + + + + Hello PushBullet, nice talking to you - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Hello PushBullet, nice talking to you

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

One of the things that was missing in Home Assistant for a while was a way to communicate with users. Wouldn’t it be nice to get a message when important events happen like the lights being turned on while no one is home? Since the Home Assistant frontend runs as a web application on the phone, we have no way to bring ourselves to the front. This is where the new notify component comes in, powered by PushBullet.

+

The new notify component will take in messages and tells them to the user. For now this will be powered by the very awesome PushBullet but any other messaging platform can be easily added.

+

+ + A message triggered by the simple_alarm component is shown by PushBullet on the Moto360. +

+

Read on to learn how to enable the notify component and integrate it with other components.

+ +

Enabling the notify component

+

To enable the new notify component, add the following to your home-assistant.conf:

+
[notify]
+platform=pushbullet
+api_key=ABCDEFGHJKLMNOPQRSTUVXYZ
+
+
+

You can get your api key from your account page on PushBullet.com.

+

Sending messages from your component

+

To be able to send messages, the notify component has to be loaded and initialized successfully.

+
import homeassistant.loader as loader
+
+def setup(hass, config):
+    notify = loader.get_component('notify')
+    notify.send_message(hass, "Hello from my component!")
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html new file mode 100644 index 0000000000..95aa78e545 --- /dev/null +++ b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html @@ -0,0 +1,213 @@ + + + + + + + + + Bootstrapping your setup with Discovery - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Bootstrapping your setup with Discovery

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

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

+

To enable the discovery component, add the following to your home-assistant.conf:

+
[discovery]
+
+
+

A new discovery section has been added to the Adding a new platform page with instructions how to make your platform discoverable.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/01/13/nest-in-da-house/index.html b/blog/2015/01/13/nest-in-da-house/index.html new file mode 100644 index 0000000000..0cb6f6fbf6 --- /dev/null +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -0,0 +1,217 @@ + + + + + + + + + Nest in the house! - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Nest in the house!

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

For thet majority of its existence, Home Assistant primary focus was on presence detection, lights and switches. But not anymore as we’re expanding the supported devices. Today, we’re proud to introduce Nest Thermostat integration for Home Assistant contributed by Stefano Fiorini!

+

+ +

+

The new integration exists out of two parts: a generic thermostat component and a Nest platform implementation. The initial version implements provides a read-only card and services to control it. The plan is in the future to add temperature and away mode controls from the thermostat card and more info dialog. Internally, we are using the Python package python-nest by jkoelker to talk to the Nest.

+

If you own a Nest thermostat, add the following lines to your home-assistant.conf:

+
[thermostat]
+platform=nest
+username=YOUR_USERNAME
+password=YOUR_PASSWORD
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html new file mode 100644 index 0000000000..46ed82277e --- /dev/null +++ b/blog/2015/01/24/release-notes/index.html @@ -0,0 +1,223 @@ + + + + + + + + + Release notes for January 24, 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Release notes for January 24, 2015

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

I have just merged the latest version of the development branch into master. Here are some of the highlights of this release:

+

Configuration via the frontend
+Phliips Hue will now be auto discovered and uses the new configurator component to interact with the user to finish the setup process.

+

Wink Hub support
+Thanks to the work done by John McLaughlin and Geoff Norton we now support the lights, switches and sensors that are connected to the Wink hub.

+

The getting started guide and component page have been reorganized
+The getting started instructions have been split into separate pages per component and a general overview page. The goal is to have a page per component that describes:

+
    +
  • What it does
  • +
  • How to set it up
  • +
  • Which states it maintains
  • +
  • Which services it provides
  • +
  • Additional development tips
  • +
+

More reasonable errors
+Home Assistant should now throw better errors and offer solutions if you do not have the right version of Python 3, forgot to clone the git submodules or install the dependencies.

+

Streamlined first launch
+Home Assistant now supports --open-ui and --demo-mode command line properties to open the browser automatically and have something to show. Home Assistant now supports to be run without a password, allowing the interface to login automatically on launch.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/02/08/looking-at-the-past/index.html b/blog/2015/02/08/looking-at-the-past/index.html new file mode 100644 index 0000000000..504fea8fc1 --- /dev/null +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -0,0 +1,228 @@ + + + + + + + + + Looking at the past - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Looking at the past

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Ever since the launch of Home Assistant you have been able to track the state of your house. But the view has always been limited to what the current state is. Not what it was. Today we are going to change that by introducing two brand new components:

+
    +
  • Recorder component that will record every event to a SQLite database
  • +
  • History component that will query and aggregate the recorded events
  • +
+

By adding this view into the past, we are adding an extra dimension into the state of your house. This brings great new possibilities for future features. The focus of today’s release is on getting the recording component to you to start recording and getting some data. To show what is being recorded a view has been added that shows the last 24 hours of your house. Expect more extensive tools to explore your history in the future.

+

Adding history to the UI was a challenge on itself because the old UI did not support easy navigation. So to add to the awesomeness of this release, Home Assistant also got a face lift.

+

The history component will be enabled for new users by default. For current users, run scripts/update to upgrade to the latest version and add [history] to your home-assistant.conf file.

+

+ + + +

+

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

+ +

Tracking history is an exciting next step for Home Assistant and will power the next generation of features. Here a list of some of the cool things that can now be build:

+
    +
  • Time Machine: explore the state of your house at any point in the past
  • +
  • Smart Home: analyze behavior and use it to automate your house
  • +
  • Summarize usage of the different components of your house
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html new file mode 100644 index 0000000000..228f1d8af5 --- /dev/null +++ b/blog/2015/02/24/streaming-updates/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Streaming updates - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Streaming updates

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

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

+

+ +

Streaming updates has been implemented using the HTML5 EventSource tag. Implementation is pretty straight forward as all the reconnection logic will be handled by the event source tag. The server-side code is 50 lines and the client-side code is 80 lines of code.

+

All events that happen on the server will now also be sent to the browser. This turns any browser running the UI into a fully functioning slave instance of Home Assistant. This opens up new possibilities for Home Assistant components that live completely client-side.

+

Implementing EventSource was not without challenges. Here are some of the issues that had to be solved:

+

A connection can go stale in Chrome without any event handler being called. This happens when a device goes into standby. For computers this is rare but for phones this occurs quite often. This has been solved by sending a regular ping from the server. The frontend will assume the connection has gone stale when it hasn’t heard any communication for a while. Sending a ping will also help the server detect broken connections and clean them up.

+

Another issue that I encountered is that Safari and Firefox would not fire the open event when the connection has been opened but when the first message has been received. To work around this the server will now fire a ping when the connection gets opened.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html new file mode 100644 index 0000000000..c068aa72e2 --- /dev/null +++ b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html @@ -0,0 +1,208 @@ + + + + + + + + + Home Assistant moving to YAML - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant moving to YAML

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Home Assistant is now using YAML for it’s configuration file. YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

+

The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

+

The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

+

Users of Home Assistant should migrate as the old configuration format is deprecated.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html new file mode 100644 index 0000000000..d920c1d725 --- /dev/null +++ b/blog/2015/03/08/new-logo/index.html @@ -0,0 +1,211 @@ + + + + + + + + + New logo for Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

New logo for Home Assistant

+
+ + + Less than one minute reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+

It is well known that you are either a good programmer or a good designer. It’s rare you’ll meet someone that is both. That’s why it wasn’t surprising to anyone that the logo that I made was mediocre — at best. Luckily, Jeremy Geltman has come to the rescue and contributed a brand new logo for Home Assistant.

+

The new logo follows Googles material design spec. It uses the blue color that Home Assistant uses in the interface and it comes in two versions: a high detailed version (for homescreen icon etc) and a simple version (for favicon etc).

+

+ +The old logo, the new detailed logo and the new simple logo. +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html new file mode 100644 index 0000000000..6ecab95a26 --- /dev/null +++ b/blog/2015/03/11/release-notes/index.html @@ -0,0 +1,236 @@ + + + + + + + + + Release notes for March 11, 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Release notes for March 11, 2015

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It has only been a little over a week since Theodor introduced YAML support for Home Assistant but so much has already happened that it is time for a summary of recent changes. Before mentioning the highlights I want to thank andythigpen, jamespcole and theolind for numerous bug fixes, enhancements and new contributions. Thanks!

+

Monitor local resources.
+Theodor has contributed a new sensor platform to allow you to monitor disk usage, memory usage, CPU usage and running processes. This platform has superseded the process component which is now considered deprecated.

+
# Example configuration.yaml entry
+sensor:
+  - platform: systemmonitor
+    resources:
+      - type: disk_use_percent
+        arg: /home
+      - type: memory_free
+      - type: process
+        arg: kodi
+
+
+

Experimental Z-Wave support
+There is now experimental support for connecting Z-Wave networks using a Z-Wave USB stick. Right now it only integrates Z-Wave sensors into Home Assistant. Our goal is to get this tested by more people before adding support for other Z-Wave devices.

+

The new component is built on top of python-openzwave. This package is currently not distributed on PyPi so we’ve added a script scripts/build_python_openzwave to install it on your machine. Alternatively you can use the Docker image which is ready to go.

+

The development was done using an AEON Z-Wave USB stick and an AEON Z-Wave MultiSensor.

+
# Example configuration.yaml entry
+zwave:
+  usb_path: /dev/ttyUSB0
+
+
+

Voice control
+An initial version of voice control for Home Assistant has landed. The current implementation consists of two parts.

+

The first part is a component called conversation that exposes the service conversation/process. This service is capable of processing text and translating them into commands for devices. For now it will only support commands in the format of Turn <Friendly Name> <on/off>.

+

The second part is an upgrade to the frontend to use the speech-to-text in Chrome to allow users to speak commands. If you’re using Chrome, you can test this out in the demo.

+
# Example configuration.yaml entry
+conversation:
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html new file mode 100644 index 0000000000..aeee585d7f --- /dev/null +++ b/blog/2015/03/22/release-notes/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Release notes for March 22, 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Release notes for March 22, 2015

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

A new version of Home Assistant has just been pushed out. It contains bugfixes contributed by jamespcole, andythigpen, trainman419 and me. It also adds a bunch of great new features:

+

Script +Andythigpen has contributed a script component. This allows users to create a sequence of service calls and delays. Scripts can be started using the service script/turn_on and interrupted using the service script/turn_off. A separate page has been added to the frontend to see the status of your scripts.

+
# Example configuration.yaml entry
+script:
+  # Turns on the bedroom lights and then the living room lights 1 minute later
+  wakeup:
+    alias: Wake Up
+    sequence:
+      - alias: Bedroom lights on
+        execute_service: light.turn_on
+        service_data:
+          entity_id: group.bedroom
+      - delay:
+          # supports seconds, milliseconds, minutes, hours, etc.
+          minutes: 1
+      - alias: Living room lights on
+        execute_service: light.turn_on
+        service_data:
+          entity_id: group.living_room
+
+
+ +

Scene +I (Paulus) have contributed a scene component. A user can create scenes that capture the states you want certain entities to be. For example a scene can contain that light A should be turned on and light B should be bright red. Deactivating a scene will restore the previous state from before the scene was activated. Just like scripts, scenes have their own separate page to see which scenes are on.

+
# Example configuration.yaml entry
+scene:
+  - name: Romantic
+    entities:
+      light.tv_back_light: on
+      light.ceiling:
+        state: on
+        color: [0.33, 0.66]
+        brightness: 200
+
+
+

+SABnzbd + James Cole has contributed support to integrate SABnzbd. This will allow you to monitor your downloads from within Home Assistant and setup automation based on the information.

+
# Example configuration.yaml entry
+sensor:
+  - platform: sabnzbd
+    name: SAB
+    api_key: YOUR_API_KEY
+    # Example: http://192.168.1.32:8124/
+    base_url: YOUR_SABNZBD_BASE_URL
+    monitored_variables:
+        - type: 'current_status'
+        - type: 'speed'
+        - type: 'queue_size'
+        - type: 'queue_remaining'
+        - type: 'disk_size'
+        - type: 'disk_free'
+
+
+

+PushOver + James Cole has also contributed support for the PushOver service as a platform for the notify component. This allows components to send messages to the user using PushOver.

+
# Example configuration.yaml entry
+notify:
+    platform: pushover
+    # Get this by registering a new application on https://pushover.net
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    # Get this by logging into your account on https://pushover.net
+    user_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/04/25/release-notes/index.html b/blog/2015/04/25/release-notes/index.html new file mode 100644 index 0000000000..b9344b91bd --- /dev/null +++ b/blog/2015/04/25/release-notes/index.html @@ -0,0 +1,280 @@ + + + + + + + + + Release notes for April 25, 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Release notes for April 25, 2015

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s been a month since the latest update and a lot has happened again. Here a quick overview of the new things.

+

Line Charts +James has upgraded the history in the frontend to support line graphs. Line graphs will be shown for any entity that has a unit of measurement. The line graphs will also be shown in the more info card of an entity. See the demo for a live example.

+

+ +

+

ISY994 hub support + Ryan has contributed support to integrate the ISY994 hub by Universal Devices. This allows you to integrate your X10/Insteon sensors, switches and lights.

+

He has created an extensive getting started guide which can be found on the ISY994 component page.

+
# Example configuration.yaml entry
+isy994:
+
+
+

Logbook + I (Paulus) have added a logbook component. The logbook component provides a different perspective on the history of your house by showing all the changes that happened to your house in chronological order. See the demo for a live example. +

+
# Example configuration.yaml entry
+logbook:
+
+
+ +

Transmission support + James has also contributed support for integrating Transmission into Home Assistant.

+
# Example configuration.yaml entry
+sensor:
+  platform: transmission
+  name: Transmission
+  host: 192.168.1.26
+  port: 9091
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  monitored_variables:
+    - type: 'current_status'
+    - type: 'download_speed'
+    - type: 'upload_speed'
+
+
+

Modbus support +Kixam has contributed support for modbus, a serial communication protocol to control PLCs. It currently supports sensors and switches which can be controlled over serial, TCP and UDP connections.

+
# Example configuration.yaml entry
+modbus:
+  type: serial
+  method: rtu
+  port: /dev/ttyUSB0
+  baudrate: 9600
+  stopbits: 1
+  bytesize: 8
+  parity: N
+
+sensor:
+  platform: modbus
+  slave: 1
+  registers:
+    16:
+      name: My integer sensor
+        unit: C
+    24:
+      bits:
+        0:
+          name: My boolean sensor
+        2:
+          name: My other boolean sensor
+
+switch:
+  platform: modbus
+  slave: 1
+  registers:
+    24:
+      bits:
+        0:
+          name: My switch
+        2:
+          name: My other switch
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/05/09/utc-time-zone-awareness/index.html b/blog/2015/05/09/utc-time-zone-awareness/index.html new file mode 100644 index 0000000000..7b9eeffcd1 --- /dev/null +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -0,0 +1,224 @@ + + + + + + + + + UTC & Time zone awareness - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

UTC & Time zone awareness

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

I have recently merged code to refactor Home Assistant to use only UTC times internally. A much needed refactor. I’ve added some extra test coverage to time sensitive parts to ensure stability. The code has been live in the dev branch for the last 9 days and will be soon released to the master branch.

+

From now on all internal communication will be done in UTC: time changed events, datetime attributes of states, etc. To get the current time in UTC you can call homeassistant.util.dt.utcnow(). This is a timezone aware UTC datetime object. homeassistant.util.dt is a new util package with date helpers.

+

There is also such a thing as local time. Local time is based on the time zone that you have setup in your configuration.yaml. Local times should only be used for user facing information: logs, frontend and automation settings in configuration.yaml.

+

Setting up your time zone

+

Setting up a time zone happens in configuration.yaml. If you have no time zone setup, it will be auto detected using the existing detection code using freegeoip.net. You can find a list of compatible time zones on Wikipedia.

+
homeassistant:
+  time_zone: America/Los_Angeles
+
+
+

Compatibility

+

The changes to the code are mostly backwards compatible. The old hass.track_time_change and hass.track_point_in_time use now internally two new methods: hass.track_utc_time_change and hass.track_point_in_utc_time. The usage of the old methods have not changed and should be backwards compatible.

+

This refactor adds a new migration for the database adding a utc_offset column to events and states. This information is currently not used but can prove useful in the future when we start analyzing the historical data.

+

Backwards incompatible stuff

+

All built-in components have been upgraded. The following list is only for people that run custom components:

+
    +
  • hass.track_time_change and hass.track_point_in_time will now return a time zone aware datetime object. Python does not allow comparing a naive with an aware datetime object.
  • +
  • the sun attributes for rising and setting are now in UTC. The methods sun.next_rising(hass) and sun.next_setting(hass) are backwards compatible, just be careful if you used to read the raw attributes.
  • +
  • the API sends all times in UTC. If you use anything else besides the frontend to talk to HA, make sure it handles it differently.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html new file mode 100644 index 0000000000..c591edf0f1 --- /dev/null +++ b/blog/2015/05/14/release-notes/index.html @@ -0,0 +1,294 @@ + + + + + + + + + Release notes for May 14, 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Release notes for May 14, 2015

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Almost three busy weeks have past since the last release. We used this time to finally make the overhaul to use UTC as the internal date time format. We added a bunch of test coverage in the process to make sure the transition went smoothly. Pleas see the blog post about the UTC refactor for backwards incompatible changes.

+

This release includes a significant startup boost for the frontend and a fix for Wemo discovery after their latest firmware upgrade.

+

I would like to give a big shout out to our newest contributor fabaff for taking the time to improve the documentation.

+

+To update to the latest version, run scripts/update. Please report any issues on GitHub. +

+ +

Overwriting Entity Attributes +Before diving into the newly supported devices and services, I want to highlight an awesome configuration enhancement by rmkraus: overwriting entity attributes.

+

These new configuration settings allow you to overwrite entity state attributes. The main usage for this is being able to overwrite attributes that influence how an entity is shown in the interface.

+
# Example configuration.yaml entry
+homeassistant:
+  customize:
+    light.bowl:
+      # hides this entity from the interface
+      hidden: true
+    light.ceiling:
+      # Replaces the state badge with given picture
+      entity_picture: http://graph.facebook.com/schoutsen/picture
+
+
+

MySensors + Andythigpen and Theolind have added support for the MySensors platform to Home Assistant.

+
# Example configuration.yaml entry
+sensor:
+  platform: mysensors
+  port: /dev/ttyACM0
+
+
+

OpenWeatherMap + Fabaff has contributed support for OpenWeatherMap. This will allow you to integrate local meteorological data into Home Assistant.

+
# Example configuration.yaml entry
+sensor:
+  platform: openweathermap
+  api_key: YOUR_API_KEY
+  monitored_variables:
+    - type: 'weather'
+    - type: 'temperature'
+    - type: 'wind_speed'
+    - type: 'humidity'
+    - type: 'pressure'
+    - type: 'clouds'
+    - type: 'rain'
+    - type: 'snow'
+
+
+

InstaPush + Fabaff has contributed support for InstaPush. This will allow you send messages from Home Assistant to your iOS and Android devices.

+
# Example configuration.yaml entry
+notify:
+    platform: instapush
+    # Get those by creating a new application, event, and tracker on https://instapush.im
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    app_secret: ABCDEFGHJKLMNOPQRSTUVXYZ
+    event: ABCDEFGHJKLMNOPQRSTUVXYZ
+    tracker: ABCDEFGHJKLMNOPQRSTUVXYZ
+
+
+

XMPP + Fabaff has contributed support for Jabber/XMPP. This will allow you send messages from Home Assistant to anyone on Jabber/XMPP.

+
# Example configuration.yaml entry
+notify:
+    platform: xmpp
+    sender: YOUR_JID
+    password: YOUR_JABBER_ACCOUNT_PASSWORD
+    recipient: YOUR_RECIPIENT
+
+
+

Notify My Android + Fabaff has contributed support for Notify My Android. This will allow you to send messages from Home Assistant to your Android device.

+
# Example configuration.yaml entry
+notify:
+    platform: nma
+    # Get this by registering a new application on http://www.notifymyandroid.com/
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+
+
+

Time & Date sensor +Fabaff has contributed a time & date sensor. This will allow you to show the current time/date on the dashboard.

+
# Example configuration.yaml entry
+sensor:
+  platform: time_date
+  monitored_variables:
+    - type: 'time'
+    - type: 'date'
+    - type: 'date_time'
+    - type: 'time_date'
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html new file mode 100644 index 0000000000..f8ff842f14 --- /dev/null +++ b/blog/2015/06/10/release-notes/index.html @@ -0,0 +1,340 @@ + + + + + + + + + Release notes for June 10, 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Release notes for June 10, 2015

+
+ + + five minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Wow, almost a month has gone by since the last release and this release is packed. The biggest part of this release is probably one that you won’t notice: the frontend has been upgraded from Polymer 0.5 to the brand new released Polymer 1.0. Polymer has been declared stable by the Google overlords which will allow us to expand functionality that was waiting for this moment to arrive.

+

This release sets a record for the amount of people involved: 8! Andythigpen, Jamespcole, Azelphur, Fabaff, Dutchy-, Fbradyirl, wind-rider and ettisan, thanks a lot for your contributions!

+

A big improvement has been brought this release by wind-rider. He took the time to revive the Chromecast support and started improving the media player integration. This triggered other people to join in resulting in a revamped media player experience and support for the Music Player Daemon.

+

+ Example of the new media player cards +

+

+To update to the latest version, run scripts/update. Please report any issues on GitHub. +

+ +

Before jumping into the newly supported platforms, here are the other improvements that are landing this release:

+
    +
  • Fronted upgraded to Polymer 1.0 by @balloob
  • +
  • Include other YAML files using the !include keyword by @andythigpen
  • +
  • Switch support and bug fixes for Vera platform by @jamespcole
  • +
  • HTTP session support for the HTTP component by @jamespcole
  • +
  • Device tracker bugfixes by @Dutchy-
  • +
  • Bugfix for device tracker platform by @fbradyirl
  • +
  • Fixing Chromecast support by @wind-rider
  • +
  • Media player improvements by @balloob and @wind-rider
  • +
  • Nest thermostat bugfixes by @balloob
  • +
  • Fix the device tracker getting in a deadlock by @balloob
  • +
  • Update documentation by @fabaff
  • +
+

Music Player Daemon + Fabaff has contributed MusicPlayerDaemon support. The mpd platform allows you to control a Music Player Daemon from Home Assistant. Right now, only playback is supported and not playlist manipulation.

+
# Example configuration.yaml entry
+media_player:
+  platform: mpd
+  server: 127.0.0.1
+  port: 6600
+  location: bedroom
+
+
+

Command line switch +A switch platform that issues specific commands when it is turned on and off. This might very well become our most popular platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

+
# Example configuration.yaml entry
+switch:
+  platform: command_switch
+  switches:
+    - kitchen_light:
+        oncmd: switch_command on kitchen
+        offcmd: switch_command off kitchen
+
+
+

LimitlessLED +This new platform can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight or iLight.

+
# Example configuration.yaml entry
+light:
+  platform: limitlessled
+  host: 192.168.1.10
+  group_1_name: Living Room
+  group_2_name: Bedroom
+  group_3_name: Office
+  group_4_name: Kitchen
+
+
+

Bitcoin sensor + The bitcoin platform displays various details about the Bitcoin network. If you have an online wallet from Blockchain.info the sensor is capable to show your current balance.

+
# Example configuration.yaml entry
+sensor:
+  platform: bitcoin
+  wallet: 'YOUR WALLET_ID'
+  password: YOUR_ACCOUNT_PASSWORD
+  currency: YOUR CURRENCY
+  display_options:
+    - exchangerate
+    - trade_volume_btc
+    - miners_revenue_usd
+    - btc_mined
+    - trade_volume_usd
+    - difficulty
+    - minutes_between_blocks
+    - number_of_transactions
+    - hash_rate
+    - timestamp
+    - mined_blocks
+    - blocks_size
+    - total_fees_btc
+    - total_btc_sent
+    - estimated_btc_sent
+    - total_btc
+    - total_blocks
+    - next_retarget
+    - estimated_transaction_volume_usd
+    - miners_revenue_btc
+    - market_price_usd
+
+
+

SMTP notificatoin platform + The smtp platform allows you to deliver notifications from Home Assistant to an e-mail recipient.

+
# Example configuration.yaml entry
+notify:
+  platform: mail
+  server: MAIL_SERVER
+  port: YOUR_SMTP_PORT
+  sender: SENDER_EMAIL_ADDRESS
+  starttls: 1 or 0
+  username: YOUR_SMTP_USERNAME
+  password: YOUR_SMTP_PASSWORD
+  recipient: YOUR_RECIPIENT
+
+
+

Syslog notification platform +The syslog platform allows you to deliver notifications from Home Assistant to the local syslog.

+
# Example configuration.yaml entry
+notify:
+  platform: syslog
+
+
+

Swiss Public transport sensor +The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland. See the component page for more information how to set it up.

+

Transmission turtle mode switch + The transmission platform allows you to control your Transmission client from within Home Assistant. The platform enables you switch to your ‘Alternative Speed Limits’ (aka ‘Turtle mode’) setting.

+
# Example configuration.yaml entry
+switch:
+  platform: transmission
+  name: Transmission
+  host: 192.168.1.26
+  port: 9091
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Hikvision camera motion detection support +This switch platform allows you to control your motion detection setting on your Hikvision camera.

+
# Example configuration.yaml entry
+switch:
+    platform: hikvisioncam
+    name: Hikvision Cam 1 Motion Detection
+    host: 192.168.1.26
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html new file mode 100644 index 0000000000..ad2863e41b --- /dev/null +++ b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html @@ -0,0 +1,304 @@ + + + + + + + + + IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported

+
+ + + four minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Another month has passed and some great new features have landed in Home Assistant. This month release has been made possible by balloob, ettisan, fabaff, gyran, jamespcole, michaelarnauts, miniconfig and rmkraus.

+

This release includes some architectural changes by me. The first is that the frontend is now based on a NuclearJS 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.

+

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.

+
# Example configuration.yaml entry
+camera:
+  platform: generic
+  name: my sample camera
+  username: MY_USERNAME
+  password: MY_PASSWORD
+  still_image_url: http://194.218.96.92/jpg/image.jpg
+
+
+

+To update to the latest version, run scripts/update. Please report any issues on GitHub. +

+ +

Arduino + Fabian has contributed support for interfacing with Arduinos. This makes it possible to connect your Arduino via USB and expose pins as sensor data and write to pins via switches. Have a look at the docs for an extensive guide to get started.

+
# Example configuration.yaml entry
+switch:
+  platform: arduino
+  pins:
+    11:
+      name: Fan Office
+      type: digital
+    12:
+      name: Light Desk
+      type: digital
+
+sensor:
+  platform: arduino
+  pins:
+    1:
+      name: Door switch
+      type: analog
+    0:
+      name: Brightness
+      type: analog
+
+
+

Kodi (XBMC) + Ettisan has contributed a Kodi (XBMC) platform for the media player component. This allows you to track all the media that you are playing and allow you to control it.

+
# Example configuration.yaml entry
+media_player:
+  platform: kodi
+  name: Kodi
+  url: http://192.168.0.123/jsonrpc
+  user: kodi
+  password: my_secure_password
+
+
+

TP-Link + Michael has added TP-Link support to the device tracker. This allows you to now detect presence if you have a TP-Link router.

+
# Example configuration.yaml entry
+device_tracker:
+  platform: tplink
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+
+

Efergy energy monitor + Miniconfig has contributed support for the Efergy energy meters. To get an app token, log in to your efergy account, go to the Settings page, click on App tokens, and click “Add token”.

+
# Example configuration.yaml entry
+sensor:
+  platform: efergy
+  app_token: APP_TOKEN
+  utc_offset: UTC_OFFSET
+  monitored_variables:
+    - type: instant_readings
+    - type: budget
+    - type: cost
+      period: day
+      currency: $
+
+
+

Forecast.io +Fabian has added support for Forecast.io to get weather forecasts for Home Assistant. You need an API key which is free but requires a registration. To add Forecast.io to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: forecast
+  api_key: YOUR_APP_KEY
+  monitored_conditions:
+    - summary
+    - precip_type
+    - precip_intensity
+    - temperature
+    - dew_point
+    - wind_speed
+    - wind_bearing
+    - cloud_cover
+    - humidity
+    - pressure
+    - visibility
+    - ozone
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html new file mode 100644 index 0000000000..ad0ff3fc83 --- /dev/null +++ b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html @@ -0,0 +1,287 @@ + + + + + + + + + MQTT, Rasperry Pi, Logitech Squeezebox and ASUSWRT routers now supported - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

MQTT, Rasperry Pi, Logitech Squeezebox and ASUSWRT routers now supported

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documenting all the various components.

+

MQTT Support + The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+
+ +

Raspberry Pi GPIO Support + @gbarba has contributed support to use the general purpose input and output pins on a Raspberry Pi as switches inside Home Assistant.

+
# Example configuration.yaml entry
+switch:
+  platform: rpi_gpio
+  ports:
+    11: Fan Office
+    12: Light Desk
+
+
+

ASUSWRT based routers + @persandstrom has contributed support to do prescence detection using ASUSWRT based routers.

+
# Example configuration.yaml entry
+device_tracker:
+  platform: asuswrt
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+
+

Logitech Squeezebox media player support + @persandstrom also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant.

+
# Example configuration.yaml entry
+media_player:
+  platform: squeezebox
+  host: 192.168.1.21
+  port: 9090
+  username: user
+  password: password
+
+
+

Slack notification support + @jamespcole has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel.

+
# Example configuration.yaml entry
+notify:
+  platform: slack
+  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+  default_channel: '#general'
+
+
+

Edimax Smart Switches support + @rkabadi has contributed support for integrating Edimax Smart Switches into Home Assistant.

+
# Example configuration.yaml entry
+switch:
+  platform: edimax
+  host: 192.168.1.32
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  name: Edimax Smart Plug
+
+
+

RFXtrx sensor support +@danielhiversen has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz.

+
# Example configuration.yaml entry
+sensor:
+  - platform: rfxtrx
+    device: PATH_TO_DEVICE
+
+
+

The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0

+

TEMPer temperature sensor support +Support for Temper temperature sensors has been contributed by @rkabadi.

+
# Example configuration.yaml entry
+sensor:
+  platform: temper
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html b/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html new file mode 100644 index 0000000000..5765a30d51 --- /dev/null +++ b/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Verisure devices and modern TP-Link routers now supported - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Verisure devices and modern TP-Link routers now supported

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running git pull from the Home Assistant directory.

+

This release is a major milestone in our test coverage as we’ve crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded.

+

As we didn’t want to just push out bug fixes, this release includes a few additions:

+
    +
  • Support for modern TP-Link routers like the ArcherC9 line has been contributed by @chrisvis.
  • +
  • Improved support for MQTT topic subscriptions has been contributed by @qrtn
  • +
+

Verisure Support + Home Assistant support to integrate your Verisure alarms, hygrometers, sensors and thermometers has been contributed by @persandstrom.

+
# Example configuration.yaml entry
+verisure:
+  username: user@example.com
+  password: password
+  alarm: 1
+  hygrometers: 0
+  smartplugs: 1
+  thermometers: 0
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html new file mode 100644 index 0000000000..981e7a1962 --- /dev/null +++ b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html @@ -0,0 +1,324 @@ + + + + + + + + + Laundry Automation: insight and notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Laundry Automation: insight and notifications

+
+ + + five minutes reading time + + +
    +
  • User-Stories
  • +
+
+ Comments +
+
+

This is a guest post by Home Assistant user and contributor Nolan Gilley.

+

In our house, laundry has been a struggle for quite some time. Our washer and dryer both lack a buzzer which leads to forgotten laundry, and stinky mess that needs to be rewashed. I decided to create a solution by monitoring the washer and dryer myself with some cheap electronics.

+

As an avid user of Home Assistant, I decided it would be the perfect application to manage the UI and notification system. Now all I needed was a way to monitor the washer and dryer. I tried using sound sensors but found them unreliable. I ended up opting for an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect if the doors are open or closed. I connected the accelerometers and reed switches to a Moteino, an arduino clone with an RF transceiver. The Moteino can perform the logic to figure out which state the appliances are in and wirelessly communicate that data with another Moteino that is connected via serial to my Raspberry Pi. The Raspberry Pi reads the serial data and repeats it over MQTT for Home Assistant to use. This is great because I don’t have to run Home Assistant on the Raspberry Pi. I can run it on a faster machine and point the MQTT component to my Raspberry Pi.

+

After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn’t get tripped by the washer or vice versa. In the plot below you can see the acceleration in the x direction for the accelerometer connected to the washing machine. It’s easy to see when the washing machine is in operation here. I used the same technique for the dryer’s accelerometer.

+

+ + + + Graph showing the accelerometer data +

+ +

Next it was just a matter of integrating everything with Home Assistant. I was able to use the MQTT component to read the washer and dryer states from the Moteino and display it in Home Assistant.

+

+ + Status of the dryer and washer in Home Assistant +

+

Next I wrote scripts that are run whenever the washer or dryer completes a load. This is triggered by the automation component. When the laundry is complete I have the lights in the house turn red and notify me via PushBullet. Once the laundry is taken care of another script runs that sets the lights back to normal. So far it has been very helpful and very reliable.

+

+ + + + Top left: reed switch. Bottom left: moteino. Right: Accelerometer. +

+

Materials used:

+ +

Sketch for the Moteino is available here.

+

Home Assistant Configuration:

+

+The automation and script syntax here is using a deprecated and no longer supported format. +

+
mqtt:
+  broker: 192.168.1.100
+  port: 1883
+  keepalive: 60
+  qos: 0
+
+sensor:
+  platform: mqtt
+  name: "Dryer Status"
+  state_topic: "sensor/dryer"
+  unit_of_measurement: ""
+
+sensor 2:
+  platform: mqtt
+  name: "Washer Status"
+  state_topic: "sensor/washer"
+  unit_of_measurement: ""
+
+automation:
+  alias: Dryer complete
+
+  platform: state
+  state_entity_id: sensor.dryer_status
+  state_from: 'Running'
+  state_to: 'Complete'
+
+  execute_service: script.turn_on
+  service_entity_id: script.dryer_complete
+
+automation 2:
+  alias: Dryer emptied
+
+  platform: state
+  state_entity_id: sensor.dryer_status
+  state_from: 'Complete'
+  state_to: 'Empty'
+
+  execute_service: script.turn_on
+  service_entity_id: script.dryer_cleared
+
+script:
+  dryer_complete:
+    alias: Dryer Complete Script
+    sequence:
+      - alias: Pushbullet Notification
+        execute_service: notify.notify
+        service_data:
+          message: "The dryer has finished its cycle, please empty it!"
+      - alias: Living Room Lights Red
+        execute_service: scene.turn_on
+        service_data:
+          entity_id: scene.red
+      - delay:
+          seconds: 1
+      - alias: Living Room Lights Off
+        execute_service: light.turn_off
+        service_data:
+          entity_id: group.living_room
+      - delay:
+          seconds: 1
+      - alias: Living Room Lights Red
+        execute_service: scene.turn_on
+        service_data:
+          entity_id: scene.red
+
+  dryer_cleared:
+    alias: Dryer Cleared Script
+    sequence:
+      - alias: Living Room Lights Off
+        execute_service: light.turn_off
+        service_data:
+          entity_id: group.living_room
+      - delay:
+          seconds: 1
+      - alias: Living Room Lights Normal
+        execute_service: scene.turn_on
+        service_data:
+          entity_id: scene.normal
+
+
+

Resources used:

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html new file mode 100644 index 0000000000..56cd3e5f42 --- /dev/null +++ b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html @@ -0,0 +1,285 @@ + + + + + + + + + 0.7: Better UI and improved distribution - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.7: Better UI and improved distribution

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

As Home Assistant is gaining more and more users we started to feel the pain from not having a proper release mechanism. We had no version numbering and required users to checkout the source using Git to get started. On top of that, as the number of devices that we support keeps raising, so did the number of dependencies that are used. That’s why we decided to change the way we roll. From now on:

+
    +
  • Each release will have a version number, starting with version 0.7. This was chosen because it shows that we have been around for some time but are not considering ourselves to be fully stable.
  • +
  • Each release will be pushed to PyPi. This will be the only supported method of distribution.
  • +
  • Home Assistant is available after installation as a command-line utility hass.
  • +
  • The default configuration location has been moved from config in the current working directory to ~/.homeassistant (%APPDATA%/.homeassistant on Windows).
  • +
  • Requirements for components and platforms are no longer installed into the current Python environment (being virtual or not) but will be installed in <config-dir>/lib.
  • +
+

A huge shout out to Ryan Kraus for making this all possible. Please make sure you read the full blog post for details on how to migrate your existing setup.

+

And while Ryan was fixing distribution, I have been hard at work in giving Home Assistant a face lift. We already looked pretty good but lacked proper form of organization for users with many devices. The new UI moves away from a card per entity and has cards per group and domain instead. The demo has been updated so give it a spin.

+

+ + + + Screenshots of the new UI +

+ +

Migration to version 0.7

+

For this example, let’s say we have an old Home Assistant installation in /home/paulus/home-assistant.

+

If you want to migrate your existing configuration to be used as the default configuration:

+
$ cp -r /home/paulus/home-assistant ~/.homeassistant
+
+
+

It If you want to have the configuration in a different location, for example /home/paulus/home-assistant-config, you will have to point Home Assistant at this configuration folder when launching:

+
$ hass --config /home/paulus/home-assistant-config
+
+
+

New platforms

+

And last, but not least: new platforms!

+

MQTT Sensors and Switches + @sfam has blessed us with two more MQTT platforms to extend our integration with MQTTT: sensor and switch. Both platforms require the MQTT component to be connected to a broker.

+
# Example configuration.yml entr
+sensor:
+  platform: mqtt
+  name: "MQTT Sensor"
+  state_topic: "home/bedroom/temperature"
+  unit_of_measurement: "ºC"
+
+switch:
+  platform: mqtt
+  name: "Bedroom Switch"
+  state_topic: "home/bedroom/switch1"
+  command_topic: "home/bedroom/switch1/set"
+  payload_on: "ON"
+  payload_off: "OFF"
+  optimistic: false
+
+
+

Actiontec MI424WR Verizon FIOS Wireless router + Nolan has contributed support for Actiontec wireless routers.

+
# Example configuration.yaml entry
+device_tracker:
+  platform: actiontec
+  host: YOUR_ROUTER_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+
+

DHT temperature and humidty sensors +@MakeMeASandwich has contributed support for DHT temperature and humidity sensors. It allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device.

+
# Example configuration.yaml entry
+sensor:
+  platform: dht
+  sensor: DHT22
+  pin: 23
+  monitored_conditions:
+    - temperature
+    - humidity
+
+
+

Aruba device tracker +Michael Arnauts has contributed support for Aruba wireless routers for presence detection.

+
# Example configuration.yaml entry
+device_tracker:
+  platform: aruba
+  host: YOUR_ACCESS_POINT_IP
+  username: YOUR_ADMIN_USERNAME
+  password: YOUR_ADMIN_PASSWORD
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html new file mode 100644 index 0000000000..21bdd1d088 --- /dev/null +++ b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html @@ -0,0 +1,362 @@ + + + + + + + + + Using MQTT with Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Using MQTT with Home Assistant

+
+ + + eight minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
+
+ Comments +
+
+

MQTT support was added to Home Assistant recently. The MQTT component will enable you to do all sort of things. Most likely you will use it to communicate with your devices. But Home Assistant doesn’t care where the data is coming from or is limited to real hardware as long as there is MQTT support. This means that it doesn’t matter if the data is coming from a human, a web service, or a device.

+

A great example is shown in a Laundry Automation post in this blog.

+

This post will give you a small overview of some other possibilities on how to use MQTT with Home Assistant.

+ +

Manual usage

+

The simplest but not the coolest way as a human to interact with a Home Assistant sensor is launching a command manually. Let’s create a “Mood” sensor. For simplicity Home Assistant and the MQTT broker are both running on the same host. The needed configuration snipplets to add to the configuration.yaml file consists of two parts: one for the broker and one for the sensor.

+
mqtt:
+  broker: 127.0.0.1
+
+sensor:
+  - platform: mqtt
+    name: "Fabian's Mood"
+    state_topic: "home-assistant/fabian/mood"
+
+
+

After a restart of Home Assistant the “Mood” sensor will show up in the frontend. For more details about the configuration of MQTT itself and the sensor, please refer to the MQTT component or the MQTT sensor documentation.

+

Now we can set the mood. The commandline tool (mosquitto_pub) which is shipped with mosquitto is used to send an MQTT message.

+
$ mosquitto_pub  -h 127.0.0.1 -t "home-assistant/fabian/mood" -m "bad"
+
+
+

+ + The Mood sensor +

+

This is a really bad example. Don’t do this in the real world because you won’t be able to create diagrams of historical data. Better use a numerical value.

+

Python MQTT bindings

+

The last section was pretty boring, I know. Nobody wants to send MQTT messages by hand if there is a computer on the desk. If you are playing the lottery this section is for you. If not, read it anyway because the lottery is just an example :-).

+

This example is using the Paho MQTT Python binding because those binding should be available on the host where Home Assistant is running. If you want to use this example on another machine, please make sure that the bindings are installed (pip3 install paho-mqtt).

+

The first step is to add an additional MQTT sensor to the configuration.yaml file. The sensor will be called “Lottery” and the unit of measurement will be “No.”.

+
  - platform: mqtt
+    name: "Lottery"
+    state_topic: "home-assistant/lottery/number"
+    unit_of_measurement: "No."
+
+
+

Don’t forget to restart Home Assistant to make the configuration active.

+

To play, we need numbers from 1 to 49 which can be marked on the ticket. Those numbers should be random and displayed in the Home Assistant frontend. The Python script below is another simple example on how to send MQTT messages from the commandline; this time in a loop. For further information and examples please check the Paho MQTT documentation.

+
#!/usr/bin/python3
+#
+import time
+import random
+import paho.mqtt.client as mqtt
+import paho.mqtt.publish as publish
+
+broker = '127.0.0.1'
+state_topic = 'home-assistant/lottery/number'
+delay = 5
+
+# Send a single message to set the mood
+publish.single('home-assistant/fabian/mood', 'good', hostname=broker)
+
+# Send messages in a loop
+client = mqtt.Client("ha-client")
+client.connect(broker)
+client.loop_start()
+
+while True:
+    client.publish(state_topic, random.randrange(0, 50, 1))
+    time.sleep(delay)
+
+
+

Every 5 seconds a message with a new number is sent to the broker and picked up by Home Assistant. By the way, my mood is much better now.

+

+ + The Lottery sensor +

+

With only a few lines of Python and an MQTT broker you can create your own “smartdevice” or send information to Home Assistant which you haven’t think of. Of course this is not limited to Python. If there is an MQTT library available, the device can be used with Home Assistant now.

+

Arduino

+

To get started with real hardware that is capable to send MQTT messages, the Arduino platform is an inexpensive way to do it. In this section an Arduino UNO with an Ethernet shield and a photo resistor is used. The photo resistor is connected to analog pin 0 (A0) and has an output from 0 to 1024.

+

+ + The Arduino UNO with Ethernet shield and photo resistor +

+

The MQTT client for the Arduino needs to be available in your Arduino IDE. Below you will find a sketch which could act as a starting point. Please modify the IP addresses, the MAC address, and the pin as needed and upload the sketch to your Arduino.

+
/*
+  This sketch is based on the basic MQTT example by
+  http://knolleary.github.io/pubsubclient/
+*/
+
+#include <SPI.h>
+#include <Ethernet.h>
+#include <PubSubClient.h>
+
+#define DEBUG 1 // Debug output to serial console
+
+// Device settings
+IPAddress deviceIp(192, 168, 0, 43);
+byte deviceMac[] = { 0xAB, 0xCD, 0xFE, 0xFE, 0xFE, 0xFE };
+char* deviceId  = "sensor01"; // Name of the sensor
+char* stateTopic = "home-assistant/sensor01/brightness"; // MQTT topic where values are published
+int sensorPin = A0; // Pin to which the sensor is connected to
+char buf[4]; // Buffer to store the sensor value
+int updateInterval = 1000; // Interval in milliseconds
+
+// MQTT server settings
+IPAddress mqttServer(192, 168, 0, 12);
+int mqttPort = 1883;
+
+EthernetClient ethClient;
+PubSubClient client(ethClient);
+
+void reconnect() {
+  while (!client.connected()) {
+#if DEBUG
+    Serial.print("Attempting MQTT connection...");
+#endif
+    if (client.connect(deviceId)) {
+#if DEBUG
+      Serial.println("connected");
+#endif
+    } else {
+#if DEBUG
+      Serial.print("failed, rc=");
+      Serial.print(client.state());
+      Serial.println(" try again in 5 seconds");
+#endif
+      delay(5000);
+    }
+  }
+}
+
+void setup() {
+  Serial.begin(57600);
+  client.setServer(mqttServer, mqttPort);
+  Ethernet.begin(deviceMac, deviceIp);
+  delay(1500);
+}
+
+void loop() {
+  if (!client.connected()) {
+    reconnect();
+  }
+  client.loop();
+
+  int sensorValue = analogRead(sensorPin);
+#if DEBUG
+  Serial.print("Sensor value: ");
+  Serial.println(sensorValue);
+#endif
+  client.publish(stateTopic, itoa(sensorValue, buf, 10));
+  delay(updateInterval);
+}
+
+
+

The Arduino will send the value of the sensor every second. To use the data in Home Assistant, add an additional MQTT sensor to the configuration.yaml file.

+
  - platform: mqtt
+    name: "Brightness"
+    state_topic: "home-assistant/sensor01/brightness"
+    unit_of_measurement: "cd"
+
+
+

After a restart of Home Assistant the values of your Arduino will be available.

+

+ + The Brightness sensor +

+

I hope that this post could give you some ideas about the usage Home Assistant and MQTT. If you are working on a cool project that includes Home Assistant, please let us now.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/09/13/home-assistant-meets-ifttt/index.html b/blog/2015/09/13/home-assistant-meets-ifttt/index.html new file mode 100644 index 0000000000..80483e8527 --- /dev/null +++ b/blog/2015/09/13/home-assistant-meets-ifttt/index.html @@ -0,0 +1,352 @@ + + + + + + + + + Home Assistant meets IFTTT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant meets IFTTT

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
  • Release-Notes
  • +
+
+ Comments +
+
+

Today we announce the release of Home Assistant v0.7.2 which includes brand new support by @sfam to integrate with IFTTT. IFTTT stands for If This, Then That and is a webservice that integrates with almost every possible webservice out there. Adding Home Assistant to this mix means Home Assistant can connect with all via IFTTT.

+

It is now possible to disable your irregation system if it is going to be cloudy tomorrow or tweet if your smoke alarm goes off.

+

+ +

+

Head over to the setup instructions to get started with IFTTT. Click the read more button for some example recipes.

+ +

In each of the following examples, make sure to replace the XXX in the URL with your correct host address and API password.

+

Turn off irregation system when not needed

+

+ +

+

Maker channel setup:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldValue
URLhttp://xxx.xxx.xxx.xxx:8123/api/services/switch/turn_off?api_password=xxxxxxxx
METHODPOST
CONTENT TYPEapplication/json
BODY{ “entity_id”: “switch.irrigation” }
+

Tweet when important events happen

+

+ +

+

This will tweet a message when an MQTT message is received that the smoke alarm has been triggered. Setup Maker channel with event name HA_FIRE_ALARM and Twitter channel to tweet the message in value1.

+
# Configuration.yaml entry
+automation:
+- alias: Post a tweet when fire alarm is triggered
+  trigger:
+    platform: mqtt
+    mqtt_topic: home/alarm/fire
+    mqtt_payload: 'on'
+
+  action:
+    service: ifttt.trigger
+    data: {"event":"HA_FIRE_ALARM", "value1":"The fire alarm just triggered!"}
+
+
+

Turn on lights when I get home

+

+ +

+

Maker channel setup:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldValue
URLhttp://xxx.xxx.xxx.xxx:8123/api/services/light/turn_on?api_password=xxxxxxxx
METHODPOST
CONTENT TYPEapplication/json
BODY{ “entity_id”: “light.kitchen” }
+

Flash lights when a new PR comes in for Home Assistant

+

+ +

+

Maker channel setup:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldValue
URLhttp://xxx.xxx.xxx.xxx:8123/api/services/light/turn_on?api_password=xxxxxxxx
METHODPOST
CONTENT TYPEapplication/json
BODY{ “entity_id”: “group.all_lights”, “flash”:”yes” }
+

Fire events when pressing the DO button

+

+ +

+

Maker channel setup:

+ + + + + + + + + + + + + + + + + + + + + +
FieldValue
URLhttp://xxx.xxx.xxx.xxx:8123/api/events/do_button_pressed?api_password=xxxxxxxx
METHODPOST
CONTENT TYPEapplication/json
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html new file mode 100644 index 0000000000..2bd50e7a4c --- /dev/null +++ b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html @@ -0,0 +1,251 @@ + + + + + + + + + Remote Monitoring with Glances - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Remote Monitoring with Glances

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

+Inspired by a feature requests I started looking into the available options to do monitoring of remote hosts. The feature request is about displaying system information in a similar way than the systemmonitor sensor does it for the local system. After a while I started to think that it would be a nice addition for a small home network where no full-blown system monitoring setup is present.

+ +

The basic problem is to get the data from the remote host. Starting with psutil that is used by the systemmonitor sensor, a possible solution is only a click away and named Glances. Glances has a nice curses-based interface and a RESTful API.

+

The Glances sensor sensor uses that API to get all needed data.

+

In this post a default Fedora 22 Workstation installation is used on the host that should be monitored. In fact, it doesn’t matter if the system is the local one or a remote one as long as Glances is available. With some adjustments it should work on your own systems too. The difference will be the package and the firewall management tools.

+

First some extra packages are needed beside Glances, especially the bottle webserver. I guess that Glances is available for your distribution as well. Otherwise follow those instructions.

+
$ sudo dnf -y install glances python-bottle
+
+
+

On Fedora the Firewall settings are strict. Let’s open port 61208 to allow other hosts to connect to that port. This is not needed if you just want to observe your local machine.

+
$ sudo firewall-cmd --permanent --add-port=61208/tcp
+$ sudo firewall-cmd --reload
+
+
+

Launch glances and keep an eye on the output.

+
$ glances -w
+Glances web server started on http://0.0.0.0:61208/
+
+
+

Now browse to http://IP_ADRRESS:61208/. You should see the webified view of Glances.

+

+ + Glances web interface +

+

Another check is to access the API located at http://IP_ADRRESS:61208/api/2/mem/used and to confirm that a detail about your memory usage is provided as a JSON response. If so, you are good to proceed.

+
$ curl -X GET http://IP_ADDRESS:61208/api/2/mem/used
+{"used": 203943936}
+
+
+

Add the glances sensor entry to your configuration.yaml file and restart Home Assistant then.

+
# Example configuration.yaml entry
+  - platform: glances
+    name: NAS
+    host: IP_ADDRESS
+    resources:
+      - 'disk_use_percent'
+      - 'disk_use'
+      - 'disk_free'
+
+
+

If there are no error in the log file then you should see your new sensors.

+

+ + The Glances sensors +

+

Glances has a couple of optional dependencies which are extenting the range of provided information. This means that it would be possible to get details about the RAID system, HDD temperature, IP addresses, sensors, etc., please create a Pull request with your additions or a Feature request if you want see more details in your Home Assistant frontend.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html new file mode 100644 index 0000000000..c3f75b3fd5 --- /dev/null +++ b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html @@ -0,0 +1,247 @@ + + + + + + + + + Alarms, Sonos and iTunes now supported - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Alarms, Sonos and iTunes now supported

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s like someone opened a can of rock solid developers and emptied it above our chat channel because it exploded with great conversations and solid contributions. Featured in release 0.7.3: Sonos, iTunes, Alarm component and Automation upgrade.

+

See GitHub for more detailed release notes.

+

Migration note: the scheduler component has been removed in favor of the automation component.

+

Sonos + Sonos support has been added by @rhooper and @SEJeff. Home Assistant is now able to automatically detect Sonos devices in your network and set them up for you. It will allow you to control music playing on your Sonos and change the volume.

+

iTunes and airplay speakers + @maddox has contributed support for controlling iTunes and airplay speakers. For this to work you will have to run itunes-api on your Mac as middleware.

+
# Example configuration.yaml entry
+media_player:
+  platform: itunes
+  name: iTunes
+  host: http://192.168.1.50
+  port: 8181
+
+
+ +

Automation +Automation has gotten a lot of love. It now supports conditions, multiple triggers and new types of triggers. The best to get started with it is to head over to the new getting started with automation page.

+
# Example of entry in configuration.yaml
+automation:
+  alias: Light on in the evening
+  trigger:
+    - platform: sun
+      event: sunset
+      offset: "-01:00:00"
+    - platform: state
+      entity_id: group.all_devices
+      state: home
+  condition:
+    - platform: state
+      entity_id: group.all_devices
+      state: home
+    - platform: time
+      after: "16:00:00"
+      before: "23:00:00"
+  action:
+    service: homeassistant.turn_on
+    entity_id: group.living_room
+
+
+

Verisure Alarms + We now support arming and disarming your verisure alarm from within Home Assistant thanks to added support by @persandstrom.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html new file mode 100644 index 0000000000..2bad1dc4cb --- /dev/null +++ b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html @@ -0,0 +1,230 @@ + + + + + + + + + Home Assistant goes geo with OwnTracks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant goes geo with OwnTracks

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

A few weeks have past and it is time again for another release: version 0.7.4. This time we’re very glad to be able to introduce brand new integration with OwnTracks to allow tracking of people on a map. The geo support consists of three different parts:

+ +

We have added a new getting started section to get up and running.

+

+ +Map in Home Assistant showing two people and three zones (home, school, work) +

+

Ofcourse more things happened in the last three weeks. I’m moving away from my usual long post to a short summary of highlights:

+

+ +

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html new file mode 100644 index 0000000000..2bd1bc0ca9 --- /dev/null +++ b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Report the temperature with ESP8266 to MQTT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Report the temperature with ESP8266 to MQTT

+
+ + + seven minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
  • ESP8266
  • +
+
+ Comments +
+
+

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 Assistant can pick it up.

+

+ +Picture of the final setup (+ 2 LED for decoration) +

+

+ +Home Assistant will keep track of historical values and allow you to integrate it into automation. +

+ +

Components

+

I’ve been using Adafruit for my shopping:

+ +

Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires, soldering iron + wire, Serial USB cable.

+

Alternatives

+

Since this article has been published the HDC1008 has been discontinued. Updated sketches are available for the following alternatives:

+ +

Connections

+

On your breadboard, make the following connections from your ESP8266 to the HDC1008:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ESP8266HDC1008
GNDGND
3VVin
14SCL
#2SDA
+

I picked #2 and 14 myself, you can configure them in the sketch.

+

Preparing your IDE

+

Follow these instructions on how to install and prepare the Arduino IDE for ESP8266 development.

+

After you’re done installing, open the Arduino IDE, in the menu click on sketch -> include library -> manage libraries and install the following libraries:

+
    +
  • PubSubClient by Nick ‘O Leary
  • +
  • Adafruit HDC1000
  • +
+

Sketch

+

If you have followed the previous steps, you’re all set.

+
    +
  • Open Arduino IDE and create a new sketch (File -> New)
  • +
  • Copy and paste the below sketch to the Arduino IDE
  • +
  • Adjust the values line 6 - 14 to match your setup
  • +
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 62.
  • +
  • To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode.
  • +
  • Press the upload button in Arduino IDE
  • +
  • Open the serial monitor (Tools -> Serial Monitor) to see the output from your device
  • +
+

This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last reported value. Reports to the MQTT broker are sent with retain set to True. This means that anyone connecting to the MQTT topic will automatically be notified of the last reported value.

+
#include <ESP8266WiFi.h>
+#include <Wire.h>
+#include <PubSubClient.h>
+#include <Adafruit_HDC1000.h>
+
+#define wifi_ssid "YOUR WIFI SSID"
+#define wifi_password "WIFI PASSWORD"
+
+#define mqtt_server "YOUR_MQTT_SERVER_HOST"
+#define mqtt_user "your_username"
+#define mqtt_password "your_password"
+
+#define humidity_topic "sensor/humidity"
+#define temperature_topic "sensor/temperature"
+
+WiFiClient espClient;
+PubSubClient client(espClient);
+Adafruit_HDC1000 hdc = Adafruit_HDC1000();
+
+void setup() {
+  Serial.begin(115200);
+  setup_wifi();
+  client.setServer(mqtt_server, 1883);
+
+  // Set SDA and SDL ports
+  Wire.begin(2, 14);
+
+  // Start sensor
+  if (!hdc.begin()) {
+    Serial.println("Couldn't find sensor!");
+    while (1);
+  }
+}
+
+void setup_wifi() {
+  delay(10);
+  // We start by connecting to a WiFi network
+  Serial.println();
+  Serial.print("Connecting to ");
+  Serial.println(wifi_ssid);
+
+  WiFi.begin(wifi_ssid, wifi_password);
+
+  while (WiFi.status() != WL_CONNECTED) {
+    delay(500);
+    Serial.print(".");
+  }
+
+  Serial.println("");
+  Serial.println("WiFi connected");
+  Serial.println("IP address: ");
+  Serial.println(WiFi.localIP());
+}
+
+void reconnect() {
+  // Loop until we're reconnected
+  while (!client.connected()) {
+    Serial.print("Attempting MQTT connection...");
+    // Attempt to connect
+    // If you do not want to use a username and password, change next line to
+    // if (client.connect("ESP8266Client")) {
+    if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
+      Serial.println("connected");
+    } else {
+      Serial.print("failed, rc=");
+      Serial.print(client.state());
+      Serial.println(" try again in 5 seconds");
+      // Wait 5 seconds before retrying
+      delay(5000);
+    }
+  }
+}
+
+bool checkBound(float newValue, float prevValue, float maxDiff) {
+  return !isnan(newValue) &&
+         (newValue < prevValue - maxDiff || newValue > prevValue + maxDiff);
+}
+
+long lastMsg = 0;
+float temp = 0.0;
+float hum = 0.0;
+float diff = 1.0;
+
+void loop() {
+  if (!client.connected()) {
+    reconnect();
+  }
+  client.loop();
+
+  long now = millis();
+  if (now - lastMsg > 1000) {
+    lastMsg = now;
+
+    float newTemp = hdc.readTemperature();
+    float newHum = hdc.readHumidity();
+
+    if (checkBound(newTemp, temp, diff)) {
+      temp = newTemp;
+      Serial.print("New temperature:");
+      Serial.println(String(temp).c_str());
+      client.publish(temperature_topic, String(temp).c_str(), true);
+    }
+
+    if (checkBound(newHum, hum, diff)) {
+      hum = newHum;
+      Serial.print("New humidity:");
+      Serial.println(String(hum).c_str());
+      client.publish(humidity_topic, String(hum).c_str(), true);
+    }
+  }
+}
+
+
+

Configuring Home Assistant

+

The last step is to integrate the sensor values into Home Assistant. This can be done by setting up Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.

+
mqtt:
+  broker: YOUR_MQTT_SERVER_HOST
+  username: your_username
+  password: your_password
+
+sensor:
+  platform: mqtt
+  name: "Temperature"
+  state_topic: "sensor/temperature"
+  qos: 0
+  unit_of_measurement: "ºC"
+
+sensor 2:
+  platform: mqtt
+  name: "Humidity"
+  state_topic: "sensor/humidity"
+  qos: 0
+  unit_of_measurement: "%"
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html new file mode 100644 index 0000000000..3175fe1dcd --- /dev/null +++ b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html @@ -0,0 +1,220 @@ + + + + + + + + + 0.7.5: Blinkstick, SNMP, Telegram - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.7.5: Blinkstick, SNMP, Telegram

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

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

This release also includes some new platforms (because they keep coming!):

+

+ +

Also, the media player was extended by @maddox to support the play media command. This has been implemented for the iTunes platform.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html new file mode 100644 index 0000000000..632d5bbccb --- /dev/null +++ b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html @@ -0,0 +1,237 @@ + + + + + + + + + 0.7.6: Amazon FireTV, Radiotherm thermostats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.7.6: Amazon FireTV, Radiotherm thermostats

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been squashed, test coverage increased to 85% and thanks to the hard work by @fabaff and myself the component section on the website has gotten a complete revamp.

+

Changes

+

+ + +

Breaking changes

+

As part of this release we did some cleanup which introduced backwards incompatible changes:

+

Heat Control thermostat no longer includes scheduling features. +This feature has been removed completely. Use the automation component instead to control target temperature.

+

Config changed for calling a service from a script. +execute_service: has been replaced with service:. See component page for example. The old method will continue working for some time.

+

Scenes can no longer be turned off. +It is no longer possible to turn a scene off after it has been activated. The way it worked was unpredictable and causes a lot of confusion.

+

Downloader treats relative paths now relative to the config dir instead of the current working dir. +This makes more sense as most people run Home Assistant as a daemon

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html new file mode 100644 index 0000000000..78962ac1b4 --- /dev/null +++ b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html @@ -0,0 +1,235 @@ + + + + + + + + + 0.8: Honeywell Thermostats, Orvibo switches and Z-Wave switches and lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.8: Honeywell Thermostats, Orvibo switches and Z-Wave switches and lights

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

We have all been hard at work to get this latest release ready. One of the big highlights in this release is the introduction of an extended iconset to be used in the frontend (credits to @happyleavesaoc for idea and prototype). To get started with customizing, pick any icon from MaterialDesignIcons.com, prefix the name with mdi: and stick it into your customize section in configuration.yaml:

+
homeassistant:
+  customize:
+    switch.ac:
+      icon: 'mdi:air-conditioner'
+
+
+

Breaking changes

+
    +
  • Any existing zone icon will have to be replaced with one from MaterialDesignIcons.com.
  • +
  • LimitlessLED light services require colors to be specified in RGB instead of XY.
  • +
+

Changes

+

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/11/22/survey-november-2015/index.html b/blog/2015/11/22/survey-november-2015/index.html new file mode 100644 index 0000000000..3bea78cc06 --- /dev/null +++ b/blog/2015/11/22/survey-november-2015/index.html @@ -0,0 +1,262 @@ + + + + + + + + + Survey November 2015 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Survey November 2015

+
+ + + two minutes reading time + + +
    +
  • Survey
  • +
+
+ Comments +
+
+

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 and last week PyPI 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.

+ +

Thanks to Python, users are running Home Assistant on the most popular Linux distributions and other operating systems including OS X and Microsoft Windows. One quarter of the operating systems are unknown which leads to the assumption that it is possible to run Home Assistant on most of the available operation systems today. We hope that *BSD users have fun too. The Hardware platform of choice seems to be x86_64 and ARM.

+

Of course most users are running with the automation component otherwise it would make much sense to use Home Assistant. The sun component is used a lot too. We hope that this is not because this component is enabled by default.

+

The Alarm control panels and the camera component are both used by around one third of the participants of the survey. It’s safe to say that they cover a niche, but they will gain momentum when people discover how they can build alarm systems with Home Assistant.

+

Philips Hue is the “winner” in the light category closely followed by MQTT lights. Google Cast and Plex are the top media player platforms. Pushbullet is by far the most-used notification platform. If you followed the recent efforts to improve this platform it’s comprehensible.

+

It’s interesting to see that most of the sensor, switch, and thermostat platforms are used. A lot of people seem to be interested in the weather data provided by the Forecast sensor. The MQTT sensors and switches are deployed in almost 50% of all Home Assistant setups.

+

+ + Home Assistant releases +

+

+ + Operating systems +

+

+ + Hardware platforms +

+

+ + Components +

+

+ + Alarm Control Panels and Cameras +

+

+ + Device trackers +

+

+ + Lights +

+

+ + Media players +

+

+ + Notifications +

+

+ + Sensors +

+

+ + Switches +

+

+ + Thermostats +

+

The conclusion is that MQTT is popular in almost every section from Alarm Control Panel, presence detection with owntracks, sensors and switches, and now even for lights.

+

The interpretation of the data is up to you. Again, thanks for participating in this survey.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/05/community-highlights/index.html b/blog/2015/12/05/community-highlights/index.html new file mode 100644 index 0000000000..ff0cf1e838 --- /dev/null +++ b/blog/2015/12/05/community-highlights/index.html @@ -0,0 +1,213 @@ + + + + + + + + + Community Highlights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Community Highlights

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
  • Video
  • +
+
+ Comments +
+
+

From time to time we come along things that are worth sharing with fellow Home Assisters. Here a list of some cool stuff from last week:

+

First is the public beta of Let’s Encrypt. Let’s Encrypt is a new certificate authority that is free, automated and open. This means that it will now be very easy to secure your connection to Home Assistant while you are away from home. W1ll1am23 has written up a guide how to get started.

+

The next thing is a show-off of some of the cool stuff people do with Home Assistant. This is miniconfig talking to Home Assistant using the Amazon Echo!

+
+ +
+

And last but not least, Midwestern Mac did a microSD card performance comparison for the Raspberry Pi. If you’re using a Pi, make sure to check it out!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html new file mode 100644 index 0000000000..0fe0572795 --- /dev/null +++ b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html @@ -0,0 +1,221 @@ + + + + + + + + + 0.9: Rollershutters, locks, binary sensors and InfluxDB - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.9: Rollershutters, locks, binary sensors and InfluxDB

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s been a few weeks but we managed to polish a nice new release of Home Assistant for y’all!

+

+ +

To update, run pip3 install --upgrade homeassistant.

+

+ +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/07/influxdb-and-grafana/index.html b/blog/2015/12/07/influxdb-and-grafana/index.html new file mode 100644 index 0000000000..6e74fbf11f --- /dev/null +++ b/blog/2015/12/07/influxdb-and-grafana/index.html @@ -0,0 +1,275 @@ + + + + + + + + + InfluxDB and Grafana - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

InfluxDB and Grafana

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

+The InfluxDB 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 database.

+ +

The first step is to install the InfluxDB packages. If you are not running Fedora, check the installation section for further details.

+
$ sudo dnf -y install http://influxdb.s3.amazonaws.com/influxdb-0.9.5.1-1.x86_64.rpm
+
+
+

Launch the InfluxDB service.

+
$ sudo systemctl start influxdb
+
+
+

If everything went well, then the web interface of the database should be accessible at http://localhost:8083/. Create a database home_assistant to use with Home Assistant either with the web interface or the commandline tool influx.

+

+ + InfluxDB web frontend +

+
$ influx
+Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
+Connected to http://localhost:8086 version 0.9.5.1
+InfluxDB shell 0.9.5.1
+> CREATE DATABASE home_assistant
+
+
+

An optional step is to create a user. Keep in mind to adjust the configuration (add username and password) in the next step if you prefer to go this way.

+
> CREATE USER "home-assistant" WITH PASSWORD 'password'
+
+
+

To use the influxdb component in your installation, add the following to your configuration.yaml file:

+
influxdb:
+  host: 127.0.0.1
+
+
+

After you restart Home Assistant you should see that the InfluxDB database gets filled. The language to query the database is similar to SQL.

+
$ influx
+[...]
+> USE home_assistant
+Using database home_assistant
+> SELECT * FROM binary_sensor
+name: binary_sensor
+-------------------
+time			domain		entity_id	value
+1449496577000000000	binary_sensor	bathroom_door	0
+1449496577000000000	binary_sensor	bathroom_window	0
+1449496577000000000	binary_sensor	basement_door	0
+1449496577000000000	binary_sensor	basement_window	0
+1449496684000000000	binary_sensor	bathroom_window	1
+[...]
+
+
+

Grafana is a dashboard that can create graphs from different sources including InfluxDB. The installation is simple, and there are detailed steps for many different configurations on the Grafana installation page. For a recent system that is running Fedora:

+
$ sudo dnf -y install https://grafanarel.s3.amazonaws.com/builds/grafana-2.5.0-1.x86_64.rpm
+
+
+

Start the grafana server.

+
$ sudo systemctl daemon-reload
+$ sudo systemctl start grafana-server
+$ sudo systemctl status grafana-server
+
+
+

Login with the username admin and the password admin at http://localhost:3000/login. Now follow the InfluxDB setup instructions.

+

Now you can start to create dashboards and graphs. You have various options to get the data from the graph. The next image just shows a screenshot of the setting for a temperature sensor.

+

+ + Grafana settings +

+

If the graph is not showing up in the dashboard you need to adjust the time range in the right upper corner. The graph is created for all state changes recorded by Home Assistant.

+

+ + Grafana Temperature graph +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html new file mode 100644 index 0000000000..e9ec5bb2ef --- /dev/null +++ b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html @@ -0,0 +1,242 @@ + + + + + + + + + Activating Tasker tasks from Home Assistant using command line switches - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Activating Tasker tasks from Home Assistant using command line switches

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

+In this tutorial I will explain how you can activate Tasker tasks from Home Assistant command line switches. We are going to set up a switch that when toggled will make your Android device say either “On” or “Off”.

+

You could also do this with the automation component instead so whenever you put your house to sleep mode for example your Android device will open up Google Play Books or the Kindle app ready for you to read as well as dimming your lights, but this tutorial is all about the switches.

+ +

AutoRemote URL

+

First things first you should install Tasker and AutoRemote onto your Android device and launch AutoRemote. You should see a URL above the QR code, visit it in your browser and it should bring up a page a bit like this.

+

+ +

+

Now type in SayOn in the Message box and you should see a box appear on the right with a URL in it, this is what we will be using in the Python script later on so save that for later. Do the same thing again but this time replace SayOn with SayOff. Now just click the Send message now! button to test that your commands will get sent to your Android device, if they do you will see a toast message at the bottom of your screen like this one.

+

+ +

+

Tasker Setup

+

Open up Tasker and make sure you’re in the PROFILES tab, then select the plus icon to create a new profile. Select Event -> Plugin -> AutoRemote -> AutoRemote and then the pencil icon to configure the AutoRemote event. Select Message Filter and enter in SayOn then go back until it asks you for a task. Select New task then just leave the next field blank and select the tick icon. +This is where we’ll configure our task, so select the plus icon to select an action. Select Alert -> Say to add a Say action. Enter On in the text field and go back to test your task, make sure your media volume is up then select the play icon, you should hear your device say “On”.

+

+ +

+

Now you can go back to the main Tasker screen and create another profile but this time replace SayOn with SayOff and On with Off. After you’ve done that go to the main screen again and select the menu button at the top then Exit and Save first to make sure everything is saved properly.

+

Python Script

+

Now it’s time to set it up the script, so create a new Python script and name it On.py then enter this code:

+
import requests
+requests.get('[URL]')
+
+
+

Enter in your “On” URL then save it. Create another script but this time call it Off.py and enter your “off” URL instead.

+

Home Assistant Configuration

+

Add a command line switch to your Home Assistant configuration:

+
switch:
+  platform: command_switch
+  switches:
+    tasker_say:
+      oncmd: python "[LocationOfOnScript]"
+      offcmd: python "[LocationOfOffScript]"
+
+
+

Now load up Home Assistant and whenever you toggle the switch you created your Android device will respond with either “On” or “Off”. :-)

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html b/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html new file mode 100644 index 0000000000..5e31878fb1 --- /dev/null +++ b/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html @@ -0,0 +1,228 @@ + + + + + + + + + [Update: decision reversed!] Philips Hue blocks 3rd party lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

[Update: decision reversed!] Philips Hue blocks 3rd party lights

+
+ + + 1 minute reading time + + +
    +
  • Public-Service-Announcement
  • +
+
+ Comments +
+
+

Update Dec 16: Great news! Philips has decided to reverse their decision and is working on a software update to allow 3rd party light bulbs again.

+

+ +Philips Hue FAQ entries regarding reversing the decision. +

+

Original post:

+ +

Philips Hue was one of the first to get smart lights accepted by the mainstream. Their Zigbee-based hub is rock solid, never crashes, great API and worked with other Zigbee light bulbs too. They are a bit expensive but the platform was worth every penny, till now.

+

Yesterday a thread on /r/homeautomation published that Philips Hue now blocks all but their own bulbs and those of “friends of Hue”. I have been able to confirm this in the Philips Hue FAQ (Update Dec 14: they have removed the entries - mirror here):

+

+ +Philips Hue FAQ entries regarding 3rd party light bulbs. +

+

This means that after you update your Hue bridge to the latest version:

+
    +
  • As of now, you can still use your existing paired 3rd party light bulbs
  • +
  • You cannot pair new 3rd party light bulbs
  • +
  • You’re out of luck if for some reason you have to pair existing 3rd party light bulbs again
  • +
  • Resetting your hub will force pairing of all your bulbs again
  • +
+

If you own a Philips Hue hub and are using 3rd party light bulbs, make sure you do not upgrade your hub if you want to be able to pair new 3rd party lightbulbs. But do realize that you are sitting on a ticking time bomb.

+

I have read, but have been unable to confirm it, that resetting your hub will force a software upgrade. So beware of that too.

+

I will no longer suggest people to buy into the Philips Hue ecosystem.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html new file mode 100644 index 0000000000..4fe0fb4c50 --- /dev/null +++ b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html @@ -0,0 +1,270 @@ + + + + + + + + + Set up encryption using Let's Encrypt - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Set up encryption using Let's Encrypt

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

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

+

+ +

+ +

Updated 2016-06-18

+

Requirements

+

The DuckDNS part of this tutorial has no requirements but there are a few requirements as of now to run the Let’s Encrypt client.

+
    +
  • Direct connection to the internet or admin access to your router to set up port forwarding.
  • +
  • A machine running a Unix-ish OS that include Python 2.6 or 2.7 (Docker can be used).
  • +
  • Root access, to write to default config, log and library directories and bind port 80.
  • +
+

+

DuckDNS

+

The first step is to set up DuckDNS. This is a free dynamic DNS service that you can use to get a DuckDNS.org subdomain to point at your house. A dynamic DNS service works by having your home computer tell DuckDNS.org every 5 minutes what its IP is so that DuckDNS can make sure your domain name is set up correctly.

+

For this example we will assume our domain is hass-example.duckdns.org.

+

First step is to acquire and set up our domain name. For this, go to DuckDNS, log in with any of the supported login providers and add a domain. After this check out their installation instructions to finish your installation of DuckDNS. If you’re on a Raspberry Pi, see ‘Pi’ in the category ‘Operating Systems’.

+

+

Let’s Encrypt

+

Let’s Encrypt is a free, automated, and open certificate authority (CA). We will use this to acquire a certificate that can be used to encrypted our connection with Home Assistant.

+

Let’s Encrypt will give you a free 90-day certificate if you pass their domain validation challenge. Domains are validated by having certain data be accessible on your domain for Let’s Encrypt (they describe it better themselves).

+

Assuming that your home is behind a router, the first thing to do is to set up port forwarding from your router to your computer that will run Let’s Encrypt. For the Let’s Encrypt set up we need to forward external port 80 to internal port 80 (http connections). This can be set up by accessing your router admin interface (Site with port forwarding instructions per router). This port forward must be active whenever you want to request a new certificate from Let’s Encrypt, typically every three months. If you normally don’t use or have an app that listens to port 80, it should be safe to leave the port open. This will make renewing certificates easier.

+

Now you’re ready to install and run the client that requests certificates from Let’s Encrypt. The following example will use the platform independent script to install and run the certbot client from Let’s Encrypt. If there is a certbot package for your OS, it’s recommended to install the package instead of the platform independent script. Read the docs for more information. There are also other clients that might offer more customization and options. See the client options page at Let’s Encrypt.

+
$ mkdir certbot
+$ cd certbot/
+$ wget https://dl.eff.org/certbot-auto
+$ chmod a+x certbot-auto
+$ ./certbot-auto certonly --standalone \
+                          --standalone-supported-challenges http-01 \
+                          --email your@email.address \
+                          -d hass-example.duckdns.org
+
+
+

If you’re using Docker, run the following command to generate the required keys:

+
sudo mkdir /etc/letsencrypt /var/lib/letsencrypt
+sudo docker run -it --rm -p 80:80 --name certbot \
+                -v "/etc/letsencrypt:/etc/letsencrypt" \
+                -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
+                quay.io/letsencrypt/letsencrypt:latest certonly \
+                --standalone --standalone-supported-challenges http-01 \
+                --email your@email.address -d hass-example.duckdns.org
+
+
+

With either method your certificate will be generated and put in the directory /etc/letsencrypt/live/hass-example.duckdns.org. As the lifetime is only 90 days, you will have to repeat this every 90 days. There’s a special command to simplify renewing certificates:

+
./certbot-auto renew --quiet --no-self-upgrade --standalone \
+                     --standalone-supported-challenges http-01
+
+
+

+

Home Assistant

+

Before updating the Home Assistant configuration, we have to forward port 443 (https connections) to port 8123 on the computer that will run Home Assistant. Do this in your router configuration as previously done for port 80.

+

The final step is to point Home Assistant at the generated certificates. Before you do this, make sure that the user running Home Assistant has read access to the folder that holds the certificates.

+
http:
+  api_password: YOUR_SECRET_PASSWORD
+  ssl_certificate: /etc/letsencrypt/live/hass-example.duckdns.org/fullchain.pem
+  ssl_key: /etc/letsencrypt/live/hass-example.duckdns.org/privkey.pem
+
+
+

You can now navigate to https://hass-example.duckdns.org and enjoy encryption!

+

Big thanks to Fabian Affolter for his help and feedback on this article.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html new file mode 100644 index 0000000000..3886d8a715 --- /dev/null +++ b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html @@ -0,0 +1,245 @@ + + + + + + + + + 0.10: Amazon Echo, iCloud, Dweet.io, Twitch and templating support! - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.10: Amazon Echo, iCloud, Dweet.io, Twitch and templating support!

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Alrighty, it’s time for Home Assistant 0.10. A lot amazing things have changed and sadly we also had to introduce a bunch of backwards incompatible changes. I would like to give a big shoutout to Philip Lundrigan (@philipbl) who put a lot in effort in helping the migration to move towards using templates for a wide variety of platforms.

+
+ +
+

+ + +

Templates

+

This release introduces templates. This will allow you to parse data before it gets processed or create messages for notifications on the fly based on data within Home Assistant. The notification component and the new Alexa/Amazon Echo component are both using the new template functionality to render responses. A template editor has been added to the developer tool section in the app so you can get instant feedback if your templates are working or not.

+
The temperature at home is {{ states('sensor.temperature') }}.
+
+
+

More information and examples can be found in the template documentation.

+

Breaking changes

+

Templates will now be the only way to extract data from ‘raw’ sources like REST, CommandSensor or MQTT. This will replace any specific option that used to do this before. This means that precision, factor, attribute or json_path etc will no longer work.

+

Affected components and platforms:

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/01/17/extended-support-for-diy-solutions/index.html b/blog/2016/01/17/extended-support-for-diy-solutions/index.html new file mode 100644 index 0000000000..f7dd096cb1 --- /dev/null +++ b/blog/2016/01/17/extended-support-for-diy-solutions/index.html @@ -0,0 +1,236 @@ + + + + + + + + + 0.11: Extended support for DIY solutions - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.11: Extended support for DIY solutions

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

First release of 2016 and we are on 🔥! The main repository has passed 2500 ⭐ on GitHub (2596 ⭐ as of now). This release also has a record number of 20 contributors all working on improving and extending Home Assistant. With the continued growth, I am very excited to see what 2016 will bring us 🤘.

+

+ +

Backwards incompatible changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/01/19/perfect-home-automation/index.html b/blog/2016/01/19/perfect-home-automation/index.html new file mode 100644 index 0000000000..03fb343fe8 --- /dev/null +++ b/blog/2016/01/19/perfect-home-automation/index.html @@ -0,0 +1,225 @@ + + + + + + + + + Perfect Home Automation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Perfect Home Automation

+
+ + + five minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+

People often ask me about my vision for Home Assistant. Before I can describe where I want to go with Home Assistant, I should first talk about how home automation would look in my ideal world. This will be the aim of this post. I’m not going to focus on protocols, networks or specific hubs. That’s all implementation details. Instead, this post will focus on what is most important: the interaction between the users and their home.

+

You should not have to adapt to technology.

+

When people start using home automation, they always experience home control first: being able to control devices in new ways using a phone or computer. They believe the future is now and their app will be their remote for their lives. They only focus on what they are getting, not on what they are losing. You install some light bulbs and all of a sudden you are no longer able to use the light switches. You’ll arrive at home at night and have to pull out your phone, open the app, let it connect and finally you’ll be able to turn on the light. All while turning the light on could have been a switch away.

+

Yes, you can solve this with presence detection. What if your phone runs out of battery? You’ll have to resort to the switch again.

+

If you find that using your new home devices is cumbersome, the promise of home automation technology has failed you. Your lights should work with both a switch (or button) at the entrance of your room and via presence detection. Honestly, there are hardly any valid use cases for being able to control lights from your phone except for showing off. +

+

You are not the only user of your home automation.

+

People tend to forget that they are not the only ones in their home. As the developer of your house you’re enthusiastic about the possibilities and are willing to overlook flaws. Chances are very high that the other people in your household have different hobbies and just want to mind their own business.

+

This means that everything you automate has to work flawlessly. If you successfully manage to cause a response to some stimulus 90% of the time, you’re going to have a disproportionately poor experience 10% of the time. A common automation that fits this pattern is to fade the lights when you start watching a movie or series in the living room. It only works if everyone is watching.

+

Limit the impact of false positives and negatives.

+

With every automation, you always have to think: what will be the impact if it doesn’t work? Home automation is composed of many different systems by many different vendors that speak many different protocols: things will go wrong. It’s up to you to make sure that they have a limited impact when they fail. Ideally, devices should fall back to a pre-smart home experience. A Philips Hue bulb will act like a standard white light if turned on/off using a normal switch or when not connected to a hub. If things get worse when your system is out of order, your users will revolt. Take for example the Nest thermostat that had a bug in the beginning of January which caused it to stop heating the house, yikes!

+

The perfect app is no app.

+

Home automation should blend with your current workflow, not replace it. For most devices, there is no faster way to control most devices than how you are already doing it today. Most of the time, the best app is no app. The only interface that can be more convenient, and is accessible for visitors of your home of all ages is a voice interface. The industry has realized this too and there are some major players focussing on voice interaction. Take Apple for example: the only way to control your HomeKit devices is with Siri. Amazon has taken it one step further with the Amazon Echo, providing an always-listening connected speaker/microphone for the living room. I expect a lot more companies to join this segment in 2016.

+

Voice interfaces are not perfect either. The speed at which you can issue commands is low because you have to wait for a response. There are also issues with the discoverability of commands, recognition of accents and dependency on the cloud for processing your voice. I believe that all but the first one are problems that are going to be solved eventually.

+

This however doesn’t mean there isn’t a place for apps, there definitely is. They are perfectly well-suited for checking in while you’re away, browsing the state changes of your house or making the lights go all funky when there are kids visiting.

+

Your system should run at home, not in the cloud.

+

The cloud is a magical thing. Somewhere in the world there are computers collecting the data that your house generates, testing them against your automation rules and sending commands back when needed. The cloud will receive updates and improve itself over time so it is able to serve you better. Until it’s not. There are many reasons why your home might lose its connection to the cloud. The internet can stop working, an update might have gone wrong or the servers running the cloud crash.

+

When this happens, your house should be able to keep functioning. The cloud should be treated as an extension to your smart home instead of running it. That way you’ll avoid awkward situations like when Amazon AWS was down and the Amazon Echo stopped working.

+

Good home automation never annoys but is missed when it is not working.

+

Thanks to Chris LaRose for this feedback and comments.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html new file mode 100644 index 0000000000..e6f2c5b750 --- /dev/null +++ b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html @@ -0,0 +1,239 @@ + + + + + + + + + 0.12: Insteon, LIFX, Twitter and ZigBee - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.12: Insteon, LIFX, Twitter and ZigBee

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

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) 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 how to get started.

+

+ +Example of the new views in the frontend. Learn more. +

+

+ +

Backwards incompatible changes

+
    +
  • Nest config has moved from thermostat to the Nest component.
  • +
  • Entity IDs for Z-Wave devices are now generated in a deterministic way causing all IDs to change starting this release. This is a one time change. (Changed again in 0.31)
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html b/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html new file mode 100644 index 0000000000..e43c507929 --- /dev/null +++ b/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Smarter SmartThings with MQTT and Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Smarter SmartThings with MQTT and Home Assistant

+
+ + + nine minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
+
+ Comments +
+
+

This is a guest post by Home Assistant users Jeremiah Wuenschel and St. John Johnson.

+

So you own a SmartThings Hub. You probably bought it when you were looking to get into the whole Home Automation hobby because it worked with pretty much everything and offered you the ability to automate anything. After a week of ownership, you realized that building dashboards and automating required writing way more Groovy then you expected. Then one day you were browsing reddit and discovered the amazingness that is Home Assistant! A solution that offered dashboards, graphs, working support for Nest, and REAL EASY automation!

+

You spent your weekend getting everything set up, showing it off to your significant other, but in the end you got stumped when it came to integrating with all your existing SmartThings toys. What do I do now? Should I buy another hub? Should I just buy a Z-Wave stick?

+

That’s where we came in. We wanted a solution that can bridge the awesomeness of Home Assistant with the SmartThings hub that works with almost everything.

+

+ +

+ +

Glossary

+

This is going to be a pretty detailed tutorial on setting up our SmartThings bridge. However, there are a couple key terms that might be new to you:

+
    +
  • MQTT: A lightweight message protocol for listening and publishing events that happen. Many home automation platforms have built in support for this (especially Home Assistant).
  • +
  • Docker: A tool for running applications that are self-contained. No need for installing any dependencies or worrying about conflicts. Installs easily on Linux and OSX.
  • +
+

Setting up the Bridge

+

MQTT

+

Assuming that you already have Home Assistant and Smart Things running, you will first want to get an MQTT broker running. There are a handful of MQTT brokers available in Open Source land. We chose Mosca for its simplicity.

+

There is very little you need to do to get Mosca running. The easiest approach is to use Docker, and run a command like the following:

+
$ docker run \
+    -d \
+    --name="mqtt" \
+    -v /opt/mosca:/db \
+    -p 1883:1883 \
+    matteocollina/mosca
+
+
+

This will start Mosca up inside of a docker container, while keeping persistent storage for Mosca in /opt/mosca. The default configuration is the only thing we need to get things up and running.

+

If you don’t want to mess with Docker and can get node.js installed without trouble, the standalone instructions are all you need.

+

MQTT Bridge

+

This is the small piece of magic that bridges the gap between MQTT and SmartThings. It is a node.js app, and like Mosca it is probably easiest to install with Docker:

+
$ docker run \
+    -d \
+    --name="mqtt-bridge" \
+    -v /opt/mqtt-bridge:/config \
+    -p 8080:8080 \
+    stjohnjohnson/smartthings-mqtt-bridge
+
+
+

The code for this bridge is on Github if you want to start it up independently.

+

The MQTT Bridge only needs to know where your MQTT broker lives. If you are using these docker commands as-is, edit /opt/mqtt-bridge/config.yml to look like this:

+
---
+mqtt:
+    host: <IP of the host>
+
+
+

Restart the bridge, and you are ready to go:

+
$ docker restart mqtt-bridge
+
+
+

SmartThings Device

+

The next step (and possibly the most confusing) is the device type. Go to the Smart Things Device IDE and Create New Device Handler. Choose From Code and paste in the MQTT Bridge Device Code. Click Save, Publish, and then For Me.

+

Now to install your new Device Handler. Go back to My Devices in the IDE, and click New Device. Enter a name, and pick any random set of characters for the Device Network Id (this will automatically update later). For Type, scroll to the bottom of the list and find your newly created MQTT Bridge. Fill in the other boxes however you like.

+

Go back to My Devices, and click on your new device in the list. This will bring up a page that allows you to edit your device’s Preferences. Click edit and fill in the 3 pieces of information it asks for.

+
    +
  • MQTT Bridge IP Address: <IP address of the MQTT Bridge from the previous step>
  • +
  • MQTT Bridge Port: <8080 if you have changed nothing in the previous commands>
  • +
  • MQTT Bridge MAC Address: <Mac address of machine running the Bridge code>
  • +
+

This will create the link between SmartThings and the MQTT Bridge.

+

SmartThings App

+

The last step is to setup the SmartApp. After this, any registered devices will start sending their events to MQTT.

+

Go to the Smart App IDE. Click New SmartApp, followed by From Code. Paste in the MQTT Bridge SmartApp code and click Save. Click Publish and then For Me. In the SmartThings mobile app, add the new SmartApp and configure it with your devices and MQTT Bridge device. Clicking done will subscribe SmartThings to your MQTT broker and begin 2-way propagation of events.

+

Configure Home Assistant

+

To add SmartThings devices to Home Assistant over MQTT, first enable MQTT in Home Assistant:

+
mqtt:
+  broker: localhost
+
+
+

Replace localhost with the location of the running MQTT Broker. Devices from the MQTT Bridge are published to the path smartthings/<Device Name>/<Attribute>

+

For example, my Dimmer Z-Wave Lamp is called “Fireplace Lights” in SmartThings. The following topics are published:

+ + + + + + + + + + + + + + + + + +
TopicDescription
smartthings/Fireplace Lights/levelBrightness (0-99)
smartthings/Fireplace Lights/switchSwitch State (on/off)
+

Here is an example Home Assistant config:

+
switch:
+  platform: mqtt
+  name: "Fireplace Lights"
+  state_topic: "smartthings/Fireplace Lights/switch"
+  command_topic: "smartthings/Fireplace Lights/switch"
+  brightness_state_topic: "smartthings/Fireplace Lights/level"
+  brightness_command_topic: "smartthings/Fireplace Lights/level"
+  payload_on: "on"
+  payload_off: "off"
+  retain: true
+
+
+

We recommend retain: true for every MQTT device in order to keep states in sync when things become disconnected.

+

Start digging through the MQTT Components in Home Assistant to find which components map to the new events being published to MQTT.

+

Configuring with Docker-Compose

+

Our personal preference for starting the whole suite of software is to use a single Docker-Compose file. Just create a file called docker-compose.yml like this:

+
mqtt:
+    image: matteocollina/mosca
+    ports:
+        - 1883:1883
+
+mqttbridge:
+    image: stjohnjohnson/smartthings-mqtt-bridge
+    volumes:
+        - ./mqtt-bridge:/config
+    ports:
+        - 8080:8080
+    links:
+        - mqtt
+
+homeassistant:
+    image: homeassistant/home-assistant:latest
+    ports:
+        - 80:80
+    volumes:
+        - ./home-assistant:/config
+        - /etc/localtime:/etc/localtime:ro
+    links:
+        - mqtt
+
+
+

This will start home-assistant, MQTT, and the Bridge, in dependency order. All config can reference the name of the docker container instead of using IP addresses (e.g. mqtt for the broker host in Home Assistant).

+

How it works

+

HTTP Endpoint: There are really only 2 ways to communicate with the SmartThings hub that we could find. The easiest approach is to create a RESTful SmartApp authenticated with OAuth that provides state changes via HTTP directly. This approach is pretty straightforward to implement, but it requires communication with the SmartThings cloud service, and can’t be done entirely on your LAN. We hoped to keep all communication internal, and came up with a second approach.

+

Custom Device Type: SmartThings custom device types allow developers to define handlers for HTTP events received directly over the local network by the SmartThings hub. Messages received are authenticated by MAC address, and can contain arbitrary strings in their payload. Since a Device Type is only ever tied to a single device, we need to add a SmartApp to the mix in order to translate events between individual devices and our special Home Assistant Bridge device. Here is what we have so far:

+
Z-Wave Switch        |
+Zigbee motion sensor |<---> Bridge App <---> Bridge Device Type <---> <Local network>
+Z-Wave light bulb    |
+
+
+

On the Home Assistant side, there is a powerful platform available based on the MQTT lightweight message bus protocol. Everything from lights to switches to temperature sensors can be defined in Home Assistant as an MQTT component, so it makes for a convenient integration point. This requires an MQTT broker for handling the message bus, and one last piece to translate between the HTTP that SmartThings supports and MQTT.

+

Here is the final sequence of events:

+

+ + SmartThings Bridge Sequence + + SmartThings Bridge Sequence +

+

There are a lot of stops along the way for these events, but each piece is a simple translation layer to shuttle the events between systems.

+

Future Improvements

+
    +
  • Raspberry Pi: There is a lot of interest in getting this running on the Raspberry Pi. It only requires binaries compiled for ARM, so we plan to get ARM-compatible versions of the containers going at some point.
  • +
  • Authentication for MQTT: At the moment, the MQTT bridge doesn’t understand how to authenticate to MQTT, so only unauthenticated MQTT is supported. This is mitigated to some degree if you use our Docker Compose config, because MQTT’s port is not actually shared publicly.
  • +
  • Authentication for MQTT Bridge: Right now the bridge expects that anyone subscribing is the SmartThings hub. This could use proper authentication.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/02/12/classifying-the-internet-of-things/index.html b/blog/2016/02/12/classifying-the-internet-of-things/index.html new file mode 100644 index 0000000000..7f48b649f8 --- /dev/null +++ b/blog/2016/02/12/classifying-the-internet-of-things/index.html @@ -0,0 +1,333 @@ + + + + + + + + + Classifying the Internet of Things - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Classifying the Internet of Things

+
+ + + seven minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+

The core of home automation is knowing what’s going on. The faster we know about a state change, the better we can serve the user. If you want to have your lights to turn on when you arrive at home, it doesn’t help if it only knows about it after you’ve already opened the door and manually (!!) turned on the light.

+

Each smart device consists of the ‘normal’ device and the piece that makes it ‘smart’: the connectivity. The connectivity part of a device can consists of either control, state or both.

+

State describes what a device is up to right now. For example, a light can be on with a red color and a medium brightness.

+

Control is about controlling the smart device by sending commands via an API. These commands can vary from configuring how a device works till mimicking how a user would interact with a device. A media player can allow skipping to the next track and a sensor could allow to configure its sensitivity or polling interval.

+

The Home Assistant APIs are setup to be as convenient as possible. However, a network is always as weak as it’s weakest link. In our case these are the integrations. Take for example controlling a light that does not report state. The only state Home Assistant can report on after sending a command is the assumed state: what do we expect the state of the light to be if the command worked.

+

We want our users to get the best home automation experience out there and this starts with making sure they have devices that work well with Home Assistant. That’s why we will start applying the following classifiers to our integrations:

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassifierDescription
Assumed State + We are unable to get the state of the device. Best we can do is to assume the state based on our last command. +
Cloud Polling + Integration of this device happens via the cloud and requires an active internet connection. Polling the state means that an update might be noticed later. +
Cloud Push + Integration of this device happens via the cloud and requires an active internet connection. Home Assistant will be notified as soon as a new state is available. +
Local Polling + Offers direct communication with device. Polling the state means that an update might be noticed later. +
Local Push + Offers direct communication with device. Home Assistant will be notified as soon as a new state is available. +
+

The background to how we got to these classifiers can be read after the break. +

+

State

+

How state is communicated can be broken down into 5 categories. They are not mutually exclusive - a device state can be available both via the cloud and local connectivity.

+

No state available

+

These are devices that do not have the capabilities to make their state available. They only allow to be controlled. For example, devices with infrared remote controls like TVs and ACs. You can press the turn on button on the remote but can only assume that your command was received and executed successfully. The device might not be powered or something is blocking the infrared receiver.

+

Home automation will have to approach such devices based on the assumption that it’s commands are received correctly: using optimistic updates. This means that after sending a command it will update the state of the device as if the command was received successfully.

+

Advantages:

+
    +
  • None
  • +
+

Disadvantages:

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

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.

+

Advantages:

+
    +
  • Able to control devices while at home or away.
  • +
  • Cloud has access to more computing power to mine the device data to suggest optimizations to the user.
  • +
+

Disadvantages:

+
    +
  • It doesn’t work if the internet is down or the company stops support.
  • +
  • You are no longer in control about who has access to your data.
  • +
+

Cloud pushing new state

+

All off the previous section applies to this one. On top of that the cloud will now notify the home automation when a new state has arrived. This means that as soon as the cloud knows, the home automation knows.

+

Advantages:

+
    +
  • New state known as soon as available in the cloud.
  • +
+

Polling the local device

+

These devices will offer an API that is locally accessible. The home automation will have to frequently check if the state has been updated.

+

Advantages:

+
    +
  • Does not depend on the internet
  • +
+

Disadvantages:

+
    +
  • To be pollable, a device needs to be always online which requires the device to be connected to a power source.
  • +
+

Local device pushing new state

+

The best of the best. These devices will send out a notice when they get to a new state. These devices usually use a home automation protocol to pass it’s message to a hub that will do the heavy lifting of managing and notifying subscribers

+

Advantages:

+
    +
  • Near instant delivery of new states.
  • +
  • Able to get a long battery life by going into deep sleep between state updates.
  • +
+

Disadvantages:

+
    +
  • If it does not also support polling, home automation will not be made aware of the state after booting up until it changes.
  • +
  • If using deep sleep and wifi, will suffer a delay when waking up because connecting to WiFi and receiving an IP takes time.
  • +
+

Control

+

Controlling a device can, just like state, be done through cloud and/or local connectivity. But the more important part of control is knowing if your command was a success and the new state of the device.

+

No control available

+

These devices are not able to be controlled. They will only offer state.

+

Poll State after sending command

+

These devices will require the state to be polled after sending a command to see if a command was successful.

+

Advantages:

+
    +
  • The state will be known right after the command was issued.
  • +
+

Disadvantages:

+
    +
  • It can take time before the state gets updated. How often do we poll and how long do we wait till we consider the command failed? Also, a state may change because of other factors. Difficult to determine if the updated state is because of our command.
  • +
+

Device pushes state update

+

These devices will not return a new state as a result of the command but instead will push a new state right away. The downside of this approach is that we have to assume that a state update coming in within a certain period of time after a command is related to the command.

+

Command returns new state

+

The very best. These devices will answer the command with the new state after executing the command.

+

Classifying Home Assistant

+

Home Assistant tries to offer the best experience possible via its APIs. There are different ways of interacting with Home Assistant but all are local.

+
    +
  • State polling is available via the REST API
  • +
  • There is a stream API that will push new states as soon as they arrive to subscribers. This is how the frontend is able to always stay in sync.
  • +
  • Calling a service on Home Assistant will return all states that changed while the service was executing. This sadly does not always include the new state of devices that push their new state, as they might arrive after the service has finished.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html new file mode 100644 index 0000000000..a64f7af72a --- /dev/null +++ b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html @@ -0,0 +1,244 @@ + + + + + + + + + 0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

The focus of 0.13 was on test coverage, big cheers to @rmkraus for his hard work on this. I’m proud to announce that we’ve hit the 90% test coverage of the core + important components. A big milestone for the project.

+

+ + Examples of the new input_select and weblink components. +

+

Not only did we gain a lot of test coverage, we also attracted a lot of new developers that contributed a variety of components and platforms:

+

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html new file mode 100644 index 0000000000..683f4116e8 --- /dev/null +++ b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html @@ -0,0 +1,298 @@ + + + + + + + + + Multi-room audio with Snapcast, Mopidy, and Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Multi-room audio with Snapcast, Mopidy, and Home Assistant

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

Would you like to listen to music in every room in your home, controlled from one source? Then multi-room audio is for you.

+

Multi-room audio can be achieved by having a computer attached to speakers in every room. On each computer, services run to play and/or control the audio. With this DIY approach, the kind of computer and speakers is very much up to you. It could be your desktop computer with attached powered speakers, your HTPC hooked up to your TV and receiver, a Raspberry Pi with Amp or DAC, or even an Android device.

+

You’ll need two key software packages, besides Home Assistant. The first is Mopidy, a music server that can play local files, or connect to streaming music services like Spotify. The second is Snapcast, which enables synchronized audio streaming across your network. Both can be integrated into Home Assistant. Each room audio device will run an instance of the Snapcast client, and optionally a Mopidy instance. Your server will run a special instance of Mopidy and the Snapcast server.

+

Finally, you also need a player to control Mopidy. Any MPD-compatible player will work, and there are several Mopidy-only web-based options available. On Android, Remotedy is particularly nice since you can access multiple Mopidy instances in one place.

+

Home Assistant will provide device status, and volume control for each room. If you want to play music in all your rooms (on all your clients), access the server instance of Mopidy. If you want to play music only in a specific room, access that specific Mopidy instance. If you’re using a web UI for Mopidy, you can add links to each instance in Home Assistant with the weblink component.

+

+ +

+ +

Staging

+ +

Configure Mopidy

+

Mopidy can be run with multiple configuration files, each extending the previous file. This is helpful when we’re running multiple instances with varying functionality.

+

core.conf

+

The core configuration is shared between all instances:

+
[mpd]
+hostname = ::
+
+[http]
+hostname = ::
+
+[audio]
+output = alsasink
+
+[spotify]
+username = <redacted>
+password = <redacted>
+
+
+

local.conf

+

Add the local configuration on computers that have local media files:

+
[local]
+media_dir = <your/music/here>
+
+
+

snapcast.conf

+

Finally, the Mopidy instance that connects with Snapcast needs special configuration. Run on a different port to avoid conflicts if you have a second Mopidy instance running on your computer. The audio output is sent to a named pipe - Snapcast will read from there. Note that you may have to adjust the audio output attribute depending on your system and audio sources.

+
[mpd]
+hostname = ::
+port = 6601
+
+[http]
+hostname = ::
+port = 6681
+
+[audio]
+output = audioresample ! audio/x-raw,rate=48000,channels=2,format=S16LE ! audioconvert ! wavenc ! filesink location=/tmp/snapfifo
+
+
+

Run Mopidy

+

To run a room-specific instance:

+
$ mopidy --config $CONF_DIR/core.conf
+
+
+

To run a room-specific instance with local media:

+
$ mopidy --config $CONF_DIR/core.conf:$CONF_DIR/local.conf
+
+
+

To run the special Snapcast-connected instance (with local media):

+
$ mopidy --config $CONF_DIR/core.conf:$CONF_DIR/local.conf:$CONF_DIR/snapcast.conf
+
+
+

Run Snapcast

+

Start the snapserver on the same server running Mopidy with the snapcast configuration.

+
$ snapserver   # or use systemd
+
+
+

Start the snapclient on computers that will be playing audio.

+
$ snapclient   # or use systemd, add -h <server host> if necessary
+
+
+

Configure Snapcast

+

There are a number of snapcast configuration options, but the one relevant to Home Assistant is the client names. You can set them in the snapserver configuration file, by default located at ~/.config/Snapcast/settings.json. Only edit this file while the snapserver is not running. Modify the name JSON value to your liking - this is how the client will be named in Home Assistant.

+

Configure Home Assistant

+

Use the mpd and snapcast components. Optionally, use weblink to provide easy access to a Mopidy web UI.

+
media_player:
+- platform: snapcast
+  host: xxxxx
+- platform: mpd
+  server: xxxx
+  location: Multi-Room Controller
+- platform: mpd
+  server: xxx
+  location: Room 1
+
+weblink:
+  entities:
+  - name: Multi-Room Player
+    url: xxxx
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/02/20/community-highlights/index.html b/blog/2016/02/20/community-highlights/index.html new file mode 100644 index 0000000000..e7e1594332 --- /dev/null +++ b/blog/2016/02/20/community-highlights/index.html @@ -0,0 +1,241 @@ + + + + + + + + + Community Highlights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Community Highlights

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
  • Video
  • +
+
+ Comments +
+
+

Home Assistant land has been busy and a lot of people have been creating awesome stuff. We’ve added a cookbook section to the website full of examples how you can automate different things. Make sure you take a look and share your own recipes too!

+

Home automation demo by Part of the Thing

+
+ +
+

Haaska - Alexa Skill Adapter for Home Assistant

+

Haaska allows you to control lights, switches, and scenes exposed by your Home Assistant instance using an Amazon Echo. This is different from our own Alexa component because it will teach the Amazon Echo directly about the devices instead of teaching it to talk to Home Assistant. It will not allow you to use custom sentences but it will allow you to skip the ‘Ask Home Assistant’ part when giving commands:

+
    +
  • “Alexa, set kitchen to twenty percent”
  • +
  • “Alexa, turn on evening scene”
  • +
  • “Alexa, turn off bedroom light”
  • +
+

Haaska on GitHub

+

Integrating Home Assistant with HomeKit

+

Contributor Maddox has created a plugin for HomeBridge, an open-source HomeKit bridge. This will allow you to control your home using Siri on your Apple devices. HomeBridge has recently restructured so you’ll have to install the plugin separately with the homebridge-homeassistant npm package.

+

Example config.json entry to load Home Assistant:

+
"platforms": [
+    {
+        "platform": "HomeAssistant",
+        "name": "HomeAssistant",
+        "host": "http://192.168.1.50:8123",
+        "password": "xxx",
+        "supported_types": ["light", "switch", "media_player", "scene"]
+    }
+]
+
+
+

HomeBridge on GitHub +HomeBridge Home Assistant Plugin

+

Custom alarm system with Home Assistant

+

User thaijames describes in the Home Assistant forums how he has created his own NFC-based alarm system using Home Assistant, DIY components and Garfield dolls.

+

+ +Hold your NFC tag against the belly of Garfield to unlock the alarm. +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html new file mode 100644 index 0000000000..fcfd6b366a --- /dev/null +++ b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html @@ -0,0 +1,243 @@ + + + + + + + + + 0.14: Steam, D-Link smart plugs and Neurio Energy Sensors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.14: Steam, D-Link smart plugs and Neurio Energy Sensors

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s been another two weeks which means it’s time for release: 0.14!

+

+ +

+ + Camera feeds are now directly embedded in the frontend. +

+

Backwards incompatible changes

+
    +
  • Component: Simple Alarm has been removed. Still available in the cookbook.
  • +
  • Script: Turning on a script that is already on is now a no-op instead of skipping current delay.
  • +
  • Wemo switches now have to be set up via the main Wemo component
  • +
  • Command line platforms for switch, sensor and binary_sensor have been renamed to command_line.
  • +
  • The rfxtrx sensors entity ids will incur a one time change to move to a stable format. See the docs for more details.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html new file mode 100644 index 0000000000..d3f62d70dd --- /dev/null +++ b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html @@ -0,0 +1,244 @@ + + + + + + + + + 0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance. - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance.

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Two weeks has past so here is 0.15! We have been focussing a lot on quality. Making sure the system is more stable and reliable. I usually try to highlight one cool thing in the release notes but this release has 4 exciting announcements!

+
    +
  • @fabaff has upgraded the codebase to follow the PEP257 documentation standard.
  • +
  • @partofthething has migrated us to use the main Python Open Z-Wave library instead of our forked version.
  • +
  • To make our automations more powerful, @persandstrom added the option to use templates to dynamically create service calls. This works for automation, Alexa, universal media player, template switch. Learn more.
  • +
  • @MartinHjelmare has upgraded our scene support to now support all built-in services and components.
  • +
+

Besides bug fixes, this release also brings:

+

+ +
# Example using templates for service and data in service call.
+# Works for automation, Alexa, universal media player, template switch.
+automation:
+  - trigger:
+      - platform: state
+        entity_id: switch.bathroom
+    action:
+      service_template: >
+        {% if is_state('switch.bathroom', 'on') %}
+          switch.turn_on
+        {% else %}
+          switch.turn_off
+        {% endif %}
+      data_template:
+        entity_id: switch.{{ states('input_select.is') }}
+
+
+

Breaking Changes

+
    +
  • Media Player: Attributes to call service play_media has been renamed to +media_content_type and media_content_id, to match the corresponding media +player state attributes. This change affects automations, scripts and scenes.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html b/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html new file mode 100644 index 0000000000..a1eb899c72 --- /dev/null +++ b/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html @@ -0,0 +1,252 @@ + + + + + + + + + 0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Party people, 0.16 is here! The big thing with this release is that we have completely removed the barrier to get started by MQTT by being able to launch an embedded MQTT server: hbMQTT. Just add mqtt: to your config and a broker is launched and connected with Home Assistant. See the documentation for more info.

+

Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see breaking changes section at bottom for this!).

+

Rock on.

+

+ +

Breaking changes

+
    +
  • +

    Automation: support for old deprecated config has been removed

    +
  • +
  • +

    Tellstick configuration has changed

    +
  • +
+
tellstick:
+  signal_repetitions: X
+
+
+
    +
  • Vera configuration has changed
  • +
+
vera:
+  vera_controller_url: http://192.168.1.161:3480/
+  # Optional to exclude devices - this is a list of vera device ids
+  exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99]
+  # Optional to import switches as lights - this is a list of vera device ids
+  lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87]
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html new file mode 100644 index 0000000000..6747687133 --- /dev/null +++ b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html @@ -0,0 +1,212 @@ + + + + + + + + + Your hub should be local and open - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Your hub should be local and open

+
+ + + 1 minute reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+

Today the news spread that Google will be shutting down the Revolv hubs. And shutting down here doesn’t mean they stop selling or supporting them - no, they are sending an update to each hub to turn your perfectly fine home automation hub into a useless piece of plastic. The fact that this seemed like a good idea by Google astonishes me. If anything, they should have gone the same route as ninjasphere: open it all up and let people decide on the fate of their own hub.

+

I’ve said it before but I’ll repeat it again:

+
+

The cloud should be treated as an extension to your smart home instead of running it.

+
+

Your hub should not be affected when your internet breaks down or the company that sold you your hub goes out of business. It should work locally so that it can continue to work even long after the vendor goes out of business or decides to kill it. Preferably, your hub should also be open so that the community can take over development after the vendor stops caring.

+

Unless you can afford losing a product here and there, be cautious when buying IoT products that depend on the cloud from companies that are not well established. The chances are high that they go bankrupt or get acquired and closed. This however is easier said than done as Gartner predicts that by 2017, 50 percent of IoT solutions will originate in startups that are less than three years old.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/07/static-website/index.html b/blog/2016/04/07/static-website/index.html new file mode 100644 index 0000000000..1f65761b8e --- /dev/null +++ b/blog/2016/04/07/static-website/index.html @@ -0,0 +1,215 @@ + + + + + + + + + Static website - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Static website

+
+ + + 1 minute reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

The frontend of Home Assistant is served with the help of a local web server. If you have customized your installation you already use this functionality. The content of your folder www in your Home Assistant configuration directory (.homeassistant) is available under /local (eg. http://localhost:8123/local for an index.html file).

+

But there is more you can do! You can not only host images for customization there but HTML files or even web applications including CSS and Javascript.

+

+ +

+ +

In the past the buzz word “Smart mirror” was used a couple of times in our chatroom and even made it into the issue tracker. The existing solutions (Smart mirror, MagicMirror, and 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, Python API, or one of the history components. If it is to be a web page I’m using the MQTT Eventstream component and mqttws31.js.

+

The HBMQTT broker provides websockets support for MQTT and mqttws31.js included in web page gives you access to the MQTT messages. It’s a matter of minutes. OK, it took a little longer because I’m not a Javascript guy to create the software part that will show details about your environment. The source is available at https://github.com/fabaff/home-assistant-display and the screenshot above shows the result. I guess that every person who is familiar with Javascript would be able to reduce the amount of code and to make it more flexible. Well, it’s only a prototype and showcase to include an image in this blog post.

+

I hope that this little article could give you an idea of extending Home Assistant in an unconventional way.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html new file mode 100644 index 0000000000..9e4c0512cf --- /dev/null +++ b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html @@ -0,0 +1,224 @@ + + + + + + + + + 0.17: Onkyo, Panasonic, GTFS and config validation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.17: Onkyo, Panasonic, GTFS and config validation

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we’ve been hard at work to introduce config validation! Especially huge thanks to @jaharkes for his hard work on this. Config validation is still in its early stages. More common platforms and components have been added but we didn’t do everything yet.

+

When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We’re looking into options to make it more clear - it is a work in progress.

+

Another big thing is the addition of GTFS support. You probably don’t know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend.

+

+ +

Breaking changes

+

As of now we are not aware of any breaking changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to execute_service in their script configs. This should be service.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/17/updated-documentation/index.html b/blog/2016/04/17/updated-documentation/index.html new file mode 100644 index 0000000000..4a03a913a4 --- /dev/null +++ b/blog/2016/04/17/updated-documentation/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Updated documentation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Updated documentation

+
+ + + 1 minute reading time + + +
    +
  • Website
  • +
+
+ Comments +
+
+

One of the main complaints that we receive is something along the lines “I read that X is possible yet I am unable to find it on the website.”. This post is to announce that we have taken the first steps to improve it by revamping the getting started and developers sections. It’s still a work in progress but we now have a solid foundation to build on for the future 👍.

+

Our documentation has been going through various phases. Initially it was just the README in our GitHub repository. I discovered Jekyll and GitHub pages in December 2014 and created home-assistant.io. I more or less broke the README in 5 pages and called it a website. Back then we had a whopping 11 components.

+

As Home Assistant grew, so did our documentation. Fabian Affolter does an amazing job in making sure there is at least a documentation stub for each new feature that lands. And that’s quite a feat given our frequent releases! But despite all the efforts, the documentation outgrew our existing documentation organization.

+

Today it has been almost 1.5 years since we started the website. We now have 264 components and platforms under our belt and have been honored with 1.5 million page views ✨. And hopefully we now also have documentation that our community deserves.

+

Finally, if you see some content that could use more clarifcation or is outdated, don’t hesitate to use the ‘Edit in GitHub’ link that is present on each page.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/19/to-infinity-and-beyond/index.html b/blog/2016/04/19/to-infinity-and-beyond/index.html new file mode 100644 index 0000000000..4d641b93d5 --- /dev/null +++ b/blog/2016/04/19/to-infinity-and-beyond/index.html @@ -0,0 +1,222 @@ + + + + + + + + + To Infinity and Beyond 🚀 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

To Infinity and Beyond 🚀

+
+ + + two minutes reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+

After 2.5 years I think we can proudly say: Home Assistant is a success. I write we because Home Assistant is no longer a one-person side project. It has become the side project of many people who spend countless hours on making Home Assistant the best home automation software out there. To acknowledge this we migrated the repositories from being under my name to be under our own organization on GitHub.

+

On our journey we’ve reached many noteworthy milestones:

+
    +
  • #1 on HackerNews
  • +
  • Featured on ProductHunt
  • +
  • Trending repository on GitHub
  • +
  • 3000 stars on GitHub
  • +
  • 1.5 million page views on our website
  • +
  • Speaker at OpenIoT Summit 2016
  • +
+

All these accomplishments are a nice pat on the back but our journey is far from over. There are a lot of challenges ahead if we want to become the go to solution for home automation for everyone.

+

Until now the focus has been on making a platform that developers love to use. A platform that is simple but customizable. A platform that is both powerful and reliable. But most important: a platform that is local and open. Home Assistant does a great job at all these things.

+

There will be some major challenges ahead of us to target groups other than developers. Easy installation and easy configuration being the #1. I’m sure that we’ll be able to eventually achieve these goals. I can’t say yet how or when. As with everything Home Assistant, we’ll take tiny steps, gathering feedback along the way to make sure we’re solving the right problems.

+

I am confident that we will get there because we are set up for success: we have a robust architecture, high test coverage and an active community of world class developers and users. On top of that, we use Python which allows us to move fast and tackle complex problems in elegant ways. It is so easy to learn that it allows any programmer, experienced or not, to contribute support for devices and services. It’s as simple as filling in the blanks.

+

I would like to put out a big thank you to all our contributors who make Home Assistant what it is today. It doesn’t matter if it is form of code, documentation or giving support in our chat room or forums. You. all. rock.

+

Cheers to the future!

+

Paulus

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html new file mode 100644 index 0000000000..639c37f844 --- /dev/null +++ b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html @@ -0,0 +1,244 @@ + + + + + + + + + 0.18: Bluetooth, LG WebOS TVs and Roombas. - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.18: Bluetooth, LG WebOS TVs and Roombas.

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for 0.18. This release cycle is 2 days shorter than usual as I’ll be traveling to Europe. This also means that it can take some more time before you get feedback on PRs.

+

Since the last release we have moved all Home Assistant source code etc into its own organization on GitHub. We’re growing up! This sadly did cause us to have to move all Docker images. Check the breaking changes section for more info.

+

+

+ +

Breaking changes

+
    +
  • We have migrated our datetime format to be iso8601. This will only impact you if you are consuming the date times from the API directly. You can ignore this if you are just using Home Assistant via configuration and the frontend.
  • +
  • The constant TEMP_CELCIUS is now correctly called TEMP_CELSIUS. Old one is deprecated and will eventually be removed.
  • +
  • The location of the Docker image has changed. There was no possibility for us to keep maintaining the old image (as it was bound to the GitHub repo under my name) or to make a redirect. So if you are using the Home Assistant Docker image, change it to run homeassistant/home-assistant:latest for the latest release and homeassistant/home-assistant:dev for the latest dev version.
  • +
  • MySensors received two big changes that will cause you to update your configs. See component page for new example config. +
      +
    1. All MySensors entity IDs are different! There was an error in the naming that caused MySensors to append node ID and child ID instead of separating them with an underscore. This has been fixed but will cause all your MySensors entity IDs to change. This is a one time breaking change.
    2. +
    3. The second change is that we now support the TCP ethernet gateway. This is causing a slight change to the config format: you have to change port: under gateways to device:.
    4. +
    +
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html new file mode 100644 index 0000000000..bcd122fbba --- /dev/null +++ b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html @@ -0,0 +1,286 @@ + + + + + + + + + iBeacons: Making presence detection work better (part I) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

iBeacons: Making presence detection work better (part I)

+
+ + + nine minutes reading time + + +
    +
  • iBeacons
  • +
  • Presence-Detection
  • +
  • OwnTracks
  • +
+
+ Comments +
+
+

This post is by Home Assistant contributor Greg Dowling.

+

In 2013 Apple introduced iBeacons: a class of Bluetooth low energy (LE) devices that broadcast their identifier to nearby devices, including most smartphones. At first glance it’s hard to imagine why they might be useful. In this two part blog I’ll try and explain why they are useful and how you can use them with Home Assistant.

+

The reason I started using iBeacons was to improve presence detection (and I think that’s the case with most people) so that’s what I’ll discuss in part 1. In part 2 I’ll talk about using iBeacons to track devices that can’t track themselves.

+

Using beacons to improve OwnTracks location data

+

When you use OwnTracks in standard major move mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient!

+

Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon.

+ +

Getting Started

+

To do this you first need to set up MQTT and OwnTracks in Home assistant - and make sure that HA can track your phone.

+

You then have to (A) tell Home Assistant where the beacon is located and (B) tell OwnTracks to recognize the beacon.

+

A. Tell Home Assistant where your beacon is located

+

You tell HomeAssistant about fixed locations by creating a Zone with the longitude and latitude of your beacon. You should also give the zone a name which you will also use when you set up OwnTracks. An an example this zone specifies the location of my drive way.

+

Example configuration.yaml entry

+

+zone:
+    - name: 'Drive'
+      latitude: XXX
+      longitude: YYY
+      radius: 100
+
+
+

The radius isn’t used by the beacon code, but it is used by the GPS location sensing code. I’ll come back to this a little later. For now just use 50 or 100.

+

Once you’ve created the zone - you need to restart HA. The next step is:-

+

B. Tell OwnTracks to track your beacon

+
    +
  1. Go to the OwnTracks app on your phone
  2. +
  3. Touch the Regions menu at the bottom of the screen
  4. +
  5. Touch the + symbol at the top right of the screen
  6. +
  7. Give the beacon a name e.g. -drive ’(start the name with a - see below for the reason)
  8. +
  9. Turn Share to On
  10. +
  11. Skip the Circular Region section
  12. +
  13. Enter the UUID of your beacon - this may be written on your beacon - or you can copy it from the management app that came with your iBeacon device. It’s a long number – so it’s easier to copy if you can!
  14. +
  15. Enter the Minor and Major numbers for your iBeacon - or leave them at 0 which will match all beacons with that UUID
  16. +
+

+ +

+

Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red.

+

+ +

+

When OwnTracks sees the beacon (and turns the region red), it also sends an MQTT packet to HA to say that you have entered that region.

+

The result of the configuration above would be to set the location of device.phone to Drive , (and the GPS location to XXX,YYY) when your phone sees the beacon.

+

So with the steps above you should be able to improve the reliability of tracking your phone - and send timely updates to HA. I did this for my home - and the lights now turn on before I reach the house on foot. If I arrive by car they turn on within a few seconds of arriving, before I can get to the front door.

+

I’m also pleased to say I no longer get an arrive home event at 2am that turns the lights on. I hope I’ve convinced you that iBeacons are worth trying!

+

Mixing Beacons and GPS locations

+

You will probably use beacons to make entry into your existing GPS zones more reliable. By default either a beacon or a GPS location can cause you to enter a zone - and HA has some logic that should make them two work well together (it ignores GPS updates when you’re in an iBeacon Zone).

+

However you can also use beacons for situations where GPS doesn’t work well.

+

This might be because the zones are too close together - or even on top of each other! +For example, my wife works next door - and I couldn’t detect whether she’s at home or in the office via GPS because the accuracy wasn’t high enough. However I can do this by using two beacons.

+

To make this type of presence detection work you need to turn GPS off for a zone in Home Assistant by making them passive. This is important because otherwise HA will try to decide between two close together zones without enough data. This doesn’t work well.

+

A passive zone can only be entered via an iBeacon, so a GPS location update will always pick the other zone.

+

I set up my Home zone to be a standard region, and my office zone to be passive, so the home zone can be entered in the normal way via either GPS or a Beacon.

+

Example configuration.yaml entry

+

+zone:
+    - name: 'Office'
+      latitude: XXX
+      longitude: YYY
+      radius: 3
+      passive: true
+
+
+

You could use this technique to try to detect which room someone is in. This might allow you to notice whether someone is in the living room or the bedroom - even though one is above the other (although beacon packets do pass through walls and floors).

+

To get this to work you’ll probably need to experiment with the beacon signal strength to try to match the beacon reception area to the location you want to track. Let me know if you get this to work (it doesn’t make sense in my open plan house)

+

Conclusion

+

Presence tracking sounds easy - and it’s an important part of Home Automation. Trying it shows how difficult it is to get presence detection right. I’ve found that iBeacons have improved the reliability and timeliness of knowing where I am, and I hope I encouraged you to try them too.

+

Tips

+

You can find out more about configuring the OwnTracks application and beacons here

+

There is information about configuring Homeassistant to use beacons here

+

Connections and disconnecting

+

Owntracks treats a region name with a leading - as a hint that it shouldn’t disconnect after a single missed packet. This improves the ability to keep a connection to a beacon.

+

However, even when using this feature I’ve noticed that you can still lose connections (although it seems to vary by beacon manufacturer and type - I’ll talk more about this in part 2). This means that it’s best to take into account that you may see false enter/leave events in HA. You may be able to improve this by changing how often the beacons send packets - and by increasing the signal strength (both will drain your beacon batteries more quickly). You can usually change these parameters in the app supplied by the iBeacon maker. You can also find some high power beacons (which have worked well for me).

+

In automations you can use a for: to avoid triggering during a brief disconnect, or use a script with a delay. Stay tuned for part 2 for an example of this.

+

Using Multiple beacons for the same Zone

+

iBeacons have a UUID (usually set to the same value for beacons from the same manufacturer), as well as a minor and major number. If you set two beacons to have exactly same details then OwnTracks will think multiple beacons are at the same location.

+

This means you can have more than one beacon around your home - and a connection to any of them will count as home to OwnTracks and HA. This reduces disconnections.

+

You can achieve the same effect by using the same the same UUID but different major / minor numbers - and tell OwnTracks not to worry about the minor / major numbers for a particular region by setting them to 0).

+

Make sure to also check out part II where I talk about how to use iBeacons to track any object.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/06/open-iot-summit-talk/index.html b/blog/2016/05/06/open-iot-summit-talk/index.html new file mode 100644 index 0000000000..bf263313c4 --- /dev/null +++ b/blog/2016/05/06/open-iot-summit-talk/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Talk: Automating your home with Home Assistant (OpenIoT Summit) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Talk: Automating your home with Home Assistant (OpenIoT Summit)

+
+ + + Less than one minute reading time + + +
    +
  • Talks
  • +
  • Video
  • +
+
+ Comments +
+
+

At the beginning of April I gave a talk about Home Assistant at the OpenIoT summit in San Diego. I talk about the Home Assistant architecture and explain how to get started integrating your devices. Big thanks to my employer AppFolio (we’re hiring!) for letting me attend. Slides.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/07/empowering-scripts-and-alexa/index.html b/blog/2016/05/07/empowering-scripts-and-alexa/index.html new file mode 100644 index 0000000000..98f4deb993 --- /dev/null +++ b/blog/2016/05/07/empowering-scripts-and-alexa/index.html @@ -0,0 +1,284 @@ + + + + + + + + + 0.19: Empowering scripts and Alexa - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.19: Empowering scripts and Alexa

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic.

+

Scripts are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including from_state !). Passing data to script entities is available by passing the data to the script services.

+
automation:
+  trigger:
+    platform: mqtt
+    topic: some/notify/topic
+  action:
+    service: notify.notify
+    data_template:
+      message: 
+
+automation 2:
+  trigger:
+    platform: state
+    entity_id: light.hue
+  action:
+    service: notify.notify
+    data_template:
+      message:  is now 
+
+
+

Entity Namespaces allow you to influence the entity ids for a specific platform. For example you can turn light.living_room into light.holiday_home_living_room with the following config:

+
light:
+  platform: hue
+  entity_namespace: holiday_home
+
+
+ +

Deprecations

+
    +
  • Conditions in automations should now specify which condition to use with condition: instead of platform:. For example condition: state.
  • +
  • RFXtrx has a new config format.
  • +
+

Old RFXtrx config format:

+
  devices:
+    123efab1:
+      name: My DI.0 light device
+      packetid: 1b2200000890efab1213f60
+
+
+

New RFXtrx config format:

+
  devices:
+    1b2200000890efab1213f60:
+      name: My DI.0 light device
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/12/video-configuring-home-assistant/index.html b/blog/2016/05/12/video-configuring-home-assistant/index.html new file mode 100644 index 0000000000..aedb0da01e --- /dev/null +++ b/blog/2016/05/12/video-configuring-home-assistant/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Video: How To Configure Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Video: How To Configure Home Assistant

+
+ + + Less than one minute reading time + + +
    +
  • Video
  • +
+
+ Comments +
+
+

Ben from BRUH Automation authors a lot of great video’s about how he is using Home Assistant and how you can get started with it too. The video below will walk you through how to configure Home Assistant. Enjoy!

+

Make sure to subscribe to his YouTube channel for more Home Assistant video’s.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/18/why-we-use-polymer/index.html b/blog/2016/05/18/why-we-use-polymer/index.html new file mode 100644 index 0000000000..03ecc07507 --- /dev/null +++ b/blog/2016/05/18/why-we-use-polymer/index.html @@ -0,0 +1,216 @@ + + + + + + + + + Why we use web components and Polymer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Why we use web components and Polymer

+
+ + + three minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

I’ve been planning to write this post for a while now as we get questions like this a lot: “Why does Home Assistant use Polymer? Why not React, Redux and what not?”

+

It’s understandable, Polymer is quite the underdog in the world of web frameworks. A corporate backer does not guarantee popularity or an active community and this shows in the number of projects using Polymer.

+

Still, we use Polymer and it’s awesome. To explain why, I’ll be referencing the React workflow quite a bit, as they do a lot of things right, and show how it is done in Polymer.

+

Polymer gives us components for the web, just like React, but based on web standards: web components, CSS variables. These standards don’t have wide browser support yet but it’s being implemented by every major browser: It’s the future. For now they are being polyfilled and that works just fine but in the future the Home Assistant web app will be able to run native in the browsers == fast.

+ +

Polymer does not have the nice developer experience that one can have with React and the React Dev Tools but that’s a matter of time. The developer tools in every browser have seen a lot of improvements recently and each improvement helps support for web components.

+

Another major benefit of Polymer for Home Assistant is that we get material design for free. The material design components that come with Polymer have a very high quality. Google is using these components themselves and make sure that performance and accessibility using screen readers/keyboards are great. As an open source project, the more we can outsource, the better - so our contributors can focus on the core product: home automation.

+

What about Flux, data management and interaction between components? It’s actually pretty similar to React or any other component based framework. Flux-like architectures work with Polymer just like with React: whenever data changes it will update the attributes of a component which will propagate to the children. For Home Assistant we use NuclearJS with our own Polymer bindings. For data moving from child to parent the Polymer pattern is using DOM events instead of callbacks but the end result is the same. It is so similar in fact, that it took me only two hours to make a React Native frontend for on top of our core.

+

So what about Babel and ES2015? Also this is covered. Each web component exists of a HTML template and a JavaScript class to back it. Think of the HTML template as the render method in React. In Home Assistant we have the HTML templates import one another and have a separate chain for the JavaScript classes backing each component. This allows us to use Babel and NPM modules for the JavaScript part (more info here). This does however come with the downside of other JS based frameworks: the browser blocks any painting while the JavaScript is being parsed instead of upgrading the website incrementally. This, however, is something we take for granted right now and hope that module bundlers will be able to solve this for us eventually. Tree shaking is a very promising improvement in this space.

+

Most of this blog post has been comparing Polymer to React. In many ways Polymer is similar to React but it is not as far evolved yet. I like React but I do not see it as a technology that will be around forever. Given the trend of previous popular JS frameworks, React will probably get replaced by another framework that works even better. Web components however will be here forever as they are part of the HTML standard. And this gives us peace of mind at the virtual Home Assistant headquarters: we do not have to be afraid of having to rewrite our frontend just to stay relevant or because people don’t want to include another dependency just to run this legacy piece.

+

So there it is, the reason why we use Polymer.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/21/release-020/index.html b/blog/2016/05/21/release-020/index.html new file mode 100644 index 0000000000..8d5938ed5d --- /dev/null +++ b/blog/2016/05/21/release-020/index.html @@ -0,0 +1,240 @@ + + + + + + + + + 0.20: Roku, Last.fm, AWS, Twilio - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.20: Roku, Last.fm, AWS, Twilio

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Tons of new supported things in 0.20.

+ +

Breaking changes

+
    +
  • Asus WRT will now default to SSH with Telnet being an option
  • +
+
device_tracker:
+  platform: asuswrt
+  protocol: telnet
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html new file mode 100644 index 0000000000..edab91b47d --- /dev/null +++ b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html @@ -0,0 +1,213 @@ + + + + + + + + + Raspberry Pi all-in-one installer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Raspberry Pi all-in-one installer

+
+ + + Less than one minute reading time + + +
    +
  • Video
  • +
+
+ Comments +
+
+

We are always hard at work at the virtual Home Assistant headquarters to make it easier for you to get started with Home Assistant. That’s why @jbags81 recently introduced the all-in-one installer. It allows you to get up and running with a complete Home Assistant setup by entering one line of code into your Raspberry Pi running Raspbian Jessie:

+
wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh;
+
+
+

This feature wouldn’t be complete if it wasn’t accompanied by a new video by Ben from BRUH Automation. The video shows how to install Raspbian Jessie on your Raspberry Pi and use the new installation script to get a full Home Assistant system up and running.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html new file mode 100644 index 0000000000..973571ca75 --- /dev/null +++ b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html @@ -0,0 +1,314 @@ + + + + + + + + + iBeacons: How to track things that can’t track themselves (part II) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

iBeacons: How to track things that can’t track themselves (part II)

+
+ + + eight minutes reading time + + +
    +
  • iBeacons
  • +
  • Device-Tracking
  • +
  • OwnTracks
  • +
+
+ Comments +
+
+

This post is by Home Assistant contributor Greg Dowling.

+

In Part 1 I talked about using iBeacons to improve presence tracking. In part 2 I’ll talk about how to track things like keys that can’t track themselves by using iBeacons.

+

Tracking things using iBeacons

+

In the first part I mentioned that iBeacons just send out I’m here packets, and we used this to trigger an update when your phone came close to a fixed beacon.

+

But beacons don’t have to be fixed.

+

Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an I’m here message then it knows the beacon is close.

+

If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn’t have any tracking technology itself.

+

So if you put an iBeacon on your keys or in your car - then you can track them.

+

+ + Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective! +

+ +

It’s easier to set up OwnTracks and HA to track a mobile beacon than the fixed beacon I discussed in Part 1, because you only need to tell OwnTracks about your iBeacon. You don’t need to configure HA at all.

+

OwnTracks currently only supports mobile beacons on iOS.

+

You set up the beacon the same way as we discussed in part 1. The only difference is that instead of calling the region the name of a location (eg -drive) you call it the name of the device you want to track (eg -keys). Remember the leading ‘-’ that makes the connection more reliable.

+

+ +

+

Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red.

+

Because you turned Share on for the region, when OwnTracks sees the beacon it will send HA a message. HA will use this message to add the beacon as a tracked device if it hasn’t seen it before. So you should see a new device appear in HA called device_tracker.beacon_[name] - and its location will be where your phone thought it was when it last saw the beacon.

+

+ +

+

If your phone moves and sends HA a new location while it is still in range of the beacon - HA will update the location of the beacon. So if go for a drive in your car - you will see both your phone and the device_tracker.beacon_car move together.

+

If you park your car and go shopping - device_tracker.beacon_car will stop moving.

+

With the basic tracking working - you can use automation to do things like open your gates if your car comes home

+
automation:
+    - alias: 'Open gate'
+      trigger:
+        - platform: state
+          entity_id: device_tracker.beacon_car
+          from: 'not_home'
+          to: 'home'
+      condition:
+        - condition: state
+          entity_id: switch.gate
+          state: 'off'
+      action:
+          service: switch.turn_on
+          entity_id: switch.gate
+
+
+

Or warn you if you leave your keys behind

+
automation:
+  - alias: 'Forgotten keys'
+    trigger:
+      platform: template
+      value_template: '{{ states.device_tracker.greg_gregphone.state != states.device_tracker.beacon_keys.state}}'
+    condition:
+      condition: template
+      value_template: '{{ states.device_tracker.greg_gregphone.state != "home" }}'
+    action:
+      service: script.turn_on
+      entity_id: script.send_key_alert
+
+  - alias: 'Forgotten keys - cancel'
+    trigger:
+      platform: template
+      value_template: '{{ states.device_tracker.greg_gregphone.state == states.device_tracker.beacon_keys.state }}'
+    condition:
+      - condition: state
+        entity_id: script.send_key_alert
+        state: 'on'
+    action:
+      service: script.turn_off
+      entity_id: script.send_key_alert
+
+
+
script:
+  send_key_alert:
+    sequence:
+      - delay:
+          minutes: 2
+      - service: notify.notify
+        data:
+            message: 'You forgot your keys'
+            target: 'device/gregs_iphone'
+
+
+

(The delay is needed for two reasons: -

+
    +
  1. HA updates the beacon and phone locations at slightly different times - so you don’t want the automation to trigger in the gap between the updates
  2. +
  3. I’ve found that beacons (especially the low power Estimote Nearables) can get disconnected for a few seconds so it’s best to wait a minute or so before deciding that you’ve left your keys behind)
  4. +
+

Using both types of iBeacons at the same time

+

Of course you can use both fixed and mobile beacons at the same time. I want my gates to open when I arrive home in the car - so I use an iBeacon in the car so that I can track the car, and an iBeacon on my drive so that a location update is triggered when I arrive. I’ve been experimenting with a high power beacon in a waterproof box on my drive which seems to work well to notice when I get home.

+

+ +

+

Long range / High power beacon

+

+ +

+

Waterproof beacon

+

Buying Beacons

+

This isn’t a buyer’s guide, but I just wanted to mention the iBeacons I’ve been using. I think you should be able to use any iBeacon with HA and OwnTracks. You generally can’t buy beacons in your local electronics shop - so I just wanted to briefly mention the two suppliers I’ve used so far.

+

I’ve bought quite a few iBeacons from a company called Blue Sense Networks. I work in the tech startup sector in the UK so I partly chose them because they are a local start-up who seemed worth supporting. The products, support and software all seem good. I use a number of their beacons - from a simple USB dongle, to a long range beacon. All their products have batteries that can be changed (or no batteries in the case of the externally powered USB device) - and you can configure all the parameters you’d want to using their software. I had one software issue, support got back to me at a weekend(!) - and the issue was resolved with a software release two days later.

+

All the beacons seem fine - and the long range unit does work over a longer range than my other beacons.

+

I bought some other beacons from a US/Polish startup called Estimote, who I think are better known. I bought a developer pack of 10 of their nearables which as well as being iBeacons also send out other data (orientation and motion) using their own protocol. This is interesting if you’re developing your own application, but for OwnTracks and HA they are just regular beacons. They are small and self adhesive - so you can stick them to things (like your keys). You can’t change all the parameters on these devices (UUID/Major/Minor are fixed) - and the batteries can’t be replaced. I also killed one of the estimote beacons (I assume the battery died) after I carried it around for a few months and dropped it many times! On the other hand they are well priced, small and waterproof!

+

I’ve mainly used these as devices to track rather that location beacons. Estimote also sell some slightly larger iBeacons with replaceable batteries. Estimote support responded quickly and were helpful when I couldn’t work out how to edit their beacon’s parameters (although the answer was you can’t yet).

+

The larger Blue Sense Network beacons seem to be better at maintaining a connection that the Estimotes - although that might be because I’m reluctant to turn the power to maximum and reduce the gap between sending packets on the Estimotes where I can’t replace the batteries!

+

Conclusion

+

As I said in part 1, I’ve found iBeacons to be a good way of improving presence detection. I also used them to track devices like my car and my keys that can’t track themselves.

+

I’m still experimenting, so I hope I can do more with iBeacons. I hope I’ve encouraged you do so the same. If you do please share your experiences.

+

Notes

+

Please see the notes at the end of Part 1 for documentation information.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/06/01/community-highlights/index.html b/blog/2016/06/01/community-highlights/index.html new file mode 100644 index 0000000000..21abbe0bff --- /dev/null +++ b/blog/2016/06/01/community-highlights/index.html @@ -0,0 +1,222 @@ + + + + + + + + + Community Highlights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Community Highlights

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
  • Video
  • +
+
+ Comments +
+
+

Our community is amazingly helpful and creative. If you haven’t been there yet, make sure to stop by our chat room and come hang out with us. In this blog post I want to highlight a few recent awesome projects and videos from the community.

+

SceneGen - cli for making scenes

+

SceneGen is a new command line utility developed by Andrew Cockburn that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states.

+

Videos

+

Nick Touran has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up a blog post and has put out a video showing the new integration, very cool!

+
+ +
+

Ben from BRUH Automation has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks.

+
+ +
+

Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html new file mode 100644 index 0000000000..8d87742a23 --- /dev/null +++ b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html @@ -0,0 +1,254 @@ + + + + + + + + + 0.21: Improved Web and support for EnOcean, LIRC and Osram Lightify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.21: Improved Web and support for EnOcean, LIRC and Osram Lightify

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for release 0.21 and it contains massive core improvements: replacement of our home grown HTTP stack with a standardized WSGI stack. This will improve performance, speed, security and make future development of advanced HTTP features a breeze.

+

This work was driven by the amazing Josh Wright. His knowledge, high standards and drive for security has helped improve Home Assistant a lot ever since he started helping out. Hip hip hurray for Josh!

+

Alright, time for the changes:

+

+ +

Breaking Changes

+
    +
  • Our work in the WSGI stack is not fully done yet. We still have a minor issues where retrieving the error log in the about screen can raise an encoding error
  • +
  • The API used to incorrectly accept a JSON body with form-url-encoded headers. Our cURL examples on the website used to be wrong and have been updated.
  • +
  • Make sure your configuration.yaml file contains frontend: to serve the frontend
  • +
+

Hotfixes 0.21.1 and 0.21.2

+

We released two hotfixes to address some issues that couldn’t wait till the next release.

+
0.21.1 - June 12
+
    +
  • Add eventlet to base requirements to resolve some installation issues (@balloob)
  • +
  • GTFS will filter out routes in the wrong direction (@imrehg)
  • +
  • Recover from rare error condition from LIRC (@partofthething)
  • +
  • Z-Wave autoheal will no longer raise exception (@balloob)
  • +
  • Alexa will now execute the script before making reply (@balloob)
  • +
  • Fix MJPEG camera streaming (@stjohnjohnson)
  • +
  • Fix frontend in older browsers (@balloob)
  • +
  • Fix history in more info dialog being cut off (@balloob)
  • +
+
0.21.2 - June 15
+
    +
  • Fix input_select calling the set_option service again when changed (@persandstrom)
  • +
  • Fix more info dialog not being able to open on Safari (@balloob)
  • +
  • Add support for OPTIONS HTTP command to get CORS working (@JshWright)
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html new file mode 100644 index 0000000000..f1dc342dc8 --- /dev/null +++ b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html @@ -0,0 +1,226 @@ + + + + + + + + + Home Assistant at PyCon 2016 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant at PyCon 2016

+
+ + + two minutes reading time + + +
    +
  • Video
  • +
+
+ Comments +
+
+

It’s been already almost two weeks ago that a few of the Home Assistant developers headed towards Portland for PyCon 2016 - the conference about everything Python. We were there to learn all the nifty tricks to make our code better but most of all, to talk Home Automation.

+

+ Home Assistant developers + Couple of Home Assistant devs. Left to right: Paulus (@balloob), Alex (@infamy), Ryan (@rmkraus). +

+

On Monday I (Paulus) gave a presentation about Home Assistant to an audience of over 400 people! It was a bit scary at first but after a couple of minutes it went all great including some great questions afterwards. Slides can be found here and the talk is embedded right below:

+
+ +
+

One of the things that really impressed me was the amount of people that approached us to tell how they love Home Assistant, how it has replaced their previous solution, how they enjoyed contributing to Home Assistant and how helpful our community is. It makes me proud of Home Assistant and especially our community.

+ +

PyCon has a few great concepts that I haven’t seen at other conferences: open spaces and sprints. Open spaces give anyone the opportunity to get a room and host a session for an hour to talk about any topic. Sprints happen after the conference part of PyCon is over. For four days there are rooms available for participants to get together and hack on their favorite open source projects.

+

My talk had limited time for Q&A so open spaces offered a great opportunity to get all pending questions answered and connect with the commmunity. There was more interest after the first day so we ended up hosting another open space on the second day.

+ +

We’ve had such positive reception on our open spaces that Jonathan Baginski decided to repeat it online. We will be hosting a free online webinar Home Assistant Support 101 - Getting around in Home Assistant later this month. Make sure to RSVP.

+

After the conference part of PyCon was over we spent one extra day to host a Home Assistant sprint. This allowed us to help people get started with hacking on Home Assistant which lead to some great contributions.

+

+ Home Assistant sprint group photo + Home Assistant sprint group photo. +

+

I’ve had a really great time at PyCon. It was awesome to meet everyone in person and I hope to see many of you next year!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html new file mode 100644 index 0000000000..f738a50986 --- /dev/null +++ b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html @@ -0,0 +1,248 @@ + + + + + + + + + 0.22: Pandora, BT Home Hub 5 and local file camera. - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.22: Pandora, BT Home Hub 5 and local file camera.

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for the 0.22 release. This was a pretty rough release cycle and we had to issue two hot fixes for our core improvements. But it seems now that all is good and a lot of people have reported that their installs are faster than ever and the occasional quirks no longer occur.

+

We are aware that our new web stack has caused issues installing Home Assistant on ARM-based platforms. This sadly includes the Raspberry Pi and Synology NAS systems. We’re working on getting to a better solution. For Raspberry Pi, the All-in-One installer will take care of everything for you. We’re working on updating our standalone Raspberry Pi installation guide.

+

There are two cool things that I want to highlight in this release. The first is Pandora support. This is based on the CLI player called pianobar. This means that your machine running Home Assistant can be connected to the speakers and provide your house with tunes.

+

+ +

+

Another cool addition is the local file camera. This seems very basic at first but will allow you to generate a graph with your favorite 3rd party graphing tool and display it on your Home Assistant dashboard. We’re looking forward to see what you can do with this!

+

+ +

Breaking change

+
    +
  • The new Netatmo support caused us to change how Netatmo are configured. It’s now done via it’s own component.
  • +
+
netatmo:
+    api_key: API_KEY
+    secret_key: SECRET_KEY
+    username: username
+    password: password
+
+
+

Hotfix 0.22.1 - June 20

+
    +
  • Insteon Hub lights will load again
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html new file mode 100644 index 0000000000..37d2c76354 --- /dev/null +++ b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html @@ -0,0 +1,294 @@ + + + + + + + + + Using USB webcams with Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Using USB webcams with Home Assistant

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

+In the past month I was thinking about ways to integrate USB webcams into Home Assistant again. The main reason was that this would give those devices a second life and enable one to benefit from low-cost video surveillance. There are a couple of options available like pygame or SimpleCV but I never finished something. With the Local File camera platform by Landrash and motion you could integrate a local USB webcam with a few very easy steps.

+

In this blog post I am using a Fedora 24 (will most likely work on other distributions too) installation with Home Assistant 0.22.1 on a Foxconn nT-330i with an old Logitech QuickCam Orbit AF and a Logitech HD Webcam C270. As a start only the Quickcam is used. No multi-camera setup for now.

+ +

Check first if the your operating system lists your cameras.

+
$ lsusb
+[...]
+Bus 002 Device 016: ID 046d:08cc Logitech, Inc. Mic (PTZ)
+[...]
+
+
+

The camera we are going to use is available at /dev/video1. The C270 is the one on /dev/video0.

+
$ ls -al /dev/video*
+crw-rw----+ 1 root video 81, 0 Jun 23 08:05 /dev/video0
+crw-rw----+ 1 root video 81, 1 Jun 23 08:36 /dev/video1
+
+
+

We need an additional software part to handle the cameras. motion is capable of monitoring the video signal from USB and network cameras, do motion detection, and other nifty stuff like saving images, add text, or basic image manipulations. Make sure that you have the RPM Fusion repository enabled.

+
$ sudo dnf -y install motion
+
+
+

For our setup we need to modify the file /etc/motion/motion.conf. For now the most important parameters are videodevice, snapshot_interval, and target_dir. The other settings can be left to their defaults. We are going to use the device /dev/video1, use a 30 seconds interval, and set the path to /tmp.

+
[...]
+###########################################################
+# Capture device options
+############################################################
+
+# Videodevice to be used for capturing  (default /dev/video0)
+# for FreeBSD default is /dev/bktr0
+videodevice /dev/video1
+
+[..]
+############################################################
+# Snapshots (Traditional Periodic Webcam File Output)
+############################################################
+
+# Make automated snapshot every N seconds (default: 0 = disabled)
+snapshot_interval 30
+
+[...]
+############################################################
+# Target Directories and filenames For Images And Films
+# For the options snapshot_, picture_, movie_ and timelapse_filename
+# you can use conversion specifiers
+# %Y = year, %m = month, %d = date,
+# %H = hour, %M = minute, %S = second,
+# %v = event, %q = frame number, %t = thread (camera) number,
+# %D = changed pixels, %N = noise level,
+# %i and %J = width and height of motion area,
+# %K and %L = X and Y coordinates of motion center
+# %C = value defined by text_event
+# Quotation marks round string are allowed.
+############################################################
+
+# Target base directory for pictures and films
+# Recommended to use absolute path. (Default: current working directory)
+target_dir /tmp
+
+[...]
+
+
+

It’s suggested that you adjust at least width and height to get a bigger image from your camera. If you are done, fire up motion.

+
$ sudo motion
+[0] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
+[0] [ALR] [ALL] conf_cmdparse: Unknown config option "sdl_threadnr"
+[0] [NTC] [ALL] motion_startup: Motion 3.3.0 Started
+[0] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion.log)
+
+
+

Your target_dir will start filling up with images from your camera. motion will create a symlink called lastsnap.jpg which always point to the latest snapshot. We will setup the Local File camera platform to use this file.

+
camera:
+  - platform: local_file
+    name: Cranberry cam
+    file_path: /tmp/lastsnap.jpg
+
+
+

+ + The “Cranberry cam” in action +

+

The machine with the attached USB camera will become a webcam server as well because motion’s built-in HTTP server is enabled by default. This means that you could connect your USB webcams to a different machine in your network, run motion there, adjust your firewall rules, and use Home Assistant to display the videos. Just check http://[IP of your webcam host]:8081/ to see the stream. This required more powerful hardware than using snapshots, of course.

+

In a scenario like this needs a Generic MJPEG IP Camera in your configuration.yaml file.

+
camera:
+  - platform: mjpeg
+    mjpeg_url: http://[IP of your webcam host]:8081
+    name: Cranberry Live cam
+
+
+

motion is a powerful tool and this blog post only showed two very simple use cases. Take a look at the documentation of motion to unleash its potential.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html new file mode 100644 index 0000000000..69d4c146e1 --- /dev/null +++ b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html @@ -0,0 +1,249 @@ + + + + + + + + + 0.23: Envisalink, Homematic, HDMI-CEC and Sony Bravia TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.23: Envisalink, Homematic, HDMI-CEC and Sony Bravia TV

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for Home Assistant 0.23 and it’s full of goodies. It’s also the release that bumps us over a 1000 tests and to 94% test coverage! Also our install issues on the Raspberry Pi and Synology have been resolved.

+

This release brings support for two new ecosystems: Envisalink and Homematic. We can now also control your TV via HDMI using HDMI-CEC (which works on the Pi!) and another cool feature is the persistent notifications which allow you to add a notification to the frontend till dismissed.

+

Wink support has been dramatically improved by migrating to the PubNub API. This allows Wink to push changes from their system to Home Assistant. This change came just in time as somehow our Wink integration was causing a lot of requests to their servers. Thanks to Wink for letting us know so we could solve it instead of blocking us.

+

On the config side, you can now store your passwords in your OS keyring or just in a standalone file. We also got a new service to reload the core config so no reboots needed anymore after changing customize settings!

+

+ +

Breaking changes

+
    +
  • Homematic thermostat configuration has changed and now depends on the new Homematic component.
  • +
+

Hotfix 0.23.1 - July 2

+
    +
  • Bump PyVera to 0.2.13 to fix traceback and pyvera thread dying related to bug (@rhooper)
  • +
  • HTTP - SSL: Check for OP_NO_COMPRESSION support before trying to use it (@AlucardZero)
  • +
  • Wink: Downgraded pubnub to work around pycryptodome conflicts (@w1ll1am23)
  • +
+

FAQ

+
    +
  • elevation: was introduced to the configuration for weather/sunrise data. For existing configurations add the value shown in the warning [homeassistant.config] Incomplete core config. Auto detected elevation: 665 to your configuration.yaml file.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/06/pocketchip-running-home-assistant/index.html b/blog/2016/07/06/pocketchip-running-home-assistant/index.html new file mode 100644 index 0000000000..70e360c5da --- /dev/null +++ b/blog/2016/07/06/pocketchip-running-home-assistant/index.html @@ -0,0 +1,239 @@ + + + + + + + + + PocketCHIP running Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

PocketCHIP running Home Assistant

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

+Over a year ago I participated in the kickstarter campaign for “CHIP - The World’s First Nine Dollar Computer” by Next Thing Co.. I went for the PocketCHIP because of the idea. Display, built-in storage (thus no need for SD cards), battery-powered, and a keyboard are pretty nice features. Last week a package arrives…

+ +

Thanks to Next Thing Co. and their CHIP which is actually 9 USD the space requirement for a single board computer has decreased. No Ethernet and HDMI output helped with that. But I guess that the next development cycle will allow us to put those boards in a matchbox including wired networking and a SATA interface.

+

+ + Size comparison of a Cubieboard, OrangePi One, and CHIP. +

+

If you start using a PocketCHIP you will definitely look like a Blackberry or a GameBoy user. Typing is done with your thumbs :-)

+

First a couple of tweaks like setting up sudo, upgrading the existing installation, change passwords, enabling ssh, and removal of the annoying stuff then installation of Home Assistant. There is not much to tell…it’s straight-forward. For the sake of completeness below the notes about what I did.

+

A Debian installation is available by default. This means that some dependencies for Home Assistant are missing. I haven’t checked if a new build for the PocketCHIP would include them. So, after a $ sudo apt-get update installing those dependencies take a minute or two.

+
$ sudo apt-get install python3-dev python3-pip python3-venv
+
+
+

As usual I run Python applications in a venv.

+
$ pvenv ha
+
+
+

Let’s activate the created environment.

+
$ cd ha
+$ source bin/activate
+
+
+

If you haven’t seen the next two commands already then you should visit our frontsite.

+
$ pip3 install homeassistant
+$ hass --open-ui
+
+
+

With surf the browsing experience on the low-resolution display is not that great. Most smartphones, even very cheap ones, have touchscreens with higher resolutions. Nevermind, midori is not better.

+

+ + PocketCHIP with Home Assistant frontend +

+

Well, with PocketCHIP and Home Assistant you could run your home automation on a 49 USD device with a touchscreen, an integrated USP, and a keyboard. With the GPIO available on top of the display you could even connect your PocketCHIP directly to sensors and actuators.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html new file mode 100644 index 0000000000..e07076a4b5 --- /dev/null +++ b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html @@ -0,0 +1,245 @@ + + + + + + + + + 0.24: SQLAlchemy, KNX, Join by Joaoapps, and SimpliSafe. - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.24: SQLAlchemy, KNX, Join by Joaoapps, and SimpliSafe.

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for Home Assistant 0.24 and it’s full of new integration for your Home. It contains some structural changes to our history which requires action from your end, so please keep reading.

+

MapQuest discontinued their free and direct tile access by Monday, July 11, 2016. With CARTO we found a very cool and suitable solution. They allow us to use their tile for the map. Thank you, CARTO.

+

Roy Hooper did an amazing job migrating the history support from being tied to SQLite to use the ORM SQLAlchemy instead. This means that you can now use any SQL backend for the history. So besides SQLite you can now databases like MySQL or PostgreSQL. However, this does require that you install SQLAlchemy and run a command to migrate your existing history over. We tried to make the process as seamless as possible by introducing a new command line script:

+
$ pip3 install SQLAlchemy
+$ hass --script db_migrator --config /path/to/config
+
+
+

You can omit the --config option if you use the default configuration directory. Run the script with --help to get more options.

+

+ +

Hotfix 0.24.1 - July 21

+

Quick hot fix after we found a bug in the migrator where it wouldn’t work with a database in a non-standard location. Thanks to @n8henrie and @AlucardZero.

+

Breaking changes

+
    +
  • Migrating existing databases (see above).
  • +
  • The APCUPSd Sensor was updated. This will need that you modify your configuration.yaml file.
  • +
  • Entity IDs of Verisure locks will change. This is a one time change but should improve readability.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/19/visualizing-your-iot-data/index.html b/blog/2016/07/19/visualizing-your-iot-data/index.html new file mode 100644 index 0000000000..c76aa25863 --- /dev/null +++ b/blog/2016/07/19/visualizing-your-iot-data/index.html @@ -0,0 +1,282 @@ + + + + + + + + + Visualize your IoT data - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Visualize your IoT data

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
  • IoT-Data
  • +
+
+ Comments +
+
+

+

The history component is tracking everything that is going on within Home Assistant. This means that you have access to all stored information about your home. Our history is not a full-fledged graphical processing and visualization component as you may know from systems and network monitoring tools. The current limitation is that you only can select a day for a visual output of your information and not a period. Also, there is no possibility to drill down on a specific entity.

+

This blog post will show you ways to export data for reporting, visualization, or further analysis of automation rules.

+ +

In this blog post I use the temperature of the Aare river close to where I live as a show case. The temperatures were recorded with the Swiss Hydrological Data sensor and the name of the sensor is sensor.aare.

+

The database is stored at <path to config dir>/.homeassistant/home-assistant_v2.db as SQLite database. In all examples we are going to use the path: /home/ha/.homeassistant/home-assistant_v2.db

+

If you are just curious what’s stored in your database then you can use the sqlite3 command-line tool or a graphical one like DB Browser for SQLite.

+

The table that is holding the states is called states. The events tables is responsible for storing the events which occurred. So, we will first check how many entries there are in the states table. sqlite3 needs to know where the databases is located. To work with your database make sure that Home Assistant is not running or create a copy of the existing database. It’s recommended to work with a copy.

+
$ sqlite3 /home/ha/.homeassistant/home-assistant_v2.db 
+SQLite version 3.11.0 2016-02-15 17:29:24
+sqlite> SELECT count(*) FROM states;
+24659
+
+
+

Let’s have a look at a sample SQL query. This query will show all states in a period for the sensor sensor.aare.

+
SELECT state, last_changed FROM states
+  WHERE
+    entity_id = 'sensor.aare'
+  AND
+     last_changed BETWEEN
+    '2016-07-05 00:00:00.000000' AND '2016-07-07 00:00:00.000000';
+
+
+

The SQL statement can be formed that it fits exactly what you need. This means that you can process the data in any way you want for further use. Often it makes sense to eliminate certain entries like Unknown or peaks.

+

If the above query is executed in DB Browser for SQLite you would be able to save the sensor’s graph as png.

+

+ + Visualization with DB Browser for SQLite +

+

You may ask: Why not do this with LibreOffice Calc or another spreadsheet application? As most spreadsheet applications are not able to work directly with SQLite database we are going to export the data from the database to CSV.

+
$ sqlite3 -header -csv /home/ha/.homeassistant/home-assistant_v2.db "SELECT last_changed, state FROM states WHERE entity_id = 'sensor.aare' AND last_changed BETWEEN '2016-07-05 00:00:00.000000' AND '2016-07-07 00:00:00.000000';" > sensor.csv
+
+
+

The ordering for the SELECT was changed to get the time stamps first and then the state. Now we can import the CSV file into the application of your choice, here it’s LibreOffice Calc.

+

+ + Import of the CSV file +

+

After the import a graph can be created over the existing data.

+

+ + Graph in LibreOffice +

+

You can also use matplotlib to generate graphs as an alternative to a spreadsheet application. This is a powerful Python 2D plotting library. With the built-in support for SQLite in Python it will only take a couple lines of code to visualize your data.

+
import sqlite3
+from matplotlib import dates
+import matplotlib.pyplot as plt
+
+import homeassistant.util.dt as dt
+
+values = []
+timestamps = []
+
+conn = sqlite3.connect('/home/ha/.homeassistant/home-assistant_v2.db')
+data = conn.execute("SELECT state, last_changed FROM states WHERE "
+                    "entity_id = 'sensor.aare' AND last_changed BETWEEN "
+                    "'2016-07-05 00:00:00.000000' AND "
+                    "'2016-07-07 00:00:00.000000'")
+
+for x in data:
+    timestamps.append(dates.date2num(dt.parse_datetime(x[1])))
+    values.append(float(x[0]))
+
+plt.plot_date(x=timestamps, y=values, fmt="r-")
+plt.ylabel('Temperature')
+plt.xlabel('Time line')
+
+plt.savefig('sensor.png')
+
+
+

Creating a connection to the database and executing a query is similar to the ways already seen. The return values from the query are split into two lists. The time stamps must be converted in an value which is accepted by matplotlib and then the graph is generated and saved as image.

+

+ + Sensor graph generated by matplotlib +

+

Most of the graphs are pretty ugly. So, further beautification will be needed. If you have created a nice report including some amazing graphs then the Home Assistant community would be grateful for sharing them in our forum.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html b/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html new file mode 100644 index 0000000000..b66195a1f7 --- /dev/null +++ b/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html @@ -0,0 +1,249 @@ + + + + + + + + + IoT Data Exploration with Jupyter Notebooks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

IoT Data Exploration with Jupyter Notebooks

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
  • IoT-Data
  • +
+
+ Comments +
+
+

This is the first blog post by Anton Kireyeu. A new contributor to Home Assistant who will focus on exploring and visualizing Home Assistant data.

+

As we learned in the recent blog post by Fabian, all operational data of your Home Assistant application is stored locally and is available for exploration. Our first steps were querying data with the DB Browser for SQLite, exporting the data extract as a CSV file and graphing in LibreOffice. But what else can be done with this data and what tools are there available?

+

This post will help you get set up using a few popular data scientist tools to allow you to locally process your data:

+
    +
  •  Pandas: an open source tool for data analysis for Python
  • +
  •  matplotlib: a Python plotting library
  • +
  •  Jupyter notebook: application for creation and sharing of documents containing live code, visualizations and explanatory text
  • +
+

+ +One of the graphs created with this tutorial. +

+

TL; DR: Use this Jupyter Notebook to visualize of your data

+ +

Dependencies

+

In order to run the provided Jupyter notebook, please make sure you have the following applications/libraries installed on your computer:

+
    +
  • Pandas
  • +
  • NumPy
  • +
  • Matplotlib
  • +
  • SQLAlchemy
  • +
  • Jupyter
  • +
+

As a Windows user myself, I find the easiest, quickest and most hassle-free way of installing all of these dependencies is to use WinPython. This free open-source portable distribution includes all of the dependencies required for this notebook, as well as a few other essential Python libraries you may require for data exploration in the future.

+

Why Jupyter?

+

While all Home Assistant implementations can have varying setup, components and scripts, the underlying data structure is standardized and well-defined. This allows us to write Python code that is environmentally agnostic. Wrapping it in a Jupyter notebook ensures the code, visualizations and directions/explanations are kept digestible and neatly-packaged. One of the amazing features of Jupyter is the ability to change code as you go along, customizing all outputs and visualizations on the fly!

+

Where do I start?

+

This tutorial is based around a heavily commented Jupyter Notebook that we created. So to get started, you will have to open that:

+
    +
  • download the tutorial Jupyter Notebook (leads to preview page, from there click download top-right)
  • +
  • launch the Jupyter Notebook App
  • +
  • Click the ‘upload’ button to add the downloaded notebook to Jupyter
  • +
  • Adjust the DB_URL at the beginning of the notebook to point at your Home Assistant database
  • +
  • Select in top menu: Cell -> Run All
  • +
+

That’s it! The included code will walk you through importing the required libraries, show running raw SQL against your local database, plotting basic data from the states table, and in the end output a few plots of changes for every entity in your system as well as the mean daily value for the past 20 days.

+

After just those few steps, you will be greeted with beautiful formatted data like this:

+

+ +One of the graphs created with this tutorial. +

+

What’s next?

+

Thanks to the magic of Jupyter, all of the code is customizable: want to selectively display your data, only covering a specific entity? Sure thing! Want to change the properties of the plots? No problem!

+

While you learn and explore your IoT data, we will be working on providing more ready-to-use Jupyter Notebooks. Feel free to ask questions or provide suggestions. Would you like to see a specific visualization? Is there a particular facet of data you’re interested in? Let’s talk about it, let’s dive into the world of data together!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/28/esp8266-and-micropython-part1/index.html b/blog/2016/07/28/esp8266-and-micropython-part1/index.html new file mode 100644 index 0000000000..70629ee513 --- /dev/null +++ b/blog/2016/07/28/esp8266-and-micropython-part1/index.html @@ -0,0 +1,329 @@ + + + + + + + + + ESP8266 and MicroPython - Part 1 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

ESP8266 and MicroPython - Part 1

+
+ + + six minutes reading time + + +
    +
  • How-To
  • +
  • ESP8266
  • +
  • Micropython
  • +
+
+ Comments +
+
+

+The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The documentation covers a lot of ground. This post is providing only a little summary which should get you started.

+

Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for download.

+ +

The easiest way is to use esptool.py for firmware handling tasks. First erase the flash:

+
$ sudo python esptool.py --port /dev/ttyUSB0 erase_flash
+esptool.py v1.0.2-dev
+Connecting...
+Erasing flash (this may take a while)...
+
+
+

and then load the firmware. You may adjust the file name of the firmware binary.

+
$ sudo python esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=8m 0 esp8266-2016-07-10-v1.8.2.bin
+esptool.py v1.2-dev
+Connecting...
+Running Cesanta flasher stub...
+Flash params set to 0x0020
+Writing 540672 @ 0x0... 540672 (100 %)
+Wrote 540672 bytes at 0x0 in 13.1 seconds (330.8 kbit/s)...
+Leaving...
+
+
+

Now reset the device. You should then be able to use the REPL (Read Evaluate Print Loop). 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 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. Alternatively, you can create a local clone of their GitHub repository. This is necessary if your want to use the command-line tool webrepl_cli.py which is mentionend later in this post.

+
$ sudo minicom -D /dev/ttyUSB0
+#4 ets_task(4020e374, 29, 3fff70e8, 10)                                                          
+WebREPL daemon started on ws://192.168.4.1:8266
+Started webrepl in setup mode
+could not open file 'main.py' for reading
+
+#5 ets_task(4010035c, 3, 3fff6360, 4)
+MicroPython v1.8.2-9-g805c2b9 on 2016-07-10; ESP module with ESP8266
+Type "help()" for more information.
+>>> 
+
+
+

+The public build of the firmware may be different than the firmware distributed to the backers of the Kickstarter campaign. Especially in regard of the available modules, turned on debug messages, and alike. Also, the WebREPL may not be started by default. +

+

Connect a LED to pin 5 (or another pin of your choosing) to check if the ESP8266 is working as expected.

+
>>> import machine
+>>> pin = machine.Pin(5, machine.Pin.OUT)
+>>> pin.high()
+
+
+

You can toogle the LED by changing its state with pin.high() and pin.low().

+

Various ESP8266 development board are shipped with an onboard photocell or a light dependent resistors (LDR) connected to the analog pin of your ESP8266 check if you are able to obtain a value.

+
>>> import machine
+>>> brightness = machine.ADC(0)
+>>> brightness.read()
+
+
+

Make sure that you are familiar with REPL and WebREPL because this will be needed soon. Keep in mind the password for the WebREPL access.

+

Read the instructions about how to setup your wireless connection. Basically you need to upload a boot.py file to the microcontroller and this file is taking care of the connection setup. Below you find a sample which is more or less the same as shown in the documentation.

+
def do_connect():
+    import network
+
+    SSID = 'SSID'
+    PASSWORD = 'PASSWORD'
+
+    sta_if = network.WLAN(network.STA_IF)
+    ap_if = network.WLAN(network.AP_IF)
+    if ap_if.active():
+        ap_if.active(False)
+    if not sta_if.isconnected():
+        print('connecting to network...')
+        sta_if.active(True)
+        sta_if.connect(SSID, PASSWORD)
+        while not sta_if.isconnected():
+            pass
+    print('Network configuration:', sta_if.ifconfig())
+
+
+

Upload this file with webrepl_cli.py or the WebREPL:

+
$ python webrepl_cli.py boot.py 192.168.4.1:/boot.py
+
+
+

If you reboot, you should see your current IP address in the terminal.

+
>>> Network configuration: ('192.168.0.10', '255.255.255.0', '192.168.0.1', '192.168.0.1')
+
+
+

First let’s create a little consumer for Home Assistant sensor’s state. The code to place in main.py is a mixture of code from above and the RESTful API of Home Assistant. If the temperature in the kitchen is higher than 20 °C then the LED connected to pin 5 is switched on.

+

+If a module is missing then you need to download it from the MicroPython Library overview and upload it to the ESP8266 with webrepl_cli.py manually. +

+
# Sample code to request the state of a Home Assistant entity.
+
+API_PASSWORD = 'YOUR_PASSWORD'
+URL = 'http://192.168.0.5:8123/api/states/'
+ENTITY = 'sensor.kitchen_temperature'
+TIMEOUT = 30
+PIN = 5
+
+def get_data():
+    import urequests
+    url = '{}{}'.format(URL, ENTITY)
+    headers = {'x-ha-access': API_PASSWORD,
+               'content-type': 'application/json'}
+    resp = urequests.get(URL, headers=headers)
+    return resp.json()['state']
+
+def main():
+    import machine
+    import time
+
+    pin = machine.Pin(PIN, machine.Pin.OUT)
+    while True:
+        try:
+            if int(get_data()) >= 20:
+                pin.high()
+            else:
+                pin.low()
+        except TypeError:
+            pass
+        time.sleep(TIMEOUT)
+
+if __name__ == '__main__':
+    print('Get the state of {}'.format(ENTITY))
+    main()
+
+
+

Upload main.py the same way as boot.py. After a reboot (>>> import machine and >>> machine.reboot()) or power-cycling your physical notifier is ready.

+

If you run into trouble, press “Ctrl+c” in the REPL to stop the execution of the code, enter >>> import webrepl and >>> webrepl.start(), and upload your fixed file.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html new file mode 100644 index 0000000000..f684225bb8 --- /dev/null +++ b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html @@ -0,0 +1,261 @@ + + + + + + + + + 0.25: Custom frontend panels, Jupyter notebooks, DirecTV. - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.25: Custom frontend panels, Jupyter notebooks, DirecTV.

+
+ + + four minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

When Home Assistant started the focus has always been on making a great developer experience. Allowing anyone to add support for their favorite devices to Home Assistant easily. This focus has been a great success since we now have 339 components and platforms!

+

Starting with this release, we are extending our extensibility to the frontend. Starting this release, any component can add its own page to the frontend. Examples of this today are the map, logbook and history. We are looking forward to all the crazy panels you’ll come up with!

+

We have also seen an exciting trend of people starting to visualize their Internet of Things data using Jupyter Notebooks, which are a great way to create and share documents that contain code, visualizations, and explanatory text. In case you missed it, the blog post by @kireyeu shows an advanced usecase while our Notebooks in the Home Assistant Notebooks repository cover the basics.

+

This release also includes a bunch of new integrations, among others three new media player platforms. This means that today Home Assistant can talk to 26 different media players!

+

The brand-new iFrame panel component allows you to add other websites as pages in the Home Assistant frontend. They will show up in the sidebar and can be used the same way as you open the frontend in your browser but all within one view.

+

I would like to do a shoutout to @fabianhjr. He has started adding typing data (PEP484) to the Home Assistant core. This will help us identify issues before they are released.

+

+ +

Hotfix 0.25.1 - August 1

+
    +
  • Light - Z-Wave: Bring back delayed value update behavior (@jnewland)
  • +
  • Recorder: Properly close session after execute (@kellerza)
  • +
  • Media Player - Kodi: No longer block startup if connecting to wrong port (@shoekstra)
  • +
  • Downgrade voluptuous to 0.8.9 as it blocked the upgrade for some (@balloob)
  • +
+

Hotfix 0.25.2 - August 2

+
    +
  • Hotfix to make sure Z-Wave locks work again. Thanks to @tobiebooth for the quick fix.
  • +
+

Breaking changes

+
    +
  • Google Voice SMS notification support was removed.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/03/laundry-automation-update/index.html b/blog/2016/08/03/laundry-automation-update/index.html new file mode 100644 index 0000000000..f0bc35581a --- /dev/null +++ b/blog/2016/08/03/laundry-automation-update/index.html @@ -0,0 +1,293 @@ + + + + + + + + + Laundry Sensors with NodeMCU and Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Laundry Sensors with NodeMCU and Home Assistant

+
+ + + four minutes reading time + + +
    +
  • User-Stories
  • +
+
+ Comments +
+
+

This is a guest post by Home Assistant user and contributor Nolan Gilley.

+

Today I’ll show you how I used Home Assistant, a NodeMCU (ESP8266), and a couple of accelerometers to automate our laundry room. This is a rewrite of an old post where I did the same thing using a Moteino & Raspberry Pi. This version only requires a NodeMCU.

+

We have an older washer and dryer which doesn’t have any form of notification when cycles complete. Home Assistant was the obvious solution, I just needed to create sensors for the washer and dryer. I tried using sound sensors but found them unreliable. I ended up using an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect whether they’re open or closed. I connected the accelerometers and reed switches to an NodeMCU which will relay the data to my MQTT broker.

+

+ + Block diagram of schematic +

+ +

After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn’t get tripped by the washer or vice versa. In the plot below you can see the acceleration in each direction for the accelerometer connected to the dryer. It’s easy to see when the dryer is in operation here. I used the same technique for the washer’s accelerometer.

+

+ + Graph showing the accelerometer data +

+

Next it was just a matter of integrating everything with Home Assistant. I was able to use the MQTT component to read the washer and dryer states from the Moteino and display it in Home Assistant.

+

+ + Status of the dryer and washer in Home Assistant +

+

Next I wrote scripts that are run whenever the washer or dryer completes a load. This is triggered by the automation component. When the laundry is complete I have the lights in the house turn red and notify me via Join. Once the door is opened and laundry emptied another script runs that sets the lights back to normal. So far it has been very helpful and very reliable.

+

+ + + + NodeMCU connected to MPU-6050 accelerometer. +

+

Materials used:

+ +

Sketch for the NodeMCU is available here.

+

Home Assistant Configuration:

+
mqtt:
+  broker: 192.168.1.100
+  port: 1883
+  keepalive: 60
+  qos: 0
+
+sensor:
+  - platform: mqtt
+    name: "Dryer Status"
+    state_topic: "sensor/dryer"
+    unit_of_measurement: ""
+
+  - platform: mqtt
+    name: "Washer Status"
+    state_topic: "sensor/washer"
+    unit_of_measurement: ""
+
+automation:
+  - alias: Washer complete
+    trigger:
+      platform: state
+      entity_id: sensor.washer_status
+      from: 'Running'
+      to: 'Complete'
+    action:
+      service: script.turn_on
+      entity_id: script.washer_complete
+
+  - alias: Washer emptied
+    trigger:
+      platform: state
+      entity_id: sensor.washer_status
+      from: 'Complete'
+      to: 'Empty'
+    action:
+      service: scene.turn_on
+      entity_id: scene.normal
+
+script:
+  washer_complete:
+    alias: Washer Complete
+    sequence:
+      - alias: Join Notification
+        service: notify.join
+        data:
+          message: "The washing machine has finished its cycle, please empty it!"
+      - alias: Living Room Lights Blue
+        service: scene.turn_on
+        data:
+          entity_id: scene.blue
+
+
+

Resources used:

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html new file mode 100644 index 0000000000..ad32718ca4 --- /dev/null +++ b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html @@ -0,0 +1,288 @@ + + + + + + + + + Optimizing the Home Assistant mobile web app - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Optimizing the Home Assistant mobile web app

+
+ + + 11 minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

This blog post will go into detail about the recent performance optimizations that went into the Home Assistant front end. For people not familiar with the app, check out the demo and the source.

+

TL; DR: Don’t hack the framework, separate responsibilities, ship less, use service workers, use (future) web standards.

+

This year at Google I/O I saw Monica from the Polymer team talk about web components and performance. In her talk she mentions a mantra that they use in the Polymer team to make things fast: Do less and be lazy.

+

Do less and be lazy. It sounds so obvious and it took a while before it started to dawn on me. I think most of the code I write is pretty fast, but I don’t often stop to take a harder look at how and when it runs in practice. When do we need the result, can it be postponed?

+

And thus started my journey to take a critical look at how the Home Assistant app was working and how to make things faster. Below is the list of the different things that I did to make it fast.

+

I hope this list can be useful to other people, as a guide for optimizing their own apps or for avoiding pitfalls when building a new one.

+

The first thing to do is to measure. The Home Assistant front end is a mobile web app, so we shouldn’t measure this on a machine with 8 cores and gigabytes of ram but instead measure on devices you expect a mobile web app to run: phones. Below are two timelines recorded with Home Assistant 0.18.2 (pre-optimizations) and Google Chrome 53. On my Mac the app starts in 1400 milliseconds and on my Nexus 5x in ~6500 milliseconds (~4.5 times slower!).

+

+ Timeline of loading the front end in Home Assistant 0.18.2 +

+

Although the app takes 6500 milliseconds to load on my phone, it would perform well afterwards. Still, that initial load is unacceptable. You expect to open an app on your phone and be able to use it, quickly. After I applied all the changes described below, I managed to reduce startup time to 900 milliseconds (-35%) on my Mac and 2400 milliseconds (-63%) on my Nexus 5x. Check out the demo here.

+

+ diagram showing old and new loading times next to one another + Timeline of loading the front end in Home Assistant 0.26 +

+ +

Technology

+

The Home Assistant front end consists of two parts. There is Home Assistant JS, which controls all data and interaction between JavaScript and the server. It is a Flux architecture using NuclearJS and ImmutableJS. The UI is implemented by Home Assistant Polymer using Polymer and web components.

+

Don’t hack the framework

+

I thought to be smart. I split out the JavaScript part of all web components and bundled them separately using Webpack so that I could use ES2015 via BabelJS (architecture). This is not how Polymer components are written and it meant that I was unable to use any of the tooling that is available in the community or easily split up the bundle (more on this later).

+

So I went ahead and backported all my web components back from shiny beautiful ES6 to ES5. And you know what? It’s not that bad. Yes, not being able to use the concise object notation and arrow functions make your code more verbose. But in the end it is the same code that is running in browsers.

+

Another benefit of having each web component contain their own script tag is that the browser will process them one by one, allowing the browser to render our loading spinner animation in between.

+

As you can see in the timelines, we were able to get rid of most of the blocking component loading.

+

+ Timeline of loading the front end before and after the optimization +

+

Separate responsibilities

+

Whenever you learn a new technology, you feel like you’ve learned a new superpower. Wow, I can do all this with only 2 lines?! I had the same with bundling.

+

I was initially very focused on shipping just a single file with everything that my app needed. The entry point would be my main component which would require all of its Flux and UI dependencies. Then, just before it all would be rendered, it would check if there is authentication and start the data fetching.

+

This is a very bad pattern. This means that you will not start any data fetching until your UI is ready to render. Instead, you want your data to be fetched as soon as possible, and while the request is out to the server you want the page to load all your UI components.

+

To accomplish this I extracted the application core out of the main bundle. In the current optimized version it’s 31.1kb gzip’d. It is loaded before any other scripts so that it can start fetching data as soon as possible.

+

+ Timeline of loading the front end before and after the optimization +

+

When the data does come back before the UI is done loading, we can process it before we start rendering the UI because of all the web components being processed individually. This means that we don’t have to show a loading screen the first time our components render – we can just render the components with the data they require.

+

Ship less

+

The theory behind this one is simple: if we manage to ship less code, the browser has to process less code and it will start faster.

+

Only include the components for the page that you will show

+

The Home Assistant mobile web application has 10 different panels (pages). Besides that, it also has a dialog for each type of device to show more info. That’s a lot of components and screens of which only a very small set is needed at the start. That means that we are shipping a lot of unnecessary data that the browser has to process before our initial render!

+

I broke up each panel of the app into a separate bundle that will be loaded on demand. This saved 250 kilobytes (pre-gzip) on just the embedded map alone! This change, however, required some significant changes to our build process.

+

Breaking up an app in JavaScript is complex because each module explicitly imports their dependencies. This has to continue to work in your browser after breaking it up in multiple files. Web components do not have this problem as it’s part of the platform and thus your browser is the registry! An unregistered web component will be rendered as an empty span element until the element gets registered. Loading order is not important.

+
// Example of the flexibility of web components.
+var spinner = document.createElement('paper-spinner');
+spinner.active = true;
+document.body.appendChild(spinner);
+
+
+

Because the browser tracks your web components, creating standalone bundles for parts of the app is easy:

+
    +
  • Find all dependencies included in the main bundle (using hydrolysis)
  • +
  • Create individual bundles of each panel (page) but filter out the dependencies included in main bundle.
  • +
+

The build script that bundles and minifies the main bundle and panel bundles is <100 lines.

+

Change the JavaScript bundler to Rollup

+

Core.js is still pure JavaScript and requires bundling. In my journey to get a smaller bundle, I went from Webpack to Webpack 2 to Rollup. At each step the bundle got smaller. Rollup is the big winner here because it doesn’t wrap all your modules in function calls but instead concatenates all files with minimal changes to make it work. This not only reduces the file size but also the loading speed. This is because the JavaScript engine will no longer have to invoke a function to resolve each import, it’s doing less work. This might not mean much for a computer but on a phone, everything counts.

+

Scrutinize dependencies

+

If the goal is to ship less, it’s time to take a good look at dependencies. It’s so often that we decide to fall back to yet another NPM package that makes our life a little easier but comes at the cost of size – size usually taken up by functionality that you might never need.

+

Remove Lodash

+

I realized that I only used a few methods of lodash. Lodash (and previously underscore) used to be one of the dependencies that would always be one of the first things that I would add to any project I start. But I could no longer justify it in the case of Home Assistant. Even with dead tree shaking it was not worth including it. Yes, they support a lot of edge cases but those were not relevant to my use case. And standalone lodash packages are still huge. The only thing that I couldn’t replace with a few lines of my own code was debounce. However I found a 40 line replacement.

+

Replace moment.js with Fecha

+

Moment.js is one of those power libraries. It is able to handle any date problem that you can throw at it. But this obviously comes at the cost of size. Fecha is a date formatting library at ~8% the size of moment.js (only 4.7kb pre-gzip). The only thing that it does not contain is date manipulation, which was something that was not being used.

+

Use Service worker to instantly load the app

+

Using a service worker we’re able to store all app components and core javascript in the browser. This means that after their first visit, the browser will only have to go to the network to fetch the latest data from the server.

+

Creating a service worker is easy using sw-precache, a service worker generation tool.

+

When a browser does not support service workers, Home Assistant will serve fingerprinted assets that are aggressively cached. Only when the content changes will the client redownload the asset.

+

Using fingerprinting with sw-precache required jumping through a few hoops. The final build script can be found here.

+

Make it feel fast

+

This one is more psychological: no one likes staring at a white screen because white screens are ambiguous: are we loading something, is there a crappy connection or maybe even a script error? That’s why it is very important to render something on the screen to show that the rest is being loaded, and as quickly as possible.

+

The Home Assistant landing page contains just enough CSS and HTML to render the loading screen minus the animations.

+

Now that the app is fast enough, I might swap out moving from a lite loading screen to drawing an empty toolbar. This makes it look like the UI is almost there.

+

Using a framework build on web standards

+

I left this to the end of the list, mainly because I had no influence on this. Polymer just happened to ship an update while I was optimizing the application which gave a big boost to the loading time.

+

By using Polymer we have the ability to use tomorrow’s web standards today. This is powered by polyfills. A polyfill will use JavaScript to simulate the behavior that the web standard would have taken care of. As browsers progress, more work can move from the polyfills back to the browsers. This is great because browsers will be able to optimize the work better and thus be faster.

+

Polymer 1.6 was introduced at the end of June and allowed the app to take advantage of native CSS variables in Chrome and Firefox. It also introduced lazy registration. Both greatly sped up our loading times.

+

Future optimizations

+

A lot of optimizations have been applied but this journey will never be over. There are still a lot of opportunities to make things even faster. Some ideas that are on my list to explore:

+
    +
  • Use shadow DOM instead of shady DOM polyfill.
  • +
  • Use closure compiler to optimize the JavaScript.
  • +
  • Reduce the number of icons that are loaded.
  • +
  • Embed initial API response in served page if not using a service worker.
  • +
  • Reduce size of initial bundle by moving out all things that are not visible for initial paint. For example the dialogs that show more info about entities.
  • +
  • Prefetch the other pages using <link rel="preload" …>
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html new file mode 100644 index 0000000000..f4f6ab2cdd --- /dev/null +++ b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html @@ -0,0 +1,261 @@ + + + + + + + + + 0.26: Foursquare, Fast.com, FFMPEG and GPSD - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.26: Foursquare, Fast.com, FFMPEG and GPSD

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

+

This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

+

+ +

Hotfix 0.26.1 - August 14

+
    +
  • Fix serial_pm config validation (@open-homeautomation)
  • +
  • Check for existence of system mode on Honeywell thermostats (@mKeRix)
  • +
  • Fix unknown unit of measurement for hvac and thermostat component (@turbokongen)
  • +
+

Hotfix 0.26.2 - August 15

+
    +
  • Fix Wemo: have PyWemo play nicely with the latest Requests (@pavoni)
  • +
+

Hotfix 0.26.3 - August 19

+
    +
  • Media Player cover art would not work when an API password was set. Thanks to @maddox for reporting it and @balloob for the fix.
  • +
+

Breaking changes

+
    +
  • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
  • +
+
# Configuration.yaml example
+homeassistant:
+  # 'metric' for the metric system, 'imperial' for the imperial system
+  unit_system: metric
+
+
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/16/we-have-apps-now/index.html b/blog/2016/08/16/we-have-apps-now/index.html new file mode 100644 index 0000000000..fbd6ed48e2 --- /dev/null +++ b/blog/2016/08/16/we-have-apps-now/index.html @@ -0,0 +1,299 @@ + + + + + + + + + We Have Apps Now - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

We Have Apps Now

+
+ + + 11 minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

I have been working on a new subsystem to complement Home Assistant’s Automation and Scripting components. AppDaemon is a python daemon that consumes events from Home Assistant and feeds them to snippets of python code called “Apps”. An App is a Python class that is instantiated possibly multiple times from AppDaemon and registers callbacks for various system events. It is also able to inspect and set state and call services. The API provides a rich environment suited to home automation tasks that can also leverage all the power of Python.

+ +

Another Take on Automation

+

If you haven’t yet read Paulus’ excellent Blog entry on Perfect Home Automation I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the “Automation” in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation to bring this all together in the vast and chaotic ecosystem that is the “Internet of Things”.

+

So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks:

+
    +
  • Can the system respond to presence or absence of people?
  • +
  • Can I turn a light on at Sunset +/- a certain amount of time?
  • +
  • Can I arrive home in light or dark and have the lights figure out if they should be on or off?
  • +
  • As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly?
  • +
  • Is it open and expandable?
  • +
  • Does it run locally without any reliance on the cloud?
  • +
+

In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and its Restful API.

+

So why AppDaemon? 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 5 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, and 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 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.

+

How it Works

+

The best way to show what AppDaemon does is through a few simple examples.

+

Sunrise/Sunset Lighting

+

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

+
import appapi
+
+class OutsideLights(appapi.AppDaemon):
+
+  def initialize(self):
+    self.run_at_sunrise(self.sunrise_cb, 0)
+    self.run_at_sunset(self.sunset_cb, 0)
+
+  def sunrise_cb(self, args, kwargs):
+    self.turn_on(self.args["off_scene"])
+
+  def sunset_cb(self, args, 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 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:

+
import 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.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 lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 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 10 iterations.

+
import 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.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 provided 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 logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple.

+

I have spent the last few weeks moving all of my (fairly complex) automations over to APPDaemon and so far it is working very reliably.

+

Some people will maybe look at all of this and say “what use is this, I can already do all of this”, and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations.

+

If this has whet your appetite, feel free to give it a try. You can find it, here, including full installation instructions, an API reference, and a number of fully fleshed out examples.

+

Happy Automating!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html b/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html new file mode 100644 index 0000000000..4eb07c73a7 --- /dev/null +++ b/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Github-style calendar heatmap of device data - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Github-style calendar heatmap of device data

+
+ + + Less than one minute reading time + + +
    +
  • How-To
  • +
  • IoT-Data
  • +
+
+ Comments +
+
+

Thanks to Anton Kireyeu we are able to present another awesome Jupyter notebook. I guess that you all know the graph which Github is using to visualize your commits per day over a time-line. It’s a so-called heatmap. If there are more commits, it’s getting hotter. The latest notebook is capable to do the same thing for your devices. To be more precise, for the hours your devices are home.

+

+ +Heatmap +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/28/notifications-hue-fake-unification/index.html b/blog/2016/08/28/notifications-hue-fake-unification/index.html new file mode 100644 index 0000000000..6406910181 --- /dev/null +++ b/blog/2016/08/28/notifications-hue-fake-unification/index.html @@ -0,0 +1,360 @@ + + + + + + + + + 0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

This week’s blog post could only be possibly described by exactly one hashtag:

+

#Amazing

+

or maybe#supersized

+

Keep reading to see what #Amazing things we have in store for you this week 😄! And make sure you read all the way to the end, because I left a present down there for those committed few among you :)

+

But first…

+

Some general housekeeping

+

Paulus (@balloob) is on vacation in Europe this week, so you will all have to deal with me, Robbie (@robbiet480) for this release blog post. Don’t worry, Paulus will be back to tearing apart your pull requests in no time 😈.

+

Special thanks to my awesome helpers for this week’s release who are looking over my shoulder to make sure I’m crossing my t’s and dotting my i’s: @Teagan42, @infamy and @fabaff.

+

For my next trick, let’s hand out some…

+

Trophies

+

I felt that I had to 1-up Paulus (@balloob) somehow with his 500,000 pageviews stat he shared in the 0.26 blog post, so I pushed myself and our development community as a whole super hard the last two weeks to put a lot of love into Home Assistant to bring you not just one, but six #Amazing stats for this release. As of 0.27, we have now surpassed the following milestones:

+ +

In addition,

+ +

Now that we have that great news out of the way, onto this week’s release which is going to keep the #Amazing gravy train rolling right along and get to the stuff you all really are here for.

+

0.27

+

While this release is #Amazing, we had to break a few eggs (now you understand the title reference!) to make a beautiful omelette (using home automation obviously) so some platforms and components have needed to introduce breaking changes. Please make sure to read the Breaking Changes section below.

+

Hue Bridge Emulation

+

Thanks to @mgbowen we now have the functionality previously provided by @blocke’s ha-local-echo built right into Home Assistant! This means that for those of you with devices that either lack or have a subpar integration with Home Assistant (looking at you Amazon Echo) you can now have a better experience by having your Home Assistant pretend to be a Hue Bridge. Personally, I have used @auchter’s Haaska previously but found that it was slow to respond and sometimes failed entirely. With the new emulated_hue component, you can have local control of entities through Amazon Echo.

+

Notification improvements

+

We have some excellent upgrades to the notification system coming to you in 0.27, courtesy of me, @robbiet480.

+

HTML5 Push Notifications

+

This release adds support for HTML5 push notifications on Chrome/Firefox/Opera on both desktop and Android devices. This means that you can send a notification to your phone even when your Home Assistant is not open in your mobile browser. When using Chrome you can even include 2 action buttons so that you can control your Home Assistant from your phone’s lock screen, allowing you to do things like sound alarms or unlock your front door, all without leaving the notification. Thanks again to me (@robbiet480) and Paulus (@balloob) for all the hard work on this!

+

+ +

+

Notification Groups

+

Using the new notify group platform allows you to cut down a lot of duplicate automation logic by combining multiple notification platforms and targets into a single notify service. Check out the docs for more info.

+

target is no longer needed!

+

For platforms that support it, starting with the new HTML5 platform, any targets that are available will be exposed as individual services, so no more having to remember which targets to use. Please note that the existing services also still exist so you can keep using target if you wish.

+

Validate configuration before restarting Home Assistant

+

Ever restarted Home Assistant to test a configuration change just to find out there is a validation error? Well, not anymore! @kellerza has added a command line script that will validate your configuration as if you started Home Assistant.

+
$ hass --script check_config
+
+
+

Configuration validation

+

This release includes a big push on making sure all platforms contain proper configuration validation. This should help in getting your configuration right. Thanks to @fabaff, @pavoni, @pvizeli, @nkgilley for all the hard work on this, you all rock!

+

+ +

+

FFMpeg motion/noise sensing

+

It’s now possible to use FFMpeg to monitor a video stream and detect motion thanks to a new binary sensor platform by @pvizeli.

+

Component clean up - Thermostat & HVAC -> Climate. Rollershutter & Garage Door -> Cover.

+

Due to our wild growth we ended up with a few components that had a lot of overlapping functionality. @turbokongen took on the hard job on merging them. Thermostat and HVAC platforms are now combined under the new Climate component. Rollershutter and Garage Door platforms are now combined under the new Cover component. You can easily upgrade by just swapping out the name. For example replace thermostat with climate. The old components have been deprecated and will be removed in the near future.

+

A new fan component

+

Along with the new climate component, @Teagan42 and I (@robbiet480) decided we needed something simpler to just control a fan. Currently it has support for controlling Insteon fans. MQTT support will appear in 0.28.0. I tried to get it implemented before 0.27.0 but spent too long writing this blog post 😢.

+

All changes

+

+ +

Breaking changes

+
    +
  • Ecobee3 occupancy sensors have moved from sensor platform to binary sensor platform.
  • +
  • Forecast.io entity IDs are now like sensor.forecastio_temperature. Previously they were like sensor.weather_temperature. Apologies for this change, but we needed to make Forecast.io more generic now that we have many weather platforms.
  • +
  • The Loop Energy sensor configuration format changed slightly, please reformat based on the revised documentation.
  • +
  • The configuration for the SABnzbd sensor has slightly changed. The prefix type: is no longer required for monitored variables.
  • +
  • The IMAP sensor now uses username instead of user.
  • +
  • The NZBGet sensor has had so many changes I can’t list them all. Please refer to the documentation for more info.
  • +
+

Deprecations

+
    +
  • Using the thermostat and hvac components has been deprecated. Please migrate to the new climate component. (just change the component name, the configurations are compatible)
  • +
  • Using the rollershutter and garage_door components have also been deprecated. Please migrate to the new cover component. (just change the component name, the configurations are compatible)
  • +
+

Finishing up

+

Thanks all for sticking with me to the end. I’ll be taking over a lot of Paulus’s (@balloob) work while he is gone, but as I said, don’t worry because he’ll be back well before 0.28.0 comes out. Hopefully you didn’t find this jovial blog post too jarring from our standard style, I just wrote a lot of this at 2am after being awake for almost 20 hours, so I’m a little loopy hahaha 😴.

+

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 Discord or my Twitter, or even the Home Assistant Twitter. Did I mention we have a brand new Facebook page 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 Discord and in your pull request comments!

+

– Robbie

+

(p.s. To those of you that scrolled directly to the bottom to get your present, just know that you didn’t earn it like the others did. 😄)

+

Hotfix 0.27.1 - August 30

+
    +
  • Migrate APCUPSd to voluptuous (@fabaff)
  • +
  • Ecobee operation mode fix (@turbokongen)
  • +
  • update ha-ffmpeg version to 0.9 (@pvizeli)
  • +
  • Device tracker component & platform validation. No more home_range. (@kellerza)
  • +
  • Added option to use effect:random for Flux Led light bulbs (@tchellomello)
  • +
  • Use voluptuous for smtp (@pvizeli)
  • +
  • Upgrade sendgrid to 3.2.10 (@fabaff)
  • +
  • Upgrade TwitterAPI to 2.4.2 (@fabaff)
  • +
  • Fix bug in wemo discovery caused by voluptuous addition. (@pavoni)
  • +
  • Bug fix for asuswrt device_tracker. (@Danielhiversen)
  • +
  • Remove units for humidity in Wundeground sensor (@arsaboo)
  • +
  • Fix media_player descriptions and select_source (@MartinHjelmare)
  • +
  • Allow user to configure server id to perform speed test against (@Teagan42)
  • +
  • Bug fix for asuswrt device_tracker. (@Danielhiversen)
  • +
  • More Ecobee operation mode fixes (@turbokongen)
  • +
  • Map Modes to setpoint indexes (@turbokongen)
  • +
  • fix voluptuous and cover autodiscovery (@pvizeli)
  • +
  • Fixes wrong statevalue and problem with zwave setpoint (@turbokongen)
  • +
+

Hotfix 0.27.2 - September 3

+

home-assistant

+ +

home-assistant-polymer

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/08/31/esp8266-and-micropython-part2/index.html b/blog/2016/08/31/esp8266-and-micropython-part2/index.html new file mode 100644 index 0000000000..bc4bf138ba --- /dev/null +++ b/blog/2016/08/31/esp8266-and-micropython-part2/index.html @@ -0,0 +1,287 @@ + + + + + + + + + ESP8266 and MicroPython - Part 2 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

ESP8266 and MicroPython - Part 2

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
  • ESP8266
  • +
  • Micropython
  • +
+
+ Comments +
+
+

+So, part 1 of ESP8266 and MicroPython was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance.

+ +

Beside HTTP POST requests, MQTT is the quickest way (from the author’s point of view) to publish information with DIY devices.

+

You have to make a decision: Do you want to pull or to poll the information for the sensor? For slowly changing values like temperature it’s perfectly fine to wait a couple of seconds to retrieve the value. If it’s a motion detector the state change should be available instantly in Home Assistant or it could be missed. This means the sensor must take initiative and send the data to Home Assistant.

+

An example for pulling is aREST. This is a great way to work with the ESP8266 based units and the Ardunio IDE.

+

MQTT

+

You can find a simple examples for publishing and subscribing with MQTT in the MicroPython library overview in the section for umqtt.

+

The example below is adopted from the work of @davea as we don’t want to re-invent the wheel. The configuration feature is crafty and simplyfies the code with the usage of a file called /config.json which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds.

+
import machine
+import time
+import ubinascii
+import webrepl
+
+from umqtt.simple import MQTTClient
+
+# These defaults are overwritten with the contents of /config.json by load_config()
+CONFIG = {
+    "broker": "192.168.1.19",
+    "sensor_pin": 0, 
+    "client_id": b"esp8266_" + ubinascii.hexlify(machine.unique_id()),
+    "topic": b"home",
+}
+
+client = None
+sensor_pin = None
+
+def setup_pins():
+    global sensor_pin
+    sensor_pin = machine.ADC(CONFIG['sensor_pin'])
+
+def load_config():
+    import ujson as json
+    try:
+        with open("/config.json") as f:
+            config = json.loads(f.read())
+    except (OSError, ValueError):
+        print("Couldn't load /config.json")
+        save_config()
+    else:
+        CONFIG.update(config)
+        print("Loaded config from /config.json")
+
+def save_config():
+    import ujson as json
+    try:
+        with open("/config.json", "w") as f:
+            f.write(json.dumps(CONFIG))
+    except OSError:
+        print("Couldn't save /config.json")
+
+def main():
+    client = MQTTClient(CONFIG['client_id'], CONFIG['broker'])
+    client.connect()
+    print("Connected to {}".format(CONFIG['broker']))
+    while True:
+        data = sensor_pin.read()
+        client.publish('{}/{}'.format(CONFIG['topic'],
+                                          CONFIG['client_id']),
+                                          bytes(str(data), 'utf-8'))
+        print('Sensor state: {}'.format(data))
+        time.sleep(5)
+
+if __name__ == '__main__':
+    load_config()
+    setup_pins()
+    main()
+
+
+

Subscribe to the topic home/# or create a MQTT sensor to check if the sensor values are published.

+
$ mosquitto_sub -h 192.168.1.19 -v -t "home/#"
+
+
+
sensor:
+  - platform: mqtt
+    state_topic: "home/esp8266_[last part of the MAC address]"
+    name: "MicroPython"
+
+
+

@davea created sonoff-mqtt. This code will work on ESP8622 based devices too and shows how to use a button to control a relay.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/09/10/notify-group-reload-api-pihole/index.html b/blog/2016/09/10/notify-group-reload-api-pihole/index.html new file mode 100644 index 0000000000..b177564747 --- /dev/null +++ b/blog/2016/09/10/notify-group-reload-api-pihole/index.html @@ -0,0 +1,289 @@ + + + + + + + + + 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats

+
+ + + five minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s already time for 0.28 thanks to our super short release cycles. Now, it’ official…we hit 4000 stars on Github. That’s amazing. Sorry, not as amazing as all the stuff that was going on for 0.27 but still pretty awesome.

+

Reload automation rules

+

This release brings you a huge improvement of the automation and group handling. Both can be reloaded without a Home Assistant restart by calling their new reload services. The automations can be controlled directly from the frontend.

+

+ +

+

Raspberry Pi installation guide

+

Singleboard computers are very popular to run Home Assistant. To support this fact, the installation documentation for the Raspberry Pi devices was re-written to get users started as quickly as possible. @Landrash took the lead with on this tasks with help from @kellerza and @MartinHjelmare.

+

Climate and cover

+

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…

+

API documentation

+

The Home Assistant API Documentation is a great addition to the already existing 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.

+

Configuration validation

+

The validation of the configuration is still on-going. Approximately 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!

+

All changes

+

+
    +
  • Light: Added bitfield to Flux LED since we are supporting effects (@tchellomello)
  • +
  • Device tracker: Owntracks waypoint import (@pavoni)
  • +
  • Climate: A lot of bugfix (@turbokongen, @pvizeli, @djbanks)
  • +
  • Notify: Improvement of the title handling (@lwis)
  • +
  • RFXtrx: Sensor cleanup (@turbokongen)
  • +
  • Device tracker: Fix for BLE device tracker (@open-homeautomation)
  • +
  • Device tracker: Allow ‘None’ MAC addresses to be loaded from known_devices file (@kellerza)
  • +
  • Cover: Bugfixes (@turbokongen, @danielperna84)
  • +
  • Sensor: Support for displaying details about crypto currencies (@fabaff)
  • +
  • Device tracker: Support for automatic to track your vehicles (@Teagan42)
  • +
  • Devie tracker: Add exclude option to Nmap device tracker (@danieljkemp)
  • +
  • Device tracker: Improved login errors for Asus device tracker (@kellerza)
  • +
  • Sensor: Support for displaying the status of Xbox Live accounts (@mKerix)
  • +
  • Notify: Adding link_names for sending Slack message (@salt-lick)
  • +
  • Binary sensor: Add the occupancy sensor class (@robbiet480)
  • +
  • Fan: Add supoort for MQTT fans (@robbiet480)
  • +
  • Docs: Add Sphinx API doc generation (@bbangert)
  • +
  • Core: Allow reloading automation without restart (@balloob)
  • +
  • Sensor: Added scale and offset to the Temper sensor (@mKerix)
  • +
  • Sensor: New support for [Trend] sensor (@pavoni)
  • +
  • Device tracker: Keep looking for new BLE devices (@Bart274)
  • +
  • Switch: Added device state attributes and support for legacy firmware for D-Link switches (@LinuxChristian)
  • +
  • Sensor: Improve 1-Wire device family detection (@Ardetus)
  • +
  • Modbus: Update to be thread safe (@persandstrom)
  • +
  • Camera: FFMpeg is abale to get the images (@pvizeli)
  • +
  • Core: Reload groups without restart (@balloob)
  • +
  • Core: Fix remove listener (@balloob)
  • +
  • Sensor: Support for monitoring your battery on a Linux host (@fabaff)
  • +
  • Core: Add support for complex template structures to data_template (@pvizeli)
  • +
  • check_config: Improve yaml fault tolerance and handle border cases (@kellerza)
  • +
  • Core: Add additional template for custom date formats (@lwis)
  • +
  • Sensor: Support for getting stats from Pi-Hole systems (@fabaff)
  • +
  • Modbus: New write_registers Modbus service (@persandstrom)
  • +
  • Device tracker: Fix TP-Link Archer C7 long passwords (@snikch)
  • +
+

Hotfix 0.28.1 - September 12

+
    +
  • Fix: Simplisafe alarm control panels accept any string for code (@tchellomello)
  • +
  • Fix: Z-Wave would sometimes not detect all thermostats (@turbokongen)
  • +
  • Fix: Automatic device tracker when 2 or more cars are tracked (@teagan42)
  • +
  • Fix: Group ordering is now based on config again (@balloob, @kellerza)
  • +
+

Hotfix 0.28.2 - September 13

+
    +
  • Light - pilight: Fix send RF code (@DavidLP)
  • +
  • Recorder: Fix specifying SQLite (@pvizeli)
  • +
  • Wink: Fix garage door detection (@turbokongen)
  • +
  • Climate - Ecobee: Fix inverted high and low temperatures (@turbokongen)
  • +
  • Allow changing covers using scenes (@nvella)
  • +
  • Device tracker - Automatic: Fix polling (@teagan42)
  • +
+

Breaking changes

+
    +
  • OpenweatherMap entity IDs are now like sensor.owm_temperature. Previously they were like sensor.weather_temperature. Apologies for this change, but we needed to make OpenWeatherMap more generic now that we have many weather platforms.
  • +
  • Updates of configuration variables due to configuration check or alignment with other platforms. Please update your configuration entries according to the documentation: + +
  • +
  • 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.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html b/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html new file mode 100644 index 0000000000..f241951475 --- /dev/null +++ b/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html @@ -0,0 +1,294 @@ + + + + + + + + + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants

+
+ + + six minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of 50 different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!

+

This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.

+

This all changed when @bbangert came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.

+

SleepIQ and OpenALPR

+

There now is support for two new super cool things: Beds and license plates. @technicalpickles created a SleepIQ component that let you monitor the sensor data of your bed. @pvizeli has added license plate recognition based on OpenALPR! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to @pvizeli for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).

+

Configuration validation

+

On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.

+

Delayed Release

+

As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: @bbangert, @turbokongen, @lwis, @kellerza, @technicalpickles, @pvizeli, @persandstrom and @joyrider3774. I am grateful to have all of you as part of the Home Assistant community.

+

Hide automation rules

+

Since 0.28 automation rules can be reloaded directly from the frontend. By default all automation rules are shown. If you want to hide an automation rule, use hide_entity: True.

+

All changes

+

+ +

Hotfix 0.29.1 - September 29

+ +

Hotfix 0.29.2 - September 29

+ +

Hotfix 0.29.3 - September 29

+ +

Hotfix 0.29.4 - September 30

+ +

Hotfix 0.29.5 - September 30

+ +

Hotfix 0.29.6 - October 1

+
    +
  • Fix segmentation fault (@bbangert) 🎉
  • +
  • Fix nested templates in data_template would incorrectly get cached (@balloob)
  • +
+

Hotfix 0.29.7 - October 5

+
    +
  • Fix handling SIGTERM and SIGHUP signals (fixes Systemd restart issues) (@pvizeli)
  • +
+

Breaking changes

+
    +
  • The template methods now and utcnow have been changed from variables to methods. To get the current time replace now with now().
  • +
  • yahooweather default name is now yweather. Also min and max temperature are now correctly called Temperature Min and Temperature Max.
  • +
  • ffmpeg is now a component for manage some things central. All ffmpeg_bin options have moved to this compoment from platforms.
  • +
  • Config has changed for X10 lights.
  • +
  • For Wink, make sure your config only contains the access token as in the docs.
  • +
  • Nest sensor ‘mode’ has been renamed to ‘operation_mode’
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/10/01/we-have-raspberry-image-now/index.html b/blog/2016/10/01/we-have-raspberry-image-now/index.html new file mode 100644 index 0000000000..e969a83323 --- /dev/null +++ b/blog/2016/10/01/we-have-raspberry-image-now/index.html @@ -0,0 +1,215 @@ + + + + + + + + + We have a Raspberry Pi image now - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

We have a Raspberry Pi image now

+
+ + + 1 minute reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

Today we’re happy to announce our brand new Raspberry Pi image! It is based on Raspbian Lite combined with HASS so we decided to call it Hassbian.

+

This image comes pre-installed with everything you need to get started with Home Assistant right away.

+

To get started, check out the installation instructions in the getting started section or watch the latest video by BRUHAutomation:

+
+ +
+

Under the hood

+

It’s based on Raspbian Lite and generated with a fork of the same script that builds the official Raspbian images. For installation of HASS it follows the same install instructions as the Manual installation. Please note that this project has no association with the Raspberry Pi foundation or their projects.

+

On first boot the latest release of Home Assistant will be installed and can be reached after 3~5 minutes. Pre-installed on this image is the MQTT broker Mosquitto, Bluetooth support and settings for the homeassistant account to use the GPIO pins of the Raspberry Pi. Mosquitto is not activated by default.

+

As it is today there is no pre-compiled Z-Wave support but it can be installed by following the Getting started instructions for Z-Wave.

+

Happy Automating!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/10/02/hacktoberfest/index.html b/blog/2016/10/02/hacktoberfest/index.html new file mode 100644 index 0000000000..47088af1ab --- /dev/null +++ b/blog/2016/10/02/hacktoberfest/index.html @@ -0,0 +1,223 @@ + + + + + + + + + Participating in Hacktoberfest - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Participating in Hacktoberfest

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

Home Assistant will join this year for Hacktoberfest, 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 fix them. If you submit four pull-requests during the month of October you will have earned yourself a limited edition Hacktoberfest T-shirt!

+

Why contribute to Home Assistant:

+
    +
  • Written in Python3 with 94% test coverage
  • +
  • Active and helpful community
  • +
  • Friendly to new contributors
  • +
+

Resources to get started:

+ +

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.

+

Hacktober fest logo

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/10/08/hassbian-rest-digital-ocean/index.html b/blog/2016/10/08/hassbian-rest-digital-ocean/index.html new file mode 100644 index 0000000000..91ee7acfc6 --- /dev/null +++ b/blog/2016/10/08/hassbian-rest-digital-ocean/index.html @@ -0,0 +1,305 @@ + + + + + + + + + 0.30: More Async, HASSbian, Digital Ocean, statistics, REST - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.30: More Async, HASSbian, Digital Ocean, statistics, REST

+
+ + + seven minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

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 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, issue report, and suggestions 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.

+

To reduce the run-time of your tests, @balloob did a lot of tweaking. For now the RFXtrx tests are excluded which cut the needed time for running on your Pull Request in half.

+

Documentation

+

All configuration sample entries are now minimized. This should help to avoid problem for starters and newbies as they only get what’s needed and not a full sample with all optional entries. If there is an issue with an entry in your configuration.yaml file the error message will provide you an URL that point to the documentation.

+

+ +

+

As soon as the Hacktoberfest started there were a lot of incoming Pull Requests for the documentation. A huge “Thank you” to all participants. Especially, we would like to give a cookie to @hillaryfraley. She created around a dozen Pull Requests so far and didn’t only fix typos but complete sections. The Hacktoberfest is still on-going and we are looking forward to get more Pull Requests.

+

Statistics

+

With the statistics sensor we would like to introduce a new sensor that is similar to the template sensor or the trend sensor. This sensor is consuming values from another sensor and is doing some statistical analysis of the data. Over a group of samples is the average/mean, the min/max, the total, the standard deviation, and the variance calculated which can be used in your automation rules. If the source is a binary sensor then the state changes are counted.

+

+ +

+

As the results are processed on-the-fly you still need to use the data from your database for an in-depth analysis of your stored information. Check the latest notebook for doing statistics with your Home Assistant database.

+

REST! We don’t…

+

There was a lot of work done on our implementation which are working with RESTful APIs. @w1ll1am23 extended the aREST platforms to display if an aREST unit is available or not. The aREST implementations are now covered by the configuration check as well. Please check the Breaking changes section for more details.

+

The REST sensor supports now HTTP authentication (basic and digest) and custom headers. This will allow you to access resources which are protected. This sample sensor will access GitHub and retrieve the latest release number while by-passing the rate limit for non-authenticated requests.

+
sensor
+  - platform: rest
+    resource: https://api.github.com/repos/home-assistant/home-assistant/releases/latest
+    username: YOUR_GITHUB_USERNAME
+    password: YOUR_GITHUB_ACCESS_TOKEN
+    authentication: basic
+    value_template: '{{ value_json.tag_name }}'
+    headers:
+      Accept: application/vnd.github.v3+json
+      Content-Type: application/json
+      User-Agent: Home Assistant REST sensor
+
+
+

Misc

+
    +
  • GitHub released with a recent update a review feature. This will give you more control over your comments while you review an open Pull Request.
  • +
  • Thanks to @robbiet480 we are now running mention-bot. It will help you when you create a new Pull Request to identify potential reviewers.
  • +
  • The Home Assistant Community Forum has now an additional section called “Installation”.
  • +
+

All changes

+

+ +

Release 0.30.1 - October 8

+
    +
  • Device Tracker known_devices.yaml validation is now more accepting (@kellerza)
  • +
  • Handle X10 light numbers greater than 9 (@mtl010957)
  • +
  • Fix command line covers without a template (@roidayan)
  • +
+

Release 0.30.2 - October 12

+
    +
  • Handle Volvo’s with dashes in their name (@molobrakos)
  • +
  • Fix some html5 push notification configuration options were discarded after first use (@T3m3z)
  • +
  • Fix Homematic device name with autodiscovery (@pvizeli)
  • +
  • Make ‘pin’ optional for zigbee device config (@flyte)
  • +
  • Fix when sending a notification to a service with target attached (i.e. notify.html5_unnamed_device_2) the target was not submitted to the platform as a list causing iteration over every character in the string. (@robbiet480)
  • +
  • Fix for Slack targets (@fabaff)
  • +
  • Fix for Pushover targets (@Nixon506E)
  • +
+

Breaking changes

+
    +
  • All deprecated condition options from automation have been removed (deprecated since May and have printed warnings to your console): +
      +
    • use_trigger_values is gone. You have to copy your triggers to conditions and adjust for the correct config.
    • +
    • condition_type is gone. Use condition: or instead.
    • +
    • To specify the type of a condition, use condition: instead of platform:.
    • +
    +
  • +
  • The Forecast.io was renamed to Dark Sky. Replace your - platform: forecast with - platform: darksky.
  • +
  • The aREST configuration between the sensor and the switch platform was aligned.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html b/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html new file mode 100644 index 0000000000..30baad4b6e --- /dev/null +++ b/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html @@ -0,0 +1,477 @@ + + + + + + + + + 0.31: Reading you the news, some serious business, spooky hackery and a breaking Z-Wave change - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.31: Reading you the news, some serious business, spooky hackery and a breaking Z-Wave change

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Hello again friend,

+

How are you? Having a good day? We sure are. If you aren’t having a good day, this might cheer you up…

+

Every other weekend around here gets a little hectic leading to a big sigh of relief as we release a new version of Home Assistant to the world. And this time is no different. Our developer community has once again built us a beautiful new release with lots of new features and improvements. We hope you like it.

+

One last thing before we get going though, I should warn you… @balloob got a bit lazy this week and let me (@robbiet480) step up to the plate again to write the blog post and do the release. I guess I didn’t do such a bad job in 0.27. You’ll never know what surprises I have in store. Now that i’ve got all that stuff out of the way, let’s get started…

+

Stats Update

+

Sadly, no big amazing stats to update you with this time, but we did recently pass 7,000 commits! This release featured submissions from 45 contributors. Hopefully with the new updater component we will be able to give you some really good stats in the 0.32 blog post.

+

Hacktoberfest

+

Hacktoberfest logo

+

October means Hacktoberfest time and our community has really come through with some excellent improvements and additions. As of this writing, we have 194 merged and 41 open pull requests to the home-assistant repository and 209 merged/28 open pull requests submitted to the home-assistant.github.io repository. If you want to get in on the fun check out our Hacktoberfest blog post or the Hacktoberfest website. You get an awesome t-shirt for free if you have 4 pull requests merged in the month of October! We even have tasks that a non-developer can easily accomplish with a tiny bit of work. Better hurry up though, only 9 days left and most of the easy tasks are gone!

+

⚠️ A greatly improved updater component (Please read this!) ⚠️

+

This release includes an update to our updater component. The responsibility of the updater component is to check if a new version is available and notify the user if this is the case.

+

It used to be that this component would check with PyPi (the Python package manager) to see if a new update was available. This had a couple of problems:

+
    +
  1. We are unable to do a slow rollout
  2. +
  3. We are unable to show the user extra information (like a link to a changelog or the release date)
  4. +
  5. We are unable to warn users for critical security updates
  6. +
+

So to work around these problems, we decided to start hosting the version check service ourselves. Since we had to get some infrastructure spun up anyway, we figured we would take it a step further. Which leads me to this bit of the update (the most important part):

+

What you need to know (the important bit!)

+

Remember how I mentioned that up there in the title that there is some serious business in this release? Well, we also added some basic analytics to the updater component which get sent to the server and stored so that we get a better idea of our user base.

+

Each Home Assistant instance running the updater component will generate a unique ID (based on UUIDv4) that will be used for the updater to be able to differentiate between instances. This UUID will be stored in your config directory in a file called .uuid.

+

Opting out

+

There are two ways to opt-out. The first way is by using the new opt_out option for the updater. This way the updater will continue to check for updates, but no information about your system will be shared with us.

+
updater:
+  reporting: no
+
+
+

You can also disable the updater component entirely by removing updater: from your configuration.yaml although we would not suggest you do this as you would miss any critical updates.

+

Finally, you can also reset your unique identifier by deleting the .uuid file and restarting Home Assistant.

+

Data stored on the Home Assistant update server

+

Here is what my production Home Assistant instance looks like from the server side:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionExample
archCPU Architecturex86_64
distributionLinux Distribution name (only Linux)Ubuntu
dockerTrue if running inside Dockerfalse
os_nameOperating system nameDarwin
os_versionOperating system version10.12
python_versionPython version3.5.2
timezoneTimezoneAmerica/Los_Angeles
user_agentUser agent used to submit analyticspython-requests/2.11.1
uuidUnique identifier10321ee6094d4a2ebb5ed55c675d5f5e
versionHome Assistant version0.31.0
virtualenvTrue if running inside virtualenvtrue
+

In addition to the above collected data, the server will also use your IP address to do a geographic IP address lookup to determine the city that you are from. To be extremely, extremely clear about this bit: The Home Assistant updater does not: store your IP address in a database and also does not submit the location information from your configuration.yaml.

+

+ + Geo-lookup on my IP resolves to Oakland with latitude/longitude pointing at the geographical center of the city. +

+

The server also adds two timestamps to the data: the original date your instance UUID was first seen and the timestamp of the last time we have seen your instance. This gives us the following extra data:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionExample
first_seen_datetimeFirst time instance ID was submitted2016-10-22T19:56:03.542Z
geo_cityGeoIP determined cityOakland
geo_country_codeGeoIP determined country codeUS
geo_country_nameGeoIP determined country nameUnited States
geo_latitudeGeoIP determined latitude (of the city)37.8047
geo_longitudeGeoIP determined longitude (of the city)-122.2124
geo_metro_codeGeoIP determined metro code807
geo_region_codeGeoIP determined region codeCA
geo_region_nameGeoIP determined region nameCalifornia
geo_time_zoneGeoIP determined time zoneAmerica/Los_Angeles
geo_zip_codeGeoIP determined zip code94602
last_seen_datetimeMost recent time instance ID was submitted2016-10-22T19:56:03.542Z
+

This data is held in the highest security. The update system runs in a secured Amazon Web Services account owned by me (@robbiet480). I personally have 5 years of experience with complex AWS deployments and have an extensive security background. I have audited the entire system and made sure to take every step to protect the data, including limiting who has access (just @balloob and myself). While not directly personally identifiable we absolutely understand some users hesistance to giving this information out. Please understand that we are only collecting this information to better understand our user base to provide better long term support and feature development then is currently possible.

+

We currently have 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 thank you for understanding why we are collecting this data and hope that you leave the feature enabled but fully understand if you feel uncomfortable with this.

+

This section was updated on October 24 to be more clear about geo-lookups being on the city level. See original version.

+

Now, back to the fun stuff…

+

Good evening. I’m Ron Burgundy and here’s what happening in your world tonight.

+

Home Assistant got a crazy idea recently that it couldn’t do enough already and wanted to challenge itself even more. I really don’t understand how it came up with this kooky idea, but it now thinks that its newest hobby should be a minor career in journalism.

+

0.31 adds support for the brand spanking new Alexa Flash Briefing API, allowing you to get updates from Home Assistant anytime you ask Alexa to read your flash briefing. What’s the use case you ask? Well, now when I wake up in the morning and get my flash briefing, Home Assistant adds this to the end of it for me:

+
+

Drive time with traffic is 35 minutes. There is an UberPOOL that will cost $11.52, estimated to be 2 minutes away, for a total of 37 minutes. BART is currently estimated to take 29 minutes. You should take BART, as it is estimated to be faster by 8 minutes.

+
+

Now I know how to best get to my real job (no, Home Assistant is not my real job, it does seem like it sometimes though) every morning. Obviously not the best home automation example, but I think you get the idea. I could see this being used to tell you any major events that happened in your home overnight or reading you your hyperlocal weather report. Thanks to the audio support you could even replace all of the default Alexa Flash Briefing sources with your own news feeds. Home Assistant supports both text and audio content as well as displaying data in the Alexa app. I also want to point out that unlike the existing Skill integration, the Flash Briefing API does not require HTTPS (but you should still be using HTTPS if possible). For more information, check out the new docs.

+

+ + You stay classy, San Diego. (It’s funny, because balloob lives in San Diego)) +

+

Major breaking Z-Wave changes ahead

+

A rather nasty Z-Wave issue was discovered recently by @lukas-hetzenecker. There was a somewhat large chance that if you had multiple of the same model Z-Wave device they may both try to use the same entity IDs. To fix the issue the internal Z-Wave index is now appended to the end of all Z-Wave entity IDs.

+

What this means for all you Z-Wave users is that you will need to update your configurations to reflect the change. I personally have quite a few (17) Z-Wave devices and went through the process this week. Here’s what I had to do:

+
    +
  • Update customizations
  • +
  • Update groups
  • +
  • Update my zwave.customize section
  • +
  • Update my Alexa skills that used old entity IDs
  • +
  • Because I use emulated_hue with Alexa and emulated_hue uses the entity ID as a unique identifier I also had to remove all Z-Wave devices from Alexa and re-add them.
  • +
+

Your todo list may be a little different from mine, I just wanted to outline the steps I took to give you an idea of what you need to think about. It’s not a very hard process, especially when using global find and replace in Sublime Text but did take me about 20 minutes to complete.

+

This is super annoying, I know, especially since we had said in 0.12 that Z-Wave IDs should hopefully never change again, but we are now forced to eat those words. I will state again that Z-Wave IDs shouldn’t change in the future but obviously we see how that went. To sum up on this section… sorry but it had to happen.

+

All changes

+ +

Release 0.31.1 - October 24

+
    +
  • Identify special character encoding error in YAML files (@kellerza, @lwis)
  • +
  • iOS app component bug fixes (@robbiet480)
  • +
  • Fix a spelling problem on user-facing error (@robbiet480)
  • +
  • YAML includes will ignore dirs/files prefixed with . (@lwis)
  • +
+

Breaking changes

+
    +
  • The HTTP component now takes a different format for authenticating IPs
  • +
  • Configuration format has changed for Proximity
  • +
  • The Arduino platform are now covered by the configuration check. Please check the documentation to see how.
  • +
  • The Z-Wave entity ID change mentioned above
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+

Until next time

+

Thanks for reading all of the above, especially since this week was a pretty long post. We should be back with a new post around November 5th announcing the arrival of 0.32.

+

– Robbie

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/10/25/explaining-the-updater/index.html b/blog/2016/10/25/explaining-the-updater/index.html new file mode 100644 index 0000000000..b11029b230 --- /dev/null +++ b/blog/2016/10/25/explaining-the-updater/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Explaining the Updater - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Explaining the Updater

+
+ + + three minutes reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+

On Saturday, we released Home Assistant 0.31 which includes an improved updater component that checks for new versions using the Home Assistant servers. We wanted to update the community on its rollout and answer some questions that have come up. As part of the update check anonymous information about your operating system and Python version is submitted to Home Assistant servers unless you have opted out.

+ +

Why we changed the updater

+

This change was driven by two important factors.

+

Improving the security of the users.

+

As a user, you will be able to be notified if you are running a Home Assistant version that includes components that have known security flaws.

+

Although we hope to not have to use this feature often, it is important for us to be able to reach out to impacted users. We had the need for such a feature once in the past. Due to a bug the forecast.io sensor was making a huge amount of API requests causing some of our users to get charged because they went over the free quota.

+

Please note that this functionality is not done yet but will be available in a future release.

+

Focusing our resources where it matters

+

As developers of Home Assistant, we will be able to see in what kind of environments Home Assistant is running. Here’s a few data points we didn’t have until now:

+
    +
  • Total number of instances
  • +
  • Which operating systems versions and flavors are in use
  • +
  • Python version
  • +
  • What option is more popular: Docker, Virtualenv or bare metal installs?
  • +
  • How popular is our new Raspberry Pi image?
  • +
+

Why we look up your IP address with GeoIP

+

We store the city so that we can see where our users are from. This information will be used to give us a better insight in where our users are from. This will help us gather data to see if we should for example prioritize internationalization. In addition, we previously had a nasty bug with the sun component in which users above a certain latitude were having crashes multiple times a day. Had the updater component been in place we could have targeted a special priority update notification only to them.

+

As stated in the release blog post, the location information is not provided by your local Home Assistant installation but is instead gathered by comparing your IP address against the GeoLite2 data created by MaxMind. From their documentation:

+
+

IP geolocation is inherently imprecise. Locations are often near the center of the population. Any location provided by a GeoIP database should not be used to identify a particular address or household.

+
+

Why is it enabled by default

+

We decided to have it enabled by default because we consider the information that is gathered not harmful. We understand that not everyone will agree with us and so we have provided multiple ways to opt out.

+

It is in our short-term planning to add an option to control this to our frontend.

+

Source Code

+

The source code of our updater AWS Lambda function is now available here.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html b/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html new file mode 100644 index 0000000000..481e20718a --- /dev/null +++ b/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html @@ -0,0 +1,301 @@ + + + + + + + + + 0.32: Hacktoberfest, InfluxDB sensor, Error reporting, and Weather - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.32: Hacktoberfest, InfluxDB sensor, Error reporting, and Weather

+
+ + + six minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Another two weeks have passed and we are pleased to present Home Assistant 0.32.

+

Hacktoberfest

+

The Hacktoberfest is over now. Home Assistant made the 2nd and the 3rd place out of almost 30’000 participating repositories with a total of 528 pull requests closed - that’s an average of 17 pull requests a day! Thanks to all the contributors but also to the team of reviewers. This wouldn’t been possible without you 👏 .

+

Improved error reporting

+

This release has improved the reporting when a config validation error occurs. Thanks to @kellerza you will now get a persistent notification added to your UI when this happens.

+

Asynchronous

+

This release contains the first asynchronous sensor and camera platforms. @pvizeli and @fabaff ported most of the “internal” sensors to async programming. We hope that you will enjoy the new speed.

+

@balloob and @pvizeli worked a lot on the improvement of the core itself.

+

Weather component

+

For a long time we have had a bunch of weather sensors but it’s getting better: There is now a Weather component. Sorry, not much more to tell right now. The plans are to create a weather UI element and to improve the initial implementation.

+

All changes

+

+ +

Release 0.32.1 - November 6

+

We’ve added a warning to 0.32 to catch platforms accidentally slowing down Home Assistant. Our aim is to fix these quickly when reported, so here is 0.32.1 with all reported platforms fixed.

+
    +
  • Fix Sonos doing I/O inside the event loop (@pvizeli)
  • +
  • Fix Radiotherm doing I/O inside the event loop (@balloob)
  • +
  • Fix camera MJPEG streams when using HTTP 1.0 (@balloob)
  • +
+

Release 0.32.2 - November 7

+
    +
  • Move Honeywell I/O out of the event loop (@balloob)
  • +
  • Use sequential updates for non-async entities to prevent race conditions (@pvizeli)
  • +
  • Fix setting temperature in Celsius on Radiotherm CT50 thermostats (@andyat)
  • +
  • Fix PiLight config validation (@DavidLP)
  • +
+

Release 0.32.3 - November 11

+
    +
  • Fix OpenWeather weather platform doing I/O in event loop (@lwis)
  • +
  • Fix Alarm.com doing I/O in event loop (@jnewland)
  • +
  • Fix Tellstick doing I/O in event loop (@balloob)
  • +
  • Fix KNX doing I/O in event loop (@balloob)
  • +
  • Increase warning threshold for catching platforms that do I/O (@balloob)
  • +
  • Change pilight systemcode validation (@janLo)
  • +
  • Fix Yamaha discovering already configured receivers (@sdague)
  • +
  • Fix Sonos from installing dependency each time HA was started (@pvizeli)
  • +
  • Fix Synology camera SSL and error handling (@pvizeli)
  • +
  • Fix Panasonic Viera doing I/O in event loop (@balloob)
  • +
  • Improve generic camera error handling (@kellerza)
  • +
  • Light - Flux Led Lights: allow specifying mode if light does not support white mode (@DanielHiversen)
  • +
  • Fix Rest switch default template (@pvizeli)
  • +
+

Release 0.32.4 - November 15

+
    +
  • Fix device tracker from crashing HASS when a new device was discovered (@balloob)
  • +
  • HTTP: Fix X-Forwarded-For feature (@mweinelt)
  • +
+

Misc

+

Our website has now an additional category called “Ecosystem”. This will become the place where tools, apps, and other helper for the Home Assistant ecosystem can store their documentation or guides.

+ +

Breaking changes

+
    +
  • The Yahoo Finance platform supports now multiple stock. Please adjust your configuration.
  • +
  • Deprecated components garage_door, rollershutter, thermostat, and hvac have been removed.
  • +
  • The minimum Python version on Windows has been bumped to Python 3.5.
  • +
  • The Insteon Hub integration has been disabled due to a request from Insteon.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html b/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html new file mode 100644 index 0000000000..d6e62da5ce --- /dev/null +++ b/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html @@ -0,0 +1,262 @@ + + + + + + + + + 0.33: New Calendar component, Wink thermostats and Cisco IOS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.33: New Calendar component, Wink thermostats and Cisco IOS

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

For this release we put a lot of focus on finishing our async upgrade and fix a bunch of bugs in the process.

+

But a new release wouldn’t be awesome if it didn’t had some new goodies and this release is no different. This release includes a new calendar component by @mnestor. It comes now with Google Calendar support, which should allow you to automate things based on your calendar events!

+

Changes

+ +

Release 0.33.1 - November 20

+ +

Release 0.33.2 - November 22

+ +

Release 0.33.3 - November 23

+
    +
  • Update Yr.no entities every hour (@kellerza)
  • +
  • Bump Netdisco to 0.7.7 (fixes discovery on Synology)
  • +
  • Fix discovery race condition (most obvious in Wemo) (@balloob)
  • +
+

Release 0.33.4 - November 24

+
    +
  • Set executor pool size to 10 (as intended) (@pvizeli)
  • +
+

This should fix occasional performance problems that some people have reported.

+

Breaking changes

+
    +
  • We have included a fix that impacts how we generate entity ids. This only impacts devices with accented characters. Instead of being stripped out, they are now replaced with the non-accented version. So now Tèst Mörê will become test_more instead of tst_mr.
  • +
  • Command line switches will now use the specified object ID for their entity ID instead of basing it off the name.
  • +
+

Reporting issues

+

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/12/03/remote-websockets-sonarr/index.html b/blog/2016/12/03/remote-websockets-sonarr/index.html new file mode 100644 index 0000000000..884c1dc1f7 --- /dev/null +++ b/blog/2016/12/03/remote-websockets-sonarr/index.html @@ -0,0 +1,323 @@ + + + + + + + + + 0.34: New Remote component, Websockets, Sonarr, GPSLogger - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.34: New Remote component, Websockets, Sonarr, GPSLogger

+
+ + + six minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Here we go… 0.34. Let’s call it the “Santa Claus” release. Rudolph was faster than expected and there’s lot’s of goodies on the sleigh. Of course, more work on async programming done by @pvizeli and @balloob, new components, new platforms, major improvements, and much more.

+

GPSLogger

+

The work of @dainok let’s you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the GPSLogger app. GPSLogger can use multiple sources: the passive one just get the latest Android known location, without activating GPS sensors or scanning for WiFi networks.

+

Remote component

+

The brand new remote component made by @iandday will simplify the integration of all kinds of remote control units. The first platform for Harmony is included in this release.

+

HomeMatic

+

The HomeMatic component has received some updates worth mentioning:

+
    +
  • Additional services +
      +
    • reconnect: Reconnect to your CCU/Homegear without restarting Home Assistant.
    • +
    • set_dev_value: Manually control a device, even if it’s not supported by Home Assistant yet.
    • +
    +
  • +
  • Support for multiple HomeMatic hosts
  • +
  • Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices)
  • +
  • Various improvements and fixes, especially for HM-Sec-Key (KeyMatic)
  • +
+

The support for multiple hosts is a result of allowing mixed configurations with wireless, wired, and IP devices. This has the drawback of making the update a breaking change (along with the renamed set_value service). However, the benefits and possibilities gained will be worth it.

+

Websocket API

+

This release includes a new websockets based API by @balloob to power the next generation of Home Assistant frontends. The current frontend has been partly migrated to use it and will be further migrated in the future.

+

All changes

+ +

Release 0.34.1 - December 4

+

This release has a bunch of bug fixes including a big one: emulated_hue will now work with Google Home! We usually reserve patch releases for small bug fixes but we considered this more impactful bug fix so important that we’re including it now instead of having people wait two weeks.

+

To make the fix backwards compatible (it is a patch release after all) you will have to add two new configuration option to emulated_hue to have it work with Google Home:

+
emulated_hue:
+  type: google_home
+  # This is important. Sadly, Google Home will not work with other ports.
+  listen_port: 80
+
+
+

We are working on a better solution for 0.35.

+ +

Release 0.34.2 - December 5

+
    +
  • Fix Nest interpreting Celsius as Fahrenheit and converting it (@balloob)
  • +
  • Fix Nest sensor platforms throwing errors (@technicalpickles)
  • +
  • Frontend will now always show persistent_notification and configurator entities even if not part of the active view (@balloob)
  • +
  • Fixed media player cards taking up unnecessary space (@balloob)
  • +
+

Release 0.34.3 - December 6

+
    +
  • Fix Hook connections (@dasos)
  • +
  • Fix random websocket connections (@balloob)
  • +
  • Fix Google Home sometimes not finding our emulated_hue (@jawilson)
  • +
  • Fix EnOcean config validation (@rubund)
  • +
+

Release 0.34.4 - December 7

+
    +
  • 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 between turning on multiple entities (@balloob)
  • +
  • Fix Nest Climate temperature issues (@technicalpickles)
  • +
+

Release 0.34.5 - December 12

+
    +
  • Fix Nest sensors doing I/O inside event loop (@balloob)
  • +
  • Fix Nest version bump not triggering re-install (@R1chardTM)
  • +
  • Fix Nest cameras without activity zones (@technicalpickles)
  • +
  • Fix Plex doing I/O inside event loop (@balloob)
  • +
+

Breaking changes

+
    +
  • The HomeMatic component now uses a different syntax for hosts and the set_value service has been renamed.
  • +
  • All RFXtrx sensors will get a new entity ID.
  • +
  • The frontend now uses websockets. If you run a server in front of Home Assistant, you will have to update your config (example nginx)
  • +
  • Nest contains changes which will require your attention.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you use these communication channels. Thanks.

+

Reporting Issues

+

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html b/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html new file mode 100644 index 0000000000..44e6b7e6c8 --- /dev/null +++ b/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html @@ -0,0 +1,276 @@ + + + + + + + + + 0.35: Text-to-speech, VLC, Flic, netdata - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.35: Text-to-speech, VLC, Flic, netdata

+
+ + + four minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

5000 stars on GitHub, 2000 people in our 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.

+

This will be the last release of 2016 as our developers are taking a well deserved break. We will be back in 2017!

+

Text to Speech

+

With the addition of a text-to-speech component by @pvizeli we have been able to bring Home Assistant to a whole new level. The text-to-speech component will take in any text and will play it on a media player that supports to play media. We have tested this on Sonos, Chromecast, and Google Home.

+

https://www.youtube.com/watch?v=Ke0QuoJ4tRM

+

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 developer chat and take a stab at one of our open issues.

+

VLC media player, Broadlink, and GPSLogger

+

Let you control VLC media player and play sound on connected speakers.

+

This Broadlink switch platform allow to you control Broadlink RM2 Pro and RM mini IR+RF devices. This Broadlink sensor platform adds support for Broadlink RM2 and A1 Devices.

+

The GPSLogger now also supports attributes as the speed, direction, altitude, provider, and activity.

+

All changes

+ +

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:

+
http:
+  base_url: example.duckdns.org
+
+
+
    +
  • Fix exit hanging on OS X with async logging (@balloob)
  • +
  • Fix Text to speech clearing cache (@pvizeli)
  • +
  • Allow setting a base API url in HTTP component (@balloob)
  • +
  • Fix occasional errors in automation (@pvizeli)
  • +
+

Release 0.35.2 - December 19

+
    +
  • When base url specified, do not combine it with server_port (@balloob)
  • +
+

Release 0.35.3 - December 23

+
    +
  • Fix issue with voicerrs and post api (@pvizeli)
  • +
  • Fix async component update on service calls (@pvizeli)
  • +
  • Fix async log handle do not close (@pvizeli)
  • +
  • Fix nest component with various KeyError exceptions (@technicalpickles)
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2016/12/19/thank-you/index.html b/blog/2016/12/19/thank-you/index.html new file mode 100644 index 0000000000..46f604a935 --- /dev/null +++ b/blog/2016/12/19/thank-you/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Thank You - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Thank You

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

A year ago Home Assistant 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. 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.

+

However, being on a two week release cycle also means that the community has to rally each two weeks to make sure everything is ready to go. A lot of people are involved in making sure that all pieces are in place, to all of those: thank you! Thank you for all the time and effort you put in to make Home Assistant the best home automation software out there.

+

Another big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. Making quality software is not a small feat and all of you can be proud of yourself.

+

Also a big thanks for the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thanks GitHub, TravisCI, CloudFlare and Discourse!

+

And finally thank you community for being so helpful and awesome 🙇.

+

We’re taking a well deserved break and we will be back again in 2017 with more awesomeness. Happy holidays!

+

– Paulus

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/01/03/control-my-christmas-tree-stats/index.html b/blog/2017/01/03/control-my-christmas-tree-stats/index.html new file mode 100644 index 0000000000..a395e9bad0 --- /dev/null +++ b/blog/2017/01/03/control-my-christmas-tree-stats/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Control My Christmas Tree Stats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Control My Christmas Tree Stats

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

Hello and Happy New Year!

+

I am not Paulus. My name is Ben. I’m the creator of the BRUH Automation YouTube channel. 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! 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!

+

+ + The Christmas tree in action. +

+ +

During the time by tree was set up, I had 7,366 visitors from 88 countries connect to my Home Assistant instance. This generated an estimated 100,000 clicks on the switches in my Home Assistant instance - thanks in part to some folks who posted up with macros for 6-8 hour stretches.

+

+ + View counts of the video. +

+

I’m very excited to report that Home Assistant didn’t crash a single time. In fact, it didn’t even bog down or need to be restarted. The Wemo Insight and Sonoff relays were incredibly resilient, as well. I only had one Sonoff failure and two Wemo Insight failures both of which were resolved by power cycling them. The digital LED strips also fared pretty well, hanging up only twice, aside from a loose connector.

+

I would like to send a big thank you to the Home Assistant developers who have worked so hard on making Home Assistant run so well. This project is a testament to your hard work on making Home Assistant one of the best home automation platforms out there. Thank you!

+

I’m looking forward to continuing my home automation adventures with Home Assistant and I can’t wait for next Christmas with an even bigger and badder tree. :)

+

Wishing everyone the best in 2017!

+

Cheers! -Ben

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/01/14/iss-usps-images-packages/index.html b/blog/2017/01/14/iss-usps-images-packages/index.html new file mode 100644 index 0000000000..4e0365f83d --- /dev/null +++ b/blog/2017/01/14/iss-usps-images-packages/index.html @@ -0,0 +1,293 @@ + + + + + + + + + 0.36: ISS, USPS, Image processing, Insteon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.36: ISS, USPS, Image processing, Insteon

+
+ + + five minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Welcome to 2017 and 0.36. We are proud to announce the first release for this year. While we are still migrating parts to async but 0.36 is focusing on new features and a lot of bug fixes.

+

Packages

+

Packages are providing a new way to organize different component’s configuration parts together. With packages we offer the option to include different components or parts of configuration using any of the !include directives.

+

InfluxDB export

+

The InfluxDB component was causing problems in a wide variety of use cases. @titilambert improved our InfluxDB exporter feature. It might be that you need to run the migration script to update your InfluxDB database.

+
$ hass --script influxdb_migrator \
+    -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \
+    -d INFLUXDB_DB_NAME
+
+
+

International Space Station (ISS)

+

No, unfortunately we are not going to space. The iss sensor is tracking the position of the International Space Station and gives you some details.

+

Insteon local

+

The support for Insteon was removed due to issues a while ago. With the insteon_local component support for Insteon is back and let one work locally with an Insteon setup.

+

Image processing

+

The new image processing component currently works with number plates. But this could level the way to integrate feature like facial recognition, motion detection, or gestures control.

+

All changes

+ +

Release 0.36.1 - January 17

+ +

Breaking changes

+
    +
  • APNS service was moved to the notify domain. Use notify.apns_NOTIFIER_NAME instead of apns.NOTIFIER_NAME.
  • +
  • InfluxDB component has a new schema to store values in the InfluxDB database. You may require to run the influxdb_migrator script. +You have to note: +
      +
    • There will not be any tags/fields named time anymore.
    • +
    • All numeric fields (int/float/bool) will be stored as float inside influx db.
    • +
    • All string fields corresponding to state attributes will be renamed as FIELDNAME_str, where FIELDNAME is the state attribute, to avoid type conflicts.
    • +
    • All string fields corresponding to a state will be renamed as state (former value).
    • +
    • Fields named value will always be stored as float.
    • +
    • Fields named state will always be stored as string.
    • +
    +
  • +
  • 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.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/01/18/numbers/index.html b/blog/2017/01/18/numbers/index.html new file mode 100644 index 0000000000..666cbb7d46 --- /dev/null +++ b/blog/2017/01/18/numbers/index.html @@ -0,0 +1,216 @@ + + + + + + + + + Numbers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Numbers

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

It’s week 3 of 2017 and great things did already happen. This is just a little recap.

+
    +
  • In the OSS Metrics leaderboard we are on place 30. Within three months we moved from our starting place which was 66 in September 2016 up to the current one.
  • +
  • We were listed on Github Trending. Also, was @balloob mentioned as trending developer.
  • +
  • @balloob’s talk at the OpenIoT Summit 2016 was rated as one of the Top 5 videos of the conference.
  • +
  • We now ship over 500 components and platforms.
  • +
  • We processed over 3500 Pull requests on the main repository so far.
  • +
+

You may ask yourself why this is amazing. It’s amazing because we are a community-only project driven by volunteers there is no financial support, no company in the background, and no paid developers who are working on Home Assistant. Here is another “Thank you” because you are the driving force behind Home Assistant.

+

What more numbers? Checkout the Trivia page

+

– Fabian

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/01/21/home-assistant-governance/index.html b/blog/2017/01/21/home-assistant-governance/index.html new file mode 100644 index 0000000000..dfd7a36b56 --- /dev/null +++ b/blog/2017/01/21/home-assistant-governance/index.html @@ -0,0 +1,253 @@ + + + + + + + + + Home Assistant Governance [updated] - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant Governance [updated]

+
+ + + five minutes reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+

UPDATE JAN 28, 2017

+

After feedback from the community we have updated the CLA and the license that Home Assistant is distributed under. For the CLA, instead of enforcing requirements on the grants and code, we now require contributions to be licensed under the Apache 2.0 license. Special thanks to Matthew Garrett for his feedback and advice.

+

Starting with release 0.37, Home Assistant will re-license the current code under the Apache 2.0 license. This is the license that will be used moving forward for all projects under our organization.

+
+

The Home Assistant project and community has seen enormous growth in the last three years. Many volunteers work tirelessly everyday to give you all the awesomeness that you see today. Much more work is involved than many people realize. Beyond simply coding Home Assistant, volunteers continually maintain related projects, update documentation, post examples, author blog posts, and moderate the forums and chat. This is something that we want to keep safe and functional, even as we grow.

+

Starting today we are announcing a few initiatives to help protect our users, contributors and community members.

+ +

Code of Conduct

+

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

+

Read the Code of Conduct

+

Contributor License Agreement

+

Moving forward we will also require that all contributors to any project have electronically signed our contributor license agreement (CLA). We have adopted the CLA that GitHub uses for their projects (see update at the top). Currently we have no plans to retroactively require a CLA for previous contributions, only those going forward.

+

Until a signed CLA is on file your pull request will not be reviewed or accepted. When you open a new pull request, if you do not have a CLA on file, our helpful bot will walk you through the steps to complete the process.

+

We intend to require an electronically signed contributor licensing agreement for all contributors beginning with our next release (0.37), currently scheduled for release on Saturday, January 28th, 2017 (one week from today). The CLA is being added to all repositories today.

+

A CLA is difficult to describe but GitHub did an excellent job so this next section is taken from https://cla.github.com:

+

What is a Contributor License Agreement?

+

A Contributor License Agreement, known as a CLA, asks contributors to confirm that:

+
    +
  1. Anyone can use your contributions anywhere, for free, forever.
  2. +
  3. Your contributions do not infringe on anyone else’s rights.
  4. +
+

The GitHub CLA helps ensure the smooth operation and usability of the open source projects that we maintain.

+

Why is a CLA necessary?

+

It depends on the jurisdiction, but in the United States, contributions are owned by the author or their employer. When the contribution is accepted, the project becomes a bundle of derivative works. The agreement of all contributors are necessary to maintain distribution of the complete project and to any licensing agreement.

+

Isn’t that the purpose of an open source license?

+

Most open source licenses deal with use of the original code, and don’t refer to contributions, or derivatives of the original.

+

How does a CLA protect a project?

+

If the owner of a contribution decides that they don’t want the contribution to be part of the project or in any given distribution, the law is on their side. The project, contributors, and users may be subject to legal action. This may require payment of damages and could prevent further usage or contributions until the matter is resolved.

+

Even when there is no legal pursuit, too much ambiguity can jeopardize or doom a project by preventing those that can’t risk legal action from getting involved.

+

Why does it seem like only “corporate” projects have a CLA?

+

There are many projects without corporate ownership that use a CLA or even a copyright assignment: jQuery and Eclipse, for example. However, it is true that projects with financial backing tend to be at a higher risk of becoming a target, so they may have a lower tolerance for legal ambiguity.

+

Security requirements

+

With more collaborators involved with Home Assistant we are also exposing ourselves to more risk as more people have write access. As such we taking the following steps.

+
    +
  1. As of November 3rd, 2016, all collaborators have been required to have 2 factor authentication (2FA) enabled on their GitHub account.
  2. +
  3. Going forward, we will do an audit from time to time and strip collaborators from write access if they haven’t contributed for a while. This is in no sense meant to boot people, and you are absolutely eligible to get it back in the future when you wish start contributing again.
  4. +
+

Licensing

+

We will now ensure that a LICENSE.md file exists in all projects under the Home Assistant organization and is an OSI approved open source license or a Creative Commons license.

+

Code License

+

The chosen license for all code projects under the Home Assistant organization is the Apache 2.0 license.

+

Documentation License

+

All content on home-assistant.io and all other documentation/asset projects under the Home Assistant organization will be licensed under the Creative Commons License, specifically the Attribution-NonCommercial-ShareAlike 4.0 International license.

+

Crediting contributors

+

We have now mostly automated updating the Credits page so that contributors get their attribution more quickly.

+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/01/28/face-coffee-wink/index.html b/blog/2017/01/28/face-coffee-wink/index.html new file mode 100644 index 0000000000..fabffbdd36 --- /dev/null +++ b/blog/2017/01/28/face-coffee-wink/index.html @@ -0,0 +1,339 @@ + + + + + + + + + 0.37: Face detection, Coffee, Wink - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.37: Face detection, Coffee, Wink

+
+ + + nine minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

No stats, no numbers, and alike this time. Ok, just one number: 0.37. We are back on track with our bi-weekly release cycle. Beside some organizational changes is this release shipping again cool features and new integrations. Please keep an eye on the “Breaking changes” section because there are also massive improvements for some platforms and components.

+

Governance

+

As announced, the new Governance requires for developers to sign the CLA. Code of Conduct, Contributor License Agreement, and proper Licensing will to protect all involved parties in the Home Assistant eco-system from users and community members to contributors.

+

Face recognition using the Microsoft Face API

+

@pvizeli has been on a roll with the image processing integrations. This time it’s the Microsoft Face API. This means that now it will be possible to train the API with the people you want to recognize and send images from your camera to the API as another source of automation.

+

Want to play a personalized tune when someone enters the house? It is now possible 😎

+

Improved camera security

+

After a security audit by Stephen O’Conner, he found that our source for randomly generated access tokens for camera feeds were reasonable predictable and could be brute force attacked in 2.5 weeks. A fix has been included in this release that uses the system provided random number generator for maximum randomness and rotates the keys every 10 minutes to reduce the window in which a brute force attack can happen.

+

Although the old method is not insecure, the new method is a lot more secure. Upgrading to the latest version is encouraged.

+

New customization options

+

@Andrey-git has added some great new options to the customize functionality. It is now possible to specify customizations as a wildcard for entities or for a specific domain.

+

Major Wink and HDMI CEC improvements

+

@w1ll1am23 did an amazing job fixing a ton of bugs and issues with the Wink integration. Biggest improvement is that it now is able to automatically refresh the authentication tokens. This means that if you have your email address and password in your configuration.yaml file, no client_id and client_secret are needed, and token which was generated with the generator located in the Wink documentation.

+

The new Wink support will cause renaming of all the binary sensors and will also create new sensors for devices that weren’t previously detected or supported in the older version.

+

Thanks to @konikvranik the HDMI CEC integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI CEC and give you more control.

+

First Coffee Maker supported

+

@stu-gott has added support for the first coffee maker in Home Assistant: Mr. Coffee Smart Optimal Brew. Happy brewing!

+

All changes

+

New platforms/components

+ +

Improvements

+
    +
  • Script: Fix script release (@balloob)
  • +
  • Camera - Amcrest: Add support for direct MJPEG streams from Amcrest cameras (@colinodell)
  • +
  • Sensor - Miflora: Removing throttle decorator (@freol35241)
  • +
  • Notify - Lannouncer: Fix get_service method (@mKeRix)
  • +
  • Sensor - WAQI: Add station parameter to waqi sensor (@whhsw)
  • +
  • Sensor - USPS: Absolute path to save cookie used by USPS sensor (@tchellomello)
  • +
  • Nest: Fix python-nest release number (@Danielhiversen)
  • +
  • Keyboard remote: Improve support (@MrMep)
  • +
  • Device tracker - VolvoOnCall: Fix timedelta (@pvizeli)
  • +
  • Climate - eq3btsmart: Expose away attribute (@rytilahti)
  • +
  • Remote: Reserve a test port for broken API to fix race (@armills)
  • +
  • Climate - Ecobee: Made target temperature sensitive to auto mode (@Duoxilian)
  • +
  • Configuration: Fix load_yaml default value (@balloob)
  • +
  • Notify - Facebook: Fix encoding error (@Danielhiversen)
  • +
  • Emulated_hue: Add upnp_bind_multicast option, default type to Google, and persist emulated hue IDs (@hoopty, @balloob)
  • +
  • Docker: Install phantomjs in Docker container (@jnewland)
  • +
  • Media player - MPD: Add listing and selection of available MPD playlists (@partofthething)
  • +
  • Media player - Denon AVR: Denon improvements (@glance-)
  • +
  • Light - x10.py: Improved x10 state monitoring (@martst)
  • +
  • Sensor - DSMR: TCP, reconnecting and V4 CRC support (@aequitas)
  • +
  • Media player - Yamaha.py: Fix Yamaha doing I/O in event loop (@balloob)
  • +
  • Device tracker UPC: Make upc more robust (@pvizeli)
  • +
  • Climate - Generic thermostat: Update (@MrMep)
  • +
  • Device tracker - Xiaomi.py: Xiaomi Mi Router token refresh (@RiRomain)
  • +
  • Camera - MJPEG: Support still image for thumbmail (@pvizeli)
  • +
  • Sensor - ZAMG: Updated valid station id list (@HerrHofrat)
  • +
  • Light - ISY994: Not overwrite state_attributes (@rmkraus)emul-hue
  • +
  • Light - Zwave: Use only supported features for devices (@turbokongen)
  • +
  • Media player - Kodi: Support for volume stepping (@armills)
  • +
  • Media player- roku: Use is_screensaver, update IDLE state, and use device name (@robbiet480, @xhostplus)
  • +
  • Switch - HDMI CEC: Support for devices and commands (@konikvranik)
  • +
  • Lock - Zwave: Improvements to Zwave lock platform (@turbokongen)
  • +
  • TTS: Invalidate broken file cache entries (@stu-gott)
  • +
  • Light - Hue: Improvements (@robbiet480)
  • +
  • TTS - YandexTTS: Added speed and emotion to Yandex TTS (@lupin-de-mid)
  • +
  • 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: 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)
  • +
  • Media player - Kodi: Add SSL configuration option (@ecksun)
  • +
  • Sensor - WAQI: Add missing particle value (@fabaff)
  • +
  • Wink: Support for python-wink 1.0.0 (@w1ll1am23)
  • +
  • Binary sensor - RPi GPIO: Add a small sleep before reading the sensor (@snagytx)
  • +
  • Sensor - USPS: Add name to configuration (@happyleavesaoc)
  • +
  • Sensor - Miflora: Remove throttle decorator from miflora platform (@freol35241)
  • +
  • Device tracker - asuswrt.py: Add IPv6 support when parsing neighbors (@leppa)
  • +
  • iOS: Discover notify.ios when iOS component loads (@robbiet480)
  • +
  • Homematic: Add MAX shutter contact class (@jannau)
  • +
  • Sensor - Darksky: Added forecast support (@nordlead2005)
  • +
  • Switch - Pilight: Implement echo config option (@janLo)
  • +
  • Core: Support customize in packages (@kellerza)
  • +
  • Switch - Flux: Allow disabling setting the brightness (@rytilahti)
  • +
  • Media player - Sonos: Add is_coordinator, set coordinator after join/unjoin, and no empty image (@pvizeli, @andrey-git, @robbiet480)
  • +
  • Climate: Hold mode (@Duoxilian)
  • +
  • Switch - TPlink: No longer doing I/O in event bus (@balloob)
  • +
  • Light - Insteon local: Improve Insteon configuration (@wardcraigj)
  • +
  • Emulated Hue: Emulated Hue “host-ip” fails to bind when running in docker without --net=host (@jeremydk)
  • +
  • Climate - EQ3 BT smart: Add reporting for availability (@rytilahti)
  • +
+

Bugfix: @balloob, @fabaff, @freol35241, @pvizeli, @Danielhiversen, @tdickman, @armills, @rytilahti, @R1chardTM, @asbach, @happyleavesaoc, @robbiet480, @colinodell, @joopert, @dale3h, @pavoni, @jaharkes, @MartinHjelmare, @mezz64, @jabesq, and you if you are missing in this list.

+

Release 0.37.1 - February 2

+
    +
  • Do not reject alphanumeric IDs for PiLight (@DavidLP)
  • +
  • Fix broken Hue discovery (@DanielHiversen)
  • +
  • Fix Amcrest (@tchellomello)
  • +
  • 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)
  • +
  • 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)
  • +
  • Prevent infinite loop in crossconfigured mqtt event streams (@aequitas)
  • +
  • Fix Hue lightgroups failing on startup (@tboyce1)
  • +
+

Breaking changes

+
    +
  • A major breaking change in the emulated_hue component means that unless you set type: alexa before starting up the newer Home Assistant version you will lose all devices that Alexa has discovered and will need to re-add them as well as create new groups.
  • +
  • The platform of the ISS integration was change to binary_sensor. Please check the platform documentation.
  • +
  • The Roku media uses now a new format for the entity IDs.
  • +
  • OpenALPR is no longer a component. It’s now a platform for Image processing.
  • +
  • Due to massive improvements of the Wink integration, the names of your binary sensors will change and new devices can show up.
  • +
  • The MySensors component now requires all persistence file paths to be set if any is set by the user. This is to avoid name conflicts for the paths. If no path is set Home Assistant will set all paths for you.
  • +
  • The Sonos service sonos_group_players was removed. Use now sonos_join for this function.
  • +
  • TTS cache have change for the last time. Files use now also an 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.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/02/03/babyphone/index.html b/blog/2017/02/03/babyphone/index.html new file mode 100644 index 0000000000..f58c663d20 --- /dev/null +++ b/blog/2017/02/03/babyphone/index.html @@ -0,0 +1,318 @@ + + + + + + + + + Smart Baby Monitor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Smart Baby Monitor

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

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.

+ +

Setup

+

We need an IP camera that can capture sound in the baby’s room. It is also possible to use a Raspberry Pi with a microphone and send the audio to Home Assistant with ffmpeg -f alsa -i hw:1,0 -vn -f rtp rtp://236.0.0.1:2000 over multicast. We can set the input option on the Home Assistant side to rtp://236.0.0.1:2000 in the same network.

+

Next, we attach a ffmpeg_noise binary sensor to our IP camera. The sensor has an output option that allows us to send the output to an icecast2 server for playing over speakers integrated with Home Assistant. We can use the binary sensor in our automation. You can ignore the icecast2 setup if you don’t want to play the audio after the noise sensor trigger.

+

+We change the platform name for binary sensor in 0.38 from ffmpeg to ffmpeg_noise. Also all service going to component and was rename from binary_sensor.ffmpeg_xy to ffmpeg.xy. +

+

On Raspbian Jessie, you can setup FFmpeg and install an icecast2 server using:

+
$ sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
+$ sudo apt-get update
+$ sudo apt-get -t jessie-backports install ffmpeg
+$ sudo apt-get install icecast2
+
+
+

We setup an icecast mount point for our babyphone and update /etc/icecast2/icecast.xml:

+
<mount>
+    <mount-name>/babyphone.mp3</mount-name>
+    <stream-name>Babyphone</stream-name>
+
+    <username>stream_user</username>
+    <password>stream_pw</password>
+</mount>
+
+
+

Now we can add the noise sensor to Home Assistant. We lower the sensitivity of the sensor (so that you are not inundated with notifications for every cough of the baby) to 2 seconds using the duration option. The sensor should wait 60 seconds before restoring and it prevent us that a wine break will triggering a new alarm.

+

We can optimize the audio stream for human voice by using a highpass filter with 300 Hz and a lowpass filter with 2500 Hz. This filters out all non-human sounds such as background noise. We can even add a volume amplifier if the microphone volume is too low (you can remove it from extra_arguments). For icecast2 we convert the audio stream to mp3 with samplerate of 16000 (which is the minimum for Sonos speakers). We use peak to set the threshold for noise detection, where 0 dB is very loud and -100 dB is low.

+
binary_sensor:
+  - platform: ffmpeg_noise
+    input: rtsp://user:pw@my_input/video
+    extra_arguments: -filter:a highpass=f=300,lowpass=f=2500,volume=volume=2 -codec:a libmp3lame -ar 16000
+    output: -f mp3 icecast://stream_user:stream_pw@127.0.0.1:8000/babyphone.mp3
+    initial_state: false
+    duration: 2
+    reset: 60
+    peak: -32
+
+
+

We use the option initial_state to prevent the FFmpeg process from starting with Home Assistant and only start it when needed. We use an input_boolean to control the state of FFmpeg services using the following automation.

+
input_boolean:
+  babyphone:
+    name: babyphone
+    initial: off
+
+automation:
+ - alias: 'Babyphone on'
+   trigger:
+     platform: state
+     entity_id: input_boolean.babyphone
+     from: 'off'
+     to: 'on'
+   action:
+     service: ffmpeg.start
+     entity_id: binary_sensor.ffmpeg_noise
+
+ - alias: 'Babyphone off'
+   trigger:
+     platform: state
+     entity_id: input_boolean.babyphone
+     from: 'on'
+     to: 'off'
+   action:
+     service: ffmpeg.stop
+     entity_id: binary_sensor.ffmpeg_noise
+
+
+

Trigger an alarm

+

Now we can make a lot stuff. Here is a simple example of an automation what should be possible with Sonos speakers.

+
automation:
+ - alias: 'Babyphone alarm on'
+   trigger:
+     platform: state
+     entity_id: binary_sensor.ffmpeg_noise
+     from: 'off'
+     to: 'on'
+   action:
+    - service: media_player.sonos_snapshot
+      entity_id: media_player.bedroom
+    - service: media_player.sonos_unjoin
+      entity_id: media_player.bedroom
+    - service: media_player.volume_set
+      entity_id: media_player.bedroom
+      data:
+        volume_level: 0.4
+    - service: media_player.play_media
+      entity_id: media_player.bedroom
+      data:
+        media_content_type: 'music'
+        media_content_id: http://my_ip_icecast:8000/babyphone.mp3
+    - service: light.turn_on:
+      entity_id:
+       - light.floor
+       - light.bedroom
+      data:
+        brightness: 150
+
+ - alias: 'Babyphone alarm off'
+   trigger:
+     platform: state
+     entity_id: binary_sensor.ffmpeg_noise
+     from: 'on'
+     to: 'off'
+   action:
+    - service: media_player.sonos_restore
+      entity_id: media_player.bedroom
+    - service: light.turn_off:
+      entity_id:
+       - light.floor
+       - light.bedroom
+
+
+

Thanks

+

Special thanks to arsaboo for assistance in writing this blogpost.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/02/04/hassbian-toybox/index.html b/blog/2017/02/04/hassbian-toybox/index.html new file mode 100644 index 0000000000..db1877d258 --- /dev/null +++ b/blog/2017/02/04/hassbian-toybox/index.html @@ -0,0 +1,244 @@ + + + + + + + + + HASSbian 1.1 - The Toy-box - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

HASSbian 1.1 - The Toy-box

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

Tonight I’m happy to announce a new release of the our Raspberry Pi image, HASSbian 1.1 - The Toy-box.
+Why Toy-box you wonder? Because it encompass the changes pretty well.

+

Changes from previous image are big and small but lets start with the interesting things.

+

Hassbian-scripts

+

A set of script written to add extra functionality to your Raspberry Pi installation. +This scripts are run as the pi user and installs a set of tools or packages. +Currently includes:

+
    +
  • Install Libcec. Adds local HDMI CEC support.
  • +
  • Install Mossquitto. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support.
  • +
  • Install OpenZWave. Installs OpenZWave and prepares for using a USB or GPIO ZWave controller.
  • +
  • Install Samba. Installs the Samba packages and shares your configuration over smb to be available to edit on any computer without the need for separate file transfer software. This share is unsecured and it’s usage is not recommended if your installation is publicly available.
  • +
+

All of these scripts are available in the directory /home/pi/hassbian-scripts/. This directory is actually a cloned git repository that’s cloned on first boot and can be updated to the latest release with ease after. +To update the hassbian-scripts directory execute the following command as the pi user.

+
$ cd hassbian-scripts
+$ git pull
+
+
+

To use any of the hassbian-scripts, execute the following command as the pi user. Here we use the libcec script as an example.

+
$ sudo ./hassbian-scripts/install_libcec.sh
+
+
+

For more information about these scripts have a look a the hassbian-scripts repository.

+

Spring cleaning

+

With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image.

+
    +
  • Update pi-gen. Our build script has been upgraded to follow the Raspbian image closer. This image is basically a Raspbian lite image with Home Assistant, dependencies and a small set of changes to the base system.
  • +
  • Removed Mosquitto. Not as bad as it sounds since it’s installation has been move to one of our new hassbian-scripts.
  • +
  • Added rng-tools. Let’s your HASSbian installation use the hardware support in the Raspberry Pi for entropy generation.
  • +
  • Added avahi-daemon package. Your Raspberry Pi should now be available at hassbian.local.
  • +
  • Added htop. User friendly interactive process monitor.
  • +
  • Added tmux. A great terminal multiplexer that makes working with the command line over ssh easier.
  • +
  • Added the homeassistant user to the dialout group. Simplifies use of hardware such as ZWave USB controllers that requires this permission.
  • +
+

On the horizon

+

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 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 our Discord chat server.

+

To get started with the new image, check out the installation instructions in the getting started section.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html b/blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html new file mode 100644 index 0000000000..00a21ae12c --- /dev/null +++ b/blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html @@ -0,0 +1,331 @@ + + + + + + + + + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.38: Alert, AppleTV, MQTT discovery, and Yeelight

+
+ + + seven minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Another Saturday, another release!

+

Core updates

+
    +
  • +

    Thanks to @pvizeli, all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code!

    +
  • +
  • +

    Now when you restart Home Assistant using the homeassistant.restart service, your configuration is checked. If it appears to be invalid the restart will fail.

    +
  • +
+

Rewritten frontend

+

The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new WebSockets API instead of the EventStream API.

+

Custom state card UI

+

A nice new feature is the possibility to create custom state cards in the frontend. Go ahead and write your own state card for lights, sensors, locks, etc.

+

MQTT discovery

+

MQTT now has discovery support which is different than our discovery component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant.

+

Alert component

+

If you left your front door open, then the new alert component can be used to remind you of this by sending you repeating notifications at a given interval.

+

Yeelight

+

The yeelight component has been ported to use a more stable and feature-complete python-yeelight backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our issue tracker.

+

Apple TV

+

Apple TV is now a supported media_player! It has support for just about every media player function, including a realtime display of playback status and artwork.

+

All changes

+

New platforms/components

+ +

Improvements

+
    +
  • Switch - Pilight: Validation no longer rejects alphanumeric IDs (@DavidLP)
  • +
  • Device tracker - ASUSWrt: Fixes ip neigh regex to handle the possible IPv6 “router” flag (@kylehendricks)
  • +
  • Light - MySensors: Fix mysensors RGB and W light turn on (@MartinHjelmare)
  • +
  • Light - Yeelight: new yeelight backend lib, new features (@rytilahti)
  • +
  • Climate - Eq3btsmart: Cleanup modes & available, bump version requirement (@rytilahti)
  • +
  • Sensor - SMA: Handle units correctly (@kellerza)
  • +
  • MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams (@aequitas)
  • +
  • Light - Hue: Fix lightgroups not syncing state (@tboyce1)
  • +
  • Dvice tracker - Owntracks: Fix OwnTracks state names (@tboyce1)
  • +
  • Wink: Wink AC and additional sensor support (@w1ll1am23)
  • +
  • Modbus: Modbus write_register accept list (@benvm)
  • +
  • Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS (@michaelarnauts)
  • +
  • Climate - Ecobee: Cleanup climate and ecobee (@Duoxilian)
  • +
  • Sensor - Miflora: Allow specification of bluetooth adapter (@Danielhiversen)
  • +
  • Sensor - Systemmonitor: Add average load to systemmonitor (@eagleamon)
  • +
  • Sensor - Openweathermap: Add wind bearing (@fabaff)
  • +
  • Notify - Facebook: Allow to use data for enhanced messages (@adrianlzt)
  • +
  • Light - Hyperion: Change CONF_DEFAULT_COLOR CV type (@Joeboyc2)
  • +
  • Mysensors: Fix validation of serial port on windows (@MartinHjelmare)
  • +
  • Notify - Webostv: Store the key file in the configuration directory (@pschmitt)
  • +
  • TTS: TTS ID3 support (@robbiet480)
  • +
  • Switch - Broadlink: Add send packet service (@Yannic-HAW)
  • +
  • Wink: Add support for position on Wink cover (@albertoarias)
  • +
  • Light - Flux: Make brightness display work for RGB devices. (@aequitas)
  • +
  • Media player - Roku: Fix attribute error for media_player/roku (@tchellomello)
  • +
  • Light - MQTT template: Fix brightness slider for MQTT template lights (@ray0711)
  • +
  • Template: Add min and max Jinja2 filters (@sbidoul)
  • +
  • Device tracker - Skyhub: Improve Sky Hub error handling (@alexmogavero)
  • +
  • Notify - SMTP: Add error checking to the MIMEImage encoding (@stratosmacker)
  • +
  • Light - MQTT: Check for command topics when determining the capabilities of an MQTT light (@herm)
  • +
  • Core: Check config before restarting (@andrey-git)
  • +
  • Light - Hue: Fix groups with same names (@tboyce1)
  • +
  • Template: Add icon_template to template sensor (@tboyce1)
  • +
  • Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions (@kellerza)
  • +
  • Light - Flux: Add support for fluxled discovery. (@aequitas)
  • +
  • Media player - AppleTV: Add discovery support to Apple TV (@postlund)
  • +
  • Sensor - Template: Improve warning message in template rendering (@Danielhiversen)
  • +
  • Light - Demo: Add available property and typing hints (@rytilahti)
  • +
  • Sensor - ARWN: Enhancements to ARWN platform (@sdague)
  • +
  • Fan - ISY994: Change medium state for filtering (@Teagan42)
  • +
  • Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. (@Duoxilian)
  • +
  • Tellduslive: Don’t throw exception if connection to server is lost (@molobrakos)
  • +
  • Zoneminder: Refactoring and JSON decode error handling (@pschmitt)
  • +
  • Image processing: Cleanup Base face class add support for microsoft face detect (@pvizeli)
  • +
+

Bugfixes: @balloob, @fabaff, @pvizeli, @mnoorenberghe, @armills, @tchellomello, @aequitas, @mathewpeterson, @molobrakos, @michaelarnauts, @jabesq, @turbokongen, @JshWright, @andriej, @jawilson, @andrey-git, @nodinosaur, @konikvranik, and you if you are missing here.

+

Release 0.38.1 - February 12

+
    +
  • Fix logbook ordering (@balloob)
  • +
  • Fix AppleTV conflicting dependency breaking websockets (@balloob)
  • +
+

Release 0.38.2 - February 12

+ +

Release 0.38.3 - February 15

+
    +
  • Sonos: fix losing favorite sources on disconnect (@pvizeli)
  • +
  • Google Calendar: fix timeMin losing events (@happyleavesaoc)
  • +
  • Fix Wink PubNub subscription (@w1ll1am23)
  • +
  • Z-Wave: getter not to ignore label (@andrey-git)
  • +
  • Moon: remove unit of measurement (@fabaff)
  • +
  • MySensors: add version requirement to notify and device tracker (@MartinHjelmare)
  • +
+

Release 0.38.4 - February 21

+
    +
  • Discovery: flux_led discovery led to problems on systems and has been removed (@bazwilliams)
  • +
  • Hidden devices are no longer visible on views (@balloob)
  • +
+

Breaking changes

+
    +
  • The support for LG webOS Smart TVs was improved. This requires you to move $HOME/.pylgtv to $HASS_CONFIG_DIR/webostv.conf or Home Assistant will need to be paired with the TV again.
  • +
  • Image processing events have been renamed: identify_face has become image_processing.detect_face, found_plate has become image_processing.found_plate
  • +
  • The FFmpeg binary sensor change the platform name from ffmpeg to ffmpeg_noise and ffmpeg_motion. Also all FFmpeg-related services are moved from a platform implementation to a the FFmpeg components and were rename from binary_sensor.ffmpeg_xy to ffmpeg.xy.
  • +
  • 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.
  • +
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/02/14/clt-workshop/index.html b/blog/2017/02/14/clt-workshop/index.html new file mode 100644 index 0000000000..f8c2679197 --- /dev/null +++ b/blog/2017/02/14/clt-workshop/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Workshop at CLT 2017 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Workshop at CLT 2017

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

There will be a Home Assistant Workshop at the Chemnitzer Linux-Tage 2017. First I will cover the installation, the setup, and the configuration process. The second part will be all about automation. Last but not least, we will talk about the integration of a new platform/component.

+

Check the Workshop overview to get the details.

+

Reqistration is required as the places in the room are limited. The deadline for the registration is March, 8th 2017.

+
    +
  • Location: Technische Universität Chemnitz, Reichenhainer Straße 90, 09126 Chemnitz, Germany
  • +
  • Date: March, 12th 2017
  • +
  • Time: 10:00, Room W2
  • +
  • Language: German
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/02/22/home-assistant-tshirts-have-arrived/index.html b/blog/2017/02/22/home-assistant-tshirts-have-arrived/index.html new file mode 100644 index 0000000000..79fc30e007 --- /dev/null +++ b/blog/2017/02/22/home-assistant-tshirts-have-arrived/index.html @@ -0,0 +1,248 @@ + + + + + + + + + Home Assistant t-shirts have arrived! - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant t-shirts have arrived!

+
+ + + two minutes reading time + + +
    +
  • Merchandise
  • +
+
+ Comments +
+
+

+ + Cool dude with beard and tattoo wearing the new blue Home Assistant shirt. +

+

What time is it? Yep, t-shirt time. Today we’re launching the first two Home Assistant designs. We have a blue t-shirt (🇪🇺 EU🇺🇸 US) as pictured above and a design for on black/gray shirts (🇪🇺 EU🇺🇸 US) as pictured below.

+ +

+

And because we love the internet and all the things that it has brought us, we will start with having 100% of the profit from the sales be donated to the Electronic Frontier Foundation. If you buy a shirt you will hit two birds with one stone (figuratively): you get to wear a kick-ass Home Assistant t-shirt and you help fund defending civil liberties in the digital world.

+

The EFF is a nonprofit organization that aims to protect the rights of technology users. You might however be more familiar with one of their projects: Let’s Encrypt. Read more about what the EFF does.

+

So, what are you waiting for? Get yourself a shirt! 🇪🇺 EU store🇺🇸 US store

+

+ + Family of 4 on a bench wearing the new black Home Assistant shirt. 🇪🇺 EU🇺🇸 US +

+

We are using Teespring.com to manage all the sales, production and distribution of the shirts and they will also donate our profits to the EFF. It’s also how we got all these amazing stockphotos. Some extra things to note about our teespring shop:

+
    +
  • Teespring shows that there is a number of days left until the end of the campaign for the shirts. Don’t worry about that, it should automatically relaunch.
  • +
+

More photos after the click. +

+

+ + Moment suprême of a solo pull-my-finger joke while wearing the new blue Home Assistant shirt. – 🇪🇺 EU🇺🇸 US +

+

+ + Two men carrying two women and the new blue Home Assistant shirt. – 🇪🇺 EU🇺🇸 US +

+

+ + Cute girl with gigantic lollipop rocking the new black Home Assistant shirt. – 🇪🇺 EU🇺🇸 US +

+

+ + Frustrated user wearing the new blue Home Assistant shirt. – 🇪🇺 EU🇺🇸 US +

+

+ + Cool kid listening to music + sidekick. Both wearing the new blue Home Assistant shirt. – 🇪🇺 EU🇺🇸 US +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/02/25/config-panel-and-state-restoration/index.html b/blog/2017/02/25/config-panel-and-state-restoration/index.html new file mode 100644 index 0000000000..636feaf45e --- /dev/null +++ b/blog/2017/02/25/config-panel-and-state-restoration/index.html @@ -0,0 +1,386 @@ + + + + + + + + + 0.39: Configuration panel, state restoration and improved docs - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.39: Configuration panel, state restoration and improved docs

+
+ + + nine minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

It’s time for 0.39 and this release has some amazing new features!

+

+

T-Shirts

+

First off, in case you haven’t seen it yet: we have t-shirts now and they are beautiful. All proceeds from the shirts will be donated to the Electronic Frontier Foundation. The first three days all of you have already raised $400! Still waiting for Teespring to get back to me so stay tuned for the EU store.

+

Configuration panel

+

Yep, you read that right. We have a configuration panel. It’s just the first of many small steps. Putting in a foundation is important and gives us something to iterate on.

+

To start, we have three simple configuration panels:

+
    +
  • Core: allows you to validate config, reload core/group/automation config and restart/stop Home Assistant
  • +
  • Group: allows you to rename groups, change type between group/view and reorder entities.
  • +
  • Z-Wave: allows you to set device specific configuration settings
  • +
+

+ + Screenshot of our new configuration panel. +

+

As a security measure, the configuration panel will need to be activated in the config file to be activated. This can be done by adding the following to your configuration.yaml:

+
config:
+
+
+

Using our configuration panels will require you to structure your groups and Z-Wave device config according to how the configuration panel expects it. This is on purpose as it we will not be aiming to build a system that supports both our extended set of configuration extend hooks and our configuration panels. It’s one or the other.

+

To activate them in your config, create empty files groups.yaml and zwave_device_config.yaml in your config dir and add the following entries to your config:

+
group: !include groups.yaml
+
+zwave:
+  device_config: !include zwave_device_config.yaml
+
+
+

Note that this is the first release. Things will be missing, things might be broken.

+

Reorganized documentation

+

Thanks to Fabian we have a great re-organized documentation. Is it perfect yet? No. But we are getting close. We put a lot of focus on making sure the Raspberry Pi is the main focus of our getting started. The other instructions are still available, just not as part of the main getting started.

+

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

+

A couple of releases ago we introduced a new way of doing customize. It became a list that allowed different ways of matching the config to the entity.

+

We realized that this was leading into a rabbit hole that we had to get out off. Besides making it unnecessarily complicated it also blocked the road to config panels. And who doesn’t like config panels?

+

So starting this release, we had to make some breaking changes to right the wrong. We will be releasing an online tool to help you convert your config to the new format later today.

+

Update: the online tool can be found here.

+

Customize has been reverted to its original config

+

The old customize is back. The options to match by domain or using glob have been moved to its own options. It will now look like this:

+
homeassistant:
+  customize:
+    light.kitchen:
+      hidden: true
+  customize_domain:
+    light:
+      icon: mdi:home
+  customize_glob:
+    "light.kitchen_*":
+      icon: mid:description
+
+
+

Z-Wave customize is now device config

+

Ever wondered why the Z-Wave customize was called customize? Yeah, so did we. So when migrating this to the new config format, we decided to upgrade the name too:

+
zwave:
+  device_config:
+    light.kitchen:
+      ignored: true
+  device_config_domain:
+    light:
+      polling_intensity: 2
+  device_config_glob:
+    "light.kitchen_*":
+      polling_intensity: 0
+
+
+

Speed improvements

+

And a final shout out to Pascal. He keeps improving the performance of components and platforms all over Home Assistant.

+ +

All changes

+

New platforms/components

+ +

Improvements

+
    +
  • Tellduslive: Don’t throw exception if connection to server is lost (@molobrakos)
  • +
  • Core: Convert config.components to a set (@balloob)
  • +
  • Media Player - Apple TV: Handle connection errors when connecting to Apple TVs, re-use aiohttp session , add fake support for turn on/off (@postlund)
  • +
  • Zoneminder: Refactoring and JSON decode error handling (@pschmitt)
  • +
  • Recorder: Add tests for full schema migration, limit to session scope (@armills)
  • +
  • Device tracker - Tado: Add support for multiple devices to Tado device tracker (@markoudev)
  • +
  • Z-Wave: Fix zwave helper getter not to fail on some None results. (@andrey-git)
  • +
  • Core: sensor_class migrate to device_class (@armills)
  • +
  • Sensor - Amcrest: Avoid traceback for Amcrest cameras/firmware that does not have the software_information API call (@tchellomello)
  • +
  • Media Player - MPD: Adds play URL support to mpd (@jjmontesl)
  • +
  • Logbook: Component set add using OR (@kellerza)
  • +
  • Config: Add config component and hassbian example panel (@balloob)
  • +
  • Proximity: Fixed proximity zone incorrectly using name instead of zone setting (@jjmontesl)
  • +
  • Z-Wave: Add device_class support to cover component (@armills)
  • +
  • Config: Add check_config API (@balloob)
  • +
  • Media player: Add media_image to media_player component (@postlund)
  • +
  • Sensor- Vasttrafik.py: vasttrafik: update token on read error (@persandstrom)
  • +
  • Z-Wave.py: force_update zwave sensors (@andrey-git)
  • +
  • Core: Two stage shutdown (@pvizeli)
  • +
  • Z-Wave: Rename customize to device_config (@balloob)
  • +
  • Thingspeak: Use the correct API key (@fabaff)
  • +
  • Lock - Nuki: Reduce battery drain on Nuki Lock (@pschmitt)
  • +
  • Notify - Webostv: Only try to pair notify.webostv when not paired (@andersonshatch)
  • +
  • KNX: Fix slow status updates from the knx bus (@keerts)
  • +
  • HDMI CEC: HDMI_CEC customization [Breaking change] (@balloob, @andrey-git)
  • +
  • Sensor - Moon: Remove unit of measurement (@fabaff)
  • +
  • Z-Wave: Add initial Z-Wave config panel (@balloob)
  • +
  • History: Allow printing the number of states returned by history and time it took to extract and add day (@andrey-git)
  • +
  • MQTT: Enable sensor for discovery (@fabaff)
  • +
  • Light - Limitlessled: Added limitlessled support for bridge v6 and RGBWW bulbs. (@soldag)
  • +
  • Config - Hassbian: Update hassbian component with real output (@balloob)
  • +
  • Media Player -Sonos: Bugfix sonos favorite_source after lost connection (@pvizeli)
  • +
  • Sensor - SenseHAT: Add flag to declare if SenseHAT is attached (@nodinosaur)
  • +
  • RFLink: Reconnect robustness, expose connection state. (@aequitas)
  • +
  • Media player - CMUS: Remove IO from properties (@armills)
  • +
  • Light - Litejet: Lights should have the option to dim in the UI. (@joncar)
  • +
  • Light - Hue: Add effect_list to hue light (@armills)
  • +
  • Meida player - Liveboxplaytv: Update liveboxplaytv and catch connection errors (@pschmitt)
  • +
  • Llight - Lifx: Fix colortemp conversion for lifx lights (@kitcorey)
  • +
  • Light - Flux_LED: Update FLUX_LED by adding Effects (@dramamoose)
  • +
  • Alarm control panel - Simplisafe: SimpliSafe updates (@w1ll1am23)
  • +
  • Cover Add supported_features to cover component (@armills)
  • +
  • Wink: Added tamper detection to Wink devices. (@w1ll1am23)
  • +
  • Sensor - onewire: Add support for aliased owfs sensors (@normakm)
  • +
  • Weather: Forecast (@Tommatheussen)
  • +
  • Device tracker - ASUSwrt: Added support for alternate SSH ports in AsusWRT (@swbradshaw)
  • +
  • Zoneminder: Add camera mjpeg stream support (@mnoorenberghe)
  • +
  • Restore: Restore_state helper to restore entity states from the DB on startup (@kellerza)
  • +
  • Sensor - Darksky: Add ‘entity_picture’ to Darksky component (@aronsky)
  • +
  • Media Player - Samsungtv: Add support for waking up Samsung TVs over the network (@justin8)
  • +
  • MQTT: Convert MQTT platforms to async (@pvizeli)
  • +
  • tests/components/device_tracker/test_init.py: Restore for device_tracker (@kellerza)
  • +
  • Discovery: Make it possible to ignore platforms in discovery (@postlund)
  • +
  • Image processing: Add device_class (@pvizeli)
  • +
+

Release 0.39.1 - February 27

+
    +
  • Add workaround for Paho out of memory issues (@pvizeli)
  • +
  • When an error occurs while storing group config, fail instead of wiping config. (@balloob)
  • +
+

Release 0.39.2 - March 1

+ +

Release 0.39.3 - March 4

+
    +
  • Prevent discovered services and devices to be handled twice (@colinodell)
  • +
+

Breaking changes

+
    +
  • VolvoOnCall has been extended with more features and had to be converted to a component
  • +
  • Limitlessled support for Bridge v6 and RGBWW bulbs require users to specify version and `port
  • +
  • hdmi_cec config now requires users to set the types in the hdmi_cec config instead of using customize:
  • +
+
hdmi_cec:
+  types:
+    hdmi_cec.hdmi_5: media_player
+
+
+

Bugfixes:

+

@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 or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/03/11/repurpose-any-android-phone-as-ip-camera/index.html b/blog/2017/03/11/repurpose-any-android-phone-as-ip-camera/index.html new file mode 100644 index 0000000000..17c68f2a2d --- /dev/null +++ b/blog/2017/03/11/repurpose-any-android-phone-as-ip-camera/index.html @@ -0,0 +1,419 @@ + + + + + + + + + Home Assistant 0.40: Turn any Android phone into an IP Webcam - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant 0.40: Turn any Android phone into an IP Webcam

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

It’s time for version 0.40 already! For this version, the main focus was on performance and bug fixes. Big thanks to @pvizeli for driving this effort. Startup is now super fast. We have also continued with adding warnings for components and platforms that are slowing down Home Assistant.

+

Some people have interpreted our recent added warnings as if 0.39 introduced the issues that caused the warning. This is not the case, the platforms and components have been misbehaving for a while but now we are adding warnings so we are able to track down the culprits.

+

Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to @dale3h, @CCOSTAN, @skalavala, @rrubin0, @brahmafear, @bassclarinetl2, and @torn8o! These are all people that hang out in our main chat channel and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇

+

And that our community kicks ass is also shown in the numbers. We have already raised together over $700 for the EFF via the sale of our t-shirts! All of you rock! Another number worth mentioning is that this release brings us passed 600 integrations for Home Assistant. All of you rock, again!

+

Z-Wave is now threadsafe

+

@andrey-git has spend a lot of time to make Z-Wave perform better. It should no longer cause Home Assistant to run slower or raise warnings about the timer getting out of sync.

+

Update on the MQTT Out of Memory errors in 0.39

+

MQTT started causing “Out of Memory” errors for some people on a Raspberry Pi. We have been able to track this down to Raspberry Pis that are using an older firmware. If you are experiencing this issue, please upgrade your firmware using rpi-update.

+

Turn any Android phone into an IP Camera

+

With the new support for IP Webcam added by @robbiet480 and @pvizeli you are now able to re-purpose any Android phone to become a multifunctional IP webcam. Some of the cool things that you can do:

+
    +
  • Integrate the Android device camera
  • +
  • Binary sensor when motion is detected
  • +
  • Sensors to expose the device sensors, including pressure, sound, battery, light
  • +
  • Control device features like the GPS, night vision and camera flash
  • +
+

+ +Screenshot of all the different functionality the IP webcam integration offers. +

+

Other Highlights

+
    +
  • Support added for Austrian weather using Zamg weather data (@Zac-HD)
  • +
  • Ring.com video doorbell integration added (@tchellomello)
  • +
  • Blink Home Security Camera support added (@fronzbot)
  • +
  • AppleTV has been converted to push data to Home Assistant instead of us having to poll (@postlund)
  • +
+

Breaking changes

+
    +
  • Vera entity ids have changed. This is a one time change to migrate to a model that will prevent future conflicts.
  • +
  • The Twilio notify platforms now have to be configured via the twilio component.
  • +
+
twilio:
+  account_sid: "abc"
+  auth_token: "xyz"
+
+
+
    +
  • 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 or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

Release 0.40.1 - March 16

+ +

Release 0.40.2 - March 22

+

Hot fix release to fix dependency issues. More detailed information about the issue in this blog post.

+
    +
  • Prevent dependencies that are installed on demand from installing different versions of core dependencies (@balloob - #6738)
  • +
  • Upgrade PyChromecast to silent some benign errors (@balloob - #6702)
  • +
+ +

All changes

+
    +
  • Cleanup run_callback_threadsafe (@pvizeli)
  • +
  • Use H2 headers to split up the different sections (@colinodell)
  • +
  • Refactory of envisalink (@pvizeli)
  • +
  • Create zwave devices on OZW thread and only add them during discovery (@andrey-git)
  • +
  • Bugfix restore startup state (@kellerza)
  • +
  • Random test fixes (@balloob)
  • +
  • Remove automatically reloading group config (@balloob)
  • +
  • Default config to setup group editor (@balloob)
  • +
  • minor broadlink fix (@danielhiversen)
  • +
  • Update Yeelight Sunflower light platform to 0.0.6 (@lindsaymarkwawrd)
  • +
  • Some zwave cleanup (@andrey-git)
  • +
  • sensor.speedtest: provide a default icon (@molobrakos)
  • +
  • Test the temperature returned by RM2 (@aronsky)
  • +
  • Zamg weather (@Zac-HD)
  • +
  • Fix reporting on bad login (@balloob)
  • +
  • Move mqtt from eventbus to dispatcher / add unsub for dispatcher (@pvizeli)
  • +
  • Update flake8 and pylint to latest (@andrey-git)
  • +
  • Fix link (@fabaff)
  • +
  • Make glob preserve order (@andrey-git)
  • +
  • Update regex (@fabaff)
  • +
  • Fix recorder async (@balloob)
  • +
  • Fix livebox-play interactions for Python < 3.6 (@pschmitt)
  • +
  • Ensure we properly close HASS instances. (@balloob)
  • +
  • Add service to change log levels (@postlund)
  • +
  • Move ffmpeg to dispatcher from hass.data entity store. (@pvizeli)
  • +
  • Feature/reorg recorder (@balloob)
  • +
  • Bugfix mqtt socket error (@pvizeli)
  • +
  • Notify ciscospark (@shenning00)
  • +
  • Config fix (@balloob)
  • +
  • Bugfix mqtt paho client to speend time (@pvizeli)
  • +
  • Properly report features for each hue bulb type (@jawilson)
  • +
  • Local file camera now supports yet inexisting files. (@jjmontestl)
  • +
  • light.transition now supports float instead of int in order to be able to perform faster transitions (@BillyNate)
  • +
  • Fix for OSRAM lights connected to hue bridge (@groth-its)
  • +
  • Add support for MAX!Cube thermostats and window shutter sensors (@BastianPoe)
  • +
  • Analog modem callerid support (@vroomfonde1)
  • +
  • [sensor.dnsip] New Sensor: DNS IP (@danielperna84)
  • +
  • Update library version for Yeelight Sunflower lights platform (fix for packaging problem with 0.0.7) (@lindsaymarkwawrd)
  • +
  • Prevent duplicate names on Vera devices by appending the device id (@arjenfvellinga)
  • +
  • Add temperature support for MH-Z19 CO2 sensor. (@andrey-git)
  • +
  • improve history_stats accuracy (@bokub)
  • +
  • Updated pyitachip2ir (@alanfischer)
  • +
  • Influx fix (@open-homeautomation)
  • +
  • Fix toggle and media_play_pause post async (@armills)
  • +
  • Migrate calendar setup to async. (@pvizeli)
  • +
  • Frontier silicon (@zhelev)
  • +
  • Bootstrap / Component setup async (@pvizeli)
  • +
  • Convert kpH and mpH to kph and mph (@ericgingras)
  • +
  • Rollback netdisco to 0.8.2 to resolve #6165 (@jumpkick)
  • +
  • Log errors when loading yaml (@kellerza)
  • +
  • Bootstrap tweaks tests (@balloob)
  • +
  • Telegram webhooks new text event (@scipioni)
  • +
  • Cleanup component track_point_in_utc_time usage (@pvizeli)
  • +
  • Discovery fix (@balloob)
  • +
  • Test against 3.6-dev (@balloob)
  • +
  • Bugfix ZigBee / Move from eventbus to dispatcher (@pvizeli)
  • +
  • Bump netdisco to 0.9.1 (@balloob)
  • +
  • sensor.dovado: compute state in update (@molobrakos)
  • +
  • Fix mysensors callback race (@MartinHjelmare)
  • +
  • Upgrade TwitterAPI to 2.4.5 (@fabaff)
  • +
  • Upgrade py-cpuinfo to 0.2.6 (@fabaff)
  • +
  • Template sensor change flow / add restore (@pvizeli)
  • +
  • Zwave optimize value_added (@andrey-git)
  • +
  • Update Vagrant provision.sh (@shaftoe)
  • +
  • Update Adafruit_Python_DHT to support new raspberry kernel (@masarliev)
  • +
  • Add fallback for name if userdevicename isn’t set using old serialnumber logic (@reedriley)
  • +
  • Improve Honeywell US climate component (@titilambert)
  • +
  • Template binary_sensor change flow / add restore (@pvizeli)
  • +
  • Additional support for ecobee hold mode (@Duoxilian)
  • +
  • Update Formulas in Convert XY to RGB (@dramamoose)
  • +
  • Use dynamic ports for test instances (@armills)
  • +
  • Added support for multiple codes executed in a row (@martinfrancois)
  • +
  • Use push updates in Apple TV (@postlund)
  • +
  • Fix command sudo not found error in dev Dockerfile (@jawilson)
  • +
  • Fix calendar authentication text, and handle calendar events without summaries. (@alanfischer)
  • +
  • Move dispatcher out of init. (@pvizeli)
  • +
  • Zwave: Add remove/replace failed node services. (@andrey-git)
  • +
  • Template switch change flow / add restore (@pvizeli)
  • +
  • Bump limitlessled dependency to 1.0.5. (@janLo)
  • +
  • snmp: upgrade pysnmp to 4.3.4 (@milaq)
  • +
  • Bugfix new async_add_devices function (@pvizeli)
  • +
  • Restore for input_slider (@pvizeli)
  • +
  • Added IPv4 data collector (@open-homeautomation)
  • +
  • Return None instead of raising ValueException from as_timestamp template function. (@jjmontestl)
  • +
  • [recorder] Catch more startup errors #6179 (@kellerza)
  • +
  • twilio component (@happyleavesaoc)
  • +
  • Add Z-Wave battery level as a sensor. (@andrey-git)
  • +
  • OwnTrack Async (@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)
  • +
  • Update Hikvision Binary Sensors to latest library, remove pyDispatcher (@mezz64)
  • +
  • Don’t initialize components which have already been discovered (@colinodell)
  • +
  • Comed Hourly Pricing sensor (@joe248)
  • +
  • Add multi contracts support for Hydroquebec (@titilambert)
  • +
  • Add Zwave refresh services (@andrey-git)
  • +
  • Add keep-alive feature to the generic thermostat (@aronsky)
  • +
  • Fix wake_on_lan for German version of Windows 10 (#6397) (@siebert)
  • +
  • flux led lib (@danielhiversen)
  • +
  • Cleanup async handling (@pvizeli)
  • +
  • Restore for automation entities (@kellerza)
  • +
  • Fix tests no internet (@balloob)
  • +
  • Prevent more I/O in apns (@balloob)
  • +
  • Restore flow on device_tracker platform (@pvizeli)
  • +
  • switch.tplink: catch exceptions coming from pyHS100 to avoid flooding the logs when the plug is not available (@rytilahti)
  • +
  • Added sensors to support Ring.com devices (@tchellomello)
  • +
  • Split bootstrap into bs + setup (@balloob)
  • +
  • Tweak recorder/restore_state (@balloob)
  • +
  • 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)
  • +
  • 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)
  • +
  • Revert “Use dynamic port allocation for tests” (@armills)
  • +
  • Tado device_tracker exception when mobile device has geofencing enabled but location is currently unknown. (@jmvermeulen)
  • +
  • Add a Z-wave workaround to do full refresh on update (@andrey-git)
  • +
  • Use bundled certificates if port matches mqtts (@dennisdegreef)
  • +
  • Bugfix samsungtv discovery (@pvizeli)
  • +
  • Added unittest for Ring sensor (@tchellomello)
  • +
  • Shorten recorder connection init (@balloob)
  • +
  • KWB Easyfire support (@bimbar)
  • +
  • Bumped version number for supporting lib (@bazwilliams)
  • +
  • Send a logo with webostv notifications (@andersonshatch)
  • +
  • Upgrade netdisco to 0.9.2 (@balloob)
  • +
  • Allow testing against uvloop (@balloob)
  • +
  • fix issue (@appzer)
  • +
  • Remove connection status state. (@aequitas)
  • +
  • Support for Blink Camera System (@fronzbot)
  • +
  • Add warning for slow platforms/components (@balloob)
  • +
  • Fix wake_on_lan ping for Linux. (@siebert)
  • +
  • Add support for remove services / Reload script support (@pvizeli)
  • +
  • Expand MQTT lights (@robbiet480)
  • +
  • Allow configurable conditions for Pi-Hole sensor (@colinodell)
  • +
  • Improved iCloud 2FA support. (@reedriley)
  • +
  • Update pymyq requirement (@arraylabs)
  • +
  • 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)
  • +
  • Bugfix android camera autodiscovery settings (@pvizeli)
  • +
  • Update to Pyunifi2.0 (@finish06)
  • +
  • Insteon lib (@wardcraigj)
  • +
  • Bugfix rpi_rf cleanup (@pvizeli)
  • +
  • Android webcam better error handling / pump library 0.4 (@pvizeli)
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/03/22/broken-dependencies/index.html b/blog/2017/03/22/broken-dependencies/index.html new file mode 100644 index 0000000000..eec843eadf --- /dev/null +++ b/blog/2017/03/22/broken-dependencies/index.html @@ -0,0 +1,216 @@ + + + + + + + + + 0.40.2 and broken dependencies - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.40.2 and broken dependencies

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

TL; DR: We have just released version 0.40.2 that includes a fix related to the installation of dependencies.

+

Some users in the last few days have been reporting that their Home Assistant installation fails to start with an error in the http component:

+
ImportError: No module named 'aiohttp.file_sender'
+
+
+

The problem is that Home Assistant did not handle the case where a dependency would want to install a core dependency of Home Assistant that is newer than what Home Assistant works with. For now, we have identified the following two components that can cause this issue:

+
    +
  • AppleTV (0.38+)
  • +
  • Android IP Webcam (0.40+)
  • +
+

This issue has been resolved by 0.40.2. If you are on an impacted version and cannot upgrade to the latest version just yet, a temporary workaround will be to remove the <config dir>/deps directory and stop using the above mentioned integrations. In the case of AppleTV, you will also have to disable the discovery component to prevent it from being auto-detected.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/index.html b/blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/index.html new file mode 100644 index 0000000000..21d82479fa --- /dev/null +++ b/blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/index.html @@ -0,0 +1,209 @@ + + + + + + + + + OpenSourceCraft interviews our founder Paulus Schoutsen - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

OpenSourceCraft interviews our founder Paulus Schoutsen

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

Last month Gregg Pollack from OpenSourceCraft visited me in San Diego to talk about Home Assistant. We talked about the community and how all these awesome people make Home Assistant possible. The main interview is embedded below but make sure to check out the full article including extra video material.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/03/25/todo-volumio-workday/index.html b/blog/2017/03/25/todo-volumio-workday/index.html new file mode 100644 index 0000000000..e72413df37 --- /dev/null +++ b/blog/2017/03/25/todo-volumio-workday/index.html @@ -0,0 +1,364 @@ + + + + + + + + + Home Assistant 0.41: Tado, Volumio, Workday, improved Plex - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant 0.41: Tado, Volumio, Workday, improved Plex

+
+ + + nine minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

Welcome to 0.41. There was a lot going on in the last two weeks. Not only from the code side but also from the social one of Home Assistant. Paulus did an interview with OpenSourceCraft, Fabian did a workshop at the Chemnitzer Linux Tage, and we are now an award-winning Open source project (I will cover that in a separate blog post).

+

Plex

+

@JesseWebDotCom made massive changes to the Plex media player platform. From better metadata support over new configuration options to improved controls and non-controllable clients.

+

Component overview

+

The Components overview is now powered by search/filtering feature. This will make it faster to get the component/platform you are looking for more quickly. Thanks again, @bdurrer for this.

+

Changelog

+

The new format of the changelog which was introduced with 0.40 will provide a link to the related pull request. We are not covering everything in our release notes but we think that this addition will make it easier to find details about the change.

+

New platforms/components

+ +

Breaking changes

+
    +
  • The Kodi notifier platform was migrated to async and the configuration synced with the Kodi media player platform (#6497).
  • +
  • For the Music Player Daemon (MPD) platform was location replaced with name (#6553).
  • +
  • Event decorators were removed (#6634).
  • +
  • The Emby mediaplayer platform was changed to avoid name clashes (#6664).
  • +
  • In a lot of places were the power and energy units update. This change mostly affects the switch platforms (#6212).
  • +
  • If set to auto then the MQTT implementation will use the bundled certificates automatically (#6707).
  • +
  • Autodiscovery of Android IP Webcam was removed (#6528).
  • +
  • The frontend is now using Shadow DOM and this could break your custom panels (#228).
  • +
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/03/28/http-to-mqtt-bridge/index.html b/blog/2017/03/28/http-to-mqtt-bridge/index.html new file mode 100644 index 0000000000..7ab1d1d2ea --- /dev/null +++ b/blog/2017/03/28/http-to-mqtt-bridge/index.html @@ -0,0 +1,257 @@ + + + + + + + + + HTTP to MQTT bridge - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

HTTP to MQTT bridge

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

The idea of creating HTTP to MQTT bridge appeared when I was trying to integrate Google Assistant with my Home Assistant after watching BRUH Automation video. Right now there is no MQTT service available in IFTTT. Existing integration solution uses 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 for the server part and MQTT.js for the client.

+ +

The app could be hosted on any Node.js hosting. I prefer Heroku: Cloud Application Platform for its simplicity.

+

Bringing pieces together

+
    +
  1. Configure the Home Assistant MQTT trigger.
  2. +
  3. Configure CloudMQTT. Check this video tutorial for details.
  4. +
  5. Deploy HTTP to MQTT bridge app.
  6. +
  7. Add the Configuration Variables to your Heroku app mentioned here. +
      +
    • AUTH_KEY: Can be any string, eg. 912ec803b2ce49e4a541068d495ab570.
    • +
    • MQTT_HOST: The host of your MQTT broker, eg. mqtts://k99.cloudmqtt.com:21234.
    • +
    • MQTT_USER: MQTT username
    • +
    • MQTT_PASS: MQTT password
    • +
    +
  8. +
  9. Create an IFTTT applet the same way as described in BRUH Automation video.
  10. +
  11. Configure Maker Webhooks service with below parameters. +
      +
    • URL: https://<app_name>.herokuapp.com/post/
    • +
    • Method: POST
    • +
    • Content Type: application/json
    • +
    • Body: {"topic":"<mqtt_topic>","message":"<mqtt_message>","key":"<AUTH_KEY>"}
    • +
    +
  12. +
+

Subscribe to latest version

+

Additionally you can make Heroku to update the HTTP to MQTT bridge app to the latest available version from the GitHub repository automatically. To do this follow the instruction on the Heroku help page.

+

Improve response time

+

After 30 minutes of inactivity Heroku will put your app into sleep mode. This will result in ~10 seconds response time. To prevent Heroku from putting your app into sleep mode, ping it every 10 minutes. You can do that by sending regular HTTP GET request to http://your_app/keep_alive/. But be careful. Heroku free quota is 550 hours per month. Without sleeping your app will be allowed to run only 22 days a month. Additionally the keep_alive method will send a simple MQTT message to prevent the broker from sleeping as well. The topic and message can be configured using Heroku environment variables KEEP_ALIVE_TOPIC and KEEP_ALIVE_MESSAGE and both are set to “keep_alive” by default.

+

You can even configure Home Assistant to ping HTTP to MQTT bridge every 10 minutes during daytime. Below is an example of how to do that:

+
rest_command:
+  http_to_mqtt_keep_alive:
+    url: https://<your_app_address>/keep_alive/
+    method: get
+
+automation:
+  alias: HTTP to MQTT keep alive
+  trigger:
+    platform: time
+    minutes: '/10'
+    seconds: 00
+  condition:
+    condition: time
+    after: '7:30:00'
+    before: '23:59:59'
+  action:
+    service: rest_command.http_to_mqtt_keep_alive
+
+
+

Thanks

+

Special thanks to Ben from BRUH Automation for awesome tutorials which inspired me to do this project.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/01/thomas-krenn-award/index.html b/blog/2017/04/01/thomas-krenn-award/index.html new file mode 100644 index 0000000000..a486b5b3d5 --- /dev/null +++ b/blog/2017/04/01/thomas-krenn-award/index.html @@ -0,0 +1,218 @@ + + + + + + + + + Thomas Krenn award 2017 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Thomas Krenn award 2017

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

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

+

+

The prize beside the very nice trophy contains hardware and we want to give that hardware partically away. We won four Low Energy Server v2 (LES) units with an Intel Celeron N2930, 8 GB of RAM, and a mSATA of 128 GB (one unit with 64 GB). We were thinking about to keep one of those units in Europe and one in North America for testing and to use during workshops and events. But the other two will go to interested parties.

+

As a raffle would be to easy, we make a contest out of it. This means that we are looking for your application. Of course, we would like to see those systems goes to active or future developers who can justify their need for one of the systems to run CI, UI tests, public accessible Home Assistant demo instances, etc. At the other hand we would like to keep it open, to see with what people are coming up. Please participate as well if you are planning to automate the public school of your kids with 1000 switches or light, need a server to run it, and want to provide regular feedback about the user experience.

+

Create an entry in our Forum. Be creative and use your imagination.

+

The details

+
    +
  • Jury: The Home Assistant community
  • +
  • Dead line: April, 23 2017 - 23.59 UTC
  • +
  • Voting period: April, 24th till April, 30 2017 - 23.59 UTC
  • +
+

The decision of the jury will be final. If there will be a dispute then the Top-5 committer of the Home Assistant organization on Github will decide. Also, we reserve us the right to ban applications if we suspect cheating or unfair methods. Updates will be available in the Forum and on Twitter.

+

Keep in mind that you may have to pay the fee for customs handling and the import duty by yourself. The plan is to ship the hardware from Germany. If you are located in a country with import/export regulations, we may not be able to ship the hardware to you.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/08/eddystone-beacons-lockitron-locks-total-connect/index.html b/blog/2017/04/08/eddystone-beacons-lockitron-locks-total-connect/index.html new file mode 100644 index 0000000000..37046f61e9 --- /dev/null +++ b/blog/2017/04/08/eddystone-beacons-lockitron-locks-total-connect/index.html @@ -0,0 +1,417 @@ + + + + + + + + + Home Assistant 0.42: Eddystone Beacons, Lockitron locks and Total Connect alarm systems - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant 0.42: Eddystone Beacons, Lockitron locks and Total Connect alarm systems

+
+ + + 11 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

It’s time for Home Assistant 0.42. This release has been focused on refining the system and fixing a lot of bugs. We have also upgraded to the latest version of our HTTP library which should give us a significant boost serving files and API.

+

On our social media front, we have crossed the 1000 likes on our Facebook page! Also on the social media front, the YouTube channel diyAutomate has been putting out a lot of great getting started videos about Home Assistant, go check them out!

+

Also want to take a moment to thank Austin Andrews aka Templarian for his Material Design Icons. He is part of what makes Home Assistant so beautiful 🤗.

+

New integrations

+ + +

Breaking changes

+
    +
  • We were incorrectly treating groups named default_view as default views. Make sure you set view: true in the config for these groups. #251 (frontend)
  • +
  • The last release introduced a revamped LIFX platform. We only realized after deploy that this version does not work on Windows. We have added the old LIFX implementation back as lifx_legacy.
  • +
  • We added indexes to the database to speed up the history view. Initial boot can take a couple of minutes. Do not shut down while migration is occurring. #6688
  • +
  • Z-Wave cover workaround has been removed. Use device config instead. #6832
  • +
+
zwave:
+  device_config:
+    cover.my_cover:
+      invert_openclose_buttons: true
+
+
+
    +
  • If you set an initial state for an automation, input_boolean, input_slider or input_select it will overrule over the previous state. #6911
  • +
  • Z-Wave rename node service parameter entity_id has been replaced with node_id to align parameters #6938
  • +
  • Automations are now initialized when Home Assistant finishes starting up. This means that it is deprecated to listen for event homeassistant_start. Instead, use the new homeassistant automation platform. #6936
  • +
+
automation:
+  trigger:
+    platform: homeassistant
+    event: start
+  action:
+    service: light.turn_on
+
+
+
    +
  • The Ring component has moved the authentication to a dedicated ring component. #6520
  • +
+
ring:
+    username: !secret ring_username
+    password: !secret ring_password
+
+binary_sensor:
+  - platform: ring
+    monitored_conditions:
+      - ding
+      - motion
+
+sensor:
+  - platform: ring
+    monitored_conditions:
+      - battery
+      - last_activity
+      - last_ding
+      - last_motion
+      - volume
+
+
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

Release 0.42.1 - April 9

+
    +
  • Upgrade aiohttp to 2.0.6
  • +
  • Make discovery not cause startup warning
  • +
+

Release 0.42.1 - April 9

+
    +
  • Revert upgrade to aiothttp 2.0.6
  • +
+

Release 0.42.3 - April 11

+ +

Release 0.42.4 - April 17

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/15/ios/index.html b/blog/2017/04/15/ios/index.html new file mode 100644 index 0000000000..7c47fdb21f --- /dev/null +++ b/blog/2017/04/15/ios/index.html @@ -0,0 +1,221 @@ + + + + + + + + + 1 year and 22 days ago I had an idea... - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

1 year and 22 days ago I had an idea...

+
+ + + three minutes reading time + + +
    +
  • Announcements
  • +
+
+ Comments +
+
+

1 year and 22 days ago, or 387 days ago, on March 25th, 2016, I started a project to bring Home Assistant to the iPhone.

+

I thought the existing notification and location solutions were lacking in one way or another and had wanted for years to have a project I could call my own which would allow me to learn iOS development. What better way then implementing an extremely complex application like Home Assistant?

+

I started with a lot of steam. I remember cranking out the initial work that night and showing Paulus who was astounded at how fast the UI was coming together.

+

Little would I know how many problems I would create and uncover throughout the process. Writing a mobile app for a project that moves as fast as Home Assistant is… tricky, to say the least. In the time since I started writing the app, Home Assistant had 90 releases. I started writing the day before 0.16 was released. Now we are at 0.42.3. Time flies…

+

I couldn’t have completed the app without help and input from the community. By the end I had 700 beta testers, of which about 500 were very active in testing the app.

+

I received emails and forum posts almost every day, even when the app would go without an update for weeks and sometimes months at a time as my life got busier and busier.

+

I wanted this app to be done 9 months ago, at least, but my drive to add more and more features killed that idea. This really taught me the value of the MVP over the kitchen sink.

+

It may not look the way that I wanted it to initially, with beautiful native UI components, but that’s okay. What I really cared about is there. The notification and location engines are some of the most customizable and powerful available in an iOS app if I do say so myself. I made them this way to keep with the spirit of infinite flexibility that is enshrined in Home Assistant.

+

Just because the app is released doesn’t mean we are at the end of the road. It’s only the beginning. There’s plenty of bugs to fix still, improvements to make, features to add. Beta testing will continue, and if anything, be expanded. I do want to have a native UI someday, but that’s pretty hard with how fast the project moves.

+

The biggest request I have is for more developers on the project. As many of you know, I have my hands in many different parts of Home Assistant, from governance and organization to managing the forums to writing this app, managing the Homebridge plugin and even sometimes writing code for the actual core codebase! I can’t do it all, and I’m still a new iOS developer who doesn’t know all the best practices.

+

The app is open source, has been for the last few months when I first prepared to submit it to Apple for review. I invite Swift developers to come and join me in building it. Trust me, there’s tons to do.

+

1 year and 22 days ago, on March 25th, 2016 I began work on Home Assistant for iOS.

+

Today, April 16th, 2017, I am extremely excited to announce that Home Assistant for iOS has been approved by Apple and is now available to download for a monthly subscription starting at $9.99 free! (had to get a joke in here somewhere!) on the iOS App Store in every country.

+

+

Please note, you must have Home Assistant 0.42.4 or later installed for the app to function properly.

+

Thanks for everything so far, I’m looking forward to the road that lies ahead for Home Assistant on iOS!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/index.html b/blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/index.html new file mode 100644 index 0000000000..1be92dc7a0 --- /dev/null +++ b/blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/index.html @@ -0,0 +1,274 @@ + + + + + + + + + IKEA Trådfri: Internet of Things done right - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

IKEA Trådfri: Internet of Things done right

+
+ + + nine minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+

Last month IKEA released a new home automation lineup called Trådfri. It consists of white bulbs, dimming remotes, color temperature remotes and motion sensors. After almost two weeks of research, we have come to the conclusion that this is going to be the perfect companion hardware to work with Home Assistant. Here is the gist of our breakdown:

+
    +
  • Works out of the box. You can get started by just buying the already paired light and remote. You only need to buy the gateway if you want to set time-based rules for your lights or use your phone as a remote.
  • +
  • Local only hub. No cloud that gathers data about how you live your life and it will keep working even if IKEA stops supporting it.
  • +
  • Based on open standards. It uses Zigbee between devices and CoAP/dTLS to talk to the gateway. This means that you are not locked into a single vendor. You can pair it with Philips Hue bulbs and other compatible vendors.
  • +
  • Affordable. Lights start at $12 standalone and $20 if bundled with a remote (USA prices).
  • +
  • Useful design. The gateway has built-in space to hide excess cables and remotes come with magnetic holders for on the wall.
  • +
  • Able to subscribe to changes (local push). Automations will be able to instantly respond to changes to device states by subscribing to the gateway for changes.
  • +
  • Full integration in Home Assistant 0.43 (scheduled for release April 22). Our community built a standalone library pytradfri and we use it in Home Assistant. Home Assistant will automatically discover gateways on your network and guide the user to set them up.
  • +
  • Downside: no integration with other systems yet. There are rumors that Homekit support will land in October and I expect both Google Home and Amazon Echo to eventually add support. Use Home Assistant to connect them all in the meanwhile.
  • +
  • Semi-downside: you can’t control your lights remotely. Because it’s local only, you won’t be able to control your lights remotely unless via a third-party integration.
  • +
+

Full breakdown available after clicking read more.

+

(Note: we are not affiliated with IKEA nor do we receive commission for sales. We are just big fans of their new line up!)

+ +

Works out of the box

+

IKEA Trådfri focuses on the basics: making a product that works out of the box. They sell various dimming kits. Each contain a light and a remote paired to control the light. You put the light into the socket, slide the battery into the remote and. it. works. No need to purchase a gateway, download an app and use your phone to set it up. Heck, you don’t even need internet to get started!

+

You will only need to buy the gateway if you want to use your phone as a remote or set up home automation.

+

Only works locally

+

The gateway only works locally. It only reaches out to the internet to synchronize the time and to check for firmware updates. This is awesome for many different reasons.

+

Privacy & Security. No one but yourself will have access to the state of your house. And inside your house your communication with the gateway is encrypted.

+

Reliability & Speed. All communication will always happen locally. Even if your internet will go out, you can still control your lights and your automations will still run. Even if IKEA would decide to drop support it will still continue to work.

+

Check out this blog post by Matthew Garrett for a more in-depth analysis of the security of the gateway. His conclusion:

+
+

Overall: as far as design goes, this is one of the most secure IoT-style devices I’ve looked at. I haven’t examined the COAP stack in detail to figure out whether it has any exploitable bugs, but the attack surface is pretty much as minimal as it could be while still retaining any functionality at all. I’m impressed.

+
+

Based on open standards

+

IKEA Trådfri devices use the open standard Zigbee to communicate. The gateway speaks both Zigbee and connects to your network to offer an API based on the open standard CoAP. The API communication is secured via the open standard DTLS.

+

Because it’s based on Zigbee, you don’t have to just buy IKEA devices the rest of your life. For example, Philips Hue lights will pair just fine with the IKEA gateway.

+

Note that there are reports that the other way around, pairing an IKEA light to the Philips Hue hub is currently not possible. IKEA is working on it according to a post by Philips Hue support:

+
+

The non-interoperability between the newly launched IKEA smart lighting products and the Philips Hue bridge has been analyzed. One of the issues found is that the IKEA bulbs report their ProfileID as corresponding to the ZigBee Home Automation (ZHA) profile rather than the ZigBee Light Link (ZLL) profile. As the IKEA bulbs do not behave fully compliant with the ZLL standard, they are rejected by the Hue bridge. IKEA is aware of this and informed us their intent is to have the IKEA smart lighting bulbs to work with the Philips Hue bridge.

+
+

Affordable

+

A white IKEA light bulb that just supports dimming starts at $12. You’ll have to shell out $18 If you want a white bulb that can control the light temperature to allow for different shades of white (relax, cool, focus etc). These prices are slightly lower than the competition. Right now on Amazon the cheapest just-dimming white bulbs come in at $15.

+

However what really differentiates this system is the availability of all the cheap remotes and motion sensors. Ranging between $20 and $27 you get a light and a remote. Standalone Zigbee remotes on Amazon currently start at $21!

+

Remotes are a very important aspect of home automation. The electricity has to be always on for the bulbs to function so you’ll need Zigbee switches and remotes to control your lights. The fact that they are so cheap will really help with adoption.

+

+ +Prices of the various available dimming kits. +

+

Useful design

+

The lights and gateway are all made with a simple design and will easily blend into your home. They did sneak in some great and useful things. You can slide the cover off the gateway and open it up. Inside is a mini case for the actual electronics but mainly it’s just empty space so you can roll up any excess network and usb cable from the hub inside!

+

+ +The cables you don’t need can be hidden in the gateway. +

+

Another nice feature is that the remote comes with a magnetic mount for the wall.

+

Able to subscribe to changes (local push)

+

This is a feature that I am really excited about. By being able to subscribe to changes in the Zigbee network Home Assistant will be able to instantly be notified about changes and trigger automations if necessary.

+

This means that you will be able to turn the power on for a light and see it instantly turn on in Home Assistant.

+

(Learn more about the different ways IoT devices broadcast changes)

+

Full integration in Home Assistant 0.43 (scheduled for release April 22)

+

Home Assistant will automatically discover gateways on your network and guide the user to set them up.

+

Once IKEA Trådfri got released, our community, lead by Patrik, got quickly organized and started analyzing the different aspects in our forums. I am happy to say that the end result is a standalone Python library pytradfri to control the gateway. This means that starting from our next release, Home Assistant 0.43, we will auto discover your gateway and integrate all your lights.

+

The initial version of our integration will not yet stream events from the gateway. We’re still working on figuring out that part of the API.

+

+ +After automatic discovery, Home Assistant will ask the user to finish pairing with the gateway. +

+

Downside: not many integrations yet

+

The one major downside right now is that there are not many integrations yet because the system is brand new. There are rumors that Homekit is planned for October. And given the way the API is set up, I expect Google Home and Amazon Echo (Alexa) to eventually announce integration too.

+

Since Home Assistant does integrate with it, you can use Home Assistant to bridge to these systems. For Homekit use Homebridge with the Home Assistant plugin. For integration with Google Home and Amazon Echo use the Emulated Hue component. For Google Home you can also use the API.ai integration and Amazon Echo can also work with Haaska.

+

Semi-downside: you can’t control your lights remotely

+

Because the system is local only, you won’t be able to control your lights remotely. As with the previous downside, you will be able to use Home Assistant to make your system available remotely.

+

Classified this as a semi-downside because besides showing off, the actual use cases are very rare. Although it makes great marketing material.

+

Conclusion

+

With Trådfri, IKEA has managed to put out an affordable and secure home automation system that does not compromise on functionality or design. There are still some downsides which I expect to get resolved in the future.

+

As it currently stands, this is going to be the perfect companion hardware to work with Home Assistant: local, affordable, secure. And as cherry on the pie, local push will make us aware of changes right away.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/22/ikea-tradfri-spotify/index.html b/blog/2017/04/22/ikea-tradfri-spotify/index.html new file mode 100644 index 0000000000..9051d99e37 --- /dev/null +++ b/blog/2017/04/22/ikea-tradfri-spotify/index.html @@ -0,0 +1,419 @@ + + + + + + + + + Home Assistant 0.43: IKEA Trådfri, Spotify and our iOS app is live - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant 0.43: IKEA Trådfri, Spotify and our iOS app is live

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Oooh yeah. It’s time for 0.43 and this is going to be a killer release. For the people that have been following on social media, you might have noticed that we got pretty excited about the new IKEA Trådfri line up. And so we are very happy to announce that thanks to the work by @ggravlingen, @MartinHjelmare and myself that this will be the first release to support the IKEA light bulbs. Home Assistant will automatically detect the gateway on your network and after following the instructions, allow you to control your lights.

+

+ +After automatic discovery, Home Assistant will ask the user to finish pairing with the gateway. +

+

And in case you have missed the other big news: @robbiet480 released the first version of our iOS app! It took a little over a year but it offers some great ways to make your iDevice work with Home Assistant. Big congrats to Robbie for shipping! As with our other parts, the app is open-sourced under APACHE 2 and contributors are welcome. Check it out.

+

A big shout out this release to @happyleavesaoc for his constant stream of great contributions to Home Assistant. The first contribution was back in October 2015 and since then @happyleavesaoc has been responsible for many platforms and bug fixes including the Spotify platform this release. Thanks @happyleavesaoc, you’re a great example of what makes our community awesome.

+

The new Spotify integration is based on the new Spotify Connect Playback API. It supports playback, album art and switching which Spotify device you’re controlling.

+

Also note that you have till the end of the weekend to submit an application to our giveaway of low energy servers which we got when we won the Thomas Krenn award 2017. Go apply!

+

New Platforms

+ + +

Breaking changes

+ +
telegram_bot:
+    platform: webhooks
+    api_key : api_key_here
+    allowed_chat_ids:
+        - 123456
+        - 456789
+
+
+ +
sensor:
+  - platform: mvglive
+    nextdeparture:
+     - station: Hauptbahnhof
+       name: Hbf
+       destinations: ['München Flughafen Terminal','Markt Schwaben']
+       products: 'S-Bahn'
+       timeoffset: 2
+     - station: Sendlinger Tor
+       lines: ['U2','U8']
+     - station: Scheidplatz
+       products: ['U-Bahn']
+       directions: '1'
+
+
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

Release 0.43.1 - April 25

+ +

Release 0.43.2 - April 27

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/24/hardware-contest-2017/index.html b/blog/2017/04/24/hardware-contest-2017/index.html new file mode 100644 index 0000000000..da0712e193 --- /dev/null +++ b/blog/2017/04/24/hardware-contest-2017/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Hardware Contest 2017 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Hardware Contest 2017

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

We have four submissions for our Hardware Contest 2017.

+ +

The voting is now open. To keep things simple are we using the voting feature of the forum. Vote for your choices.

+

End of the voting period: April, 30 2017 - 23.59 UTC

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/25/influxdb-grafana-docker/index.html b/blog/2017/04/25/influxdb-grafana-docker/index.html new file mode 100644 index 0000000000..bd8e2e84fc --- /dev/null +++ b/blog/2017/04/25/influxdb-grafana-docker/index.html @@ -0,0 +1,256 @@ + + + + + + + + + Setting up InfluxDB and Grafana using Docker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Setting up InfluxDB and Grafana using Docker

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

Home Assistant collects volumes of (time series) data that are well suited for some fancy graphs. Although the History component provides some nice plots, I am sure you have always wanted those fancy Grafana plots. The problem, however, is that low-powered device such as Raspberry Pi that most of us use for our Home Assistant setup are not well suited for such operation.

+

Instead of running InfluxDB and Grafana on a Raspberry Pi or a different system and go through the classic approach of installing both tools separately, you can run them in a Docker container on another machine. For this tutorial, I am using a Synology NAS, but the instructions should apply to other devices that can run Docker. Just follow the steps below:

+
    +
  1. SSH into your NAS. You may have to run sudo su if you are getting permission errors.
  2. +
  3. Download the docker-statsd-influxdb-grafana image using the command: +docker pull samuelebistoletti/docker-statsd-influxdb-grafana
  4. +
  5. To start the container for the first-time launch: +
    docker run -d \
    +  --name docker-statsd-influxdb-grafana \
    +  -p 3003:3003 \
    +  -p 3004:8083 \
    +  -p 8086:8086 \
    +  -p 22022:22 \
    +  -p 8125:8125/udp \
    +  samuelebistoletti/docker-statsd-influxdb-grafana:latest
    +
    +
    +
  6. +
  7. The image should now be running and both InfluxBD and Grafana should be now up and running.
  8. +
  9. You can access InfluxDB at http://NAS_IP_ADDRESS:3004/ and Grafana at http://NAS_IP_ADDRESS:3003/
  10. +
  11. Navigate to http://NAS_IP_ADDRESS:3004/ and create the database home_assistant using the command CREATE DATABASE home_assistant. +

    + +

    +
  12. +
  13. Now, you need to configure Home Assistant to use InfluxDB. Since, we did not add any username/password to our database, we can simply add the following to our configuration.yaml (replace the IP address with that of the device running Docker) and restart Home Assistant to setup InfluxDB (you will have to fine tune it based on your preferences): +
    influxdb:
    +  host: 192.168.2.113
    +
    +
    +
  14. +
  15. Next, we need to configure Grafana to use InfluxDB. Navigate to http://NAS_IP_ADDRESS:3003/ to access Grafana (login with username and password root) and add your first data source. Here’s how you can configure Grafana to use InfluxDB database. Note that 192.168.2.113 is the IP address of my NAS. +

    + +

    +
  16. +
  17. You should see Data source is working if you have configured everything correctly.
  18. +
  19. With all that configured, you are now ready for the fun stuff. You can create as many dashboards as you want and then import the same in Home Assistant.
  20. +
  21. To add the Grafana dashboard in HA, use the following config: +
    panel_iframe:
    +  router:
    +    title: 'Temperature'
    +    url: 'http://192.168.2.113:3003/dashboard/db/temperature?edit&tab=time%20range'
    +
    +
    +

    The URL can be obtained by clicking Share Dashboard link on your dashboard:

    +

    + +

    +
  22. +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/04/30/hassbian-1.21-its-about-time/index.html b/blog/2017/04/30/hassbian-1.21-its-about-time/index.html new file mode 100644 index 0000000000..1e519cefd7 --- /dev/null +++ b/blog/2017/04/30/hassbian-1.21-its-about-time/index.html @@ -0,0 +1,231 @@ + + + + + + + + + HASSbian 1.21 - It's about time isn't it - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

HASSbian 1.21 - It's about time isn't it

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

Hassbian 1.21 - It’s about time isn’t it

+

Since I, the developer of HASSbian, have been moving, started a new job and so on I’ve had few moments over for HASSbian development. The 1.2 release has been in pre-release for a few months now and just not communicated out that well. Hopefully this release changes that and I’ll do my best to release more often. There’s no simple way to update from 1.1 to 1.21 but 95% of the changes can be done by installing the hassbian-config package. For more information have a look at the hassbian-config page.

+

Hassbian 1.22 - Sins of last night

+

Development is sometimes fast and joyful but mistakes are made at times.

+

With the release of 1.21 a small problem with the OpenZWave build script wasn’t corrected even tough it was a known bug. Problem is simple as it’s only a problem with the symlink created for to the configuration folder for OpenZWave. This has been fixed and we bring some new things since they where ready anyway. The list below has been augmented with the updated information.

+

Hassbian-config

+

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. This replaces the hassbian-scripts functionality from 1.1.

+
    +
  • Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component that’s 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.
  • +
  • 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.
  • +
+

Spring cleaning

+

With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image.

+
    +
  • Replaced the hassbian-scripts folder with hassbian-config.
  • +
  • Update pi-gen. Our build script has been upgraded to follow the Raspbian image closer once again. Now you could build this image with Docker if your so inclined.
  • +
  • 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 our Discord chat server.

+

To get started with the new image, check out the installation instructions in the getting started section.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/01/home-assistant-on-raspberry-pi-zero-in-30-minutes/index.html b/blog/2017/05/01/home-assistant-on-raspberry-pi-zero-in-30-minutes/index.html new file mode 100644 index 0000000000..ccbb127183 --- /dev/null +++ b/blog/2017/05/01/home-assistant-on-raspberry-pi-zero-in-30-minutes/index.html @@ -0,0 +1,245 @@ + + + + + + + + + Home Assistant on a Pi Zero W in 30 minutes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant on a Pi Zero W in 30 minutes

+
+ + + 1 minute reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

+ +

+

Saw the announcement yesterday for HASSbian 1.21 and got super excited?

+

Today we’ll flash the latest HASSbian to a Raspberry Pi Zero W. +With an added bonus that besides for an USB cable for power, there’s no need for any cables!

+

What you’ll need:

+
    +
  • a Raspberry Pi Zero W (an amazing tiny computer with built-in wifi)
  • +
  • a microSD card
  • +
  • some source of USB power
  • +
  • Wifi
  • +
  • a desktop or laptop
  • +
+

Let’s get to it!

+

First, download the HASSbian 1.21 image from here.

+

Unzip it.

+

Flash it to the microSD card. If you need a flash tool, try Etcher

+

When the flashing finishes, remove it and plug it back in. You should see a drive called “boot”.

+

Right in there, not in any folders, create a file called wpa_supplicant.conf.

+

The contents of the configuration file should be something like this: +(You may have to adjust for your configuration, hints here )

+
network={
+    ssid="YOUR_WIFI_NETWORK_NAME_HERE"
+    psk="YOUR_WIFI_PASSWORD_HERE"
+    key_mgmt=WPA-PSK
+}
+
+
+

Next stick your SD card into the Raspberry Pi Zero W, and plug it in.

+

After about a minute, use your SSH client to connect to HASSbian (or hassbian.local from a Mac), with the username pi. The default password is raspberry.

+

It’s a good idea to change the password. To do so, use the passwd command.

+

Next, type the following two commands into the SSH console:

+
$ sudo systemctl enable install_homeassistant.service
+$ sudo systemctl start install_homeassistant.service
+
+
+

Wait about 15-20 minutes and voilà you have your Home Assistant on your Raspberry Pi Zero W in 30 minutes.

+

To try it out, go to http://hassbian:8123 or http://hassbian.local:8123 if you’re using Mac.

+

For further details about HASSbian, take a look at the documentation.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/05/podcast-init-interview/index.html b/blog/2017/05/05/podcast-init-interview/index.html new file mode 100644 index 0000000000..1e767895cc --- /dev/null +++ b/blog/2017/05/05/podcast-init-interview/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Podcast.__init__ interview with Paulus Schoutsen - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Podcast.__init__ interview with Paulus Schoutsen

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

+ +

+

Earlier this year I was interviewed by Tobias Macey from Podcast.__init__ about Python and Home Assistant. Just realized that we never shared this on the blog, oops. Here it is, enjoy!

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/06/zigbee-opencv-dlib/index.html b/blog/2017/05/06/zigbee-opencv-dlib/index.html new file mode 100644 index 0000000000..8bcf33f942 --- /dev/null +++ b/blog/2017/05/06/zigbee-opencv-dlib/index.html @@ -0,0 +1,408 @@ + + + + + + + + + Home Assistant 0.44: ZigBee, OpenCV and DLib - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant 0.44: ZigBee, OpenCV and DLib

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

This release brings some great new integrations. The biggest one is the native ZigBee integration by Russell Cloran. 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)

+

Another great new addition is OpenCV by Teagan Glenn. So now you’ll be able to unlock all the cool stuff from OpenCV right in Home Assistant. And if OpenCV is not your style, you can try out the new DLib integration added by Pascal Vizeli in this release.

+

This release also includes a new component to dynamically generate RSS feeds based on a template. This means that any RSS widget on your phone, tablet or computer can now be used to show Home Assistant data!

+

And finally, for users of the config panel in the UI, we have fixed the issue with the group editor.

+

Enjoy!

+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

New integrations

+ +

Release 0.44.2 - May 8

+
    +
  • Fix opening add-ons in Hass.io store that are not installed (@balloob)
  • +
+

Release 0.44.1 - May 7

+ + +

Breaking changes

+
    +
  • Python Open Z-Wave made a release that fixed string processing. This was backwards incompatible. We have updated our code so you’ll have to update to the latest Python Open Z-Wave with this release. You can also wait one release, as next release we’ll introduce automatic installing of Python Open Z-Wave. (@keatontaylor - #7266) (climate.zwave docs) (breaking change)
  • +
  • InfluxDB configuration to blacklist domains has been updated to allow more features. (@janLo - #7264) (breaking change)
  • +
+
# New format
+influxdb:
+  exclude:
+    entities:
+       - entity.id1
+       - entity.id2
+    domains:
+       - automation
+  include:
+    entities:
+       - entity.id3
+       - entity.id4
+
+
+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/07/grazer-linuxtage-2017-talk-python-everywhere/index.html b/blog/2017/05/07/grazer-linuxtage-2017-talk-python-everywhere/index.html new file mode 100644 index 0000000000..4975a12819 --- /dev/null +++ b/blog/2017/05/07/grazer-linuxtage-2017-talk-python-everywhere/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Grazer Linuxtage 2017: Python Everywhere - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Grazer Linuxtage 2017: Python Everywhere

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
  • Micropython
  • +
+
+ Comments +
+
+

I like Python. It’s a clean easy to read, easy to learn language. Yet when you use it for some time you still find more features to improve your coding. What I probably like most about Python is the community and the great libraries that already exist. Often solving a problem means including a pre-existing library and writing some glue code. That makes it quick to get things up and running.

+

I just gave a talk on how you can run Python to automate your home (yes with Home-Assistant) but also with MicroPython. Micropython allows you to run Python on your DIY sensors and switches around your home. Python everywhere - even on the chips that give Home-Assistant the data to be awesome.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/13/home-assistant-on-orange-pi-zero/index.html b/blog/2017/05/13/home-assistant-on-orange-pi-zero/index.html new file mode 100644 index 0000000000..9d3064278b --- /dev/null +++ b/blog/2017/05/13/home-assistant-on-orange-pi-zero/index.html @@ -0,0 +1,314 @@ + + + + + + + + + Home Assistant on an Orange Pi Zero - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant on an Orange Pi Zero

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

This blog post is about the setup of Home Assistant on an Orange Pi Zero. Like the setup on a Raspberry Pi Zero it will only take a couple of minutes to get a fully functional super cheap (less than 18 Euro incl. casing and power supply) Home Assistant hub. The reasons to use an Orange Pi Zero beside the prize are the built-in Ethernet port and the availability.

+

+ +

+ +

Download the Armbian and create the SD card with Etcher. There is no possibility to connect a display to the Orange Pi Zero. This means that you need a wired network setup with DHCP server. After your Orange Pi Zero is running, give it some time, and look for its IP address. The hostname is orangepizero.

+

If you found the IP address then use your SSH client to connect to the Orange Pi Zero. The default password is 1234.

+
$ ssh root@192.168.0.151
+[...]
+root@192.168.0.151's password: 
+You are required to change your password immediately (root enforced)
+  ___                               ____  _   _____
+ / _ \ _ __ __ _ _ __   __ _  ___  |  _ \(_) |__  /___ _ __ ___
+| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | |   / // _ \ '__/ _ \ 
+| |_| | | | (_| | | | | (_| |  __/ |  __/| |  / /|  __/ | | (_) |
+ \___/|_|  \__,_|_| |_|\__, |\___| |_|   |_| /____\___|_|  \___/ 
+                       |___/                                     
+
+Welcome to ARMBIAN 5.27.170514 nightly Ubuntu 16.04.2 LTS 4.11.0-sun8i
+System load:   0.86 0.35 0.13  	Up time:       9 min
+Memory usage:  5 % of 496MB  	IP:            192.168.0.151
+CPU temp:      39°C
+Usage of /:    16% of 7.1G
+
+[ General system configuration: armbian-config ]
+New to Armbian? Check the documentation first: https://docs.armbian.com
+
+Changing password for root.
+(current) UNIX password: 
+Enter new UNIX password: 
+Retype new UNIX password: 
+
+You are using Armbian nightly build.
+
+It is provided AS IS with NO WARRANTY and NO END USER SUPPORT.
+
+Creating a new user account. Press <Ctrl-C> to abort
+
+Please provide a username (eg. your forename): ha
+Trying to add user ha
+perl: warning: Setting locale failed.
+perl: warning: Please check that your locale settings:
+	LANGUAGE = "en_US.UTF-8",
+	LC_ALL = (unset),
+	LC_PAPER = "de_CH.UTF-8",
+	LC_MONETARY = "de_CH.UTF-8",
+	LC_NUMERIC = "de_CH.UTF-8",
+	LC_MESSAGES = "en_US.UTF-8",
+	LC_MEASUREMENT = "de_CH.UTF-8",
+	LC_TIME = "de_CH.UTF-8",
+	LANG = "en_US.UTF-8"
+    are supported and installed on your system.
+perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
+Adding user `ha' ...
+Adding new group `ha' (1000) ...
+Adding new user `ha' (1000) with group `ha' ...
+Creating home directory `/home/ha' ...
+Copying files from `/etc/skel' ...
+Enter new UNIX password: 
+Retype new UNIX password: 
+passwd: password updated successfully
+Changing the user information for ha
+Enter the new value, or press ENTER for the default
+	Full Name []: homeassistant
+	Room Number []: 
+	Work Phone []: 
+	Home Phone []: 
+	Other []: 
+Is the information correct? [Y/n] y
+
+Dear homeassistant, your account ha has been created and is sudo enabled.
+Please use this account for your daily work from now on.
+
+root@orangepizero:~# 
+
+
+

Get the latest details about the packages.

+
root@orangepizero:~# apt-get update
+Hit:1 http://ports.ubuntu.com xenial InRelease
+Get:2 http://ports.ubuntu.com xenial-security InRelease [102 kB]
+Hit:3 http://beta.armbian.com xenial InRelease
+Get:4 http://ports.ubuntu.com xenial-updates InRelease [102 kB]
+Get:5 http://ports.ubuntu.com xenial-backports InRelease [102 kB]
+Get:6 http://ports.ubuntu.com xenial-updates/main armhf Packages [479 kB]
+Get:7 http://ports.ubuntu.com xenial-updates/universe armhf Packages [419 kB]
+Fetched 1205 kB in 7s (158 kB/s)
+Reading package lists... Done
+
+
+

Let’s run an upgrade to make sure that all available packages are up-to-date.

+
root@orangepizero:~# apt-get upgrade
+
+
+

Now, we are installing the requirements for Home Assistant.

+
root@orangepizero:~# apt-get install python3-dev python3-pip python3-venv
+
+
+

Those steps to install Home Assistant are described in the documentation and the guide for venv as well. Switch to the create user ha and perform the remaining installation steps which are reduced to the minimum below:

+
ha@orangepizero:~$ pyvenv-3.5 homeassistant
+ha@orangepizero:~$ cd homeassistant && source bin/activate
+(homeassistant) ha@orangepizero:~/homeassistant$ pip3 install --upgrade pip
+(homeassistant) ha@orangepizero:~/homeassistant$ pip3 install homeassistant
+(homeassistant) ha@orangepizero:~/homeassistant$ hass
+
+
+

+ +

+

To make it ready for daily usage, don’t forget to enable autostart.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/19/home-assistant-at-pycon-us-2017/index.html b/blog/2017/05/19/home-assistant-at-pycon-us-2017/index.html new file mode 100644 index 0000000000..38a6f27795 --- /dev/null +++ b/blog/2017/05/19/home-assistant-at-pycon-us-2017/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Home Assistant at PyCon US 2017 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant at PyCon US 2017

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

In just 12 hours PyCon US 2017 starts. This is an exciting conference because there will be a bunch of Home Assistant developers and users there being able to meet in person.

+

Just like last year, we’ll be hosting a Home Assistant Open Space. Please stop by to ask any questions you have to the available developers. We haven’t reserved a slot yet but will do so tomorrow. We’ll update this post and announce it on social media as we know time and location. First open-space will be Friday at 4pm in room B112.

+

We will also be taken part in the development sprints from Monday-Wednesday. You only need to bring a laptop. We’ll help you get set up with a dev environment and you can be coding on top of Home Assistant in no time. Exact location inside the conference center to be announced. We are sitting in room A108.

+

On a final note, the Home Assistant community is very very active so don’t take it personal if we don’t remember your name, issue or contribution.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/05/20/automation-editor-zwave-panel-ocr/index.html b/blog/2017/05/20/automation-editor-zwave-panel-ocr/index.html new file mode 100644 index 0000000000..65beb8bad8 --- /dev/null +++ b/blog/2017/05/20/automation-editor-zwave-panel-ocr/index.html @@ -0,0 +1,367 @@ + + + + + + + + + Home Assistant 0.45: Automation editor, Z-Wave panel, OCR - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant 0.45: Automation editor, Z-Wave panel, OCR

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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!

+

First thing for this release is a feature that has been requested a lot: an automation editor! It’s still experimental - and many things are still in progress - but it works! You can create new automations and edit existing ones. If you start a new config, you’re all good to go. Otherwise check these instructions to get your automations ready for editing in the UI.

+

+ +

+

Check this video by Ben from BRUHautomation to see the new release in action.

+
+ +
+

As the editor is experimental, there are some limitations. These include that Chrome/Chromium is the only supported browser, we don’t support all triggers and actions and there is no support for conditions yet. But the foundation is there and so if you want to contribute to this, come help!

+

On the Z-Wave front a lot has happened. The biggest one is that we have a major extension of the Z-Wave panel thanks to @turbokongen! You will now be able to change config parameters and manage your devices.

+

+ +

+

Thanks to the work by the Python Open Z-Wave team we are now able to install it on demand from PyPi! There is no longer a need to pre-compile it yourself. This should give us the guarantee that we work with the Python Open Z-Wave version that the code expects.

+

+If you have a security key set in your Open Z-Wave options.xml, copy options.xml to your Home Assistant configuration directory. This is the only place where options will get persisted. +

+

Next to that @armills has lead the charge and managed to get full test coverage for Z-Wave! Thanks for all the hard work!

+

This release also contains two integrations which could help you to make non-smart devices a little smarter. The file sensor and the seven_segments OCR image processing platform. The first simply reads a plain-text file which was created by a logger or alike. The latter one extracts the value from a captured image that shows a seven-segments display.

+

+ +

+

And last, but not least, our Docker image is now based off Python 3.6. This version is faster and uses less memory than Python 3.5. Win!

+

If you are using our experimental Hass.io image, we made a breaking change in how the panel is served. If you have an existing installation, make sure you update your supervisor to the latest version before updating Home Assistant. If you are going to flash a new Hass.io image, make sure to only flash the new 0.8 image as linked on the installation page.

+

New integrations

+ +

Release 0.45.1 - May 22

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

Breaking changes

+ + +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/06/02/home-assistant-podcast-1/index.html b/blog/2017/06/02/home-assistant-podcast-1/index.html new file mode 100644 index 0000000000..e734a754c0 --- /dev/null +++ b/blog/2017/06/02/home-assistant-podcast-1/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Home Assistant Podcast 1 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/06/04/release-46/index.html b/blog/2017/06/04/release-46/index.html new file mode 100644 index 0000000000..5397b89b95 --- /dev/null +++ b/blog/2017/06/04/release-46/index.html @@ -0,0 +1,353 @@ + + + + + + + + + 0.46: Rachio sprinklers, Netgear Arlo cameras and Z-Wave fans - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.46: Rachio sprinklers, Netgear Arlo cameras and Z-Wave fans

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

It’s time for 0.46! This release does not have too many new integrations, instead it focussed on bug fixes.

+

New platforms

+ +

Release 0.46.1 - June 9

+ +

Breaking changes

+
    +
  • The USPS sensor entity names have changed as there are now two. One for packages and one for mail. Config will now also use scan_interval instead of update_interval (@happyleavesaoc - #7655) (sensor.usps docs) (breaking change)
  • +
  • Automation state trigger: From/to checks will now ignore state changes that are just attribute changess (@amelchio - #7651) (automation.state docs) (breaking change)
  • +
  • Redesign monitored variables for hp_ilo sensor. monitored_variables is now a list of name and sensor_type values (@Juggels - #7534) (sensor.hp_ilo docs) (breaking change)
  • +
+
sensor:
+  - platform: hp_ilo
+    host: IP_ADDRESS or HOSTNAME
+    username: USERNAME
+    password: PASSWORD
+    monitored_variables:
+      - name: SENSOR NAME
+        sensor_type: SENSOR TYPE
+
+
+
    +
  • Automation - time: The after keyword for time triggers (not conditions) has been deprecated in favor of the at keyword. This resembles better what it does (old one still works, gives a warning) (@armills - #7846) (automation.time docs) (breaking change)
  • +
  • Automation - numeric_state: above and below will no longer trigger if it is equal. (@armills - #7857) (breaking change)
  • +
  • Broadlink switches: Entity ids will change for switches that don’t have a default name set. In this case the object_id is now used. (@abmantis - #7845) (switch.broadlink docs) (breaking change)
  • +
  • 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)
  • +
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/06/10/interview-with-jupiter-broadcasting/index.html b/blog/2017/06/10/interview-with-jupiter-broadcasting/index.html new file mode 100644 index 0000000000..347fee8229 --- /dev/null +++ b/blog/2017/06/10/interview-with-jupiter-broadcasting/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Linux Action Show special about Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Linux Action Show special about Home Assistant

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

Our founder Paulus Schoutsen is interviewed by Chris Fisher for a Linux Action Show special about home automation, Hass.io and the new Home Assistant podcast.

+
+ +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/06/15/zwave-entity-ids/index.html b/blog/2017/06/15/zwave-entity-ids/index.html new file mode 100644 index 0000000000..5f0b588271 --- /dev/null +++ b/blog/2017/06/15/zwave-entity-ids/index.html @@ -0,0 +1,209 @@ + + + + + + + + + ZWave Entity IDs - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

ZWave Entity IDs

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

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.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/06/17/release-47/index.html b/blog/2017/06/17/release-47/index.html new file mode 100644 index 0000000000..b3d4046248 --- /dev/null +++ b/blog/2017/06/17/release-47/index.html @@ -0,0 +1,450 @@ + + + + + + + + + 0.47: Python Scripts, Sesame Smart Lock, Gitter, Onvif cameras - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.47: Python Scripts, Sesame Smart Lock, Gitter, Onvif cameras

+
+ + + 16 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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, which means that roughly every two days a new integration gets added!

+

Python Scripts

+

The biggest change is a new type of script component: Python scripts. 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 to see how to get started.

+

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.

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

+

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. +
  3. 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.
  4. +
  5. Rename entities using the ui card as described in the blog post to avoid conflicts. Restart Home Assistant to observe the changes.
  6. +
  7. Update all places mentioning IDs (groups, automation, customization, etc.) in configuration.yaml.
  8. +
  9. Add new_entity_ids: true to your zwave config.
  10. +
  11. Restart Home Assistant to run with new IDs.
  12. +
  13. The old entity IDs will be available in the more info dialog to trace down any remaining errors.
  14. +
+

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 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 (gdb stacktrace points at PyObject_GC_Del()).

+

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.

+

Release 0.47.1 - June 21

+ +

New platforms

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking changes

+ +
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:
+  host: IP_ADDRESS
+  username: lutron
+  password: integration
+
+
+ +
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)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/06/20/things-you-should-know-about-senic-covi/index.html b/blog/2017/06/20/things-you-should-know-about-senic-covi/index.html new file mode 100644 index 0000000000..542f1d32fc --- /dev/null +++ b/blog/2017/06/20/things-you-should-know-about-senic-covi/index.html @@ -0,0 +1,233 @@ + + + + + + + + + [Update: fixed] A frank and serious warning about X - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

[Update: fixed] A frank and serious warning about X

+
+ + + three minutes reading time + + +
    +
  • Public-Service-Announcement
  • +
+
+ Comments +
+
+

Update June 21: Senic has removed our name from their materials and have issued an 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 (screenshot). 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) 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 from them for Netdisco, our network discovery package. It included a memory leak and required us to publish a hotfix release 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). 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 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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/02/release-48/index.html b/blog/2017/07/02/release-48/index.html new file mode 100644 index 0000000000..c9239478d0 --- /dev/null +++ b/blog/2017/07/02/release-48/index.html @@ -0,0 +1,420 @@ + + + + + + + + + 0.48: Snips.ai, Shiftr.io and a massive History query speed up - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.48: Snips.ai, Shiftr.io and a massive History query speed up

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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.

+

Pascal 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 <config>/www directory.

+

Z-Wave will, as announced in the last release, be defaulting to generate the new entity ids. More info in the blog post. You can still opt-in for the old style.

+
zwave:
+  new_entity_ids: false
+
+
+

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! ⚡️

+

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 for further instructions.

+

Also a shoutout to @michaelarnauts for keeping an eye on our Docker build and once again reducing the file size 👍

+

Release 0.48.1 - July 5

+ +

New Platforms

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

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)
  • +
+
homeassistant:
+  whitelist_external_dirs:
+    - /tmp
+    - /home/kenji/data
+
+
+ +
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)
  • +
+
light:
+  platform: limitlessled
+  bridges:
+
+    - host: !secret limitless_v6_ip
+      port: 5987
+      version: 6
+      groups:
+
+      - number: 1
+        type: rgbww
+        name: Safari Glow
+        fade: none
+
+
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/03/home-assistant-is-moving-to-discord/index.html b/blog/2017/07/03/home-assistant-is-moving-to-discord/index.html new file mode 100644 index 0000000000..0b8d8dd637 --- /dev/null +++ b/blog/2017/07/03/home-assistant-is-moving-to-discord/index.html @@ -0,0 +1,256 @@ + + + + + + + + + Home Assistant is moving to Discord - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant is moving to Discord

+
+ + + four minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

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 as smooth as possible for everyone. Join us now with just a click!

+

Click Read on → to find out more about why we’re moving.

+ +

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.

+

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.

+

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.

+

Great multiple server support

+

Do you already have a Discord account? Great! You can use that account to join in on the conversation 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.

+

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!

+

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

+

Join us!

+

Are you convinced and ready to make the switch? Join us, we’re just one click away!

+

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.

+

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 channel for the most up-to-date rules for our chat server.

+

The rules…

+

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

    If you have a question, please check the FAQ and relevant documentation before posting.

    +
  4. +
  5. +

    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.

    +
  6. +
  7. +

    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.

    +
  8. +
  9. +

    #devs is for development discussion only. #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.

    +
  10. +
  11. +

    Spam will not be tolerated, including but not limited to: self-promotion, flooding, codewalls (longer than 15 lines) and unapproved bots.

    +
  12. +
+

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.

+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/05/hasspodcast-ep-3/index.html b/blog/2017/07/05/hasspodcast-ep-3/index.html new file mode 100644 index 0000000000..8d2e1c5f5d --- /dev/null +++ b/blog/2017/07/05/hasspodcast-ep-3/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Home Assistant Podcast #3 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant Podcast #3

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/15/release-49/index.html b/blog/2017/07/15/release-49/index.html new file mode 100644 index 0000000000..775efae118 --- /dev/null +++ b/blog/2017/07/15/release-49/index.html @@ -0,0 +1,406 @@ + + + + + + + + + 0.49: Themes 🎨, kiosk mode and Prometheus.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.49: Themes 🎨, kiosk mode and Prometheus.io

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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.

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

+

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

+

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.

+

New Platforms

+ +

Release 0.49.1 - July 24

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +
apple_tv:
+  - name: Apple TV
+    host: 10.0.10.20
+    login_id: 00000000-1234-5678-9012-345678901234
+    start_off: true
+    credentials: 8660DEA5154FB46B:20B94847926112B3F46F85DB3A7311830463BF65570C22C3786E27F38C3326CF
+
+
+ +
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
+
+
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/17/hasspodcast-ep-4/index.html b/blog/2017/07/17/hasspodcast-ep-4/index.html new file mode 100644 index 0000000000..0044d15046 --- /dev/null +++ b/blog/2017/07/17/hasspodcast-ep-4/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Home Assistant Podcast #4 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant Podcast #4

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/25/introducing-hassio/index.html b/blog/2017/07/25/introducing-hassio/index.html new file mode 100644 index 0000000000..99ba2d5724 --- /dev/null +++ b/blog/2017/07/25/introducing-hassio/index.html @@ -0,0 +1,241 @@ + + + + + + + + + Introducing Hass.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Introducing Hass.io

+
+ + + three minutes reading time + + +
    +
  • Announcements
  • +
+
+ Comments +
+
+

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

+

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

+

At launch we have included a couple of built-in add-ons 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, InfluxDB, HASS Configurator and AppDaemon.

+

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.

+ +

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

+ +

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.

+

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.

+

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.

+

Can I restore a snapshot on a different device?

+

Yes, any Hass.io snapshot can be restored on any device.

+

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 and plan to release the UI soon.

+

Is there a roadmap?

+

We use Pivotal Tracker to track things that are in progress and what we might work on.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/07/27/talk-python-podcast/index.html b/blog/2017/07/27/talk-python-podcast/index.html new file mode 100644 index 0000000000..890d655854 --- /dev/null +++ b/blog/2017/07/27/talk-python-podcast/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Talk Python interview with Paulus Schoutsen - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Talk Python interview with Paulus Schoutsen

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+ +

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/blog/2017/07/29/release-50/index.html b/blog/2017/07/29/release-50/index.html new file mode 100644 index 0000000000..9ff7335aae --- /dev/null +++ b/blog/2017/07/29/release-50/index.html @@ -0,0 +1,378 @@ + + + + + + + + + 0.50: Voice control, History improvements, and Xiaomi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.50: Voice control, History improvements, and Xiaomi

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Last Wednesday we released Hass.io, 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 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.

+

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.

+
# 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 for more information.

+
+ +
+

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

+

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.

+

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.

+

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.

+

New Platforms

+ +

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.

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +
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)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/08/01/hasspodcast-ep-5/index.html b/blog/2017/08/01/hasspodcast-ep-5/index.html new file mode 100644 index 0000000000..a496810425 --- /dev/null +++ b/blog/2017/08/01/hasspodcast-ep-5/index.html @@ -0,0 +1,208 @@ + + + + + + + + + Home Assistant Podcast #5 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant Podcast #5

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

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

+

Listen online

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/08/12/release-51/index.html b/blog/2017/08/12/release-51/index.html new file mode 100644 index 0000000000..5e73e47d1e --- /dev/null +++ b/blog/2017/08/12/release-51/index.html @@ -0,0 +1,375 @@ + + + + + + + + + 0.51: Massive history speed up, finished automation editor and official vacuum cleaner support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.51: Massive history speed up, finished automation editor and official vacuum cleaner support

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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.

+

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.

+

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.

+
+ +
+

Vacuum cleaners

+

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

+

New Platforms

+ +

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)
  • +
+

Release 0.51.2 - August 14

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

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)
  • +
+
vacuum:
+- platform: xiaomi
+  name: Vacuum cleaner
+  host: !secret xiaomi_vacuum_robot_ip
+  token: !secret xiaomi_vacuum_robot_token
+
+
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/08/26/release-0-52/index.html b/blog/2017/08/26/release-0-52/index.html new file mode 100644 index 0000000000..cc27520295 --- /dev/null +++ b/blog/2017/08/26/release-0-52/index.html @@ -0,0 +1,364 @@ + + + + + + + + + 0.52: Scripts editor, Nello.io locks, HipChat and Abode Home Security - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.52: Scripts editor, Nello.io locks, HipChat and Abode Home Security

+
+ + + 11 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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!

+

To use the scripts editor, create a new file in your config directory named scripts.yaml and copy your existing scripts over:

+
# 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:

+
# Configuration.yaml example
+script: !include scripts.yaml
+
+
+
+ +
+

New Platforms

+ +

Release 0.52.1 - August 28

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. 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)
  • +
+
 -  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
+
+
+ +
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 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 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 <home-assistant-url>/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) (configurator docs) (device_tracker.automatic docs) (breaking change)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/09/09/release-53/index.html b/blog/2017/09/09/release-53/index.html new file mode 100644 index 0000000000..f4d02e3f6d --- /dev/null +++ b/blog/2017/09/09/release-53/index.html @@ -0,0 +1,388 @@ + + + + + + + + + 0.53: Tesla, Customize editor, and super fast KNX rewrite - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.53: Tesla, Customize editor, and super fast KNX rewrite

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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!

+

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.

+
# Example configuration.yaml entry
+homeassistant:
+  # Include the customizations.
+  customize: !include customize.yaml
+
+# Enable the config screen
+config:
+
+
+

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.

+

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.

+

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 tunneling devices. In the background it uses asyncio communication. Check the climate integration in action here and see the lights in action below:

+
+ +
+

New Platforms

+ +

Release 0.53.1 - September 12

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

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

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/09/16/hassbian-1.3-a-bit-of-a-stretch/index.html b/blog/2017/09/16/hassbian-1.3-a-bit-of-a-stretch/index.html new file mode 100644 index 0000000000..da85cbfaa7 --- /dev/null +++ b/blog/2017/09/16/hassbian-1.3-a-bit-of-a-stretch/index.html @@ -0,0 +1,217 @@ + + + + + + + + + Hassbian 1.3 - A bit of a stretch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Hassbian 1.3 - A bit of a stretch

+
+ + + 1 minute reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

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.

+

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.

+

Upgrade scripts

+

@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.
  • +
  • Upgrade Hassbian-script: Downloads and upgrades the latest release of Hassbian-scripts. Contributed by @Ludeeus.
  • +
  • Upgrade Home-assistant: Upgrades the Home Assistant installation to the latest release. Contributed by @Ludeeus.
  • +
+

To follow discussions about the development of the HASSbian image or to contribute join our Discord chat server.

+

To get started with the new image, check out the installation instructions on the installing Hassbian page.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/09/23/release-54/index.html b/blog/2017/09/23/release-54/index.html new file mode 100644 index 0000000000..4ae6c780ab --- /dev/null +++ b/blog/2017/09/23/release-54/index.html @@ -0,0 +1,323 @@ + + + + + + + + + 0.54: Todoist, DoorBird, Abode cameras - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.54: Todoist, DoorBird, Abode cameras

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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

+

New Platforms

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+
    +
  • Sensor - OneWire: This update changes the names of the sensors from <sensor_name> to <sensor_name> <Sensor_type> (@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.
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/09/26/new-hassio-build-system/index.html b/blog/2017/09/26/new-hassio-build-system/index.html new file mode 100644 index 0000000000..e80cafb171 --- /dev/null +++ b/blog/2017/09/26/new-hassio-build-system/index.html @@ -0,0 +1,227 @@ + + + + + + + + + Improved Hass.io build system - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Improved Hass.io build system

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

+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, 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. 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 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 on how to publish your add-ons to Docker Hub. This will greatly improve the user experience. +

+

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

+

Old:

+
FROM %%BASE_IMAGE%%
+
+
+

New:

+
ARG BUILD_FROM
+FROM $BUILD_FROM
+
+
+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/index.html b/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/index.html new file mode 100644 index 0000000000..01deda4258 --- /dev/null +++ b/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/index.html @@ -0,0 +1,230 @@ + + + + + + + + + Effortless encryption with Let's Encrypt and DuckDNS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Effortless encryption with Let's Encrypt and DuckDNS

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

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 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 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 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. 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://<your_domain>.duckdns.org. Happy secure controlling your house!

+
# 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 by Andreas for instructions.

+

If you enjoy the free service provided by DuckDNS and Let’s Encrypt, consider donating to their cause:

+ +

More information:

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/09/29/hacktoberfest/index.html b/blog/2017/09/29/hacktoberfest/index.html new file mode 100644 index 0000000000..9c18977e38 --- /dev/null +++ b/blog/2017/09/29/hacktoberfest/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Participating in Hacktoberfest - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Participating in Hacktoberfest

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

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:

+ +

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.

+

Our participation for Hacktoberfest 2016 was a huge success. Join us to repeat it this year.

+

Hacktober fest logo

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/01/hass-podcast-ep9/index.html b/blog/2017/10/01/hass-podcast-ep9/index.html new file mode 100644 index 0000000000..1921ad4c7f --- /dev/null +++ b/blog/2017/10/01/hass-podcast-ep9/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Home Assistant Podcast #9 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant Podcast #9

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+

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.

+

Show notes available on the Home Assistant Podcast Website.

+

Listen online

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/06/deprecating-python-3.4-support/index.html b/blog/2017/10/06/deprecating-python-3.4-support/index.html new file mode 100644 index 0000000000..8e571835cf --- /dev/null +++ b/blog/2017/10/06/deprecating-python-3.4-support/index.html @@ -0,0 +1,219 @@ + + + + + + + + + Deprecating Python 3.4 support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Deprecating Python 3.4 support

+
+ + + 1 minute reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+

Update February 16, 2018: +Home Assistant 0.64 will be the last release to support Python 3.4. Starting with release 0.65, Home Assistant will require a minimum version of Python 3.5.3.

+
+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/07/release-55/index.html b/blog/2017/10/07/release-55/index.html new file mode 100644 index 0000000000..9e1a537ad7 --- /dev/null +++ b/blog/2017/10/07/release-55/index.html @@ -0,0 +1,350 @@ + + + + + + + + + 0.55: Tibber, DuckDNS, The Things Network, Owntrack - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.55: Tibber, DuckDNS, The Things Network, Owntrack

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

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. @tinloaf added a feature that allows you to enter dates: input_datetime. Both will help you to improve your automation rules.

+

DuckDNS

+

Using Home Assistant with DuckDNS for Dynamic DNS (DDNS or DynDNS) is an old story. DuckDNS is also integrated in Hass.io. 0.55 ships a component for non Hass.io users to get a similar feature.

+

Recorder

+

The purging of data was improved. 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.

+

Owntracks

+

Owntracks is an easy way to track your devices. For some times we have the device tracker which depends on MQTT but thanks to a new feature in Owntracks we can now offer support for HTTP. The new platform doesn’t require a MQTT broker but sends messages directly as HTTP requests to Home Assistant.

+

Tibber

+

This release introduces a new sensor: Tibber. The sensor provides the current electricity price if you are a Tibber 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

+

The Things Network

+

The Things Network (TTN) is a LoRaWAN based network especially designed for IoT devices. With this integration 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.

+

New Platforms

+ +

0.55.1 - October 15

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/15/templating-date-time/index.html b/blog/2017/10/15/templating-date-time/index.html new file mode 100644 index 0000000000..42cec9beef --- /dev/null +++ b/blog/2017/10/15/templating-date-time/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Templates, dates and times - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Templates, dates and times

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

This Pull Request shows in a clear way what happens if the documentation is not as good as it should be. In short, it’s about 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 with a rest sensor and a value_template:.
  • +
  • Use a time_date sensor and a template {{ strptime(states('sensor.date'), '%Y-%m-%d').year }}.
  • +
  • Write a script in language X and use it with the command sensor or use date +"%Y" as a command:.
  • +
+ +

We want it simpler, right? 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? {{ now() }} 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 from {{ now() }}. 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: {{ now().year }}. I guess that there are rare use cases for now().resolution, now().min and now().max too.

+

Hacktoberfest is still running. Working on the documentation is pretty easy. If you know a nice trick, want to help improving the page of a platform or just fix typo then please do. Our Website/Documentation section contains some requirements which are defined in the Documentation Standards and the “Create a page” documentation for other useful details.

+

Thanks to Egor Tsinko for bringing this issue to our attention.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/18/hasspodcast-ep-10/index.html b/blog/2017/10/18/hasspodcast-ep-10/index.html new file mode 100644 index 0000000000..1141d745bd --- /dev/null +++ b/blog/2017/10/18/hasspodcast-ep-10/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Home Assistant Podcast #10 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/21/release-56/index.html b/blog/2017/10/21/release-56/index.html new file mode 100644 index 0000000000..aa7f79f123 --- /dev/null +++ b/blog/2017/10/21/release-56/index.html @@ -0,0 +1,405 @@ + + + + + + + + + 0.56: Skybell, Google Assistant, Travis CI and Toon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.56: Skybell, Google Assistant, Travis CI and Toon

+
+ + + 15 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

We reached another milestone aka number: 10000. GitHub is assigning numbers to pull requests and issues and the “10000” is a PR. 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 that collects some Home Assistant relevant terms. Talking about the documentation: @DubhAd rewrote large parts of the Z-Wave section. More structure to get started and to find details during the setup and the configuration.

+

Google Assistant / Google Home integration

+

This release includes a new component to integrate Home Assistant with Google Assistant by Phil Kates. 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.

+

Hacktoberfest

+

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.

+

Map

+

The map is now its own component. Similar to configuration (config:), it will not show up without adding it to your configuration.yaml file.

+
map:
+
+
+

Travis CI

+

Why not observe your Travis CI jobs with Home Assistant? @tchellomello created a Travis CI sensor which allows one to check on the current state of Travis jobs. Now you can make sure that the coffee is ready when the build passed.

+

New Platforms

+ +

0.56.1 - October 22

+ +

0.56.2 - October 23

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/10/23/simple-analog-sensor/index.html b/blog/2017/10/23/simple-analog-sensor/index.html new file mode 100644 index 0000000000..43dd6515a4 --- /dev/null +++ b/blog/2017/10/23/simple-analog-sensor/index.html @@ -0,0 +1,283 @@ + + + + + + + + + Serial analog sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Serial analog sensor

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

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 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 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
  • +
  • Temperature sensor TMP36 (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.

+ + + + + + + + + + + + + + + + + + + + + +
SensorDigispark
GNDGND
VCC5V
VOUTP4
+

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 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 the code to your Digispark board. Keep in mind that the upload process is different than with Arduino or ESP8266 boards.

+
#include <DigiCDC.h>
+
+#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); and Serial.println(reading);.

+

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 sensor platform needs to be set up.

+
sensor:
+  - platform: serial
+    port: /dev/ttyACM0
+
+
+

The physical sensor reads the current voltage of the pin. A template sensor takes the reading and converts it into a measurement. The data sheet of the sensor unit usually contains details about the involved calculations.

+
  - 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) }}"
+
+
+

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/blog/2017/10/28/demo/index.html b/blog/2017/10/28/demo/index.html new file mode 100644 index 0000000000..c4b5a7abe0 --- /dev/null +++ b/blog/2017/10/28/demo/index.html @@ -0,0 +1,275 @@ + + + + + + + + + Home Assistant Demo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant Demo

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

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/

+

+ + Home Assistant’s online demo +

+ +

--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 allows you to run a demo locally including the latest features. Make sure that you have a backup of your configuration.

+
$ 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 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:

+
sensor:
+  - platform: demo
+binary_sensor:
+  - platform: demo
+switch:
+  - platform: demo
+
+
+

+ + Home Assistant’s demo platforms +

+

random platforms

+

Till now the frontend is static. Nothing is changing over time. Starting with 0.57 we ship a random binary sensor platform in addition to the already available random sensor.

+

By adding those platform to your configuration.yaml file, your demo will become more interactive.

+
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 platforms or the input_* components it would even be possible to simulate a complete apartment or a house. For a hint check the sample below:

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

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 and the embedded MQTT broker. Simply add MQTT to your configuration.yaml file with discovery:

+
mqtt:
+  discovery: true
+
+
+

Download the sample script. It depends on paho-mqtt. If you run the script inside your Home Assistant’s virtual environment 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.

+
(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. Also, take a look at that repository if you need a logo for your slides.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/02/secure-shell-tunnel/index.html b/blog/2017/11/02/secure-shell-tunnel/index.html new file mode 100644 index 0000000000..bb66e167f5 --- /dev/null +++ b/blog/2017/11/02/secure-shell-tunnel/index.html @@ -0,0 +1,250 @@ + + + + + + + + + Home Assistant and SSH - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant and SSH

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

Most system engineers are very familiar with SSH (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 then enable the SSH Server add-on. You must also have a public IP address or hostname which can be provided by dynamic DNS (e.g., NO-IP or DuckDNS). +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.

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

+
$ ssh -L 8000:localhost:8123 ha@192.168.0.11
+
+
+

The first time you establish the connection you need to accept the fingerprint.

+
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

+

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 instead of passwords to avoid bruteforce attacks.
  • +
+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/04/release-57/index.html b/blog/2017/11/04/release-57/index.html new file mode 100644 index 0000000000..891478eae5 --- /dev/null +++ b/blog/2017/11/04/release-57/index.html @@ -0,0 +1,455 @@ + + + + + + + + + 0.57: Translations, Hacktoberfest, Timers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.57: Translations, Hacktoberfest, Timers

+
+ + + 20 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

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

+

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, to make the translation process accessible to anyone who would like to contribute. Stay tuned for a blog post with more documentation soon.

+

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!

+

Hacktoberfest

+

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

+ +

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.

+

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.

+

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

+

Timer

+

Okay, one more highlight before we’ll let you check out the changelog. Contributor @danielperna84 (famous for creating the HASS 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.

+

New Platforms

+

+ +

release 0.57.1 - november 4

+
    +
  • Fix login screen not showing when no password stored (@balloob)
  • +
+

release 0.57.2 - november 5

+
    +
  • Update frontend with fixes for setting temperature on climate card (@balloob)
  • +
  • Fix setting max brightness for TRADFRI (@ggravlingen - #10359)
  • +
+

release 0.57.3 - november 11

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

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

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/05/frontend-translations/index.html b/blog/2017/11/05/frontend-translations/index.html new file mode 100644 index 0000000000..379718edb1 --- /dev/null +++ b/blog/2017/11/05/frontend-translations/index.html @@ -0,0 +1,212 @@ + + + + + + + + + Translating Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Translating Home Assistant

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

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

+

Translations

+

As mentioned in the 0.57 release notes, Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. @c727 took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with Lokalise to manage our translations!

+

Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our public signup link, and start translating right away. We’ve created a translation startup guide with additional details about how to contribute. Instructions are provided there for how to request a new language.

+

Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright!

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/10/ttn-with-mqtt/index.html b/blog/2017/11/10/ttn-with-mqtt/index.html new file mode 100644 index 0000000000..fce600e14f --- /dev/null +++ b/blog/2017/11/10/ttn-with-mqtt/index.html @@ -0,0 +1,371 @@ + + + + + + + + + Home Assistant and The Things Network (TTN) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Home Assistant and The Things Network (TTN)

+
+ + + seven minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

The Home Assistant integration for The Things Network (TTN) uses their Storage feature to get the sensor data. The easiest way to observe TTN sensors would be MQTT as it doesn’t requires any additional configuration.

+

At the moment Home Assistant only supports one MQTT broker. This means that you can’t subscribe to topics which are located on different brokers.

+ +

Subscribe to the TTN Broker

+

To check what your devices are sending, subscribe to the topic +/devices/+/up with a command-line tool like mosquitto_sub. The <Region> is the postfix of the Handler entry in your Application overview. <AppID> is the Application ID and <AppKey> is your access key.

+
$ mosquitto_sub -v -h <Region>.thethings.network -t '+/devices/+/up' -u '<AppID>' -P '<AppKey>'
+{
+	"app_id": "ha-demo",
+	"dev_id": "device01",
+	"hardware_serial": "AJDJENDNHRBFBBT",
+	"port": 1,
+    [...]
+
+
+

The payload contains details about the device itself and the sensor data. The sensor data is stored in payload_fields. Depending on the device configuration it may contain a single value or multiple values.

+

The relay

+

To be able to work locally with the MQTT data that is received from the devices connected to TTN, we need to transfer it to the local broker. With this simple script below all messages from a given device are re-published on your local MQTT broker after they are received. Modify the script with your details as outlined in the previous section.

+
"""Relay MQTT messages from The Things Network to a local MQTT broker."""
+import paho.mqtt.client as mqtt
+import paho.mqtt.publish as publish
+
+DEVICE_NAME = '<DeviceID>'
+
+TTN_BROKER = '<Region>.thethings.network'
+TTN_USERNAME = '<AppID>'
+TTN_PASSWORD = '<AppKey>'
+TTN_TOPIC = '+/devices/{}/up'.format(DEVICE_NAME)
+
+LOCAL_BROKER = '192.168.0.2'
+LOCAL_TOPIC = 'home/ttn/garden_temp'
+
+
+def on_connect(client, userdata, flags, rc):
+    """Subscribe to topic after connection to broker is made."""
+    print("Connected with result code", str(rc))
+    client.subscribe(TTN_TOPIC)
+
+
+def on_message(client, userdata, msg):
+    """Relay message to a different broker."""
+    publish.single(
+        LOCAL_TOPIC, payload=msg.payload, qos=0, retain=False,
+        hostname=LOCAL_BROKER, port=1883, client_id='ttn-local',
+        keepalive=60, will=None, auth=None, tls=None, protocol=mqtt.MQTTv311)
+
+
+client = mqtt.Client()
+client.username_pw_set(TTN_USERNAME, password=TTN_PASSWORD)
+client.on_connect = on_connect
+client.on_message = on_message
+client.connect(TTN_BROKER, 1883, 60)
+
+client.loop_forever()
+
+
+

Save it and run it. As soon as a MQTT message is received from your device you should see it on your local broker (here 192.168.0.2) if you subscribe to # or the topic given in the script above home/ttn/garden_temp.

+
$ mosquitto_sub -h 192.168.0.2 -t "#" -d
+
+
+

The sensor

+

All we would need now, is a mqtt sensor with a value_template. With a sophisticated custom sensor it would be possible to displaying a little more than just the state. The device is only sending the temperature {"temperature": 7.5} but there are other details available which the sensor should show.

+
"""Support for The Things Network MQTT sensors."""
+import asyncio
+from datetime import timedelta
+import json
+import logging
+
+import voluptuous as vol
+
+import homeassistant.components.mqtt as mqtt
+from homeassistant.components.mqtt import CONF_STATE_TOPIC
+from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT
+from homeassistant.core import callback
+import homeassistant.helpers.config_validation as cv
+from homeassistant.helpers.entity import Entity
+
+_LOGGER = logging.getLogger(__name__)
+
+DEFAULT_NAME = 'MQTT TTN Sensor'
+DEFAULT_FORCE_UPDATE = False
+DEPENDENCIES = ['mqtt']
+
+PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({
+    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
+    vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string,
+
+})
+
+
+@asyncio.coroutine
+def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
+    """Set up the TTN MQTT Sensor."""
+    async_add_devices([MqttTtnSensor(
+        config.get(CONF_NAME), config.get(CONF_STATE_TOPIC),
+        config.get(CONF_UNIT_OF_MEASUREMENT))
+    ])
+
+
+class MqttTtnSensor(Entity):
+    """Representation of a sensor."""
+
+    def __init__(self, name, state_topic, unit_of_measurement):
+        """Initialize the sensor."""
+        self._state = None
+        self._name = name
+        self._unit_of_measurement = unit_of_measurement
+        self._attributes = {}
+        self._state_topic = state_topic
+
+    def async_added_to_hass(self):
+        """Subscribe to MQTT events."""
+        @callback
+        def message_received(topic, payload, qos):
+            """Handle new MQTT messages."""
+
+            try:
+                data = json.loads(payload)
+            except json.JSONDecodeError:
+                _LOGGER.error("Invalid JSON data received: %s", data)
+
+            self._state = data['payload_fields'][next(
+                iter(data['payload_fields']))]
+            self._attributes = data
+            del self._attributes['payload_fields']
+            del self._attributes['metadata']
+            self.async_schedule_update_ha_state()
+
+        return mqtt.async_subscribe(
+            self.hass, self._state_topic, message_received, 0)
+
+    @property
+    def should_poll(self):
+        """No polling needed."""
+        return False
+
+    @property
+    def name(self):
+        """Return the name of the sensor."""
+        return self._name
+
+    @property
+    def unit_of_measurement(self):
+        """Return the unit this state is expressed in."""
+        return self._unit_of_measurement
+
+    @property
+    def state_attributes(self):
+        """Return the attributes of the entity."""
+        return self._attributes
+
+    @property
+    def state(self):
+        """Return the state of the entity."""
+        return self._state
+
+
+

Store it in <config_dir>/custom_components/sensor/mqtt_ttn.py and it will handle the messages.

+

The configuration

+

Now create the mqtt_ttn sensor entry for your device.

+
sensor:
+  - platform: mqtt_ttn
+    name: TTN Sensor
+    state_topic: "home/ttn/garden_temp"
+
+
+

This solution is not production-ready, scalable or stable but it could fill the gape till Home Assistant is able to connect to multiple MQTT brokers. If you have multiple devices relay all messages to your local broker and add a configuration variable to mqtt_ttn sensor which allows you to select the device.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/12/tor/index.html b/blog/2017/11/12/tor/index.html new file mode 100644 index 0000000000..81ec45171b --- /dev/null +++ b/blog/2017/11/12/tor/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Secure remote access to Home Assistant using Tor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Secure remote access to Home Assistant using Tor

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

Routers and gateways provided by broadband internet providers are very often limited regarding features and configuration possibilities. Most of these limitations affect the opportunities that allow users to set up port-forwarding, DMZ, and DHCP reservations since the suppliers figured that average user does not want (or should not) deal with these. Making your Home Assistant instance available remotely (and securely), in this case, becomes more difficult. Are you one of those unlucky ones?

+

There are a couple of options available to achieve a remote (and secure) accessible Home Assistant instance. However, almost all of them require you to: open one or more ports on your router, expose a public IP address, and require you to reserve a fixed IP in your DHCP server (or set up a static IP address). Examples of these are:

+
    +
  • Combination of DuckDNS (or similar), Let’s Encrypt (SSL), DHCP reservation, and forwarding a port to your device running Home Assistant.
  • +
  • Setup a VPN, which often requires more hardware and software. Additionally, it also requires port-forwarding, DHCP reservation and most likely DuckDNS (or similar).
  • +
  • SSH tunnel-ing. Which still requires port-forwarding, DHCP reservation and most likely (yeah, you’ve guessed it) DuckDNS (or similar).
  • +
+

There is, however, another option available that most people do not realize: Tor. Tor offers a capability that they refer to as Tor’s Hidden Services, which allows you to securely access your Home Assistant installation without the need for all these things. No need to forward and open ports, no need to expose your public IP, no DNS entry, no need for SSL certificates, and you do not have to assign a fixed IP to the device running your Home Assistant.

+

The most amazing part? It is super easy to set up!

+ +

Setting up Tor

+

Our documentation provides a detailed guide about setting up a Tor’s Hidden Service. The setup is straight-forward:

+
    +
  1. Install Tor. On a Debian-based system: $ sudo apt-get install tor. On Fedora: $ sudo dnf install tor
  2. +
  3. +

    Modify Tor’s main configuration file /etc/tor/torrc to include the following lines:

    +
     ############### This section is just for location-hidden services ###
    +
    + ## Once you have configured a hidden service, you can look at the
    + ## contents of the file ".../hidden_service/hostname" for the address
    + ## to tell people.
    + ...
    + HiddenServiceDir /var/lib/tor/homeassistant/
    + HiddenServicePort 80 127.0.0.1:8123
    + ...
    +
    +
    +
  4. +
  5. Restart Tor: $ sudo systemctl restart tor
  6. +
  7. +

    The Tor-generated hostname file contains the hostname you need to access your installation.

    +
     $ sudo cat /var/lib/tor/homeassistant/hostname
    + abcdef1234567890.onion
    +
    +
    +
  8. +
+

Tor add-on for Hass.io

+

Franck Nijhof (@frenck) created the Tor add-on for Hass.io. This add-on makes the installation and the setup extremely simple. Go to the Hass.io panel, then to the Store, copy https://github.com/hassio-addons/repository into the text box of Add-On Repositories and save it.

+

A new entry Tor will show-up in the list of add-ons. Click on it to install it. The configuration is done in Options. Please refer to the Configuration documentation for further details. A possible configuration could look like the sample below (which is the default configuration).

+
{
+  "log_level": "info",
+  "socks": false,
+  "hidden_services": true,
+  "stealth": false,
+  "client_names": [],
+  "ports": [
+    "8123:80"
+  ]
+}
+
+
+

When you are done, press Save and then Start. In the Logs section, you can see what the add-on is doing. Watch out for an entry like the one below, which will tell you your hostname on the Tor network.

+
INFO: -----------------------------------------------------------
+INFO: Your Home Assistant instance is available on Tor!
+INFO: Address: abcdef1234567890.onion
+INFO: -----------------------------------------------------------
+
+
+

Don’t worry if you missed it, restarting the add-on will display it again. The details are also stored and available in the /ssl/tor/hidden_service/hostname file.

+

Tor clients

+

To access you Home Assistant via the Tor Hidden Service, you will need a Tor client. There are multiple clients, for different devices and platforms, available. The Tor Browser is by far the simplest option, which is available for Windows, MacOS & Linux.

+

Simply download and install the Tor Browser, start it, and enter the “dot onion” address you’ve gained from the earlier steps (abcdef1234567890.onion in this case). Voila!

+

Some other clients:

+ +

Cranking up security

+

The setup described in this blog post is easy and relatively secure, but anyone who knows your .onion address can still connect to your Home Assistant instance (Remember to use passwords!). With all of the discussion about putting your IoT on the Tor Network, maybe you want to add an extra layer of defense, especially if you’re going to be the only one that uses it. Tor offers an additional layer of security, called “Hidden Service Authentication”, usually referred to as “Stealth”-mode.

+

This “Stealth”-mode adds an extra layer of security to your Hidden Service by only responding to a client that passes a unique secret cookie as it connects. Obviously, this requires additional configuration on the Tor client applications.

+

Additional information can be found in the Tor documentation and the Tor add-on repository, including how to setup the “Stealth”-mode. The Tor Project itself provides details about a variaty of topics in their documentation.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/18/release-58/index.html b/blog/2017/11/18/release-58/index.html new file mode 100644 index 0000000000..2ee5927fb6 --- /dev/null +++ b/blog/2017/11/18/release-58/index.html @@ -0,0 +1,376 @@ + + + + + + + + + 0.58: More translations, faster frontend, system log - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.58: More translations, faster frontend, system log

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

+The Hass.io release of 0.58 will be delayed by a couple of days because Pascal is moving this weekend. +

+

Translation update

+

Translations are up and running in full speed. Shortly after the last release we got our translation pipeline figured out. @armills and @c727 are doing an amazing job managing this project. We’ve doubled the number of supported languages to 42 and the amount of keys to translate went from 8 to 130. Our translators are on top of their game and 79% is already translated.

+

Talking about our translators, we now have 445 people with an account to help with translations. Not bad for 3 weeks!

+

And because more translations is more better, @robbiet480 has added the iOS app to Lokalise, our translation management platform. The iOS app is currently supported in 7 different languages.

+

Learn more about how to help with translations

+

Frontend improvements continue

+

Thanks to @Andrey-git we now are able to serve the frontend in modern JavaScript. Leveraging modern JavaScript makes the frontend faster to load and run. For now it’s opt-in but we’re looking into making it opt-out in the future. The ES5 version of the frontend will remain available for older devices.

+

To try it once, add ?latest to your Home Assistant bookmark. To make it the default on your installation, update your config to look like this:

+
frontend:
+  javascript_version: latest
+
+
+

+For Custom UI users: your custom UI will need to be updated before it can work with the new version of the frontend. +

+

System log enhanced

+

Our about screen that shows the error logs has gained a nice upgrade by @postlund. Now the 50 latest exceptions will be displayed with the option to get more information.

+

+ Screenshot of the about screen showing the system log. + Screenshot of the about screen showing the system log. +

+

New Platforms

+ +

Release 0.58.1 - November 21

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+
    +
  • hass.states.is_state_attr(entity_id, attribute, value) has been removed. The template version still exists. Unused method parameter wait has been removed from hass.bus.async_fire (@balloob - #10305) (breaking change)
  • +
  • Refactor Neato botvac components as a vacuum (@jabesq - #9946) (neato docs) (switch.neato docs) (vacuum.neato docs) (breaking change) (new-platform)
  • +
  • Lutron released a firmware updated for the Caseta system which removed our ability to connect to and control the bridge device over SSH, breaking compatibility with pylutron_caseta and Home Assistant. Component has been updated to work again, please see the docs on how to set it up. (@mdonoughe - #10286) (lutron_caseta docs) (breaking change)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/11/29/hassio-virtual-machine/index.html b/blog/2017/11/29/hassio-virtual-machine/index.html new file mode 100644 index 0000000000..9f3ebbb875 --- /dev/null +++ b/blog/2017/11/29/hassio-virtual-machine/index.html @@ -0,0 +1,313 @@ + + + + + + + + + Set up Hass.io on top of a virtual machine - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Set up Hass.io on top of a virtual machine

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+

The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with Hass.io. For a test or if you have a system which is already hosting virtual machines then the Hass.io installer is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with libvirt support and the guest will be running Debian 9. Hass.io will be installed on the guest.

+ +

Assuming that you already have setup libvirtd. You might need to install virt-builder and virt-viewer additionally.

+
$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer
+
+
+

We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use $ virt-builder --list to get an overview about what’s operating systems are available if you prefer to use a different system.

+
$ sudo virt-builder debian-9 \
+    --output /var/lib/libvirt/images/hassio.img \
+    --format qcow2 \
+    --size 10G \
+    --root-password password:test123 \
+    --hostname hassio \
+    --firstboot-command "dpkg-reconfigure openssh-server"
+[...]
+[ 147.6] Finishing off
+                   Output file: /var/lib/libvirt/images/hassio.img
+                   Output size: 10.0G
+                 Output format: qcow2
+            Total usable space: 9.3G
+                    Free space: 8.1G (87%)
+
+
+

Now, we are making our new virtual machine available for libvirtd. If you get an error that the OS is unknown, use $ osinfo-query os to get the name to use with --os-variant. To access the virtual machine is connected to the bridge bridge0.

+
$ sudo virt-install --name hassio --import --ram 1024 \
+     --os-variant debian9 -w bridge=bridge0 \
+     --autostart --disk /var/lib/libvirt/images/hassio.img
+
+
+

+ + Hass.io virtual machine in Virtual Machine Manager +

+

Depending on your preferences you can use the Virtual Machine Manager (virt-manager) or virsh to manage the created virtual machine. Log in and create an user with # useradd ha and set a password with # passwd ha. We will need that user to make a SSH connection to the virtual machine.

+

Log in as ha with the given password. If your are using the default network of libvirtd then the DHCP range is defined in /var/lib/libvirt/dnsmasq/default.conf. In this guide the virtual machine is present at 192.168.0.109.

+
$ ssh ha@192.168.0.109
+ha@192.168.0.109's password: 
+Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64
+[...]
+$ 
+
+
+

Install the requirements after you switch the user to root.

+
$ su
+Password: 
+root@hassio:/home/ha# 
+root@hassio:/home/ha# apt-get update
+root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \
+    apt-transport-https ca-certificates
+
+
+

We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages.

+
root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg 
+root@hassio:/home/ha# apt-key add gpg
+OK
+root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list
+root@hassio:/home/ha# apt-get update
+
+
+

Now, it’s possible to install a current release of Docker.

+
root@hassio:/home/ha# apt-get -y install docker-ce
+
+
+

Start docker and enable it.

+
root@hassio:/home/ha# systemctl start docker && systemctl enable docker
+
+
+

An installation script will take care about the setup of all moving parts.

+
root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -
+[INFO] Install supervisor docker
+[INFO] Install generic HostControl
+[INFO] Install startup scripts
+[INFO] Init systemd
+Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service.
+[INFO] Start services
+
+
+

If it’s done, then there will be two new containers.

+
root@hassio:/home/ha# docker ps
+CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS               NAMES
+ada5bbfc74f0        homeassistant/qemux86-64-homeassistant   "/usr/bin/entry.sh..."   4 minutes ago       Up 4 minutes                            homeassistant
+5954ac452ffc        homeassistant/amd64-hassio-supervisor    "/usr/bin/entry.sh..."   7 minutes ago       Up 7 minutes                            hassio_supervisor
+
+
+

After a connection to the container which is containing Home Assistant is made, you will see the log output.

+
root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0
+2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sun.sun, old_state=<state sun.sun=below_horizon; next_dawn=2017-11-29T06:17:58+00:00,...
+
+
+

For further details about the container, inspect can help.

+
root@hassio:/home/ha# docker inspect bb32b525d1ad
+[...]
+            "OnBuild": null,
+            "Labels": {
+                "io.hass.arch": "amd64",
+                "io.hass.machine": "qemux86-64",
+                "io.hass.type": "homeassistant",
+                "io.hass.version": "0.58.1"
+            }
+[...]
+
+
+

Hass.io is now ready. The frontend is available at http://192.168.0.109:8123. Yes, the IP address is the one of the guest.

+

+ + Hass.io overview +

+

Keep in mind that there are limitations with this approach. Not all add-ons will work and some don’t make sense to use as the hardware is not present. E.g., use the SSH community add-on instead of the default SSH add-on.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/12/03/release-59/index.html b/blog/2017/12/03/release-59/index.html new file mode 100644 index 0000000000..b0a89d14a8 --- /dev/null +++ b/blog/2017/12/03/release-59/index.html @@ -0,0 +1,360 @@ + + + + + + + + + 0.59: Order pizza, Entity Picker, Color Wheel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.59: Order pizza, Entity Picker, Color Wheel

+
+ + + 11 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

We are proud to announce the availability of Home Assistant 0.59. To keep you in the loop: This is the second last release in 2017. We have stuck to our bi-weekly release cycle for another year but we decided that we will take a little break between Christmas and New Year.

+

Dominos Pizza platform

+

With the Dominos Pizza integration made by @wardcraigj your home is now taking care that you don’t starve. In combination with a Skybell or a DoorBird you will know exactly when the pizza is in front of your door.

+

Color picker

+

@NovapaX created a new color picker. While dragging the color badge with your finger, a badge will appear above your finger so you can see the current color.

+

+ Screenshot of the color wheel. + Screenshot of the color wheel. +

+

Shopping list tweaks

+

@balloob has refreshed the shopping list UI to make it more usable. It’s now possible to add items by typing, instead of just voice. Also editing has been made easier.

+

Entity picker

+

@balloob improved the way if you want to pick an entity. In the automation editor, the script editor and the service section of the Developer Tools it’s much easier to identify the right one! The automation editor will only suggest relevant entities.

+

+ Screenshot of the Entity Picker. + Screenshot of the of the Entity Picker. +

+

Hass.io Add-ons

+

If you follow our twitter feed then you may already know that @frenck spent some time to bring new stuff to the Community Hass.io Add-ons repository.

+ +

New Platforms

+ +

Release 0.59.1 - December 4

+ +

Release 0.59.2 - December 6

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/12/17/introducing-home-assistant-cloud/index.html b/blog/2017/12/17/introducing-home-assistant-cloud/index.html new file mode 100644 index 0000000000..d6e1fa02c6 --- /dev/null +++ b/blog/2017/12/17/introducing-home-assistant-cloud/index.html @@ -0,0 +1,261 @@ + + + + + + + + + Introducing Home Assistant Cloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Introducing Home Assistant Cloud

+
+ + + six minutes reading time + + +
    +
  • Announcements
  • +
+
+ Comments +
+
+

Today we’re introducing the next step in the Home Assistant saga: the Home Assistant Cloud. The goal of the Home Assistant Cloud is to bridge the gap between your local Home Assistant instance and services in the cloud while delivering the maximum possible security and privacy.

+

The first service that is supported via the Home Assistant Cloud is the Amazon Alexa Smart Home skill. This integration will allow you to control all your devices in Home Assistant via Amazon Alexa. You will be able to say “Alexa, turn on the kitchen lights” and your local Home Assistant will turn on the lights. Because Alexa talks to Home Assistant, it doesn’t matter what kind of lights they are! Anything that is linked to Home Assistant will work. IKEA lights, a 10 year old X10 switch or something you’ve made yourself. As long as Home Assistant can control it, you can control it via Alexa.

+

We have designed the Home Assistant Cloud with security in mind. When you activate the new Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet.

+

Integrations like Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger!

+

We are making the beta of the Home Assistant Cloud publicly available today. During the beta period the Home Assistant Cloud will be free to use. We are currently planning to run a beta till March 1, 2018 0:00 UTC. Once the beta ends, the Home Assistant Cloud will be part of our Community Support package which will run at $5 USD/month.

+

By subscribing to the Community Support package you will show your support for the Home Assistant organization, its projects and its community. It will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud.

+

So if you ever felt like donating money to support the development of Home Assistant and Hass.io: sign up for the Home Assistant Cloud!

+

Why not take donations?

+

With donations you have to convince people to keep donating and it will be hard to plan around the amount of available money. The biggest concern is what do you do when there is not enough money. We could shut down the servers or again depend on the wallets of our developers. We could run Wikipedia style advertisements for donating, but those are even more annoying than running advertisements.

+

Getting started

+

Upgrade Home Assistant to 0.60 and enable the cloud and config components:

+
# Example configuration.yaml entry
+cloud:
+config:
+
+
+

Now restart Home Assistant and navigate to the configuration panel. It will offer a new cloud section. Here you can create an account and login. Once logged in, your instance will connect to the cloud.

+

The next step is to configure Alexa. This can be done by enabling the Home Assistant skill for Alexa and link your Home Assistant cloud account.

+

Once you’re done, ask Alexa to discover devices (“Alexa, discover devices”) and you are all set to control them: “Alexa, turn on <device name>”.

+

See the Cloud component configuration to learn how to filter which devices get exposed to Alexa.

+

FAQ

+

Last updated: February 22, 2018

+

I thought the Home Assistant crew didn’t like the cloud?

+

You are right, we don’t! The Home Assistant Cloud is not an alternative to running your local Home Assistant instance. All control and automations are still running locally.

+

Instead, the Home Assistant Cloud is an extension of your local instance. It allows to communicate with companies that force us to communicate via a public available cloud endpoint like Amazon Alexa and Google Assistant.

+

Home Assistant Cloud is only used to route the messages to your local Home Assistant instance. All messages are processed locally.

+

(Some people have suggested we rename to Home Assistant Bridge to avoid this confusion)

+

Will Home Assistant and Hass.io remain open source?

+

Yes. Yes. Yes! Home Assistant is the work of hundreds of developers all working together in creating something amazing. The only thing that will require a subscription is the optional cloud functionality.

+

Where is the source code for the Alexa skill?

+

All messages are processed locally and so the Alexa skill code is part of the Home Assistant code. The Home Assistant Cloud only routes the messages to your local Home Assistant instance. This means that you can audit the source code to check all the things that the cloud can do:

+ +

What other features will come to the cloud?

+

We have a lot of ideas! We are not going to make any promises but here are some things that we’re looking into:

+
    +
  • Google Home / Google Assistant Smart Home skill
  • +
  • Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant.
  • +
  • Encrypted backups of your Hass.io data
  • +
  • Text to speech powered by AWS Polly
  • +
  • Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud.
  • +
  • IFTTT integration
  • +
  • Alexa shopping list integration
  • +
+

What countries are supported at launch?

+

As of February 2018, we are live in all countries that have Alexa except for Japan (which is under certification).

+

How is the connection made to the cloud?

+

The connection is made using a WebSocket connection over HTTPS. See the source here.

+

I think that the price is too high for what I get.

+

The Home Assistant Cloud functionality is a perk for becoming a supporter of the Home Assistant project. As a supporter you will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. You are not paying to just maintain the cloud servers.

+

The perks offered for being a supporter will also extend over time, as noted in this answer.

+

What will the Home Assistant organization do with the funds ?

+

The plan is to hire developers to work fulltime on Home Assistant. We have grown a lot in the last 4 years and the work load is pushing the limits of what our core developers can do. Open source burn out is very common (1, 2) and we want to avoid this by moving most organization and release chores to a paid position.

+

For more background on these topics, check out HASS Podcast 15.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/12/17/release-60/index.html b/blog/2017/12/17/release-60/index.html new file mode 100644 index 0000000000..d9f03d21ef --- /dev/null +++ b/blog/2017/12/17/release-60/index.html @@ -0,0 +1,346 @@ + + + + + + + + + 0.60: Beckhoff/TwinCAT, WebDav, Gearbest, iAlarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.60: Beckhoff/TwinCAT, WebDav, Gearbest, iAlarm

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

The biggest change for 0.60 will be covered in a separate blog post. Thus, we will keep it short here. Just one thing: This is the last release in 2017. We will be back to our bi-weekly release cycle in 2018.

+

A big “Thank you” to all people who supported us to make this release possible.

+

TwinCAT

+

With the brand-new ADS (automation device specification) component by @stlehmann allows you to hook Home Assistant into this fieldbus independent interface which is often used between Beckhoff devices running with TwinCAT.

+

WebDav calendar

+

Thanks to @maxlaverse Home Assistant support now WebDav calendars.

+

Tracking prices

+

With the new gearbest sensor there is now an additional sensor available to track the price of a product.

+

Financial details

+

Yahoo! has discontinued their financial service. To fill this gap we have now the alpha_vantage sensor which is intruded in this release and allows you to monitor the stock market.

+

New Platforms

+ +

Release 0.60.1 - January 6

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2017/12/28/thank-you/index.html b/blog/2017/12/28/thank-you/index.html new file mode 100644 index 0000000000..d490e6d8c2 --- /dev/null +++ b/blog/2017/12/28/thank-you/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Thank You - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Thank You

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

2017 is almost over and this means it’s time to do a little recap of our 2017. This was a great year for Home Assistant. Again, we were able to stick to our bi-weekly release cycle. There were 25 releases over the year and each release included the work of around 60 contributors.

+

We got 10.000 stars on GitHub, reached 10.000 commits in the main repo (over 4300 were made in 2017), got a Thomas-Krenn award, participated in Hacktoberfest, we have now almost 1000 integrations (the exact number is 938), we moved to Discord and we are up to over 2 million pageviews per month on our forum. Beside that we announced the Home Assistant cloud and have regular Home Assistant Podcasts.

+

We also do not want to forget to mention Hass.io and all the great Hass.io add-ons.

+

Uff, what a year…Thank you, dear community for being so helpful, supportive and awesome 🙇.

+

A very big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. You are the foundation for our success and all of you can be proud of yourself.

+

We would also like to thanks all the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thank you GitHub, TravisCI, CloudFlare, Discord and Discourse!

+

Some of us are taking a break and spending some quality time with family and loved ones.

+

Stay tuned for more Home Assistant awesomeness in 2018. We will keep the pace but first: Happy New Year!

+

– Home Assistant Organization

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/01/14/release-61/index.html b/blog/2018/01/14/release-61/index.html new file mode 100644 index 0000000000..d6b9ec87c5 --- /dev/null +++ b/blog/2018/01/14/release-61/index.html @@ -0,0 +1,556 @@ + + + + + + + + + 0.61: Coinbase, Discogs, iGlo, Sochain - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.61: Coinbase, Discogs, iGlo, Sochain

+
+ + + 23 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Almost a 100 contributors to this release 🎉 That’s what you get when you skip a release. It’s a little late but “Happy New Year” and welcome to 0.61 the first release 2018.

+

This release contain some breaking changes. Please make sure that you check the section below if you are running into trouble.

+

Assistant configs

+

We made a mistake in the foundation of both the Google Assistant and Alexa integrations: they were storing their config inside customize. This is not the right place and we moved them to be under the components itself. See the breaking changes section on how to migrate.

+

Hass.io updates

+

@pvizeli has made it easier to create and restore snapshots for Hass.io by calling the new services. This way it will be easy to automate the creation of a snapshot at night. The updater has also been fixed and will now report on new versions of Hass.io that are available.

+

Improved loading speed

+

@amelchio has made startup of Home Assistant even faster. All service descriptions are now loaded only when needed by the frontend instead of during startup. This did mean that we had to enforce our service convention. We found a few platforms that didn’t follow this and they have been updated:

+
todoist.new_task -> calendar.todoist_new_task
+
+snapcast.snapcast_snapshot -> media_player.snapcast_snapshot
+snapcast.snapcast_restore -> media_player.snapcast_restore
+
+mopar.remote_command -> sensor.mopar_remote_command
+
+broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107
+broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107
+
+
+

New Platforms

+ +

Release 0.61.1 - January 16

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+
    +
  • Extend Threshold binary sensor to support ranges. This means that you can now set up and lower. (@DanNixon - #11110) (binary_sensor.threshold docs) (breaking change)
  • +
  • The Steam game platform contains changes: +
      +
    • game attribute no longer set in device_state_attributes if no game is currently being played as the string “None” is no longer passed if no current game is being played, instead the game attribute is not present.
    • +
    • States now use lower snake case.
    • +
    • The “Play” and “Trade” states has been renamed to “looking_to_play” and “looking_to_trade”. +(@frwickst - #11182) (sensor.steam_online docs) (breaking change)
    • +
    +
  • +
  • The tile platform now shows only active Tiles by default; to show all Tiles, including expired/inactive ones, show_inactive must be True. The following state attributes have been removed: last_seen and last_updated. (@bachya - #11172) (device_tracker.tile docs) (breaking change)
  • +
  • The hidden_string feature has been removed from the isy994 component. Previously, this allowed entities to be “hidden” in Home Assistant if a configured string was present in an ISY device’s name or folder path. This was removed because hiding devices is now done via the customization feature. +Note however, that this feature was replaced by a new ignore_string config option, which will now cause Home Assistant to completely ignore devices with the matching string so that they will not be imported as a Home Assistant device at all. This can be helpful if you have nodes in the ISY that aren’t useful at all in Hass (IR transmitter nodes are a good example.) (@OverloadUT - #11243) (isy994 docs) (binary_sensor.isy994 docs) (cover.isy994 docs) (fan.isy994 docs) (light.isy994 docs) (lock.isy994 docs) (sensor.isy994 docs) (switch.isy994 docs) (breaking change)
  • +
  • The egardia alarm panel platform no longer a need the users to run a separate Egardiaserver component. It can now also run on HASS.io. (@jeroenterheerdt - #11344) (alarm_control_panel.egardia docs) (breaking change)
  • +
  • The binary sensor platform of the DoorBird integration has been deleted, so remove DoorBird from your binary_sensor configuration. Instead, set the doorbell_events option of the doorbird component to True. The last_visitor option has been removed from the camera component, as it is now always added as an entity. (@Klikini - #11193) (camera.doorbird docs) (breaking change)
  • +
  • The following attributes of the TP-Link switch and light platform have been renamed: +
      +
    • Light: current_consumption -> current_power_w, daily_consumption -> daily_energy_kwh and monthly_consumption -> monthly_energy_kwh
    • +
    • Switch: current -> current_a, current_consumption -> current_power_w, total_consumption -> total_energy_kwh and daily_consumption -> today_energy_kwh (@DanNixon - #10979) (light.tplink docs) (switch.tplink docs) (breaking change)
    • +
    +
  • +
  • Move IMAP Email Content body to an attribute (@notoriousbdg - #11096) (sensor.imap_email_content docs) (breaking change)
  • +
  • Automations which were using state that was returning target_temperature of the netatmo climate platform needs an update. (@ciotlosm - #11345) (climate.netatmo docs) (breaking change)
  • +
  • The default availability payloads for the MQTT switch platform have changed from “ON” and “OFF” to “online” and “offline” (in order to match the majority of MQTT platforms that already supported availability reporting). (@DanNixon - #11336) (breaking change)
  • +
  • +

    Customizations for how entities are exposed to Alexa are no longer set via customize. Instead they are set via the configuration of the cloud component:

    +
      cloud:
    +    alexa:
    +      entity_config:
    +        switch.kitchen:
    +          name: 'Name for Alexa'
    +          description: 'Description for Alexa'
    +          display_categories: 'LIGHT'
    +
    +
    +

    (@balloob - #11461) (cloud docs) (alexa.smart_home docs) (breaking change)

    +
  • +
  • The extension of the alpha_vantage requires an update of the configuration as now are exchange data available as well. (@ChristianKuehnel - #11427) (sensor.alpha_vantage docs) (breaking change)
  • +
  • The prometheus component now supports pushing all sensors and fixes wrong metrics. If may require that you update your configuration. (@michaelkuty - #11159) (prometheus docs) (breaking change)
  • +
  • Insteon local devices will now use their address as the entity_id and name. The friendly name can be customized using the standard customization configuration. (@camrun91 - #11088) (insteon_local docs) (fan.insteon_local docs) (light.insteon_local docs) (switch.insteon_local docs) (breaking change)
  • +
  • +

    Google Assistant is no longer configured via customize but instead has its configuration under the google_assistant entry in your configuration.yaml. The attributes will no longer have to be prefixed with google_assistant_ either.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Old optionNew option
    google_assistantexpose
    aliasesaliases
    google_assistant_namename
    google_assistant_typetype
    +

    Before:

    +
      homeassistant:
    +    customize:
    +      switch.kitchen:
    +        google_assistant: false
    +        google_assistant_name: nice lights
    +        google_assistant_type: light
    +        aliases:
    +          - roof lights
    +
    +  google_assistant:
    +
    +
    +

    After:

    +
      google_assistant:
    +    entity_config:
    +      switch.kitchen:
    +        expose: false
    +        alias: roof lights
    +        name: nice lights
    +        type: light
    +
    +
    +

    (@balloob - #11499) (cloud docs) (google_assistant docs) (breaking change)

    +
  • +
  • The climate.set_aux_heat service is no longer available for the Sensibo climate platform. Now call climate.turn_on or climate.turn_off. (@andrey-git - #11579) (climate.sensibo docs) (breaking change)
  • +
  • +

    Release 0.61.0 introduced a lazy service loading strategy that relied on all components and platforms following our naming convention. After the release we realized that not all services did, which have been addressed by this fix. This results in certain services changing names:

    +
     todoist.new_task -> calendar.todoist_new_task
    +
    + snapcast.snapcast_snapshot -> media_player.snapcast_snapshot
    + snapcast.snapcast_restore -> media_player.snapcast_restore
    +
    + mopar.remote_command -> sensor.mopar_remote_command
    +
    + broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107
    + broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107
    +
    +
    +

    (@amelchio - #11677) (calendar.todoist docs) (media_player.snapcast docs) (media_player.soundtouch docs) (sensor.mopar docs) (switch.broadlink docs) (switch.scsgate docs) (breaking change)

    +
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/01/21/clarification-emulated-hue/index.html b/blog/2018/01/21/clarification-emulated-hue/index.html new file mode 100644 index 0000000000..dd85092098 --- /dev/null +++ b/blog/2018/01/21/clarification-emulated-hue/index.html @@ -0,0 +1,219 @@ + + + + + + + + + Clarification about Emulated Hue - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Clarification about Emulated Hue

+
+ + + 1 minute reading time + + +
    +
  • Public-Service-Announcement
  • +
+
+ Comments +
+
+

There are some misconceptions floating around about the future of the Emulated Hue component and I would like to set the record straight. The Emulated Hue component is not going to be removed nor will we ever remove any functionality from Home Assistant to push you to support the Home Assistant project by subscribing to the Community Support Package.

+

The reason people are concerned about the future of the Emulated Hue component is because of a poor choice of words in a deprecation message. This message was introduced a year ago when we deprecated the config option type: alexa for the Emulated Hue component:

+
+

Alexa type is deprecated and will be removed in a future version

+
+

That config option should never have been called type: alexa but instead have been called mode: legacy. If you think about it, why would emulating something even have different modes it emulates based on the consumer? That means that one of the two emulation modes is incorrect.

+

The old implementation was not 100% correct. It was correct enough to work with Alexa (the original target) but not with Google Home. When fixing Emulated Hue we added type: alexa to re-enable the old implementation so that people did not have to go through the trouble to re-add their Alexa devices. The option was deprecated to indicate that we would remove the incorrect emulation in the future. However, we forgot about actually following through with that.

+

The mistake we made was calling the correct mode google_home although it had nothing to do with Google Home. It confused people and they kept adding type: alexa to their configuration, triggering the deprecation warning.

+

The warning will be updated starting Home Assistant 0.62 and will also include a link to this blog post.

+

More info:

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/01/27/release-62/index.html b/blog/2018/01/27/release-62/index.html new file mode 100644 index 0000000000..66845c462b --- /dev/null +++ b/blog/2018/01/27/release-62/index.html @@ -0,0 +1,370 @@ + + + + + + + + + 0.62: MyChevy, Iota and Venstar Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.62: MyChevy, Iota and Venstar Thermostat

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Second release of the year and it’s buzzing on GitHub. This release we had 70 people contribute code. We’ve also managed to finally get our PR count below a 100 open PRs again. A lot of cool stuff still waiting to make it to a future Home Assistant release.

+

I want to give a shout out to @martinhjelmare and @frenck. Martin is doing an amazing job at code reviews and Franck has been kicking ass with Hass.io add-ons and keeping track of our documentation PRs. Thanks for this amazing work!

+

MyChevy

+

With this new integration by @sdague you are able to keep an eye on your Chevy Bolt EV. Keep track if your car is plugged in, the battery stats and the range it is currently capable of driving. Hip!

+

New Platforms

+ +

Release 0.62.1 - January 30

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+
    +
  • Tahoma platform will get new entity IDs (@glpatcern - #11547) (tahoma docs) (cover.tahoma docs) (breaking change)
  • +
  • Mold indicator: attribute names no longer include spaces or periods (@olskar - #11694) (sensor.mold_indicator docs) (breaking change)
  • +
  • Custom component devs only: EntityComponent.add_entity(entity) and EntityComponent.async_add_entity(entity) have been removed. Use EntityComponent.add_entities([entity]) and EntityComponent.async_add_entities([entity]) instead. Also EntityComponent.entities is no longer a dictionary but instead an iterable. Use EntityComponent.get_entity(entity_id) to get entity by id. (@balloob - #11691) (breaking change)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/02/09/disabling-disqus/index.html b/blog/2018/02/09/disabling-disqus/index.html new file mode 100644 index 0000000000..85ec8f0cf3 --- /dev/null +++ b/blog/2018/02/09/disabling-disqus/index.html @@ -0,0 +1,206 @@ + + + + + + + + + Disabling Disqus comments - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Disabling Disqus comments

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+

Last week, starting with the release of Home Assistant 0.62, we switched to using our community forums for comments on our blog posts. By doing so, people are able to use their existing Home Assistant community accounts to comment on our blog posts and engage with one another. It has been easier for our users to stay in the loop with one less channel to keep track off.

+

Previously, we were using the free version of Disqus to power comments on our blog. After the switch, to preserve the old comments, we decided to keep Disqus active on the older blog post pages. However, today we decided to turn them off.

+

Today Disqus changed their advertisement strategy and turned on irrelevant graphical advertisement above and below the comment thread (screenshot). On a phone, it took so much screen real estate that it filled the whole page with an advertisement for weight loss milk. Previously, Disqus had advertisements in an unobtrusive way: showing suggested content a visitor might also be interesed in.

+

Today we have switched all blog posts to the new commenting system and are no longer serving Disqus comments. We are exploring ways to restore the old comments.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/02/10/release-63/index.html b/blog/2018/02/10/release-63/index.html new file mode 100644 index 0000000000..2278fd792c --- /dev/null +++ b/blog/2018/02/10/release-63/index.html @@ -0,0 +1,523 @@ + + + + + + + + + 0.63: Entity Registry, SQL Sensor, Mercedes cars - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.63: Entity Registry, SQL Sensor, Mercedes cars

+
+ + + 18 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Date set for dropping Python 3.4 support

+

As announced in October, we’re going to drop Python 3.4 support in 2018. We’ve now decided that in two releases, 0.65, the minimum Python version that will be supported is bumped to 3.5.3. This won’t impact most users. You are already fine if you’re using Hass.io, the latest Debian stable (Stretch) or a derivative of that (Raspbian, Ubuntu).

+

Entity Registry

+

This release introduces the entity registry. The entity registry allows integrations to reserve entity IDs. This means that we’ll automatically grant an entity ID to a device. It’s reserved so that no other device will ever get that entity ID. It also means that as a user, you will be able to customize the entity IDs for these devices.

+

For an integration to leverage the entity registry, it needs to define a unique ID for each of their entities. A unique ID is something that we can uniquely identify the device and that is not configurable. So a serial number and mac address are ok, IP addresses or names are not.

+

Examples of integrations that have unique IDs defined in this release are Z-Wave, Hue, Nest, LIFX, Sonos, Apple TV.

+

To update the entity ID that will be assigned to your device, update <config>/entity_registry.yaml and restart Home Assistant (reloading on the fly is planned for a future release).

+

The entity registry will assign an entity ID the first time that a device is seen. This should be the same entity ID as it always was before. If this is not the case, update the registration entity to change it back to the old entity ID.

+

We’re planning a lot of cool stuff around the entity registry. Stay tuned!

+

New Platforms

+ +

Release 0.63.1 - February 12

+ +

Release 0.63.2 - February 14

+ +

Release 0.63.3 - February 17

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+
    +
  • updated sensor name (@philklei - #12084) (sensor.tahoma docs) (breaking change)
  • +
  • Originally Canary camera is added per location and only displays an image that was captured due to motion. Now it is per device (each location can have multiple devices) with live stream support. (@snjoetw - #11949) (canary docs) (camera.canary docs) (breaking change)
  • +
  • Avoid influxdb filling connection pool: The influxdb retry_queue_limit configuration variable no longer has any effect and can be removed. (@amelchio - #12182) (influxdb docs) (breaking change)
  • +
  • Some spelling mistakes in default entity names have been fixed in (@OttoWinter - #12041). This is causing these entity_id changes: +
      +
    • Seven segments display: image_processing.seven_segement_ocr_[...]image_processing.seven_segment_ocr_[...]
    • +
    • Rain Bird Switch: switch.sprinker_[...]switch.sprinkler_[...]
    • +
    • OpenEVSE Sensor: sensor.ambient_termperaturesensor.ambient_temperature
    • +
    • Fido: sensor.[...]_internaltional_remainingsensor.[...]_international remaining
    • +
    +
  • +
  • From version 0.64, Home Assistant will by default purge recorded state history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain: +
      recorder:
    +    purge_keep_days: 30
    +
    +
    +

    If you want to keep the previous default of never deleting history, use this configuration:

    +
      recorder:
    +    purge_interval: 0
    +
    +
    +

    (@amelchio - #11976)

    +
  • +
  • +

    Fix duplicate entity_ids in System Monitor (@fanaticDavid - #12124) (sensor.systemmonitor docs) (breaking change)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ResourceOld Entity IDNew Entity ID
    disk_usesensor.disk_usedsensor.disk_use
    disk_use_percentsensor.disk_usedsensor.disk_use_percent
    load_15msensor.average_load_15msensor.load_15m
    load_1msensor.average_load_1msensor.load_1m
    load_5msensor.average_load_5msensor.load_5m
    memory_freesensor.ram_availablesensor.memory_free
    memory_usesensor.ram_usedsensor.memory_use
    memory_use_percentsensor.ram_usedsensor.memory_use_percent
    network_insensor.receivedsensor.network_in
    network_outsensor.sentsensor.network_out
    packets_insensor.packets_receivedsensor.packets_in
    packets_outsensor.packets_sentsensor.packets_out
    processor_usesensor.cpu_usedsensor.processor_use
    swap_usesensor.swap_usedsensor.swap_use
    swap_use_percentsensor.swap_usedsensor.swap_use_percent
    +
  • +
  • Developers only: Following EntityComponent methods have been removed: extract_from_service, async_update_group, async_reset, prepare_reload (@balloob - #12237) (breaking change)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/02/19/cloud-update/index.html b/blog/2018/02/19/cloud-update/index.html new file mode 100644 index 0000000000..d98fd59614 --- /dev/null +++ b/blog/2018/02/19/cloud-update/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Cloud Update - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Cloud Update

+
+ + + Less than one minute reading time + + +
    +
  • Cloud
  • +
+
+ Comments +
+
+

We’re happy to announce that the Home Assistant skill is now available in Canada, UK, Germany, India and Australia! Check it out in the Amazon Alexa Skill store.

+

In the meanwhile, we have also been working on the Google Assistant integration. We passed the first verification and are now working with Google to do the final verification. Stay tuned!

+

In less than 2 weeks the open beta is about to expire. We’re still working on setting up the company and payment system so we can start accepting payments. Until we do, Home Assistant Cloud will remain free.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/02/26/release-64/index.html b/blog/2018/02/26/release-64/index.html new file mode 100644 index 0000000000..919b524134 --- /dev/null +++ b/blog/2018/02/26/release-64/index.html @@ -0,0 +1,443 @@ + + + + + + + + + 0.64: Over 1000 integrations! New: HomeKit, BMW, August. - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.64: Over 1000 integrations! New: HomeKit, BMW, August.

+
+ + + 18 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

🎉 1000 integrations, 1000 integrations, 1000 integrations! 🎉

+

That’s right, Home Assistant 0.64 is here! In case you have missed our latest Cloud update, the Home Assistant Alexa skill is now live in all regions and we’re working with Google in getting the Smart Home skill for Google Assistant approved. Exciting times!

+

In the meanwhile, some great new integrations have landed, including yet another car 🚗 This time it’s BMW.

+

This is going to be the last release that supports Python 3.4. Starting with the next release, the minimum version required will be Python 3.5.3. Learn more here.

+

HomeKit

+

Native HomeKit support has arrived! Thanks to @cdce8p It is now possible to expose some devices over HomeKit to allow control via Siri and other things speaking the HomeKit protocol. Initial support has been added for temperature sensors and cover devices. Expect more devices to be added soon.

+

Check the HomeKit docs

+

Hass.io UI update

+

Some of you already noticed that your Hass.io panel looks a bit different since this morning: @pvizeli pressed the red green button and the new UI got live. The Hass.io team (@frenck @ryanm101) is doing a great job in adding new features (like partial or encrypted snapshots) to the Hass.io backend and fixing bugs. However, those features where only added to the command line tools but not to the frontend.

+

That’s where @c727 and @ciotlosm jumped in. They made new features accessible via the frontend and improved the overall navigation.

+

We know that some features are still missing or broken, we are fixing this right now! Check this issue first before you report any issues related to the Hass.io panel, please.

+

Chart.js

+

The frontend is now rendering the graphs and charts using Chart.js thanks to the hard work by @fanthos. This means that you can now render all the charts without being connected to the internet!

+

August integration

+

Major new integration by @snjoetw: August locks and door bells! Lock and unlock from Home Assistant and detect when your doorbell is rung or senses motion. Awesome!

+

Cast bug fixes

+

@OttoWinter has crushed a bunch of bugs for our ChromeCast integration. Including that nasy Cast group discovery issue! He is working on some more improvements that should arrive soon, stay tuned. Awesome work Otto!

+

New Platforms

+ +

Release 0.64.1 - February 27

+ +

Release 0.64.2 - March 1

+ +

Release 0.64.3 - March 2

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+
    +
  • Home Assistant now defaults to purge recorded history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain before starting 0.64 for the first time, for example: +
      recorder:
    +    purge_keep_days: 30
    +
    +
    +

    If you want to keep the previous default of never deleting history, use this configuration:

    +
      recorder:
    +    purge_interval: 0
    +
    +
    +

    (@amelchio - #12271) (breaking change)

    +
  • +
  • Show a persistent_notification if no symbols and no currencies are configured (@ChristianKuehnel - #12252) (sensor.alpha_vantage docs) (breaking change)
  • +
  • Updated RainMachine unique IDs to play better with the entity registry. If RainMachine had been configured previously, new entries will be placed into the entity registry, causing there to be two of each program/zone defined. To address, simply alter the entity_registry.yaml as desired. (@bachya - #12315) (switch.rainmachine docs) (breaking change)
  • +
  • Updated AirVisual unique IDs to play better with the entity registry. If AirVisual had been configured previously, new entries will be placed into the entity registry, causing there to be two of each sensor type defined. To address, simply alter the entity_registry.yaml as desired. (@bachya - #12319) (sensor.airvisual docs) (breaking change)
  • +
  • Custom component devs only: voluptuous now requires default values for config keys to be valid values. (@balloob - #12463) (breaking change)
  • +
  • Fixes usps platform. Dependency myusps now leverages Selenium webdriver to overcome login issues. This is a breaking change since the user must now have additional dependencies installed - either google-chrome and chromedriver, or phantomjs. There is a new config option driver that allows the user to specify their preference, though phantomjs is the default. Doc PR forthcoming that will outline choices and make suggestions based on user’s OS. + (@happyleavesaoc - #12465) (usps docs) (breaking change)
  • +
  • LimitlessLED has been converted to assumed state. Will no longer turn the lights off when restarting Home Assistant. Will no longer revert changes made by other controllers. (@amelchio - #12475) (light.limitlessled docs) (breaking change)
  • +
+

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/2018/03/09/release-65/index.html b/blog/2018/03/09/release-65/index.html new file mode 100644 index 0000000000..0fe3ce69ea --- /dev/null +++ b/blog/2018/03/09/release-65/index.html @@ -0,0 +1,474 @@ + + + + + + + + + 0.65: Rename entities, new filter sensor, UpCloud and Channels - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

0.65: Rename entities, new filter sensor, UpCloud and Channels

+
+ + + 20 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+

+

Release 0.65 has arrived and oh boy, is it awesome. First off, in case you have missed the previous release notes and announcements: Starting with this release, Home Assistant has dropped support for Python 3.4. The minimum supported version is now Python 3.5.3. If you are on Hass.io or Docker, you’ll automatically be running the latest and greatest. If you’re on an older Hassbian installation or did your own Linux setup you’ll need to upgrade to at least Python 3.5.3.

+

Naming entities

+

With the introduction of the entity registry in 0.63, Home Assistant is making sure that the same devices always receive the same entity IDs. This release is taking it a step further by allowing users to change the name of a device from the frontend. Changing the name will be instantly applied and overrides whatever name the device is given by the integration. If you want to switch back to the name from the integration, set the name to blank.

+

This feature is, just like the entity registry, only available for integrations that provide unique IDs for their entities. Adding this to each integration is still a work in progress.

+

+ Screencap of interaction with the UI to override the name of a light. + The new entity registry settings page in action. +

+

Filter sensor

+

The filter sensor is a new 2nd order sensor by @dgomes: it will consume data from a sensor entity and apply filters to it. For the initial implementation it comes with Low-pass, Outlier and Throttle filters. Expect more to be added in the future.

+
sensor:
+  - platform: filter
+    name: "filtered realistic humidity"
+    entity_id: sensor.realistic_humidity
+    filters:
+      - filter: outlier
+        window_size: 4
+        radius: 4.0
+      - filter: lowpass
+        time_constant: 10
+        precision: 2
+
+
+

+ Chart showing a humidity sensor with a lot of spikes and a smooth graph produced by the new filter sensor. + Graph showing both the input sensor and the output of the filter sensor. +

+

Light Group

+

We have had some discussion lately and realized that our current group component is very limiting. Extending it would probably lead to more confusion so we’ve decided to take a new approach: groups that are designed to be part of a specific component. The first one in this series comes at the hand of @OttoWinter: the group light (docs).

+

The group light creates a single light inside Home Assistant that is representing a group of lights. All commands will be forwarded and the state is a combination of all the lights.

+
light:
+  - platform: group
+    name: Cool Light Group
+    entities:
+      - light.amazing_light
+      - light.foobar
+      - light.sun
+
+
+

HomeKit

+

HomeKit got some more upgrades. We’ve added support for temperature sensors in Fahrenheit, alarm systems, switches and thermostats. Just a few releases more and we should be able to cover it all.

+

Optional words for the Conversation component

+

The conversation component has always been a great introduction to controlling your house by voice. There is no hotword detection or powerful language engine behind it, but it gives a great intro to what is possible. Starting with this release, it will get a little bit more powerful with the introduction of optional words. To mark a word optional, wrap it in square brackets: Change the light to [the color] {color}.

+
# Example configuration.yaml entry
+conversation:
+  intents:
+    LivingRoomTemperature:
+     - What is the temperature in the living room
+     - What is [the] living room temperature
+
+intent_script:
+  LivingRoomTemperature:
+    speech:
+      text: It is currently  degrees in the living room.
+
+
+

+ Screenshot of the frontend with the conversation panel open. + Have conversations with Home Assistant via the conversation component. +

+

New Platforms

+ +

Release 0.65.1 - March 10

+ +

Release 0.65.2 - March 10

+ +

Release 0.65.3 - March 11

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ +

Breaking Changes

+ +

All changes

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/archives/index.html b/blog/archives/index.html new file mode 100644 index 0000000000..db4a93a70b --- /dev/null +++ b/blog/archives/index.html @@ -0,0 +1,3887 @@ + + + + + + + + + Blog index - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Blog index +

+
+
+
+

2014

+ + +

2015

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

2016

+ + + + + + + + + + + + +
+
+
+ +
+
+

Static website

+
+ + +
    +
  • How-To
  • +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+

Thank You

+
+ + +
    +
  • Community
  • +
+
+
+
+
+
+
+

2017

+ + +
+
+
+ +
+
+

Numbers

+
+ + +
    +
  • Community
  • +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+

Thank You

+
+ + +
    +
  • Community
  • +
+
+
+
+
+
+
+

2018

+ + + + + +
+
+
+ +
+
+

Cloud Update

+
+ + +
    +
  • Cloud
  • +
+
+
+
+
+
+
+ + +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/announcements/atom.xml b/blog/categories/announcements/atom.xml new file mode 100644 index 0000000000..155a22a19f --- /dev/null +++ b/blog/categories/announcements/atom.xml @@ -0,0 +1,251 @@ + + + + <![CDATA[Category: Announcements | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Introducing Home Assistant Cloud]]> + + 2017-12-17T03:00:00+00:00 + https://home-assistant.io/blog/2017/12/17/introducing-home-assistant-cloud + Why not take donations? + +With donations you have to convince people to keep donating and it will be hard to plan around the amount of available money. The biggest concern is what do you do when there is not enough money. We could shut down the servers or again depend on the wallets of our developers. We could run Wikipedia style advertisements for donating, but those are even more annoying than running advertisements. + +## Getting started + +Upgrade Home Assistant to 0.60 and enable the [`cloud`](/components/cloud/) and [`config`](/components/config/) components: + +```yaml +# Example configuration.yaml entry +cloud: +config: +``` + +Now restart Home Assistant and navigate to the configuration panel. It will offer a new cloud section. Here you can create an account and login. Once logged in, your instance will connect to the cloud. + +The next step is to configure Alexa. This can be done by enabling the Home Assistant skill for Alexa and link your Home Assistant cloud account. + +Once you’re done, ask Alexa to discover devices (“Alexa, discover devices”) and you are all set to control them: “Alexa, turn on <device name>”. + +See the [Cloud component configuration](/components/cloud/) to learn how to filter which devices get exposed to Alexa. + +## FAQ + +_Last updated: February 22, 2018_ + +#### I thought the Home Assistant crew didn't like the cloud? + +You are right, [we don't](https://home-assistant.io/blog/2016/01/19/perfect-home-automation/#your-system-should-run-at-home-not-in-the-cloud)! The Home Assistant Cloud is not an alternative to running your local Home Assistant instance. All control and automations are still running locally. + +Instead, the Home Assistant Cloud is an extension of your local instance. It allows to communicate with companies that force us to communicate via a public available cloud endpoint like Amazon Alexa and Google Assistant. + +Home Assistant Cloud is only used to route the messages to your local Home Assistant instance. All messages are processed locally. + +_(Some people have suggested we rename to Home Assistant Bridge to avoid this confusion)_ + +#### Will Home Assistant and Hass.io remain open source? + +Yes. Yes. Yes! Home Assistant is the work of hundreds of developers all working together in creating something amazing. The only thing that will require a subscription is the optional cloud functionality. + +#### Where is the source code for the Alexa skill? + +All messages are processed locally and so the Alexa skill code is part of the Home Assistant code. The Home Assistant Cloud only routes the messages to your local Home Assistant instance. This means that you can audit the source code to check all the things that the cloud can do: + + - [Module that processes incoming cloud messages](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/cloud/iot.py) + - [Alexa Smart Home v3 skill](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/alexa/smart_home.py) + +#### What other features will come to the cloud? + +We have a lot of ideas! We are not going to make any promises but here are some things that we’re looking into: + +- Google Home / Google Assistant Smart Home skill +- Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant. +- Encrypted backups of your Hass.io data +- Text to speech powered by AWS Polly +- Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud. +- IFTTT integration +- Alexa shopping list integration + +#### What countries are supported at launch? + +As of February 2018, we are live in all countries that have Alexa except for Japan (which is under certification). + +#### How is the connection made to the cloud? + +The connection is made using a WebSocket connection over HTTPS. [See the source here](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/cloud/iot.py). + +#### I think that the price is too high for what I get. + +The Home Assistant Cloud functionality is a perk for becoming a supporter of the Home Assistant project. As a supporter you will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. You are not paying to just maintain the cloud servers. + +The perks offered for being a supporter will also extend over time, as noted in [this answer](#what-other-features-will-come-to-the-cloud). + +#### What will the Home Assistant organization do with the funds ? + +The plan is to hire developers to work fulltime on Home Assistant. We have grown a lot in the last 4 years and the work load is pushing the limits of what our core developers can do. Open source burn out is very common ([1], [2]) and we want to avoid this by moving most organization and release chores to a paid position. + +_For more background on these topics, check out [HASS Podcast 15](https://hasspodcast.io/ha015/)._ + +[1]: https://nolanlawson.com/2017/03/05/what-it-feels-like-to-be-an-open-source-maintainer/ +[2]: https://www.kennethreitz.org/essays/the-reality-of-developer-burnout +]]> + + + + <![CDATA[Introducing Hass.io]]> + + 2017-07-25T00:02:05+00:00 + https://home-assistant.io/blog/2017/07/25/introducing-hassio + + +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 ❤️ + + + +#### 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. + +#### 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]. + +#### 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]. + +#### Can I restore a snapshot on a different device? + +Yes, any Hass.io snapshot can be restored on any device. + +#### 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. + +#### 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 +]]>
+
+ + + <![CDATA[1 year and 22 days ago I had an idea...]]> + + 2017-04-15T08:04:05+00:00 + https://home-assistant.io/blog/2017/04/15/ios +

+ +_Please note, you must have Home Assistant 0.42.4 or later installed for the app to function properly._ + +Thanks for everything so far, I'm looking forward to the road that lies ahead for Home Assistant on iOS! + +]]>
+
+ +
diff --git a/blog/categories/announcements/index.html b/blog/categories/announcements/index.html new file mode 100644 index 0000000000..26184aad64 --- /dev/null +++ b/blog/categories/announcements/index.html @@ -0,0 +1,249 @@ + + + + + + + + + Category: Announcements - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/cloud/atom.xml b/blog/categories/cloud/atom.xml new file mode 100644 index 0000000000..20baa61ce7 --- /dev/null +++ b/blog/categories/cloud/atom.xml @@ -0,0 +1,31 @@ + + + + <![CDATA[Category: Cloud | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Cloud Update]]> + + 2018-02-19T01:00:00+00:00 + https://home-assistant.io/blog/2018/02/19/cloud-update + + + + diff --git a/blog/categories/cloud/index.html b/blog/categories/cloud/index.html new file mode 100644 index 0000000000..b01989b460 --- /dev/null +++ b/blog/categories/cloud/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Category: Cloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/community/atom.xml b/blog/categories/community/atom.xml new file mode 100644 index 0000000000..10aa59532f --- /dev/null +++ b/blog/categories/community/atom.xml @@ -0,0 +1,167 @@ + + + + <![CDATA[Category: Community | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Disabling Disqus comments]]> + + 2018-02-09T01:00:00+00:00 + https://home-assistant.io/blog/2018/02/09/disabling-disqus + + + + + <![CDATA[Thank You]]> + + 2017-12-28T22:00:00+00:00 + https://home-assistant.io/blog/2017/12/28/thank-you + + + + + <![CDATA[Translating Home Assistant]]> + + 2017-11-06T01:00:00+00:00 + https://home-assistant.io/blog/2017/11/05/frontend-translations + +The Home Assistant sidebar in 12 different languages +The Home Assistant sidebar in 12 different languages. +

+ +## Translations + +As mentioned in the [0.57 release notes](https://home-assistant.io/blog/2017/11/04/release-57/), Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. [@c727] took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with [Lokalise](https://lokalise.co/) to manage our translations! + +Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our [public signup link](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/), and start translating right away. We’ve created a [translation startup guide](https://home-assistant.io/developers/frontend_translation/) with additional details about how to contribute. Instructions are provided there for how to request a new language. + +Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright! + +[@c727]: https://github.com/c727 +]]>
+
+ + + <![CDATA[Templates, dates and times]]> + + 2017-10-15T06:00:00+00:00 + https://home-assistant.io/blog/2017/10/15/templating-date-time + + +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? `{{ now() }}` 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 `{{ now() }}`. 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: `{{ now().year }}`. 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. + +]]>
+
+ + + <![CDATA[Participating in Hacktoberfest]]> + + 2017-09-29T08:00:00+00:00 + https://home-assistant.io/blog/2017/09/29/hacktoberfest + + + +
diff --git a/blog/categories/community/index.html b/blog/categories/community/index.html new file mode 100644 index 0000000000..e29932eb4f --- /dev/null +++ b/blog/categories/community/index.html @@ -0,0 +1,571 @@ + + + + + + + + + Category: Community - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: Community +

+
+
+
+

2018

+ +

2017

+
+
+
+ +
+
+

Thank You

+
+ + +
    +
  • Community
  • +
+
+
+
+
+
+
+ + + + + + + + + +
+
+
+ +
+
+

Numbers

+
+ + +
    +
  • Community
  • +
+
+
+
+
+
+
+ +

2016

+
+
+
+ +
+
+

Thank You

+
+ + +
    +
  • Community
  • +
+
+
+
+
+
+
+ + + +

2015

+ +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/device-tracking/atom.xml b/blog/categories/device-tracking/atom.xml new file mode 100644 index 0000000000..3799df2fa6 --- /dev/null +++ b/blog/categories/device-tracking/atom.xml @@ -0,0 +1,171 @@ + + + + <![CDATA[Category: Device-Tracking | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[iBeacons: How to track things that can’t track themselves (part II)]]> + + 2016-05-26T11:06:12+00:00 + https://home-assistant.io/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii + Tracking things using iBeacons +In the first part I mentioned that iBeacons just send out *I’m here* packets, and we used this to trigger an update when your phone came close to a fixed beacon. + +But beacons don’t have to be fixed. + +Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an *I’m here* message then it knows the beacon is close. + +If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn't have any tracking technology itself. + +So if you put an iBeacon on your keys or in your car - then you can track them. + +

+ + Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective! +

+ + + +It’s easier to set up OwnTracks and HA to track a mobile beacon than the fixed beacon I discussed in Part 1, because you only need to tell OwnTracks about your iBeacon. You don’t need to configure HA at all. + +

OwnTracks currently only supports mobile beacons on iOS.

+ +You set up the beacon the same way as we discussed in part 1. The only difference is that instead of calling the region the name of a location (eg -drive) you call it the name of the device you want to track (eg -keys). Remember the leading ‘-’ that makes the connection more reliable. + +

+ +

+ +Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. + +Because you turned *Share* on for the region, when OwnTracks sees the beacon it will send HA a message. HA will use this message to add the beacon as a tracked device if it hasn’t seen it before. So you should see a new device appear in HA called device_tracker.beacon_[name] - and its location will be where your phone thought it was when it last saw the beacon. + +

+ +

+ +If your phone moves and sends HA a new location while it is still in range of the beacon - HA will update the location of the beacon. So if go for a drive in your car - you will see both your phone and the *device_tracker.beacon_car* move together. + +If you park your car and go shopping - *device_tracker.beacon_car* will stop moving. + +With the basic tracking working - you can use automation to do things like open your gates if your car comes home + +```yaml +automation: + - alias: 'Open gate' + trigger: + - platform: state + entity_id: device_tracker.beacon_car + from: 'not_home' + to: 'home' + condition: + - condition: state + entity_id: switch.gate + state: 'off' + action: + service: switch.turn_on + entity_id: switch.gate +``` + +Or warn you if you leave your keys behind + +```yaml +automation: + - alias: 'Forgotten keys' + trigger: + platform: template + value_template: '{{ states.device_tracker.greg_gregphone.state != states.device_tracker.beacon_keys.state}}' + condition: + condition: template + value_template: '{{ states.device_tracker.greg_gregphone.state != "home" }}' + action: + service: script.turn_on + entity_id: script.send_key_alert + + - alias: 'Forgotten keys - cancel' + trigger: + platform: template + value_template: '{{ states.device_tracker.greg_gregphone.state == states.device_tracker.beacon_keys.state }}' + condition: + - condition: state + entity_id: script.send_key_alert + state: 'on' + action: + service: script.turn_off + entity_id: script.send_key_alert +``` + +```yaml +script: + send_key_alert: + sequence: + - delay: + minutes: 2 + - service: notify.notify + data: + message: 'You forgot your keys' + target: 'device/gregs_iphone' +``` + + +(The delay is needed for two reasons: - +1. HA updates the beacon and phone locations at slightly different times - so you don’t want the automation to trigger in the gap between the updates +2. I’ve found that beacons (especially the low power Estimote Nearables) can get disconnected for a few seconds so it’s best to wait a minute or so before deciding that you’ve left your keys behind) + + +### Using both types of iBeacons at the same time +Of course you can use both fixed and mobile beacons at the same time. I want my gates to open when I arrive home in the car - so I use an iBeacon in the car so that I can track the car, and an iBeacon on my drive so that a location update is triggered when I arrive. I've been experimenting with a high power beacon in a waterproof box on my drive which seems to work well to notice when I get home. + +

+ +

+Long range / High power beacon + +

+ +

+Waterproof beacon + + +### Buying Beacons +This isn’t a buyer's guide, but I just wanted to mention the iBeacons I’ve been using. I think you should be able to use any iBeacon with HA and OwnTracks. You generally can’t buy beacons in your local electronics shop - so I just wanted to briefly mention the two suppliers I’ve used so far. + +I’ve bought quite a few iBeacons from a company called [Blue Sense Networks](http://bluesensenetworks.com/). I work in the tech startup sector in the UK so I partly chose them because they are a local start-up who seemed worth supporting. The products, support and software all seem good. I use a number of their beacons - from a simple USB dongle, to a long range beacon. All their products have batteries that can be changed (or no batteries in the case of the externally powered USB device) - and you can configure all the parameters you’d want to using their software. I had one software issue, support got back to me at a weekend(!) - and the issue was resolved with a software release two days later. + +All the beacons seem fine - and the long range unit does work over a longer range than my other beacons. + +I bought some other beacons from a US/Polish startup called [Estimote](http://estimote.com/), who I think are better known. I bought a developer pack of 10 of their *nearables* which as well as being iBeacons also send out other data (orientation and motion) using their own protocol. This is interesting if you’re developing your own application, but for OwnTracks and HA they are just regular beacons. They are small and self adhesive - so you can stick them to things (like your keys). You can’t change all the parameters on these devices (UUID/Major/Minor are fixed) - and the batteries can’t be replaced. I also killed one of the estimote beacons (I assume the battery died) after I carried it around for a few months and dropped it many times! On the other hand they are well priced, small and waterproof! + +I’ve mainly used these as *devices to track* rather that *location* beacons. Estimote also sell some slightly larger iBeacons with replaceable batteries. Estimote support responded quickly and were helpful when I couldn’t work out how to edit their beacon’s parameters (although the answer was *you can’t yet*). + +The larger Blue Sense Network beacons seem to be better at maintaining a connection that the Estimotes - although that might be because I’m reluctant to turn the power to maximum and reduce the gap between sending packets on the Estimotes where I can’t replace the batteries! + +### Conclusion +As I said in [part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better), I’ve found iBeacons to be a good way of improving presence detection. I also used them to track devices like my car and my keys that can’t track themselves. + +I'm still experimenting, so I hope I can do more with iBeacons. I hope I've encouraged you do so the same. If you do please share your experiences. + +### Notes + +Please see the [notes at the end of Part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/#tips) for documentation information. + + +]]>
+
+ +
diff --git a/blog/categories/device-tracking/index.html b/blog/categories/device-tracking/index.html new file mode 100644 index 0000000000..b8057d22a2 --- /dev/null +++ b/blog/categories/device-tracking/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Category: Device-Tracking - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml new file mode 100644 index 0000000000..d59b1d09eb --- /dev/null +++ b/blog/categories/esp8266/atom.xml @@ -0,0 +1,494 @@ + + + + <![CDATA[Category: ESP8266 | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[ESP8266 and MicroPython - Part 2]]> + + 2016-08-31T04:17:25+00:00 + https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2 + +So, part 1 of [ESP8266 and MicroPython](/blog/2016/07/28/esp8266-and-micropython-part1/) was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance. + + + +Beside [HTTP POST](https://en.wikipedia.org/wiki/POST_(HTTP)) requests, MQTT is the quickest way (from the author's point of view) to publish information with DIY devices. + +You have to make a decision: Do you want to pull or to [poll](https://en.wikipedia.org/wiki/Polling_(computer_science)) the information for the sensor? For slowly changing values like temperature it's perfectly fine to wait a couple of seconds to retrieve the value. If it's a motion detector the state change should be available instantly in Home Assistant or it could be missed. This means the sensor must take initiative and send the data to Home Assistant. + +An example for pulling is [aREST](/components/sensor.arest/). This is a great way to work with the ESP8266 based units and the Ardunio IDE. + +### MQTT + +You can find a simple examples for publishing and subscribing with MQTT in the [MicroPython](https://github.com/micropython/micropython-lib) library overview in the section for [umqtt](https://github.com/micropython/micropython-lib/tree/master/umqtt.simple). + +The example below is adopted from the work of [@davea](https://github.com/davea) as we don't want to re-invent the wheel. The configuration feature is crafty and simplyfies the code with the usage of a file called `/config.json` which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds. + + +```python +import machine +import time +import ubinascii +import webrepl + +from umqtt.simple import MQTTClient + +# These defaults are overwritten with the contents of /config.json by load_config() +CONFIG = { + "broker": "192.168.1.19", + "sensor_pin": 0, + "client_id": b"esp8266_" + ubinascii.hexlify(machine.unique_id()), + "topic": b"home", +} + +client = None +sensor_pin = None + +def setup_pins(): + global sensor_pin + sensor_pin = machine.ADC(CONFIG['sensor_pin']) + +def load_config(): + import ujson as json + try: + with open("/config.json") as f: + config = json.loads(f.read()) + except (OSError, ValueError): + print("Couldn't load /config.json") + save_config() + else: + CONFIG.update(config) + print("Loaded config from /config.json") + +def save_config(): + import ujson as json + try: + with open("/config.json", "w") as f: + f.write(json.dumps(CONFIG)) + except OSError: + print("Couldn't save /config.json") + +def main(): + client = MQTTClient(CONFIG['client_id'], CONFIG['broker']) + client.connect() + print("Connected to {}".format(CONFIG['broker'])) + while True: + data = sensor_pin.read() + client.publish('{}/{}'.format(CONFIG['topic'], + CONFIG['client_id']), + bytes(str(data), 'utf-8')) + print('Sensor state: {}'.format(data)) + time.sleep(5) + +if __name__ == '__main__': + load_config() + setup_pins() + main() +``` + +Subscribe to the topic `home/#` or create a [MQTT sensor](/components/sensor.mqtt/) to check if the sensor values are published. + +```bash +$ mosquitto_sub -h 192.168.1.19 -v -t "home/#" +``` + +```yaml +sensor: + - platform: mqtt + state_topic: "home/esp8266_[last part of the MAC address]" + name: "MicroPython" +``` + +[@davea](https://github.com/davea) created [sonoff-mqtt](https://github.com/davea/sonoff-mqtt). This code will work on ESP8622 based devices too and shows how to use a button to control a relay. + +]]> + + + + <![CDATA[ESP8266 and MicroPython - Part 1]]> + + 2016-07-28T04:00:00+00:00 + https://home-assistant.io/blog/2016/07/28/esp8266-and-micropython-part1 + +The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The [documentation](http://docs.micropython.org/en/latest/esp8266/esp8266_contents.html) covers a lot of ground. This post is providing only a little summary which should get you started. + +Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for [download](https://micropython.org/download/#esp8266). + + + +The easiest way is to use [esptool.py](https://github.com/themadinventor/esptool) for firmware handling tasks. First erase the flash: + +```bash +$ sudo python esptool.py --port /dev/ttyUSB0 erase_flash +esptool.py v1.0.2-dev +Connecting... +Erasing flash (this may take a while)... +``` + +and then load the firmware. You may adjust the file name of the firmware binary. + +```bash +$ sudo python esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=8m 0 esp8266-2016-07-10-v1.8.2.bin +esptool.py v1.2-dev +Connecting... +Running Cesanta flasher stub... +Flash params set to 0x0020 +Writing 540672 @ 0x0... 540672 (100 %) +Wrote 540672 bytes at 0x0 in 13.1 seconds (330.8 kbit/s)... +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 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 +#4 ets_task(4020e374, 29, 3fff70e8, 10) +WebREPL daemon started on ws://192.168.4.1:8266 +Started webrepl in setup mode +could not open file 'main.py' for reading + +#5 ets_task(4010035c, 3, 3fff6360, 4) +MicroPython v1.8.2-9-g805c2b9 on 2016-07-10; ESP module with ESP8266 +Type "help()" for more information. +>>> +``` + +

+The public build of the firmware may be different than the firmware distributed to the backers of the Kickstarter campaign. Especially in regard of the [available modules](http://docs.micropython.org/en/latest/esp8266/py-modindex.html), turned on debug messages, and alike. Also, the WebREPL may not be started by default. +

+ +Connect a LED to pin 5 (or another pin of your choosing) to check if the ESP8266 is working as expected. + +```python +>>> import machine +>>> pin = machine.Pin(5, machine.Pin.OUT) +>>> pin.high() +``` + +You can toogle the LED by changing its state with `pin.high()` and `pin.low()`. + +Various ESP8266 development board are shipped with an onboard photocell or a light dependent resistors (LDR) connected to the analog pin of your ESP8266 check if you are able to obtain a value. + +```python +>>> import machine +>>> brightness = machine.ADC(0) +>>> brightness.read() +``` + +Make sure that you are familiar with REPL and WebREPL because this will be needed soon. Keep in mind the password for the WebREPL access. + +Read the [instructions](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html) about how to setup your wireless connection. Basically you need to upload a `boot.py` file to the microcontroller and this file is taking care of the connection setup. Below you find a sample which is more or less the same as shown in the [documentation](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html#configuration-of-the-wifi). + +```python +def do_connect(): + import network + + SSID = 'SSID' + PASSWORD = 'PASSWORD' + + sta_if = network.WLAN(network.STA_IF) + ap_if = network.WLAN(network.AP_IF) + if ap_if.active(): + ap_if.active(False) + if not sta_if.isconnected(): + print('connecting to network...') + sta_if.active(True) + sta_if.connect(SSID, PASSWORD) + while not sta_if.isconnected(): + pass + print('Network configuration:', sta_if.ifconfig()) +``` + +Upload this file with `webrepl_cli.py` or the WebREPL: + +```bash +$ python webrepl_cli.py boot.py 192.168.4.1:/boot.py +``` + +If you reboot, you should see your current IP address in the terminal. + +```bash +>>> Network configuration: ('192.168.0.10', '255.255.255.0', '192.168.0.1', '192.168.0.1') +``` + +First let's create a little consumer for Home Assistant sensor's state. The code to place in `main.py` is a mixture of code from above and the [RESTful API](/developers/rest_api/) of Home Assistant. If the temperature in the kitchen is higher than 20 °C then the LED connected to pin 5 is switched on. + +

+If a module is missing then you need to download it from the [MicroPython Library overview](https://github.com/micropython/micropython-lib) and upload it to the ESP8266 with `webrepl_cli.py` manually. +

+ +```python +# Sample code to request the state of a Home Assistant entity. + +API_PASSWORD = 'YOUR_PASSWORD' +URL = 'http://192.168.0.5:8123/api/states/' +ENTITY = 'sensor.kitchen_temperature' +TIMEOUT = 30 +PIN = 5 + +def get_data(): + import urequests + url = '{}{}'.format(URL, ENTITY) + headers = {'x-ha-access': API_PASSWORD, + 'content-type': 'application/json'} + resp = urequests.get(URL, headers=headers) + return resp.json()['state'] + +def main(): + import machine + import time + + pin = machine.Pin(PIN, machine.Pin.OUT) + while True: + try: + if int(get_data()) >= 20: + pin.high() + else: + pin.low() + except TypeError: + pass + time.sleep(TIMEOUT) + +if __name__ == '__main__': + print('Get the state of {}'.format(ENTITY)) + main() +``` + +Upload `main.py` the same way as `boot.py`. After a reboot (`>>> import machine` and `>>> machine.reboot()`) or power-cycling your physical notifier is ready. + +If you run into trouble, press "Ctrl+c" in the REPL to stop the execution of the code, enter `>>> import webrepl` and `>>> webrepl.start()`, and upload your fixed file. + +]]>
+
+ + + <![CDATA[Report the temperature with ESP8266 to MQTT]]> + + 2015-10-11T19:10:00+00:00 + https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt + + +Picture of the final setup (+ 2 LED for decoration) +

+ +

+ +Home Assistant will keep track of historical values and allow you to integrate it into automation. +

+ + + +### Components + +I've been using Adafruit for my shopping: + + - [Adafruit HUZZAH ESP8266 Breakout](http://www.adafruit.com/product/2471) ([assembly instructions](https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly)) + - [Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board](http://www.adafruit.com/product/2635) ([assembly instructions](https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly)) + - [MQTT server](/components/mqtt/#picking-a-broker) + +_Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires, soldering iron + wire, Serial USB cable._ + +### Alternatives + +Since this article has been published the HDC1008 has been discontinued. Updated sketches are available for the following alternatives: + + - [DHT22 sensor](https://www.adafruit.com/product/385) and [updated sketch](https://gist.github.com/balloob/1176b6d87c2816bd07919ce6e29a19e9). + - [BME280 sensor](https://www.adafruit.com/product/2652) and [updated sketch](https://gist.github.com/mtl010957/9ee85fb404f65e15c440b08c659c0419). + +### Connections + +On your breadboard, make the following connections from your ESP8266 to the HDC1008: + +| ESP8266 | HDC1008 | +| ------- | ------- | +| GND | GND +| 3V | Vin +| 14 | SCL +| #2 | SDA + +_I picked `#2` and `14` myself, you can configure them in the sketch._ + +### Preparing your IDE + +Follow [these instructions](https://github.com/esp8266/Arduino#installing-with-boards-manager) on how to install and prepare the Arduino IDE for ESP8266 development. + +After you're done installing, open the Arduino IDE, in the menu click on `sketch` -> `include library` -> `manage libraries` and install the following libraries: + +- PubSubClient by Nick 'O Leary +- Adafruit HDC1000 + +### Sketch + +If you have followed the previous steps, you're all set. + + - Open Arduino IDE and create a new sketch (`File` -> `New`) + - Copy and paste the below sketch to the Arduino IDE + - Adjust the values line 6 - 14 to match your setup + - Optional: If you want to connect to an MQTT server without a username or password, adjust line 62. + - To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode. + - Press the upload button in Arduino IDE + - Open the serial monitor (`Tools` -> `Serial Monitor`) to see the output from your device + +This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last reported value. Reports to the MQTT broker are sent with retain set to `True`. This means that anyone connecting to the MQTT topic will automatically be notified of the last reported value. + +```cpp +#include +#include +#include +#include + +#define wifi_ssid "YOUR WIFI SSID" +#define wifi_password "WIFI PASSWORD" + +#define mqtt_server "YOUR_MQTT_SERVER_HOST" +#define mqtt_user "your_username" +#define mqtt_password "your_password" + +#define humidity_topic "sensor/humidity" +#define temperature_topic "sensor/temperature" + +WiFiClient espClient; +PubSubClient client(espClient); +Adafruit_HDC1000 hdc = Adafruit_HDC1000(); + +void setup() { + Serial.begin(115200); + setup_wifi(); + client.setServer(mqtt_server, 1883); + + // Set SDA and SDL ports + Wire.begin(2, 14); + + // Start sensor + if (!hdc.begin()) { + Serial.println("Couldn't find sensor!"); + while (1); + } +} + +void setup_wifi() { + delay(10); + // We start by connecting to a WiFi network + Serial.println(); + Serial.print("Connecting to "); + Serial.println(wifi_ssid); + + WiFi.begin(wifi_ssid, wifi_password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + // If you do not want to use a username and password, change next line to + // if (client.connect("ESP8266Client")) { + if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) { + Serial.println("connected"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +bool checkBound(float newValue, float prevValue, float maxDiff) { + return !isnan(newValue) && + (newValue < prevValue - maxDiff || newValue > prevValue + maxDiff); +} + +long lastMsg = 0; +float temp = 0.0; +float hum = 0.0; +float diff = 1.0; + +void loop() { + if (!client.connected()) { + reconnect(); + } + client.loop(); + + long now = millis(); + if (now - lastMsg > 1000) { + lastMsg = now; + + float newTemp = hdc.readTemperature(); + float newHum = hdc.readHumidity(); + + if (checkBound(newTemp, temp, diff)) { + temp = newTemp; + Serial.print("New temperature:"); + Serial.println(String(temp).c_str()); + client.publish(temperature_topic, String(temp).c_str(), true); + } + + if (checkBound(newHum, hum, diff)) { + hum = newHum; + Serial.print("New humidity:"); + Serial.println(String(hum).c_str()); + client.publish(humidity_topic, String(hum).c_str(), true); + } + } +} +``` + +### Configuring Home Assistant + +The last step is to integrate the sensor values into Home Assistant. This can be done by setting up Home Assistant to connect to the MQTT broker and subscribe to the sensor topics. + +```yaml +mqtt: + broker: YOUR_MQTT_SERVER_HOST + username: your_username + password: your_password + +sensor: + platform: mqtt + name: "Temperature" + state_topic: "sensor/temperature" + qos: 0 + unit_of_measurement: "ºC" + +sensor 2: + platform: mqtt + name: "Humidity" + state_topic: "sensor/humidity" + qos: 0 + unit_of_measurement: "%" +``` +]]>
+
+ +
diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html new file mode 100644 index 0000000000..a84ebd1439 --- /dev/null +++ b/blog/categories/esp8266/index.html @@ -0,0 +1,257 @@ + + + + + + + + + Category: ESP8266 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml new file mode 100644 index 0000000000..d6bd408dde --- /dev/null +++ b/blog/categories/how-to/atom.xml @@ -0,0 +1,618 @@ + + + + <![CDATA[Category: How-To | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Set up Hass.io on top of a virtual machine]]> + + 2017-11-29T06:00:00+00:00 + https://home-assistant.io/blog/2017/11/29/hassio-virtual-machine + + +Assuming that you already have setup `libvirtd`. You might need to install `virt-builder` and `virt-viewer` additionally. + +```bash +$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer +``` + +We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use `$ virt-builder --list` to get an overview about what's operating systems are available if you prefer to use a different system. + +```bash +$ sudo virt-builder debian-9 \ + --output /var/lib/libvirt/images/hassio.img \ + --format qcow2 \ + --size 10G \ + --root-password password:test123 \ + --hostname hassio \ + --firstboot-command "dpkg-reconfigure openssh-server" +[...] +[ 147.6] Finishing off + Output file: /var/lib/libvirt/images/hassio.img + Output size: 10.0G + Output format: qcow2 + Total usable space: 9.3G + Free space: 8.1G (87%) +``` + +Now, we are making our new virtual machine available for `libvirtd`. If you get an error that the OS is unknown, use `$ osinfo-query os` to get the name to use with `--os-variant`. To access the virtual machine is connected to the bridge `bridge0`. + +```bash +$ sudo virt-install --name hassio --import --ram 1024 \ + --os-variant debian9 -w bridge=bridge0 \ + --autostart --disk /var/lib/libvirt/images/hassio.img +``` + +

+ + Hass.io virtual machine in Virtual Machine Manager +

+ +Depending on your preferences you can use the Virtual Machine Manager (`virt-manager`) or `virsh` to manage the created virtual machine. Log in and create an user with `# useradd ha` and set a password with `# passwd ha`. We will need that user to make a SSH connection to the virtual machine. + +Log in as `ha` with the given password. If your are using the default network of `libvirtd` then the DHCP range is defined in `/var/lib/libvirt/dnsmasq/default.conf`. In this guide the virtual machine is present at 192.168.0.109. + +```bash +$ ssh ha@192.168.0.109 +ha@192.168.0.109's password: +Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 +[...] +$ +``` + +Install the requirements after you switch the user to `root`. + +```bash +$ su +Password: +root@hassio:/home/ha# +root@hassio:/home/ha# apt-get update +root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \ + apt-transport-https ca-certificates +``` + +We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages. + +```bash +root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg +root@hassio:/home/ha# apt-key add gpg +OK +root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list +root@hassio:/home/ha# apt-get update +``` + +Now, it's possible to install a current release of [Docker](https://www.docker.com/). + +```bash +root@hassio:/home/ha# apt-get -y install docker-ce +``` + +Start `docker` and enable it. + +```bash +root@hassio:/home/ha# systemctl start docker && systemctl enable docker +``` + +An [installation script](https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio) will take care about the setup of all moving parts. + +```bash +root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash - +[INFO] Install supervisor docker +[INFO] Install generic HostControl +[INFO] Install startup scripts +[INFO] Init systemd +Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service. +[INFO] Start services +``` + +If it's done, then there will be two new containers. + +```bash +root@hassio:/home/ha# docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +ada5bbfc74f0 homeassistant/qemux86-64-homeassistant "/usr/bin/entry.sh..." 4 minutes ago Up 4 minutes homeassistant +5954ac452ffc homeassistant/amd64-hassio-supervisor "/usr/bin/entry.sh..." 7 minutes ago Up 7 minutes hassio_supervisor +``` + +After a connection to the container which is containing Home Assistant is made, you will see the log output. + +```bash +root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0 +2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling + + Hass.io overview +

+ +Keep in mind that there are limitations with this approach. Not all [add-ons](/addons/) will work and some don't make sense to use as the hardware is not present. E.g., use the [SSH community add-on](https://github.com/hassio-addons/addon-ssh) instead of the default [SSH add-on](/addons/ssh/). + +]]>
+
+ + + <![CDATA[Secure remote access to Home Assistant using Tor]]> + + 2017-11-12T08:00:00+00:00 + https://home-assistant.io/blog/2017/11/12/tor + + +## Setting up Tor + +Our [documentation](/docs/ecosystem/tor/) provides a detailed guide about setting up a [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en). The setup is straight-forward: + +1. Install Tor. On a Debian-based system: `$ sudo apt-get install tor`. On Fedora: `$ sudo dnf install tor` +2. Modify Tor's main configuration file `/etc/tor/torrc` to include the following lines: + + ```bash + ############### This section is just for location-hidden services ### + + ## Once you have configured a hidden service, you can look at the + ## contents of the file ".../hidden_service/hostname" for the address + ## to tell people. + ... + HiddenServiceDir /var/lib/tor/homeassistant/ + HiddenServicePort 80 127.0.0.1:8123 + ... + ``` +3. Restart Tor: `$ sudo systemctl restart tor` +4. The Tor-generated hostname file contains the hostname you need to access your installation. + + ```bash + $ sudo cat /var/lib/tor/homeassistant/hostname + abcdef1234567890.onion + ``` + +## Tor add-on for Hass.io + +[Franck Nijhof (@frenck)](https://github.com/frenck) created the [Tor add-on](https://github.com/hassio-addons/addon-tor) for [Hass.io](/hassio/). This add-on makes the installation and the setup extremely simple. Go to the **Hass.io** panel, then to the **Store**, copy `https://github.com/hassio-addons/repository` into the text box of **Add-On Repositories** and save it. + +A new entry **Tor** will show-up in the list of add-ons. Click on it to install it. The configuration is done in **Options**. Please refer to the [Configuration documentation](https://github.com/hassio-addons/addon-tor#configuration) for further details. A possible configuration could look like the sample below (which is the default configuration). + +```json +{ + "log_level": "info", + "socks": false, + "hidden_services": true, + "stealth": false, + "client_names": [], + "ports": [ + "8123:80" + ] +} +``` + +When you are done, press **Save** and then **Start**. In the **Logs** section, you can see what the add-on is doing. Watch out for an entry like the one below, which will tell you your hostname on the Tor network. + +```bash +INFO: ----------------------------------------------------------- +INFO: Your Home Assistant instance is available on Tor! +INFO: Address: abcdef1234567890.onion +INFO: ----------------------------------------------------------- +``` + +Don't worry if you missed it, restarting the add-on will display it again. The details are also stored and available in the `/ssl/tor/hidden_service/hostname` file. + +## Tor clients + +To access you Home Assistant via the Tor Hidden Service, you will need a Tor client. There are multiple clients, for different devices and platforms, available. The [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) is by far the simplest option, which is available for Windows, MacOS & Linux. + +Simply download and install the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en), start it, and enter the "dot onion" address you've gained from the earlier steps (`abcdef1234567890.onion` in this case). Voila! + +Some other clients: + +- [Orbot](https://guardianproject.info/apps/orbot/) for Android +- [Orfox](https://play.google.com/store/apps/details?id=info.guardianproject.orfox&hl=nl) for Android +- [Onion Browser](https://mike.tig.as/onionbrowser/) for iOS + +## Cranking up security + +The setup described in this blog post is easy and relatively secure, but anyone who knows your `.onion` address can still connect to your Home Assistant instance (Remember to use passwords!). With all of the [discussion](https://blog.torproject.org/quick-simple-guide-tor-and-internet-things-so-far) about putting your IoT on the Tor Network, maybe you want to add an extra layer of defense, especially if you’re going to be the only one that uses it. Tor offers an additional layer of security, called "Hidden Service Authentication", usually referred to as "Stealth"-mode. + +This "Stealth"-mode adds an extra layer of security to your Hidden Service by only responding to a client that passes a unique secret cookie as it connects. Obviously, this requires additional configuration on the Tor client applications. + +Additional information can be found in the [Tor documentation](/docs/ecosystem/tor/) and the [Tor add-on repository](https://github.com/hassio-addons/addon-tor), including how to setup the "Stealth"-mode. The Tor Project itself provides details about a variaty of topics in their [documentation](https://www.torproject.org/docs/documentation.html.en). +]]> + + + + <![CDATA[Home Assistant and The Things Network (TTN)]]> + + 2017-11-10T12:00:00+00:00 + https://home-assistant.io/blog/2017/11/10/ttn-with-mqtt + + +## Subscribe to the TTN Broker + +To check what your devices are sending, subscribe to the topic `+/devices/+/up` with a command-line tool like `mosquitto_sub`. The `` is the postfix of the **Handler** entry in your **Application overview**. `` is the **Application ID** and `` is your access key. + +```bash +$ mosquitto_sub -v -h .thethings.network -t '+/devices/+/up' -u '' -P '' +{ + "app_id": "ha-demo", + "dev_id": "device01", + "hardware_serial": "AJDJENDNHRBFBBT", + "port": 1, + [...] +``` + +The payload contains details about the device itself and the sensor data. The sensor data is stored in `payload_fields`. Depending on the device configuration it may contain a single value or multiple values. + +## The relay + +To be able to work locally with the MQTT data that is received from the devices connected to TTN, we need to transfer it to the local broker. With this simple script below all messages from a given device are re-published on your local MQTT broker after they are received. Modify the script with your details as outlined in the previous section. + +```python +"""Relay MQTT messages from The Things Network to a local MQTT broker.""" +import paho.mqtt.client as mqtt +import paho.mqtt.publish as publish + +DEVICE_NAME = '' + +TTN_BROKER = '.thethings.network' +TTN_USERNAME = '' +TTN_PASSWORD = '' +TTN_TOPIC = '+/devices/{}/up'.format(DEVICE_NAME) + +LOCAL_BROKER = '192.168.0.2' +LOCAL_TOPIC = 'home/ttn/garden_temp' + + +def on_connect(client, userdata, flags, rc): + """Subscribe to topic after connection to broker is made.""" + print("Connected with result code", str(rc)) + client.subscribe(TTN_TOPIC) + + +def on_message(client, userdata, msg): + """Relay message to a different broker.""" + publish.single( + LOCAL_TOPIC, payload=msg.payload, qos=0, retain=False, + hostname=LOCAL_BROKER, port=1883, client_id='ttn-local', + keepalive=60, will=None, auth=None, tls=None, protocol=mqtt.MQTTv311) + + +client = mqtt.Client() +client.username_pw_set(TTN_USERNAME, password=TTN_PASSWORD) +client.on_connect = on_connect +client.on_message = on_message +client.connect(TTN_BROKER, 1883, 60) + +client.loop_forever() +``` + +Save it and run it. As soon as a MQTT message is received from your device you should see it on your local broker (here 192.168.0.2) if you subscribe to `#` or the topic given in the script above `home/ttn/garden_temp`. + +```bash +$ mosquitto_sub -h 192.168.0.2 -t "#" -d +``` + +## The sensor + +All we would need now, is a [`mqtt` sensor](/components/sensor.mqtt/) with a `value_template`. With a sophisticated custom sensor it would be possible to displaying a little more than just the state. The device is only sending the temperature `{"temperature": 7.5}` but there are other details available which the sensor should show. + +```python +"""Support for The Things Network MQTT sensors.""" +import asyncio +from datetime import timedelta +import json +import logging + +import voluptuous as vol + +import homeassistant.components.mqtt as mqtt +from homeassistant.components.mqtt import CONF_STATE_TOPIC +from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT +from homeassistant.core import callback +import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity import Entity + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_NAME = 'MQTT TTN Sensor' +DEFAULT_FORCE_UPDATE = False +DEPENDENCIES = ['mqtt'] + +PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, + vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string, + +}) + + +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): + """Set up the TTN MQTT Sensor.""" + async_add_devices([MqttTtnSensor( + config.get(CONF_NAME), config.get(CONF_STATE_TOPIC), + config.get(CONF_UNIT_OF_MEASUREMENT)) + ]) + + +class MqttTtnSensor(Entity): + """Representation of a sensor.""" + + def __init__(self, name, state_topic, unit_of_measurement): + """Initialize the sensor.""" + self._state = None + self._name = name + self._unit_of_measurement = unit_of_measurement + self._attributes = {} + self._state_topic = state_topic + + def async_added_to_hass(self): + """Subscribe to MQTT events.""" + @callback + def message_received(topic, payload, qos): + """Handle new MQTT messages.""" + + try: + data = json.loads(payload) + except json.JSONDecodeError: + _LOGGER.error("Invalid JSON data received: %s", data) + + self._state = data['payload_fields'][next( + iter(data['payload_fields']))] + self._attributes = data + del self._attributes['payload_fields'] + del self._attributes['metadata'] + self.async_schedule_update_ha_state() + + return mqtt.async_subscribe( + self.hass, self._state_topic, message_received, 0) + + @property + def should_poll(self): + """No polling needed.""" + return False + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def unit_of_measurement(self): + """Return the unit this state is expressed in.""" + return self._unit_of_measurement + + @property + def state_attributes(self): + """Return the attributes of the entity.""" + return self._attributes + + @property + def state(self): + """Return the state of the entity.""" + return self._state +``` + +Store it in `/custom_components/sensor/mqtt_ttn.py` and it will handle the messages. + +## The configuration + +Now create the [`mqtt_ttn` sensor](/components/sensor.mqtt/) entry for your device. + +``` +sensor: + - platform: mqtt_ttn + name: TTN Sensor + state_topic: "home/ttn/garden_temp" +``` + +This solution is not production-ready, scalable or stable but it could fill the gape till Home Assistant is able to connect to multiple MQTT brokers. If you have multiple devices relay all messages to your local broker and add a configuration variable to `mqtt_ttn` sensor which allows you to select the device. +]]> + + + + <![CDATA[Home Assistant and SSH]]> + + 2017-11-02T08:00:00+00:00 + https://home-assistant.io/blog/2017/11/02/secure-shell-tunnel + + +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. + +]]> + + + + <![CDATA[Home Assistant Demo]]> + + 2017-10-28T08:00:00+00:00 + https://home-assistant.io/blog/2017/10/28/demo + + + Home Assistant's online demo +

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

+ +## `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: + + +```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 +``` + + +## 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/blog/categories/how-to/index.html b/blog/categories/how-to/index.html new file mode 100644 index 0000000000..ae46b522a4 --- /dev/null +++ b/blog/categories/how-to/index.html @@ -0,0 +1,831 @@ + + + + + + + + + Category: How-To - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: How-To +

+
+
+
+

2017

+ + + + + + + + + + + + +

2016

+ + + + + + + + +
+
+
+ +
+
+

Static website

+
+ + +
    +
  • How-To
  • +
+
+
+
+
+
+
+ + +

2015

+ + + + + + + +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/ibeacons/atom.xml b/blog/categories/ibeacons/atom.xml new file mode 100644 index 0000000000..bc6237b028 --- /dev/null +++ b/blog/categories/ibeacons/atom.xml @@ -0,0 +1,307 @@ + + + + <![CDATA[Category: iBeacons | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[iBeacons: How to track things that can’t track themselves (part II)]]> + + 2016-05-26T11:06:12+00:00 + https://home-assistant.io/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii + Tracking things using iBeacons +In the first part I mentioned that iBeacons just send out *I’m here* packets, and we used this to trigger an update when your phone came close to a fixed beacon. + +But beacons don’t have to be fixed. + +Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an *I’m here* message then it knows the beacon is close. + +If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn't have any tracking technology itself. + +So if you put an iBeacon on your keys or in your car - then you can track them. + +

+ + Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective! +

+ + + +It’s easier to set up OwnTracks and HA to track a mobile beacon than the fixed beacon I discussed in Part 1, because you only need to tell OwnTracks about your iBeacon. You don’t need to configure HA at all. + +

OwnTracks currently only supports mobile beacons on iOS.

+ +You set up the beacon the same way as we discussed in part 1. The only difference is that instead of calling the region the name of a location (eg -drive) you call it the name of the device you want to track (eg -keys). Remember the leading ‘-’ that makes the connection more reliable. + +

+ +

+ +Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. + +Because you turned *Share* on for the region, when OwnTracks sees the beacon it will send HA a message. HA will use this message to add the beacon as a tracked device if it hasn’t seen it before. So you should see a new device appear in HA called device_tracker.beacon_[name] - and its location will be where your phone thought it was when it last saw the beacon. + +

+ +

+ +If your phone moves and sends HA a new location while it is still in range of the beacon - HA will update the location of the beacon. So if go for a drive in your car - you will see both your phone and the *device_tracker.beacon_car* move together. + +If you park your car and go shopping - *device_tracker.beacon_car* will stop moving. + +With the basic tracking working - you can use automation to do things like open your gates if your car comes home + +```yaml +automation: + - alias: 'Open gate' + trigger: + - platform: state + entity_id: device_tracker.beacon_car + from: 'not_home' + to: 'home' + condition: + - condition: state + entity_id: switch.gate + state: 'off' + action: + service: switch.turn_on + entity_id: switch.gate +``` + +Or warn you if you leave your keys behind + +```yaml +automation: + - alias: 'Forgotten keys' + trigger: + platform: template + value_template: '{{ states.device_tracker.greg_gregphone.state != states.device_tracker.beacon_keys.state}}' + condition: + condition: template + value_template: '{{ states.device_tracker.greg_gregphone.state != "home" }}' + action: + service: script.turn_on + entity_id: script.send_key_alert + + - alias: 'Forgotten keys - cancel' + trigger: + platform: template + value_template: '{{ states.device_tracker.greg_gregphone.state == states.device_tracker.beacon_keys.state }}' + condition: + - condition: state + entity_id: script.send_key_alert + state: 'on' + action: + service: script.turn_off + entity_id: script.send_key_alert +``` + +```yaml +script: + send_key_alert: + sequence: + - delay: + minutes: 2 + - service: notify.notify + data: + message: 'You forgot your keys' + target: 'device/gregs_iphone' +``` + + +(The delay is needed for two reasons: - +1. HA updates the beacon and phone locations at slightly different times - so you don’t want the automation to trigger in the gap between the updates +2. I’ve found that beacons (especially the low power Estimote Nearables) can get disconnected for a few seconds so it’s best to wait a minute or so before deciding that you’ve left your keys behind) + + +### Using both types of iBeacons at the same time +Of course you can use both fixed and mobile beacons at the same time. I want my gates to open when I arrive home in the car - so I use an iBeacon in the car so that I can track the car, and an iBeacon on my drive so that a location update is triggered when I arrive. I've been experimenting with a high power beacon in a waterproof box on my drive which seems to work well to notice when I get home. + +

+ +

+Long range / High power beacon + +

+ +

+Waterproof beacon + + +### Buying Beacons +This isn’t a buyer's guide, but I just wanted to mention the iBeacons I’ve been using. I think you should be able to use any iBeacon with HA and OwnTracks. You generally can’t buy beacons in your local electronics shop - so I just wanted to briefly mention the two suppliers I’ve used so far. + +I’ve bought quite a few iBeacons from a company called [Blue Sense Networks](http://bluesensenetworks.com/). I work in the tech startup sector in the UK so I partly chose them because they are a local start-up who seemed worth supporting. The products, support and software all seem good. I use a number of their beacons - from a simple USB dongle, to a long range beacon. All their products have batteries that can be changed (or no batteries in the case of the externally powered USB device) - and you can configure all the parameters you’d want to using their software. I had one software issue, support got back to me at a weekend(!) - and the issue was resolved with a software release two days later. + +All the beacons seem fine - and the long range unit does work over a longer range than my other beacons. + +I bought some other beacons from a US/Polish startup called [Estimote](http://estimote.com/), who I think are better known. I bought a developer pack of 10 of their *nearables* which as well as being iBeacons also send out other data (orientation and motion) using their own protocol. This is interesting if you’re developing your own application, but for OwnTracks and HA they are just regular beacons. They are small and self adhesive - so you can stick them to things (like your keys). You can’t change all the parameters on these devices (UUID/Major/Minor are fixed) - and the batteries can’t be replaced. I also killed one of the estimote beacons (I assume the battery died) after I carried it around for a few months and dropped it many times! On the other hand they are well priced, small and waterproof! + +I’ve mainly used these as *devices to track* rather that *location* beacons. Estimote also sell some slightly larger iBeacons with replaceable batteries. Estimote support responded quickly and were helpful when I couldn’t work out how to edit their beacon’s parameters (although the answer was *you can’t yet*). + +The larger Blue Sense Network beacons seem to be better at maintaining a connection that the Estimotes - although that might be because I’m reluctant to turn the power to maximum and reduce the gap between sending packets on the Estimotes where I can’t replace the batteries! + +### Conclusion +As I said in [part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better), I’ve found iBeacons to be a good way of improving presence detection. I also used them to track devices like my car and my keys that can’t track themselves. + +I'm still experimenting, so I hope I can do more with iBeacons. I hope I've encouraged you do so the same. If you do please share your experiences. + +### Notes + +Please see the [notes at the end of Part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/#tips) for documentation information. + + +]]>
+
+ + + <![CDATA[iBeacons: Making presence detection work better (part I)]]> + + 2016-04-30T06:50:09+00:00 + https://home-assistant.io/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better + Using beacons to improve OwnTracks location data + +When you use OwnTracks in standard _major move_ mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient! + +Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon. + + + +### Getting Started + +To do this you first need to set up [MQTT] and [OwnTracks] in Home assistant - and make sure that HA can track your phone. + +[MQTT]: /components/mqtt/#picking-a-broker +[OwnTracks]: /components/device_tracker.owntracks/ + +You then have to (A) tell Home Assistant where the beacon is located and (B) tell OwnTracks to recognize the beacon. + +#### A. Tell Home Assistant where your beacon is located + +You tell HomeAssistant about fixed locations by creating a Zone with the longitude and latitude of your beacon. You should also give the zone a name which you will also use when you set up OwnTracks. An an example this zone specifies the location of my drive way. + +**Example `configuration.yaml` entry** + +````yaml + +zone: + - name: 'Drive' + latitude: XXX + longitude: YYY + radius: 100 +```` + +The radius isn’t used by the beacon code, but it is used by the GPS location sensing code. I’ll come back to this a little later. For now just use 50 or 100. + +Once you’ve created the zone - you need to restart HA. The next step is:- + +#### B. Tell OwnTracks to track your beacon + +1. Go to the OwnTracks app on your phone +2. Touch the `Regions` menu at the bottom of the screen +3. Touch the `+` symbol at the top right of the screen +4. Give the beacon a name e.g. `-drive` ’(start the name with a `-` see below for the reason) +5. Turn Share to `On` +6. Skip the `Circular Region` section +7. Enter the `UUID` of your beacon - this may be written on your beacon - or you can copy it from the management app that came with your iBeacon device. It’s a long number – so it’s easier to copy if you can! +8. Enter the `Minor` and `Major` numbers for your iBeacon - or leave them at 0 which will match all beacons with that `UUID` + +

+ +

+ +Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. + +

+ +

+ +When OwnTracks sees the beacon (and turns the region red), it also sends an MQTT packet to HA to say that you have entered that region. + +The result of the configuration above would be to set the location of device.phone to `Drive` , (and the GPS location to XXX,YYY) when your phone sees the beacon. + +So with the steps above you should be able to improve the reliability of tracking your phone - and send timely updates to HA. I did this for my home - and the lights now turn on before I reach the house on foot. If I arrive by car they turn on within a few seconds of arriving, before I can get to the front door. + +I’m also pleased to say I no longer get an _arrive home_ event at 2am that turns the lights on. I hope I’ve convinced you that iBeacons are worth trying! + +### Mixing Beacons and GPS locations + +You will probably use beacons to make entry into your existing GPS zones more reliable. By default either a beacon or a GPS location can cause you to enter a zone - and HA has some logic that should make them two work well together (it ignores GPS updates when you’re in an iBeacon Zone). + +However you can also use beacons for situations where GPS doesn’t work well. + +This might be because the zones are too close together - or even on top of each other! +For example, my wife works next door - and I couldn’t detect whether she’s at home or in the office via GPS because the accuracy wasn’t high enough. However I can do this by using two beacons. + +To make this type of presence detection work you need to turn GPS off for a zone in Home Assistant by making them `passive`. This is important because otherwise HA will try to decide between two close together zones without enough data. This doesn’t work well. + +A passive zone can only be entered via an iBeacon, so a GPS location update will always pick the other zone. + +I set up my Home zone to be a standard region, and my office zone to be passive, so the home zone can be entered in the normal way via either GPS or a Beacon. + +**Example `configuration.yaml` entry** + +````yaml + +zone: + - name: 'Office' + latitude: XXX + longitude: YYY + radius: 3 + passive: true +```` + +You could use this technique to try to detect which room someone is in. This might allow you to notice whether someone is in the living room or the bedroom - even though one is above the other (although beacon packets do pass through walls and floors). + +To get this to work you’ll probably need to experiment with the beacon signal strength to try to match the beacon reception area to the location you want to track. Let me know if you get this to work (it doesn’t make sense in my open plan house) + +### Conclusion + +Presence tracking sounds easy - and it's an important part of Home Automation. Trying it shows how difficult it is to get presence detection right. I've found that iBeacons have improved the reliability and timeliness of knowing where I am, and I hope I encouraged you to try them too. + +### Tips + +You can find out more about configuring the OwnTracks application and beacons [here](http://owntracks.org/booklet/features/beacons/) + +There is information about configuring Homeassistant to use beacons [here](https://home-assistant.io/components/device_tracker.owntracks/) + +#### Connections and disconnecting + +Owntracks treats a region name with a leading `-` as a hint that it shouldn't disconnect after a single missed packet. This improves the ability to keep a connection to a beacon. + +However, even when using this feature I’ve noticed that you can still lose connections (although it seems to vary by beacon manufacturer and type - I’ll talk more about this in _part 2_). This means that it's best to take into account that you may see false enter/leave events in HA. You may be able to improve this by changing how often the beacons send packets - and by increasing the signal strength (both will drain your beacon batteries more quickly). You can usually change these parameters in the app supplied by the iBeacon maker. You can also find some high power beacons (which have worked well for me). + +In automations you can use a `for:` to avoid triggering during a brief disconnect, or use a script with a delay. Stay tuned for _part 2_ for an example of this. + +#### Using Multiple beacons for the same Zone +iBeacons have a `UUID` (usually set to the same value for beacons from the same manufacturer), as well as a `minor` and `major` number. If you set two beacons to have exactly same details then OwnTracks will think multiple beacons are at the same location. + +This means you can have more than one beacon around your home - and a connection to any of them will count as `home` to OwnTracks and HA. This reduces disconnections. + +You can achieve the same effect by using the same the same `UUID` but different `major` / `minor` numbers - and tell OwnTracks not to worry about the `minor` / `major` numbers for a particular region by setting them to 0). + +_Make sure to also check out [part II](/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/) where I talk about how to use iBeacons to track any object._ +]]>
+
+ +
diff --git a/blog/categories/ibeacons/index.html b/blog/categories/ibeacons/index.html new file mode 100644 index 0000000000..531e5f3c00 --- /dev/null +++ b/blog/categories/ibeacons/index.html @@ -0,0 +1,232 @@ + + + + + + + + + Category: iBeacons - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/internet-of-things/atom.xml b/blog/categories/internet-of-things/atom.xml new file mode 100644 index 0000000000..e268c392b8 --- /dev/null +++ b/blog/categories/internet-of-things/atom.xml @@ -0,0 +1,453 @@ + + + + <![CDATA[Category: Internet-of-Things | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[IKEA Trådfri: Internet of Things done right]]> + + 2017-04-17T08:04:05+00:00 + https://home-assistant.io/blog/2017/04/17/ikea-tradfri-internet-of-things-done-right + +## Works out of the box + +IKEA Trådfri focuses on the basics: making a product that works out of the box. They sell various dimming kits. Each contain a light and a remote paired to control the light. You put the light into the socket, slide the battery into the remote and. it. works. No need to purchase a gateway, download an app and use your phone to set it up. Heck, you don’t even need internet to get started! + +You will only need to buy the gateway if you want to use your phone as a remote or set up home automation. + +## Only works locally + +The gateway only works locally. It only reaches out to the internet to synchronize the time and to check for firmware updates. This is awesome for many different reasons. + +**Privacy & Security.** No one but yourself will have access to the state of your house. And inside your house your communication with the gateway is encrypted. + +**Reliability & Speed.** All communication will always happen locally. Even if your internet will go out, you can still control your lights and your automations will still run. Even if IKEA would decide to drop support it will still continue to work. + +Check out [this blog post by Matthew Garrett][mjg59] for a more in-depth analysis of the security of the gateway. His conclusion: + +
+ Overall: as far as design goes, this is one of the most secure IoT-style devices I've looked at. I haven't examined the COAP stack in detail to figure out whether it has any exploitable bugs, but the attack surface is pretty much as minimal as it could be while still retaining any functionality at all. I'm impressed. +
+ +## Based on open standards + +IKEA Trådfri devices use the open standard Zigbee to communicate. The gateway speaks both Zigbee and connects to your network to offer an API based on the open standard CoAP. The API communication is secured via the open standard DTLS. + +Because it’s based on Zigbee, you don’t have to just buy IKEA devices the rest of your life. For example, Philips Hue lights will pair just fine with the IKEA gateway. + +Note that there are reports that the other way around, pairing an IKEA light to the Philips Hue hub is currently not possible. IKEA is working on it according to [a post by Philips Hue support][hue-support]: + +
+ The non-interoperability between the newly launched IKEA smart lighting products and the Philips Hue bridge has been analyzed. One of the issues found is that the IKEA bulbs report their ProfileID as corresponding to the ZigBee Home Automation (ZHA) profile rather than the ZigBee Light Link (ZLL) profile. As the IKEA bulbs do not behave fully compliant with the ZLL standard, they are rejected by the Hue bridge. IKEA is aware of this and informed us their intent is to have the IKEA smart lighting bulbs to work with the Philips Hue bridge. +
+ +## Affordable + +A white IKEA light bulb that just supports dimming starts at $12. You’ll have to shell out $18 If you want a white bulb that can control the light temperature to allow for different shades of white (relax, cool, focus etc). These prices are slightly lower than the competition. Right now on Amazon the cheapest just-dimming white bulbs come in at $15. + +However what really differentiates this system is the availability of all the cheap remotes and motion sensors. Ranging between $20 and $27 you get a light and a remote. Standalone Zigbee remotes on Amazon currently start at $21! + +Remotes are [a very important aspect of home automation][perfect]. The electricity has to be always on for the bulbs to function so you’ll need Zigbee switches and remotes to control your lights. The fact that they are so cheap will really help with adoption. + +

+ +Prices of the various available dimming kits. +

+ +## Useful design + +The lights and gateway are all made with a simple design and will easily blend into your home. They did sneak in some great and useful things. You can slide the cover off the gateway and open it up. Inside is a mini case for the actual electronics but mainly it’s just empty space so you can roll up any excess network and usb cable from the hub inside! + +

+ +The cables you don't need can be hidden in the gateway. +

+ +Another nice feature is that the remote comes with a magnetic mount for the wall. + +## Able to subscribe to changes (local push) + +This is a feature that I am really excited about. By being able to subscribe to changes in the Zigbee network Home Assistant will be able to instantly be notified about changes and trigger automations if necessary. + +This means that you will be able to turn the power on for a light and see it instantly turn on in Home Assistant. + +[_(Learn more about the different ways IoT devices broadcast changes)_][classification] + +## Full integration in Home Assistant 0.43 (scheduled for release April 22) + +Home Assistant will automatically discover gateways on your network and guide the user to set them up. + +Once IKEA Trådfri got released, our community, lead by [Patrik], got quickly organized and started analyzing the different aspects [in our forums][forums]. I am happy to say that the end result is a standalone Python library [pytradfri] to control the gateway. This means that starting from our next release, Home Assistant 0.43, we will auto discover your gateway and integrate all your lights. + +The initial version of our integration will not yet stream events from the gateway. We’re still working on figuring out that part of the API. + +

+ +After automatic discovery, Home Assistant will ask the user to finish pairing with the gateway. +

+ +## Downside: not many integrations yet + +The one major downside right now is that there are not many integrations yet because the system is brand new. There are [rumors] that Homekit is planned for October. And given the way the API is set up, I expect Google Home and Amazon Echo (Alexa) to eventually announce integration too. + +Since Home Assistant does integrate with it, you can use Home Assistant to bridge to these systems. For Homekit use [Homebridge] with the [Home Assistant plugin][hb-hass]. For integration with Google Home and Amazon Echo use [the Emulated Hue component][emulated_hue]. For Google Home you can also use [the API.ai integration][apiai] and Amazon Echo can also work with [Haaska]. + +## Semi-downside: you can’t control your lights remotely + +Because the system is local only, you won’t be able to control your lights remotely. As with the previous downside, you will be able to use Home Assistant to make your system available remotely. + +Classified this as a semi-downside because besides showing off, the actual use cases are very rare. Although it makes [great marketing material]. + +## Conclusion + +With Trådfri, IKEA has managed to put out an affordable and secure home automation system that does not compromise on functionality or design. There are still some downsides which I expect to get resolved in the future. + +As it currently stands, this is going to be the perfect companion hardware to work with Home Assistant: local, affordable, secure. And as cherry on the pie, local push will make us aware of changes right away. + +[tradfri]: http://www.ikea.com/us/en/catalog/categories/departments/lighting/36812/ +[mjg59]: http://mjg59.dreamwidth.org/47803.html +[hue-support]: https://developers.meethue.com/content/philips-hue-and-ikea-tr%C3%A5dfri#comment-2686 +[perfect]: https://home-assistant.io/blog/2016/01/19/perfect-home-automation/#you-should-not-have-to-adapt-to-technology +[Patrik]: https://github.com/ggravlingen +[forums]: https://community.home-assistant.io/t/ikea-tradfri-gateway-zigbee/14788 +[pytradfri]: https://github.com/ggravlingen/pytradfri +[rumors]: https://github.com/bwssytems/ha-bridge/issues/570#issuecomment-293505087 +[Homebridge]: https://github.com/nfarina/homebridge +[hb-hass]: https://github.com/home-assistant/homebridge-homeassistant +[emulated_hue]: https://home-assistant.io/components/emulated_hue/ +[apiai]: https://home-assistant.io/components/apiai/ +[Haaska]: https://github.com/auchter/haaska +[great marketing material]: https://i2.wp.com/blog.smartthings.com/wp-content/uploads/2014/06/summer-vacay-683x405-blog.png?fit=683%2C405&ssl=1 +[classification]: https://home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things/ +]]>
+
+ + + <![CDATA[Your hub should be local and open]]> + + 2016-04-05T21:11:00+00:00 + https://home-assistant.io/blog/2016/04/05/your-hub-should-be-local-and-open + +The cloud should be treated as an extension to your smart home instead of running it. + + +Your hub should not be affected when your internet breaks down or the company that sold you your hub goes out of business. It should work locally so that it can continue to work even long after the vendor goes out of business or decides to kill it. Preferably, your hub should also be open so that the community can take over development after the vendor stops caring. + +Unless you can afford losing a product here and there, be cautious when buying IoT products that depend on the cloud from companies that are not well established. The chances are high that they go bankrupt or get acquired and closed. This however is easier said than done as [Gartner] predicts that by 2017, 50 percent of IoT solutions will originate in startups that are less than three years old. + +[medium-revolv]: https://medium.com/@arlogilbert/the-time-that-tony-fadell-sold-me-a-container-of-hummus-cb0941c762c1#.rmppks86a +[ninjasphere]: https://discuss.ninjablocks.com/t/ninja-blocks-whats-been-happening-whats-happening-next/3608 +[perfect-cloud]: /blog/2016/01/19/perfect-home-automation/#your-system-should-run-at-home-not-in-the-cloud +[Gartner]: http://www.gartner.com/newsroom/id/2869521 +]]> + + + + <![CDATA[Classifying the Internet of Things]]> + + 2016-02-12T22:31:00+00:00 + https://home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassifierDescription
Assumed State + We are unable to get the state of the device. Best we can do is to assume the state based on our last command. +
Cloud Polling + Integration of this device happens via the cloud and requires an active internet connection. Polling the state means that an update might be noticed later. +
Cloud Push + Integration of this device happens via the cloud and requires an active internet connection. Home Assistant will be notified as soon as a new state is available. +
Local Polling + Offers direct communication with device. Polling the state means that an update might be noticed later. +
Local Push + Offers direct communication with device. Home Assistant will be notified as soon as a new state is available. +
+ +The background to how we got to these classifiers can be read after the break. + + +## State + +How state is communicated can be broken down into 5 categories. They are not mutually exclusive - a device state can be available both via the cloud and local connectivity. + +### No state available +These are devices that do not have the capabilities to make their state available. They only allow to be controlled. For example, devices with infrared remote controls like TVs and ACs. You can press the turn on button on the remote but can only assume that your command was received and executed successfully. The device might not be powered or something is blocking the infrared receiver. + +Home automation will have to approach such devices based on the assumption that it’s commands are received correctly: using optimistic updates. This means that after sending a command it will update the state of the device as if the command was received successfully. + +Advantages: + + - None + +Disadvantages: + + - 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. + +### 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. + +Advantages: + + - Able to control devices while at home or away. + - Cloud has access to more computing power to mine the device data to suggest optimizations to the user. + +Disadvantages: + + - It doesn’t work if the internet is down or the company stops support. + - You are no longer in control about who has access to your data. + +### Cloud pushing new state +All off the previous section applies to this one. On top of that the cloud will now notify the home automation when a new state has arrived. This means that as soon as the cloud knows, the home automation knows. + +Advantages: + + - New state known as soon as available in the cloud. + +### Polling the local device +These devices will offer an API that is locally accessible. The home automation will have to frequently check if the state has been updated. + +Advantages: + + - Does not depend on the internet + +Disadvantages: + + - To be pollable, a device needs to be always online which requires the device to be connected to a power source. + +### Local device pushing new state +The best of the best. These devices will send out a notice when they get to a new state. These devices usually use a home automation protocol to pass it’s message to a hub that will do the heavy lifting of managing and notifying subscribers + +Advantages: + + - Near instant delivery of new states. + - Able to get a long battery life by going into deep sleep between state updates. + +Disadvantages: + + - If it does not also support polling, home automation will not be made aware of the state after booting up until it changes. + - If using deep sleep and wifi, will suffer a delay when waking up because connecting to WiFi and receiving an IP takes time. + + +## Control + +Controlling a device can, just like state, be done through cloud and/or local connectivity. But the more important part of control is knowing if your command was a success and the new state of the device. + +### No control available +These devices are not able to be controlled. They will only offer state. + +### Poll State after sending command +These devices will require the state to be polled after sending a command to see if a command was successful. + +Advantages: + + - The state will be known right after the command was issued. + +Disadvantages: + + - It can take time before the state gets updated. How often do we poll and how long do we wait till we consider the command failed? Also, a state may change because of other factors. Difficult to determine if the updated state is because of our command. + +### Device pushes state update +These devices will not return a new state as a result of the command but instead will push a new state right away. The downside of this approach is that we have to assume that a state update coming in within a certain period of time after a command is related to the command. + +### Command returns new state +The very best. These devices will answer the command with the new state after executing the command. + +## Classifying Home Assistant +Home Assistant tries to offer the best experience possible via its APIs. There are different ways of interacting with Home Assistant but all are local. + + - State polling is available via the REST API + - There is a stream API that will push new states as soon as they arrive to subscribers. This is how the frontend is able to always stay in sync. + - Calling a service on Home Assistant will return all states that changed while the service was executing. This sadly does not always include the new state of devices that push their new state, as they might arrive after the service has finished. +]]>
+
+ + + <![CDATA[Perfect Home Automation]]> + + 2016-01-19T08:20:00+00:00 + https://home-assistant.io/blog/2016/01/19/perfect-home-automation + You should not have to adapt to technology. + +When people start using home automation, they always experience home control first: being able to control devices in new ways using a phone or computer. They believe the future is now and their app will be their remote for their lives. They only focus on what they are getting, not on what they are losing. You install some light bulbs and all of a sudden you are no longer able to use the light switches. You'll arrive at home at night and have to pull out your phone, open the app, let it connect and finally you'll be able to turn on the light. All while turning the light on could have been a switch away. + +Yes, you can solve this with presence detection. What if your phone runs out of battery? You’ll have to resort to the switch again. + +If you find that using your new home devices is cumbersome, the promise of home automation technology has failed you. Your lights should work with both a switch (or button) at the entrance of your room and via presence detection. Honestly, there are hardly any valid use cases for being able to control lights from your phone except for showing off. + + +### You are not the only user of your home automation. + +People tend to forget that they are not the only ones in their home. As the developer of your house you're enthusiastic about the possibilities and are willing to overlook flaws. Chances are very high that the other people in your household have different hobbies and just want to mind their own business. + +This means that everything you automate has to work flawlessly. If you successfully manage to cause a response to some stimulus 90% of the time, you’re going to have a disproportionately poor experience 10% of the time. A common automation that fits this pattern is to fade the lights when you start watching a movie or series in the living room. It only works if everyone is watching. + +### Limit the impact of false positives and negatives. + +With every automation, you always have to think: what will be the impact if it doesn’t work? Home automation is composed of many different systems by many different vendors that speak many different protocols: things will go wrong. It’s up to you to make sure that they have a limited impact when they fail. Ideally, devices should fall back to a pre-smart home experience. A Philips Hue bulb will act like a standard white light if turned on/off using a normal switch or when not connected to a hub. If things get worse when your system is out of order, your users will revolt. Take for example the Nest thermostat that [had a bug in the beginning of January][nest-bug] which caused it to stop heating the house, yikes! + +[nest-bug]: http://www.nytimes.com/2016/01/14/fashion/nest-thermostat-glitch-battery-dies-software-freeze.html + +### The perfect app is no app. + +Home automation should blend with your current workflow, not replace it. For most devices, there is no faster way to control most devices than how you are already doing it today. Most of the time, the best app is no app. The only interface that can be more convenient, and is accessible for visitors of your home of all ages is a voice interface. The industry has realized this too and there are some major players focussing on voice interaction. Take Apple for example: the only way to control your HomeKit devices is with Siri. Amazon has taken it one step further with the Amazon Echo, providing an always-listening connected speaker/microphone for the living room. I expect a lot more companies to join this segment in 2016. + +Voice interfaces are not perfect either. The speed at which you can issue commands is low because you have to wait for a response. There are also issues with the discoverability of commands, recognition of accents and dependency on the cloud for processing your voice. I believe that all but the first one are problems that are going to be solved eventually. + +This however doesn’t mean there isn’t a place for apps, there definitely is. They are perfectly well-suited for checking in while you’re away, browsing the state changes of your house or making the lights go all funky when there are kids visiting. + +### Your system should run at home, not in the cloud. + +The cloud is a magical thing. Somewhere in the world there are computers collecting the data that your house generates, testing them against your automation rules and sending commands back when needed. The cloud will receive updates and improve itself over time so it is able to serve you better. Until it’s not. There are many reasons why your home might lose its connection to the cloud. The internet can stop working, an update might have gone wrong or the servers running the cloud crash. + +When this happens, your house should be able to keep functioning. The cloud should be treated as an extension to your smart home instead of running it. That way you’ll avoid awkward situations like when Amazon AWS was down and the [Amazon Echo stopped working][echo-crash]. + +[echo-crash]: http://www.zdnet.com/article/the-night-alexa-lost-her-mind/ + +**Good home automation never annoys but is missed when it is not working.** + +*Thanks to Chris LaRose for this feedback and comments.* +]]> + + + + <![CDATA[Home Control, Automation & the Smart Home]]> + + 2014-12-26T18:23:13+00:00 + https://home-assistant.io/blog/2014/12/26/home-control-home-automation-and-the-smart-home + + + Hub dashboard example + + Example of a hub's dashboard. Showing the state of 2 persons, 4 lights and the sun. +

+ +A step up from home control is to have the user setup triggers to send commands based on information in the home control layer. For example, to turn on the lights when a person arrives home. A hub with these capabilities is capable of **home automation**. + +Most hubs on the market today offer this in various degrees of functionality and usability. Some IoT-capable devices offer this too, but only control themselves and are usually limited to location and time-based events. + +The last category, and this is still very much in the future, is the **smart home**. A self-learning and adopting system that will decide which events should impact other devices. + +An example of a smart home in action is that it observes that when person A comes home, the lights in the living room and the kitchen switch on. While if person B comes home, the lights in the living room and the study room are switched on. The next time person A or B comes home, the smart home will turn on its preferred lights without any configuration being set by the user. + +A glimpse today at how the future can look is the [Nest thermostat](https://nest.com/). A thermostat smart enough to learn your schedule and adjust its own temperature accordingly. + +All this results in the following overview of Home Automation. + +

+ + Home Automation landscape + + Overview of the home automation landscape. +

+ +### Challenges + +You are probably wondering, this all seems relatively simple, why don't I have my very own smart home yet? There are a couple of challenges today that keep us from stepping into the future. + +#### More Internet of Things-capable devices + +The majority of the IoT products out there are either lights, switches or presence detection. That's not enough for your home to be very smart about. We need televisions, fridges, ovens and more to join the party to increase the number of devices that we can control. + +#### More data + +Most first generation IoT devices are only exposing information that is needed for controlling it. We need to be able to track all interactions with each device for our smart home to learn how interaction with devices influence other things. For example, we need to be able to track how many cups of coffee were made or how often the fridge was open. This will increase the information flow and open up a whole bunch of new possibilities. For example, the smart home can order new coffee when you're running low. + +#### Easy to use, open software that we can trust + +To increase adoption we will need people to trust their smart home system. It will be very tough to convince people to upgrade all their devices and upload all interactions with each of them to the cloud. This data could reveal their whole life including all bad habits. That's why such a system should be simple and open-source so people can validate that their data generated at home stays home. + +Anoter important booster for adoption is that the software should be easy to set up and use by the average user. A lot of people are not burning their hands yet on Home Automation because they are scared of configurating it. + +Home Assistant is trying to be this software. It is not there yet but trying hard. Device discovery and a user interface for configuring home automation are problems we hope to tackle in 2015 while not sacrificing any modularity or usability. + +Happy new year! +]]>
+
+ +
diff --git a/blog/categories/internet-of-things/index.html b/blog/categories/internet-of-things/index.html new file mode 100644 index 0000000000..234d390bbb --- /dev/null +++ b/blog/categories/internet-of-things/index.html @@ -0,0 +1,293 @@ + + + + + + + + + Category: Internet-of-Things - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: Internet-of-Things +

+
+
+
+

2017

+ +

2016

+ + + +

2014

+ +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/iot-data/atom.xml b/blog/categories/iot-data/atom.xml new file mode 100644 index 0000000000..bfa455b018 --- /dev/null +++ b/blog/categories/iot-data/atom.xml @@ -0,0 +1,220 @@ + + + + <![CDATA[Category: IoT-Data | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Github-style calendar heatmap of device data]]> + + 2016-08-19T06:00:00+00:00 + https://home-assistant.io/blog/2016/08/19/github-style-calendar-heatmap-of-device-data + + +Heatmap +

+ +[heatmap]: https://en.wikipedia.org/wiki/Heat_map +[Jupyter notebook]: https://jupyter.org/ +[nb-prev]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-2/DataExploration-2.ipynb + +]]>
+
+ + + <![CDATA[IoT Data Exploration with Jupyter Notebooks]]> + + 2016-07-23T18:00:00+00:00 + https://home-assistant.io/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks + + +One of the graphs created with this tutorial. +

+ +_TL; DR: Use [this Jupyter Notebook][nb-prev] to visualize of your data_ + +[blog post by Fabian]: https://home-assistant.io/blog/2016/07/19/visualizing-your-iot-data/ +[DB Browser for SQLite]: http://sqlitebrowser.org/ +[Pandas]: http://pandas.pydata.org/ +[matplotlib]: http://matplotlib.org/ +[Jupyter notebook]: https://jupyter.org/ +[nb-prev]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-1/DataExploration-1.ipynb + + + +### Dependencies + +In order to run the provided Jupyter notebook, please make sure you have the following applications/libraries installed on your computer: + +- Pandas +- NumPy +- Matplotlib +- SQLAlchemy +- Jupyter + +As a Windows user myself, I find the easiest, quickest and most hassle-free way of installing all of these dependencies is to use [WinPython]. This free open-source portable distribution includes all of the dependencies required for this notebook, as well as a few other essential Python libraries you may require for data exploration in the future. + +[WinPython]: https://winpython.github.io/ + +#### Why Jupyter? + +While all Home Assistant implementations can have varying setup, components and scripts, the underlying data structure is standardized and well-defined. This allows us to write Python code that is environmentally agnostic. Wrapping it in a Jupyter notebook ensures the code, visualizations and directions/explanations are kept digestible and neatly-packaged. One of the amazing features of Jupyter is the ability to change code as you go along, customizing all outputs and visualizations on the fly! + +#### Where do I start? + +This tutorial is based around a heavily commented Jupyter Notebook that we created. So to get started, you will have to open that: + + - [download the tutorial Jupyter Notebook][nb-prev] (leads to preview page, from there click download top-right) + - launch the Jupyter Notebook App + - Click the 'upload' button to add the downloaded notebook to Jupyter + - Adjust the `DB_URL` at the beginning of the notebook to point at your Home Assistant database + - Select in top menu: Cell -> Run All + +That’s it! The included code will walk you through importing the required libraries, show running raw SQL against your local database, plotting basic data from the states table, and in the end output a few plots of changes for every entity in your system as well as the mean daily value for the past 20 days. + +After just those few steps, you will be greeted with beautiful formatted data like this: + +

+ +One of the graphs created with this tutorial. +

+ +#### What’s next? + +Thanks to the magic of Jupyter, all of the code is customizable: want to selectively display your data, only covering a specific entity? Sure thing! Want to change the properties of the plots? No problem! + +While you learn and explore your IoT data, we will be working on providing more ready-to-use Jupyter Notebooks. Feel free to ask questions or provide suggestions. Would you like to see a specific visualization? Is there a particular facet of data you’re interested in? Let’s talk about it, let’s dive into the world of data together! +]]>
+
+ + + <![CDATA[Visualize your IoT data]]> + + 2016-07-19T16:00:00+00:00 + https://home-assistant.io/blog/2016/07/19/visualizing-your-iot-data + + +The [history component](/components/history/) is tracking everything that is going on within Home Assistant. This means that you have access to all stored information about your home. Our history is not a full-fledged graphical processing and visualization component as you may know from systems and network monitoring tools. The current limitation is that you only can select a day for a visual output of your information and not a period. Also, there is no possibility to drill down on a specific entity. + +This blog post will show you ways to export data for reporting, visualization, or further analysis of automation rules. + + + +In this blog post I use the temperature of the [Aare](https://en.wikipedia.org/wiki/Aare) river close to where I live as a show case. The temperatures were recorded with the [Swiss Hydrological Data sensor](/components/sensor.swiss_hydrological_data/) and the name of the sensor is `sensor.aare`. + +The database is stored at `/.homeassistant/home-assistant_v2.db` as [SQLite database](https://www.sqlite.org/). In all examples we are going to use the path: `/home/ha/.homeassistant/home-assistant_v2.db` + +If you are just curious what's stored in your database then you can use the `sqlite3` command-line tool or a graphical one like [DB Browser for SQLite](http://sqlitebrowser.org/). + +The table that is holding the states is called `states`. The `events` tables is responsible for storing the events which occurred. So, we will first check how many entries there are in the `states` table. `sqlite3` needs to know where the databases is located. To work with your database make sure that Home Assistant is not running or create a copy of the existing database. It's recommended to work with a copy. + +```bash +$ sqlite3 /home/ha/.homeassistant/home-assistant_v2.db +SQLite version 3.11.0 2016-02-15 17:29:24 +sqlite> SELECT count(*) FROM states; +24659 +``` + +Let's have a look at a sample [SQL](https://en.wikipedia.org/wiki/SQL) query. This query will show all states in a period for the sensor `sensor.aare`. + +```sql +SELECT state, last_changed FROM states + WHERE + entity_id = 'sensor.aare' + AND + last_changed BETWEEN + '2016-07-05 00:00:00.000000' AND '2016-07-07 00:00:00.000000'; +``` + +The SQL statement can be formed that it fits exactly what you need. This means that you can process the data in any way you want for further use. Often it makes sense to eliminate certain entries like `Unknown` or peaks. + +If the above query is executed in DB Browser for SQLite you would be able to save the sensor's graph as png. + +

+ + Visualization with DB Browser for SQLite +

+ +You may ask: Why not do this with LibreOffice Calc or another spreadsheet application? As most spreadsheet applications are not able to work directly with SQLite database we are going to export the data from the database to [CSV](https://en.wikipedia.org/wiki/Comma-separated_values). + +```bash +$ sqlite3 -header -csv /home/ha/.homeassistant/home-assistant_v2.db "SELECT last_changed, state FROM states WHERE entity_id = 'sensor.aare' AND last_changed BETWEEN '2016-07-05 00:00:00.000000' AND '2016-07-07 00:00:00.000000';" > sensor.csv +``` + +The ordering for the `SELECT` was changed to get the time stamps first and then the state. Now we can import the CSV file into the application of your choice, here it's LibreOffice Calc. + +

+ + Import of the CSV file +

+ +After the import a graph can be created over the existing data. + +

+ + Graph in LibreOffice +

+ +You can also use [matplotlib](http://matplotlib.org/) to generate graphs as an alternative to a spreadsheet application. This is a powerful Python 2D plotting library. With the built-in support for SQLite in Python it will only take a couple lines of code to visualize your data. + +```python +import sqlite3 +from matplotlib import dates +import matplotlib.pyplot as plt + +import homeassistant.util.dt as dt + +values = [] +timestamps = [] + +conn = sqlite3.connect('/home/ha/.homeassistant/home-assistant_v2.db') +data = conn.execute("SELECT state, last_changed FROM states WHERE " + "entity_id = 'sensor.aare' AND last_changed BETWEEN " + "'2016-07-05 00:00:00.000000' AND " + "'2016-07-07 00:00:00.000000'") + +for x in data: + timestamps.append(dates.date2num(dt.parse_datetime(x[1]))) + values.append(float(x[0])) + +plt.plot_date(x=timestamps, y=values, fmt="r-") +plt.ylabel('Temperature') +plt.xlabel('Time line') + +plt.savefig('sensor.png') +``` + +Creating a connection to the database and executing a query is similar to the ways already seen. The return values from the query are split into two lists. The time stamps must be converted in an value which is accepted by matplotlib and then the graph is generated and saved as image. + +

+ + Sensor graph generated by matplotlib +

+ +Most of the graphs are pretty ugly. So, further beautification will be needed. If you have created a nice report including some amazing graphs then the Home Assistant community would be grateful for sharing them in our [forum](https://community.home-assistant.io/). + +]]>
+
+ +
diff --git a/blog/categories/iot-data/index.html b/blog/categories/iot-data/index.html new file mode 100644 index 0000000000..306def147e --- /dev/null +++ b/blog/categories/iot-data/index.html @@ -0,0 +1,252 @@ + + + + + + + + + Category: IoT-Data - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/media/atom.xml b/blog/categories/media/atom.xml new file mode 100644 index 0000000000..18df37bac9 --- /dev/null +++ b/blog/categories/media/atom.xml @@ -0,0 +1,90 @@ + + + + <![CDATA[Category: Media | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Home Assistant Podcast #10]]> + + 2017-10-18T00:01:00+00:00 + https://home-assistant.io/blog/2017/10/18/hasspodcast-ep-10 + + + + + <![CDATA[Home Assistant Podcast #9]]> + + 2017-10-01T00:01:00+00:00 + https://home-assistant.io/blog/2017/10/01/hass-podcast-ep9 + + + + + <![CDATA[Home Assistant Podcast #5]]> + + 2017-08-01T00:01:00+00:00 + https://home-assistant.io/blog/2017/08/01/hasspodcast-ep-5 + + + + + <![CDATA[Talk Python interview with Paulus Schoutsen]]> + + 2017-07-27T02:00:00+00:00 + https://home-assistant.io/blog/2017/07/27/talk-python-podcast + + + +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 + +]]> + + + + <![CDATA[Home Assistant Podcast #4]]> + + 2017-07-17T00:01:00+00:00 + https://home-assistant.io/blog/2017/07/17/hasspodcast-ep-4 + + + + diff --git a/blog/categories/media/index.html b/blog/categories/media/index.html new file mode 100644 index 0000000000..bae78995bd --- /dev/null +++ b/blog/categories/media/index.html @@ -0,0 +1,396 @@ + + + + + + + + + Category: Media - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: Media +

+
+
+
+

2017

+ + + + + + + + + + +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/merchandise/atom.xml b/blog/categories/merchandise/atom.xml new file mode 100644 index 0000000000..7ae1239a11 --- /dev/null +++ b/blog/categories/merchandise/atom.xml @@ -0,0 +1,86 @@ + + + + <![CDATA[Category: Merchandise | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Home Assistant t-shirts have arrived!]]> + + 2017-02-22T00:04:05+00:00 + https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived + + + Cool dude with beard and tattoo wearing [the new blue Home Assistant shirt][blue-us]. +

+ +What time is it? Yep, t-shirt time. Today we're launching the first two Home Assistant designs. We have a blue t-shirt ([🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us]) as pictured above and a design for on black/gray shirts ([🇪🇺 EU][black-eu] – [🇺🇸 US][black-us]) as pictured below. + + - [Visit the 🇺🇸 US store][store-us] + - [Visit the 🇪🇺 EU store][store-eu] + + + +And because we love the internet and all the things that it has brought us, **we will start with having 100% of the profit from the sales be donated to the [Electronic Frontier Foundation][eff]**. If you buy a shirt you will hit two birds with one stone (figuratively): you get to wear a kick-ass Home Assistant t-shirt and you help fund defending civil liberties in the digital world. + +The EFF is a nonprofit organization that aims to protect the rights of technology users. You might however be more familiar with one of their projects: [Let's Encrypt][le]. [Read more about what the EFF does.][eff-issues] + +So, what are you waiting for? Get yourself a shirt! [🇪🇺 EU store][store-eu] – [🇺🇸 US store][store-us] + +

+ + Family of 4 on a bench wearing the new black Home Assistant shirt. [🇪🇺 EU][black-eu] – [🇺🇸 US][black-us] +

+ +We are using [Teespring.com][ts] to manage all the sales, production and distribution of the shirts and they will also donate our profits to the EFF. It's also how we got all these amazing stockphotos. Some extra things to note about our teespring shop: + + - Teespring shows that there is a number of days left until the end of the campaign for the shirts. Don't worry about that, it should automatically relaunch. + +More photos after the click. + + +

+ + Moment suprême of a solo pull-my-finger joke while wearing the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] +

+

+ + Two men carrying two women and the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] +

+

+ + Cute girl with gigantic lollipop rocking the new black Home Assistant shirt. – [🇪🇺 EU][black-eu] – [🇺🇸 US][black-us] +

+

+ + Frustrated user wearing the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] +

+

+ + Cool kid listening to music + sidekick. Both wearing the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] +

+ +[eff]: https://www.eff.org +[le]: https://letsencrypt.org +[ts]: https://teespring.com +[ts-eu]: https://teespring.com/teespring-europe +[store-us]: https://teespring.com/stores/home-assistant-us-store +[store-eu]: https://teespring.com/stores/home-assistant-eu-store +[eff-issues]: https://www.eff.org/issues +[blue-us]: https://teespring.com/home-assistant-shirt +[black-us]: https://teespring.com/hass-shirt-black +[blue-eu]: https://teespring.com/hass-blue-shirt-eu-2 +[black-eu]: https://teespring.com/hass-shirt-black-eu-2 +]]>
+
+ +
diff --git a/blog/categories/merchandise/index.html b/blog/categories/merchandise/index.html new file mode 100644 index 0000000000..a7ba5a82be --- /dev/null +++ b/blog/categories/merchandise/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Category: Merchandise - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/micropython/atom.xml b/blog/categories/micropython/atom.xml new file mode 100644 index 0000000000..da53a28375 --- /dev/null +++ b/blog/categories/micropython/atom.xml @@ -0,0 +1,294 @@ + + + + <![CDATA[Category: Micropython | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Grazer Linuxtage 2017: Python Everywhere]]> + + 2017-05-07T02:00:00+00:00 + https://home-assistant.io/blog/2017/05/07/grazer-linuxtage-2017-talk-python-everywhere + + + + +[MicroPython]: https://micropython.org +]]> + + + + <![CDATA[ESP8266 and MicroPython - Part 2]]> + + 2016-08-31T04:17:25+00:00 + https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2 + +So, part 1 of [ESP8266 and MicroPython](/blog/2016/07/28/esp8266-and-micropython-part1/) was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance. + + + +Beside [HTTP POST](https://en.wikipedia.org/wiki/POST_(HTTP)) requests, MQTT is the quickest way (from the author's point of view) to publish information with DIY devices. + +You have to make a decision: Do you want to pull or to [poll](https://en.wikipedia.org/wiki/Polling_(computer_science)) the information for the sensor? For slowly changing values like temperature it's perfectly fine to wait a couple of seconds to retrieve the value. If it's a motion detector the state change should be available instantly in Home Assistant or it could be missed. This means the sensor must take initiative and send the data to Home Assistant. + +An example for pulling is [aREST](/components/sensor.arest/). This is a great way to work with the ESP8266 based units and the Ardunio IDE. + +### MQTT + +You can find a simple examples for publishing and subscribing with MQTT in the [MicroPython](https://github.com/micropython/micropython-lib) library overview in the section for [umqtt](https://github.com/micropython/micropython-lib/tree/master/umqtt.simple). + +The example below is adopted from the work of [@davea](https://github.com/davea) as we don't want to re-invent the wheel. The configuration feature is crafty and simplyfies the code with the usage of a file called `/config.json` which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds. + + +```python +import machine +import time +import ubinascii +import webrepl + +from umqtt.simple import MQTTClient + +# These defaults are overwritten with the contents of /config.json by load_config() +CONFIG = { + "broker": "192.168.1.19", + "sensor_pin": 0, + "client_id": b"esp8266_" + ubinascii.hexlify(machine.unique_id()), + "topic": b"home", +} + +client = None +sensor_pin = None + +def setup_pins(): + global sensor_pin + sensor_pin = machine.ADC(CONFIG['sensor_pin']) + +def load_config(): + import ujson as json + try: + with open("/config.json") as f: + config = json.loads(f.read()) + except (OSError, ValueError): + print("Couldn't load /config.json") + save_config() + else: + CONFIG.update(config) + print("Loaded config from /config.json") + +def save_config(): + import ujson as json + try: + with open("/config.json", "w") as f: + f.write(json.dumps(CONFIG)) + except OSError: + print("Couldn't save /config.json") + +def main(): + client = MQTTClient(CONFIG['client_id'], CONFIG['broker']) + client.connect() + print("Connected to {}".format(CONFIG['broker'])) + while True: + data = sensor_pin.read() + client.publish('{}/{}'.format(CONFIG['topic'], + CONFIG['client_id']), + bytes(str(data), 'utf-8')) + print('Sensor state: {}'.format(data)) + time.sleep(5) + +if __name__ == '__main__': + load_config() + setup_pins() + main() +``` + +Subscribe to the topic `home/#` or create a [MQTT sensor](/components/sensor.mqtt/) to check if the sensor values are published. + +```bash +$ mosquitto_sub -h 192.168.1.19 -v -t "home/#" +``` + +```yaml +sensor: + - platform: mqtt + state_topic: "home/esp8266_[last part of the MAC address]" + name: "MicroPython" +``` + +[@davea](https://github.com/davea) created [sonoff-mqtt](https://github.com/davea/sonoff-mqtt). This code will work on ESP8622 based devices too and shows how to use a button to control a relay. + +]]> + + + + <![CDATA[ESP8266 and MicroPython - Part 1]]> + + 2016-07-28T04:00:00+00:00 + https://home-assistant.io/blog/2016/07/28/esp8266-and-micropython-part1 + +The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The [documentation](http://docs.micropython.org/en/latest/esp8266/esp8266_contents.html) covers a lot of ground. This post is providing only a little summary which should get you started. + +Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for [download](https://micropython.org/download/#esp8266). + + + +The easiest way is to use [esptool.py](https://github.com/themadinventor/esptool) for firmware handling tasks. First erase the flash: + +```bash +$ sudo python esptool.py --port /dev/ttyUSB0 erase_flash +esptool.py v1.0.2-dev +Connecting... +Erasing flash (this may take a while)... +``` + +and then load the firmware. You may adjust the file name of the firmware binary. + +```bash +$ sudo python esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=8m 0 esp8266-2016-07-10-v1.8.2.bin +esptool.py v1.2-dev +Connecting... +Running Cesanta flasher stub... +Flash params set to 0x0020 +Writing 540672 @ 0x0... 540672 (100 %) +Wrote 540672 bytes at 0x0 in 13.1 seconds (330.8 kbit/s)... +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 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 +#4 ets_task(4020e374, 29, 3fff70e8, 10) +WebREPL daemon started on ws://192.168.4.1:8266 +Started webrepl in setup mode +could not open file 'main.py' for reading + +#5 ets_task(4010035c, 3, 3fff6360, 4) +MicroPython v1.8.2-9-g805c2b9 on 2016-07-10; ESP module with ESP8266 +Type "help()" for more information. +>>> +``` + +

+The public build of the firmware may be different than the firmware distributed to the backers of the Kickstarter campaign. Especially in regard of the [available modules](http://docs.micropython.org/en/latest/esp8266/py-modindex.html), turned on debug messages, and alike. Also, the WebREPL may not be started by default. +

+ +Connect a LED to pin 5 (or another pin of your choosing) to check if the ESP8266 is working as expected. + +```python +>>> import machine +>>> pin = machine.Pin(5, machine.Pin.OUT) +>>> pin.high() +``` + +You can toogle the LED by changing its state with `pin.high()` and `pin.low()`. + +Various ESP8266 development board are shipped with an onboard photocell or a light dependent resistors (LDR) connected to the analog pin of your ESP8266 check if you are able to obtain a value. + +```python +>>> import machine +>>> brightness = machine.ADC(0) +>>> brightness.read() +``` + +Make sure that you are familiar with REPL and WebREPL because this will be needed soon. Keep in mind the password for the WebREPL access. + +Read the [instructions](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html) about how to setup your wireless connection. Basically you need to upload a `boot.py` file to the microcontroller and this file is taking care of the connection setup. Below you find a sample which is more or less the same as shown in the [documentation](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html#configuration-of-the-wifi). + +```python +def do_connect(): + import network + + SSID = 'SSID' + PASSWORD = 'PASSWORD' + + sta_if = network.WLAN(network.STA_IF) + ap_if = network.WLAN(network.AP_IF) + if ap_if.active(): + ap_if.active(False) + if not sta_if.isconnected(): + print('connecting to network...') + sta_if.active(True) + sta_if.connect(SSID, PASSWORD) + while not sta_if.isconnected(): + pass + print('Network configuration:', sta_if.ifconfig()) +``` + +Upload this file with `webrepl_cli.py` or the WebREPL: + +```bash +$ python webrepl_cli.py boot.py 192.168.4.1:/boot.py +``` + +If you reboot, you should see your current IP address in the terminal. + +```bash +>>> Network configuration: ('192.168.0.10', '255.255.255.0', '192.168.0.1', '192.168.0.1') +``` + +First let's create a little consumer for Home Assistant sensor's state. The code to place in `main.py` is a mixture of code from above and the [RESTful API](/developers/rest_api/) of Home Assistant. If the temperature in the kitchen is higher than 20 °C then the LED connected to pin 5 is switched on. + +

+If a module is missing then you need to download it from the [MicroPython Library overview](https://github.com/micropython/micropython-lib) and upload it to the ESP8266 with `webrepl_cli.py` manually. +

+ +```python +# Sample code to request the state of a Home Assistant entity. + +API_PASSWORD = 'YOUR_PASSWORD' +URL = 'http://192.168.0.5:8123/api/states/' +ENTITY = 'sensor.kitchen_temperature' +TIMEOUT = 30 +PIN = 5 + +def get_data(): + import urequests + url = '{}{}'.format(URL, ENTITY) + headers = {'x-ha-access': API_PASSWORD, + 'content-type': 'application/json'} + resp = urequests.get(URL, headers=headers) + return resp.json()['state'] + +def main(): + import machine + import time + + pin = machine.Pin(PIN, machine.Pin.OUT) + while True: + try: + if int(get_data()) >= 20: + pin.high() + else: + pin.low() + except TypeError: + pass + time.sleep(TIMEOUT) + +if __name__ == '__main__': + print('Get the state of {}'.format(ENTITY)) + main() +``` + +Upload `main.py` the same way as `boot.py`. After a reboot (`>>> import machine` and `>>> machine.reboot()`) or power-cycling your physical notifier is ready. + +If you run into trouble, press "Ctrl+c" in the REPL to stop the execution of the code, enter `>>> import webrepl` and `>>> webrepl.start()`, and upload your fixed file. + +]]>
+
+ +
diff --git a/blog/categories/micropython/index.html b/blog/categories/micropython/index.html new file mode 100644 index 0000000000..1a6042d0c9 --- /dev/null +++ b/blog/categories/micropython/index.html @@ -0,0 +1,256 @@ + + + + + + + + + Category: Micropython - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml new file mode 100644 index 0000000000..a4743d1769 --- /dev/null +++ b/blog/categories/mqtt/atom.xml @@ -0,0 +1,748 @@ + + + + <![CDATA[Category: MQTT | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[ESP8266 and MicroPython - Part 2]]> + + 2016-08-31T04:17:25+00:00 + https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2 + +So, part 1 of [ESP8266 and MicroPython](/blog/2016/07/28/esp8266-and-micropython-part1/) was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance. + + + +Beside [HTTP POST](https://en.wikipedia.org/wiki/POST_(HTTP)) requests, MQTT is the quickest way (from the author's point of view) to publish information with DIY devices. + +You have to make a decision: Do you want to pull or to [poll](https://en.wikipedia.org/wiki/Polling_(computer_science)) the information for the sensor? For slowly changing values like temperature it's perfectly fine to wait a couple of seconds to retrieve the value. If it's a motion detector the state change should be available instantly in Home Assistant or it could be missed. This means the sensor must take initiative and send the data to Home Assistant. + +An example for pulling is [aREST](/components/sensor.arest/). This is a great way to work with the ESP8266 based units and the Ardunio IDE. + +### MQTT + +You can find a simple examples for publishing and subscribing with MQTT in the [MicroPython](https://github.com/micropython/micropython-lib) library overview in the section for [umqtt](https://github.com/micropython/micropython-lib/tree/master/umqtt.simple). + +The example below is adopted from the work of [@davea](https://github.com/davea) as we don't want to re-invent the wheel. The configuration feature is crafty and simplyfies the code with the usage of a file called `/config.json` which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds. + + +```python +import machine +import time +import ubinascii +import webrepl + +from umqtt.simple import MQTTClient + +# These defaults are overwritten with the contents of /config.json by load_config() +CONFIG = { + "broker": "192.168.1.19", + "sensor_pin": 0, + "client_id": b"esp8266_" + ubinascii.hexlify(machine.unique_id()), + "topic": b"home", +} + +client = None +sensor_pin = None + +def setup_pins(): + global sensor_pin + sensor_pin = machine.ADC(CONFIG['sensor_pin']) + +def load_config(): + import ujson as json + try: + with open("/config.json") as f: + config = json.loads(f.read()) + except (OSError, ValueError): + print("Couldn't load /config.json") + save_config() + else: + CONFIG.update(config) + print("Loaded config from /config.json") + +def save_config(): + import ujson as json + try: + with open("/config.json", "w") as f: + f.write(json.dumps(CONFIG)) + except OSError: + print("Couldn't save /config.json") + +def main(): + client = MQTTClient(CONFIG['client_id'], CONFIG['broker']) + client.connect() + print("Connected to {}".format(CONFIG['broker'])) + while True: + data = sensor_pin.read() + client.publish('{}/{}'.format(CONFIG['topic'], + CONFIG['client_id']), + bytes(str(data), 'utf-8')) + print('Sensor state: {}'.format(data)) + time.sleep(5) + +if __name__ == '__main__': + load_config() + setup_pins() + main() +``` + +Subscribe to the topic `home/#` or create a [MQTT sensor](/components/sensor.mqtt/) to check if the sensor values are published. + +```bash +$ mosquitto_sub -h 192.168.1.19 -v -t "home/#" +``` + +```yaml +sensor: + - platform: mqtt + state_topic: "home/esp8266_[last part of the MAC address]" + name: "MicroPython" +``` + +[@davea](https://github.com/davea) created [sonoff-mqtt](https://github.com/davea/sonoff-mqtt). This code will work on ESP8622 based devices too and shows how to use a button to control a relay. + +]]> + + + + <![CDATA[Smarter SmartThings with MQTT and Home Assistant]]> + + 2016-02-09T07:44:00+00:00 + https://home-assistant.io/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant + + +

+ + + +## Glossary + +This is going to be a pretty detailed tutorial on setting up our SmartThings bridge. However, there are a couple key terms that _might_ be new to you: + + - [MQTT][mqtt]: A lightweight message protocol for listening and publishing events that happen. Many home automation platforms have built in support for this [(especially Home Assistant)][mqtt-ha]. + - [Docker][docker]: A tool for running applications that are self-contained. No need for installing any dependencies or worrying about conflicts. Installs easily on Linux and OSX. + +## Setting up the Bridge + +### MQTT + +Assuming that you already have Home Assistant and Smart Things running, you will first want to get an MQTT broker running. There are a handful of [MQTT][mosquitto] [brokers][emqttd] available in Open Source land. We chose [Mosca][mosca] for its simplicity. + +There is very little you need to do to get Mosca running. The easiest approach is to use [Docker][docker], and run a command like the following: + +```bash +$ docker run \ + -d \ + --name="mqtt" \ + -v /opt/mosca:/db \ + -p 1883:1883 \ + matteocollina/mosca +``` + +This will start Mosca up inside of a docker container, while keeping persistent storage for Mosca in `/opt/mosca`. The default configuration is the only thing we need to get things up and running. + +If you don't want to mess with Docker and can get node.js installed without trouble, the [standalone][mosca-standalone] instructions are all you need. + +### MQTT Bridge + +This is the small piece of magic that bridges the gap between MQTT and SmartThings. It is a node.js app, and like Mosca it is probably easiest to install with Docker: + +```bash +$ docker run \ + -d \ + --name="mqtt-bridge" \ + -v /opt/mqtt-bridge:/config \ + -p 8080:8080 \ + stjohnjohnson/smartthings-mqtt-bridge +``` + +The code for this bridge is [on Github][mqtt-bridge] if you want to start it up independently. + +The MQTT Bridge only needs to know where your MQTT broker lives. If you are using these docker commands as-is, edit `/opt/mqtt-bridge/config.yml` to look like this: + +```yaml +--- +mqtt: + host: +``` + +Restart the bridge, and you are ready to go: + +```bash +$ docker restart mqtt-bridge +``` + +### SmartThings Device + +The next step (and possibly the most confusing) is the device type. Go to the [Smart Things Device IDE][ide-dt] and `Create New Device Handler`. Choose `From Code` and paste in the [MQTT Bridge Device Code][devicetype]. Click `Save`, `Publish`, and then `For Me`. + +Now to install your new Device Handler. Go back to `My Devices` in the IDE, and click `New Device`. Enter a name, and pick any random set of characters for the Device Network Id (this will automatically update later). For Type, scroll to the bottom of the list and find your newly created `MQTT Bridge`. Fill in the other boxes however you like. + +Go back to `My Devices`, and click on your new device in the list. This will bring up a page that allows you to edit your device's Preferences. Click `edit` and fill in the 3 pieces of information it asks for. + + - MQTT Bridge IP Address: \ + - MQTT Bridge Port: \<8080 if you have changed nothing in the previous commands> + - MQTT Bridge MAC Address: \ + +This will create the link between SmartThings and the MQTT Bridge. + +### SmartThings App + +The last step is to setup the SmartApp. After this, any registered devices will start sending their events to MQTT. + +Go to the [Smart App IDE][ide-app]. Click `New SmartApp`, followed by `From Code`. Paste in the [MQTT Bridge SmartApp code][smartapp] and click `Save`. Click `Publish` and then `For Me`. In the SmartThings mobile app, add the new SmartApp and configure it with your devices and MQTT Bridge device. Clicking `done` will subscribe SmartThings to your MQTT broker and begin 2-way propagation of events. + +### Configure Home Assistant + +To add SmartThings devices to Home Assistant over MQTT, first enable MQTT in Home Assistant: + +```yaml +mqtt: + broker: localhost +``` + +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: + +| Topic | Description +| ----- | ----------- +| smartthings/Fireplace Lights/level | Brightness (0-99) +| smartthings/Fireplace Lights/switch | Switch State (on/off) + +Here is an example Home Assistant config: + +```yaml +switch: + platform: mqtt + name: "Fireplace Lights" + state_topic: "smartthings/Fireplace Lights/switch" + command_topic: "smartthings/Fireplace Lights/switch" + brightness_state_topic: "smartthings/Fireplace Lights/level" + brightness_command_topic: "smartthings/Fireplace Lights/level" + payload_on: "on" + payload_off: "off" + retain: true +``` + +We recommend `retain: true` for every MQTT device in order to keep states in sync when things become disconnected. + +Start digging through the [MQTT Components][mqtt-ha] in Home Assistant to find which components map to the new events being published to MQTT. + +### Configuring with Docker-Compose + +Our personal preference for starting the whole suite of software is to use a single Docker-Compose file. Just create a file called `docker-compose.yml` like this: + +```yaml +mqtt: + image: matteocollina/mosca + ports: + - 1883:1883 + +mqttbridge: + image: stjohnjohnson/smartthings-mqtt-bridge + volumes: + - ./mqtt-bridge:/config + ports: + - 8080:8080 + links: + - mqtt + +homeassistant: + image: homeassistant/home-assistant:latest + ports: + - 80:80 + volumes: + - ./home-assistant:/config + - /etc/localtime:/etc/localtime:ro + links: + - mqtt +``` + +This will start home-assistant, MQTT, and the Bridge, in dependency order. All config can reference the name of the docker container instead of using IP addresses (e.g. mqtt for the broker host in Home Assistant). + +### How it works + +**HTTP Endpoint**: There are really only 2 ways to communicate with the SmartThings hub that we could find. The easiest approach is to create a RESTful SmartApp authenticated with OAuth that provides state changes via HTTP directly. This approach is pretty straightforward to implement, but it requires communication with the SmartThings cloud service, and can't be done entirely on your LAN. We hoped to keep all communication internal, and came up with a second approach. + +**Custom Device Type:** SmartThings custom device types allow developers to define handlers for HTTP events received directly over the local network by the SmartThings hub. Messages received are authenticated by MAC address, and can contain arbitrary strings in their payload. Since a Device Type is only ever tied to a single device, we need to add a SmartApp to the mix in order to translate events between individual devices and our special Home Assistant Bridge device. Here is what we have so far: + +```text +Z-Wave Switch | +Zigbee motion sensor |<---> Bridge App <---> Bridge Device Type <---> +Z-Wave light bulb | +``` + +On the Home Assistant side, there is a powerful platform available based on the MQTT lightweight message bus protocol. Everything from lights to switches to temperature sensors can be defined in Home Assistant as an MQTT component, so it makes for a convenient integration point. This requires an MQTT broker for handling the message bus, and one last piece to translate between the HTTP that SmartThings supports and MQTT. + +Here is the final sequence of events: + +

+ + SmartThings Bridge Sequence + + SmartThings Bridge Sequence +

+ + +There are a lot of stops along the way for these events, but each piece is a simple translation layer to shuttle the events between systems. + +### Future Improvements +- **Raspberry Pi**: There is a lot of interest in getting this running on the Raspberry Pi. It only requires binaries compiled for ARM, so we plan to get ARM-compatible versions of the containers going at some point. +- **Authentication for MQTT**: At the moment, the MQTT bridge doesn't understand how to authenticate to MQTT, so only unauthenticated MQTT is supported. This is mitigated to some degree if you use our Docker Compose config, because MQTT's port is not actually shared publicly. +- **Authentication for MQTT Bridge**: Right now the bridge expects that anyone subscribing is the SmartThings hub. This could use proper authentication. + + +[mosquitto]: http://mosquitto.org/ +[emqttd]: https://github.com/emqtt/emqttd +[mosca]: http://www.mosca.io/ +[docker]: https://www.docker.com/ +[mosca-standalone]: https://github.com/mcollina/mosca#standalone +[mqtt-bridge]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge +[ide-dt]: https://graph.api.smartthings.com/ide/devices +[devicetype]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/devicetypes/stj/mqtt-bridge.src/mqtt-bridge.groovy +[ide-app]: https://graph.api.smartthings.com/ide/apps +[smartapp]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/smartapps/stj/mqtt-bridge.src/mqtt-bridge.groovy +[mqtt-ha]: /components/mqtt/ +[smartthings]: http://smartthings.com +[r/homeautomation]: https://www.reddit.com/r/homeautomation +[mqtt]: https://en.wikipedia.org/wiki/MQTT +]]>
+
+ + + <![CDATA[Report the temperature with ESP8266 to MQTT]]> + + 2015-10-11T19:10:00+00:00 + https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt + + +Picture of the final setup (+ 2 LED for decoration) +

+ +

+ +Home Assistant will keep track of historical values and allow you to integrate it into automation. +

+ + + +### Components + +I've been using Adafruit for my shopping: + + - [Adafruit HUZZAH ESP8266 Breakout](http://www.adafruit.com/product/2471) ([assembly instructions](https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly)) + - [Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board](http://www.adafruit.com/product/2635) ([assembly instructions](https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly)) + - [MQTT server](/components/mqtt/#picking-a-broker) + +_Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires, soldering iron + wire, Serial USB cable._ + +### Alternatives + +Since this article has been published the HDC1008 has been discontinued. Updated sketches are available for the following alternatives: + + - [DHT22 sensor](https://www.adafruit.com/product/385) and [updated sketch](https://gist.github.com/balloob/1176b6d87c2816bd07919ce6e29a19e9). + - [BME280 sensor](https://www.adafruit.com/product/2652) and [updated sketch](https://gist.github.com/mtl010957/9ee85fb404f65e15c440b08c659c0419). + +### Connections + +On your breadboard, make the following connections from your ESP8266 to the HDC1008: + +| ESP8266 | HDC1008 | +| ------- | ------- | +| GND | GND +| 3V | Vin +| 14 | SCL +| #2 | SDA + +_I picked `#2` and `14` myself, you can configure them in the sketch._ + +### Preparing your IDE + +Follow [these instructions](https://github.com/esp8266/Arduino#installing-with-boards-manager) on how to install and prepare the Arduino IDE for ESP8266 development. + +After you're done installing, open the Arduino IDE, in the menu click on `sketch` -> `include library` -> `manage libraries` and install the following libraries: + +- PubSubClient by Nick 'O Leary +- Adafruit HDC1000 + +### Sketch + +If you have followed the previous steps, you're all set. + + - Open Arduino IDE and create a new sketch (`File` -> `New`) + - Copy and paste the below sketch to the Arduino IDE + - Adjust the values line 6 - 14 to match your setup + - Optional: If you want to connect to an MQTT server without a username or password, adjust line 62. + - To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode. + - Press the upload button in Arduino IDE + - Open the serial monitor (`Tools` -> `Serial Monitor`) to see the output from your device + +This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last reported value. Reports to the MQTT broker are sent with retain set to `True`. This means that anyone connecting to the MQTT topic will automatically be notified of the last reported value. + +```cpp +#include +#include +#include +#include + +#define wifi_ssid "YOUR WIFI SSID" +#define wifi_password "WIFI PASSWORD" + +#define mqtt_server "YOUR_MQTT_SERVER_HOST" +#define mqtt_user "your_username" +#define mqtt_password "your_password" + +#define humidity_topic "sensor/humidity" +#define temperature_topic "sensor/temperature" + +WiFiClient espClient; +PubSubClient client(espClient); +Adafruit_HDC1000 hdc = Adafruit_HDC1000(); + +void setup() { + Serial.begin(115200); + setup_wifi(); + client.setServer(mqtt_server, 1883); + + // Set SDA and SDL ports + Wire.begin(2, 14); + + // Start sensor + if (!hdc.begin()) { + Serial.println("Couldn't find sensor!"); + while (1); + } +} + +void setup_wifi() { + delay(10); + // We start by connecting to a WiFi network + Serial.println(); + Serial.print("Connecting to "); + Serial.println(wifi_ssid); + + WiFi.begin(wifi_ssid, wifi_password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +void reconnect() { + // Loop until we're reconnected + while (!client.connected()) { + Serial.print("Attempting MQTT connection..."); + // Attempt to connect + // If you do not want to use a username and password, change next line to + // if (client.connect("ESP8266Client")) { + if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) { + Serial.println("connected"); + } else { + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); + // Wait 5 seconds before retrying + delay(5000); + } + } +} + +bool checkBound(float newValue, float prevValue, float maxDiff) { + return !isnan(newValue) && + (newValue < prevValue - maxDiff || newValue > prevValue + maxDiff); +} + +long lastMsg = 0; +float temp = 0.0; +float hum = 0.0; +float diff = 1.0; + +void loop() { + if (!client.connected()) { + reconnect(); + } + client.loop(); + + long now = millis(); + if (now - lastMsg > 1000) { + lastMsg = now; + + float newTemp = hdc.readTemperature(); + float newHum = hdc.readHumidity(); + + if (checkBound(newTemp, temp, diff)) { + temp = newTemp; + Serial.print("New temperature:"); + Serial.println(String(temp).c_str()); + client.publish(temperature_topic, String(temp).c_str(), true); + } + + if (checkBound(newHum, hum, diff)) { + hum = newHum; + Serial.print("New humidity:"); + Serial.println(String(hum).c_str()); + client.publish(humidity_topic, String(hum).c_str(), true); + } + } +} +``` + +### Configuring Home Assistant + +The last step is to integrate the sensor values into Home Assistant. This can be done by setting up Home Assistant to connect to the MQTT broker and subscribe to the sensor topics. + +```yaml +mqtt: + broker: YOUR_MQTT_SERVER_HOST + username: your_username + password: your_password + +sensor: + platform: mqtt + name: "Temperature" + state_topic: "sensor/temperature" + qos: 0 + unit_of_measurement: "ºC" + +sensor 2: + platform: mqtt + name: "Humidity" + state_topic: "sensor/humidity" + qos: 0 + unit_of_measurement: "%" +``` +]]>
+
+ + + <![CDATA[Using MQTT with Home Assistant]]> + + 2015-09-11T09:19:38+00:00 + https://home-assistant.io/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant + [MQTT](https://en.wikipedia.org/wiki/MQTT) support was added to Home Assistant recently. The [MQTT component](https://home-assistant.io/components/mqtt/) will enable you to do all sort of things. Most likely you will use it to communicate with your devices. But Home Assistant doesn't care where the data is coming from or is limited to real hardware as long as there is MQTT support. This means that it doesn't matter if the data is coming from a human, a web service, or a device. + +A great example is shown in a [Laundry Automation](https://home-assistant.io/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/) post in this blog. + +This post will give you a small overview of some other possibilities on how to use MQTT with Home Assistant. + + + +### Manual usage + +The simplest but not the coolest way as a human to interact with a Home Assistant sensor is launching a command manually. Let's create a "Mood" sensor. For simplicity Home Assistant and the MQTT broker are both running on the same host. The needed configuration snipplets to add to the `configuration.yaml` file consists of two parts: one for the broker and one for the sensor. + +```yaml +mqtt: + broker: 127.0.0.1 + +sensor: + - platform: mqtt + name: "Fabian's Mood" + state_topic: "home-assistant/fabian/mood" +``` + +After a restart of Home Assistant the "Mood" sensor will show up in the frontend. For more details about the configuration of MQTT itself and the sensor, please refer to the [MQTT component](https://home-assistant.io/components/mqtt/) or the [MQTT sensor](https://home-assistant.io/components/sensor.mqtt/) documentation. + +Now we can set the mood. The commandline tool (`mosquitto_pub`) which is shipped with `mosquitto` is used to send an MQTT message. + +```bash +$ mosquitto_pub -h 127.0.0.1 -t "home-assistant/fabian/mood" -m "bad" +``` + +

+ + The Mood sensor +

+ +This is a really bad example. Don't do this in the real world because you won't be able to create diagrams of historical data. Better use a numerical value. + +### Python MQTT bindings + +The last section was pretty boring, I know. Nobody wants to send MQTT messages by hand if there is a computer on the desk. If you are playing the lottery this section is for you. If not, read it anyway because the lottery is just an example :-). + +This example is using the [Paho MQTT Python binding](https://eclipse.org/paho/clients/python/) because those binding should be available on the host where Home Assistant is running. If you want to use this example on another machine, please make sure that the bindings are installed (`pip3 install paho-mqtt`). + +The first step is to add an additional MQTT sensor to the `configuration.yaml` file. The sensor will be called "Lottery" and the unit of measurement will be "No.". + +```yaml + - platform: mqtt + name: "Lottery" + state_topic: "home-assistant/lottery/number" + unit_of_measurement: "No." +``` + +Don't forget to restart Home Assistant to make the configuration active. + +To play, we need numbers from 1 to 49 which can be marked on the ticket. Those numbers should be random and displayed in the Home Assistant frontend. The Python script below is another simple example on how to send MQTT messages from the commandline; this time in a loop. For further information and examples please check the [Paho MQTT](https://eclipse.org/paho/clients/python/docs/) documentation. + +```python +#!/usr/bin/python3 +# +import time +import random +import paho.mqtt.client as mqtt +import paho.mqtt.publish as publish + +broker = '127.0.0.1' +state_topic = 'home-assistant/lottery/number' +delay = 5 + +# Send a single message to set the mood +publish.single('home-assistant/fabian/mood', 'good', hostname=broker) + +# Send messages in a loop +client = mqtt.Client("ha-client") +client.connect(broker) +client.loop_start() + +while True: + client.publish(state_topic, random.randrange(0, 50, 1)) + time.sleep(delay) +``` + +Every 5 seconds a message with a new number is sent to the broker and picked up by Home Assistant. By the way, my mood is much better now. + +

+ + The Lottery sensor +

+ +With only a few lines of Python and an MQTT broker you can create your own "smartdevice" or send information to Home Assistant which you haven't think of. Of course this is not limited to Python. If there is an MQTT library available, the device can be used with Home Assistant now. + +### Arduino + +To get started with real hardware that is capable to send MQTT messages, the Arduino platform is an inexpensive way to do it. In this section an Arduino UNO with an Ethernet shield and a photo resistor is used. The photo resistor is connected to analog pin 0 (A0) and has an output from 0 to 1024. + +

+ + The Arduino UNO with Ethernet shield and photo resistor +

+ +The [MQTT client](http://knolleary.github.io/pubsubclient/) for the Arduino needs to be available in your Arduino IDE. Below you will find a sketch which could act as a starting point. Please modify the IP addresses, the MAC address, and the pin as needed and upload the sketch to your Arduino. + +```c +/* + This sketch is based on the basic MQTT example by + http://knolleary.github.io/pubsubclient/ +*/ + +#include +#include +#include + +#define DEBUG 1 // Debug output to serial console + +// Device settings +IPAddress deviceIp(192, 168, 0, 43); +byte deviceMac[] = { 0xAB, 0xCD, 0xFE, 0xFE, 0xFE, 0xFE }; +char* deviceId = "sensor01"; // Name of the sensor +char* stateTopic = "home-assistant/sensor01/brightness"; // MQTT topic where values are published +int sensorPin = A0; // Pin to which the sensor is connected to +char buf[4]; // Buffer to store the sensor value +int updateInterval = 1000; // Interval in milliseconds + +// MQTT server settings +IPAddress mqttServer(192, 168, 0, 12); +int mqttPort = 1883; + +EthernetClient ethClient; +PubSubClient client(ethClient); + +void reconnect() { + while (!client.connected()) { +#if DEBUG + Serial.print("Attempting MQTT connection..."); +#endif + if (client.connect(deviceId)) { +#if DEBUG + Serial.println("connected"); +#endif + } else { +#if DEBUG + Serial.print("failed, rc="); + Serial.print(client.state()); + Serial.println(" try again in 5 seconds"); +#endif + delay(5000); + } + } +} + +void setup() { + Serial.begin(57600); + client.setServer(mqttServer, mqttPort); + Ethernet.begin(deviceMac, deviceIp); + delay(1500); +} + +void loop() { + if (!client.connected()) { + reconnect(); + } + client.loop(); + + int sensorValue = analogRead(sensorPin); +#if DEBUG + Serial.print("Sensor value: "); + Serial.println(sensorValue); +#endif + client.publish(stateTopic, itoa(sensorValue, buf, 10)); + delay(updateInterval); +} +``` + +The Arduino will send the value of the sensor every second. To use the data in Home Assistant, add an additional MQTT sensor to the `configuration.yaml` file. + +```yaml + - platform: mqtt + name: "Brightness" + state_topic: "home-assistant/sensor01/brightness" + unit_of_measurement: "cd" +``` + +After a restart of Home Assistant the values of your Arduino will be available. + +

+ + The Brightness sensor +

+ +I hope that this post could give you some ideas about the usage Home Assistant and MQTT. If you are working on a cool project that includes Home Assistant, please let us now. +]]>
+
+ +
diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html new file mode 100644 index 0000000000..2a572b4067 --- /dev/null +++ b/blog/categories/mqtt/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Category: MQTT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: MQTT +

+
+
+
+

2016

+ + +

2015

+ + +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/organization/atom.xml b/blog/categories/organization/atom.xml new file mode 100644 index 0000000000..bf3c3e6fb8 --- /dev/null +++ b/blog/categories/organization/atom.xml @@ -0,0 +1,224 @@ + + + + <![CDATA[Category: Organization | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Home Assistant Governance [updated]]]> + + 2017-01-21T23:05:00+00:00 + https://home-assistant.io/blog/2017/01/21/home-assistant-governance + UPDATE JAN 28, 2017 + +After feedback from the community we have updated [the CLA][cla] and the license that Home Assistant is distributed under. For the CLA, instead of enforcing requirements on the grants and code, we now require contributions to be licensed under the Apache 2.0 license. Special thanks to [Matthew Garrett][mjg59] for his feedback and advice. + +Starting with release 0.37, Home Assistant will re-license the current code under [the Apache 2.0 license][license]. This is the license that will be used moving forward for all projects under our organization. + +--- + +The Home Assistant project and community has seen enormous growth in the last three years. Many volunteers work tirelessly everyday to give you all the awesomeness that you see today. Much more work is involved than many people realize. Beyond simply coding Home Assistant, volunteers continually maintain related projects, update documentation, post examples, author blog posts, and moderate the forums and chat. This is something that we want to keep safe and functional, even as we grow. + +Starting today we are announcing a few initiatives to help protect our users, contributors and community members. + + +## Code of Conduct + +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 organization. + +[Read the Code of Conduct][coc] + +[coc]: /developers/code_of_conduct/ + +## Contributor License Agreement + +Moving forward we will also require that all contributors to any project have electronically signed our [contributor license agreement (CLA)][cla]. ~~We have adopted the CLA that GitHub uses for their projects~~ (see update at the top). Currently we have no plans to retroactively require a CLA for previous contributions, only those going forward. + +Until a signed CLA is on file your pull request will not be reviewed or accepted. When you open a new pull request, if you do not have a CLA on file, our helpful bot will walk you through the steps to complete the process. + +**We intend to require an electronically signed contributor licensing agreement for all contributors beginning with our next release (0.37), currently scheduled for release on Saturday, January 28th, 2017 (one week from today).** The CLA is being added to all repositories today. + +A CLA is difficult to describe but GitHub did an excellent job so this next section is taken from [https://cla.github.com][gh-cla]: + +### What is a Contributor License Agreement? + +A Contributor License Agreement, known as a CLA, asks contributors to confirm that: + +1. Anyone can use your contributions anywhere, for free, forever. +2. Your contributions do not infringe on anyone else's rights. + +The GitHub CLA helps ensure the smooth operation and usability of the open source projects that we maintain. + +### Why is a CLA necessary? + +It depends on the jurisdiction, but in the United States, contributions are owned by the author or their employer. When the contribution is accepted, the project becomes a bundle of derivative works. The agreement of all contributors are necessary to maintain distribution of the complete project and to any licensing agreement. + +### Isn’t that the purpose of an open source license? + +Most open source licenses deal with use of the original code, and don’t refer to contributions, or derivatives of the original. + +### How does a CLA protect a project? + +If the owner of a contribution decides that they don’t want the contribution to be part of the project or in any given distribution, the law is on their side. The project, contributors, and users may be subject to legal action. This may require payment of damages and could prevent further usage or contributions until the matter is resolved. + +Even when there is no legal pursuit, too much ambiguity can jeopardize or doom a project by preventing those that can’t risk legal action from getting involved. + +### Why does it seem like only "corporate" projects have a CLA? + +There are many projects without corporate ownership that use a CLA or even a copyright assignment: jQuery and Eclipse, for example. However, it is true that projects with financial backing tend to be at a higher risk of becoming a target, so they may have a lower tolerance for legal ambiguity. + +## Security requirements + +With more collaborators involved with Home Assistant we are also exposing ourselves to more risk as more people have write access. As such we taking the following steps. + + 1. As of November 3rd, 2016, all collaborators have been required to have 2 factor authentication (2FA) enabled on their GitHub account. + 2. Going forward, we will do an audit from time to time and strip collaborators from write access if they haven't contributed for a while. This is in no sense meant to boot people, and you are absolutely eligible to get it back in the future when you wish start contributing again. + +## Licensing + +We will now ensure that a `LICENSE.md` file exists in all projects under the Home Assistant organization and is an [OSI approved open source license](https://opensource.org/licenses) or a [Creative Commons](https://creativecommons.org) license. + +### Code License + +The chosen license for all code projects under the Home Assistant organization is [the Apache 2.0 license][license]. + +### Documentation License + +All content on home-assistant.io and all other documentation/asset projects under the Home Assistant organization will be licensed under the Creative Commons License, specifically the [Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/) license. + +## Crediting contributors + +We have now mostly automated updating the [Credits](/developers/credits/) page so that contributors get their attribution more quickly. + +## 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][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 +]]> + + + + <![CDATA[Explaining the Updater]]> + + 2016-10-25T21:30:00+00:00 + https://home-assistant.io/blog/2016/10/25/explaining-the-updater + +## Why we changed the updater +This change was driven by two important factors. + +### Improving the security of the users. + +As a user, you will be able to be notified if you are running a Home Assistant version that includes components that have known security flaws. + +Although we hope to not have to use this feature often, it is important for us to be able to reach out to impacted users. We had the need for such a feature once in the past. Due to a bug the forecast.io sensor was making a huge amount of API requests causing some of our users to get charged because they went over the free quota. + +Please note that this functionality is not done yet but will be available in a future release. + +### Focusing our resources where it matters + +As developers of Home Assistant, we will be able to see in what kind of environments Home Assistant is running. Here’s a few data points we didn’t have until now: + +* Total number of instances +* Which operating systems versions and flavors are in use +* Python version +* What option is more popular: Docker, Virtualenv or bare metal installs? +* How popular is our new [Raspberry Pi image][rpi-image]? + + +## Why we look up your IP address with GeoIP +We store the city so that we can see where our users are from. This information will be used to give us a better insight in where our users are from. This will help us gather data to see if we should for example prioritize internationalization. In addition, we previously had a nasty bug with the `sun` component in which users above a certain latitude were having crashes multiple times a day. Had the updater component been in place we could have targeted a special priority update notification only to them. + +As stated in the release blog post, the location information is _not_ provided by your local Home Assistant installation but is instead gathered by comparing your IP address against the [GeoLite2 data created by MaxMind][geolite]. From their documentation: + +> IP geolocation is inherently imprecise. Locations are often near the center of the population. Any location provided by a GeoIP database should not be used to identify a particular address or household. + +## Why is it enabled by default +We decided to have it enabled by default because we consider the information that is gathered not harmful. We understand that not everyone will agree with us and so we have provided [multiple ways to opt out][opt-out]. + +It is in our short-term planning to add an option to control this to our frontend. + +## Source Code +The source code of our updater AWS Lambda function is now available [here][source]. + + +[0.31]: /blog/2016/10/22/flash-briefing-updater-hacktoberfest/#comment-2965607849 +[geolite]: https://dev.maxmind.com/geoip/geoip2/geolite2/ +[opt-out]: /components/updater/ +[rpi-image]: /blog/2016/10/01/we-have-raspberry-image-now/ +[source]: https://github.com/home-assistant/Analytics-Receiver +]]> + + + + <![CDATA[To Infinity and Beyond 🚀]]> + + 2016-04-19T22:44:00+00:00 + https://home-assistant.io/blog/2016/04/19/to-infinity-and-beyond + + + + + <![CDATA[New logo for Home Assistant]]> + + 2015-03-08T22:16:10+00:00 + https://home-assistant.io/blog/2015/03/08/new-logo + + +The old logo, the new detailed logo and the new simple logo. +

+]]>
+
+ +
diff --git a/blog/categories/organization/index.html b/blog/categories/organization/index.html new file mode 100644 index 0000000000..5d74757d91 --- /dev/null +++ b/blog/categories/organization/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Category: Organization - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/owntracks/atom.xml b/blog/categories/owntracks/atom.xml new file mode 100644 index 0000000000..5359f57d7a --- /dev/null +++ b/blog/categories/owntracks/atom.xml @@ -0,0 +1,307 @@ + + + + <![CDATA[Category: OwnTracks | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[iBeacons: How to track things that can’t track themselves (part II)]]> + + 2016-05-26T11:06:12+00:00 + https://home-assistant.io/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii + Tracking things using iBeacons +In the first part I mentioned that iBeacons just send out *I’m here* packets, and we used this to trigger an update when your phone came close to a fixed beacon. + +But beacons don’t have to be fixed. + +Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an *I’m here* message then it knows the beacon is close. + +If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn't have any tracking technology itself. + +So if you put an iBeacon on your keys or in your car - then you can track them. + +

+ + Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective! +

+ + + +It’s easier to set up OwnTracks and HA to track a mobile beacon than the fixed beacon I discussed in Part 1, because you only need to tell OwnTracks about your iBeacon. You don’t need to configure HA at all. + +

OwnTracks currently only supports mobile beacons on iOS.

+ +You set up the beacon the same way as we discussed in part 1. The only difference is that instead of calling the region the name of a location (eg -drive) you call it the name of the device you want to track (eg -keys). Remember the leading ‘-’ that makes the connection more reliable. + +

+ +

+ +Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. + +Because you turned *Share* on for the region, when OwnTracks sees the beacon it will send HA a message. HA will use this message to add the beacon as a tracked device if it hasn’t seen it before. So you should see a new device appear in HA called device_tracker.beacon_[name] - and its location will be where your phone thought it was when it last saw the beacon. + +

+ +

+ +If your phone moves and sends HA a new location while it is still in range of the beacon - HA will update the location of the beacon. So if go for a drive in your car - you will see both your phone and the *device_tracker.beacon_car* move together. + +If you park your car and go shopping - *device_tracker.beacon_car* will stop moving. + +With the basic tracking working - you can use automation to do things like open your gates if your car comes home + +```yaml +automation: + - alias: 'Open gate' + trigger: + - platform: state + entity_id: device_tracker.beacon_car + from: 'not_home' + to: 'home' + condition: + - condition: state + entity_id: switch.gate + state: 'off' + action: + service: switch.turn_on + entity_id: switch.gate +``` + +Or warn you if you leave your keys behind + +```yaml +automation: + - alias: 'Forgotten keys' + trigger: + platform: template + value_template: '{{ states.device_tracker.greg_gregphone.state != states.device_tracker.beacon_keys.state}}' + condition: + condition: template + value_template: '{{ states.device_tracker.greg_gregphone.state != "home" }}' + action: + service: script.turn_on + entity_id: script.send_key_alert + + - alias: 'Forgotten keys - cancel' + trigger: + platform: template + value_template: '{{ states.device_tracker.greg_gregphone.state == states.device_tracker.beacon_keys.state }}' + condition: + - condition: state + entity_id: script.send_key_alert + state: 'on' + action: + service: script.turn_off + entity_id: script.send_key_alert +``` + +```yaml +script: + send_key_alert: + sequence: + - delay: + minutes: 2 + - service: notify.notify + data: + message: 'You forgot your keys' + target: 'device/gregs_iphone' +``` + + +(The delay is needed for two reasons: - +1. HA updates the beacon and phone locations at slightly different times - so you don’t want the automation to trigger in the gap between the updates +2. I’ve found that beacons (especially the low power Estimote Nearables) can get disconnected for a few seconds so it’s best to wait a minute or so before deciding that you’ve left your keys behind) + + +### Using both types of iBeacons at the same time +Of course you can use both fixed and mobile beacons at the same time. I want my gates to open when I arrive home in the car - so I use an iBeacon in the car so that I can track the car, and an iBeacon on my drive so that a location update is triggered when I arrive. I've been experimenting with a high power beacon in a waterproof box on my drive which seems to work well to notice when I get home. + +

+ +

+Long range / High power beacon + +

+ +

+Waterproof beacon + + +### Buying Beacons +This isn’t a buyer's guide, but I just wanted to mention the iBeacons I’ve been using. I think you should be able to use any iBeacon with HA and OwnTracks. You generally can’t buy beacons in your local electronics shop - so I just wanted to briefly mention the two suppliers I’ve used so far. + +I’ve bought quite a few iBeacons from a company called [Blue Sense Networks](http://bluesensenetworks.com/). I work in the tech startup sector in the UK so I partly chose them because they are a local start-up who seemed worth supporting. The products, support and software all seem good. I use a number of their beacons - from a simple USB dongle, to a long range beacon. All their products have batteries that can be changed (or no batteries in the case of the externally powered USB device) - and you can configure all the parameters you’d want to using their software. I had one software issue, support got back to me at a weekend(!) - and the issue was resolved with a software release two days later. + +All the beacons seem fine - and the long range unit does work over a longer range than my other beacons. + +I bought some other beacons from a US/Polish startup called [Estimote](http://estimote.com/), who I think are better known. I bought a developer pack of 10 of their *nearables* which as well as being iBeacons also send out other data (orientation and motion) using their own protocol. This is interesting if you’re developing your own application, but for OwnTracks and HA they are just regular beacons. They are small and self adhesive - so you can stick them to things (like your keys). You can’t change all the parameters on these devices (UUID/Major/Minor are fixed) - and the batteries can’t be replaced. I also killed one of the estimote beacons (I assume the battery died) after I carried it around for a few months and dropped it many times! On the other hand they are well priced, small and waterproof! + +I’ve mainly used these as *devices to track* rather that *location* beacons. Estimote also sell some slightly larger iBeacons with replaceable batteries. Estimote support responded quickly and were helpful when I couldn’t work out how to edit their beacon’s parameters (although the answer was *you can’t yet*). + +The larger Blue Sense Network beacons seem to be better at maintaining a connection that the Estimotes - although that might be because I’m reluctant to turn the power to maximum and reduce the gap between sending packets on the Estimotes where I can’t replace the batteries! + +### Conclusion +As I said in [part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better), I’ve found iBeacons to be a good way of improving presence detection. I also used them to track devices like my car and my keys that can’t track themselves. + +I'm still experimenting, so I hope I can do more with iBeacons. I hope I've encouraged you do so the same. If you do please share your experiences. + +### Notes + +Please see the [notes at the end of Part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/#tips) for documentation information. + + +]]>
+
+ + + <![CDATA[iBeacons: Making presence detection work better (part I)]]> + + 2016-04-30T06:50:09+00:00 + https://home-assistant.io/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better + Using beacons to improve OwnTracks location data + +When you use OwnTracks in standard _major move_ mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient! + +Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon. + + + +### Getting Started + +To do this you first need to set up [MQTT] and [OwnTracks] in Home assistant - and make sure that HA can track your phone. + +[MQTT]: /components/mqtt/#picking-a-broker +[OwnTracks]: /components/device_tracker.owntracks/ + +You then have to (A) tell Home Assistant where the beacon is located and (B) tell OwnTracks to recognize the beacon. + +#### A. Tell Home Assistant where your beacon is located + +You tell HomeAssistant about fixed locations by creating a Zone with the longitude and latitude of your beacon. You should also give the zone a name which you will also use when you set up OwnTracks. An an example this zone specifies the location of my drive way. + +**Example `configuration.yaml` entry** + +````yaml + +zone: + - name: 'Drive' + latitude: XXX + longitude: YYY + radius: 100 +```` + +The radius isn’t used by the beacon code, but it is used by the GPS location sensing code. I’ll come back to this a little later. For now just use 50 or 100. + +Once you’ve created the zone - you need to restart HA. The next step is:- + +#### B. Tell OwnTracks to track your beacon + +1. Go to the OwnTracks app on your phone +2. Touch the `Regions` menu at the bottom of the screen +3. Touch the `+` symbol at the top right of the screen +4. Give the beacon a name e.g. `-drive` ’(start the name with a `-` see below for the reason) +5. Turn Share to `On` +6. Skip the `Circular Region` section +7. Enter the `UUID` of your beacon - this may be written on your beacon - or you can copy it from the management app that came with your iBeacon device. It’s a long number – so it’s easier to copy if you can! +8. Enter the `Minor` and `Major` numbers for your iBeacon - or leave them at 0 which will match all beacons with that `UUID` + +

+ +

+ +Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. + +

+ +

+ +When OwnTracks sees the beacon (and turns the region red), it also sends an MQTT packet to HA to say that you have entered that region. + +The result of the configuration above would be to set the location of device.phone to `Drive` , (and the GPS location to XXX,YYY) when your phone sees the beacon. + +So with the steps above you should be able to improve the reliability of tracking your phone - and send timely updates to HA. I did this for my home - and the lights now turn on before I reach the house on foot. If I arrive by car they turn on within a few seconds of arriving, before I can get to the front door. + +I’m also pleased to say I no longer get an _arrive home_ event at 2am that turns the lights on. I hope I’ve convinced you that iBeacons are worth trying! + +### Mixing Beacons and GPS locations + +You will probably use beacons to make entry into your existing GPS zones more reliable. By default either a beacon or a GPS location can cause you to enter a zone - and HA has some logic that should make them two work well together (it ignores GPS updates when you’re in an iBeacon Zone). + +However you can also use beacons for situations where GPS doesn’t work well. + +This might be because the zones are too close together - or even on top of each other! +For example, my wife works next door - and I couldn’t detect whether she’s at home or in the office via GPS because the accuracy wasn’t high enough. However I can do this by using two beacons. + +To make this type of presence detection work you need to turn GPS off for a zone in Home Assistant by making them `passive`. This is important because otherwise HA will try to decide between two close together zones without enough data. This doesn’t work well. + +A passive zone can only be entered via an iBeacon, so a GPS location update will always pick the other zone. + +I set up my Home zone to be a standard region, and my office zone to be passive, so the home zone can be entered in the normal way via either GPS or a Beacon. + +**Example `configuration.yaml` entry** + +````yaml + +zone: + - name: 'Office' + latitude: XXX + longitude: YYY + radius: 3 + passive: true +```` + +You could use this technique to try to detect which room someone is in. This might allow you to notice whether someone is in the living room or the bedroom - even though one is above the other (although beacon packets do pass through walls and floors). + +To get this to work you’ll probably need to experiment with the beacon signal strength to try to match the beacon reception area to the location you want to track. Let me know if you get this to work (it doesn’t make sense in my open plan house) + +### Conclusion + +Presence tracking sounds easy - and it's an important part of Home Automation. Trying it shows how difficult it is to get presence detection right. I've found that iBeacons have improved the reliability and timeliness of knowing where I am, and I hope I encouraged you to try them too. + +### Tips + +You can find out more about configuring the OwnTracks application and beacons [here](http://owntracks.org/booklet/features/beacons/) + +There is information about configuring Homeassistant to use beacons [here](https://home-assistant.io/components/device_tracker.owntracks/) + +#### Connections and disconnecting + +Owntracks treats a region name with a leading `-` as a hint that it shouldn't disconnect after a single missed packet. This improves the ability to keep a connection to a beacon. + +However, even when using this feature I’ve noticed that you can still lose connections (although it seems to vary by beacon manufacturer and type - I’ll talk more about this in _part 2_). This means that it's best to take into account that you may see false enter/leave events in HA. You may be able to improve this by changing how often the beacons send packets - and by increasing the signal strength (both will drain your beacon batteries more quickly). You can usually change these parameters in the app supplied by the iBeacon maker. You can also find some high power beacons (which have worked well for me). + +In automations you can use a `for:` to avoid triggering during a brief disconnect, or use a script with a delay. Stay tuned for _part 2_ for an example of this. + +#### Using Multiple beacons for the same Zone +iBeacons have a `UUID` (usually set to the same value for beacons from the same manufacturer), as well as a `minor` and `major` number. If you set two beacons to have exactly same details then OwnTracks will think multiple beacons are at the same location. + +This means you can have more than one beacon around your home - and a connection to any of them will count as `home` to OwnTracks and HA. This reduces disconnections. + +You can achieve the same effect by using the same the same `UUID` but different `major` / `minor` numbers - and tell OwnTracks not to worry about the `minor` / `major` numbers for a particular region by setting them to 0). + +_Make sure to also check out [part II](/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/) where I talk about how to use iBeacons to track any object._ +]]>
+
+ +
diff --git a/blog/categories/owntracks/index.html b/blog/categories/owntracks/index.html new file mode 100644 index 0000000000..58d0ba4547 --- /dev/null +++ b/blog/categories/owntracks/index.html @@ -0,0 +1,232 @@ + + + + + + + + + Category: OwnTracks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/presence-detection/atom.xml b/blog/categories/presence-detection/atom.xml new file mode 100644 index 0000000000..b1dc1e3efe --- /dev/null +++ b/blog/categories/presence-detection/atom.xml @@ -0,0 +1,152 @@ + + + + <![CDATA[Category: Presence-Detection | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[iBeacons: Making presence detection work better (part I)]]> + + 2016-04-30T06:50:09+00:00 + https://home-assistant.io/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better + Using beacons to improve OwnTracks location data + +When you use OwnTracks in standard _major move_ mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient! + +Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon. + + + +### Getting Started + +To do this you first need to set up [MQTT] and [OwnTracks] in Home assistant - and make sure that HA can track your phone. + +[MQTT]: /components/mqtt/#picking-a-broker +[OwnTracks]: /components/device_tracker.owntracks/ + +You then have to (A) tell Home Assistant where the beacon is located and (B) tell OwnTracks to recognize the beacon. + +#### A. Tell Home Assistant where your beacon is located + +You tell HomeAssistant about fixed locations by creating a Zone with the longitude and latitude of your beacon. You should also give the zone a name which you will also use when you set up OwnTracks. An an example this zone specifies the location of my drive way. + +**Example `configuration.yaml` entry** + +````yaml + +zone: + - name: 'Drive' + latitude: XXX + longitude: YYY + radius: 100 +```` + +The radius isn’t used by the beacon code, but it is used by the GPS location sensing code. I’ll come back to this a little later. For now just use 50 or 100. + +Once you’ve created the zone - you need to restart HA. The next step is:- + +#### B. Tell OwnTracks to track your beacon + +1. Go to the OwnTracks app on your phone +2. Touch the `Regions` menu at the bottom of the screen +3. Touch the `+` symbol at the top right of the screen +4. Give the beacon a name e.g. `-drive` ’(start the name with a `-` see below for the reason) +5. Turn Share to `On` +6. Skip the `Circular Region` section +7. Enter the `UUID` of your beacon - this may be written on your beacon - or you can copy it from the management app that came with your iBeacon device. It’s a long number – so it’s easier to copy if you can! +8. Enter the `Minor` and `Major` numbers for your iBeacon - or leave them at 0 which will match all beacons with that `UUID` + +

+ +

+ +Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. + +

+ +

+ +When OwnTracks sees the beacon (and turns the region red), it also sends an MQTT packet to HA to say that you have entered that region. + +The result of the configuration above would be to set the location of device.phone to `Drive` , (and the GPS location to XXX,YYY) when your phone sees the beacon. + +So with the steps above you should be able to improve the reliability of tracking your phone - and send timely updates to HA. I did this for my home - and the lights now turn on before I reach the house on foot. If I arrive by car they turn on within a few seconds of arriving, before I can get to the front door. + +I’m also pleased to say I no longer get an _arrive home_ event at 2am that turns the lights on. I hope I’ve convinced you that iBeacons are worth trying! + +### Mixing Beacons and GPS locations + +You will probably use beacons to make entry into your existing GPS zones more reliable. By default either a beacon or a GPS location can cause you to enter a zone - and HA has some logic that should make them two work well together (it ignores GPS updates when you’re in an iBeacon Zone). + +However you can also use beacons for situations where GPS doesn’t work well. + +This might be because the zones are too close together - or even on top of each other! +For example, my wife works next door - and I couldn’t detect whether she’s at home or in the office via GPS because the accuracy wasn’t high enough. However I can do this by using two beacons. + +To make this type of presence detection work you need to turn GPS off for a zone in Home Assistant by making them `passive`. This is important because otherwise HA will try to decide between two close together zones without enough data. This doesn’t work well. + +A passive zone can only be entered via an iBeacon, so a GPS location update will always pick the other zone. + +I set up my Home zone to be a standard region, and my office zone to be passive, so the home zone can be entered in the normal way via either GPS or a Beacon. + +**Example `configuration.yaml` entry** + +````yaml + +zone: + - name: 'Office' + latitude: XXX + longitude: YYY + radius: 3 + passive: true +```` + +You could use this technique to try to detect which room someone is in. This might allow you to notice whether someone is in the living room or the bedroom - even though one is above the other (although beacon packets do pass through walls and floors). + +To get this to work you’ll probably need to experiment with the beacon signal strength to try to match the beacon reception area to the location you want to track. Let me know if you get this to work (it doesn’t make sense in my open plan house) + +### Conclusion + +Presence tracking sounds easy - and it's an important part of Home Automation. Trying it shows how difficult it is to get presence detection right. I've found that iBeacons have improved the reliability and timeliness of knowing where I am, and I hope I encouraged you to try them too. + +### Tips + +You can find out more about configuring the OwnTracks application and beacons [here](http://owntracks.org/booklet/features/beacons/) + +There is information about configuring Homeassistant to use beacons [here](https://home-assistant.io/components/device_tracker.owntracks/) + +#### Connections and disconnecting + +Owntracks treats a region name with a leading `-` as a hint that it shouldn't disconnect after a single missed packet. This improves the ability to keep a connection to a beacon. + +However, even when using this feature I’ve noticed that you can still lose connections (although it seems to vary by beacon manufacturer and type - I’ll talk more about this in _part 2_). This means that it's best to take into account that you may see false enter/leave events in HA. You may be able to improve this by changing how often the beacons send packets - and by increasing the signal strength (both will drain your beacon batteries more quickly). You can usually change these parameters in the app supplied by the iBeacon maker. You can also find some high power beacons (which have worked well for me). + +In automations you can use a `for:` to avoid triggering during a brief disconnect, or use a script with a delay. Stay tuned for _part 2_ for an example of this. + +#### Using Multiple beacons for the same Zone +iBeacons have a `UUID` (usually set to the same value for beacons from the same manufacturer), as well as a `minor` and `major` number. If you set two beacons to have exactly same details then OwnTracks will think multiple beacons are at the same location. + +This means you can have more than one beacon around your home - and a connection to any of them will count as `home` to OwnTracks and HA. This reduces disconnections. + +You can achieve the same effect by using the same the same `UUID` but different `major` / `minor` numbers - and tell OwnTracks not to worry about the `minor` / `major` numbers for a particular region by setting them to 0). + +_Make sure to also check out [part II](/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/) where I talk about how to use iBeacons to track any object._ +]]>
+
+ +
diff --git a/blog/categories/presence-detection/index.html b/blog/categories/presence-detection/index.html new file mode 100644 index 0000000000..027d5964fc --- /dev/null +++ b/blog/categories/presence-detection/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Category: Presence-Detection - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/public-service-announcement/atom.xml b/blog/categories/public-service-announcement/atom.xml new file mode 100644 index 0000000000..4658d8d945 --- /dev/null +++ b/blog/categories/public-service-announcement/atom.xml @@ -0,0 +1,151 @@ + + + + <![CDATA[Category: Public-Service-Announcement | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Clarification about Emulated Hue]]> + + 2018-01-21T01:00:00+00:00 + https://home-assistant.io/blog/2018/01/21/clarification-emulated-hue + Alexa type is deprecated and will be removed in a future version + +That config option should never have been called `type: alexa` but instead have been called `mode: legacy`. If you think about it, why would emulating something even have different modes it emulates based on the consumer? That means that one of the two emulation modes is incorrect. + +The old implementation was not 100% correct. It was correct enough to work with Alexa (the original target) but not with Google Home. When fixing Emulated Hue we added `type: alexa` to re-enable the old implementation so that people did not have to go through the trouble to re-add their Alexa devices. The option was deprecated to indicate that we would remove the incorrect emulation in the future. However, we forgot about actually following through with that. + +The mistake we made was calling the correct mode `google_home` although it had nothing to do with Google Home. It confused people and they kept adding `type: alexa` to their configuration, triggering the deprecation warning. + +The warning will be updated starting Home Assistant 0.62 and will also include a link to this blog post. + +More info: + +- To read about what was incorrect in the first version of Emulated Hue, take a look at the PR fixing it: [Re-org emulated_hue and fix google home][pr1]. +- Read the [documentation on how to configure Emulated Hue][eh-conf] + +[pr1]: https://github.com/home-assistant/home-assistant/pull/4708 +[pr2]: https://github.com/home-assistant/home-assistant/pull/5549 +[eh-conf]: https://home-assistant.io/components/emulated_hue/#configuration +]]> + + + + <![CDATA[[Update: fixed] A frank and serious warning about X]]> + + 2017-06-20T01:04:05+00:00 + https://home-assistant.io/blog/2017/06/20/things-you-should-know-about-senic-covi + +

+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 +]]>
+
+ + + <![CDATA[[Update: decision reversed!] Philips Hue blocks 3rd party lights]]> + + 2015-12-12T18:44:00+00:00 + https://home-assistant.io/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs + + +Philips Hue FAQ entries regarding reversing the decision. +

+ +*Original post:* + + +Philips Hue was one of the first to get smart lights accepted by the mainstream. Their Zigbee-based hub is rock solid, never crashes, great API and worked with other Zigbee light bulbs too. They are a bit expensive but the platform was worth every penny, till now. + +Yesterday a thread on [/r/homeautomation][reddit-hue] published that Philips Hue now blocks all but their own bulbs and those of "friends of Hue". I have been able to confirm this in the [Philips Hue FAQ][philips-hue-faq] (Update Dec 14: they have removed the entries - [mirror here][philips-hue-faq-mirror]): + +

+ +Philips Hue FAQ entries regarding 3rd party light bulbs. +

+ +This means that after you update your Hue bridge to the latest version: + + - As of now, you can still use your existing paired 3rd party light bulbs + - You cannot pair new 3rd party light bulbs + - You're out of luck if for some reason you have to pair existing 3rd party light bulbs again + - Resetting your hub will force pairing of all your bulbs again + +If you own a Philips Hue hub and are using 3rd party light bulbs, make sure you do not upgrade your hub if you want to be able to pair new 3rd party lightbulbs. But do realize that you are sitting on a ticking time bomb. + +I have read, but have been unable to confirm it, that resetting your hub will force a software upgrade. So beware of that too. + +I will no longer suggest people to buy into the Philips Hue ecosystem. + +[philips-reverse]: http://www.developers.meethue.com/documentation/friends-hue-update +[reddit-hue]: https://www.reddit.com/r/homeautomation/comments/3wet8h/fyi_the_hue_hub_is_now_blocking_third_party/ +[philips-hue-faq]: http://www2.meethue.com/en-us/support/search/?q=Another+brand +[philips-hue-faq-mirror]: /images/blog/2015-12-philips-hue-3rd-party/mirror.png +]]>
+
+ +
diff --git a/blog/categories/public-service-announcement/index.html b/blog/categories/public-service-announcement/index.html new file mode 100644 index 0000000000..b04765a3d3 --- /dev/null +++ b/blog/categories/public-service-announcement/index.html @@ -0,0 +1,251 @@ + + + + + + + + + Category: Public-Service-Announcement - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml new file mode 100644 index 0000000000..d8ffb01c8d --- /dev/null +++ b/blog/categories/release-notes/atom.xml @@ -0,0 +1,3345 @@ + + + + <![CDATA[Category: Release-Notes | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[0.65: Rename entities, new filter sensor, UpCloud and Channels]]> + + 2018-03-09T00:01:00+00:00 + https://home-assistant.io/blog/2018/03/09/release-65 + + +Release 0.65 has arrived and oh boy, is it awesome. First off, in case you have missed the previous release notes and [announcements](https://home-assistant.io/blog/2017/10/06/deprecating-python-3.4-support/): **Starting with this release, Home Assistant has dropped support for Python 3.4. The minimum supported version is now Python 3.5.3.** If you are on Hass.io or Docker, you'll automatically be running the latest and greatest. If you're on an older Hassbian installation or did your own Linux setup you'll need to upgrade to at least Python 3.5.3. + +## Naming entities + +With the introduction of the entity registry in 0.63, Home Assistant is making sure that the same devices always receive the same entity IDs. This release is taking it a step further by allowing users to change the name of a device from the frontend. Changing the name will be instantly applied and overrides whatever name the device is given by the integration. If you want to switch back to the name from the integration, set the name to blank. + +_This feature is, just like the entity registry, only available for integrations that provide unique IDs for their entities. Adding this to each integration is still a work in progress._ + +

+ Screencap of interaction with the UI to override the name of a light. + The new entity registry settings page in action. +

+ +## Filter sensor + +The [filter sensor][sensor.filter docs] is a new 2nd order sensor by [@dgomes]: it will consume data from a sensor entity and apply filters to it. For the initial implementation it comes with Low-pass, Outlier and Throttle filters. Expect more to be added in the future. + +```yaml +sensor: + - platform: filter + name: "filtered realistic humidity" + entity_id: sensor.realistic_humidity + filters: + - filter: outlier + window_size: 4 + radius: 4.0 + - filter: lowpass + time_constant: 10 + precision: 2 +``` + +

+ Chart showing a humidity sensor with a lot of spikes and a smooth graph produced by the new filter sensor. + Graph showing both the input sensor and the output of the filter sensor. +

+ +## Light Group + +We have had some discussion lately and realized that our current group component is very limiting. Extending it would probably lead to more confusion so we've decided to take a new approach: groups that are designed to be part of a specific component. The first one in this series comes at the hand of [@OttoWinter]: the group light ([docs][light.group docs]). + +The group light creates a single light inside Home Assistant that is representing a group of lights. All commands will be forwarded and the state is a combination of all the lights. + +```yaml +light: + - platform: group + name: Cool Light Group + entities: + - light.amazing_light + - light.foobar + - light.sun +``` + +## HomeKit + +HomeKit got some more upgrades. We've added support for temperature sensors in Fahrenheit, alarm systems, switches and thermostats. Just a few releases more and we should be able to cover it all. + +## Optional words for the Conversation component + +The [conversation component](/components/conversation/) has always been a great introduction to controlling your house by voice. There is no hotword detection or powerful language engine behind it, but it gives a great intro to what is possible. Starting with this release, it will get a little bit more powerful with the introduction of optional words. To mark a word optional, wrap it in square brackets: `Change the light to [the color] {color}`. + +```yaml +# Example configuration.yaml entry +conversation: + intents: + LivingRoomTemperature: + - What is the temperature in the living room + - What is [the] living room temperature + +intent_script: + LivingRoomTemperature: + speech: + text: It is currently degrees in the living room. +``` + +

+ Screenshot of the frontend with the conversation panel open. + Have conversations with Home Assistant via the conversation component. +

+ +## New Platforms + +- Synology Chat as a notification platform ([@cmsimike] - [#12596]) ([notify.synology_chat docs]) (new-platform) +- KNX Component: Scene support and expose sensor values ([@Julius2342] - [#11978]) ([knx docs]) ([scene docs]) ([binary_sensor.knx docs]) (new-platform) +- Adds simulated sensor ([@robmarkcole] - [#12539]) ([sensor.simulated docs]) (new-platform) +- Add Songpal ("Sony Audio Control API") platform ([@rytilahti] - [#12143]) ([media_player.songpal docs]) (new-platform) +- Add UpCloud platform ([@scop] - [#12011]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) (new-platform) +- Added Sense energy monitor sensor ([@kbickar] - [#11580]) ([sensor.sense docs]) (new-platform) +- Filter Sensor ([@dgomes] - [#12650]) ([sensor.filter docs]) (new-platform) +- Add light.group platform ([@OttoWinter] - [#12229]) ([light.group docs]) (new-platform) +- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) +- Add support for Zillow Zestimate sensor ([@jcconnell] - [#12597]) ([sensor.zestimate docs]) (new-platform) +- Add a Media Player Component for Channels ([@maddox] - [#12937]) ([media_player.channels docs]) (new-platform) +- Add support for alarm system, switch and thermostat to homekit ([@maxclaey] - [#12819]) ([homekit docs]) (new-platform) +- Add camera proxy ([@PhracturedBlue] - [#12006]) ([camera.proxy docs]) (new-platform) + +## Release 0.65.1 - March 10 + +- allow ios device tracker see calls to go through ([@balloob] - [#13020]) ([device_tracker docs]) +- Fix config component loading YAML ([@kellerza] - [#13024]) +- Make Throttle async aware ([@balloob] - [#13027]) +- Add support for input boolean to Google Assistant ([@balloob] - [#13030]) ([google_assistant docs]) +- HomeKit Bugfix: names ([@cdce8p] - [#13031]) ([homekit docs]) + +## Release 0.65.2 - March 10 + +- Fix translations sometimes not loading in the frontend ([@armills]) +- Fix sensibo's min/max_temp properties ([@jra3] - [#12996]) ([climate.sensibo docs]) +- Use request.query ([@ptarjan] - [#13037]) ([wink docs]) +- Ensure we have valid config AFTER merging packages #13015 ([@kellerza] - [#13038]) +- Bump pysabnzbd version ([@jeradM] - [#13042]) ([sensor.sabnzbd docs]) +- Fix async lifx_set_state ([@amelchio] - [#13045]) ([light.lifx docs]) +- Yeelight version bumped. ([@syssi] - [#13056]) ([light.yeelight docs]) +- Don't call async from sync ([@balloob] - [#13057]) ([xiaomi_aqara docs]) +- Convert decimals from SQL results ([@balloob] - [#13059]) ([sensor.sql docs]) + +## Release 0.65.3 - March 11 + +- Implement Hue available property ([@balloob] - [#12939]) ([light.hue docs]) +- Catch async from sync context by running asyncio event loop in debug mode during tests ([@balloob] - [#13058]) ([camera.arlo docs]) ([climate.generic_thermostat docs]) +- Fixes KNX fire event problem, issue https://github.com/home-assistant/home-assistant/issues/13049 ([@Julius2342] - [#13062]) ([knx docs]) +- Bump iGlo Version ([@jesserockz] - [#13063]) ([light.iglo docs]) +- Fix Tado doing async wrong ([@balloob] - [#13078]) ([device_tracker.tado docs]) +- Synology Camera: auto-renew session when it's expired ([@snjoetw] - [#13079]) ([camera.synology docs]) +- Revert "Cast automatically drop connection (#12635)" ([@OttoWinter] - [#13094]) ([media_player.cast docs]) +- Bump pyvera to 0.2.42. Improve event loop robustness. ([@pavoni] - [#13095]) ([vera docs]) +- Fix Kodi by updateding jsonrpc-websocket to 0.6 ([@Tadly] - [#13096]) ([media_player.kodi docs]) + +## 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. + +## 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. + + +## Breaking Changes + +- Insteon PLM: If you have created platform overrides in your configuration.yaml file to change a your INSTEON device to map to a different Home Assistant platform, that mapping will no longer be in effect. Please see the new device override capabilities in the [insteon_plm documentation](https://home-assistant.io/components/insteon_plm/). ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change) +- AirVisual's air index unit is AQI (Air Quality Index), not PSI (Pressure per Square Inch). ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change) +- TekSavvy Sensor: The sensor entity id for peak upload usage used to be `sensor.teksavvy_on_peak_upload_` this has been changed to `sensor.teksavvy_on_peak_upload`. The `usage` title was shared between and therefore indeterminate between GB and % usage. Therefore % usage entity ID has been changed to `sensor.teksavvy_usage_ratio` ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change) +- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) +- zip_code for the Pollen integration is now required to have quotes around it to prevent accidental errors: `zip_code: "00544"` ([@bachya] - [#12934]) ([sensor.pollen docs]) (breaking change) +- Google Assistant integration: It is no longer possible to override the domain that Home Assistant uses for an entity. This was bound to go wrong when we would test supported features for different domains. Also removed support for disguising temperature sensors as thermostats. We should follow the traits that Google offer us and not offer things that will only work half. ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change) +- The LimitlessLED white temperature range has been adjusted and should now match the Mi-Light smartphone app for identical Kelvin values. ([@amelchio] - [#12971]) ([light.limitlessled docs]) (breaking change) + +## All changes + +- Hello Python 3.5 ([@balloob] - [#12610]) +- Fix CODEOWNERS permissions ([@OttoWinter] - [#12621]) +- Xiaomi Aqara Gateway: Service descriptions added ([@syssi] - [#12631]) +- Removing asyncio.coroutine syntax from some components ([@Julius2342] - [#12507]) +- Allow renaming entities in entity registry ([@balloob] - [#12636]) ([config docs]) +- Check if $files is empty, don't try to execute it ([@armills] - [#12651]) +- Removed py34 ([@cdce8p] - [#12648]) +- Improved Homekit tests ([@cdce8p] - [#12647]) ([homekit docs]) +- Removing asyncio.coroutine syntax from HASS core ([@Julius2342] - [#12509]) +- Synology Chat as a notification platform ([@cmsimike] - [#12596]) ([notify.synology_chat docs]) (new-platform) +- Enable pytradfri during build, and include in Docker ([@lwis] - [#12662]) +- Upgrade insteonplm to 0.8.2 (required refactoring) ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change) +- Homekit Update, Support for TempSensor (°F) ([@cdce8p] - [#12676]) ([homekit docs]) +- Fix formatting of minutes for sleep start in the fitbit sensor ([@awkwardDuck] - [#12664]) ([sensor.fitbit docs]) +- KNX Component: Scene support and expose sensor values ([@Julius2342] - [#11978]) ([knx docs]) ([scene docs]) ([binary_sensor.knx docs]) (new-platform) +- Added config validator for future group platforms ([@cdce8p] - [#12592]) +- Adds simulated sensor ([@robmarkcole] - [#12539]) ([sensor.simulated docs]) (new-platform) +- Add history_graph component to demo ([@balloob] - [#12681]) ([demo docs]) +- Next generation of Xiaomi Aqara devices added ([@syssi] - [#12659]) ([xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) +- Fix homekit: temperature calculation ([@cdce8p] - [#12720]) ([homekit docs]) +- AsusWRT log exceptions ([@kellerza] - [#12668]) ([device_tracker.asuswrt docs]) +- Homekit schema gracefully fail with integer ([@kellerza] - [#12725]) ([homekit docs]) +- Update core HSV color scaling to standard scales: ([@armills] - [#12649]) ([light.hue docs]) ([light.lifx docs]) +- correct air index unit ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change) +- Remove automatic sqlite vacuum ([@amelchio] - [#12728]) +- Disable asuswrt tests ([@armills] - [#12663]) +- Fix Citybikes naming ([@aronsky] - [#12661]) ([sensor.citybikes docs]) +- Xiaomi MiIO Light: Flag the device as unavailable if not reachable ([@syssi] - [#12449]) ([light.xiaomi_miio docs]) +- Check_config await error ([@kellerza] - [#12722]) +- Add Songpal ("Sony Audio Control API") platform ([@rytilahti] - [#12143]) ([media_player.songpal docs]) (new-platform) +- Quote services.yaml string ([@amelchio] - [#12763]) +- Intent: Set light color ([@balloob] - [#12633]) ([light docs]) +- Update Yi platform to make use of async/await ([@bachya] - [#12713]) ([camera.yi docs]) +- Add custom header support for rest_command ([@doctorjames] - [#12646]) ([rest_command docs]) +- Round humidity for display purposes ([@PhilRW] - [#12766]) ([climate docs]) ([weather docs]) ([climate.wink docs]) ([weather.darksky docs]) +- Xiaomi MiIO Vacuum: Use a unique data key per domain ([@syssi] - [#12743]) ([vacuum.xiaomi_miio docs]) +- Add UpCloud platform ([@scop] - [#12011]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) (new-platform) +- Add Unit System Option For Fitbit ([@bertbert72] - [#11817]) ([sensor.fitbit docs]) +- Add 'lock' device class ([@swilson] - [#11640]) ([binary_sensor docs]) +- Bump frontend to 20180228.1 ([@balloob] - [#12786]) ([frontend docs]) +- Fix when 2 states match with same name ([@balloob] - [#12771]) +- MQTT Static Typing ([@OttoWinter] - [#12433]) ([mqtt docs]) +- Add "headers" config parameter to rest switch ([@mfrueh] - [#12706]) ([switch.rest docs]) +- Added Sense energy monitor sensor ([@kbickar] - [#11580]) ([sensor.sense docs]) (new-platform) +- TekSavvy Sensor unlimited bandwidth support ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change) +- iCloud location tracking improvements ([@reedriley] - [#12399]) ([device_tracker.icloud docs]) +- Support serving of backend translations ([@armills] - [#12453]) ([frontend docs]) +- Translation cleanup ([@armills] - [#12804]) +- Take ownership of Emby, Eight Sleep, Hikvision ([@mezz64] - [#12803]) +- Bump pyHik version, digest auth, more device support ([@mezz64] - [#12801]) ([binary_sensor.hikvision docs]) +- Only run deploy from lint branch ([@armills] - [#12805]) +- Add optional words to conversation utterances ([@balloob] - [#12772]) ([conversation docs]) +- Changed default from `all` to `changed` ([@cdce8p] - [#12660]) +- Fix flakiness in tests ([@balloob] - [#12806]) +- Tibber: retry if we fail to connect at startup ([@danielhiversen] - [#12620]) ([sensor.tibber docs]) +- Cast Python Async Await Syntax ([@OttoWinter] - [#12816]) ([media_player.cast docs]) +- Filter Sensor ([@dgomes] - [#12650]) ([sensor.filter docs]) (new-platform) +- MQTT Python 3.5 Async Await Syntax ([@OttoWinter] - [#12815]) ([mqtt docs]) +- Improved Homekit tests ([@cdce8p] - [#12800]) ([homekit docs]) +- Add light.group platform ([@OttoWinter] - [#12229]) ([light.group docs]) (new-platform) +- Add icons to Xiaomi Aqara sensors ([@bakedraccoon] - [#12814]) ([sensor.xiaomi_aqara docs]) +- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) +- Skip flaky light.group test [skipci] ([@balloob] - [#12847]) +- Update volvooncall.py ([@danielhiversen] - [#12834]) ([switch.volvooncall docs]) +- Address upcloud post-merge comments (#12011) ([@scop] - [#12835]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) +- Keep auto groups during group reload ([@amelchio] - [#12841]) ([group docs]) +- PyXiaomiGateway version bumped. ([@syssi] - [#12828]) ([xiaomi_aqara docs]) +- Fix light group update before add ([@OttoWinter] - [#12844]) ([light.group docs]) +- IndexError (list index out of range) fixed. ([@syssi] - [#12858]) ([sensor.xiaomi_aqara docs]) +- Fix dead Sonos web interface even more ([@amelchio] - [#12851]) ([media_player.sonos docs]) +- Updated to use latest ihcsdk version ([@dingusdk] - [#12865]) ([ihc docs]) +- Add unique id for Tibber sensor ([@danielhiversen] - [#12864]) ([sensor.tibber docs]) +- Add support for Zillow Zestimate sensor ([@jcconnell] - [#12597]) ([sensor.zestimate docs]) (new-platform) +- Grammar fix 'an unique' ([@amelchio] - [#12870]) +- Add SQL index to states.event_id ([@amelchio] - [#12825]) +- Optimize logbook SQL query ([@amelchio] - [#12881]) ([logbook docs]) +- await syntax knx scene ([@Julius2342] - [#12879]) ([scene docs]) +- Fix 0 value when home-assistant restarts ([@bokub] - [#12874]) ([sensor.history_stats docs]) +- Fix aggressive scan intervals ([@balloob] - [#12885]) ([alarm_control_panel.concord232 docs]) ([binary_sensor.concord232 docs]) ([sensor.folder docs]) ([sensor.simulated docs]) +- Fix interaction with hyperion on NodeMCU ([@a-andre] - [#12872]) ([light.hyperion docs]) +- Add the Gamerscore and Tier of the account ([@kevintuhumury] - [#12867]) ([sensor.xbox_live docs]) +- Improve influxdb throughput ([@amelchio] - [#12882]) ([influxdb docs]) +- Add config flow for Hue ([@balloob] - [#12830]) ([config docs]) ([hue docs]) +- Fix issue with guest August lock being included ([@snjoetw] - [#12893]) ([august docs]) +- Upgrade to py-canary 0.4.1 ([@snjoetw] - [#12894]) ([canary docs]) +- update html5 to async/await ([@perosb] - [#12895]) ([notify.html5 docs]) +- Adding additional switches and sensors for Tesla ([@alandtse] - [#12241]) ([device_tracker.tesla docs]) ([sensor.tesla docs]) ([switch.tesla docs]) +- Additional radio schemes for sonos ([@amelchio] - [#12886]) ([media_player.sonos docs]) +- Fix Edimax new firmware auth error and move to pyedimax fork ([@andreipop2005] - [#12873]) ([switch.edimax docs]) +- InfluxDB cleanups ([@amelchio] - [#12903]) ([influxdb docs]) +- Fix for moisture sensors in isy994 ([@thejta] - [#12734]) ([binary_sensor.isy994 docs]) +- Apple TV should return all supported features ([@lucasweb78] - [#12167]) ([media_player.apple_tv docs]) +- Remove dynamic controls from sonos ([@amelchio] - [#12908]) ([media_player.sonos docs]) +- Fix async method call in sync context ([@balloob] - [#12890]) ([device_tracker.icloud docs]) +- update html5 to async/await tests ([@perosb] - [#12896]) +- Fixing small naming bug ([@ebfio] - [#12911]) ([sensor.serial_pm docs]) +- Tibber: Check if the current electricity price is available before we… ([@danielhiversen] - [#12905]) ([sensor.tibber docs]) +- Add empty unit to systemmonitor load averages ([@DanNixon] - [#12900]) ([sensor.systemmonitor docs]) +- update notify html5 dependencies ([@perosb] - [#12898]) ([notify.html5 docs]) +- Xiaomi MiIO Remote: Lazy discover disabled ([@syssi] - [#12710]) ([remote.xiaomi_miio docs]) +- Xiaomi MiIO Switch: Allow unavailable devices at startup by model setting ([@syssi] - [#12626]) ([switch.xiaomi_miio docs]) +- Update python-coinbase to 2.1.0 ([@balloob] - [#12925]) ([coinbase docs]) +- Remove unused cloud APIs ([@balloob] - [#12913]) ([cloud docs]) +- Upgrade to aiohttp 3 ([@balloob] - [#12921]) ([api docs]) ([http docs]) ([shopping_list docs]) +- Flaky tests ([@balloob] - [#12931]) +- Addresses issues with Pollen.com API troubles ([@bachya] - [#12930]) ([sensor.pollen docs]) +- Set supported features based on capabilities of device ([@maxclaey] - [#12922]) ([climate.nest docs]) +- Bumped (minor) version of xknx within knx-component. This fixes a bug with inverted percentage within sensors. ([@Julius2342] - [#12929]) ([knx docs]) ([light.knx docs]) +- Added checks for empty replies from REST calls and supporting tests ([@nickovs] - [#12904]) ([sensor.rest docs]) +- Reinstate our old virtual env check in favor of pip ([@balloob] - [#12932]) +- Support for queries with no results (fix for #12856) ([@dgomes] - [#12888]) ([sensor.sql docs]) +- Fix netatmo sensor warning from invalid Voluptuous default ([@amelchio] - [#12933]) ([sensor.netatmo docs]) +- Updated to enforce quoted ZIP codes for Pollen ([@bachya] - [#12934]) ([sensor.pollen docs]) (breaking change) +- Added support for multiple onvif profiles ([@karlkar] - [#11651]) ([camera.onvif docs]) +- Make ubus dhcp name resolution optional ([@rmounce] - [#12658]) ([device_tracker.ubus docs]) +- Add add_devices back to rpi_camera ([@feanor12] - [#12947]) ([camera.rpi_camera docs]) +- Remove weird tests ([@balloob] - [#12936]) +- optional displaying the sensors location on the map ([@c7h] - [#12375]) ([sensor.luftdaten docs]) +- [SQL Sensor] partial revert of #12452 ([@dgomes] - [#12956]) ([sensor.sql docs]) +- Fix LIFX color conversions ([@amelchio] - [#12957]) ([light.lifx docs]) +- BugFix Popp strike lock not discovered in homeassistant. ([@turbokongen] - [#12951]) ([zwave docs]) +- Add a Media Player Component for Channels ([@maddox] - [#12937]) ([media_player.channels docs]) (new-platform) +- Telegram_bot three platform support proxy_url and proxy_params ([@crhan] - [#12878]) ([telegram_bot.broadcast docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) +- Add support for alarm system, switch and thermostat to homekit ([@maxclaey] - [#12819]) ([homekit docs]) (new-platform) +- Pin lokalise script to working version ([@armills] - [#12965]) +- Hue: Don't change brightness when changing just color ([@balloob] - [#12940]) ([light.hue docs]) +- LIFX async/await conversion ([@amelchio] - [#12973]) ([light.lifx docs]) +- IMAP sensor async/await conversion ([@amelchio] - [#12988]) ([sensor.imap docs]) +- Refactor Google Assistant ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change) +- Bump pyEmby version to support aiohttp => 3 ([@mezz64] - [#12986]) ([media_player.emby docs]) +- Update pyalarmdotcom version ([@koolsb] - [#12987]) ([alarm_control_panel.alarmdotcom docs]) +- Show the error message when Zabbix fails to log in ([@cyberjacob] - [#12985]) ([zabbix docs]) +- Script/gen_requirements: Ignore package families ([@cdce8p] - [#12963]) +- Fix Sonos group discovery ([@amelchio] - [#12970]) ([media_player.sonos docs]) +- Check color temp range for google assistant ([@balloob] - [#12994]) ([google_assistant docs]) +- Fix limitlessled color temperature ([@amelchio] - [#12971]) ([light.limitlessled docs]) (breaking change) +- Fixes notify.html5 for notifications on FireFox ([@corneyl] - [#12993]) ([notify.html5 docs]) +- Move HomeAssistantView to separate file. Convert http to async syntax. [skip ci] ([@fanthos] - [#12982]) ([http docs]) +- Get zha switch and binary_sensor state on startup ([@SteveEasley] - [#11672]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([switch.zha docs]) +- Add camera proxy ([@PhracturedBlue] - [#12006]) ([camera.proxy docs]) (new-platform) +- check_config script evolution ([@kellerza] - [#12792]) +- Plex mark devices unavailable if they 'vanish' and clear media ([@ryanm101] - [#12811]) ([media_player.plex docs]) +- Add consider_home and source_type to device_tracker.see service ([@mueslo] - [#12849]) ([device_tracker docs]) +- Clean up Light Groups ([@OttoWinter] - [#12962]) ([light.group docs]) +- Updated to plexapi 3.0.6 ([@ryanm101] - [#13005]) ([media_player.plex docs]) ([sensor.plex docs]) + +[#11580]: https://github.com/home-assistant/home-assistant/pull/11580 +[#11640]: https://github.com/home-assistant/home-assistant/pull/11640 +[#11651]: https://github.com/home-assistant/home-assistant/pull/11651 +[#11672]: https://github.com/home-assistant/home-assistant/pull/11672 +[#11817]: https://github.com/home-assistant/home-assistant/pull/11817 +[#11978]: https://github.com/home-assistant/home-assistant/pull/11978 +[#11994]: https://github.com/home-assistant/home-assistant/pull/11994 +[#12006]: https://github.com/home-assistant/home-assistant/pull/12006 +[#12011]: https://github.com/home-assistant/home-assistant/pull/12011 +[#12143]: https://github.com/home-assistant/home-assistant/pull/12143 +[#12167]: https://github.com/home-assistant/home-assistant/pull/12167 +[#12229]: https://github.com/home-assistant/home-assistant/pull/12229 +[#12241]: https://github.com/home-assistant/home-assistant/pull/12241 +[#12325]: https://github.com/home-assistant/home-assistant/pull/12325 +[#12375]: https://github.com/home-assistant/home-assistant/pull/12375 +[#12399]: https://github.com/home-assistant/home-assistant/pull/12399 +[#12433]: https://github.com/home-assistant/home-assistant/pull/12433 +[#12449]: https://github.com/home-assistant/home-assistant/pull/12449 +[#12453]: https://github.com/home-assistant/home-assistant/pull/12453 +[#12507]: https://github.com/home-assistant/home-assistant/pull/12507 +[#12509]: https://github.com/home-assistant/home-assistant/pull/12509 +[#12534]: https://github.com/home-assistant/home-assistant/pull/12534 +[#12539]: https://github.com/home-assistant/home-assistant/pull/12539 +[#12592]: https://github.com/home-assistant/home-assistant/pull/12592 +[#12596]: https://github.com/home-assistant/home-assistant/pull/12596 +[#12597]: https://github.com/home-assistant/home-assistant/pull/12597 +[#12610]: https://github.com/home-assistant/home-assistant/pull/12610 +[#12620]: https://github.com/home-assistant/home-assistant/pull/12620 +[#12621]: https://github.com/home-assistant/home-assistant/pull/12621 +[#12626]: https://github.com/home-assistant/home-assistant/pull/12626 +[#12631]: https://github.com/home-assistant/home-assistant/pull/12631 +[#12633]: https://github.com/home-assistant/home-assistant/pull/12633 +[#12636]: https://github.com/home-assistant/home-assistant/pull/12636 +[#12646]: https://github.com/home-assistant/home-assistant/pull/12646 +[#12647]: https://github.com/home-assistant/home-assistant/pull/12647 +[#12648]: https://github.com/home-assistant/home-assistant/pull/12648 +[#12649]: https://github.com/home-assistant/home-assistant/pull/12649 +[#12650]: https://github.com/home-assistant/home-assistant/pull/12650 +[#12651]: https://github.com/home-assistant/home-assistant/pull/12651 +[#12658]: https://github.com/home-assistant/home-assistant/pull/12658 +[#12659]: https://github.com/home-assistant/home-assistant/pull/12659 +[#12660]: https://github.com/home-assistant/home-assistant/pull/12660 +[#12661]: https://github.com/home-assistant/home-assistant/pull/12661 +[#12662]: https://github.com/home-assistant/home-assistant/pull/12662 +[#12663]: https://github.com/home-assistant/home-assistant/pull/12663 +[#12664]: https://github.com/home-assistant/home-assistant/pull/12664 +[#12668]: https://github.com/home-assistant/home-assistant/pull/12668 +[#12676]: https://github.com/home-assistant/home-assistant/pull/12676 +[#12681]: https://github.com/home-assistant/home-assistant/pull/12681 +[#12706]: https://github.com/home-assistant/home-assistant/pull/12706 +[#12710]: https://github.com/home-assistant/home-assistant/pull/12710 +[#12713]: https://github.com/home-assistant/home-assistant/pull/12713 +[#12720]: https://github.com/home-assistant/home-assistant/pull/12720 +[#12722]: https://github.com/home-assistant/home-assistant/pull/12722 +[#12725]: https://github.com/home-assistant/home-assistant/pull/12725 +[#12728]: https://github.com/home-assistant/home-assistant/pull/12728 +[#12730]: https://github.com/home-assistant/home-assistant/pull/12730 +[#12734]: https://github.com/home-assistant/home-assistant/pull/12734 +[#12743]: https://github.com/home-assistant/home-assistant/pull/12743 +[#12763]: https://github.com/home-assistant/home-assistant/pull/12763 +[#12766]: https://github.com/home-assistant/home-assistant/pull/12766 +[#12771]: https://github.com/home-assistant/home-assistant/pull/12771 +[#12772]: https://github.com/home-assistant/home-assistant/pull/12772 +[#12786]: https://github.com/home-assistant/home-assistant/pull/12786 +[#12792]: https://github.com/home-assistant/home-assistant/pull/12792 +[#12800]: https://github.com/home-assistant/home-assistant/pull/12800 +[#12801]: https://github.com/home-assistant/home-assistant/pull/12801 +[#12803]: https://github.com/home-assistant/home-assistant/pull/12803 +[#12804]: https://github.com/home-assistant/home-assistant/pull/12804 +[#12805]: https://github.com/home-assistant/home-assistant/pull/12805 +[#12806]: https://github.com/home-assistant/home-assistant/pull/12806 +[#12811]: https://github.com/home-assistant/home-assistant/pull/12811 +[#12814]: https://github.com/home-assistant/home-assistant/pull/12814 +[#12815]: https://github.com/home-assistant/home-assistant/pull/12815 +[#12816]: https://github.com/home-assistant/home-assistant/pull/12816 +[#12819]: https://github.com/home-assistant/home-assistant/pull/12819 +[#12825]: https://github.com/home-assistant/home-assistant/pull/12825 +[#12828]: https://github.com/home-assistant/home-assistant/pull/12828 +[#12830]: https://github.com/home-assistant/home-assistant/pull/12830 +[#12834]: https://github.com/home-assistant/home-assistant/pull/12834 +[#12835]: https://github.com/home-assistant/home-assistant/pull/12835 +[#12841]: https://github.com/home-assistant/home-assistant/pull/12841 +[#12844]: https://github.com/home-assistant/home-assistant/pull/12844 +[#12847]: https://github.com/home-assistant/home-assistant/pull/12847 +[#12849]: https://github.com/home-assistant/home-assistant/pull/12849 +[#12851]: https://github.com/home-assistant/home-assistant/pull/12851 +[#12858]: https://github.com/home-assistant/home-assistant/pull/12858 +[#12864]: https://github.com/home-assistant/home-assistant/pull/12864 +[#12865]: https://github.com/home-assistant/home-assistant/pull/12865 +[#12867]: https://github.com/home-assistant/home-assistant/pull/12867 +[#12870]: https://github.com/home-assistant/home-assistant/pull/12870 +[#12872]: https://github.com/home-assistant/home-assistant/pull/12872 +[#12873]: https://github.com/home-assistant/home-assistant/pull/12873 +[#12874]: https://github.com/home-assistant/home-assistant/pull/12874 +[#12878]: https://github.com/home-assistant/home-assistant/pull/12878 +[#12879]: https://github.com/home-assistant/home-assistant/pull/12879 +[#12881]: https://github.com/home-assistant/home-assistant/pull/12881 +[#12882]: https://github.com/home-assistant/home-assistant/pull/12882 +[#12885]: https://github.com/home-assistant/home-assistant/pull/12885 +[#12886]: https://github.com/home-assistant/home-assistant/pull/12886 +[#12888]: https://github.com/home-assistant/home-assistant/pull/12888 +[#12890]: https://github.com/home-assistant/home-assistant/pull/12890 +[#12893]: https://github.com/home-assistant/home-assistant/pull/12893 +[#12894]: https://github.com/home-assistant/home-assistant/pull/12894 +[#12895]: https://github.com/home-assistant/home-assistant/pull/12895 +[#12896]: https://github.com/home-assistant/home-assistant/pull/12896 +[#12898]: https://github.com/home-assistant/home-assistant/pull/12898 +[#12900]: https://github.com/home-assistant/home-assistant/pull/12900 +[#12903]: https://github.com/home-assistant/home-assistant/pull/12903 +[#12904]: https://github.com/home-assistant/home-assistant/pull/12904 +[#12905]: https://github.com/home-assistant/home-assistant/pull/12905 +[#12908]: https://github.com/home-assistant/home-assistant/pull/12908 +[#12911]: https://github.com/home-assistant/home-assistant/pull/12911 +[#12913]: https://github.com/home-assistant/home-assistant/pull/12913 +[#12921]: https://github.com/home-assistant/home-assistant/pull/12921 +[#12922]: https://github.com/home-assistant/home-assistant/pull/12922 +[#12925]: https://github.com/home-assistant/home-assistant/pull/12925 +[#12929]: https://github.com/home-assistant/home-assistant/pull/12929 +[#12930]: https://github.com/home-assistant/home-assistant/pull/12930 +[#12931]: https://github.com/home-assistant/home-assistant/pull/12931 +[#12932]: https://github.com/home-assistant/home-assistant/pull/12932 +[#12933]: https://github.com/home-assistant/home-assistant/pull/12933 +[#12934]: https://github.com/home-assistant/home-assistant/pull/12934 +[#12936]: https://github.com/home-assistant/home-assistant/pull/12936 +[#12937]: https://github.com/home-assistant/home-assistant/pull/12937 +[#12940]: https://github.com/home-assistant/home-assistant/pull/12940 +[#12947]: https://github.com/home-assistant/home-assistant/pull/12947 +[#12951]: https://github.com/home-assistant/home-assistant/pull/12951 +[#12956]: https://github.com/home-assistant/home-assistant/pull/12956 +[#12957]: https://github.com/home-assistant/home-assistant/pull/12957 +[#12959]: https://github.com/home-assistant/home-assistant/pull/12959 +[#12962]: https://github.com/home-assistant/home-assistant/pull/12962 +[#12963]: https://github.com/home-assistant/home-assistant/pull/12963 +[#12965]: https://github.com/home-assistant/home-assistant/pull/12965 +[#12970]: https://github.com/home-assistant/home-assistant/pull/12970 +[#12971]: https://github.com/home-assistant/home-assistant/pull/12971 +[#12973]: https://github.com/home-assistant/home-assistant/pull/12973 +[#12982]: https://github.com/home-assistant/home-assistant/pull/12982 +[#12985]: https://github.com/home-assistant/home-assistant/pull/12985 +[#12986]: https://github.com/home-assistant/home-assistant/pull/12986 +[#12987]: https://github.com/home-assistant/home-assistant/pull/12987 +[#12988]: https://github.com/home-assistant/home-assistant/pull/12988 +[#12993]: https://github.com/home-assistant/home-assistant/pull/12993 +[#12994]: https://github.com/home-assistant/home-assistant/pull/12994 +[#13005]: https://github.com/home-assistant/home-assistant/pull/13005 +[@DanNixon]: https://github.com/DanNixon +[@Julius2342]: https://github.com/Julius2342 +[@OttoWinter]: https://github.com/OttoWinter +[@PhilRW]: https://github.com/PhilRW +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@SteveEasley]: https://github.com/SteveEasley +[@a-andre]: https://github.com/a-andre +[@alandtse]: https://github.com/alandtse +[@amelchio]: https://github.com/amelchio +[@andreipop2005]: https://github.com/andreipop2005 +[@armills]: https://github.com/armills +[@aronsky]: https://github.com/aronsky +[@awkwardDuck]: https://github.com/awkwardDuck +[@bachya]: https://github.com/bachya +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@bertbert72]: https://github.com/bertbert72 +[@bokub]: https://github.com/bokub +[@c7h]: https://github.com/c7h +[@cdce8p]: https://github.com/cdce8p +[@chilicheech]: https://github.com/chilicheech +[@cmsimike]: https://github.com/cmsimike +[@corneyl]: https://github.com/corneyl +[@crhan]: https://github.com/crhan +[@cyberjacob]: https://github.com/cyberjacob +[@danielhiversen]: https://github.com/danielhiversen +[@dgomes]: https://github.com/dgomes +[@dingusdk]: https://github.com/dingusdk +[@doctorjames]: https://github.com/doctorjames +[@ebfio]: https://github.com/ebfio +[@fanthos]: https://github.com/fanthos +[@feanor12]: https://github.com/feanor12 +[@jcconnell]: https://github.com/jcconnell +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@karlkar]: https://github.com/karlkar +[@kbickar]: https://github.com/kbickar +[@kellerza]: https://github.com/kellerza +[@kevintuhumury]: https://github.com/kevintuhumury +[@koolsb]: https://github.com/koolsb +[@lucasweb78]: https://github.com/lucasweb78 +[@lwis]: https://github.com/lwis +[@maddox]: https://github.com/maddox +[@maxclaey]: https://github.com/maxclaey +[@mezz64]: https://github.com/mezz64 +[@mfrueh]: https://github.com/mfrueh +[@mikeodr]: https://github.com/mikeodr +[@mueslo]: https://github.com/mueslo +[@nickovs]: https://github.com/nickovs +[@perosb]: https://github.com/perosb +[@reedriley]: https://github.com/reedriley +[@rmounce]: https://github.com/rmounce +[@robmarkcole]: https://github.com/robmarkcole +[@ryanm101]: https://github.com/ryanm101 +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@snjoetw]: https://github.com/snjoetw +[@swilson]: https://github.com/swilson +[@syssi]: https://github.com/syssi +[@teharris1]: https://github.com/teharris1 +[@thejta]: https://github.com/thejta +[@turbokongen]: https://github.com/turbokongen +[alarm_control_panel.alarmdotcom docs]: https://home-assistant.io/components/alarm_control_panel.alarmdotcom/ +[alarm_control_panel.concord232 docs]: https://home-assistant.io/components/alarm_control_panel.concord232/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[api docs]: https://home-assistant.io/components/api/ +[august docs]: https://home-assistant.io/components/august/ +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.concord232 docs]: https://home-assistant.io/components/binary_sensor.concord232/ +[binary_sensor.egardia docs]: https://home-assistant.io/components/binary_sensor.egardia/ +[binary_sensor.hikvision docs]: https://home-assistant.io/components/binary_sensor.hikvision/ +[binary_sensor.insteon_plm docs]: https://home-assistant.io/components/binary_sensor.insteon_plm/ +[binary_sensor.isy994 docs]: https://home-assistant.io/components/binary_sensor.isy994/ +[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/ +[binary_sensor.upcloud docs]: https://home-assistant.io/components/binary_sensor.upcloud/ +[binary_sensor.zha docs]: https://home-assistant.io/components/binary_sensor.zha/ +[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/ +[camera.proxy docs]: https://home-assistant.io/components/camera.proxy/ +[camera.rpi_camera docs]: https://home-assistant.io/components/camera.rpi_camera/ +[camera.yi docs]: https://home-assistant.io/components/camera.yi/ +[canary docs]: https://home-assistant.io/components/canary/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.nest docs]: https://home-assistant.io/components/climate.nest/ +[climate.wink docs]: https://home-assistant.io/components/climate.wink/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[coinbase docs]: https://home-assistant.io/components/coinbase/ +[config docs]: https://home-assistant.io/components/config/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[demo docs]: https://home-assistant.io/components/demo/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.icloud docs]: https://home-assistant.io/components/device_tracker.icloud/ +[device_tracker.tesla docs]: https://home-assistant.io/components/device_tracker.tesla/ +[device_tracker.ubus docs]: https://home-assistant.io/components/device_tracker.ubus/ +[egardia docs]: https://home-assistant.io/components/egardia/ +[fan.insteon_plm docs]: https://home-assistant.io/components/fan.insteon_plm/ +[frontend docs]: https://home-assistant.io/components/frontend/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[group docs]: https://home-assistant.io/components/group/ +[homekit docs]: https://home-assistant.io/components/homekit/ +[http docs]: https://home-assistant.io/components/http/ +[hue docs]: https://home-assistant.io/components/hue/ +[ihc docs]: https://home-assistant.io/components/ihc/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[insteon_plm docs]: https://home-assistant.io/components/insteon_plm/ +[knx docs]: https://home-assistant.io/components/knx/ +[light docs]: https://home-assistant.io/components/light/ +[light.demo docs]: https://home-assistant.io/components/light.demo/ +[light.group docs]: https://home-assistant.io/components/light.group/ +[light.group docs]: https://home-assistant.io/components/light.group/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.hyperion docs]: https://home-assistant.io/components/light.hyperion/ +[light.insteon_plm docs]: https://home-assistant.io/components/light.insteon_plm/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.limitlessled docs]: https://home-assistant.io/components/light.limitlessled/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[logbook docs]: https://home-assistant.io/components/logbook/ +[media_player.apple_tv docs]: https://home-assistant.io/components/media_player.apple_tv/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.channels docs]: https://home-assistant.io/components/media_player.channels/ +[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.songpal docs]: https://home-assistant.io/components/media_player.songpal/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.synology_chat docs]: https://home-assistant.io/components/notify.synology_chat/ +[remote.xiaomi_miio docs]: https://home-assistant.io/components/remote.xiaomi_miio/ +[rest_command docs]: https://home-assistant.io/components/rest_command/ +[scene docs]: https://home-assistant.io/components/scene/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.citybikes docs]: https://home-assistant.io/components/sensor.citybikes/ +[sensor.filter docs]: https://home-assistant.io/components/sensor.filter/ +[sensor.fitbit docs]: https://home-assistant.io/components/sensor.fitbit/ +[sensor.folder docs]: https://home-assistant.io/components/sensor.folder/ +[sensor.history_stats docs]: https://home-assistant.io/components/sensor.history_stats/ +[sensor.imap docs]: https://home-assistant.io/components/sensor.imap/ +[sensor.insteon_plm docs]: https://home-assistant.io/components/sensor.insteon_plm/ +[sensor.luftdaten docs]: https://home-assistant.io/components/sensor.luftdaten/ +[sensor.netatmo docs]: https://home-assistant.io/components/sensor.netatmo/ +[sensor.plex docs]: https://home-assistant.io/components/sensor.plex/ +[sensor.pollen docs]: https://home-assistant.io/components/sensor.pollen/ +[sensor.rest docs]: https://home-assistant.io/components/sensor.rest/ +[sensor.sense docs]: https://home-assistant.io/components/sensor.sense/ +[sensor.serial_pm docs]: https://home-assistant.io/components/sensor.serial_pm/ +[sensor.simulated docs]: https://home-assistant.io/components/sensor.simulated/ +[sensor.sql docs]: https://home-assistant.io/components/sensor.sql/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.teksavvy docs]: https://home-assistant.io/components/sensor.teksavvy/ +[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/ +[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/ +[sensor.xbox_live docs]: https://home-assistant.io/components/sensor.xbox_live/ +[sensor.xiaomi_aqara docs]: https://home-assistant.io/components/sensor.xiaomi_aqara/ +[sensor.zestimate docs]: https://home-assistant.io/components/sensor.zestimate/ +[shopping_list docs]: https://home-assistant.io/components/shopping_list/ +[switch.edimax docs]: https://home-assistant.io/components/switch.edimax/ +[switch.insteon_plm docs]: https://home-assistant.io/components/switch.insteon_plm/ +[switch.rest docs]: https://home-assistant.io/components/switch.rest/ +[switch.tesla docs]: https://home-assistant.io/components/switch.tesla/ +[switch.upcloud docs]: https://home-assistant.io/components/switch.upcloud/ +[switch.volvooncall docs]: https://home-assistant.io/components/switch.volvooncall/ +[switch.xiaomi_aqara docs]: https://home-assistant.io/components/switch.xiaomi_aqara/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[switch.zha docs]: https://home-assistant.io/components/switch.zha/ +[telegram_bot.broadcast docs]: https://home-assistant.io/components/telegram_bot.broadcast/ +[telegram_bot.polling docs]: https://home-assistant.io/components/telegram_bot.polling/ +[telegram_bot.webhooks docs]: https://home-assistant.io/components/telegram_bot.webhooks/ +[upcloud docs]: https://home-assistant.io/components/upcloud/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[weather docs]: https://home-assistant.io/components/weather/ +[weather.darksky docs]: https://home-assistant.io/components/weather.darksky/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[zabbix docs]: https://home-assistant.io/components/zabbix/ +[zha docs]: https://home-assistant.io/components/zha/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[#13020]: https://github.com/home-assistant/home-assistant/pull/13020 +[#13024]: https://github.com/home-assistant/home-assistant/pull/13024 +[#13027]: https://github.com/home-assistant/home-assistant/pull/13027 +[#13030]: https://github.com/home-assistant/home-assistant/pull/13030 +[#13031]: https://github.com/home-assistant/home-assistant/pull/13031 +[@balloob]: https://github.com/balloob +[@cdce8p]: https://github.com/cdce8p +[@kellerza]: https://github.com/kellerza +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[homekit docs]: https://home-assistant.io/components/homekit/ +[#12996]: https://github.com/home-assistant/home-assistant/pull/12996 +[#13037]: https://github.com/home-assistant/home-assistant/pull/13037 +[#13038]: https://github.com/home-assistant/home-assistant/pull/13038 +[#13042]: https://github.com/home-assistant/home-assistant/pull/13042 +[#13045]: https://github.com/home-assistant/home-assistant/pull/13045 +[#13056]: https://github.com/home-assistant/home-assistant/pull/13056 +[#13057]: https://github.com/home-assistant/home-assistant/pull/13057 +[#13059]: https://github.com/home-assistant/home-assistant/pull/13059 +[@amelchio]: https://github.com/amelchio +[@balloob]: https://github.com/balloob +[@jeradM]: https://github.com/jeradM +[@jra3]: https://github.com/jra3 +[@kellerza]: https://github.com/kellerza +[@armills]: https://github.com/armills +[@ptarjan]: https://github.com/ptarjan +[@syssi]: https://github.com/syssi +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[sensor.sabnzbd docs]: https://home-assistant.io/components/sensor.sabnzbd/ +[sensor.sql docs]: https://home-assistant.io/components/sensor.sql/ +[wink docs]: https://home-assistant.io/components/wink/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[#12939]: https://github.com/home-assistant/home-assistant/pull/12939 +[#13058]: https://github.com/home-assistant/home-assistant/pull/13058 +[#13062]: https://github.com/home-assistant/home-assistant/pull/13062 +[#13063]: https://github.com/home-assistant/home-assistant/pull/13063 +[#13078]: https://github.com/home-assistant/home-assistant/pull/13078 +[#13079]: https://github.com/home-assistant/home-assistant/pull/13079 +[#13094]: https://github.com/home-assistant/home-assistant/pull/13094 +[#13095]: https://github.com/home-assistant/home-assistant/pull/13095 +[#13096]: https://github.com/home-assistant/home-assistant/pull/13096 +[@Julius2342]: https://github.com/Julius2342 +[@OttoWinter]: https://github.com/OttoWinter +[@Tadly]: https://github.com/Tadly +[@balloob]: https://github.com/balloob +[@jesserockz]: https://github.com/jesserockz +[@pavoni]: https://github.com/pavoni +[@snjoetw]: https://github.com/snjoetw +[camera.arlo docs]: https://home-assistant.io/components/camera.arlo/ +[camera.synology docs]: https://home-assistant.io/components/camera.synology/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[device_tracker.tado docs]: https://home-assistant.io/components/device_tracker.tado/ +[knx docs]: https://home-assistant.io/components/knx/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.iglo docs]: https://home-assistant.io/components/light.iglo/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.kodi docs]: https://home-assistant.io/components/media_player.kodi/ +[vera docs]: https://home-assistant.io/components/vera/ +]]>
+
+ + + <![CDATA[0.64: Over 1000 integrations! New: HomeKit, BMW, August.]]> + + 2018-02-26T00:01:00+00:00 + https://home-assistant.io/blog/2018/02/26/release-64 + + +🎉 1000 integrations, 1000 integrations, 1000 integrations! 🎉 + +That's right, Home Assistant 0.64 is here! In case you have missed our latest [Cloud update](https://home-assistant.io/blog/2018/02/19/cloud-update/), the Home Assistant Alexa skill is now live in all regions and we're working with Google in getting the Smart Home skill for Google Assistant approved. Exciting times! + +In the meanwhile, some great new integrations have landed, including yet another car 🚗 This time it's BMW. + +This is going to be the last release that supports Python 3.4. Starting with the next release, the minimum version required will be Python 3.5.3. [Learn more here.](https://home-assistant.io/blog/2017/10/06/deprecating-python-3.4-support/) + +## HomeKit + +Native HomeKit support has arrived! Thanks to @cdce8p It is now possible to expose some devices over HomeKit to allow control via Siri and other things speaking the HomeKit protocol. Initial support has been added for temperature sensors and cover devices. Expect more devices to be added soon. + +[Check the HomeKit docs][HomeKit docs] + +## Hass.io UI update + +Some of you already noticed that your Hass.io panel looks a bit different since this morning: @pvizeli pressed the ~~red~~ green button and the new UI got live. The Hass.io team ([@frenck] [@pvizeli] [@ryanm101]) is doing a great job in adding new features (like partial or encrypted snapshots) to the Hass.io backend and fixing bugs. However, those features where only added to the command line tools but not to the frontend. + +That's where [@c727] and [@ciotlosm] jumped in. They made new features accessible via the frontend and improved the overall navigation. + +We know that some features are still missing or broken, we are fixing this right now! Check this [issue](https://github.com/home-assistant/home-assistant-polymer/issues/912) first before you report any issues related to the Hass.io panel, please. + +## Chart.js + +The frontend is now rendering the graphs and charts using Chart.js thanks to the hard work by [@fanthos]. This means that you can now render all the charts without being connected to the internet! + +## August integration + +Major new integration by [@snjoetw]: August locks and door bells! Lock and unlock from Home Assistant and detect when your doorbell is rung or senses motion. Awesome! + +## Cast bug fixes + +[@OttoWinter] has crushed a bunch of bugs for our ChromeCast integration. Including that nasy Cast group discovery issue! He is working on some more improvements that should arrive soon, stay tuned. Awesome work Otto! + +## New Platforms + +- Support for August doorbell ([@snjoetw] - [#11124]) ([august docs]) ([binary_sensor.august docs]) ([camera.august docs]) ([lock.august docs]) (new-platform) +- Add new component: BMW connected drive ([@ChristianKuehnel] - [#12277]) ([bmw_connected_drive docs]) ([device_tracker.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (new-platform) +- Add New Sensor for ISP Start.ca ([@mikeodr] - [#12356]) ([sensor.startca docs]) (new-platform) +- Add the Xiaomi TV platform. ([@fattdev] - [#12359]) ([media_player.xiaomi_tv docs]) (new-platform) +- added smappee component ([@hmn] - [#11491]) ([smappee docs]) ([sensor.smappee docs]) ([switch.smappee docs]) (new-platform) +- Add support for HomeKit ([@cdce8p] - [#12488]) ([homekit docs]) (new-platform) +- Adds filesize component ([@robmarkcole] - [#12211]) ([sensor.filesize docs]) (new-platform) +- Adds folder sensor ([@robmarkcole] - [#12208]) ([sensor.folder docs]) (new-platform) +- Spotcrime ([@jcconnell] - [#12460]) ([sensor.spotcrime docs]) (new-platform) +- Add Tahoma scenes ([@bakedraccoon] - [#12498]) ([scene docs]) ([tahoma docs]) (new-platform) + +## Release 0.64.1 - February 27 + +- Frontend: Don't put unit of sensor on new line ([@NovapaX]) +- Frontend: Fix display issues on iOS 9.3.5 ([@NovapaX]) +- Frontend: Fix chart legend not showing correctly when data has 1 serie ([@fanthos]) +- Frontend: Fix cards not getting updated ([@balloob]) +- Cast automatically drop connection ([@OttoWinter] - [#12635]) ([media_player.cast docs]) +- Roomba timeout ([@kellerza] - [#12645]) ([vacuum.roomba docs]) +- Fix a problem with calling `deconz.close` ([@aronsky] - [#12657]) ([deconz docs]) +- Harmony: make activity optional ([@balloob] - [#12679]) ([remote.harmony docs]) +- Fix getting state from iglo ([@jesserockz] - [#12685]) ([light.iglo docs]) +- Fix mysensor defaults ([@balloob] - [#12687]) ([mysensors docs]) +- Component deconz: Fix dark attribute on presence sensors ([@tumik] - [#12691]) ([binary_sensor.deconz docs]) +- Bugfix: Update of sources for non AVR-X devices always fails ([@scarface-4711] - [#12711]) ([media_player.denonavr docs]) +- Don't allow to use a old unsecure library ([@pvizeli] - [#12715]) +- Unbreak tahoma ([@bakedraccoon] - [#12719]) ([tahoma docs]) +- fix for https://github.com/home-assistant/home-assistant/issues/12673 ([@ChristianKuehnel] - [#12726]) ([sensor.alpha_vantage docs]) +- Fix harmony duplicate detection ([@amelchio] - [#12729]) ([remote.harmony docs]) +- Update ZHA deps ([@balloob] - [#12737]) ([zha docs]) +- MQTT: Fix doing async inside sync context ([@OttoWinter]) +- Fix DarSky humidity precision ([@PhilRW]) + +## Release 0.64.2 - March 1 + +- updated to bimmer_connected 0.4.1 ([@ChristianKuehnel] - [#12759]) ([bmw_connected_drive docs]) +- Revert optimized logbook SQL ([@amelchio] - [#12762]) ([logbook docs]) +- bump fedex version ([@happyleavesaoc] - [#12764]) ([sensor.fedex docs]) +- Silence harmless sonos data structure warnings ([@amelchio] - [#12767]) ([media_player.sonos docs]) +- Update samsungctl library to latest version ([@uchagani] - [#12769]) ([media_player.samsungtv docs]) +- Fixed missing optional keyerror data_bits ([@basschipper] - [#12789]) ([binary_sensor.rfxtrx docs]) +- Fixed Pollen.com bugs with ZIP codes and invalid API responses ([@bachya] - [#12790]) ([sensor.pollen docs]) +- Fix dead Sonos web interface with some music sources ([@amelchio] - [#12796]) ([media_player.sonos docs]) +- Unique IDs for Plex Clients ([@ryanm101] - [#12799]) ([media_player.plex docs]) + +## Release 0.64.3 - March 2 + +- is_allowed_path: Also test folder #12788 #12807 ([@kellerza] - [#12810]) +- Fix sensibo default IDs to be according to schema ([@andrey-git] - [#12837]) ([climate.sensibo docs]) +- Cloud: handle unauth better ([@balloob] - [#12840]) ([cloud docs]) +- Handle Hue errors better ([@balloob] - [#12845]) ([hue docs]) + +## 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. + +## 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. + + + +## Breaking Changes + +- Home Assistant now defaults to purge recorded history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain _before starting 0.64 for the first time_, for example: + ```yaml + recorder: + purge_keep_days: 30 + ``` + + If you want to keep the previous default of never deleting history, use this configuration: + ```yaml + recorder: + purge_interval: 0 + ``` + ([@amelchio] - [#12271]) (breaking change) +- Show a persistent_notification if no symbols and no currencies are configured ([@ChristianKuehnel] - [#12252]) ([sensor.alpha_vantage docs]) (breaking change) +- Updated RainMachine unique IDs to play better with the entity registry. If RainMachine had been configured previously, new entries will be placed into the entity registry, causing there to be two of each program/zone defined. To address, simply alter the `entity_registry.yaml` as desired. ([@bachya] - [#12315]) ([switch.rainmachine docs]) (breaking change) +- Updated AirVisual unique IDs to play better with the entity registry. If AirVisual had been configured previously, new entries will be placed into the entity registry, causing there to be two of each sensor type defined. To address, simply alter the `entity_registry.yaml` as desired. ([@bachya] - [#12319]) ([sensor.airvisual docs]) (breaking change) +- Custom component devs only: voluptuous now requires default values for config keys to be valid values. ([@balloob] - [#12463]) (breaking change) +- Fixes `usps` platform. Dependency `myusps` now leverages Selenium webdriver to overcome login issues. This is a breaking change since the user must now have additional dependencies installed - either `google-chrome` and `chromedriver`, or `phantomjs`. There is a new config option `driver` that allows the user to specify their preference, though `phantomjs` is the default. Doc PR forthcoming that will outline choices and make suggestions based on user's OS. + ([@happyleavesaoc] - [#12465]) ([usps docs]) (breaking change) +- LimitlessLED has been converted to assumed state. Will no longer turn the lights off when restarting Home Assistant. Will no longer revert changes made by other controllers. ([@amelchio] - [#12475]) ([light.limitlessled docs]) (breaking change) + +## All changes + +- device_tracker.asuswrt: Clean up unused connection param ([@trisk] - [#12262]) ([device_tracker.asuswrt docs]) +- Fix some rfxtrx devices with multiple sensors ([@neffs] - [#12264]) ([sensor.rfxtrx docs]) +- have climate fallback to state if no ATTR_OPERATION_MODE (#12271) ([@ttroy50] - [#12279]) ([google_assistant docs]) +- check_config check bootstrap errors ([@kellerza] - [#12291]) +- Attempt fixing flakiness of check config test ([@balloob] - [#12283]) +- Fix MQTT retained message not being re-dispatched ([@OttoWinter] - [#12004]) ([mqtt docs]) +- Fix config error for FTP links, add test ([@ReneNulschDE] - [#12294]) ([weblink docs]) +- Fix Panel_IFrame - FTP URL not allowed in 0.63 ([@ReneNulschDE] - [#12295]) ([panel_iframe docs]) +- Upgrade pylint to 1.8.2 ([@OttoWinter] - [#12274]) +- Move HassIntent handler code into helpers/intent ([@tschmidty69] - [#12181]) ([conversation docs]) +- Migrated SABnzbd sensor to asyncio and switched to pypi library ([@jeradM] - [#12290]) ([sensor.sabnzbd docs]) +- 📝 Fix fixture encoding ([@OttoWinter] - [#12296]) +- Clarify tahoma errrors ([@bakedraccoon] - [#12307]) ([tahoma docs]) +- add friendly_name_template to template sensor ([@NovapaX] - [#12268]) ([sensor.template docs]) +- Purge recorder data by default ([@amelchio] - [#12271]) (breaking change) +- Protect bloomsky platform setup ([@balloob] - [#12316]) ([binary_sensor.bloomsky docs]) ([camera.bloomsky docs]) ([sensor.bloomsky docs]) +- Removed default sensor configuration ([@ChristianKuehnel] - [#12252]) ([sensor.alpha_vantage docs]) (breaking change) +- Force LF line endings for Windows ([@kellerza] - [#12266]) +- Updated RainMachine to play better with the entity registry ([@bachya] - [#12315]) ([switch.rainmachine docs]) (breaking change) +- Revert #12316 ([@balloob] - [#12329]) ([binary_sensor.bloomsky docs]) ([camera.bloomsky docs]) ([sensor.bloomsky docs]) +- zha: Add remove service ([@rcloran] - [#11683]) ([zha docs]) +- Fix line endings [skipci] ([@balloob] - [#12333]) +- Unifi tracking filter by SSID ([@mikeodr] - [#12281]) ([device_tracker.unifi docs]) +- device_tracker.asuswrt: Ignore unreachable ip neigh entries ([@trisk] - [#12201]) ([device_tracker.asuswrt docs]) +- nmap_tracker: don't scan on setup ([@abmantis] - [#12322]) ([device_tracker.nmap_tracker docs]) +- Upgrade Sphinx to 1.7.0 ([@fabaff] - [#12335]) +- Mock Module + Platform default to async ([@balloob] - [#12347]) +- Change Unifi SSID filtering to list comprehension ([@mikeodr] - [#12344]) ([device_tracker.unifi docs]) +- Use the speedometer icon in the fastdotcom sensor ([@d0ugal] - [#12348]) ([sensor.fastdotcom docs]) +- Communication reduced. Setting brightness and/or color temperature will turn on the device. ([@syssi] - [#12343]) ([light.xiaomi_miio docs]) +- Add New Sensor for ISP Start.ca ([@mikeodr] - [#12356]) ([sensor.startca docs]) (new-platform) +- bump fedex version ([@happyleavesaoc] - [#12362]) ([sensor.fedex docs]) +- Upgrade alpha_vantage to 1.9.0 ([@fabaff] - [#12352]) ([sensor.alpha_vantage docs]) +- Eq3btsmart more reliable ([@karlkar] - [#11555]) ([climate.eq3btsmart docs]) +- Allow disabling entities in the registry ([@balloob] - [#12360]) +- Upgrade panasonic_viera to 0.3.1 ([@dgomes] - [#12370]) ([media_player.panasonic_viera docs]) +- SMA sensor add SSL and upgrade to pysma 0.2 ([@kellerza] - [#12354]) ([sensor.sma docs]) +- Specify algorithms for webpush jwt verification ([@balloob] - [#12378]) ([notify.html5 docs]) +- Upgrade youtube_dl to 2018.02.11 ([@fabaff] - [#12383]) ([media_extractor docs]) +- Remove usage of deprecated assert method ([@balloob] - [#12379]) +- Add attributes (fixes #12332) ([@fabaff] - [#12377]) ([sensor.speedtest docs]) +- Improve service by allowing to reference entity id instead of deconz id ([@Kane610] - [#11862]) ([deconz docs]) ([scene docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) +- Pollen.com: Entity Registry updates and cleanup ([@bachya] - [#12361]) ([sensor.pollen docs]) +- Changed pyvera version to 0.2.41 ([@patrik3k] - [#12391]) ([vera docs]) +- File Path fixes for RPi Camera ([@FrederikBolding] - [#12338]) ([camera.rpi_camera docs]) +- Code cleanup of velux scene ([@Julius2342] - [#12390]) ([scene docs]) +- Upgrade sphinx-autodoc-typehints to 1.2.5 ([@fabaff] - [#12404]) +- Extract data validator to own file and add tests ([@balloob] - [#12401]) ([cloud docs]) ([conversation docs]) ([http docs]) ([shopping_list docs]) (new-platform) +- Fix MQTT payload decode returning prematurely ([@OttoWinter] - [#12420]) ([mqtt docs]) +- Print every changed file on new line ([@cdce8p] - [#12412]) +- Added support for colored KNX lights ([@Julius2342] - [#12411]) ([knx docs]) ([light.knx docs]) +- Small code cleanup: ([@Julius2342] - [#12409]) ([scene docs]) +- Cleanup of knx component ([@Julius2342] - [#12408]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([notify.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) +- Update the Tibber sensor at startup ([@danielhiversen] - [#12428]) ([sensor.tibber docs]) +- zha: Add unique_id to entities ([@rcloran] - [#12331]) ([zha docs]) +- Cleanup http ([@balloob] - [#12424]) ([frontend docs]) ([http docs]) +- Update CODEOWNERS ([@dgomes] - [#12440]) +- Fix: timeout data attribute now is parsed to float ([@sjvc] - [#12432]) ([telegram_bot docs]) +- Stop mapping zigbee switches to lights & switches. ([@igorbernstein2] - [#12280]) ([zha docs]) +- AirVisual: Entity Registry updates and cleanup ([@bachya] - [#12319]) ([sensor.airvisual docs]) (breaking change) +- Vagrant - sendfile python3.5 debian-stretch ([@tabakhase] - [#12454]) +- Add effects to iGlo Lights ([@jesserockz] - [#12365]) ([light.iglo docs]) +- Fake the state for a short period and skip the next update. ([@syssi] - [#12446]) ([fan.xiaomi_miio docs]) +- Initial support for Config Entries ([@balloob] - [#12079]) +- Make WUnderground async ([@OttoWinter] - [#12385]) ([sensor.wunderground docs]) +- Add the Xiaomi TV platform. ([@fattdev] - [#12359]) ([media_player.xiaomi_tv docs]) (new-platform) +- Update voluputous ([@balloob] - [#12463]) (breaking change) +- Map Alexa StepVolume responses to volume_up/down ([@lucasweb78] - [#12467]) ([alexa docs]) +- ONVIF Camera added Error handling and rtsp authentication. ([@matt2005] - [#11129]) ([camera.onvif docs]) +- Bump aioautomatic to 0.6.5 for voluptuous 0.11 ([@armills] - [#12480]) ([device_tracker.automatic docs]) +- Add example in test how to create list or object in template ([@balloob] - [#12469]) +- KNX/Climate: Fixed platform schema min/max values. ([@Julius2342] - [#12477]) ([climate.knx docs]) +- Prevent error when no internet or DNS is available ([@mjj4791] - [#12486]) ([sensor.buienradar docs]) ([weather.buienradar docs]) +- Added doorbird_last_motion to DoorBird camera platform ([@sjvc] - [#12457]) ([camera.doorbird docs]) +- Fail gracefully with unreachable LaMetric ([@PhilRW] - [#12451]) ([notify.lametric docs]) +- Enable compression when sending json to client ([@elupus] - [#11165]) ([http docs]) +- bump usps version ([@happyleavesaoc] - [#12465]) ([usps docs]) (breaking change) +- Try deflaking recorder tests ([@balloob] - [#12492]) +- Support for August doorbell ([@snjoetw] - [#11124]) ([august docs]) ([binary_sensor.august docs]) ([camera.august docs]) ([lock.august docs]) (new-platform) +- Avoid warnings when purging an empty database ([@amelchio] - [#12494]) +- Support for PTZ in Onvif cameras ([@karlkar] - [#11630]) ([camera.onvif docs]) +- Rework Sonos media player platform ([@amelchio] - [#12126]) ([media_player.sonos docs]) +- Converted shopping list to use json util and added default override for json util ([@FrederikBolding] - [#12478]) ([shopping_list docs]) +- added smappee component ([@hmn] - [#11491]) ([smappee docs]) ([sensor.smappee docs]) ([switch.smappee docs]) (new-platform) +- More features for the Bluesound component ([@thrawnarn] - [#11450]) ([media_player.bluesound docs]) +- zha: Simplify unique ID ([@rcloran] - [#12495]) ([zha docs]) +- zha: Add support for humidity sensors ([@rcloran] - [#12496]) ([zha docs]) ([sensor.zha docs]) +- bump python-eq3bt version, fixes #12499 ([@rytilahti] - [#12510]) ([climate.eq3btsmart docs]) +- new version of xiaomi lib ([@danielhiversen] - [#12513]) ([xiaomi_aqara docs]) +- python-miio version bumped. (Closes: #12471) ([@syssi] - [#12481]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- LimitlessLED assumed state ([@amelchio] - [#12475]) ([light.limitlessled docs]) (breaking change) +- Add support for HomeKit ([@cdce8p] - [#12488]) ([homekit docs]) (new-platform) +- Add password support ([@pvizeli] - [#12525]) ([hassio docs]) +- Changed to async_schedule_update_ha_state ([@thrawnarn] - [#12518]) ([media_player.bluesound docs]) +- Fix Sphinx build ([@balloob] - [#12535]) +- Update voluptuous serialize ([@balloob] - [#12538]) ([config docs]) +- Clarify a comment regarding python versions ([@aprasanna] - [#12537]) +- Adds filesize component ([@robmarkcole] - [#12211]) ([sensor.filesize docs]) (new-platform) +- Clarify cloud error ([@balloob] - [#12540]) ([cloud docs]) +- Build JSON in executor ([@amelchio] - [#12536]) ([history docs]) ([logbook docs]) +- Bugfix: Input Datetime config schema ([@cdce8p] - [#12552]) ([input_datetime docs]) +- Fix numeric_state condition spamming on unavailable ([@OttoWinter] - [#12550]) +- Frontier silicon async ([@zhelev] - [#12503]) ([media_player.frontier_silicon docs]) +- Fix WUnderground spamming logs ([@OttoWinter] - [#12548]) ([sensor.wunderground docs]) +- Added support for milight single channel dimmer ([@rubenverhoef] - [#12558]) ([light.limitlessled docs]) +- Add new component: BMW connected drive ([@ChristianKuehnel] - [#12277]) ([bmw_connected_drive docs]) ([device_tracker.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (new-platform) +- Cleanup hass.io component ([@pvizeli] - [#12556]) ([hassio docs]) +- Add support for smoke detector in deconz ([@Kane610] - [#12561]) ([deconz docs]) +- Fix caldav component handling missing dtend ([@bottomquark] - [#12562]) ([calendar.caldav docs]) +- Add limitlessled night effect ([@amelchio] - [#12567]) ([light.limitlessled docs]) +- Basic support of post 2016 AVR-X receivers ([@scarface-4711] - [#12569]) ([media_player.denonavr docs]) +- Fix config 404 ([@balloob] - [#12571]) ([config docs]) +- Logbook speedup ([@amelchio] - [#12566]) ([logbook docs]) +- Fix sonos default errorcodes ([@amelchio] - [#12582]) ([media_player.sonos docs]) +- Update pychromecast to 2.0.0 ([@balloob] - [#12587]) ([media_player.cast docs]) +- Set event_id foreign key in recorded states ([@amelchio] - [#12580]) +- Deconz support water sensor ([@Kane610] - [#12581]) ([deconz docs]) +- Cloud reconnect tweaks ([@balloob] - [#12586]) ([cloud docs]) +- Hassio cleanup part2 ([@pvizeli] - [#12588]) ([hassio docs]) +- Add Bluetooth and NFC card/tag Alarm types ([@matthewcky2k] - [#12151]) ([lock.zwave docs]) +- Fix fix isy994 fan detection ([@OverloadUT] - [#12595]) ([isy994 docs]) +- Adds folder sensor ([@robmarkcole] - [#12208]) ([sensor.folder docs]) (new-platform) +- Add unique_id to Xiaomi Aqara ([@tinloaf] - [#12372]) ([xiaomi_aqara docs]) +- Make groups entities again ([@balloob] - [#12574]) ([alexa docs]) +- Python spotcrime ([@jcconnell] - [#12460]) ([sensor.spotcrime docs]) (new-platform) +- Allow ignoring call service events in mqtt_eventstream ([@cmsimike] - [#12519]) ([mqtt_eventstream docs]) +- Set speed service fixed. ([@syssi] - [#12602]) ([fan.xiaomi_miio docs]) +- Updated script/lint ([@cdce8p] - [#12600]) +- Adding RoomHinting to GoogleAssistant to allow for room annotations. ([@jeremydk] - [#12598]) ([google_assistant docs]) +- Fix mclimate accounts with not only melissa components ([@kennedyshead] - [#12427]) ([melissa docs]) ([climate.melissa docs]) +- Cast unique_id and async discovery ([@OttoWinter] - [#12474]) ([media_player.cast docs]) +- Add Tahoma scenes ([@bakedraccoon] - [#12498]) ([scene docs]) ([tahoma docs]) (new-platform) +- Optimize logbook SQL query ([@amelchio] - [#12608]) ([logbook docs]) +- Fix voluptuous breaking change things ([@balloob] - [#12611]) ([xiaomi_aqara docs]) ([binary_sensor.knx docs]) +- OpenGarage - correctly handle offline status (#12612) ([@swbradshaw] - [#12613]) ([cover.opengarage docs]) +- Move recorder query out of event loop ([@amelchio] - [#12615]) +- Hassio update timeout filter list ([@pvizeli] - [#12617]) ([hassio docs]) +- The name of the enum must be used here because of the speed_list. ([@syssi] - [#12625]) ([fan.xiaomi_miio docs]) +- Fix cast doing I/O in event loop ([@OttoWinter] - [#12632]) ([media_player.cast docs]) + +[#11124]: https://github.com/home-assistant/home-assistant/pull/11124 +[#11129]: https://github.com/home-assistant/home-assistant/pull/11129 +[#11165]: https://github.com/home-assistant/home-assistant/pull/11165 +[#11450]: https://github.com/home-assistant/home-assistant/pull/11450 +[#11491]: https://github.com/home-assistant/home-assistant/pull/11491 +[#11555]: https://github.com/home-assistant/home-assistant/pull/11555 +[#11630]: https://github.com/home-assistant/home-assistant/pull/11630 +[#11683]: https://github.com/home-assistant/home-assistant/pull/11683 +[#11862]: https://github.com/home-assistant/home-assistant/pull/11862 +[#12004]: https://github.com/home-assistant/home-assistant/pull/12004 +[#12079]: https://github.com/home-assistant/home-assistant/pull/12079 +[#12126]: https://github.com/home-assistant/home-assistant/pull/12126 +[#12151]: https://github.com/home-assistant/home-assistant/pull/12151 +[#12181]: https://github.com/home-assistant/home-assistant/pull/12181 +[#12201]: https://github.com/home-assistant/home-assistant/pull/12201 +[#12208]: https://github.com/home-assistant/home-assistant/pull/12208 +[#12211]: https://github.com/home-assistant/home-assistant/pull/12211 +[#12252]: https://github.com/home-assistant/home-assistant/pull/12252 +[#12262]: https://github.com/home-assistant/home-assistant/pull/12262 +[#12264]: https://github.com/home-assistant/home-assistant/pull/12264 +[#12266]: https://github.com/home-assistant/home-assistant/pull/12266 +[#12268]: https://github.com/home-assistant/home-assistant/pull/12268 +[#12271]: https://github.com/home-assistant/home-assistant/pull/12271 +[#12274]: https://github.com/home-assistant/home-assistant/pull/12274 +[#12277]: https://github.com/home-assistant/home-assistant/pull/12277 +[#12279]: https://github.com/home-assistant/home-assistant/pull/12279 +[#12280]: https://github.com/home-assistant/home-assistant/pull/12280 +[#12281]: https://github.com/home-assistant/home-assistant/pull/12281 +[#12283]: https://github.com/home-assistant/home-assistant/pull/12283 +[#12290]: https://github.com/home-assistant/home-assistant/pull/12290 +[#12291]: https://github.com/home-assistant/home-assistant/pull/12291 +[#12294]: https://github.com/home-assistant/home-assistant/pull/12294 +[#12295]: https://github.com/home-assistant/home-assistant/pull/12295 +[#12296]: https://github.com/home-assistant/home-assistant/pull/12296 +[#12307]: https://github.com/home-assistant/home-assistant/pull/12307 +[#12315]: https://github.com/home-assistant/home-assistant/pull/12315 +[#12316]: https://github.com/home-assistant/home-assistant/pull/12316 +[#12319]: https://github.com/home-assistant/home-assistant/pull/12319 +[#12322]: https://github.com/home-assistant/home-assistant/pull/12322 +[#12329]: https://github.com/home-assistant/home-assistant/pull/12329 +[#12331]: https://github.com/home-assistant/home-assistant/pull/12331 +[#12333]: https://github.com/home-assistant/home-assistant/pull/12333 +[#12335]: https://github.com/home-assistant/home-assistant/pull/12335 +[#12338]: https://github.com/home-assistant/home-assistant/pull/12338 +[#12343]: https://github.com/home-assistant/home-assistant/pull/12343 +[#12344]: https://github.com/home-assistant/home-assistant/pull/12344 +[#12347]: https://github.com/home-assistant/home-assistant/pull/12347 +[#12348]: https://github.com/home-assistant/home-assistant/pull/12348 +[#12352]: https://github.com/home-assistant/home-assistant/pull/12352 +[#12354]: https://github.com/home-assistant/home-assistant/pull/12354 +[#12356]: https://github.com/home-assistant/home-assistant/pull/12356 +[#12359]: https://github.com/home-assistant/home-assistant/pull/12359 +[#12360]: https://github.com/home-assistant/home-assistant/pull/12360 +[#12361]: https://github.com/home-assistant/home-assistant/pull/12361 +[#12362]: https://github.com/home-assistant/home-assistant/pull/12362 +[#12365]: https://github.com/home-assistant/home-assistant/pull/12365 +[#12370]: https://github.com/home-assistant/home-assistant/pull/12370 +[#12372]: https://github.com/home-assistant/home-assistant/pull/12372 +[#12377]: https://github.com/home-assistant/home-assistant/pull/12377 +[#12378]: https://github.com/home-assistant/home-assistant/pull/12378 +[#12379]: https://github.com/home-assistant/home-assistant/pull/12379 +[#12383]: https://github.com/home-assistant/home-assistant/pull/12383 +[#12385]: https://github.com/home-assistant/home-assistant/pull/12385 +[#12390]: https://github.com/home-assistant/home-assistant/pull/12390 +[#12391]: https://github.com/home-assistant/home-assistant/pull/12391 +[#12401]: https://github.com/home-assistant/home-assistant/pull/12401 +[#12404]: https://github.com/home-assistant/home-assistant/pull/12404 +[#12408]: https://github.com/home-assistant/home-assistant/pull/12408 +[#12409]: https://github.com/home-assistant/home-assistant/pull/12409 +[#12411]: https://github.com/home-assistant/home-assistant/pull/12411 +[#12412]: https://github.com/home-assistant/home-assistant/pull/12412 +[#12420]: https://github.com/home-assistant/home-assistant/pull/12420 +[#12424]: https://github.com/home-assistant/home-assistant/pull/12424 +[#12427]: https://github.com/home-assistant/home-assistant/pull/12427 +[#12428]: https://github.com/home-assistant/home-assistant/pull/12428 +[#12432]: https://github.com/home-assistant/home-assistant/pull/12432 +[#12440]: https://github.com/home-assistant/home-assistant/pull/12440 +[#12446]: https://github.com/home-assistant/home-assistant/pull/12446 +[#12451]: https://github.com/home-assistant/home-assistant/pull/12451 +[#12454]: https://github.com/home-assistant/home-assistant/pull/12454 +[#12457]: https://github.com/home-assistant/home-assistant/pull/12457 +[#12460]: https://github.com/home-assistant/home-assistant/pull/12460 +[#12463]: https://github.com/home-assistant/home-assistant/pull/12463 +[#12464]: https://github.com/home-assistant/home-assistant/pull/12464 +[#12465]: https://github.com/home-assistant/home-assistant/pull/12465 +[#12467]: https://github.com/home-assistant/home-assistant/pull/12467 +[#12469]: https://github.com/home-assistant/home-assistant/pull/12469 +[#12474]: https://github.com/home-assistant/home-assistant/pull/12474 +[#12475]: https://github.com/home-assistant/home-assistant/pull/12475 +[#12477]: https://github.com/home-assistant/home-assistant/pull/12477 +[#12478]: https://github.com/home-assistant/home-assistant/pull/12478 +[#12480]: https://github.com/home-assistant/home-assistant/pull/12480 +[#12481]: https://github.com/home-assistant/home-assistant/pull/12481 +[#12486]: https://github.com/home-assistant/home-assistant/pull/12486 +[#12488]: https://github.com/home-assistant/home-assistant/pull/12488 +[#12492]: https://github.com/home-assistant/home-assistant/pull/12492 +[#12494]: https://github.com/home-assistant/home-assistant/pull/12494 +[#12495]: https://github.com/home-assistant/home-assistant/pull/12495 +[#12496]: https://github.com/home-assistant/home-assistant/pull/12496 +[#12498]: https://github.com/home-assistant/home-assistant/pull/12498 +[#12503]: https://github.com/home-assistant/home-assistant/pull/12503 +[#12510]: https://github.com/home-assistant/home-assistant/pull/12510 +[#12513]: https://github.com/home-assistant/home-assistant/pull/12513 +[#12518]: https://github.com/home-assistant/home-assistant/pull/12518 +[#12519]: https://github.com/home-assistant/home-assistant/pull/12519 +[#12525]: https://github.com/home-assistant/home-assistant/pull/12525 +[#12535]: https://github.com/home-assistant/home-assistant/pull/12535 +[#12536]: https://github.com/home-assistant/home-assistant/pull/12536 +[#12537]: https://github.com/home-assistant/home-assistant/pull/12537 +[#12538]: https://github.com/home-assistant/home-assistant/pull/12538 +[#12540]: https://github.com/home-assistant/home-assistant/pull/12540 +[#12548]: https://github.com/home-assistant/home-assistant/pull/12548 +[#12550]: https://github.com/home-assistant/home-assistant/pull/12550 +[#12552]: https://github.com/home-assistant/home-assistant/pull/12552 +[#12556]: https://github.com/home-assistant/home-assistant/pull/12556 +[#12558]: https://github.com/home-assistant/home-assistant/pull/12558 +[#12561]: https://github.com/home-assistant/home-assistant/pull/12561 +[#12562]: https://github.com/home-assistant/home-assistant/pull/12562 +[#12566]: https://github.com/home-assistant/home-assistant/pull/12566 +[#12567]: https://github.com/home-assistant/home-assistant/pull/12567 +[#12569]: https://github.com/home-assistant/home-assistant/pull/12569 +[#12571]: https://github.com/home-assistant/home-assistant/pull/12571 +[#12574]: https://github.com/home-assistant/home-assistant/pull/12574 +[#12580]: https://github.com/home-assistant/home-assistant/pull/12580 +[#12581]: https://github.com/home-assistant/home-assistant/pull/12581 +[#12582]: https://github.com/home-assistant/home-assistant/pull/12582 +[#12586]: https://github.com/home-assistant/home-assistant/pull/12586 +[#12587]: https://github.com/home-assistant/home-assistant/pull/12587 +[#12588]: https://github.com/home-assistant/home-assistant/pull/12588 +[#12595]: https://github.com/home-assistant/home-assistant/pull/12595 +[#12598]: https://github.com/home-assistant/home-assistant/pull/12598 +[#12600]: https://github.com/home-assistant/home-assistant/pull/12600 +[#12602]: https://github.com/home-assistant/home-assistant/pull/12602 +[#12608]: https://github.com/home-assistant/home-assistant/pull/12608 +[#12611]: https://github.com/home-assistant/home-assistant/pull/12611 +[#12613]: https://github.com/home-assistant/home-assistant/pull/12613 +[#12615]: https://github.com/home-assistant/home-assistant/pull/12615 +[#12617]: https://github.com/home-assistant/home-assistant/pull/12617 +[#12625]: https://github.com/home-assistant/home-assistant/pull/12625 +[#12632]: https://github.com/home-assistant/home-assistant/pull/12632 +[#12669]: https://github.com/home-assistant/home-assistant/pull/12669 +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@FrederikBolding]: https://github.com/FrederikBolding +[@Julius2342]: https://github.com/Julius2342 +[@Kane610]: https://github.com/Kane610 +[@NovapaX]: https://github.com/NovapaX +[@OttoWinter]: https://github.com/OttoWinter +[@OverloadUT]: https://github.com/OverloadUT +[@PhilRW]: https://github.com/PhilRW +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@abmantis]: https://github.com/abmantis +[@amelchio]: https://github.com/amelchio +[@aprasanna]: https://github.com/aprasanna +[@armills]: https://github.com/armills +[@bachya]: https://github.com/bachya +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@bottomquark]: https://github.com/bottomquark +[@cdce8p]: https://github.com/cdce8p +[@cmsimike]: https://github.com/cmsimike +[@d0ugal]: https://github.com/d0ugal +[@danielhiversen]: https://github.com/danielhiversen +[@dgomes]: https://github.com/dgomes +[@elupus]: https://github.com/elupus +[@fabaff]: https://github.com/fabaff +[@fattdev]: https://github.com/fattdev +[@gerard33]: https://github.com/gerard33 +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@hmn]: https://github.com/hmn +[@igorbernstein2]: https://github.com/igorbernstein2 +[@jcconnell]: https://github.com/jcconnell +[@jeradM]: https://github.com/jeradM +[@jeremydk]: https://github.com/jeremydk +[@jesserockz]: https://github.com/jesserockz +[@karlkar]: https://github.com/karlkar +[@kellerza]: https://github.com/kellerza +[@kennedyshead]: https://github.com/kennedyshead +[@lucasweb78]: https://github.com/lucasweb78 +[@matt2005]: https://github.com/matt2005 +[@matthewcky2k]: https://github.com/matthewcky2k +[@mikeodr]: https://github.com/mikeodr +[@mjj4791]: https://github.com/mjj4791 +[@neffs]: https://github.com/neffs +[@patrik3k]: https://github.com/patrik3k +[@pvizeli]: https://github.com/pvizeli +[@rcloran]: https://github.com/rcloran +[@robmarkcole]: https://github.com/robmarkcole +[@rubenverhoef]: https://github.com/rubenverhoef +[@rytilahti]: https://github.com/rytilahti +[@scarface-4711]: https://github.com/scarface-4711 +[@sjvc]: https://github.com/sjvc +[@snjoetw]: https://github.com/snjoetw +[@swbradshaw]: https://github.com/swbradshaw +[@syssi]: https://github.com/syssi +[@tabakhase]: https://github.com/tabakhase +[@thrawnarn]: https://github.com/thrawnarn +[@tinloaf]: https://github.com/tinloaf +[@trisk]: https://github.com/trisk +[@tschmidty69]: https://github.com/tschmidty69 +[@ttroy50]: https://github.com/ttroy50 +[@zhelev]: https://github.com/zhelev +[@fanthos]: https://github.com/fanthos +[@c727]: https://github.com/c727 +[@ciotlosm]: https://github.com/ciotlosm +[@frenck]: https://github.com/frenck +[@pvizeli]: https://github.com/pvizeli +[@ryanm101]: https://github.com/ryanm101 +[alexa docs]: https://home-assistant.io/components/alexa/ +[august docs]: https://home-assistant.io/components/august/ +[binary_sensor.august docs]: https://home-assistant.io/components/binary_sensor.august/ +[binary_sensor.bloomsky docs]: https://home-assistant.io/components/binary_sensor.bloomsky/ +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/ +[bmw_connected_drive docs]: https://home-assistant.io/components/bmw_connected_drive/ +[calendar.caldav docs]: https://home-assistant.io/components/calendar.caldav/ +[camera.august docs]: https://home-assistant.io/components/camera.august/ +[camera.bloomsky docs]: https://home-assistant.io/components/camera.bloomsky/ +[camera.doorbird docs]: https://home-assistant.io/components/camera.doorbird/ +[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/ +[camera.rpi_camera docs]: https://home-assistant.io/components/camera.rpi_camera/ +[climate.eq3btsmart docs]: https://home-assistant.io/components/climate.eq3btsmart/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[climate.melissa docs]: https://home-assistant.io/components/climate.melissa/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[config docs]: https://home-assistant.io/components/config/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[cover.knx docs]: https://home-assistant.io/components/cover.knx/ +[cover.opengarage docs]: https://home-assistant.io/components/cover.opengarage/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[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.bmw_connected_drive docs]: https://home-assistant.io/components/device_tracker.bmw_connected_drive/ +[device_tracker.nmap_tracker docs]: https://home-assistant.io/components/device_tracker.nmap_tracker/ +[device_tracker.unifi docs]: https://home-assistant.io/components/device_tracker.unifi/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[frontend docs]: https://home-assistant.io/components/frontend/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[history docs]: https://home-assistant.io/components/history/ +[homekit docs]: https://home-assistant.io/components/homekit/ +[homekit.accessories docs]: https://home-assistant.io/components/homekit.accessories/ +[homekit.const docs]: https://home-assistant.io/components/homekit.const/ +[homekit.covers docs]: https://home-assistant.io/components/homekit.covers/ +[homekit.sensors docs]: https://home-assistant.io/components/homekit.sensors/ +[http docs]: https://home-assistant.io/components/http/ +[input_datetime docs]: https://home-assistant.io/components/input_datetime/ +[isy994 docs]: https://home-assistant.io/components/isy994/ +[knx docs]: https://home-assistant.io/components/knx/ +[light.deconz docs]: https://home-assistant.io/components/light.deconz/ +[light.iglo docs]: https://home-assistant.io/components/light.iglo/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.limitlessled docs]: https://home-assistant.io/components/light.limitlessled/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[lock.august docs]: https://home-assistant.io/components/lock.august/ +[lock.zwave docs]: https://home-assistant.io/components/lock.zwave/ +[logbook docs]: https://home-assistant.io/components/logbook/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.bluesound docs]: https://home-assistant.io/components/media_player.bluesound/ +[media_player.braviatv_psk docs]: https://home-assistant.io/components/media_player.braviatv_psk/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.frontier_silicon docs]: https://home-assistant.io/components/media_player.frontier_silicon/ +[media_player.panasonic_viera docs]: https://home-assistant.io/components/media_player.panasonic_viera/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.xiaomi_tv docs]: https://home-assistant.io/components/media_player.xiaomi_tv/ +[melissa docs]: https://home-assistant.io/components/melissa/ +[mqtt docs]: https://home-assistant.io/components/mqtt/ +[mqtt_eventstream docs]: https://home-assistant.io/components/mqtt_eventstream/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.knx docs]: https://home-assistant.io/components/notify.knx/ +[notify.lametric docs]: https://home-assistant.io/components/notify.lametric/ +[panel_iframe docs]: https://home-assistant.io/components/panel_iframe/ +[remote.xiaomi_miio docs]: https://home-assistant.io/components/remote.xiaomi_miio/ +[scene docs]: https://home-assistant.io/components/scene/ +[sensor.airvisual docs]: https://home-assistant.io/components/sensor.airvisual/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.bloomsky docs]: https://home-assistant.io/components/sensor.bloomsky/ +[sensor.bmw_connected_drive docs]: https://home-assistant.io/components/sensor.bmw_connected_drive/ +[sensor.buienradar docs]: https://home-assistant.io/components/sensor.buienradar/ +[sensor.deconz docs]: https://home-assistant.io/components/sensor.deconz/ +[sensor.fastdotcom docs]: https://home-assistant.io/components/sensor.fastdotcom/ +[sensor.fedex docs]: https://home-assistant.io/components/sensor.fedex/ +[sensor.filesize docs]: https://home-assistant.io/components/sensor.filesize/ +[sensor.folder docs]: https://home-assistant.io/components/sensor.folder/ +[sensor.knx docs]: https://home-assistant.io/components/sensor.knx/ +[sensor.pollen docs]: https://home-assistant.io/components/sensor.pollen/ +[sensor.rfxtrx docs]: https://home-assistant.io/components/sensor.rfxtrx/ +[sensor.sabnzbd docs]: https://home-assistant.io/components/sensor.sabnzbd/ +[sensor.sma docs]: https://home-assistant.io/components/sensor.sma/ +[sensor.smappee docs]: https://home-assistant.io/components/sensor.smappee/ +[sensor.speedtest docs]: https://home-assistant.io/components/sensor.speedtest/ +[sensor.spotcrime docs]: https://home-assistant.io/components/sensor.spotcrime/ +[sensor.startca docs]: https://home-assistant.io/components/sensor.startca/ +[sensor.template docs]: https://home-assistant.io/components/sensor.template/ +[sensor.tibber docs]: https://home-assistant.io/components/sensor.tibber/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[sensor.zha docs]: https://home-assistant.io/components/sensor.zha/ +[shopping_list docs]: https://home-assistant.io/components/shopping_list/ +[smappee docs]: https://home-assistant.io/components/smappee/ +[switch.knx docs]: https://home-assistant.io/components/switch.knx/ +[switch.rainmachine docs]: https://home-assistant.io/components/switch.rainmachine/ +[switch.smappee docs]: https://home-assistant.io/components/switch.smappee/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[usps docs]: https://home-assistant.io/components/usps/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[vera docs]: https://home-assistant.io/components/vera/ +[weather.buienradar docs]: https://home-assistant.io/components/weather.buienradar/ +[weblink docs]: https://home-assistant.io/components/weblink/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[zha docs]: https://home-assistant.io/components/zha/ +[#12635]: https://github.com/home-assistant/home-assistant/pull/12635 +[#12645]: https://github.com/home-assistant/home-assistant/pull/12645 +[#12657]: https://github.com/home-assistant/home-assistant/pull/12657 +[#12679]: https://github.com/home-assistant/home-assistant/pull/12679 +[#12685]: https://github.com/home-assistant/home-assistant/pull/12685 +[#12687]: https://github.com/home-assistant/home-assistant/pull/12687 +[#12691]: https://github.com/home-assistant/home-assistant/pull/12691 +[#12711]: https://github.com/home-assistant/home-assistant/pull/12711 +[#12715]: https://github.com/home-assistant/home-assistant/pull/12715 +[#12719]: https://github.com/home-assistant/home-assistant/pull/12719 +[#12726]: https://github.com/home-assistant/home-assistant/pull/12726 +[#12729]: https://github.com/home-assistant/home-assistant/pull/12729 +[#12737]: https://github.com/home-assistant/home-assistant/pull/12737 +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@NovapaX]: https://github.com/NovapaX +[@OttoWinter]: https://github.com/OttoWinter +[@amelchio]: https://github.com/amelchio +[@aronsky]: https://github.com/aronsky +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@jesserockz]: https://github.com/jesserockz +[@kellerza]: https://github.com/kellerza +[@pvizeli]: https://github.com/pvizeli +[@scarface-4711]: https://github.com/scarface-4711 +[@tumik]: https://github.com/tumik +[@fanthos]: https://github.com/fanthos +[@PhilRW]: https://github.com/PhilRW +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[light.iglo docs]: https://home-assistant.io/components/light.iglo/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[mysensors docs]: https://home-assistant.io/components/mysensors/ +[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[vacuum.roomba docs]: https://home-assistant.io/components/vacuum.roomba/ +[zha docs]: https://home-assistant.io/components/zha/ +[#12759]: https://github.com/home-assistant/home-assistant/pull/12759 +[#12762]: https://github.com/home-assistant/home-assistant/pull/12762 +[#12764]: https://github.com/home-assistant/home-assistant/pull/12764 +[#12767]: https://github.com/home-assistant/home-assistant/pull/12767 +[#12769]: https://github.com/home-assistant/home-assistant/pull/12769 +[#12789]: https://github.com/home-assistant/home-assistant/pull/12789 +[#12790]: https://github.com/home-assistant/home-assistant/pull/12790 +[#12796]: https://github.com/home-assistant/home-assistant/pull/12796 +[#12799]: https://github.com/home-assistant/home-assistant/pull/12799 +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@amelchio]: https://github.com/amelchio +[@bachya]: https://github.com/bachya +[@basschipper]: https://github.com/basschipper +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@ryanm101]: https://github.com/ryanm101 +[@uchagani]: https://github.com/uchagani +[binary_sensor.rfxtrx docs]: https://home-assistant.io/components/binary_sensor.rfxtrx/ +[bmw_connected_drive docs]: https://home-assistant.io/components/bmw_connected_drive/ +[logbook docs]: https://home-assistant.io/components/logbook/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.samsungtv docs]: https://home-assistant.io/components/media_player.samsungtv/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[sensor.fedex docs]: https://home-assistant.io/components/sensor.fedex/ +[sensor.pollen docs]: https://home-assistant.io/components/sensor.pollen/ +[#12810]: https://github.com/home-assistant/home-assistant/pull/12810 +[#12837]: https://github.com/home-assistant/home-assistant/pull/12837 +[#12840]: https://github.com/home-assistant/home-assistant/pull/12840 +[#12845]: https://github.com/home-assistant/home-assistant/pull/12845 +[@andrey-git]: https://github.com/andrey-git +[@balloob]: https://github.com/balloob +[@kellerza]: https://github.com/kellerza +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[hue docs]: https://home-assistant.io/components/hue/]]> + + + + <![CDATA[0.63: Entity Registry, SQL Sensor, Mercedes cars]]> + + 2018-02-10T01:00:00+00:00 + https://home-assistant.io/blog/2018/02/10/release-63 + + +## Date set for dropping Python 3.4 support + +As [announced in October](https://home-assistant.io/blog/2017/10/06/deprecating-python-3.4-support/), we're going to drop Python 3.4 support in 2018. We've now decided that in two releases, 0.65, the minimum Python version that will be supported is bumped to 3.5.3. This won't impact most users. You are already fine if you're using Hass.io, the latest Debian stable (Stretch) or a derivative of that (Raspbian, Ubuntu). + +## Entity Registry + +This release introduces the entity registry. The entity registry allows integrations to reserve entity IDs. This means that we'll automatically grant an entity ID to a device. It's reserved so that no other device will ever get that entity ID. It also means that as a user, you will be able to customize the entity IDs for these devices. + +For an integration to leverage the entity registry, it needs to define a unique ID for each of their entities. A unique ID is something that we can uniquely identify the device and that is not configurable. So a serial number and mac address are ok, IP addresses or names are not. + +Examples of integrations that have unique IDs defined in this release are Z-Wave, Hue, Nest, LIFX, Sonos, Apple TV. + +To update the entity ID that will be assigned to your device, update `/entity_registry.yaml` and restart Home Assistant (reloading on the fly is planned for a future release). + +The entity registry will assign an entity ID the first time that a device is seen. This should be the same entity ID as it always was before. If this is not the case, update the registration entity to change it back to the old entity ID. + +We're planning a lot of cool stuff around the entity registry. Stay tuned! + +## New Platforms + +- Adds allergy/disease sensor platform from Pollen.com ([@bachya] - [#11573]) ([sensor.pollen docs]) (new-platform) +- Add Goalfeed platform ([@wardcraigj] - [#11098]) ([goalfeed docs]) (new-platform) +- Add Melissa (HVAC/climate) component ([@kennedyshead] - [#11503]) ([melissa docs]) ([sensor.melissa docs]) (new-platform) +- Mediaroom ([@dgomes] - [#11864]) ([media_player.mediaroom docs]) (new-platform) +- Add Xiaomi Universal IR Remote (Chuangmi IR) ([@cnrd] - [#11891]) ([remote.xiaomi_miio docs]) (new-platform) +- SQL sensor ([@dgomes] - [#12142]) ([sensor.sql docs]) (new-platform) +- Add Mercedes me component ([@ReneNulschDE] - [#11743]) (new-platform) + +## Release 0.63.1 - February 12 + +- Fix Alexa Step Volume ([@lucasweb78] - [#12314]) ([alexa docs]) +- Remove unique ID from netatmo ([@balloob] - [#12317]) ([binary_sensor.netatmo docs]) ([camera.netatmo docs]) ([sensor.netatmo docs]) +- Allow overriding name via entity registry ([@balloob] - [#12292]) +- Respect entity namespace for entity registry ([@balloob] - [#12313]) +- Fix Report State for Alexa Brightness Controller ([@lucasweb78] - [#12318]) ([alexa docs]) +- Always return lockState == LOCKED when handling Alexa.LockController ([@lucasweb78] - [#12328]) ([alexa docs]) +- Fix platform dependencies ([@balloob] - [#12330]) + +## Release 0.63.2 - February 14 + +- Fix MercedesMe - add check for unsupported features ([@ReneNulschDE] - [#12342]) ([mercedesme docs]) ([binary_sensor.mercedesme docs]) ([device_tracker.mercedesme docs]) ([sensor.mercedesme docs]) +- Fix WUnderground names ([@OttoWinter] - [#12346]) ([sensor.wunderground docs]) +- Updated beacontools ([@citruz] - [#12368]) ([sensor.eddystone_temperature docs]) +- Introduce zone_id to identify player+zone ([@sdague] - [#12382]) ([media_player.yamaha docs]) +- Downgrade limitlessled to 1.0.8 ([@amelchio] - [#12403]) ([light.limitlessled docs]) + +## Release 0.63.3 - February 17 + +- python-miio version bumped. (Closes: #12389, Closes: #12298) ([@syssi] - [#12392]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Fixed 3 small issues in isy994 component ([@OverloadUT] - [#12421]) ([isy994 docs]) +- Reduce the load on met.no servers, yr.no sensor ([@danielhiversen] - [#12435]) ([sensor.yr docs]) +- Fix for contentRating error ([@ryanm101] - [#12445]) ([media_player.plex docs]) +- Fix light template to return brightness as int ([@andrey-git] - [#12447]) ([light.template docs]) +- Optimize recorder purge ([@amelchio] - [#12448]) +- [SQL Sensor] always close session ([@dgomes] - [#12452]) ([sensor.sql docs]) + +## 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. + +## 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. + + + +## Breaking Changes + +- updated sensor name ([@philklei] - [#12084]) ([sensor.tahoma docs]) (breaking change) +- Originally Canary camera is added per location and only displays an image that was captured due to motion. Now it is per device (each location can have multiple devices) with live stream support. ([@snjoetw] - [#11949]) ([canary docs]) ([camera.canary docs]) (breaking change) +- Avoid influxdb filling connection pool: The influxdb `retry_queue_limit` configuration variable no longer has any effect and can be removed. ([@amelchio] - [#12182]) ([influxdb docs]) (breaking change) +- Some spelling mistakes in default entity names have been fixed in ([@OttoWinter] - [#12041]). This is causing these `entity_id` changes: + - [Seven segments display](https://home-assistant.io/components/image_processing.seven_segments/): `image_processing.seven_segement_ocr_[...]` → `image_processing.seven_segment_ocr_[...]` + - [Rain Bird Switch](https://home-assistant.io/components/switch.rainbird/): `switch.sprinker_[...]` → `switch.sprinkler_[...]` + - [OpenEVSE Sensor](https://home-assistant.io/components/sensor.openevse/): `sensor.ambient_termperature` → `sensor.ambient_temperature` + - [Fido](https://home-assistant.io/components/sensor.fido/): `sensor.[...]_internaltional_remaining` → `sensor.[...]_international remaining` +- From version 0.64, Home Assistant will by default purge recorded state history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain: + ```yaml + recorder: + purge_keep_days: 30 + ``` + + If you want to keep the previous default of never deleting history, use this configuration: + ```yaml + recorder: + purge_interval: 0 + ``` + ([@amelchio] - [#11976]) +- Fix duplicate entity_ids in System Monitor ([@fanaticDavid] - [#12124]) ([sensor.systemmonitor docs]) (breaking change) + + | Resource | Old Entity ID | New Entity ID | + | :------------------ | :------------------ |:-------------------------| + | disk_use | sensor.disk_used | sensor.disk_use | + | disk_use_percent | sensor.disk_used | sensor.disk_use_percent | + | load_15m | sensor.average_load_15m | sensor.load_15m | + | load_1m | sensor.average_load_1m | sensor.load_1m | + | load_5m | sensor.average_load_5m | sensor.load_5m | + | memory_free | sensor.ram_available | sensor.memory_free | + | memory_use | sensor.ram_used | sensor.memory_use | + | memory_use_percent | sensor.ram_used | sensor.memory_use_percent | + | network_in | sensor.received | sensor.network_in | + | network_out | sensor.sent | sensor.network_out | + | packets_in | sensor.packets_received | sensor.packets_in | + | packets_out | sensor.packets_sent | sensor.packets_out | + | processor_use | sensor.cpu_used | sensor.processor_use | + | swap_use | sensor.swap_used | sensor.swap_use | + | swap_use_percent | sensor.swap_used | sensor.swap_use_percent | + +- Developers only: Following EntityComponent methods have been removed: `extract_from_service`, `async_update_group`, `async_reset`, `prepare_reload` ([@balloob] - [#12237]) (breaking change) + + +## All changes + +- Map media_stop to idle state ([@akloeckner] - [#11819]) +- Adds allergy/disease sensor platform from Pollen.com ([@bachya] - [#11573]) ([sensor.pollen docs]) (new-platform) +- check_config.py: allow colorlog==3.1. ([@dotlambda] - [#11927]) +- Weblink - Allow relative urls in config ([@ReneNulschDE] - [#11808]) ([weblink docs]) +- Panel_Iframe - Allow relative urls in config ([@ReneNulschDE] - [#11832]) ([panel_iframe docs]) +- Python 3.6 invalid escape sequence deprecation fixes ([@scop] - [#11941]) +- tests: Use assertEqual instead of deprecated assertEquals ([@scop] - [#11943]) +- huawei_router: Fix documentation link ([@scop] - [#11961]) ([device_tracker.huawei_router docs]) +- Spelling fixes ([@scop] - [#11940]) +- Upgrade sqlalchemy to 1.2.2 ([@fabaff] - [#11956]) +- Upgrade youtube_dl to 2018.01.21 ([@fabaff] - [#11955]) ([media_extractor docs]) +- Upgrade sphinx-autodoc-typehints to 1.2.4 ([@fabaff] - [#11954]) +- Upgrade coinmarketcap to 4.2.1 ([@fabaff] - [#11953]) ([sensor.coinmarketcap docs]) +- Bump dev to 0.63.0.dev0 ([@fabaff] - [#11952]) +- Update xiaomi_aqara.py ([@MGWGIT] - [#11969]) ([sensor.xiaomi_aqara docs]) +- panasonic_viera: Set device name from discovery info ([@scop] - [#11990]) ([media_player.panasonic_viera docs]) +- Update panasonic_viera to 0.3 ([@scop] - [#11989]) ([media_player.panasonic_viera docs]) +- Fix 11982 - uvc don't handle null as username ([@bratanon] - [#11984]) ([camera.uvc docs]) +- Add Goalfeed platform ([@wardcraigj] - [#11098]) ([goalfeed docs]) (new-platform) +- Added support for hourly percent change in coinmarketcap component ([@kevindgoff] - [#11996]) ([sensor.coinmarketcap docs]) +- Upgrade coinbase to 2.0.7 ([@fabaff] - [#11992]) ([coinbase docs]) ([sensor.coinbase docs]) +- Upgrade pyota to 2.0.4 ([@fabaff] - [#11991]) ([iota docs]) +- Fixed Canary temperature sensor and remapped air quality value ([@snjoetw] - [#11355]) ([canary docs]) ([sensor.canary docs]) +- Refactor Alexa Smart Home API ([@bitglue] - [#12016]) ([alexa docs]) +- Report states ([@bitglue] - [#11973]) ([alexa docs]) +- alexa: Add media_player InputController support ([@philk] - [#11946]) ([alexa docs]) +- emulated_hue: allow customization within emulated_hue configuration ([@jackwilsdon] - [#11981]) ([emulated_hue docs]) +- Flake8 35 ([@scop] - [#11972]) ([feedreader docs]) ([spc docs]) ([media_player.bluesound docs]) ([media_player.clementine docs]) ([sensor.fritzbox_callmonitor docs]) ([sensor.qnap docs]) ([sensor.synologydsm docs]) +- Typing fixes ([@scop] - [#12015]) +- Fix DoorBird push notifications for installations with an API password ([@Klikini] - [#12020]) ([doorbird docs]) +- Bump upstream lib version. ([@Cinntax] - [#12021]) ([climate.venstar docs]) +- sensor.deutsche_bahn: add only_direct option ([@akloeckner] - [#11999]) ([sensor.deutsche_bahn docs]) +- Fix MQTT cover availability subscription ([@OttoWinter] - [#12036]) ([cover.mqtt docs]) +- Spelling fixes ([@OttoWinter] - [#12041]) (breaking change) +- Online state for samsungtv is jumping when TV is idle ([@kennedyshead] - [#11998]) ([media_player.samsungtv docs]) +- Upgrade astral to 1.5 ([@fabaff] - [#12042]) +- Refactor alexa smart_home tests ([@bitglue] - [#12044]) +- Handling of payload not for this entity. ([@freol35241] - [#11836]) ([binary_sensor.mqtt docs]) +- Refactor Google Assistant query_device ([@philk] - [#12022]) ([google_assistant docs]) +- Entity registry ([@balloob] - [#11979]) ([group docs]) ([climate.nest docs]) +- Return all attributes that are not None in base lock entity class ([@snjoetw] - [#12049]) ([lock docs]) +- Extract requirements ([@balloob] - [#12051]) +- Prepare for recorder purge to be active by default ([@amelchio] - [#11976]) (breaking change) +- Bumped up pymochad requirement to 0.2.0 as a fix for #11928 ([@aosadchyy] - [#12014]) ([mochad docs]) +- Publish errors on the event bus ([@postlund] - [#11964]) ([system_log docs]) +- Unique ID for LIFX lights ([@amelchio] - [#12064]) ([light.lifx docs]) +- Deconz use entity registry ([@Kane610] - [#12067]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) +- Flake8 bugbear fixes ([@scop] - [#12072]) ([plant docs]) ([rfxtrx docs]) ([zwave docs]) ([climate.heatmiser docs]) ([media_player.plex docs]) ([notify.kodi docs]) +- Fix demo platform support ([@ciotlosm] - [#12070]) +- fix event channel name ([@wardcraigj] - [#12077]) ([goalfeed docs]) +- fixed timestamp problem in firefox ([@escoand] - [#12073]) ([weather.openweathermap docs]) +- Handle more file closing using context manager ([@scop] - [#11942]) ([light.greenwave docs]) ([notify.gntp docs]) ([sensor.onewire docs]) +- Influx import improvements ([@RePeet13] - [#11988]) +- Set flux default stop time to dusk ([@infernix] - [#12062]) ([switch.flux docs]) +- Add conditions to forecast ([@escoand] - [#12074]) ([weather.openweathermap docs]) +- Squeezebox Fix duplicate server from discovery ([@mezz64] - [#12063]) ([media_player.squeezebox docs]) +- Upgrade keyring to 11.0.0 ([@fabaff] - [#12082]) +- Correct use of middleware async handling. ([@pelson] - [#12078]) ([http docs]) +- updated sensor name ([@philklei] - [#12084]) ([sensor.tahoma docs]) (breaking change) +- Fix detection of mobile browsers ([@c727] - [#12075]) ([frontend docs]) +- update tahoma api to version 0.0.11 ([@philklei] - [#12099]) ([tahoma docs]) +- added media_stop ([@jodur] - [#12100]) ([media_player.vlc docs]) +- Goalfeed channel ([@wardcraigj] - [#12086]) ([goalfeed docs]) +- Update jinja2 to 2.10 ([@arsaboo] - [#12118]) +- Downgrade Sonarr and Radarr 'Host is not avaliable' errors to warnings ([@timmo001] - [#12119]) ([sensor.radarr docs]) ([sensor.sonarr docs]) +- Fixes away_mode error on startup ([@ciotlosm] - [#12121]) ([climate.generic_thermostat docs]) +- except vol.MultipleInvalid in Broadlink #11795 ([@danielhiversen] - [#12107]) ([sensor.broadlink docs]) +- Adds SUPPORT_TARGET_TEMPERATURE_HIGH and SUPPORT_TARGET_TEMPERATURE_LOW support ([@hawk259] - [#12110]) ([climate.ecobee docs]) +- Dark sky precip accumulation ([@nordlead2005] - [#12127]) ([sensor.darksky docs]) +- fixed wrong check for valid range of 'rgb' values ([@PaulAnnekov] - [#12132]) ([light.xiaomi_aqara docs]) +- OpenALPR Cloud API - transfer image in body of POST request ([@ReneNulschDE] - [#12112]) ([image_processing.openalpr_cloud docs]) +- Add support for "off" function to iTunes ([@lexam79] - [#12109]) ([media_player.itunes docs]) +- Remove asyncio.test_utils to fix tests in Docker/Python 3.7 ([@ubnt-marc-khouri] - [#12102]) +- Add Mercedes me component ([@ReneNulschDE] - [#11743]) +- Spelling fixes ([@scop] - [#12138]) ([plant docs]) ([switch.pulseaudio_loopback docs]) +- Update volumio component ([@titilambert] - [#12045]) ([media_player.volumio docs]) +- Adding information about current TV channel to WebOS media player ([@led-spb] - [#11339]) ([media_player.webostv docs]) +- Fix #8475 device tracker ubus tracks unauthenticated and unassociated devices ([@aarnaud] - [#12140]) ([device_tracker.ubus docs]) +- Fix #11875 Ubus broken since upgrade to 0 57 ([@aarnaud] - [#12141]) ([device_tracker.ubus docs]) +- Update flake8-docstrings to 1.0.3 ([@scop] - [#12136]) +- Tado fixes ([@NigelRook] - [#11294]) ([tado docs]) ([climate.tado docs]) +- Add Melissa (HVAC/climate) component ([@kennedyshead] - [#11503]) ([melissa docs]) ([sensor.melissa docs]) (new-platform) +- Mediaroom ([@dgomes] - [#11864]) ([media_player.mediaroom docs]) (new-platform) +- Upgrade mutagen to 1.40.0 ([@fabaff] - [#12152]) ([tts docs]) +- Upgrade TwitterAPI to 2.4.8 ([@fabaff] - [#12148]) ([notify.twitter docs]) +- fix generic_thermostat bug when restore state from HA start up ([@crhan] - [#12134]) ([climate.generic_thermostat docs]) +- Adding xy_color attribute support to deconz lights ([@ErnstEeldert] - [#12106]) ([light.deconz docs]) +- update python-openzwave to 4.1.3 ([@perosb] - [#12057]) ([zwave docs]) +- Panasonic viera new services ([@dgomes] - [#11963]) ([media_player docs]) ([media_player.panasonic_viera docs]) +- [Mediaroom media_player] Follow up on PR #11864 ([@dgomes] - [#12155]) ([media_player.mediaroom docs]) +- Tests for samsungtv ([@kennedyshead] - [#11933]) +- Upgrade influxdb to 5.0.0 ([@fabaff] - [#12156]) ([influxdb docs]) +- add delay_arrival ([@akloeckner] - [#12169]) ([sensor.deutsche_bahn docs]) +- Move TP-Link socket LED state setting to update() ([@DanNixon] - [#12170]) ([switch.tplink docs]) +- Upgrade schiene to 0.21 ([@fabaff] - [#12176]) ([sensor.deutsche_bahn docs]) +- python-miio version bumped. Fixes all xiaomi_miio components. (Closes: #12017, Closes: #11948, Closes: #11200) ([@syssi] - [#12188]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Services (small_pr)(fix): Added missing return on data template error ([@tschmidty69] - [#12184]) +- fix ecobee is_aux_heat_on property ([@titilambert] - [#12186]) ([climate.ecobee docs]) +- Upgrade pytouchline to 0.7 ([@tbergo] - [#12179]) ([climate.touchline docs]) +- Canary live stream ([@snjoetw] - [#11949]) ([canary docs]) ([camera.canary docs]) (breaking change) +- Replace Gitter with Discord ([@fabaff] - [#12199]) +- Upgrade Sphinx to 1.6.7 ([@fabaff] - [#12200]) +- Change attributes in new Mercedes Me component ([@ReneNulschDE] - [#12147]) ([mercedesme docs]) ([binary_sensor.mercedesme docs]) ([device_tracker.mercedesme docs]) ([sensor.mercedesme docs]) +- Binary Sensor Template: Add icon_template and entity_picture_template support ([@hawk259] - [#12158]) ([binary_sensor.template docs]) +- Bump pyeconet version to fix JSONDecodeError ([@w1ll1am23] - [#12204]) ([climate.econet docs]) +- Add support for Alexa.StepSpeaker ([@lucasweb78] - [#12183]) ([alexa docs]) +- Upgrade wakeonlan to 1.0.0 ([@Tadly] - [#12190]) ([wake_on_lan docs]) ([media_player.panasonic_viera docs]) ([media_player.samsungtv docs]) ([media_player.webostv docs]) ([switch.wake_on_lan docs]) +- zha: Update to bellows 0.5.0+zigpy ([@rcloran] - [#12187]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([sensor.zha docs]) +- Make waterfurnace recovery more robust ([@sdague] - [#12202]) ([waterfurnace docs]) +- Much nicer icon ([@lance36] - [#12212]) ([vacuum.xiaomi_miio docs]) +- Properly handle thresholds of zero ([@DanNixon] - [#12175]) ([binary_sensor.threshold docs]) +- zha: Add support for XBee radios ([@rcloran] - [#12205]) ([zha docs]) ([binary_sensor.zha docs]) +- Fix clear playlist in Volumio component ([@titilambert] - [#12173]) ([media_player.volumio docs]) +- Add Xiaomi Universal IR Remote (Chuangmi IR) ([@cnrd] - [#11891]) ([remote.xiaomi_miio docs]) (new-platform) +- Fix Xeoma camera platform to allow different admin/viewer credentials ([@jeradM] - [#12161]) ([camera.xeoma docs]) +- Xiaomi MiIO Light: Brightness mapping improved ([@syssi] - [#12203]) ([light.xiaomi_miio docs]) +- Fixes according to review from @MartinHjelmare Thank you. ([@kennedyshead] - [#12171]) ([climate.melissa docs]) ([sensor.melissa docs]) +- Fix logger bug on Windows: path contains '\'. ([@fanthos] - [#12197]) ([system_log docs]) +- Catch concurrent.futures.CancelledError in websocket code. ([@pelson] - [#12150]) ([websocket_api docs]) +- Update pushsafer.py ([@appzer] - [#11466]) ([notify.pushsafer docs]) +- Add wake on lan capability to philips TV ([@frog32] - [#12065]) ([media_player.philips_js docs]) +- Specify the minimum python version in the setup.py. ([@pelson] - [#12144]) +- Return of entity_id in template platforms ([@amelchio] - [#12234]) ([binary_sensor.template docs]) ([cover.template docs]) ([light.template docs]) ([sensor.template docs]) ([switch.template docs]) +- Allow zero purge_interval to disable recorder purge ([@amelchio] - [#12220]) +- Update min js=latest version ([@andrey-git] - [#12091]) ([frontend docs]) +- librouteros version bump ([@zabuldon] - [#12227]) ([device_tracker.mikrotik docs]) +- SQL sensor ([@dgomes] - [#12142]) ([sensor.sql docs]) (new-platform) +- Fixes for tesla. New sensors. ([@zabuldon] - [#12225]) ([tesla docs]) ([sensor.tesla docs]) +- Entity layer cleanup ([@balloob] - [#12237]) (breaking change) +- [SMALL PATCH] Sql sensor ([@dgomes] - [#12242]) ([sensor.sql docs]) +- Set tahoma cover update interval to default ([@bakedraccoon] - [#12232]) ([cover.tahoma docs]) +- Avoid influxdb filling connection pool ([@amelchio] - [#12182]) ([influxdb docs]) (breaking change) +- Force update support for mqtt binary sensor ([@mkfink] - [#12092]) ([binary_sensor.mqtt docs]) +- Added password mode to input_text (obscure content of text box) ([@covrig] - [#11849]) ([input_text docs]) ([sensor.xiaomi_aqara docs]) +- Fix cover service description ([@cdce8p] - [#12243]) +- Add explicit first-time config for new purge_keep_days default ([@amelchio] - [#12246]) +- added more debug logging for sensor.alpha_vantage ([@ChristianKuehnel] - [#12249]) ([sensor.alpha_vantage docs]) +- Add Service Schema to Broadlink Switch ([@maddox] - [#12253]) ([switch.broadlink docs]) +- Update aiohttp 2.3.10 / yarl 1.1.0 ([@pvizeli] - [#12244]) +- Fix source code using Windows newline ([@OttoWinter] - [#12248]) +- miflora - fix for exception handling bug ([@ChristianKuehnel] - [#12149]) ([sensor.miflora docs]) +- Update pyhomematic to 0.1.39 ([@danielperna84] - [#12265]) ([homematic docs]) +- Update owntracks.py ([@luca-angemi] - [#12260]) ([device_tracker.owntracks docs]) +- Fix for iTunes media player not updating artwork ([@lexam79] - [#12089]) ([media_player.itunes docs]) +- Fix duplicate entity_ids in System Monitor ([@fanaticDavid] - [#12124]) ([sensor.systemmonitor docs]) (breaking change) +- One bug fix and one improvement to the statistics sensor. ([@glance-] - [#12259]) ([sensor.statistics docs]) +- allow wildcards in subscription ([@escoand] - [#12247]) ([device_tracker.mqtt docs]) +- Retry keyset cloud ([@balloob] - [#12270]) ([cloud docs]) +- Update limitlessled requirement to v1.0.9 ([@vaceslav] - [#12275]) ([light.limitlessled docs]) + +[#11098]: https://github.com/home-assistant/home-assistant/pull/11098 +[#11294]: https://github.com/home-assistant/home-assistant/pull/11294 +[#11339]: https://github.com/home-assistant/home-assistant/pull/11339 +[#11355]: https://github.com/home-assistant/home-assistant/pull/11355 +[#11466]: https://github.com/home-assistant/home-assistant/pull/11466 +[#11503]: https://github.com/home-assistant/home-assistant/pull/11503 +[#11573]: https://github.com/home-assistant/home-assistant/pull/11573 +[#11743]: https://github.com/home-assistant/home-assistant/pull/11743 +[#11808]: https://github.com/home-assistant/home-assistant/pull/11808 +[#11819]: https://github.com/home-assistant/home-assistant/pull/11819 +[#11832]: https://github.com/home-assistant/home-assistant/pull/11832 +[#11836]: https://github.com/home-assistant/home-assistant/pull/11836 +[#11849]: https://github.com/home-assistant/home-assistant/pull/11849 +[#11864]: https://github.com/home-assistant/home-assistant/pull/11864 +[#11891]: https://github.com/home-assistant/home-assistant/pull/11891 +[#11927]: https://github.com/home-assistant/home-assistant/pull/11927 +[#11933]: https://github.com/home-assistant/home-assistant/pull/11933 +[#11940]: https://github.com/home-assistant/home-assistant/pull/11940 +[#11941]: https://github.com/home-assistant/home-assistant/pull/11941 +[#11942]: https://github.com/home-assistant/home-assistant/pull/11942 +[#11943]: https://github.com/home-assistant/home-assistant/pull/11943 +[#11946]: https://github.com/home-assistant/home-assistant/pull/11946 +[#11949]: https://github.com/home-assistant/home-assistant/pull/11949 +[#11952]: https://github.com/home-assistant/home-assistant/pull/11952 +[#11953]: https://github.com/home-assistant/home-assistant/pull/11953 +[#11954]: https://github.com/home-assistant/home-assistant/pull/11954 +[#11955]: https://github.com/home-assistant/home-assistant/pull/11955 +[#11956]: https://github.com/home-assistant/home-assistant/pull/11956 +[#11961]: https://github.com/home-assistant/home-assistant/pull/11961 +[#11963]: https://github.com/home-assistant/home-assistant/pull/11963 +[#11964]: https://github.com/home-assistant/home-assistant/pull/11964 +[#11969]: https://github.com/home-assistant/home-assistant/pull/11969 +[#11972]: https://github.com/home-assistant/home-assistant/pull/11972 +[#11973]: https://github.com/home-assistant/home-assistant/pull/11973 +[#11976]: https://github.com/home-assistant/home-assistant/pull/11976 +[#11979]: https://github.com/home-assistant/home-assistant/pull/11979 +[#11981]: https://github.com/home-assistant/home-assistant/pull/11981 +[#11984]: https://github.com/home-assistant/home-assistant/pull/11984 +[#11988]: https://github.com/home-assistant/home-assistant/pull/11988 +[#11989]: https://github.com/home-assistant/home-assistant/pull/11989 +[#11990]: https://github.com/home-assistant/home-assistant/pull/11990 +[#11991]: https://github.com/home-assistant/home-assistant/pull/11991 +[#11992]: https://github.com/home-assistant/home-assistant/pull/11992 +[#11996]: https://github.com/home-assistant/home-assistant/pull/11996 +[#11998]: https://github.com/home-assistant/home-assistant/pull/11998 +[#11999]: https://github.com/home-assistant/home-assistant/pull/11999 +[#12014]: https://github.com/home-assistant/home-assistant/pull/12014 +[#12015]: https://github.com/home-assistant/home-assistant/pull/12015 +[#12016]: https://github.com/home-assistant/home-assistant/pull/12016 +[#12020]: https://github.com/home-assistant/home-assistant/pull/12020 +[#12021]: https://github.com/home-assistant/home-assistant/pull/12021 +[#12022]: https://github.com/home-assistant/home-assistant/pull/12022 +[#12036]: https://github.com/home-assistant/home-assistant/pull/12036 +[#12041]: https://github.com/home-assistant/home-assistant/pull/12041 +[#12042]: https://github.com/home-assistant/home-assistant/pull/12042 +[#12044]: https://github.com/home-assistant/home-assistant/pull/12044 +[#12045]: https://github.com/home-assistant/home-assistant/pull/12045 +[#12049]: https://github.com/home-assistant/home-assistant/pull/12049 +[#12051]: https://github.com/home-assistant/home-assistant/pull/12051 +[#12057]: https://github.com/home-assistant/home-assistant/pull/12057 +[#12062]: https://github.com/home-assistant/home-assistant/pull/12062 +[#12063]: https://github.com/home-assistant/home-assistant/pull/12063 +[#12064]: https://github.com/home-assistant/home-assistant/pull/12064 +[#12065]: https://github.com/home-assistant/home-assistant/pull/12065 +[#12067]: https://github.com/home-assistant/home-assistant/pull/12067 +[#12070]: https://github.com/home-assistant/home-assistant/pull/12070 +[#12072]: https://github.com/home-assistant/home-assistant/pull/12072 +[#12073]: https://github.com/home-assistant/home-assistant/pull/12073 +[#12074]: https://github.com/home-assistant/home-assistant/pull/12074 +[#12075]: https://github.com/home-assistant/home-assistant/pull/12075 +[#12077]: https://github.com/home-assistant/home-assistant/pull/12077 +[#12078]: https://github.com/home-assistant/home-assistant/pull/12078 +[#12082]: https://github.com/home-assistant/home-assistant/pull/12082 +[#12084]: https://github.com/home-assistant/home-assistant/pull/12084 +[#12086]: https://github.com/home-assistant/home-assistant/pull/12086 +[#12089]: https://github.com/home-assistant/home-assistant/pull/12089 +[#12091]: https://github.com/home-assistant/home-assistant/pull/12091 +[#12092]: https://github.com/home-assistant/home-assistant/pull/12092 +[#12099]: https://github.com/home-assistant/home-assistant/pull/12099 +[#12100]: https://github.com/home-assistant/home-assistant/pull/12100 +[#12102]: https://github.com/home-assistant/home-assistant/pull/12102 +[#12106]: https://github.com/home-assistant/home-assistant/pull/12106 +[#12107]: https://github.com/home-assistant/home-assistant/pull/12107 +[#12109]: https://github.com/home-assistant/home-assistant/pull/12109 +[#12110]: https://github.com/home-assistant/home-assistant/pull/12110 +[#12112]: https://github.com/home-assistant/home-assistant/pull/12112 +[#12118]: https://github.com/home-assistant/home-assistant/pull/12118 +[#12119]: https://github.com/home-assistant/home-assistant/pull/12119 +[#12121]: https://github.com/home-assistant/home-assistant/pull/12121 +[#12124]: https://github.com/home-assistant/home-assistant/pull/12124 +[#12127]: https://github.com/home-assistant/home-assistant/pull/12127 +[#12132]: https://github.com/home-assistant/home-assistant/pull/12132 +[#12134]: https://github.com/home-assistant/home-assistant/pull/12134 +[#12136]: https://github.com/home-assistant/home-assistant/pull/12136 +[#12138]: https://github.com/home-assistant/home-assistant/pull/12138 +[#12140]: https://github.com/home-assistant/home-assistant/pull/12140 +[#12141]: https://github.com/home-assistant/home-assistant/pull/12141 +[#12142]: https://github.com/home-assistant/home-assistant/pull/12142 +[#12144]: https://github.com/home-assistant/home-assistant/pull/12144 +[#12147]: https://github.com/home-assistant/home-assistant/pull/12147 +[#12148]: https://github.com/home-assistant/home-assistant/pull/12148 +[#12149]: https://github.com/home-assistant/home-assistant/pull/12149 +[#12150]: https://github.com/home-assistant/home-assistant/pull/12150 +[#12152]: https://github.com/home-assistant/home-assistant/pull/12152 +[#12155]: https://github.com/home-assistant/home-assistant/pull/12155 +[#12156]: https://github.com/home-assistant/home-assistant/pull/12156 +[#12158]: https://github.com/home-assistant/home-assistant/pull/12158 +[#12161]: https://github.com/home-assistant/home-assistant/pull/12161 +[#12169]: https://github.com/home-assistant/home-assistant/pull/12169 +[#12170]: https://github.com/home-assistant/home-assistant/pull/12170 +[#12171]: https://github.com/home-assistant/home-assistant/pull/12171 +[#12173]: https://github.com/home-assistant/home-assistant/pull/12173 +[#12175]: https://github.com/home-assistant/home-assistant/pull/12175 +[#12176]: https://github.com/home-assistant/home-assistant/pull/12176 +[#12179]: https://github.com/home-assistant/home-assistant/pull/12179 +[#12182]: https://github.com/home-assistant/home-assistant/pull/12182 +[#12183]: https://github.com/home-assistant/home-assistant/pull/12183 +[#12184]: https://github.com/home-assistant/home-assistant/pull/12184 +[#12186]: https://github.com/home-assistant/home-assistant/pull/12186 +[#12187]: https://github.com/home-assistant/home-assistant/pull/12187 +[#12188]: https://github.com/home-assistant/home-assistant/pull/12188 +[#12190]: https://github.com/home-assistant/home-assistant/pull/12190 +[#12197]: https://github.com/home-assistant/home-assistant/pull/12197 +[#12199]: https://github.com/home-assistant/home-assistant/pull/12199 +[#12200]: https://github.com/home-assistant/home-assistant/pull/12200 +[#12202]: https://github.com/home-assistant/home-assistant/pull/12202 +[#12203]: https://github.com/home-assistant/home-assistant/pull/12203 +[#12204]: https://github.com/home-assistant/home-assistant/pull/12204 +[#12205]: https://github.com/home-assistant/home-assistant/pull/12205 +[#12212]: https://github.com/home-assistant/home-assistant/pull/12212 +[#12220]: https://github.com/home-assistant/home-assistant/pull/12220 +[#12225]: https://github.com/home-assistant/home-assistant/pull/12225 +[#12227]: https://github.com/home-assistant/home-assistant/pull/12227 +[#12232]: https://github.com/home-assistant/home-assistant/pull/12232 +[#12234]: https://github.com/home-assistant/home-assistant/pull/12234 +[#12237]: https://github.com/home-assistant/home-assistant/pull/12237 +[#12242]: https://github.com/home-assistant/home-assistant/pull/12242 +[#12243]: https://github.com/home-assistant/home-assistant/pull/12243 +[#12244]: https://github.com/home-assistant/home-assistant/pull/12244 +[#12246]: https://github.com/home-assistant/home-assistant/pull/12246 +[#12247]: https://github.com/home-assistant/home-assistant/pull/12247 +[#12248]: https://github.com/home-assistant/home-assistant/pull/12248 +[#12249]: https://github.com/home-assistant/home-assistant/pull/12249 +[#12253]: https://github.com/home-assistant/home-assistant/pull/12253 +[#12259]: https://github.com/home-assistant/home-assistant/pull/12259 +[#12260]: https://github.com/home-assistant/home-assistant/pull/12260 +[#12265]: https://github.com/home-assistant/home-assistant/pull/12265 +[#12270]: https://github.com/home-assistant/home-assistant/pull/12270 +[#12275]: https://github.com/home-assistant/home-assistant/pull/12275 +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@Cinntax]: https://github.com/Cinntax +[@DanNixon]: https://github.com/DanNixon +[@ErnstEeldert]: https://github.com/ErnstEeldert +[@Kane610]: https://github.com/Kane610 +[@Klikini]: https://github.com/Klikini +[@MGWGIT]: https://github.com/MGWGIT +[@NigelRook]: https://github.com/NigelRook +[@OttoWinter]: https://github.com/OttoWinter +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@RePeet13]: https://github.com/RePeet13 +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@Tadly]: https://github.com/Tadly +[@aarnaud]: https://github.com/aarnaud +[@akloeckner]: https://github.com/akloeckner +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@aosadchyy]: https://github.com/aosadchyy +[@appzer]: https://github.com/appzer +[@arsaboo]: https://github.com/arsaboo +[@bachya]: https://github.com/bachya +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@bitglue]: https://github.com/bitglue +[@bratanon]: https://github.com/bratanon +[@c727]: https://github.com/c727 +[@cdce8p]: https://github.com/cdce8p +[@ciotlosm]: https://github.com/ciotlosm +[@cnrd]: https://github.com/cnrd +[@covrig]: https://github.com/covrig +[@crhan]: https://github.com/crhan +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dgomes]: https://github.com/dgomes +[@dotlambda]: https://github.com/dotlambda +[@escoand]: https://github.com/escoand +[@fabaff]: https://github.com/fabaff +[@fanaticDavid]: https://github.com/fanaticDavid +[@fanthos]: https://github.com/fanthos +[@freol35241]: https://github.com/freol35241 +[@frog32]: https://github.com/frog32 +[@glance-]: https://github.com/glance- +[@hawk259]: https://github.com/hawk259 +[@infernix]: https://github.com/infernix +[@jackwilsdon]: https://github.com/jackwilsdon +[@jeradM]: https://github.com/jeradM +[@jodur]: https://github.com/jodur +[@kennedyshead]: https://github.com/kennedyshead +[@kevindgoff]: https://github.com/kevindgoff +[@lance36]: https://github.com/lance36 +[@led-spb]: https://github.com/led-spb +[@lexam79]: https://github.com/lexam79 +[@luca-angemi]: https://github.com/luca-angemi +[@lucasweb78]: https://github.com/lucasweb78 +[@maddox]: https://github.com/maddox +[@mezz64]: https://github.com/mezz64 +[@mkfink]: https://github.com/mkfink +[@nordlead2005]: https://github.com/nordlead2005 +[@pelson]: https://github.com/pelson +[@perosb]: https://github.com/perosb +[@philk]: https://github.com/philk +[@philklei]: https://github.com/philklei +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@rcloran]: https://github.com/rcloran +[@scop]: https://github.com/scop +[@sdague]: https://github.com/sdague +[@snjoetw]: https://github.com/snjoetw +[@syssi]: https://github.com/syssi +[@tbergo]: https://github.com/tbergo +[@timmo001]: https://github.com/timmo001 +[@titilambert]: https://github.com/titilambert +[@tschmidty69]: https://github.com/tschmidty69 +[@ubnt-marc-khouri]: https://github.com/ubnt-marc-khouri +[@vaceslav]: https://github.com/vaceslav +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[@zabuldon]: https://github.com/zabuldon +[alexa docs]: https://home-assistant.io/components/alexa/ +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[binary_sensor.mercedesme docs]: https://home-assistant.io/components/binary_sensor.mercedesme/ +[binary_sensor.mqtt docs]: https://home-assistant.io/components/binary_sensor.mqtt/ +[binary_sensor.template docs]: https://home-assistant.io/components/binary_sensor.template/ +[binary_sensor.threshold docs]: https://home-assistant.io/components/binary_sensor.threshold/ +[binary_sensor.zha docs]: https://home-assistant.io/components/binary_sensor.zha/ +[camera.canary docs]: https://home-assistant.io/components/camera.canary/ +[camera.uvc docs]: https://home-assistant.io/components/camera.uvc/ +[camera.xeoma docs]: https://home-assistant.io/components/camera.xeoma/ +[canary docs]: https://home-assistant.io/components/canary/ +[climate.demo docs]: https://home-assistant.io/components/climate.demo/ +[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/ +[climate.econet docs]: https://home-assistant.io/components/climate.econet/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.heatmiser docs]: https://home-assistant.io/components/climate.heatmiser/ +[climate.melissa docs]: https://home-assistant.io/components/climate.melissa/ +[climate.nest docs]: https://home-assistant.io/components/climate.nest/ +[climate.tado docs]: https://home-assistant.io/components/climate.tado/ +[climate.touchline docs]: https://home-assistant.io/components/climate.touchline/ +[climate.venstar docs]: https://home-assistant.io/components/climate.venstar/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[coinbase docs]: https://home-assistant.io/components/coinbase/ +[cover.mqtt docs]: https://home-assistant.io/components/cover.mqtt/ +[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/ +[cover.template docs]: https://home-assistant.io/components/cover.template/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[device_tracker.huawei_router docs]: https://home-assistant.io/components/device_tracker.huawei_router/ +[device_tracker.mercedesme docs]: https://home-assistant.io/components/device_tracker.mercedesme/ +[device_tracker.mikrotik docs]: https://home-assistant.io/components/device_tracker.mikrotik/ +[device_tracker.mqtt docs]: https://home-assistant.io/components/device_tracker.mqtt/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.ubus docs]: https://home-assistant.io/components/device_tracker.ubus/ +[doorbird docs]: https://home-assistant.io/components/doorbird/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[feedreader docs]: https://home-assistant.io/components/feedreader/ +[frontend docs]: https://home-assistant.io/components/frontend/ +[goalfeed docs]: https://home-assistant.io/components/goalfeed/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[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.openalpr_cloud docs]: https://home-assistant.io/components/image_processing.openalpr_cloud/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[input_text docs]: https://home-assistant.io/components/input_text/ +[ios docs]: https://home-assistant.io/components/ios/ +[iota docs]: https://home-assistant.io/components/iota/ +[light.deconz docs]: https://home-assistant.io/components/light.deconz/ +[light.greenwave docs]: https://home-assistant.io/components/light.greenwave/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.limitlessled docs]: https://home-assistant.io/components/light.limitlessled/ +[light.template docs]: https://home-assistant.io/components/light.template/ +[light.xiaomi_aqara docs]: https://home-assistant.io/components/light.xiaomi_aqara/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[lock docs]: https://home-assistant.io/components/lock/ +[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.clementine docs]: https://home-assistant.io/components/media_player.clementine/ +[media_player.itunes docs]: https://home-assistant.io/components/media_player.itunes/ +[media_player.mediaroom docs]: https://home-assistant.io/components/media_player.mediaroom/ +[media_player.panasonic_viera docs]: https://home-assistant.io/components/media_player.panasonic_viera/ +[media_player.philips_js docs]: https://home-assistant.io/components/media_player.philips_js/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[media_player.samsungtv docs]: https://home-assistant.io/components/media_player.samsungtv/ +[media_player.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[media_player.vlc docs]: https://home-assistant.io/components/media_player.vlc/ +[media_player.volumio docs]: https://home-assistant.io/components/media_player.volumio/ +[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/ +[melissa docs]: https://home-assistant.io/components/melissa/ +[mercedesme docs]: https://home-assistant.io/components/mercedesme/ +[mochad docs]: https://home-assistant.io/components/mochad/ +[notify.gntp docs]: https://home-assistant.io/components/notify.gntp/ +[notify.kodi docs]: https://home-assistant.io/components/notify.kodi/ +[notify.pushsafer docs]: https://home-assistant.io/components/notify.pushsafer/ +[notify.twitter docs]: https://home-assistant.io/components/notify.twitter/ +[panel_iframe docs]: https://home-assistant.io/components/panel_iframe/ +[plant docs]: https://home-assistant.io/components/plant/ +[remote.xiaomi_miio docs]: https://home-assistant.io/components/remote.xiaomi_miio/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.broadlink docs]: https://home-assistant.io/components/sensor.broadlink/ +[sensor.canary docs]: https://home-assistant.io/components/sensor.canary/ +[sensor.coinbase docs]: https://home-assistant.io/components/sensor.coinbase/ +[sensor.coinmarketcap docs]: https://home-assistant.io/components/sensor.coinmarketcap/ +[sensor.darksky docs]: https://home-assistant.io/components/sensor.darksky/ +[sensor.deconz docs]: https://home-assistant.io/components/sensor.deconz/ +[sensor.deutsche_bahn docs]: https://home-assistant.io/components/sensor.deutsche_bahn/ +[sensor.fritzbox_callmonitor docs]: https://home-assistant.io/components/sensor.fritzbox_callmonitor/ +[sensor.melissa docs]: https://home-assistant.io/components/sensor.melissa/ +[sensor.mercedesme docs]: https://home-assistant.io/components/sensor.mercedesme/ +[sensor.miflora docs]: https://home-assistant.io/components/sensor.miflora/ +[sensor.onewire docs]: https://home-assistant.io/components/sensor.onewire/ +[sensor.pollen docs]: https://home-assistant.io/components/sensor.pollen/ +[sensor.qnap docs]: https://home-assistant.io/components/sensor.qnap/ +[sensor.radarr docs]: https://home-assistant.io/components/sensor.radarr/ +[sensor.sonarr docs]: https://home-assistant.io/components/sensor.sonarr/ +[sensor.sql docs]: https://home-assistant.io/components/sensor.sql/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.synologydsm docs]: https://home-assistant.io/components/sensor.synologydsm/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tahoma docs]: https://home-assistant.io/components/sensor.tahoma/ +[sensor.template docs]: https://home-assistant.io/components/sensor.template/ +[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/ +[sensor.xiaomi_aqara docs]: https://home-assistant.io/components/sensor.xiaomi_aqara/ +[sensor.zha docs]: https://home-assistant.io/components/sensor.zha/ +[spc docs]: https://home-assistant.io/components/spc/ +[switch.broadlink docs]: https://home-assistant.io/components/switch.broadlink/ +[switch.flux docs]: https://home-assistant.io/components/switch.flux/ +[switch.pulseaudio_loopback docs]: https://home-assistant.io/components/switch.pulseaudio_loopback/ +[switch.template docs]: https://home-assistant.io/components/switch.template/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[switch.wake_on_lan docs]: https://home-assistant.io/components/switch.wake_on_lan/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[system_log docs]: https://home-assistant.io/components/system_log/ +[tado docs]: https://home-assistant.io/components/tado/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[tesla docs]: https://home-assistant.io/components/tesla/ +[tts docs]: https://home-assistant.io/components/tts/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[wake_on_lan docs]: https://home-assistant.io/components/wake_on_lan/ +[waterfurnace docs]: https://home-assistant.io/components/waterfurnace/ +[weather.openweathermap docs]: https://home-assistant.io/components/weather.openweathermap/ +[weblink docs]: https://home-assistant.io/components/weblink/ +[websocket_api docs]: https://home-assistant.io/components/websocket_api/ +[zha docs]: https://home-assistant.io/components/zha/ +[zha.const docs]: https://home-assistant.io/components/zha.const/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[#12292]: https://github.com/home-assistant/home-assistant/pull/12292 +[#12313]: https://github.com/home-assistant/home-assistant/pull/12313 +[#12314]: https://github.com/home-assistant/home-assistant/pull/12314 +[#12317]: https://github.com/home-assistant/home-assistant/pull/12317 +[#12318]: https://github.com/home-assistant/home-assistant/pull/12318 +[#12328]: https://github.com/home-assistant/home-assistant/pull/12328 +[#12330]: https://github.com/home-assistant/home-assistant/pull/12330 +[@balloob]: https://github.com/balloob +[@lucasweb78]: https://github.com/lucasweb78 +[alexa docs]: https://home-assistant.io/components/alexa/ +[binary_sensor.netatmo docs]: https://home-assistant.io/components/binary_sensor.netatmo/ +[camera.netatmo docs]: https://home-assistant.io/components/camera.netatmo/ +[sensor.netatmo docs]: https://home-assistant.io/components/sensor.netatmo/ +[#12342]: https://github.com/home-assistant/home-assistant/pull/12342 +[#12346]: https://github.com/home-assistant/home-assistant/pull/12346 +[#12368]: https://github.com/home-assistant/home-assistant/pull/12368 +[#12382]: https://github.com/home-assistant/home-assistant/pull/12382 +[#12403]: https://github.com/home-assistant/home-assistant/pull/12403 +[@OttoWinter]: https://github.com/OttoWinter +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@amelchio]: https://github.com/amelchio +[@citruz]: https://github.com/citruz +[@sdague]: https://github.com/sdague +[binary_sensor.mercedesme docs]: https://home-assistant.io/components/binary_sensor.mercedesme/ +[device_tracker.mercedesme docs]: https://home-assistant.io/components/device_tracker.mercedesme/ +[light.limitlessled docs]: https://home-assistant.io/components/light.limitlessled/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[mercedesme docs]: https://home-assistant.io/components/mercedesme/ +[sensor.eddystone_temperature docs]: https://home-assistant.io/components/sensor.eddystone_temperature/ +[sensor.mercedesme docs]: https://home-assistant.io/components/sensor.mercedesme/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[#12392]: https://github.com/home-assistant/home-assistant/pull/12392 +[#12421]: https://github.com/home-assistant/home-assistant/pull/12421 +[#12435]: https://github.com/home-assistant/home-assistant/pull/12435 +[#12445]: https://github.com/home-assistant/home-assistant/pull/12445 +[#12447]: https://github.com/home-assistant/home-assistant/pull/12447 +[#12448]: https://github.com/home-assistant/home-assistant/pull/12448 +[#12452]: https://github.com/home-assistant/home-assistant/pull/12452 +[@OverloadUT]: https://github.com/OverloadUT +[@amelchio]: https://github.com/amelchio +[@andrey-git]: https://github.com/andrey-git +[@danielhiversen]: https://github.com/danielhiversen +[@dgomes]: https://github.com/dgomes +[@ryanm101]: https://github.com/ryanm101 +[@syssi]: https://github.com/syssi +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[isy994 docs]: https://home-assistant.io/components/isy994/ +[light.template docs]: https://home-assistant.io/components/light.template/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[media_player.plex docs]: https://home-assistant.io/components/media_player.plex/ +[remote.xiaomi_miio docs]: https://home-assistant.io/components/remote.xiaomi_miio/ +[sensor.sql docs]: https://home-assistant.io/components/sensor.sql/ +[sensor.yr docs]: https://home-assistant.io/components/sensor.yr/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +]]> + + + + <![CDATA[0.62: MyChevy, Iota and Venstar Thermostat]]> + + 2018-01-27T01:00:00+00:00 + https://home-assistant.io/blog/2018/01/27/release-62 + + +Second release of the year and it's buzzing on GitHub. This release we had 70 people contribute code. We've also managed to finally get our PR count below a 100 open PRs again. A lot of cool stuff still waiting to make it to a future Home Assistant release. + +I want to give a shout out to [@martinhjelmare] and [@frenck]. Martin is doing an amazing job at code reviews and Franck has been kicking ass with Hass.io add-ons and keeping track of our documentation PRs. Thanks for this amazing work! + +## MyChevy + +With this new integration by [@sdague] you are able to keep an eye on your Chevy Bolt EV. Keep track if your car is plugged in, the battery stats and the range it is currently capable of driving. Hip! + +## New Platforms + +- Adding support for Lutron covers ([@nickovs] - [#11602]) ([lutron docs]) ([cover.lutron docs]) (new-platform) +- Add basic mychevy component ([@sdague] - [#11409]) ([mychevy docs]) (new-platform) +- Added support for TekSavvy bandwidth sensor ([@jpjodoin] - [#11186]) ([sensor.teksavvy docs]) (new-platform) +- Ihc component and platforms ([@dingusdk] - [#10916]) ([ihc docs]) ([binary_sensor.ihc docs]) ([light.ihc docs]) ([sensor.ihc docs]) ([switch.ihc docs]) (new-platform) +- Iota wallet ([@jinnerbichler] - [#11398]) ([iota docs]) ([sensor.iota docs]) (new-platform) + +## Release 0.62.1 - January 30 + +- Snips - (fix/change) remove response when intent not handled ([@tschmidty69] - [#11929]) ([snips docs]) +- Fix asuswrt AttributeError on neigh for unknown device ([@scop] - [#11960]) ([device_tracker.asuswrt docs]) +- Set default values for Daikin devices that don't support fan direction and fan speed features ([@rofrantz] - [#12000]) ([climate.daikin docs]) +- Fix parameter escaping ([@smoldaner] - [#12008]) ([media_player.squeezebox docs]) +- Error handling, in case no connections are available ([@ReneNulschDE] - [#12010]) ([sensor.deutsche_bahn docs]) +- Fix 404 for Hass.io panel using frontend dev ([@c727] - [#12039]) ([frontend docs]) +- Upgrade pyharmony to 1.0.20 ([@amelchio] - [#12043]) ([remote.harmony docs]) + +## 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. + +## 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. + + + +## Breaking Changes + +- Tahoma platform will get new entity IDs ([@glpatcern] - [#11547]) ([tahoma docs]) ([cover.tahoma docs]) (breaking change) +- Mold indicator: attribute names no longer include spaces or periods ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) +- Custom component devs only: `EntityComponent.add_entity(entity)` and `EntityComponent.async_add_entity(entity)` have been removed. Use `EntityComponent.add_entities([entity])` and `EntityComponent.async_add_entities([entity])` instead. Also `EntityComponent.entities` is no longer a dictionary but instead an iterable. Use `EntityComponent.get_entity(entity_id)` to get entity by id. ([@balloob] - [#11691]) (breaking change) + +## All changes + +- Upgrade keyring to 10.6.0 ([@fabaff] - [#11608]) +- Upgrad youtube_dl to 2017.12.31 ([@fabaff] - [#11610]) +- small sonos cleanup ([@pvizeli] - [#11607]) ([media_player.sonos docs]) +- Update Xiaomi Miio compontent broken URI ([@keesschollaart81] - [#11621]) ([light.xiaomi_miio docs]) +- light/mqqt_json: allow brightness scaling ([@jkoelker] - [#11613]) +- Adding support for Lutron covers ([@nickovs] - [#11602]) ([lutron docs]) ([cover.lutron docs]) (new-platform) +- Hyperion: Add brightness, HDMI and effect support ([@starkillerOG] - [#11543]) ([light.hyperion docs]) +- Fixes and enhancements for the Tahoma platform ([@glpatcern] - [#11547]) ([tahoma docs]) ([cover.tahoma docs]) (breaking change) +- upgrade xiaomi lib ([@danielhiversen] - [#11629]) +- Add templates to MQTT climate ([@tinloaf] - [#11623]) +- Upgrade coinmarketcap to 4.1.2 ([@fabaff] - [#11634]) +- Add Deconz support for Zigbee green power devices like Hue Tap ([@Kane610] - [#11455]) ([deconz docs]) ([sensor.deconz docs]) +- Bump dev to 0.62.0.dev0 ([@fabaff] - [#11652]) +- Add ability to specify a sender in the clicksend notification ([@heydonms] - [#11046]) ([notify.clicksend docs]) +- Round values to one decimal ([@covrig] - [#11673]) ([sensor.xiaomi_aqara docs]) +- Add basic mychevy component ([@sdague] - [#11409]) ([mychevy docs]) (new-platform) +- update mypy commandline arguments ([@benleb] - [#11638]) +- Add support for configuring jeelink RF parameters ([@hthiery] - [#11620]) +- Wemo Dimmer Support ([@angel12] - [#10882]) ([wemo docs]) ([light.wemo docs]) +- add temperature controls to eph-ember ([@ttroy50] - [#11400]) ([climate.ephember docs]) +- Upgrade youtube_dl to 2018.01.14 ([@fabaff] - [#11661]) +- Change line separator to LN ([@fabaff] - [#11662]) ([hive docs]) ([map docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([notify.prowl docs]) ([sensor.hive docs]) ([switch.hive docs]) +- Upgrade sqlalchemy to 1.2.1 ([@fabaff] - [#11666]) +- Upgrade pylast to 2.1.0 ([@fabaff] - [#11668]) +- Added extra arguments to onvif platform config ([@karlkar] - [#11680]) ([camera.onvif docs]) +- Enable probot move ([@fabaff] - [#11690]) +- fixed not to include spaces or dots in attribute names ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) +- Add attributes ([@fabaff] - [#11698]) ([sensor.random docs]) +- Feature/fritzdect errorhandling ([@BastianPoe] - [#11490]) ([switch.fritzdect docs]) +- Tesla bug fix #11598 ([@zabuldon] - [#11707]) +- Update mold_indicator.py ([@olskar] - [#11715]) ([sensor.mold_indicator docs]) +- Override default name for TP-Link devices ([@DanNixon] - [#11710]) ([light.tplink docs]) ([switch.tplink docs]) +- Don't use None inside header ([@pvizeli] - [#11725]) ([hassio docs]) +- Add enable_output service to Yamaha platform ([@postlund] - [#11103]) ([media_player.yamaha docs]) +- Fix effects not appearing in UI due to missing attribute ([@shortbloke] - [#11738]) ([light.flux_led docs]) +- Fix for None object access attempt ([@karlkar] - [#11748]) +- Fixed universal media player templated source_select bug (issue #10981) and corrected typo in test_universal ([@iliketoprogram14] - [#11746]) +- Fix Tahoma device class ([@bakedraccoon] - [#11745]) ([cover.tahoma docs]) +- Add deCONZ entities in a predicitive order ([@Kane610] - [#11712]) ([binary_sensor.deconz docs]) ([sensor.deconz docs]) +- Xbox sensor - Extend error handling ([@ReneNulschDE] - [#11637]) ([sensor.xbox_live docs]) +- Upgrade netdisco ([@balloob] - [#11752]) +- set default value for rfxtrx config ([@danielhiversen] - [#11767]) ([binary_sensor.rfxtrx docs]) +- Round off exchange rate ([@arsaboo] - [#11765]) ([sensor.alpha_vantage docs]) +- Update icon (fixes #11744) ([@fabaff] - [#11758]) ([sensor.fixer docs]) +- Use localized forecast for openweathermap ([@brainexe] - [#11770]) ([sensor.openweathermap docs]) +- Unit should be mph as that is what the metoffices datapoint API returns ([@ioangogo] - [#11760]) ([sensor.metoffice docs]) +- Owntracks: Use bluetooth_le as source_type if beacon was used for location change. ([@cnrd] - [#11615]) ([device_tracker.owntracks docs]) +- Add a 'last' mode and attribute to min_max sensor ([@markferry] - [#11037]) ([sensor.min_max docs]) +- Update header and make it less verbose ([@fabaff] - [#11774]) ([asterisk_mbox docs]) +- Added support for TekSavvy bandwidth sensor ([@jpjodoin] - [#11186]) ([sensor.teksavvy docs]) (new-platform) +- Fix for Neato D3 and D5 ([@karlkar] - [#11775]) +- Axis discovery fails to save conf ([@Kane610] - [#11769]) ([axis docs]) +- Limit service description loading to a single thread ([@amelchio] - [#11733]) +- Snips: (change) Removed unknown intent speech response ([@tschmidty69] - [#11776]) ([snips docs]) +- Implemented event_data_template (new) ([@tschmidty69] - [#11057]) +- Fix PEP8 and PEP257 issues ([@fabaff] - [#11780]) ([deconz docs]) ([scene docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) +- Fix typos ([@fabaff] - [#11781]) ([system_log docs]) +- Support for performance mode on Rheem water heaters. ([@w1ll1am23] - [#11786]) ([climate.econet docs]) +- Service for setting a fixed scene of Xiaomi MIIO lights ([@syssi] - [#10819]) ([light.xiaomi_miio docs]) +- Homematic ip tilt covers ([@steffenslavetinsky] - [#11650]) ([cover.homematic docs]) +- plant - check history for min_brightness ([@ChristianKuehnel] - [#9534]) ([plant docs]) +- add generic rollershutter agian, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) +- Additional attributes and services of the Xiaomi Air Purifier introduced ([@syssi] - [#11249]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- flux led version 0.20 ([@danielhiversen] - [#11791]) +- Hyperion: fix ([@starkillerOG] - [#11793]) ([light.hyperion docs]) +- Fix sensibo function names ([@andrey-git] - [#11797]) ([climate.sensibo docs]) +- Always load yr picture from https ([@andrey-git] - [#11796]) ([sensor.yr docs]) +- Make Google TTS secure ([@PRabahy] - [#11031]) ([tts.google docs]) +- Correct inadvertent change to file permissions ([@shortbloke] - [#11755]) ([light.flux_led docs]) +- Fix recorder purge ([@tinloaf] - [#11802]) +- Disable installing Telldus in Docker ([@balloob] - [#11806]) +- Nad ([@robhuls] - [#11800]) +- bump roku version ([@soberstadt] - [#11816]) +- MiFlora - use bluepy on linux systems ([@ChristianKuehnel] - [#11284]) ([light.decora docs]) ([sensor.miflora docs]) +- Ihc component and platforms ([@dingusdk] - [#10916]) ([ihc docs]) ([binary_sensor.ihc docs]) ([light.ihc docs]) ([sensor.ihc docs]) ([switch.ihc docs]) (new-platform) +- Change telldus domain to download.telldus.com ([@michaelarnauts] - [#11825]) +- Add more workday sensor countries and update holidays library to version 0.9.3 ([@drndos] - [#11826]) ([binary_sensor.workday docs]) +- Add missing availability schema to MQTT alarm panel ([@DanNixon] - [#11829]) ([alarm_control_panel.mqtt docs]) +- python-miio version bumped. Fixes all xiaomi_miio components. (Closes: #11768) ([@syssi] - [#11837]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Add waterfurnace platform ([@sdague] - [#11732]) +- (Re)Enable Daikin autodiscovery ([@rofrantz] - [#11842]) +- Fixes for PEP257 ([@fabaff] - [#11810]) +- bump eq3bt version ([@rytilahti] - [#11834]) ([climate.eq3btsmart docs]) +- Fix Unifi direct errors caused by AP reboot. ([@w1ll1am23] - [#11835]) ([device_tracker.unifi_direct docs]) +- Change 'on' to 'heat' as fallback thermostat mode ([@andrewdolphin] - [#11377]) ([google_assistant docs]) +- Use strict timeout when polling Samsung TV (Fix for #6375) ([@kennedyshead] - [#11759]) ([media_player.samsungtv docs]) +- Fix issues with generic thermostat ([@ciotlosm] - [#11805]) +- maxcube: Set MAX! Window Sensor's class to 'window' ([@leppa] - [#11799]) ([binary_sensor.maxcube docs]) +- Fix new iframe panel url ([@pvizeli] - [#11850]) ([hassio docs]) +- Fix races on recorder test ([@sdague] - [#11857]) +- Clean up entity component ([@balloob] - [#11691]) (breaking change) +- Allow exposing sensors as temperature or humidity 'climate' devices to Google Assistant ([@rofrantz] - [#11095]) ([google_assistant docs]) +- BME680 Sensor Component ([@arcsur] - [#11695]) +- Respond to Alexa scene activation correctly ([@bitglue] - [#11869]) ([alexa docs]) +- Checking Xiaomi Aqara devices unavailability states ([@PaulAnnekov] - [#11631]) ([xiaomi_aqara docs]) ([binary_sensor.xiaomi_aqara docs]) ([cover.xiaomi_aqara docs]) ([light.xiaomi_aqara docs]) ([sensor.xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) +- Hass.io panel v2 ([@pvizeli] - [#11860]) ([hassio docs]) +- Add missing mock call for test_minimal_config ([@sdague] - [#11858]) +- Expose Alexa Smart Home via HTTP POST ([@bitglue] - [#11859]) ([alexa docs]) +- fixed async function called in a thread ([@PaulAnnekov] - [#11882]) ([xiaomi_aqara docs]) +- upgrade ecobee ([@nkgilley] - [#11878]) ([ecobee docs]) +- Fix for hive aux_heat target temperature display ([@Rendili] - [#11884]) ([hive docs]) +- Bump waterfurnace library to 0.3.0 ([@sdague] - [#11888]) ([waterfurnace docs]) +- Postpone "Z-wave not ready" warning ([@amelchio] - [#11807]) ([zwave docs]) +- [SMALL-PR] Don't make climate calls if feature is not supported ([@rofrantz] - [#11841]) ([climate docs]) +- Handle Daikin AC adapters without fan mode and swing mode support ([@rofrantz] - [#11840]) ([climate.daikin docs]) +- device tracker - tomato https support ([@GregoryDosh] - [#11566]) ([device_tracker.tomato docs]) +- Bme680 ([@arcsur] - [#11892]) ([sensor.bme680 docs]) +- Add android option for linux_battery.py ([@mu4yu3] - [#11852]) ([sensor.linux_battery docs]) +- Pushbullet (fix) invalid keyword, added unittests ([@tschmidty69] - [#11804]) +- Snips - (fix) removed endSession mqtt response on error and unknown intents ([@tschmidty69] - [#11908]) ([snips docs]) +- Clarify emulated hue warning ([@balloob] - [#11910]) ([emulated_hue docs]) +- Use API to discover Hue if no bridges specified ([@balloob] - [#11909]) ([hue docs]) +- Update python-wink version and multiple wink fixes/updates. ([@w1ll1am23] - [#11833]) ([wink docs]) ([binary_sensor.wink docs]) ([climate.wink docs]) ([cover.wink docs]) +- New venstar climate component ([@Cinntax] - [#11639]) +- Iota wallet ([@jinnerbichler] - [#11398]) ([iota docs]) ([sensor.iota docs]) (new-platform) +- Improve foscam library exception support ([@i-am-shodan] - [#11701]) ([camera.foscam docs]) +- Added Xeoma camera platform ([@jeradM] - [#11619]) +- Multi-Room Support for Greenwave Reality ([@dfiel] - [#11364]) ([light.greenwave docs]) +- Minor fix to configuration validation and related log line. ([@arcsur] - [#11898]) ([sensor.bme680 docs]) +- Report scripts and groups as scenes to Alexa ([@bitglue] - [#11900]) ([alexa docs]) +- Add ERC20 tokens to etherscan.io sensor ([@nkgilley] - [#11916]) ([sensor.etherscan docs]) +- Allow separate command and state OIDs and payloads in SNMP switch ([@nkaminski] - [#11075]) ([switch.snmp docs]) +- Add "write" service to system_log ([@andrey-git] - [#11901]) ([system_log docs]) +- fixes #11848 ([@kennedyshead] - [#11915]) ([device_tracker.asuswrt docs]) +- Allow setting climate devices to AUTO mode via Google Assistant ([@balloob] - [#11923]) ([google_assistant docs]) ([climate.nest docs]) +- Fixed rfxtrx binary_sensor KeyError on missing optional device_class ([@basschipper] - [#11925]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- Implement Alexa temperature sensors ([@bitglue] - [#11930]) ([alexa docs]) +- Update pyhomematic to 0.1.38 ([@danielperna84] - [#11936]) ([homematic docs]) + +[#10819]: https://github.com/home-assistant/home-assistant/pull/10819 +[#10882]: https://github.com/home-assistant/home-assistant/pull/10882 +[#10916]: https://github.com/home-assistant/home-assistant/pull/10916 +[#11031]: https://github.com/home-assistant/home-assistant/pull/11031 +[#11037]: https://github.com/home-assistant/home-assistant/pull/11037 +[#11046]: https://github.com/home-assistant/home-assistant/pull/11046 +[#11057]: https://github.com/home-assistant/home-assistant/pull/11057 +[#11075]: https://github.com/home-assistant/home-assistant/pull/11075 +[#11095]: https://github.com/home-assistant/home-assistant/pull/11095 +[#11103]: https://github.com/home-assistant/home-assistant/pull/11103 +[#11186]: https://github.com/home-assistant/home-assistant/pull/11186 +[#11249]: https://github.com/home-assistant/home-assistant/pull/11249 +[#11284]: https://github.com/home-assistant/home-assistant/pull/11284 +[#11364]: https://github.com/home-assistant/home-assistant/pull/11364 +[#11377]: https://github.com/home-assistant/home-assistant/pull/11377 +[#11398]: https://github.com/home-assistant/home-assistant/pull/11398 +[#11400]: https://github.com/home-assistant/home-assistant/pull/11400 +[#11409]: https://github.com/home-assistant/home-assistant/pull/11409 +[#11455]: https://github.com/home-assistant/home-assistant/pull/11455 +[#11490]: https://github.com/home-assistant/home-assistant/pull/11490 +[#11543]: https://github.com/home-assistant/home-assistant/pull/11543 +[#11547]: https://github.com/home-assistant/home-assistant/pull/11547 +[#11566]: https://github.com/home-assistant/home-assistant/pull/11566 +[#11602]: https://github.com/home-assistant/home-assistant/pull/11602 +[#11607]: https://github.com/home-assistant/home-assistant/pull/11607 +[#11608]: https://github.com/home-assistant/home-assistant/pull/11608 +[#11610]: https://github.com/home-assistant/home-assistant/pull/11610 +[#11613]: https://github.com/home-assistant/home-assistant/pull/11613 +[#11615]: https://github.com/home-assistant/home-assistant/pull/11615 +[#11619]: https://github.com/home-assistant/home-assistant/pull/11619 +[#11620]: https://github.com/home-assistant/home-assistant/pull/11620 +[#11621]: https://github.com/home-assistant/home-assistant/pull/11621 +[#11623]: https://github.com/home-assistant/home-assistant/pull/11623 +[#11629]: https://github.com/home-assistant/home-assistant/pull/11629 +[#11631]: https://github.com/home-assistant/home-assistant/pull/11631 +[#11634]: https://github.com/home-assistant/home-assistant/pull/11634 +[#11637]: https://github.com/home-assistant/home-assistant/pull/11637 +[#11638]: https://github.com/home-assistant/home-assistant/pull/11638 +[#11639]: https://github.com/home-assistant/home-assistant/pull/11639 +[#11650]: https://github.com/home-assistant/home-assistant/pull/11650 +[#11652]: https://github.com/home-assistant/home-assistant/pull/11652 +[#11661]: https://github.com/home-assistant/home-assistant/pull/11661 +[#11662]: https://github.com/home-assistant/home-assistant/pull/11662 +[#11666]: https://github.com/home-assistant/home-assistant/pull/11666 +[#11668]: https://github.com/home-assistant/home-assistant/pull/11668 +[#11673]: https://github.com/home-assistant/home-assistant/pull/11673 +[#11680]: https://github.com/home-assistant/home-assistant/pull/11680 +[#11690]: https://github.com/home-assistant/home-assistant/pull/11690 +[#11691]: https://github.com/home-assistant/home-assistant/pull/11691 +[#11694]: https://github.com/home-assistant/home-assistant/pull/11694 +[#11695]: https://github.com/home-assistant/home-assistant/pull/11695 +[#11698]: https://github.com/home-assistant/home-assistant/pull/11698 +[#11701]: https://github.com/home-assistant/home-assistant/pull/11701 +[#11707]: https://github.com/home-assistant/home-assistant/pull/11707 +[#11710]: https://github.com/home-assistant/home-assistant/pull/11710 +[#11712]: https://github.com/home-assistant/home-assistant/pull/11712 +[#11715]: https://github.com/home-assistant/home-assistant/pull/11715 +[#11725]: https://github.com/home-assistant/home-assistant/pull/11725 +[#11732]: https://github.com/home-assistant/home-assistant/pull/11732 +[#11733]: https://github.com/home-assistant/home-assistant/pull/11733 +[#11738]: https://github.com/home-assistant/home-assistant/pull/11738 +[#11745]: https://github.com/home-assistant/home-assistant/pull/11745 +[#11746]: https://github.com/home-assistant/home-assistant/pull/11746 +[#11748]: https://github.com/home-assistant/home-assistant/pull/11748 +[#11752]: https://github.com/home-assistant/home-assistant/pull/11752 +[#11755]: https://github.com/home-assistant/home-assistant/pull/11755 +[#11758]: https://github.com/home-assistant/home-assistant/pull/11758 +[#11759]: https://github.com/home-assistant/home-assistant/pull/11759 +[#11760]: https://github.com/home-assistant/home-assistant/pull/11760 +[#11765]: https://github.com/home-assistant/home-assistant/pull/11765 +[#11767]: https://github.com/home-assistant/home-assistant/pull/11767 +[#11769]: https://github.com/home-assistant/home-assistant/pull/11769 +[#11770]: https://github.com/home-assistant/home-assistant/pull/11770 +[#11774]: https://github.com/home-assistant/home-assistant/pull/11774 +[#11775]: https://github.com/home-assistant/home-assistant/pull/11775 +[#11776]: https://github.com/home-assistant/home-assistant/pull/11776 +[#11780]: https://github.com/home-assistant/home-assistant/pull/11780 +[#11781]: https://github.com/home-assistant/home-assistant/pull/11781 +[#11786]: https://github.com/home-assistant/home-assistant/pull/11786 +[#11788]: https://github.com/home-assistant/home-assistant/pull/11788 +[#11791]: https://github.com/home-assistant/home-assistant/pull/11791 +[#11793]: https://github.com/home-assistant/home-assistant/pull/11793 +[#11796]: https://github.com/home-assistant/home-assistant/pull/11796 +[#11797]: https://github.com/home-assistant/home-assistant/pull/11797 +[#11799]: https://github.com/home-assistant/home-assistant/pull/11799 +[#11800]: https://github.com/home-assistant/home-assistant/pull/11800 +[#11802]: https://github.com/home-assistant/home-assistant/pull/11802 +[#11804]: https://github.com/home-assistant/home-assistant/pull/11804 +[#11805]: https://github.com/home-assistant/home-assistant/pull/11805 +[#11806]: https://github.com/home-assistant/home-assistant/pull/11806 +[#11807]: https://github.com/home-assistant/home-assistant/pull/11807 +[#11810]: https://github.com/home-assistant/home-assistant/pull/11810 +[#11816]: https://github.com/home-assistant/home-assistant/pull/11816 +[#11825]: https://github.com/home-assistant/home-assistant/pull/11825 +[#11826]: https://github.com/home-assistant/home-assistant/pull/11826 +[#11829]: https://github.com/home-assistant/home-assistant/pull/11829 +[#11833]: https://github.com/home-assistant/home-assistant/pull/11833 +[#11834]: https://github.com/home-assistant/home-assistant/pull/11834 +[#11835]: https://github.com/home-assistant/home-assistant/pull/11835 +[#11837]: https://github.com/home-assistant/home-assistant/pull/11837 +[#11840]: https://github.com/home-assistant/home-assistant/pull/11840 +[#11841]: https://github.com/home-assistant/home-assistant/pull/11841 +[#11842]: https://github.com/home-assistant/home-assistant/pull/11842 +[#11850]: https://github.com/home-assistant/home-assistant/pull/11850 +[#11852]: https://github.com/home-assistant/home-assistant/pull/11852 +[#11857]: https://github.com/home-assistant/home-assistant/pull/11857 +[#11858]: https://github.com/home-assistant/home-assistant/pull/11858 +[#11859]: https://github.com/home-assistant/home-assistant/pull/11859 +[#11860]: https://github.com/home-assistant/home-assistant/pull/11860 +[#11869]: https://github.com/home-assistant/home-assistant/pull/11869 +[#11878]: https://github.com/home-assistant/home-assistant/pull/11878 +[#11882]: https://github.com/home-assistant/home-assistant/pull/11882 +[#11884]: https://github.com/home-assistant/home-assistant/pull/11884 +[#11888]: https://github.com/home-assistant/home-assistant/pull/11888 +[#11892]: https://github.com/home-assistant/home-assistant/pull/11892 +[#11898]: https://github.com/home-assistant/home-assistant/pull/11898 +[#11900]: https://github.com/home-assistant/home-assistant/pull/11900 +[#11901]: https://github.com/home-assistant/home-assistant/pull/11901 +[#11908]: https://github.com/home-assistant/home-assistant/pull/11908 +[#11909]: https://github.com/home-assistant/home-assistant/pull/11909 +[#11910]: https://github.com/home-assistant/home-assistant/pull/11910 +[#11915]: https://github.com/home-assistant/home-assistant/pull/11915 +[#11916]: https://github.com/home-assistant/home-assistant/pull/11916 +[#11923]: https://github.com/home-assistant/home-assistant/pull/11923 +[#11925]: https://github.com/home-assistant/home-assistant/pull/11925 +[#11930]: https://github.com/home-assistant/home-assistant/pull/11930 +[#11936]: https://github.com/home-assistant/home-assistant/pull/11936 +[#9534]: https://github.com/home-assistant/home-assistant/pull/9534 +[@BastianPoe]: https://github.com/BastianPoe +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@Cinntax]: https://github.com/Cinntax +[@DanNixon]: https://github.com/DanNixon +[@GregoryDosh]: https://github.com/GregoryDosh +[@Kane610]: https://github.com/Kane610 +[@PRabahy]: https://github.com/PRabahy +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@Rendili]: https://github.com/Rendili +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@amelchio]: https://github.com/amelchio +[@andrewdolphin]: https://github.com/andrewdolphin +[@andrey-git]: https://github.com/andrey-git +[@angel12]: https://github.com/angel12 +[@arcsur]: https://github.com/arcsur +[@arsaboo]: https://github.com/arsaboo +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@basschipper]: https://github.com/basschipper +[@benleb]: https://github.com/benleb +[@bitglue]: https://github.com/bitglue +[@brainexe]: https://github.com/brainexe +[@ciotlosm]: https://github.com/ciotlosm +[@cnrd]: https://github.com/cnrd +[@covrig]: https://github.com/covrig +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dfiel]: https://github.com/dfiel +[@dingusdk]: https://github.com/dingusdk +[@drndos]: https://github.com/drndos +[@fabaff]: https://github.com/fabaff +[@glpatcern]: https://github.com/glpatcern +[@heydonms]: https://github.com/heydonms +[@hthiery]: https://github.com/hthiery +[@i-am-shodan]: https://github.com/i-am-shodan +[@iliketoprogram14]: https://github.com/iliketoprogram14 +[@ioangogo]: https://github.com/ioangogo +[@jeradM]: https://github.com/jeradM +[@jinnerbichler]: https://github.com/jinnerbichler +[@jkoelker]: https://github.com/jkoelker +[@jpjodoin]: https://github.com/jpjodoin +[@karlkar]: https://github.com/karlkar +[@keesschollaart81]: https://github.com/keesschollaart81 +[@kennedyshead]: https://github.com/kennedyshead +[@leppa]: https://github.com/leppa +[@markferry]: https://github.com/markferry +[@michaelarnauts]: https://github.com/michaelarnauts +[@mu4yu3]: https://github.com/mu4yu3 +[@nickovs]: https://github.com/nickovs +[@nkaminski]: https://github.com/nkaminski +[@nkgilley]: https://github.com/nkgilley +[@olskar]: https://github.com/olskar +[@philklei]: https://github.com/philklei +[@postlund]: https://github.com/postlund +[@pvizeli]: https://github.com/pvizeli +[@robhuls]: https://github.com/robhuls +[@rofrantz]: https://github.com/rofrantz +[@rytilahti]: https://github.com/rytilahti +[@sdague]: https://github.com/sdague +[@shortbloke]: https://github.com/shortbloke +[@soberstadt]: https://github.com/soberstadt +[@starkillerOG]: https://github.com/starkillerOG +[@steffenslavetinsky]: https://github.com/steffenslavetinsky +[@syssi]: https://github.com/syssi +[@tinloaf]: https://github.com/tinloaf +[@tschmidty69]: https://github.com/tschmidty69 +[@ttroy50]: https://github.com/ttroy50 +[@w1ll1am23]: https://github.com/w1ll1am23 +[@zabuldon]: https://github.com/zabuldon +[alarm_control_panel.mqtt docs]: https://home-assistant.io/components/alarm_control_panel.mqtt/ +[alexa docs]: https://home-assistant.io/components/alexa/ +[asterisk_mbox docs]: https://home-assistant.io/components/asterisk_mbox/ +[axis docs]: https://home-assistant.io/components/axis/ +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[binary_sensor.hive docs]: https://home-assistant.io/components/binary_sensor.hive/ +[binary_sensor.ihc docs]: https://home-assistant.io/components/binary_sensor.ihc/ +[binary_sensor.maxcube docs]: https://home-assistant.io/components/binary_sensor.maxcube/ +[binary_sensor.rfxtrx docs]: https://home-assistant.io/components/binary_sensor.rfxtrx/ +[binary_sensor.wink docs]: https://home-assistant.io/components/binary_sensor.wink/ +[binary_sensor.workday docs]: https://home-assistant.io/components/binary_sensor.workday/ +[binary_sensor.xiaomi_aqara docs]: https://home-assistant.io/components/binary_sensor.xiaomi_aqara/ +[camera.foscam docs]: https://home-assistant.io/components/camera.foscam/ +[camera.onvif docs]: https://home-assistant.io/components/camera.onvif/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.daikin docs]: https://home-assistant.io/components/climate.daikin/ +[climate.econet docs]: https://home-assistant.io/components/climate.econet/ +[climate.ephember docs]: https://home-assistant.io/components/climate.ephember/ +[climate.eq3btsmart docs]: https://home-assistant.io/components/climate.eq3btsmart/ +[climate.hive docs]: https://home-assistant.io/components/climate.hive/ +[climate.nest docs]: https://home-assistant.io/components/climate.nest/ +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[climate.wink docs]: https://home-assistant.io/components/climate.wink/ +[cover.homematic docs]: https://home-assistant.io/components/cover.homematic/ +[cover.lutron docs]: https://home-assistant.io/components/cover.lutron/ +[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/ +[cover.wink docs]: https://home-assistant.io/components/cover.wink/ +[cover.xiaomi_aqara docs]: https://home-assistant.io/components/cover.xiaomi_aqara/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.owntracks docs]: https://home-assistant.io/components/device_tracker.owntracks/ +[device_tracker.tomato docs]: https://home-assistant.io/components/device_tracker.tomato/ +[device_tracker.unifi_direct docs]: https://home-assistant.io/components/device_tracker.unifi_direct/ +[ecobee docs]: https://home-assistant.io/components/ecobee/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[hive docs]: https://home-assistant.io/components/hive/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[hue docs]: https://home-assistant.io/components/hue/ +[ihc docs]: https://home-assistant.io/components/ihc/ +[ihc.const docs]: https://home-assistant.io/components/ihc.const/ +[ihc.ihcdevice docs]: https://home-assistant.io/components/ihc.ihcdevice/ +[iota docs]: https://home-assistant.io/components/iota/ +[light.deconz docs]: https://home-assistant.io/components/light.deconz/ +[light.decora docs]: https://home-assistant.io/components/light.decora/ +[light.flux_led docs]: https://home-assistant.io/components/light.flux_led/ +[light.greenwave docs]: https://home-assistant.io/components/light.greenwave/ +[light.hive docs]: https://home-assistant.io/components/light.hive/ +[light.hyperion docs]: https://home-assistant.io/components/light.hyperion/ +[light.ihc docs]: https://home-assistant.io/components/light.ihc/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.wemo docs]: https://home-assistant.io/components/light.wemo/ +[light.xiaomi_aqara docs]: https://home-assistant.io/components/light.xiaomi_aqara/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[lutron docs]: https://home-assistant.io/components/lutron/ +[map docs]: https://home-assistant.io/components/map/ +[media_player.samsungtv docs]: https://home-assistant.io/components/media_player.samsungtv/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[notify.clicksend docs]: https://home-assistant.io/components/notify.clicksend/ +[notify.prowl docs]: https://home-assistant.io/components/notify.prowl/ +[plant docs]: https://home-assistant.io/components/plant/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[scene docs]: https://home-assistant.io/components/scene/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.linux_battery docs]: https://home-assistant.io/components/sensor.linux_battery/ +[sensor.bme680 docs]: https://home-assistant.io/components/sensor.bme680/ +[sensor.deconz docs]: https://home-assistant.io/components/sensor.deconz/ +[sensor.etherscan docs]: https://home-assistant.io/components/sensor.etherscan/ +[sensor.fixer docs]: https://home-assistant.io/components/sensor.fixer/ +[sensor.hive docs]: https://home-assistant.io/components/sensor.hive/ +[sensor.ihc docs]: https://home-assistant.io/components/sensor.ihc/ +[sensor.iota docs]: https://home-assistant.io/components/sensor.iota/ +[sensor.metoffice docs]: https://home-assistant.io/components/sensor.metoffice/ +[sensor.miflora docs]: https://home-assistant.io/components/sensor.miflora/ +[sensor.min_max docs]: https://home-assistant.io/components/sensor.min_max/ +[sensor.mold_indicator docs]: https://home-assistant.io/components/sensor.mold_indicator/ +[mychevy docs]: https://home-assistant.io/components/mychevy/ +[sensor.openweathermap docs]: https://home-assistant.io/components/sensor.openweathermap/ +[sensor.random docs]: https://home-assistant.io/components/sensor.random/ +[sensor.teksavvy docs]: https://home-assistant.io/components/sensor.teksavvy/ +[sensor.xbox_live docs]: https://home-assistant.io/components/sensor.xbox_live/ +[sensor.xiaomi_aqara docs]: https://home-assistant.io/components/sensor.xiaomi_aqara/ +[sensor.yr docs]: https://home-assistant.io/components/sensor.yr/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.fritzdect docs]: https://home-assistant.io/components/switch.fritzdect/ +[switch.hive docs]: https://home-assistant.io/components/switch.hive/ +[switch.ihc docs]: https://home-assistant.io/components/switch.ihc/ +[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[switch.xiaomi_aqara docs]: https://home-assistant.io/components/switch.xiaomi_aqara/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[system_log docs]: https://home-assistant.io/components/system_log/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[tts.google docs]: https://home-assistant.io/components/tts.google/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[waterfurnace docs]: https://home-assistant.io/components/waterfurnace/ +[wemo docs]: https://home-assistant.io/components/wemo/ +[wink docs]: https://home-assistant.io/components/wink/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[@martinhjelmare]: https://github.com/martinhjelmare +[@frenck]: https://github.com/frenck +[#11929]: https://github.com/home-assistant/home-assistant/pull/11929 +[#11960]: https://github.com/home-assistant/home-assistant/pull/11960 +[#12000]: https://github.com/home-assistant/home-assistant/pull/12000 +[#12008]: https://github.com/home-assistant/home-assistant/pull/12008 +[#12010]: https://github.com/home-assistant/home-assistant/pull/12010 +[#12039]: https://github.com/home-assistant/home-assistant/pull/12039 +[#12043]: https://github.com/home-assistant/home-assistant/pull/12043 +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@amelchio]: https://github.com/amelchio +[@c727]: https://github.com/c727 +[@rofrantz]: https://github.com/rofrantz +[@scop]: https://github.com/scop +[@smoldaner]: https://github.com/smoldaner +[@tschmidty69]: https://github.com/tschmidty69 +[climate.daikin docs]: https://home-assistant.io/components/climate.daikin/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[frontend docs]: https://home-assistant.io/components/frontend/ +[media_player.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[remote.harmony docs]: https://home-assistant.io/components/remote.harmony/ +[sensor.deutsche_bahn docs]: https://home-assistant.io/components/sensor.deutsche_bahn/ +[snips docs]: https://home-assistant.io/components/snips/ +]]> + + + + <![CDATA[0.61: Coinbase, Discogs, iGlo, Sochain]]> + + 2018-01-14T18:00:00+00:00 + https://home-assistant.io/blog/2018/01/14/release-61 + + +Almost a 100 contributors to this release 🎉 That's what you get when you skip a release. It's a little late but "Happy New Year" and welcome to 0.61 the first release 2018. + +This release contain some breaking changes. Please make sure that you check the section below if you are running into trouble. + +## Assistant configs + +We made a mistake in the foundation of both the Google Assistant and Alexa integrations: they were storing their config inside customize. This is not the right place and we moved them to be under the components itself. See the breaking changes section on how to migrate. + +## Hass.io updates + +[@pvizeli] has made it easier to create and restore snapshots for Hass.io by calling the new services. This way it will be easy to automate the creation of a snapshot at night. The updater has also been fixed and will now report on new versions of Hass.io that are available. + +## Improved loading speed + +[@amelchio] has made startup of Home Assistant _even_ faster. All service descriptions are now loaded only when needed by the frontend instead of during startup. This did mean that we had to enforce our service convention. We found a few platforms that didn't follow this and they have been updated: + +```text +todoist.new_task -> calendar.todoist_new_task + +snapcast.snapcast_snapshot -> media_player.snapcast_snapshot +snapcast.snapcast_restore -> media_player.snapcast_restore + +mopar.remote_command -> sensor.mopar_remote_command + +broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107 +broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107 +``` + +## New Platforms + +- Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) +- Greenwave Reality (TCP Connected) Lighting Component ([@dfiel] - [#11282]) ([light.greenwave docs]) (new-platform) +- Added rainsensor ([@jbarrancos] - [#11023]) ([rainbird docs]) ([sensor.rainbird docs]) ([switch.rainbird docs]) (new-platform) +- Sochain cryptocurrency sensor ([@Klathmon] - [#11335]) ([sensor.sochain docs]) (new-platform) +- Support for EcoNet water heaters ([@w1ll1am23] - [#11260]) ([climate.econet docs]) (new-platform) +- Add deCONZ component ([@Kane610] - [#10321]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) (new-platform) +- Added new climate component from Daikin ([@rofrantz] - [#10983]) ([climate.daikin docs]) (new-platform) +- Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) +- Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) +- Add Dark Sky weather component ([@DanNixon] - [#11435]) ([weather.darksky docs]) (new-platform) +- Coinbase.com sensor platform ([@nkgilley] - [#11036]) ([coinbase docs]) ([sensor.coinbase docs]) (new-platform) + +## Release 0.61.1 - January 16 + +- Fix zha color probe ([@rcloran] - [#11670]) ([zha docs]) ([light.zha docs]) +- Move several local services to their right domain ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([sensor.mopar docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) +- Rfxtrx fix ([@danielhiversen] - [#11678]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) +- History order bugfix and opt-in option ([@rwa] - [#11686]) ([history docs]) +- Fix purge with MariaDB / MySQL ([@tinloaf] - [#11713]) + +## 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. + +## 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. + + + +## Breaking Changes + +- Extend Threshold binary sensor to support ranges. This means that you can now set `up` and `lower`. ([@DanNixon] - [#11110]) ([binary_sensor.threshold docs]) (breaking change) +- The Steam game platform contains changes: + - `game` attribute no longer set in `device_state_attributes` if no game is currently being played as the string "None" is no longer passed if no current game is being played, instead the `game` attribute is not present. + - States now use lower snake case. + - The "Play" and "Trade" states has been renamed to "looking_to_play" and "looking_to_trade". + ([@frwickst] - [#11182]) ([sensor.steam_online docs]) (breaking change) +- The [`tile`][device_tracker.tile docs] platform now shows only active Tiles by default; to show all Tiles, including expired/inactive ones, `show_inactive` must be `True`. The following state attributes have been removed: `last_seen` and `last_updated`. ([@bachya] - [#11172]) ([device_tracker.tile docs]) (breaking change) +- The `hidden_string` feature has been removed from the isy994 component. Previously, this allowed entities to be "hidden" in Home Assistant if a configured string was present in an ISY device's name or folder path. This was removed because hiding devices is now done via the customization feature. +Note however, that this feature was replaced by a new ignore_string config option, which will now cause Home Assistant to completely ignore devices with the matching string so that they will not be imported as a Home Assistant device at all. This can be helpful if you have nodes in the ISY that aren't useful at all in Hass (IR transmitter nodes are a good example.) ([@OverloadUT] - [#11243]) ([isy994 docs]) ([binary_sensor.isy994 docs]) ([cover.isy994 docs]) ([fan.isy994 docs]) ([light.isy994 docs]) ([lock.isy994 docs]) ([sensor.isy994 docs]) ([switch.isy994 docs]) (breaking change) +- The [`egardia` alarm panel][alarm_control_panel.egardia docs] platform no longer a need the users to run a separate Egardiaserver component. It can now also run on HASS.io. ([@jeroenterheerdt] - [#11344]) ([alarm_control_panel.egardia docs]) (breaking change) +- The binary sensor platform of the DoorBird integration has been deleted, so remove DoorBird from your `binary_sensor` configuration. Instead, set the `doorbell_events` option of the `doorbird` component to `True`. The `last_visitor` option has been removed from the camera component, as it is now always added as an entity. ([@Klikini] - [#11193]) ([camera.doorbird docs]) (breaking change) +- The following attributes of the TP-Link switch and light platform have been renamed: + - Light: `current_consumption` -> `current_power_w`, `daily_consumption` -> `daily_energy_kwh` and `monthly_consumption` -> `monthly_energy_kwh` + - Switch: `current` -> `current_a`, `current_consumption` -> `current_power_w`, `total_consumption` -> `total_energy_kwh` and `daily_consumption` -> `today_energy_kwh` ([@DanNixon] - [#10979]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change) +- Move IMAP Email Content body to an attribute ([@notoriousbdg] - [#11096]) ([sensor.imap_email_content docs]) (breaking change) +- Automations which were using `state` that was returning `target_temperature` of the `netatmo` climate platform needs an update. ([@ciotlosm] - [#11345]) ([climate.netatmo docs]) (breaking change) +- The default availability payloads for the `MQTT` switch platform have changed from "ON" and "OFF" to "online" and "offline" (in order to match the majority of MQTT platforms that already supported availability reporting). ([@DanNixon] - [#11336]) (breaking change) +- Customizations for how entities are exposed to Alexa are no longer set via `customize`. Instead they are set via the configuration of the cloud component: + + ```yaml + cloud: + alexa: + entity_config: + switch.kitchen: + name: 'Name for Alexa' + description: 'Description for Alexa' + display_categories: 'LIGHT' + ``` + ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) +- The extension of the `alpha_vantage` requires an update of the configuration as now are exchange data available as well. ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change) +- The `prometheus` component now supports pushing all sensors and fixes wrong metrics. If may require that you update your configuration. ([@michaelkuty] - [#11159]) ([prometheus docs]) (breaking change) +- Insteon local devices will now use their address as the `entity_id` and `name`. The friendly name can be customized using the [standard customization configuration](https://home-assistant.io/docs/configuration/customizing-devices/). ([@camrun91] - [#11088]) ([insteon_local docs]) ([fan.insteon_local docs]) ([light.insteon_local docs]) ([switch.insteon_local docs]) (breaking change) +- Google Assistant is no longer configured via `customize` but instead has its configuration under the `google_assistant` entry in your `configuration.yaml`. The attributes will no longer have to be prefixed with `google_assistant_` either. + + | Old option | New option | + | ---------- | ------------ | + | google_assistant | expose | + | aliases | aliases | + | google_assistant_name | name | + | google_assistant_type | type | + + Before: + + ```yaml + homeassistant: + customize: + switch.kitchen: + google_assistant: false + google_assistant_name: nice lights + google_assistant_type: light + aliases: + - roof lights + + google_assistant: + ``` + + After: + + ```yaml + google_assistant: + entity_config: + switch.kitchen: + expose: false + alias: roof lights + name: nice lights + type: light + ``` +([@balloob] - [#11499]) ([cloud docs]) ([google_assistant docs]) (breaking change) +- The `climate.set_aux_heat` service is no longer available for the Sensibo climate platform. Now call `climate.turn_on` or `climate.turn_off`. ([@andrey-git] - [#11579]) ([climate.sensibo docs]) (breaking change) +- Release 0.61.0 introduced a lazy service loading strategy that relied on all components and platforms following our naming convention. After the release we realized that not all services did, which have been addressed by this fix. This results in certain services changing names: + + ``` + todoist.new_task -> calendar.todoist_new_task + + snapcast.snapcast_snapshot -> media_player.snapcast_snapshot + snapcast.snapcast_restore -> media_player.snapcast_restore + + mopar.remote_command -> sensor.mopar_remote_command + + broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107 + broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107 + ``` + ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([sensor.mopar docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) + + +## All changes + +- Try multiple methods of getting data in asuswrt. ([@PeWu] - [#11140]) ([device_tracker.asuswrt docs]) +- Hydroquebec component use now asyncio ([@titilambert] - [#10795]) ([sensor.hydroquebec docs]) +- Hive Component Release Two ([@KJonline] - [#11053]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) +- Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) +- Fix statistics sensor mean and median when only one sample is available. ([@markferry] - [#11180]) ([sensor.statistics docs]) +- Extend Threshold binary sensor to support ranges ([@DanNixon] - [#11110]) ([binary_sensor.threshold docs]) (breaking change) +- Bump python-miio version ([@djchen] - [#11232]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Backup configuration files before overwriting ([@cgarwood] - [#11216]) +- Upgrade to new miflora version 0.2.0 ([@ChristianKuehnel] - [#11250]) ([sensor.miflora docs]) +- Add workaround for running tox on Windows platforms ([@veleek] - [#11188]) +- added myself to become code owner for miflora and plant ([@ChristianKuehnel] - [#11251]) +- Proper Steam game names and small fixes ([@frwickst] - [#11182]) ([sensor.steam_online docs]) (breaking change) +- Bugfix: 10509 - http is hard coded in plex sensor ([@ryanm101] - [#11072]) ([sensor.plex docs]) +- Adding MotionIP to BinarySensors for HMIP-SMI ([@schnoetz] - [#11268]) ([homematic docs]) +- Revert "Backup configuration files before overwriting" ([@pvizeli] - [#11269]) +- Functinality to save/restore snapshots for monoprice platform ([@etsinko] - [#10296]) ([media_player.monoprice docs]) +- Change manifest path to /states as this is the path / actually sets. ([@andrey-git] - [#11274]) +- Report Sensibo as off when it is off ([@andrey-git] - [#11281]) ([climate.sensibo docs]) +- Added password for GPS logger endpoint ([@foxel] - [#11245]) ([device_tracker.gpslogger docs]) +- Greenwave Reality (TCP Connected) Lighting Component ([@dfiel] - [#11282]) ([light.greenwave docs]) (new-platform) +- Adds support for disabled Tiles and automatic session renewal ([@bachya] - [#11172]) ([device_tracker.tile docs]) (breaking change) +- Plex refactor ([@ryanm101] - [#11235]) ([media_player.plex docs]) +- alexa: Add handling for covers ([@philk] - [#11242]) ([alexa.smart_home docs]) +- Added rainsensor ([@jbarrancos] - [#11023]) ([rainbird docs]) ([sensor.rainbird docs]) ([switch.rainbird docs]) (new-platform) +- Store raw state of RF sensors from alarmdecoder ([@PhracturedBlue] - [#10841]) ([alarmdecoder docs]) ([binary_sensor.alarmdecoder docs]) +- Add Chime status and control to Alarm Decoder component ([@goyney] - [#11271]) ([alarm_control_panel.alarmdecoder docs]) +- Better error handling ([@rofrantz] - [#11297]) ([sensor.transmission docs]) ([switch.transmission docs]) +- Removed error log used as debug ([@cmsimike] - [#11301]) ([octoprint docs]) +- Huge ISY994 platform cleanup, fixes support for 5.0.10 firmware ([@OverloadUT] - [#11243]) ([isy994 docs]) ([binary_sensor.isy994 docs]) ([cover.isy994 docs]) ([fan.isy994 docs]) ([light.isy994 docs]) ([lock.isy994 docs]) ([sensor.isy994 docs]) ([switch.isy994 docs]) (breaking change) +- Add heartbeat to websocket connections ([@balloob] - [#11298]) ([cloud.iot docs]) +- Fix typo in bitcoin.py component for mined blocks. ([@awkwardDuck] - [#11318]) ([sensor.bitcoin docs]) +- xiaomi_aqara: Fix covers never being closed ([@cnrd] - [#11319]) ([cover.xiaomi_aqara docs]) +- Fix for track_new_devices BC ([@masarliev] - [#11202]) ([device_tracker docs]) +- Upgrade aiohttp_cors to 0.6.0 ([@fabaff] - [#11310]) ([http docs]) +- Upgrade pysnmp to 4.4.3 ([@fabaff] - [#11317]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Upgrade luftdaten to 0.1.3 ([@fabaff] - [#11316]) ([sensor.luftdaten docs]) +- Upgrade yahooweather to 0.10 ([@fabaff] - [#11309]) ([weather.yweather docs]) +- Upgrade distro to 1.2.0 ([@fabaff] - [#11312]) ([updater docs]) +- Upgrade python-digitalocean to 1.13.2 ([@fabaff] - [#11311]) ([digital_ocean docs]) +- Upgrade youtube_dl to 2017.12.23 ([@fabaff] - [#11308]) ([media_extractor docs]) +- Upgrade alpha_vantage to 1.6.0 ([@fabaff] - [#11307]) ([sensor.alpha_vantage docs]) +- Bugfix for HA Issue 7292, 9412 - switch to gamertag to receive ssl image url ([@ReneNulschDE] - [#11315]) ([sensor.xbox_live docs]) +- closes #11314 by not restricting the voice to anything but a string ([@Human] - [#11326]) ([tts.marytts docs]) +- Additional device classes for binary sensors ([@schmittx] - [#11280]) ([binary_sensor docs]) +- Remove need for separate EgardiaServer setup ([@jeroenterheerdt] - [#11344]) ([alarm_control_panel.egardia docs]) (breaking change) +- Add default names and validation for TP-Link devices ([@DanNixon] - [#11346]) ([light.tplink docs]) ([switch.tplink docs]) +- Sochain cryptocurrency sensor ([@Klathmon] - [#11335]) ([sensor.sochain docs]) (new-platform) +- pass stops_at to get_station_by_name ([@ttroy50] - [#11304]) ([sensor.irish_rail_transport docs]) +- Move data instance to setup ([@fabaff] - [#11350]) ([sensor.swiss_public_transport docs]) +- Update modbus.py ([@goldminenine] - [#11238]) ([modbus docs]) +- DoorBird feature update ([@Klikini] - [#11193]) ([camera.doorbird docs]) (breaking change) +- Upgrade aiohttp to 2.3.7 ([@fabaff] - [#11329]) +- Upgrade fuzzywuzzy to 0.16.0 ([@fabaff] - [#11331]) ([conversation docs]) +- Upgrade pyowm to 2.8.0 ([@fabaff] - [#11332]) ([sensor.openweathermap docs]) ([weather.openweathermap docs]) +- Upgrade sqlalchemy to 1.2.0 ([@fabaff] - [#11333]) +- Upgrade mypy to 0.560 ([@fabaff] - [#11334]) +- Upgrade python-telegram-bot to 9.0.0 ([@fabaff] - [#11341]) ([telegram_bot docs]) +- Upgrade youtube_dl to 2017.12.28 ([@fabaff] - [#11357]) ([media_extractor docs]) +- Correct units used in TP-Link energy monioring ([@DanNixon] - [#10979]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change) +- Add HTTP endpoint for resending email confirmation ([@balloob] - [#11354]) ([cloud.auth_api docs]) ([cloud.http_api docs]) +- Fix RGB template ordering in MQTT Light ([@DanNixon] - [#11362]) ([light.mqtt docs]) +- Ping device tracker now respects interval_seconds ([@tschmidty69] - [#11348]) ([device_tracker.ping docs]) +- Fido component use now asyncio ([@titilambert] - [#11244]) ([sensor.fido docs]) +- Support for EcoNet water heaters ([@w1ll1am23] - [#11260]) ([climate.econet docs]) (new-platform) +- Remember the Milk - updating and completing tasks ([@ChristianKuehnel] - [#11069]) ([remember_the_milk docs]) +- Reverts unit conversions in TP-Link bulb ([@DanNixon] - [#11381]) ([light.tplink docs]) +- Clean up Google Assistant ([@balloob] - [#11375]) ([google_assistant docs]) ([google_assistant.http docs]) ([google_assistant.smart_home docs]) +- Adding support for Egardia / Woonveilig version GATE-03 ([@jeroenterheerdt] - [#11397]) ([alarm_control_panel.egardia docs]) +- Add deCONZ component ([@Kane610] - [#10321]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) (new-platform) +- Fix broken tests ([@balloob] - [#11395]) +- Upgrade pychromecast to 1.0.3 ([@OttoWinter] - [#11410]) ([media_player.cast docs]) +- Bump pywemo to fix request include problems. ([@pavoni] - [#11401]) ([wemo docs]) +- Log exceptions that happen during service call ([@balloob] - [#11394]) +- Move IMAP Email Content body to an attribute ([@notoriousbdg] - [#11096]) ([sensor.imap_email_content docs]) (breaking change) +- Notify webos timeout error fix ([@masarliev] - [#11027]) ([notify.webostv docs]) +- Removed status block to allow https://github.com/home-assistant/home-assistant-polymer/pull/766 with no impact ([@ciotlosm] - [#11345]) ([climate.netatmo docs]) (breaking change) +- More support for availability reporting on MQTT components ([@DanNixon] - [#11336]) (breaking change) +- Do not purge the most recent state for an entity ([@tinloaf] - [#11039]) +- Performance optimization of TP-Link switch ([@amelchio] - [#11416]) ([switch.tplink docs]) +- Fixing OpenWeatherMap Sensor. Current weather is 'unknown' if forecast: false. It was reported as #8640. ([@tomaszduda23] - [#11417]) ([sensor.openweathermap docs]) +- Silence redundant warnings about slow setup ([@amelchio] - [#11352]) +- Account for User-Agent being non-existent, causing a TypeError ([@akatrevorjay] - [#11064]) +- Cloud Updates ([@balloob] - [#11404]) ([cloud docs]) +- Add support for the renaming of Yamaha Receiver Zones via configuration file. Added a test to cover the change, plus previously untested options. ([@dfinlay] - [#11402]) ([media_player.yamaha docs]) +- Plex api update ([@ryanm101] - [#11423]) ([media_player.plex docs]) ([sensor.plex docs]) +- fix: hmip-etrv-2 now working with homeassistant ([@daenny] - [#11175]) ([homematic docs]) ([climate.homematic docs]) +- Fix errors in zigbee push state ([@SteveEasley] - [#11386]) ([zigbee docs]) +- Add on/off supported feature to climate ([@andrey-git] - [#11379]) ([climate docs]) ([climate.demo docs]) ([climate.sensibo docs]) +- Fix CONF_FRIENDLY_NAME ([@cdce8p] - [#11438]) ([cover.template docs]) ([light.template docs]) +- Climate: fix missing "|" ([@andrey-git] - [#11441]) ([climate.demo docs]) +- Google Assistant -> Google Actions ([@balloob] - [#11442]) ([cloud.iot docs]) +- Added new climate component from Daikin ([@rofrantz] - [#10983]) ([climate.daikin docs]) (new-platform) +- Updated generic thermostat to respect operation_mode and added away mode ([@ciotlosm] - [#11445]) ([climate.generic_thermostat docs]) +- Reconnect to alarmdecoder on disconnect ([@PhracturedBlue] - [#11383]) ([alarmdecoder docs]) +- Set tahoma cover scan interval to 60 seconds ([@bakedraccoon] - [#11447]) ([cover.tahoma docs]) +- Add some tests to the cloud component ([@balloob] - [#11460]) ([cloud docs]) ([cloud.iot docs]) +- Input Select - Added service description ([@cdce8p] - [#11456]) ([input_select docs]) +- Input Boolean - Deleted 'DEFAULT_INITIAL' ([@cdce8p] - [#11453]) ([input_boolean docs]) +- Updated gitignore file ([@cdce8p] - [#11452]) +- Update hydroquebec component to use hass httpsession ([@titilambert] - [#11412]) ([sensor.hydroquebec docs]) +- Catch everything when calling to OctoPrint API to fix #10557 ([@w1ll1am23] - [#11457]) ([octoprint docs]) +- Update PULL_REQUEST_TEMPLATE.md ([@danielhiversen] - [#11465]) +- Alexa to not use customize for entity config ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) +- Don't duplicate html5 registrations ([@Chris-V] - [#11451]) ([notify.html5 docs]) +- AlarmDecoder remove icon function as BinarySensorDevice handles it correctly now ([@hawk259] - [#11467]) ([binary_sensor.alarmdecoder docs]) +- Upgrade psutil to 5.4.3 ([@fabaff] - [#11468]) ([sensor.systemmonitor docs]) +- Upgrade alpha_vantage to 1.8.0 ([@fabaff] - [#11476]) ([sensor.alpha_vantage docs]) +- Fix vultr tests ([@balloob] - [#11477]) +- Upgrade yarl to 0.17.0 ([@fabaff] - [#11478]) +- Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) +- Upgrade pysnmp to 4.4.4 ([@fabaff] - [#11485]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) +- Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) +- Add missing configuration variables ([@fabaff] - [#11390]) ([sensor.metoffice docs]) +- Clean up Alexa.intent and DialogFlow.intent ([@balloob] - [#11492]) ([alexa.intent docs]) +- Fix time functions would throw errors in python scripts ([@tomwaters] - [#11414]) ([python_script docs]) +- Upgrade pywebpush to 1.5.0 ([@Chris-V] - [#11497]) ([notify.html5 docs]) +- upgrade schiene to 0.20 ([@JulianKahnert] - [#11504]) ([sensor.deutsche_bahn docs]) +- timer: include the remaining time in the state attributes ([@Julio-Guerra] - [#11510]) ([timer docs]) +- More tolerant KNX component if gateway cant be connected ([@Julius2342] - [#11511]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) +- Snips (new) added speech response, parse snips/duration ([@tschmidty69] - [#11513]) ([snips docs]) +- Add Dark Sky weather component ([@DanNixon] - [#11435]) ([weather.darksky docs]) (new-platform) +- Lazy loading of service descriptions ([@amelchio] - [#11479]) ([api docs]) ([websocket_api docs]) ([light.lifx docs]) +- Fix canary flaky test ([@balloob] - [#11519]) +- Address missed review comments for Dark Sky weather ([@DanNixon] - [#11520]) ([weather.darksky docs]) +- New features for Owntracks device_tracker ([@cpcowart] - [#11480]) ([device_tracker.owntracks docs]) +- Reconnect before mochad switch send command ([@aosadchyy] - [#11296]) ([switch.mochad docs]) +- Fix Kodi channels media type ([@florianj1] - [#11505]) ([media_player.kodi docs]) +- Extension sensor alpha_vantage ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change) +- MQTT json attributes ([@timstanley1985] - [#11439]) ([sensor.mqtt docs]) +- Support pushing all sensors and fix wrong metrics. ([@michaelkuty] - [#11159]) ([prometheus docs]) (breaking change) +- Add options feature to Baidu TTS. ([@yienxu] - [#11462]) ([tts.baidu docs]) +- Insteon local update ([@camrun91] - [#11088]) ([insteon_local docs]) ([fan.insteon_local docs]) ([light.insteon_local docs]) ([switch.insteon_local docs]) (breaking change) +- Snips: (fix) support new intentName format ([@tschmidty69] - [#11509]) ([snips docs]) +- Upgrade numpy to 1.14.0 ([@fabaff] - [#11542]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) +- Upgrade python-etherscan-api to 0.0.2 ([@fabaff] - [#11535]) ([sensor.etherscan docs]) +- Upgrade Sphinx to 1.6.6 ([@fabaff] - [#11534]) +- ZoneMinder event sensor updates ([@swilson] - [#11369]) ([sensor.zoneminder docs]) +- Move Google Assistant entity config out of customize ([@balloob] - [#11499]) ([cloud docs]) ([google_assistant docs]) (breaking change) +- Upgrade lightify to 1.0.6.1 ([@fabaff] - [#11545]) ([light.osramlightify docs]) +- Improved test runtime ([@cdce8p] - [#11553]) ([binary_sensor.workday docs]) +- Add 2 media_player services and 1 custom service to Squeezebox platform ([@ericpignet] - [#10969]) ([media_player.squeezebox docs]) +- Fix error on entity_config missing ([@philk] - [#11561]) ([google_assistant.http docs]) +- Upgrade keyring to 10.3.2 ([@fabaff] - [#11531]) +- Coinbase.com sensor platform ([@nkgilley] - [#11036]) ([coinbase docs]) ([sensor.coinbase docs]) (new-platform) +- Try to fix crashes after Hue refactoring ([@andreacampi] - [#11270]) ([light.hue docs]) +- Remove execution file perm ([@balloob] - [#11563]) +- Deprecate explicit entity_id in template platforms ([@amelchio] - [#11123]) ([binary_sensor.template docs]) ([cover.template docs]) ([light.template docs]) ([sensor.template docs]) ([switch.template docs]) +- Test tweaks ([@balloob] - [#11560]) +- Add Velux Windows to Tahoma ([@bakedraccoon] - [#11538]) ([tahoma docs]) ([cover.tahoma docs]) +- Extend hass.io services / updater ([@pvizeli] - [#11549]) ([hassio docs]) +- Add sensibo_assume_state service to Sensibo climate ([@andrey-git] - [#11567]) ([climate.sensibo docs]) +- Tracking all groups to allow changing of existing groups ([@randellhodges] - [#11444]) ([group docs]) +- Fix new squeezebox service descriptions for lazy loading ([@amelchio] - [#11574]) ([media_player.squeezebox docs]) +- Mark REST binary_sensor unavailable if request fails ([@DanNixon] - [#11506]) ([binary_sensor.rest docs]) +- Tado improvements - hot water zone sensors and climate precision ([@andersonshatch] - [#11521]) ([climate.tado docs]) ([sensor.tado docs]) +- Make the rpi_rf component thread-safe using an RLock ([@ulido] - [#11487]) ([switch.rpi_rf docs]) +- Update pyhomematic, support new devices ([@danielperna84] - [#11578]) ([homematic docs]) +- Alarmdecoder add validation of the zone types ([@hawk259] - [#11488]) ([alarmdecoder docs]) +- Support OSRAM lights on ZHA ([@armills] - [#11522]) ([light.zha docs]) +- Fix bluetooth tracker source ([@swilson] - [#11469]) ([device_tracker docs]) ([device_tracker.bluetooth_le_tracker docs]) ([device_tracker.bluetooth_tracker docs]) +- Fix for asuswrt, telnet not working and presence-detection for router mode ([@kennedyshead] - [#11422]) ([device_tracker.asuswrt docs]) +- Remove aux_heat support from Sensibo now that UI supports on/off ([@andrey-git] - [#11579]) ([climate.sensibo docs]) (breaking change) +- Changed device type of media player and cover to switch ([@Laqoore] - [#11483]) ([google_assistant.smart_home docs]) +- Control ordering of display in history component ([@rwa] - [#11340]) ([history docs]) +- Pr/11430 ([@balloob] - [#11587]) +- Cast return values and add unit tests for the yahoo weather component. ([@cgtobi] - [#10699]) ([weather.yweather docs]) +- add velux roller shutter to tahoma ([@bakedraccoon] - [#11586]) ([tahoma docs]) +- Added support for enable/disable motion detection ([@abjorshammar] - [#11583]) ([camera.uvc docs]) +- Avoid returning empty media_image_url string ([@JackWindows] - [#11557]) ([media_player.cast docs]) +- Core support for hass.io calls & Bugfix check_config ([@pvizeli] - [#11571]) ([__init__ docs]) ([hassio docs]) ([updater docs]) +- Fix Tahoma stop command for 2 types of shutters ([@bakedraccoon] - [#11588]) ([cover.tahoma docs]) +- Pushbullet email support (fix) ([@tschmidty69] - [#11590]) ([notify.pushbullet docs]) +- Fix state for trigger with forced updates ([@armills] - [#11595]) ([automation.state docs]) +- Snips add say and say_actions services (new) ([@tschmidty69] - [#11596]) ([snips docs]) +- Concord232 alarm arm away fix ([@rwa] - [#11597]) ([alarm_control_panel.concord232 docs]) ([binary_sensor.concord232 docs]) +- Bugfix and cleanup for Rfxtrx ([@danielhiversen] - [#11600]) +- Xiaomi lib upgrade ([@danielhiversen] - [#11603]) +- Upgrade yarl to 0.18.0 ([@fabaff] - [#11609]) +- patch stop command ([@bakedraccoon] - [#11612]) ([cover.tahoma docs]) +- Use kelvin/mireds correctly for setting iglo white ([@jesserockz] - [#11622]) +- Update Pyarlo to 0.1.2 ([@arsaboo] - [#11626]) + +[#10296]: https://github.com/home-assistant/home-assistant/pull/10296 +[#10321]: https://github.com/home-assistant/home-assistant/pull/10321 +[#10547]: https://github.com/home-assistant/home-assistant/pull/10547 +[#10699]: https://github.com/home-assistant/home-assistant/pull/10699 +[#10795]: https://github.com/home-assistant/home-assistant/pull/10795 +[#10841]: https://github.com/home-assistant/home-assistant/pull/10841 +[#10957]: https://github.com/home-assistant/home-assistant/pull/10957 +[#10969]: https://github.com/home-assistant/home-assistant/pull/10969 +[#10979]: https://github.com/home-assistant/home-assistant/pull/10979 +[#10983]: https://github.com/home-assistant/home-assistant/pull/10983 +[#11023]: https://github.com/home-assistant/home-assistant/pull/11023 +[#11027]: https://github.com/home-assistant/home-assistant/pull/11027 +[#11036]: https://github.com/home-assistant/home-assistant/pull/11036 +[#11039]: https://github.com/home-assistant/home-assistant/pull/11039 +[#11053]: https://github.com/home-assistant/home-assistant/pull/11053 +[#11064]: https://github.com/home-assistant/home-assistant/pull/11064 +[#11069]: https://github.com/home-assistant/home-assistant/pull/11069 +[#11072]: https://github.com/home-assistant/home-assistant/pull/11072 +[#11088]: https://github.com/home-assistant/home-assistant/pull/11088 +[#11096]: https://github.com/home-assistant/home-assistant/pull/11096 +[#11110]: https://github.com/home-assistant/home-assistant/pull/11110 +[#11123]: https://github.com/home-assistant/home-assistant/pull/11123 +[#11140]: https://github.com/home-assistant/home-assistant/pull/11140 +[#11159]: https://github.com/home-assistant/home-assistant/pull/11159 +[#11171]: https://github.com/home-assistant/home-assistant/pull/11171 +[#11172]: https://github.com/home-assistant/home-assistant/pull/11172 +[#11175]: https://github.com/home-assistant/home-assistant/pull/11175 +[#11180]: https://github.com/home-assistant/home-assistant/pull/11180 +[#11182]: https://github.com/home-assistant/home-assistant/pull/11182 +[#11188]: https://github.com/home-assistant/home-assistant/pull/11188 +[#11193]: https://github.com/home-assistant/home-assistant/pull/11193 +[#11202]: https://github.com/home-assistant/home-assistant/pull/11202 +[#11216]: https://github.com/home-assistant/home-assistant/pull/11216 +[#11232]: https://github.com/home-assistant/home-assistant/pull/11232 +[#11235]: https://github.com/home-assistant/home-assistant/pull/11235 +[#11238]: https://github.com/home-assistant/home-assistant/pull/11238 +[#11242]: https://github.com/home-assistant/home-assistant/pull/11242 +[#11243]: https://github.com/home-assistant/home-assistant/pull/11243 +[#11244]: https://github.com/home-assistant/home-assistant/pull/11244 +[#11245]: https://github.com/home-assistant/home-assistant/pull/11245 +[#11250]: https://github.com/home-assistant/home-assistant/pull/11250 +[#11251]: https://github.com/home-assistant/home-assistant/pull/11251 +[#11260]: https://github.com/home-assistant/home-assistant/pull/11260 +[#11268]: https://github.com/home-assistant/home-assistant/pull/11268 +[#11269]: https://github.com/home-assistant/home-assistant/pull/11269 +[#11270]: https://github.com/home-assistant/home-assistant/pull/11270 +[#11271]: https://github.com/home-assistant/home-assistant/pull/11271 +[#11274]: https://github.com/home-assistant/home-assistant/pull/11274 +[#11280]: https://github.com/home-assistant/home-assistant/pull/11280 +[#11281]: https://github.com/home-assistant/home-assistant/pull/11281 +[#11282]: https://github.com/home-assistant/home-assistant/pull/11282 +[#11296]: https://github.com/home-assistant/home-assistant/pull/11296 +[#11297]: https://github.com/home-assistant/home-assistant/pull/11297 +[#11298]: https://github.com/home-assistant/home-assistant/pull/11298 +[#11301]: https://github.com/home-assistant/home-assistant/pull/11301 +[#11304]: https://github.com/home-assistant/home-assistant/pull/11304 +[#11307]: https://github.com/home-assistant/home-assistant/pull/11307 +[#11308]: https://github.com/home-assistant/home-assistant/pull/11308 +[#11309]: https://github.com/home-assistant/home-assistant/pull/11309 +[#11310]: https://github.com/home-assistant/home-assistant/pull/11310 +[#11311]: https://github.com/home-assistant/home-assistant/pull/11311 +[#11312]: https://github.com/home-assistant/home-assistant/pull/11312 +[#11315]: https://github.com/home-assistant/home-assistant/pull/11315 +[#11316]: https://github.com/home-assistant/home-assistant/pull/11316 +[#11317]: https://github.com/home-assistant/home-assistant/pull/11317 +[#11318]: https://github.com/home-assistant/home-assistant/pull/11318 +[#11319]: https://github.com/home-assistant/home-assistant/pull/11319 +[#11326]: https://github.com/home-assistant/home-assistant/pull/11326 +[#11329]: https://github.com/home-assistant/home-assistant/pull/11329 +[#11331]: https://github.com/home-assistant/home-assistant/pull/11331 +[#11332]: https://github.com/home-assistant/home-assistant/pull/11332 +[#11333]: https://github.com/home-assistant/home-assistant/pull/11333 +[#11334]: https://github.com/home-assistant/home-assistant/pull/11334 +[#11335]: https://github.com/home-assistant/home-assistant/pull/11335 +[#11336]: https://github.com/home-assistant/home-assistant/pull/11336 +[#11340]: https://github.com/home-assistant/home-assistant/pull/11340 +[#11341]: https://github.com/home-assistant/home-assistant/pull/11341 +[#11344]: https://github.com/home-assistant/home-assistant/pull/11344 +[#11345]: https://github.com/home-assistant/home-assistant/pull/11345 +[#11346]: https://github.com/home-assistant/home-assistant/pull/11346 +[#11348]: https://github.com/home-assistant/home-assistant/pull/11348 +[#11350]: https://github.com/home-assistant/home-assistant/pull/11350 +[#11352]: https://github.com/home-assistant/home-assistant/pull/11352 +[#11354]: https://github.com/home-assistant/home-assistant/pull/11354 +[#11357]: https://github.com/home-assistant/home-assistant/pull/11357 +[#11362]: https://github.com/home-assistant/home-assistant/pull/11362 +[#11369]: https://github.com/home-assistant/home-assistant/pull/11369 +[#11375]: https://github.com/home-assistant/home-assistant/pull/11375 +[#11379]: https://github.com/home-assistant/home-assistant/pull/11379 +[#11381]: https://github.com/home-assistant/home-assistant/pull/11381 +[#11383]: https://github.com/home-assistant/home-assistant/pull/11383 +[#11386]: https://github.com/home-assistant/home-assistant/pull/11386 +[#11390]: https://github.com/home-assistant/home-assistant/pull/11390 +[#11394]: https://github.com/home-assistant/home-assistant/pull/11394 +[#11395]: https://github.com/home-assistant/home-assistant/pull/11395 +[#11397]: https://github.com/home-assistant/home-assistant/pull/11397 +[#11401]: https://github.com/home-assistant/home-assistant/pull/11401 +[#11402]: https://github.com/home-assistant/home-assistant/pull/11402 +[#11404]: https://github.com/home-assistant/home-assistant/pull/11404 +[#11410]: https://github.com/home-assistant/home-assistant/pull/11410 +[#11412]: https://github.com/home-assistant/home-assistant/pull/11412 +[#11414]: https://github.com/home-assistant/home-assistant/pull/11414 +[#11416]: https://github.com/home-assistant/home-assistant/pull/11416 +[#11417]: https://github.com/home-assistant/home-assistant/pull/11417 +[#11422]: https://github.com/home-assistant/home-assistant/pull/11422 +[#11423]: https://github.com/home-assistant/home-assistant/pull/11423 +[#11427]: https://github.com/home-assistant/home-assistant/pull/11427 +[#11435]: https://github.com/home-assistant/home-assistant/pull/11435 +[#11438]: https://github.com/home-assistant/home-assistant/pull/11438 +[#11439]: https://github.com/home-assistant/home-assistant/pull/11439 +[#11441]: https://github.com/home-assistant/home-assistant/pull/11441 +[#11442]: https://github.com/home-assistant/home-assistant/pull/11442 +[#11444]: https://github.com/home-assistant/home-assistant/pull/11444 +[#11445]: https://github.com/home-assistant/home-assistant/pull/11445 +[#11447]: https://github.com/home-assistant/home-assistant/pull/11447 +[#11451]: https://github.com/home-assistant/home-assistant/pull/11451 +[#11452]: https://github.com/home-assistant/home-assistant/pull/11452 +[#11453]: https://github.com/home-assistant/home-assistant/pull/11453 +[#11456]: https://github.com/home-assistant/home-assistant/pull/11456 +[#11457]: https://github.com/home-assistant/home-assistant/pull/11457 +[#11460]: https://github.com/home-assistant/home-assistant/pull/11460 +[#11461]: https://github.com/home-assistant/home-assistant/pull/11461 +[#11462]: https://github.com/home-assistant/home-assistant/pull/11462 +[#11465]: https://github.com/home-assistant/home-assistant/pull/11465 +[#11467]: https://github.com/home-assistant/home-assistant/pull/11467 +[#11468]: https://github.com/home-assistant/home-assistant/pull/11468 +[#11469]: https://github.com/home-assistant/home-assistant/pull/11469 +[#11476]: https://github.com/home-assistant/home-assistant/pull/11476 +[#11477]: https://github.com/home-assistant/home-assistant/pull/11477 +[#11478]: https://github.com/home-assistant/home-assistant/pull/11478 +[#11479]: https://github.com/home-assistant/home-assistant/pull/11479 +[#11480]: https://github.com/home-assistant/home-assistant/pull/11480 +[#11483]: https://github.com/home-assistant/home-assistant/pull/11483 +[#11485]: https://github.com/home-assistant/home-assistant/pull/11485 +[#11487]: https://github.com/home-assistant/home-assistant/pull/11487 +[#11488]: https://github.com/home-assistant/home-assistant/pull/11488 +[#11492]: https://github.com/home-assistant/home-assistant/pull/11492 +[#11497]: https://github.com/home-assistant/home-assistant/pull/11497 +[#11499]: https://github.com/home-assistant/home-assistant/pull/11499 +[#11504]: https://github.com/home-assistant/home-assistant/pull/11504 +[#11505]: https://github.com/home-assistant/home-assistant/pull/11505 +[#11506]: https://github.com/home-assistant/home-assistant/pull/11506 +[#11509]: https://github.com/home-assistant/home-assistant/pull/11509 +[#11510]: https://github.com/home-assistant/home-assistant/pull/11510 +[#11511]: https://github.com/home-assistant/home-assistant/pull/11511 +[#11513]: https://github.com/home-assistant/home-assistant/pull/11513 +[#11519]: https://github.com/home-assistant/home-assistant/pull/11519 +[#11520]: https://github.com/home-assistant/home-assistant/pull/11520 +[#11521]: https://github.com/home-assistant/home-assistant/pull/11521 +[#11522]: https://github.com/home-assistant/home-assistant/pull/11522 +[#11531]: https://github.com/home-assistant/home-assistant/pull/11531 +[#11534]: https://github.com/home-assistant/home-assistant/pull/11534 +[#11535]: https://github.com/home-assistant/home-assistant/pull/11535 +[#11538]: https://github.com/home-assistant/home-assistant/pull/11538 +[#11542]: https://github.com/home-assistant/home-assistant/pull/11542 +[#11545]: https://github.com/home-assistant/home-assistant/pull/11545 +[#11549]: https://github.com/home-assistant/home-assistant/pull/11549 +[#11553]: https://github.com/home-assistant/home-assistant/pull/11553 +[#11557]: https://github.com/home-assistant/home-assistant/pull/11557 +[#11560]: https://github.com/home-assistant/home-assistant/pull/11560 +[#11561]: https://github.com/home-assistant/home-assistant/pull/11561 +[#11563]: https://github.com/home-assistant/home-assistant/pull/11563 +[#11567]: https://github.com/home-assistant/home-assistant/pull/11567 +[#11571]: https://github.com/home-assistant/home-assistant/pull/11571 +[#11574]: https://github.com/home-assistant/home-assistant/pull/11574 +[#11578]: https://github.com/home-assistant/home-assistant/pull/11578 +[#11579]: https://github.com/home-assistant/home-assistant/pull/11579 +[#11583]: https://github.com/home-assistant/home-assistant/pull/11583 +[#11586]: https://github.com/home-assistant/home-assistant/pull/11586 +[#11587]: https://github.com/home-assistant/home-assistant/pull/11587 +[#11588]: https://github.com/home-assistant/home-assistant/pull/11588 +[#11590]: https://github.com/home-assistant/home-assistant/pull/11590 +[#11595]: https://github.com/home-assistant/home-assistant/pull/11595 +[#11596]: https://github.com/home-assistant/home-assistant/pull/11596 +[#11597]: https://github.com/home-assistant/home-assistant/pull/11597 +[#11600]: https://github.com/home-assistant/home-assistant/pull/11600 +[#11603]: https://github.com/home-assistant/home-assistant/pull/11603 +[#11609]: https://github.com/home-assistant/home-assistant/pull/11609 +[#11612]: https://github.com/home-assistant/home-assistant/pull/11612 +[#11622]: https://github.com/home-assistant/home-assistant/pull/11622 +[#11626]: https://github.com/home-assistant/home-assistant/pull/11626 +[@Chris-V]: https://github.com/Chris-V +[@ChristianKuehnel]: https://github.com/ChristianKuehnel +[@DanNixon]: https://github.com/DanNixon +[@Human]: https://github.com/Human +[@JackWindows]: https://github.com/JackWindows +[@JulianKahnert]: https://github.com/JulianKahnert +[@Julio-Guerra]: https://github.com/Julio-Guerra +[@Julius2342]: https://github.com/Julius2342 +[@KJonline]: https://github.com/KJonline +[@Kane610]: https://github.com/Kane610 +[@Klathmon]: https://github.com/Klathmon +[@Klikini]: https://github.com/Klikini +[@Laqoore]: https://github.com/Laqoore +[@OttoWinter]: https://github.com/OttoWinter +[@OverloadUT]: https://github.com/OverloadUT +[@PeWu]: https://github.com/PeWu +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@ReneNulschDE]: https://github.com/ReneNulschDE +[@SteveEasley]: https://github.com/SteveEasley +[@abjorshammar]: https://github.com/abjorshammar +[@abondoe]: https://github.com/abondoe +[@akatrevorjay]: https://github.com/akatrevorjay +[@amelchio]: https://github.com/amelchio +[@andersonshatch]: https://github.com/andersonshatch +[@andreacampi]: https://github.com/andreacampi +[@andrey-git]: https://github.com/andrey-git +[@aosadchyy]: https://github.com/aosadchyy +[@armills]: https://github.com/armills +[@arsaboo]: https://github.com/arsaboo +[@awkwardDuck]: https://github.com/awkwardDuck +[@bachya]: https://github.com/bachya +[@bakedraccoon]: https://github.com/bakedraccoon +[@balloob]: https://github.com/balloob +[@camrun91]: https://github.com/camrun91 +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@ciotlosm]: https://github.com/ciotlosm +[@cmsimike]: https://github.com/cmsimike +[@cnrd]: https://github.com/cnrd +[@cpcowart]: https://github.com/cpcowart +[@daenny]: https://github.com/daenny +[@danielhiversen]: https://github.com/danielhiversen +[@danielperna84]: https://github.com/danielperna84 +[@dfiel]: https://github.com/dfiel +[@dfinlay]: https://github.com/dfinlay +[@djchen]: https://github.com/djchen +[@ericpignet]: https://github.com/ericpignet +[@etsinko]: https://github.com/etsinko +[@fabaff]: https://github.com/fabaff +[@florianj1]: https://github.com/florianj1 +[@foxel]: https://github.com/foxel +[@frwickst]: https://github.com/frwickst +[@goldminenine]: https://github.com/goldminenine +[@goyney]: https://github.com/goyney +[@hawk259]: https://github.com/hawk259 +[@jbarrancos]: https://github.com/jbarrancos +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@jesserockz]: https://github.com/jesserockz +[@kennedyshead]: https://github.com/kennedyshead +[@markferry]: https://github.com/markferry +[@masarliev]: https://github.com/masarliev +[@michaelkuty]: https://github.com/michaelkuty +[@nkgilley]: https://github.com/nkgilley +[@notoriousbdg]: https://github.com/notoriousbdg +[@pavoni]: https://github.com/pavoni +[@philk]: https://github.com/philk +[@pvizeli]: https://github.com/pvizeli +[@randellhodges]: https://github.com/randellhodges +[@rofrantz]: https://github.com/rofrantz +[@rwa]: https://github.com/rwa +[@ryanm101]: https://github.com/ryanm101 +[@schmittx]: https://github.com/schmittx +[@schnoetz]: https://github.com/schnoetz +[@swilson]: https://github.com/swilson +[@thibmaek]: https://github.com/thibmaek +[@timstanley1985]: https://github.com/timstanley1985 +[@tinloaf]: https://github.com/tinloaf +[@titilambert]: https://github.com/titilambert +[@tomaszduda23]: https://github.com/tomaszduda23 +[@tomwaters]: https://github.com/tomwaters +[@tschmidty69]: https://github.com/tschmidty69 +[@ttroy50]: https://github.com/ttroy50 +[@ulido]: https://github.com/ulido +[@veleek]: https://github.com/veleek +[@w1ll1am23]: https://github.com/w1ll1am23 +[@yienxu]: https://github.com/yienxu +[__init__ docs]: https://home-assistant.io/components/__init__/ +[alarm_control_panel.alarmdecoder docs]: https://home-assistant.io/components/alarm_control_panel.alarmdecoder/ +[alarm_control_panel.concord232 docs]: https://home-assistant.io/components/alarm_control_panel.concord232/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarmdecoder docs]: https://home-assistant.io/components/alarmdecoder/ +[alexa.intent docs]: https://home-assistant.io/components/alexa.intent/ +[alexa.smart_home docs]: https://home-assistant.io/components/alexa.smart_home/ +[api docs]: https://home-assistant.io/components/api/ +[automation.state docs]: https://home-assistant.io/docs/automation/trigger/#state-trigger +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.alarmdecoder docs]: https://home-assistant.io/components/binary_sensor.alarmdecoder/ +[binary_sensor.concord232 docs]: https://home-assistant.io/components/binary_sensor.concord232/ +[binary_sensor.deconz docs]: https://home-assistant.io/components/binary_sensor.deconz/ +[binary_sensor.isy994 docs]: https://home-assistant.io/components/binary_sensor.isy994/ +[binary_sensor.knx docs]: https://home-assistant.io/components/binary_sensor.knx/ +[binary_sensor.rest docs]: https://home-assistant.io/components/binary_sensor.rest/ +[binary_sensor.template docs]: https://home-assistant.io/components/binary_sensor.template/ +[binary_sensor.threshold docs]: https://home-assistant.io/components/binary_sensor.threshold/ +[binary_sensor.trend docs]: https://home-assistant.io/components/binary_sensor.trend/ +[binary_sensor.workday docs]: https://home-assistant.io/components/binary_sensor.workday/ +[camera.doorbird docs]: https://home-assistant.io/components/camera.doorbird/ +[camera.uvc docs]: https://home-assistant.io/components/camera.uvc/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.daikin docs]: https://home-assistant.io/components/climate.daikin/ +[climate.demo docs]: https://home-assistant.io/components/climate.demo/ +[climate.econet docs]: https://home-assistant.io/components/climate.econet/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.hive docs]: https://home-assistant.io/components/climate.hive/ +[climate.homematic docs]: https://home-assistant.io/components/climate.homematic/ +[climate.knx docs]: https://home-assistant.io/components/climate.knx/ +[climate.netatmo docs]: https://home-assistant.io/components/climate.netatmo/ +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[climate.tado docs]: https://home-assistant.io/components/climate.tado/ +[climate.touchline docs]: https://home-assistant.io/components/climate.touchline/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.auth_api docs]: https://home-assistant.io/components/cloud.auth_api/ +[cloud.http_api docs]: https://home-assistant.io/components/cloud.http_api/ +[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/ +[coinbase docs]: https://home-assistant.io/components/coinbase/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[cover.isy994 docs]: https://home-assistant.io/components/cover.isy994/ +[cover.knx docs]: https://home-assistant.io/components/cover.knx/ +[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/ +[cover.template docs]: https://home-assistant.io/components/cover.template/ +[cover.xiaomi_aqara docs]: https://home-assistant.io/components/cover.xiaomi_aqara/ +[deconz docs]: https://home-assistant.io/components/deconz/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.asuswrt docs]: https://home-assistant.io/components/device_tracker.asuswrt/ +[device_tracker.bluetooth_le_tracker docs]: https://home-assistant.io/components/device_tracker.bluetooth_le_tracker/ +[device_tracker.bluetooth_tracker docs]: https://home-assistant.io/components/device_tracker.bluetooth_tracker/ +[device_tracker.gpslogger docs]: https://home-assistant.io/components/device_tracker.gpslogger/ +[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.tile docs]: https://home-assistant.io/components/device_tracker.tile/ +[digital_ocean docs]: https://home-assistant.io/components/digital_ocean/ +[fan.insteon_local docs]: https://home-assistant.io/components/fan.insteon_local/ +[fan.isy994 docs]: https://home-assistant.io/components/fan.isy994/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[google_assistant.http docs]: https://home-assistant.io/components/google_assistant.http/ +[google_assistant.smart_home docs]: https://home-assistant.io/components/google_assistant.smart_home/ +[group docs]: https://home-assistant.io/components/group/ +[hassio docs]: https://home-assistant.io/components/hassio/ +[history docs]: https://home-assistant.io/components/history/ +[hive docs]: https://home-assistant.io/components/hive/ +[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/ +[input_boolean docs]: https://home-assistant.io/components/input_boolean/ +[input_select docs]: https://home-assistant.io/components/input_select/ +[insteon_local docs]: https://home-assistant.io/components/insteon_local/ +[isy994 docs]: https://home-assistant.io/components/isy994/ +[knx docs]: https://home-assistant.io/components/knx/ +[light.deconz docs]: https://home-assistant.io/components/light.deconz/ +[light.greenwave docs]: https://home-assistant.io/components/light.greenwave/ +[light.hive docs]: https://home-assistant.io/components/light.hive/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.iglo docs]: https://home-assistant.io/components/light.iglo/ +[light.insteon_local docs]: https://home-assistant.io/components/light.insteon_local/ +[light.isy994 docs]: https://home-assistant.io/components/light.isy994/ +[light.knx docs]: https://home-assistant.io/components/light.knx/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.mqtt docs]: https://home-assistant.io/components/light.mqtt/ +[light.osramlightify docs]: https://home-assistant.io/components/light.osramlightify/ +[light.template docs]: https://home-assistant.io/components/light.template/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[lock.isy994 docs]: https://home-assistant.io/components/lock.isy994/ +[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/ +[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.squeezebox docs]: https://home-assistant.io/components/media_player.squeezebox/ +[media_player.yamaha docs]: https://home-assistant.io/components/media_player.yamaha/ +[modbus docs]: https://home-assistant.io/components/modbus/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[notify.webostv docs]: https://home-assistant.io/components/notify.webostv/ +[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/ +[rainbird docs]: https://home-assistant.io/components/rainbird/ +[remember_the_milk docs]: https://home-assistant.io/components/remember_the_milk/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.bitcoin docs]: https://home-assistant.io/components/sensor.bitcoin/ +[sensor.coinbase docs]: https://home-assistant.io/components/sensor.coinbase/ +[sensor.deconz docs]: https://home-assistant.io/components/sensor.deconz/ +[sensor.deutsche_bahn docs]: https://home-assistant.io/components/sensor.deutsche_bahn/ +[sensor.discogs docs]: https://home-assistant.io/components/sensor.discogs/ +[sensor.etherscan docs]: https://home-assistant.io/components/sensor.etherscan/ +[sensor.fido docs]: https://home-assistant.io/components/sensor.fido/ +[sensor.hydroquebec docs]: https://home-assistant.io/components/sensor.hydroquebec/ +[sensor.imap_email_content docs]: https://home-assistant.io/components/sensor.imap_email_content/ +[sensor.irish_rail_transport docs]: https://home-assistant.io/components/sensor.irish_rail_transport/ +[sensor.isy994 docs]: https://home-assistant.io/components/sensor.isy994/ +[sensor.knx docs]: https://home-assistant.io/components/sensor.knx/ +[sensor.luftdaten docs]: https://home-assistant.io/components/sensor.luftdaten/ +[sensor.metoffice docs]: https://home-assistant.io/components/sensor.metoffice/ +[sensor.miflora docs]: https://home-assistant.io/components/sensor.miflora/ +[sensor.mqtt docs]: https://home-assistant.io/components/sensor.mqtt/ +[sensor.openweathermap docs]: https://home-assistant.io/components/sensor.openweathermap/ +[sensor.plex docs]: https://home-assistant.io/components/sensor.plex/ +[sensor.rainbird docs]: https://home-assistant.io/components/sensor.rainbird/ +[sensor.snmp docs]: https://home-assistant.io/components/sensor.snmp/ +[sensor.sochain docs]: https://home-assistant.io/components/sensor.sochain/ +[sensor.statistics docs]: https://home-assistant.io/components/sensor.statistics/ +[sensor.steam_online docs]: https://home-assistant.io/components/sensor.steam_online/ +[sensor.swiss_public_transport docs]: https://home-assistant.io/components/sensor.swiss_public_transport/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tado docs]: https://home-assistant.io/components/sensor.tado/ +[sensor.template docs]: https://home-assistant.io/components/sensor.template/ +[sensor.transmission docs]: https://home-assistant.io/components/sensor.transmission/ +[sensor.xbox_live docs]: https://home-assistant.io/components/sensor.xbox_live/ +[sensor.zoneminder docs]: https://home-assistant.io/components/sensor.zoneminder/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.insteon_local docs]: https://home-assistant.io/components/switch.insteon_local/ +[switch.isy994 docs]: https://home-assistant.io/components/switch.isy994/ +[switch.knx docs]: https://home-assistant.io/components/switch.knx/ +[switch.mochad docs]: https://home-assistant.io/components/switch.mochad/ +[switch.rainbird docs]: https://home-assistant.io/components/switch.rainbird/ +[switch.rpi_rf docs]: https://home-assistant.io/components/switch.rpi_rf/ +[switch.snmp docs]: https://home-assistant.io/components/switch.snmp/ +[switch.template docs]: https://home-assistant.io/components/switch.template/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[switch.transmission docs]: https://home-assistant.io/components/switch.transmission/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[telegram_bot docs]: https://home-assistant.io/components/telegram_bot/ +[timer docs]: https://home-assistant.io/components/timer/ +[tts.baidu docs]: https://home-assistant.io/components/tts.baidu/ +[tts.marytts docs]: https://home-assistant.io/components/tts.marytts/ +[updater docs]: https://home-assistant.io/components/updater/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[weather.darksky docs]: https://home-assistant.io/components/weather.darksky/ +[weather.openweathermap docs]: https://home-assistant.io/components/weather.openweathermap/ +[weather.yweather docs]: https://home-assistant.io/components/weather.yweather/ +[websocket_api docs]: https://home-assistant.io/components/websocket_api/ +[wemo docs]: https://home-assistant.io/components/wemo/ +[zigbee docs]: https://home-assistant.io/components/zigbee/ +[#11670]: https://github.com/home-assistant/home-assistant/pull/11670 +[#11677]: https://github.com/home-assistant/home-assistant/pull/11677 +[#11678]: https://github.com/home-assistant/home-assistant/pull/11678 +[#11686]: https://github.com/home-assistant/home-assistant/pull/11686 +[#11713]: https://github.com/home-assistant/home-assistant/pull/11713 +[@amelchio]: https://github.com/amelchio +[@danielhiversen]: https://github.com/danielhiversen +[@rcloran]: https://github.com/rcloran +[@rwa]: https://github.com/rwa +[@tinloaf]: https://github.com/tinloaf +[binary_sensor.rfxtrx docs]: https://home-assistant.io/components/binary_sensor.rfxtrx/ +[calendar.todoist docs]: https://home-assistant.io/components/calendar.todoist/ +[history docs]: https://home-assistant.io/components/history/ +[light.zha docs]: https://home-assistant.io/components/light.zha/ +[media_player.snapcast docs]: https://home-assistant.io/components/media_player.snapcast/ +[media_player.soundtouch docs]: https://home-assistant.io/components/media_player.soundtouch/ +[rfxtrx docs]: https://home-assistant.io/components/rfxtrx/ +[sensor.mopar docs]: https://home-assistant.io/components/sensor.mopar/ +[switch.broadlink docs]: https://home-assistant.io/components/switch.broadlink/ +[switch.scsgate docs]: https://home-assistant.io/components/switch.scsgate/ +[zha docs]: https://home-assistant.io/components/zha/ +]]> + + +
diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html new file mode 100644 index 0000000000..c8a138af48 --- /dev/null +++ b/blog/categories/release-notes/index.html @@ -0,0 +1,1891 @@ + + + + + + + + + Category: Release-Notes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: Release-Notes +

+
+
+
+

2018

+ + + + + +

2017

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

2016

+ + + + + + + + + + + + + + + + + + + + + + + + + +

2015

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/survey/atom.xml b/blog/categories/survey/atom.xml new file mode 100644 index 0000000000..3fbb24d690 --- /dev/null +++ b/blog/categories/survey/atom.xml @@ -0,0 +1,103 @@ + + + + <![CDATA[Category: Survey | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Survey November 2015]]> + + 2015-11-22T14:51:18+00:00 + https://home-assistant.io/blog/2015/11/22/survey-november-2015 + 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. + + +Thanks to Python, users are running Home Assistant on the most popular Linux distributions and other operating systems including OS X and Microsoft Windows. One quarter of the operating systems are unknown which leads to the assumption that it is possible to run Home Assistant on most of the available operation systems today. We hope that *BSD users have fun too. The Hardware platform of choice seems to be x86_64 and ARM. + +Of course most users are running with the [automation](/getting-started/automation/) component otherwise it would make much sense to use Home Assistant. The [sun](/components/sun/) component is used a lot too. We hope that this is not because this component is enabled by default. + +The [Alarm control panels](/components/alarm_control_panel/) and the [camera component](/components/camera/) are both used by around one third of the participants of the survey. It's safe to say that they cover a niche, but they will gain momentum when people discover how they can build alarm systems with Home Assistant. + +[Philips Hue](/components/light.hue/) is the "winner" in the light category closely followed by [MQTT lights](components/light.mqtt/). [Google Cast](/components/media_player.cast/) and [ Plex](/components/media_player.plex/) are the top media player platforms. [Pushbullet](/components/notify.pushbullet/) is by far the most-used [notification platform](https://home-assistant.io/components/notify/). If you followed the recent efforts to improve this platform it's comprehensible. + +It's interesting to see that most of the sensor, switch, and thermostat platforms are used. A lot of people seem to be interested in the weather data provided by the [Forecast sensor](/components/sensor.forecast/). The MQTT sensors and switches are deployed in almost 50% of all Home Assistant setups. + + +

+ + Home Assistant releases +

+ +

+ + Operating systems +

+ +

+ + Hardware platforms +

+ +

+ + Components +

+ +

+ + Alarm Control Panels and Cameras +

+ +

+ + Device trackers +

+ +

+ + Lights +

+ +

+ + Media players +

+ +

+ + Notifications +

+ +

+ + Sensors +

+ +

+ + Switches +

+ +

+ + Thermostats +

+ +The conclusion is that [MQTT](http://mqtt.org/) is popular in almost every section from Alarm Control Panel, presence detection with [owntracks](http://owntracks.org/), sensors and switches, and now even for lights. + +The interpretation of the data is up to you. Again, thanks for participating in this survey. +]]>
+
+ +
diff --git a/blog/categories/survey/index.html b/blog/categories/survey/index.html new file mode 100644 index 0000000000..44aa7160e2 --- /dev/null +++ b/blog/categories/survey/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Category: Survey - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/talks/atom.xml b/blog/categories/talks/atom.xml new file mode 100644 index 0000000000..d6f23956be --- /dev/null +++ b/blog/categories/talks/atom.xml @@ -0,0 +1,33 @@ + + + + <![CDATA[Category: Talks | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Talk: Automating your home with Home Assistant (OpenIoT Summit)]]> + + 2016-05-06T14:09:00+00:00 + https://home-assistant.io/blog/2016/05/06/open-iot-summit-talk + + + + + +[Slides.]: https://docs.google.com/presentation/d/1P2WsmwGSSni4gAriY5IA0-m-FUGO1kno3gIkRYz20Kw/edit#slide=id.p +[we're hiring!]: http://www.appfolioinc.com/jobs-openings +]]> + + + diff --git a/blog/categories/talks/index.html b/blog/categories/talks/index.html new file mode 100644 index 0000000000..25f81555fe --- /dev/null +++ b/blog/categories/talks/index.html @@ -0,0 +1,208 @@ + + + + + + + + + Category: Talks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/technology/atom.xml b/blog/categories/technology/atom.xml new file mode 100644 index 0000000000..3dff4dd632 --- /dev/null +++ b/blog/categories/technology/atom.xml @@ -0,0 +1,201 @@ + + + + <![CDATA[Category: Technology | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Deprecating Python 3.4 support]]> + + 2017-10-06T00:36:00+00:00 + https://home-assistant.io/blog/2017/10/06/deprecating-python-3.4-support + + + + + <![CDATA[Improved Hass.io build system]]> + + 2017-09-26T03:00:00+00:00 + https://home-assistant.io/blog/2017/09/26/new-hassio-build-system + +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. +

+ +### 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 +``` + +### 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 +]]>
+
+ + + <![CDATA[Hassbian 1.3 - A bit of a stretch]]> + + 2017-09-16T15:00:00+00:00 + https://home-assistant.io/blog/2017/09/16/hassbian-1.3-a-bit-of-a-stretch + 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]. + +#### 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 +]]> + + + + <![CDATA[ZWave Entity IDs]]> + + 2017-06-15T12:00:00+00:00 + https://home-assistant.io/blog/2017/06/15/zwave-entity-ids + + + + + <![CDATA[HASSbian 1.21 - It's about time isn't it]]> + + 2017-04-30T15:00:00+00:00 + https://home-assistant.io/blog/2017/04/30/hassbian-1.21-its-about-time + Hassbian-config + +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. This replaces the `hassbian-scripts` functionality from 1.1. + + - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component that's 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. + +### Spring cleaning + +With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image. + + - Replaced the `hassbian-scripts` folder with `hassbian-config`. + - Update `pi-gen`. Our build script has been upgraded to follow the Raspbian image closer once again. Now you could build this image with Docker if your so inclined. + - 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 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 +[gs-image]: /getting-started/installation-raspberry-pi-image/ +[discord-devs]: https://discord.gg/8X8DTH4 +]]> + + +
diff --git a/blog/categories/technology/index.html b/blog/categories/technology/index.html new file mode 100644 index 0000000000..219022ce27 --- /dev/null +++ b/blog/categories/technology/index.html @@ -0,0 +1,376 @@ + + + + + + + + + Category: Technology - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: Technology +

+
+
+
+

2017

+ + + + + + +

2016

+ + + +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml new file mode 100644 index 0000000000..4e05df05b5 --- /dev/null +++ b/blog/categories/user-stories/atom.xml @@ -0,0 +1,269 @@ + + + + <![CDATA[Category: User-Stories | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Laundry Sensors with NodeMCU and Home Assistant]]> + + 2016-08-03T17:22:00+00:00 + https://home-assistant.io/blog/2016/08/03/laundry-automation-update + + + Block diagram of schematic +

+ + + +After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn't get tripped by the washer or vice versa. In the plot below you can see the acceleration in each direction for the accelerometer connected to the dryer. It's easy to see when the dryer is in operation here. I used the same technique for the washer's accelerometer. + +

+ + Graph showing the accelerometer data +

+ +Next it was just a matter of integrating everything with Home Assistant. I was able to use the [MQTT component](/components/mqtt/) to read the washer and dryer states from the Moteino and display it in Home Assistant. + +

+ + Status of the dryer and washer in Home Assistant +

+ +Next I wrote [scripts](/components/script/) that are run whenever the washer or dryer completes a load. This is triggered by the [automation component](/getting-started/automation/). When the laundry is complete I have the lights in the house turn red and [notify me via Join](/components/notify.joaoapps_join/). Once the door is opened and laundry emptied another script runs that sets the lights back to normal. So far it has been very helpful and very reliable. + +

+ + + + NodeMCU connected to MPU-6050 accelerometer. +

+ +Materials used: + + - [NodeMCU](https://www.amazon.com/gp/product/B010O1G1ES) + - [2 x Accelerometers](http://www.amazon.com/gp/product/B008BOPN40) + - [2 x Reed switch](http://www.amazon.com/gp/product/B004PARDRO) + +[Sketch for the NodeMCU is available here.](https://github.com/nkgilley/nodemcu-laundry/blob/master/nodemcu-laundry.ino) + +Home Assistant Configuration: + +```yaml +mqtt: + broker: 192.168.1.100 + port: 1883 + keepalive: 60 + qos: 0 + +sensor: + - platform: mqtt + name: "Dryer Status" + state_topic: "sensor/dryer" + unit_of_measurement: "" + + - platform: mqtt + name: "Washer Status" + state_topic: "sensor/washer" + unit_of_measurement: "" + +automation: + - alias: Washer complete + trigger: + platform: state + entity_id: sensor.washer_status + from: 'Running' + to: 'Complete' + action: + service: script.turn_on + entity_id: script.washer_complete + + - alias: Washer emptied + trigger: + platform: state + entity_id: sensor.washer_status + from: 'Complete' + to: 'Empty' + action: + service: scene.turn_on + entity_id: scene.normal + +script: + washer_complete: + alias: Washer Complete + sequence: + - alias: Join Notification + service: notify.join + data: + message: "The washing machine has finished its cycle, please empty it!" + - alias: Living Room Lights Blue + service: scene.turn_on + data: + entity_id: scene.blue +``` + +Resources used: + + - [Inspiration and Help with Arduino code](http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi/step13/Washer-Dryer-Smartifier-Water-Leak-Sensor/) + +]]>
+
+ + + <![CDATA[Laundry Automation: insight and notifications]]> + + 2015-08-26T15:12:00+00:00 + https://home-assistant.io/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant + + + + + Graph showing the accelerometer data +

+ + + +Next it was just a matter of integrating everything with Home Assistant. I was able to use the [MQTT component](/components/mqtt/) to read the washer and dryer states from the Moteino and display it in Home Assistant. + +

+ + Status of the dryer and washer in Home Assistant +

+ +Next I wrote [scripts](/components/script/) that are run whenever the washer or dryer completes a load. This is triggered by the [automation component](/getting-started/automation/). When the laundry is complete I have the lights in the house turn red and [notify me via PushBullet](/components/notify.pushbullet/). Once the laundry is taken care of another script runs that sets the lights back to normal. So far it has been very helpful and very reliable. + +

+ + + + Top left: reed switch. Bottom left: moteino. Right: Accelerometer. +

+ +Materials used: + + - [Moteino](https://lowpowerlab.com/moteino/) + - [2 x Accelerometers](http://www.amazon.com/gp/product/B008BOPN40) + - [2 x Reed switch](http://www.amazon.com/gp/product/B004PARDRO) + - [Home Assistant](https://home-assistant.io/) + +[Sketch for the Moteino is available here.](https://codebender.cc/sketch:144743) + +Home Assistant Configuration: + +

+The automation and script syntax here is using a deprecated and no longer supported format. +

+ +```yaml +mqtt: + broker: 192.168.1.100 + port: 1883 + keepalive: 60 + qos: 0 + +sensor: + platform: mqtt + name: "Dryer Status" + state_topic: "sensor/dryer" + unit_of_measurement: "" + +sensor 2: + platform: mqtt + name: "Washer Status" + state_topic: "sensor/washer" + unit_of_measurement: "" + +automation: + alias: Dryer complete + + platform: state + state_entity_id: sensor.dryer_status + state_from: 'Running' + state_to: 'Complete' + + execute_service: script.turn_on + service_entity_id: script.dryer_complete + +automation 2: + alias: Dryer emptied + + platform: state + state_entity_id: sensor.dryer_status + state_from: 'Complete' + state_to: 'Empty' + + execute_service: script.turn_on + service_entity_id: script.dryer_cleared + +script: + dryer_complete: + alias: Dryer Complete Script + sequence: + - alias: Pushbullet Notification + execute_service: notify.notify + service_data: + message: "The dryer has finished its cycle, please empty it!" + - alias: Living Room Lights Red + execute_service: scene.turn_on + service_data: + entity_id: scene.red + - delay: + seconds: 1 + - alias: Living Room Lights Off + execute_service: light.turn_off + service_data: + entity_id: group.living_room + - delay: + seconds: 1 + - alias: Living Room Lights Red + execute_service: scene.turn_on + service_data: + entity_id: scene.red + + dryer_cleared: + alias: Dryer Cleared Script + sequence: + - alias: Living Room Lights Off + execute_service: light.turn_off + service_data: + entity_id: group.living_room + - delay: + seconds: 1 + - alias: Living Room Lights Normal + execute_service: scene.turn_on + service_data: + entity_id: scene.normal +``` + +Resources used: + + - [Inspiration and Help with Arduino code](http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi/step13/Washer-Dryer-Smartifier-Water-Leak-Sensor/) + - [Moteino Code](https://github.com/LowPowerLab/RFM69/) + +]]>
+
+ +
diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html new file mode 100644 index 0000000000..6cab2bc2af --- /dev/null +++ b/blog/categories/user-stories/index.html @@ -0,0 +1,229 @@ + + + + + + + + + Category: User-Stories - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml new file mode 100644 index 0000000000..95295adadb --- /dev/null +++ b/blog/categories/video/atom.xml @@ -0,0 +1,158 @@ + + + + <![CDATA[Category: Video | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Home Assistant at PyCon 2016]]> + + 2016-06-13T01:06:00+00:00 + https://home-assistant.io/blog/2016/06/13/home-assistant-at-pycon-2016 + + Home Assistant developers + Couple of Home Assistant devs. Left to right: [Paulus (@balloob)], [Alex (@infamy)], [Ryan (@rmkraus)]. +

+ +On Monday I (Paulus) gave a presentation about Home Assistant to an audience of over 400 people! It was a bit scary at first but after a couple of minutes it went all great including some great questions afterwards. Slides can be found [here][slides] and the talk is embedded right below: + +
+ +
+ +One of the things that really impressed me was the amount of people that approached us to tell how they love Home Assistant, how it has replaced their previous solution, how they enjoyed contributing to Home Assistant and how helpful our community is. It makes me proud of Home Assistant and especially our community. + + +PyCon has a few great concepts that I haven't seen at other conferences: open spaces and sprints. Open spaces give anyone the opportunity to get a room and host a session for an hour to talk about any topic. Sprints happen after the conference part of PyCon is over. For four days there are rooms available for participants to get together and hack on their favorite open source projects. + +My talk had limited time for Q&A so open spaces offered a great opportunity to get all pending questions answered and connect with the commmunity. There was more interest after the first day so we ended up hosting another open space on the second day. + + + +We've had such positive reception on our open spaces that [Jonathan Baginski][@jbags81] decided to repeat it online. We will be hosting a free online webinar [Home Assistant Support 101 - Getting around in Home Assistant][webinar] later this month. Make sure to RSVP. + +After the conference part of PyCon was over we spent one extra day to host a Home Assistant sprint. This allowed us to help people get started with hacking on Home Assistant which lead to some great contributions. + +

+ Home Assistant sprint group photo + Home Assistant sprint group photo. +

+ +I've had a really great time at PyCon. It was awesome to meet everyone in person and I hope to see many of you next year! + +[PyCon 2016]: https://us.pycon.org/2016/ +[Paulus (@balloob)]: https://github.com/balloob/ +[Alex (@infamy)]: https://github.com/infamy/ +[Ryan (@rmkraus)]: https://github.com/rmkraus/ +[@jbags81]: https://github.com/jbags81/ +[slides]: https://docs.google.com/presentation/d/1F1pGOoSf0dD79Dl5dgys0ll7xiuIA4XiQeNeJ-xlqMg/edit +[webinar]: https://www.eventbrite.com/e/home-assistant-support-101-getting-around-in-home-assistant-tickets-25943868810 +]]>
+
+ + + <![CDATA[Community Highlights]]> + + 2016-06-01T18:34:00+00:00 + https://home-assistant.io/blog/2016/06/01/community-highlights + SceneGen - cli for making scenes + +[SceneGen] is a new command line utility developed by [Andrew Cockburn] that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states. + +### Videos + +[Nick Touran] has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up [a blog post] and has put out a video showing the new integration, very cool! + +
+ +
+ +Ben from [BRUH Automation] has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks. + +
+ +
+ +Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS. + +
+ +
+ +[chat room]: https://discord.gg/c5DvZ4e +[SceneGen]: https://github.com/acockburn/scenegen +[Andrew Cockburn]: https://github.com/acockburn +[BRUH Automation]: http://www.bruhautomation.com/ +[Nick Touran]: https://partofthething.com +[a blog post]: https://partofthething.com/thoughts/?p=1010 +]]>
+
+ + + <![CDATA[Raspberry Pi all-in-one installer]]> + + 2016-05-22T16:06:00+00:00 + https://home-assistant.io/blog/2016/05/22/get-started-with-all-in-one-installer + + + + +[@jbags81]: https://github.com/jbags81 +[all-in-one installer]: /getting-started/installation-raspberry-pi-all-in-one/ +]]> + + + + <![CDATA[Video: How To Configure Home Assistant]]> + + 2016-05-12T00:09:00+00:00 + https://home-assistant.io/blog/2016/05/12/video-configuring-home-assistant + + + +]]> + + + + <![CDATA[Talk: Automating your home with Home Assistant (OpenIoT Summit)]]> + + 2016-05-06T14:09:00+00:00 + https://home-assistant.io/blog/2016/05/06/open-iot-summit-talk + + + + + +[Slides.]: https://docs.google.com/presentation/d/1P2WsmwGSSni4gAriY5IA0-m-FUGO1kno3gIkRYz20Kw/edit#slide=id.p +[we're hiring!]: http://www.appfolioinc.com/jobs-openings +]]> + + +
diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html new file mode 100644 index 0000000000..2a8551ac8c --- /dev/null +++ b/blog/categories/video/index.html @@ -0,0 +1,338 @@ + + + + + + + + + Category: Video - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Category: Video +

+
+
+
+

2016

+ + + + + + +

2015

+ +
+
+
+ +
+
+ + + + + + + diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml new file mode 100644 index 0000000000..766ee2ecff --- /dev/null +++ b/blog/categories/website/atom.xml @@ -0,0 +1,47 @@ + + + + <![CDATA[Category: Website | Home Assistant]]> + + + 2018-03-11T22:06:17+00:00 + https://home-assistant.io/ + + + + + Octopress + + + + <![CDATA[Updated documentation]]> + + 2016-04-17T23:09:00+00:00 + https://home-assistant.io/blog/2016/04/17/updated-documentation + + + + + <![CDATA[Website launched!]]> + + 2014-12-18T23:24:45+00:00 + https://home-assistant.io/blog/2014/12/18/website-launched + + + + diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html new file mode 100644 index 0000000000..c2b6beb797 --- /dev/null +++ b/blog/categories/website/index.html @@ -0,0 +1,229 @@ + + + + + + + + + Category: Website - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000000..0401789888 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,816 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.65: Rename entities, new filter sensor, UpCloud and Channels +

+
+ + + 20 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Release 0.65 has arrived and oh boy, is it awesome. First off, in case you have missed the previous release notes and announcements: Starting with this release, Home Assistant has dropped support for Python 3.4. The minimum supported version is now Python 3.5.3. If you are on Hass.io or Docker, you’ll automatically be running the latest and greatest. If you’re on an older Hassbian installation or did your own Linux setup you’ll need to upgrade to at least Python 3.5.3.

+

Naming entities

+

With the introduction of the entity registry in 0.63, Home Assistant is making sure that the same devices always receive the same entity IDs. This release is taking it a step further by allowing users to change the name of a device from the frontend. Changing the name will be instantly applied and overrides whatever name the device is given by the integration. If you want to switch back to the name from the integration, set the name to blank.

+

This feature is, just like the entity registry, only available for integrations that provide unique IDs for their entities. Adding this to each integration is still a work in progress.

+

+ Screencap of interaction with the UI to override the name of a light. + The new entity registry settings page in action. +

+

Filter sensor

+

The filter sensor is a new 2nd order sensor by @dgomes: it will consume data from a sensor entity and apply filters to it. For the initial implementation it comes with Low-pass, Outlier and Throttle filters. Expect more to be added in the future.

+
sensor:
+  - platform: filter
+    name: "filtered realistic humidity"
+    entity_id: sensor.realistic_humidity
+    filters:
+      - filter: outlier
+        window_size: 4
+        radius: 4.0
+      - filter: lowpass
+        time_constant: 10
+        precision: 2
+
+
+

+ Chart showing a humidity sensor with a lot of spikes and a smooth graph produced by the new filter sensor. + Graph showing both the input sensor and the output of the filter sensor. +

+

Light Group

+

We have had some discussion lately and realized that our current group component is very limiting. Extending it would probably lead to more confusion so we’ve decided to take a new approach: groups that are designed to be part of a specific component. The first one in this series comes at the hand of @OttoWinter: the group light (docs).

+

The group light creates a single light inside Home Assistant that is representing a group of lights. All commands will be forwarded and the state is a combination of all the lights.

+
light:
+  - platform: group
+    name: Cool Light Group
+    entities:
+      - light.amazing_light
+      - light.foobar
+      - light.sun
+
+
+

HomeKit

+

HomeKit got some more upgrades. We’ve added support for temperature sensors in Fahrenheit, alarm systems, switches and thermostats. Just a few releases more and we should be able to cover it all.

+

Optional words for the Conversation component

+

The conversation component has always been a great introduction to controlling your house by voice. There is no hotword detection or powerful language engine behind it, but it gives a great intro to what is possible. Starting with this release, it will get a little bit more powerful with the introduction of optional words. To mark a word optional, wrap it in square brackets: Change the light to [the color] {color}.

+
# Example configuration.yaml entry
+conversation:
+  intents:
+    LivingRoomTemperature:
+     - What is the temperature in the living room
+     - What is [the] living room temperature
+
+intent_script:
+  LivingRoomTemperature:
+    speech:
+      text: It is currently  degrees in the living room.
+
+
+

+ Screenshot of the frontend with the conversation panel open. + Have conversations with Home Assistant via the conversation component. +

+

New Platforms

+ +

Release 0.65.1 - March 10

+ +

Release 0.65.2 - March 10

+ +

Release 0.65.3 - March 11

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ 0.64: Over 1000 integrations! New: HomeKit, BMW, August. +

+
+ + + 18 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

🎉 1000 integrations, 1000 integrations, 1000 integrations! 🎉

+

That’s right, Home Assistant 0.64 is here! In case you have missed our latest Cloud update, the Home Assistant Alexa skill is now live in all regions and we’re working with Google in getting the Smart Home skill for Google Assistant approved. Exciting times!

+

In the meanwhile, some great new integrations have landed, including yet another car 🚗 This time it’s BMW.

+

This is going to be the last release that supports Python 3.4. Starting with the next release, the minimum version required will be Python 3.5.3. Learn more here.

+

HomeKit

+

Native HomeKit support has arrived! Thanks to @cdce8p It is now possible to expose some devices over HomeKit to allow control via Siri and other things speaking the HomeKit protocol. Initial support has been added for temperature sensors and cover devices. Expect more devices to be added soon.

+

Check the HomeKit docs

+

Hass.io UI update

+

Some of you already noticed that your Hass.io panel looks a bit different since this morning: @pvizeli pressed the red green button and the new UI got live. The Hass.io team (@frenck @ryanm101) is doing a great job in adding new features (like partial or encrypted snapshots) to the Hass.io backend and fixing bugs. However, those features where only added to the command line tools but not to the frontend.

+

That’s where @c727 and @ciotlosm jumped in. They made new features accessible via the frontend and improved the overall navigation.

+

We know that some features are still missing or broken, we are fixing this right now! Check this issue first before you report any issues related to the Hass.io panel, please.

+

Chart.js

+

The frontend is now rendering the graphs and charts using Chart.js thanks to the hard work by @fanthos. This means that you can now render all the charts without being connected to the internet!

+

August integration

+

Major new integration by @snjoetw: August locks and door bells! Lock and unlock from Home Assistant and detect when your doorbell is rung or senses motion. Awesome!

+

Cast bug fixes

+

@OttoWinter has crushed a bunch of bugs for our ChromeCast integration. Including that nasy Cast group discovery issue! He is working on some more improvements that should arrive soon, stay tuned. Awesome work Otto!

+

New Platforms

+ +

Release 0.64.1 - February 27

+ +

Release 0.64.2 - March 1

+ +

Release 0.64.3 - March 2

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Cloud Update +

+
+ + + Less than one minute reading time + + +
    +
  • Cloud
  • +
+
+ Comments +
+
+
+

We’re happy to announce that the Home Assistant skill is now available in Canada, UK, Germany, India and Australia! Check it out in the Amazon Alexa Skill store.

+

In the meanwhile, we have also been working on the Google Assistant integration. We passed the first verification and are now working with Google to do the final verification. Stay tuned!

+

In less than 2 weeks the open beta is about to expire. We’re still working on setting up the company and payment system so we can start accepting payments. Until we do, Home Assistant Cloud will remain free.

+
+
+
+
+
+

+ 0.63: Entity Registry, SQL Sensor, Mercedes cars +

+
+ + + 18 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Date set for dropping Python 3.4 support

+

As announced in October, we’re going to drop Python 3.4 support in 2018. We’ve now decided that in two releases, 0.65, the minimum Python version that will be supported is bumped to 3.5.3. This won’t impact most users. You are already fine if you’re using Hass.io, the latest Debian stable (Stretch) or a derivative of that (Raspbian, Ubuntu).

+

Entity Registry

+

This release introduces the entity registry. The entity registry allows integrations to reserve entity IDs. This means that we’ll automatically grant an entity ID to a device. It’s reserved so that no other device will ever get that entity ID. It also means that as a user, you will be able to customize the entity IDs for these devices.

+

For an integration to leverage the entity registry, it needs to define a unique ID for each of their entities. A unique ID is something that we can uniquely identify the device and that is not configurable. So a serial number and mac address are ok, IP addresses or names are not.

+

Examples of integrations that have unique IDs defined in this release are Z-Wave, Hue, Nest, LIFX, Sonos, Apple TV.

+

To update the entity ID that will be assigned to your device, update <config>/entity_registry.yaml and restart Home Assistant (reloading on the fly is planned for a future release).

+

The entity registry will assign an entity ID the first time that a device is seen. This should be the same entity ID as it always was before. If this is not the case, update the registration entity to change it back to the old entity ID.

+

We’re planning a lot of cool stuff around the entity registry. Stay tuned!

+

New Platforms

+ +

Release 0.63.1 - February 12

+ +

Release 0.63.2 - February 14

+ +

Release 0.63.3 - February 17

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Disabling Disqus comments +

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

Last week, starting with the release of Home Assistant 0.62, we switched to using our community forums for comments on our blog posts. By doing so, people are able to use their existing Home Assistant community accounts to comment on our blog posts and engage with one another. It has been easier for our users to stay in the loop with one less channel to keep track off.

+

Previously, we were using the free version of Disqus to power comments on our blog. After the switch, to preserve the old comments, we decided to keep Disqus active on the older blog post pages. However, today we decided to turn them off.

+

Today Disqus changed their advertisement strategy and turned on irrelevant graphical advertisement above and below the comment thread (screenshot). On a phone, it took so much screen real estate that it filled the whole page with an advertisement for weight loss milk. Previously, Disqus had advertisements in an unobtrusive way: showing suggested content a visitor might also be interesed in.

+

Today we have switched all blog posts to the new commenting system and are no longer serving Disqus comments. We are exploring ways to restore the old comments.

+
+
+
+
+
+

+ 0.62: MyChevy, Iota and Venstar Thermostat +

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Second release of the year and it’s buzzing on GitHub. This release we had 70 people contribute code. We’ve also managed to finally get our PR count below a 100 open PRs again. A lot of cool stuff still waiting to make it to a future Home Assistant release.

+

I want to give a shout out to @martinhjelmare and @frenck. Martin is doing an amazing job at code reviews and Franck has been kicking ass with Hass.io add-ons and keeping track of our documentation PRs. Thanks for this amazing work!

+

MyChevy

+

With this new integration by @sdague you are able to keep an eye on your Chevy Bolt EV. Keep track if your car is plugged in, the battery stats and the range it is currently capable of driving. Hip!

+

New Platforms

+ +

Release 0.62.1 - January 30

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Clarification about Emulated Hue +

+
+ + + 1 minute reading time + + +
    +
  • Public-Service-Announcement
  • +
+
+ Comments +
+
+
+

There are some misconceptions floating around about the future of the Emulated Hue component and I would like to set the record straight. The Emulated Hue component is not going to be removed nor will we ever remove any functionality from Home Assistant to push you to support the Home Assistant project by subscribing to the Community Support Package.

+

The reason people are concerned about the future of the Emulated Hue component is because of a poor choice of words in a deprecation message. This message was introduced a year ago when we deprecated the config option type: alexa for the Emulated Hue component:

+
+

Alexa type is deprecated and will be removed in a future version

+
+

That config option should never have been called type: alexa but instead have been called mode: legacy. If you think about it, why would emulating something even have different modes it emulates based on the consumer? That means that one of the two emulation modes is incorrect.

+

The old implementation was not 100% correct. It was correct enough to work with Alexa (the original target) but not with Google Home. When fixing Emulated Hue we added type: alexa to re-enable the old implementation so that people did not have to go through the trouble to re-add their Alexa devices. The option was deprecated to indicate that we would remove the incorrect emulation in the future. However, we forgot about actually following through with that.

+

The mistake we made was calling the correct mode google_home although it had nothing to do with Google Home. It confused people and they kept adding type: alexa to their configuration, triggering the deprecation warning.

+

The warning will be updated starting Home Assistant 0.62 and will also include a link to this blog post.

+

More info:

+ +
+
+
+
+
+

+ 0.61: Coinbase, Discogs, iGlo, Sochain +

+
+ + + 23 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Almost a 100 contributors to this release 🎉 That’s what you get when you skip a release. It’s a little late but “Happy New Year” and welcome to 0.61 the first release 2018.

+

This release contain some breaking changes. Please make sure that you check the section below if you are running into trouble.

+

Assistant configs

+

We made a mistake in the foundation of both the Google Assistant and Alexa integrations: they were storing their config inside customize. This is not the right place and we moved them to be under the components itself. See the breaking changes section on how to migrate.

+

Hass.io updates

+

@pvizeli has made it easier to create and restore snapshots for Hass.io by calling the new services. This way it will be easy to automate the creation of a snapshot at night. The updater has also been fixed and will now report on new versions of Hass.io that are available.

+

Improved loading speed

+

@amelchio has made startup of Home Assistant even faster. All service descriptions are now loaded only when needed by the frontend instead of during startup. This did mean that we had to enforce our service convention. We found a few platforms that didn’t follow this and they have been updated:

+
todoist.new_task -> calendar.todoist_new_task
+
+snapcast.snapcast_snapshot -> media_player.snapcast_snapshot
+snapcast.snapcast_restore -> media_player.snapcast_restore
+
+mopar.remote_command -> sensor.mopar_remote_command
+
+broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107
+broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107
+
+
+

New Platforms

+ +

Release 0.61.1 - January 16

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Thank You +

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

2017 is almost over and this means it’s time to do a little recap of our 2017. This was a great year for Home Assistant. Again, we were able to stick to our bi-weekly release cycle. There were 25 releases over the year and each release included the work of around 60 contributors.

+

We got 10.000 stars on GitHub, reached 10.000 commits in the main repo (over 4300 were made in 2017), got a Thomas-Krenn award, participated in Hacktoberfest, we have now almost 1000 integrations (the exact number is 938), we moved to Discord and we are up to over 2 million pageviews per month on our forum. Beside that we announced the Home Assistant cloud and have regular Home Assistant Podcasts.

+

We also do not want to forget to mention Hass.io and all the great Hass.io add-ons.

+

Uff, what a year…Thank you, dear community for being so helpful, supportive and awesome 🙇.

+

A very big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. You are the foundation for our success and all of you can be proud of yourself.

+

We would also like to thanks all the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thank you GitHub, TravisCI, CloudFlare, Discord and Discourse!

+

Some of us are taking a break and spending some quality time with family and loved ones.

+

Stay tuned for more Home Assistant awesomeness in 2018. We will keep the pace but first: Happy New Year!

+

– Home Assistant Organization

+
+
+
+
+
+

+ Introducing Home Assistant Cloud +

+
+ + + six minutes reading time + + +
    +
  • Announcements
  • +
+
+ Comments +
+
+
+

Today we’re introducing the next step in the Home Assistant saga: the Home Assistant Cloud. The goal of the Home Assistant Cloud is to bridge the gap between your local Home Assistant instance and services in the cloud while delivering the maximum possible security and privacy.

+

The first service that is supported via the Home Assistant Cloud is the Amazon Alexa Smart Home skill. This integration will allow you to control all your devices in Home Assistant via Amazon Alexa. You will be able to say “Alexa, turn on the kitchen lights” and your local Home Assistant will turn on the lights. Because Alexa talks to Home Assistant, it doesn’t matter what kind of lights they are! Anything that is linked to Home Assistant will work. IKEA lights, a 10 year old X10 switch or something you’ve made yourself. As long as Home Assistant can control it, you can control it via Alexa.

+

We have designed the Home Assistant Cloud with security in mind. When you activate the new Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet.

+

Integrations like Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger!

+

We are making the beta of the Home Assistant Cloud publicly available today. During the beta period the Home Assistant Cloud will be free to use. We are currently planning to run a beta till March 1, 2018 0:00 UTC. Once the beta ends, the Home Assistant Cloud will be part of our Community Support package which will run at $5 USD/month.

+

By subscribing to the Community Support package you will show your support for the Home Assistant organization, its projects and its community. It will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud.

+

So if you ever felt like donating money to support the development of Home Assistant and Hass.io: sign up for the Home Assistant Cloud!

+

Why not take donations?

+

With donations you have to convince people to keep donating and it will be hard to plan around the amount of available money. The biggest concern is what do you do when there is not enough money. We could shut down the servers or again depend on the wallets of our developers. We could run Wikipedia style advertisements for donating, but those are even more annoying than running advertisements.

+

Getting started

+

Upgrade Home Assistant to 0.60 and enable the cloud and config components:

+
# Example configuration.yaml entry
+cloud:
+config:
+
+
+

Now restart Home Assistant and navigate to the configuration panel. It will offer a new cloud section. Here you can create an account and login. Once logged in, your instance will connect to the cloud.

+

The next step is to configure Alexa. This can be done by enabling the Home Assistant skill for Alexa and link your Home Assistant cloud account.

+

Once you’re done, ask Alexa to discover devices (“Alexa, discover devices”) and you are all set to control them: “Alexa, turn on <device name>”.

+

See the Cloud component configuration to learn how to filter which devices get exposed to Alexa.

+

FAQ

+

Last updated: February 22, 2018

+

I thought the Home Assistant crew didn’t like the cloud?

+

You are right, we don’t! The Home Assistant Cloud is not an alternative to running your local Home Assistant instance. All control and automations are still running locally.

+

Instead, the Home Assistant Cloud is an extension of your local instance. It allows to communicate with companies that force us to communicate via a public available cloud endpoint like Amazon Alexa and Google Assistant.

+

Home Assistant Cloud is only used to route the messages to your local Home Assistant instance. All messages are processed locally.

+

(Some people have suggested we rename to Home Assistant Bridge to avoid this confusion)

+

Will Home Assistant and Hass.io remain open source?

+

Yes. Yes. Yes! Home Assistant is the work of hundreds of developers all working together in creating something amazing. The only thing that will require a subscription is the optional cloud functionality.

+

Where is the source code for the Alexa skill?

+

All messages are processed locally and so the Alexa skill code is part of the Home Assistant code. The Home Assistant Cloud only routes the messages to your local Home Assistant instance. This means that you can audit the source code to check all the things that the cloud can do:

+ +

What other features will come to the cloud?

+

We have a lot of ideas! We are not going to make any promises but here are some things that we’re looking into:

+
    +
  • Google Home / Google Assistant Smart Home skill
  • +
  • Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant.
  • +
  • Encrypted backups of your Hass.io data
  • +
  • Text to speech powered by AWS Polly
  • +
  • Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud.
  • +
  • IFTTT integration
  • +
  • Alexa shopping list integration
  • +
+

What countries are supported at launch?

+

As of February 2018, we are live in all countries that have Alexa except for Japan (which is under certification).

+

How is the connection made to the cloud?

+

The connection is made using a WebSocket connection over HTTPS. See the source here.

+

I think that the price is too high for what I get.

+

The Home Assistant Cloud functionality is a perk for becoming a supporter of the Home Assistant project. As a supporter you will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. You are not paying to just maintain the cloud servers.

+

The perks offered for being a supporter will also extend over time, as noted in this answer.

+

What will the Home Assistant organization do with the funds ?

+

The plan is to hire developers to work fulltime on Home Assistant. We have grown a lot in the last 4 years and the work load is pushing the limits of what our core developers can do. Open source burn out is very common (1, 2) and we want to avoid this by moving most organization and release chores to a paid position.

+

For more background on these topics, check out HASS Podcast 15.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/10/index.html b/blog/posts/10/index.html new file mode 100644 index 0000000000..25b3327d3c --- /dev/null +++ b/blog/posts/10/index.html @@ -0,0 +1,845 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ We have a Raspberry Pi image now +

+
+ + + 1 minute reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

Today we’re happy to announce our brand new Raspberry Pi image! It is based on Raspbian Lite combined with HASS so we decided to call it Hassbian.

+

This image comes pre-installed with everything you need to get started with Home Assistant right away.

+

To get started, check out the installation instructions in the getting started section or watch the latest video by BRUHAutomation:

+
+ +
+

Under the hood

+

It’s based on Raspbian Lite and generated with a fork of the same script that builds the official Raspbian images. For installation of HASS it follows the same install instructions as the Manual installation. Please note that this project has no association with the Raspberry Pi foundation or their projects.

+

On first boot the latest release of Home Assistant will be installed and can be reached after 3~5 minutes. Pre-installed on this image is the MQTT broker Mosquitto, Bluetooth support and settings for the homeassistant account to use the GPIO pins of the Raspberry Pi. Mosquitto is not activated by default.

+

As it is today there is no pre-compiled Z-Wave support but it can be installed by following the Getting started instructions for Z-Wave.

+

Happy Automating!

+
+
+
+
+
+

+ 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants +

+
+ + + six minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of 50 different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!

+

This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.

+

This all changed when @bbangert came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.

+

SleepIQ and OpenALPR

+

There now is support for two new super cool things: Beds and license plates. @technicalpickles created a SleepIQ component that let you monitor the sensor data of your bed. @pvizeli has added license plate recognition based on OpenALPR! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to @pvizeli for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).

+

Configuration validation

+

On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.

+

Delayed Release

+

As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: @bbangert, @turbokongen, @lwis, @kellerza, @technicalpickles, @pvizeli, @persandstrom and @joyrider3774. I am grateful to have all of you as part of the Home Assistant community.

+

Hide automation rules

+

Since 0.28 automation rules can be reloaded directly from the frontend. By default all automation rules are shown. If you want to hide an automation rule, use hide_entity: True.

+

All changes

+

+ +

Hotfix 0.29.1 - September 29

+ +

Hotfix 0.29.2 - September 29

+ +

Hotfix 0.29.3 - September 29

+ +

Hotfix 0.29.4 - September 30

+ +

Hotfix 0.29.5 - September 30

+ +

Hotfix 0.29.6 - October 1

+
    +
  • Fix segmentation fault (@bbangert) 🎉
  • +
  • Fix nested templates in data_template would incorrectly get cached (@balloob)
  • +
+

Hotfix 0.29.7 - October 5

+
    +
  • Fix handling SIGTERM and SIGHUP signals (fixes Systemd restart issues) (@pvizeli)
  • +
+

Breaking changes

+
    +
  • The template methods now and utcnow have been changed from variables to methods. To get the current time replace now with now().
  • +
  • yahooweather default name is now yweather. Also min and max temperature are now correctly called Temperature Min and Temperature Max.
  • +
  • ffmpeg is now a component for manage some things central. All ffmpeg_bin options have moved to this compoment from platforms.
  • +
  • Config has changed for X10 lights.
  • +
  • For Wink, make sure your config only contains the access token as in the docs.
  • +
  • Nest sensor ‘mode’ has been renamed to ‘operation_mode’
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+
+
+
+
+
+

+ 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats +

+
+ + + five minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s already time for 0.28 thanks to our super short release cycles. Now, it’ official…we hit 4000 stars on Github. That’s amazing. Sorry, not as amazing as all the stuff that was going on for 0.27 but still pretty awesome.

+

Reload automation rules

+

This release brings you a huge improvement of the automation and group handling. Both can be reloaded without a Home Assistant restart by calling their new reload services. The automations can be controlled directly from the frontend.

+

+ +

+

Raspberry Pi installation guide

+

Singleboard computers are very popular to run Home Assistant. To support this fact, the installation documentation for the Raspberry Pi devices was re-written to get users started as quickly as possible. @Landrash took the lead with on this tasks with help from @kellerza and @MartinHjelmare.

+

Climate and cover

+

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…

+

API documentation

+

The Home Assistant API Documentation is a great addition to the already existing 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.

+

Configuration validation

+

The validation of the configuration is still on-going. Approximately 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!

+

All changes

+

+
    +
  • Light: Added bitfield to Flux LED since we are supporting effects (@tchellomello)
  • +
  • Device tracker: Owntracks waypoint import (@pavoni)
  • +
  • Climate: A lot of bugfix (@turbokongen, @pvizeli, @djbanks)
  • +
  • Notify: Improvement of the title handling (@lwis)
  • +
  • RFXtrx: Sensor cleanup (@turbokongen)
  • +
  • Device tracker: Fix for BLE device tracker (@open-homeautomation)
  • +
  • Device tracker: Allow ‘None’ MAC addresses to be loaded from known_devices file (@kellerza)
  • +
  • Cover: Bugfixes (@turbokongen, @danielperna84)
  • +
  • Sensor: Support for displaying details about crypto currencies (@fabaff)
  • +
  • Device tracker: Support for automatic to track your vehicles (@Teagan42)
  • +
  • Devie tracker: Add exclude option to Nmap device tracker (@danieljkemp)
  • +
  • Device tracker: Improved login errors for Asus device tracker (@kellerza)
  • +
  • Sensor: Support for displaying the status of Xbox Live accounts (@mKerix)
  • +
  • Notify: Adding link_names for sending Slack message (@salt-lick)
  • +
  • Binary sensor: Add the occupancy sensor class (@robbiet480)
  • +
  • Fan: Add supoort for MQTT fans (@robbiet480)
  • +
  • Docs: Add Sphinx API doc generation (@bbangert)
  • +
  • Core: Allow reloading automation without restart (@balloob)
  • +
  • Sensor: Added scale and offset to the Temper sensor (@mKerix)
  • +
  • Sensor: New support for [Trend] sensor (@pavoni)
  • +
  • Device tracker: Keep looking for new BLE devices (@Bart274)
  • +
  • Switch: Added device state attributes and support for legacy firmware for D-Link switches (@LinuxChristian)
  • +
  • Sensor: Improve 1-Wire device family detection (@Ardetus)
  • +
  • Modbus: Update to be thread safe (@persandstrom)
  • +
  • Camera: FFMpeg is abale to get the images (@pvizeli)
  • +
  • Core: Reload groups without restart (@balloob)
  • +
  • Core: Fix remove listener (@balloob)
  • +
  • Sensor: Support for monitoring your battery on a Linux host (@fabaff)
  • +
  • Core: Add support for complex template structures to data_template (@pvizeli)
  • +
  • check_config: Improve yaml fault tolerance and handle border cases (@kellerza)
  • +
  • Core: Add additional template for custom date formats (@lwis)
  • +
  • Sensor: Support for getting stats from Pi-Hole systems (@fabaff)
  • +
  • Modbus: New write_registers Modbus service (@persandstrom)
  • +
  • Device tracker: Fix TP-Link Archer C7 long passwords (@snikch)
  • +
+

Hotfix 0.28.1 - September 12

+
    +
  • Fix: Simplisafe alarm control panels accept any string for code (@tchellomello)
  • +
  • Fix: Z-Wave would sometimes not detect all thermostats (@turbokongen)
  • +
  • Fix: Automatic device tracker when 2 or more cars are tracked (@teagan42)
  • +
  • Fix: Group ordering is now based on config again (@balloob, @kellerza)
  • +
+

Hotfix 0.28.2 - September 13

+
    +
  • Light - pilight: Fix send RF code (@DavidLP)
  • +
  • Recorder: Fix specifying SQLite (@pvizeli)
  • +
  • Wink: Fix garage door detection (@turbokongen)
  • +
  • Climate - Ecobee: Fix inverted high and low temperatures (@turbokongen)
  • +
  • Allow changing covers using scenes (@nvella)
  • +
  • Device tracker - Automatic: Fix polling (@teagan42)
  • +
+

Breaking changes

+
    +
  • OpenweatherMap entity IDs are now like sensor.owm_temperature. Previously they were like sensor.weather_temperature. Apologies for this change, but we needed to make OpenWeatherMap more generic now that we have many weather platforms.
  • +
  • Updates of configuration variables due to configuration check or alignment with other platforms. Please update your configuration entries according to the documentation: + +
  • +
  • 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.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat.

+
+
+
+
+
+

+ ESP8266 and MicroPython - Part 2 +

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
  • ESP8266
  • +
  • Micropython
  • +
+
+ Comments +
+
+
+

+So, part 1 of ESP8266 and MicroPython was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance.

+ Read on → +
+
+
+
+
+

+ 0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant +

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

This week’s blog post could only be possibly described by exactly one hashtag:

+

#Amazing

+

or maybe#supersized

+

Keep reading to see what #Amazing things we have in store for you this week 😄! And make sure you read all the way to the end, because I left a present down there for those committed few among you :)

+

But first…

+

Some general housekeeping

+

Paulus (@balloob) is on vacation in Europe this week, so you will all have to deal with me, Robbie (@robbiet480) for this release blog post. Don’t worry, Paulus will be back to tearing apart your pull requests in no time 😈.

+

Special thanks to my awesome helpers for this week’s release who are looking over my shoulder to make sure I’m crossing my t’s and dotting my i’s: @Teagan42, @infamy and @fabaff.

+

For my next trick, let’s hand out some…

+

Trophies

+

I felt that I had to 1-up Paulus (@balloob) somehow with his 500,000 pageviews stat he shared in the 0.26 blog post, so I pushed myself and our development community as a whole super hard the last two weeks to put a lot of love into Home Assistant to bring you not just one, but six #Amazing stats for this release. As of 0.27, we have now surpassed the following milestones:

+ +

In addition,

+ +

Now that we have that great news out of the way, onto this week’s release which is going to keep the #Amazing gravy train rolling right along and get to the stuff you all really are here for.

+

0.27

+

While this release is #Amazing, we had to break a few eggs (now you understand the title reference!) to make a beautiful omelette (using home automation obviously) so some platforms and components have needed to introduce breaking changes. Please make sure to read the Breaking Changes section below.

+

Hue Bridge Emulation

+

Thanks to @mgbowen we now have the functionality previously provided by @blocke’s ha-local-echo built right into Home Assistant! This means that for those of you with devices that either lack or have a subpar integration with Home Assistant (looking at you Amazon Echo) you can now have a better experience by having your Home Assistant pretend to be a Hue Bridge. Personally, I have used @auchter’s Haaska previously but found that it was slow to respond and sometimes failed entirely. With the new emulated_hue component, you can have local control of entities through Amazon Echo.

+

Notification improvements

+

We have some excellent upgrades to the notification system coming to you in 0.27, courtesy of me, @robbiet480.

+

HTML5 Push Notifications

+

This release adds support for HTML5 push notifications on Chrome/Firefox/Opera on both desktop and Android devices. This means that you can send a notification to your phone even when your Home Assistant is not open in your mobile browser. When using Chrome you can even include 2 action buttons so that you can control your Home Assistant from your phone’s lock screen, allowing you to do things like sound alarms or unlock your front door, all without leaving the notification. Thanks again to me (@robbiet480) and Paulus (@balloob) for all the hard work on this!

+

+ +

+

Notification Groups

+

Using the new notify group platform allows you to cut down a lot of duplicate automation logic by combining multiple notification platforms and targets into a single notify service. Check out the docs for more info.

+

target is no longer needed!

+

For platforms that support it, starting with the new HTML5 platform, any targets that are available will be exposed as individual services, so no more having to remember which targets to use. Please note that the existing services also still exist so you can keep using target if you wish.

+

Validate configuration before restarting Home Assistant

+

Ever restarted Home Assistant to test a configuration change just to find out there is a validation error? Well, not anymore! @kellerza has added a command line script that will validate your configuration as if you started Home Assistant.

+
$ hass --script check_config
+
+
+

Configuration validation

+

This release includes a big push on making sure all platforms contain proper configuration validation. This should help in getting your configuration right. Thanks to @fabaff, @pavoni, @pvizeli, @nkgilley for all the hard work on this, you all rock!

+

+ +

+

FFMpeg motion/noise sensing

+

It’s now possible to use FFMpeg to monitor a video stream and detect motion thanks to a new binary sensor platform by @pvizeli.

+

Component clean up - Thermostat & HVAC -> Climate. Rollershutter & Garage Door -> Cover.

+

Due to our wild growth we ended up with a few components that had a lot of overlapping functionality. @turbokongen took on the hard job on merging them. Thermostat and HVAC platforms are now combined under the new Climate component. Rollershutter and Garage Door platforms are now combined under the new Cover component. You can easily upgrade by just swapping out the name. For example replace thermostat with climate. The old components have been deprecated and will be removed in the near future.

+

A new fan component

+

Along with the new climate component, @Teagan42 and I (@robbiet480) decided we needed something simpler to just control a fan. Currently it has support for controlling Insteon fans. MQTT support will appear in 0.28.0. I tried to get it implemented before 0.27.0 but spent too long writing this blog post 😢.

+

All changes

+

+ +

Breaking changes

+
    +
  • Ecobee3 occupancy sensors have moved from sensor platform to binary sensor platform.
  • +
  • Forecast.io entity IDs are now like sensor.forecastio_temperature. Previously they were like sensor.weather_temperature. Apologies for this change, but we needed to make Forecast.io more generic now that we have many weather platforms.
  • +
  • The Loop Energy sensor configuration format changed slightly, please reformat based on the revised documentation.
  • +
  • The configuration for the SABnzbd sensor has slightly changed. The prefix type: is no longer required for monitored variables.
  • +
  • The IMAP sensor now uses username instead of user.
  • +
  • The NZBGet sensor has had so many changes I can’t list them all. Please refer to the documentation for more info.
  • +
+

Deprecations

+
    +
  • Using the thermostat and hvac components has been deprecated. Please migrate to the new climate component. (just change the component name, the configurations are compatible)
  • +
  • Using the rollershutter and garage_door components have also been deprecated. Please migrate to the new cover component. (just change the component name, the configurations are compatible)
  • +
+

Finishing up

+

Thanks all for sticking with me to the end. I’ll be taking over a lot of Paulus’s (@balloob) work while he is gone, but as I said, don’t worry because he’ll be back well before 0.28.0 comes out. Hopefully you didn’t find this jovial blog post too jarring from our standard style, I just wrote a lot of this at 2am after being awake for almost 20 hours, so I’m a little loopy hahaha 😴.

+

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 Discord or my Twitter, or even the Home Assistant Twitter. Did I mention we have a brand new Facebook page 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 Discord and in your pull request comments!

+

– Robbie

+

(p.s. To those of you that scrolled directly to the bottom to get your present, just know that you didn’t earn it like the others did. 😄)

+

Hotfix 0.27.1 - August 30

+
    +
  • Migrate APCUPSd to voluptuous (@fabaff)
  • +
  • Ecobee operation mode fix (@turbokongen)
  • +
  • update ha-ffmpeg version to 0.9 (@pvizeli)
  • +
  • Device tracker component & platform validation. No more home_range. (@kellerza)
  • +
  • Added option to use effect:random for Flux Led light bulbs (@tchellomello)
  • +
  • Use voluptuous for smtp (@pvizeli)
  • +
  • Upgrade sendgrid to 3.2.10 (@fabaff)
  • +
  • Upgrade TwitterAPI to 2.4.2 (@fabaff)
  • +
  • Fix bug in wemo discovery caused by voluptuous addition. (@pavoni)
  • +
  • Bug fix for asuswrt device_tracker. (@Danielhiversen)
  • +
  • Remove units for humidity in Wundeground sensor (@arsaboo)
  • +
  • Fix media_player descriptions and select_source (@MartinHjelmare)
  • +
  • Allow user to configure server id to perform speed test against (@Teagan42)
  • +
  • Bug fix for asuswrt device_tracker. (@Danielhiversen)
  • +
  • More Ecobee operation mode fixes (@turbokongen)
  • +
  • Map Modes to setpoint indexes (@turbokongen)
  • +
  • fix voluptuous and cover autodiscovery (@pvizeli)
  • +
  • Fixes wrong statevalue and problem with zwave setpoint (@turbokongen)
  • +
+

Hotfix 0.27.2 - September 3

+

home-assistant

+ +

home-assistant-polymer

+ +
+
+
+
+
+

+ Github-style calendar heatmap of device data +

+
+ + + Less than one minute reading time + + +
    +
  • How-To
  • +
  • IoT-Data
  • +
+
+ Comments +
+
+
+

Thanks to Anton Kireyeu we are able to present another awesome Jupyter notebook. I guess that you all know the graph which Github is using to visualize your commits per day over a time-line. It’s a so-called heatmap. If there are more commits, it’s getting hotter. The latest notebook is capable to do the same thing for your devices. To be more precise, for the hours your devices are home.

+

+ +Heatmap +

+
+
+
+
+
+

+ We Have Apps Now +

+
+ + + 11 minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

I have been working on a new subsystem to complement Home Assistant’s Automation and Scripting components. AppDaemon is a python daemon that consumes events from Home Assistant and feeds them to snippets of python code called “Apps”. An App is a Python class that is instantiated possibly multiple times from AppDaemon and registers callbacks for various system events. It is also able to inspect and set state and call services. The API provides a rich environment suited to home automation tasks that can also leverage all the power of Python.

+ Read on → +
+
+
+
+
+

+ 0.26: Foursquare, Fast.com, FFMPEG and GPSD +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

+

This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

+

+ +

Hotfix 0.26.1 - August 14

+
    +
  • Fix serial_pm config validation (@open-homeautomation)
  • +
  • Check for existence of system mode on Honeywell thermostats (@mKeRix)
  • +
  • Fix unknown unit of measurement for hvac and thermostat component (@turbokongen)
  • +
+

Hotfix 0.26.2 - August 15

+
    +
  • Fix Wemo: have PyWemo play nicely with the latest Requests (@pavoni)
  • +
+

Hotfix 0.26.3 - August 19

+
    +
  • Media Player cover art would not work when an API password was set. Thanks to @maddox for reporting it and @balloob for the fix.
  • +
+

Breaking changes

+
    +
  • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
  • +
+
# Configuration.yaml example
+homeassistant:
+  # 'metric' for the metric system, 'imperial' for the imperial system
+  unit_system: metric
+
+
+
+
+
+
+
+

+ Optimizing the Home Assistant mobile web app +

+
+ + + 11 minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

This blog post will go into detail about the recent performance optimizations that went into the Home Assistant front end. For people not familiar with the app, check out the demo and the source.

+

TL; DR: Don’t hack the framework, separate responsibilities, ship less, use service workers, use (future) web standards.

+

This year at Google I/O I saw Monica from the Polymer team talk about web components and performance. In her talk she mentions a mantra that they use in the Polymer team to make things fast: Do less and be lazy.

+

Do less and be lazy. It sounds so obvious and it took a while before it started to dawn on me. I think most of the code I write is pretty fast, but I don’t often stop to take a harder look at how and when it runs in practice. When do we need the result, can it be postponed?

+

And thus started my journey to take a critical look at how the Home Assistant app was working and how to make things faster. Below is the list of the different things that I did to make it fast.

+

I hope this list can be useful to other people, as a guide for optimizing their own apps or for avoiding pitfalls when building a new one.

+

The first thing to do is to measure. The Home Assistant front end is a mobile web app, so we shouldn’t measure this on a machine with 8 cores and gigabytes of ram but instead measure on devices you expect a mobile web app to run: phones. Below are two timelines recorded with Home Assistant 0.18.2 (pre-optimizations) and Google Chrome 53. On my Mac the app starts in 1400 milliseconds and on my Nexus 5x in ~6500 milliseconds (~4.5 times slower!).

+

+ Timeline of loading the front end in Home Assistant 0.18.2 +

+

Although the app takes 6500 milliseconds to load on my phone, it would perform well afterwards. Still, that initial load is unacceptable. You expect to open an app on your phone and be able to use it, quickly. After I applied all the changes described below, I managed to reduce startup time to 900 milliseconds (-35%) on my Mac and 2400 milliseconds (-63%) on my Nexus 5x. Check out the demo here.

+

+ diagram showing old and new loading times next to one another + Timeline of loading the front end in Home Assistant 0.26 +

+ Read on → +
+
+
+
+
+

+ Laundry Sensors with NodeMCU and Home Assistant +

+
+ + + four minutes reading time + + +
    +
  • User-Stories
  • +
+
+ Comments +
+
+
+

This is a guest post by Home Assistant user and contributor Nolan Gilley.

+

Today I’ll show you how I used Home Assistant, a NodeMCU (ESP8266), and a couple of accelerometers to automate our laundry room. This is a rewrite of an old post where I did the same thing using a Moteino & Raspberry Pi. This version only requires a NodeMCU.

+

We have an older washer and dryer which doesn’t have any form of notification when cycles complete. Home Assistant was the obvious solution, I just needed to create sensors for the washer and dryer. I tried using sound sensors but found them unreliable. I ended up using an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect whether they’re open or closed. I connected the accelerometers and reed switches to an NodeMCU which will relay the data to my MQTT broker.

+

+ + Block diagram of schematic +

+ Read on → +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/11/index.html b/blog/posts/11/index.html new file mode 100644 index 0000000000..a54075ccf7 --- /dev/null +++ b/blog/posts/11/index.html @@ -0,0 +1,639 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.25: Custom frontend panels, Jupyter notebooks, DirecTV. +

+
+ + + four minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

When Home Assistant started the focus has always been on making a great developer experience. Allowing anyone to add support for their favorite devices to Home Assistant easily. This focus has been a great success since we now have 339 components and platforms!

+

Starting with this release, we are extending our extensibility to the frontend. Starting this release, any component can add its own page to the frontend. Examples of this today are the map, logbook and history. We are looking forward to all the crazy panels you’ll come up with!

+

We have also seen an exciting trend of people starting to visualize their Internet of Things data using Jupyter Notebooks, which are a great way to create and share documents that contain code, visualizations, and explanatory text. In case you missed it, the blog post by @kireyeu shows an advanced usecase while our Notebooks in the Home Assistant Notebooks repository cover the basics.

+

This release also includes a bunch of new integrations, among others three new media player platforms. This means that today Home Assistant can talk to 26 different media players!

+

The brand-new iFrame panel component allows you to add other websites as pages in the Home Assistant frontend. They will show up in the sidebar and can be used the same way as you open the frontend in your browser but all within one view.

+

I would like to do a shoutout to @fabianhjr. He has started adding typing data (PEP484) to the Home Assistant core. This will help us identify issues before they are released.

+

+ +

Hotfix 0.25.1 - August 1

+
    +
  • Light - Z-Wave: Bring back delayed value update behavior (@jnewland)
  • +
  • Recorder: Properly close session after execute (@kellerza)
  • +
  • Media Player - Kodi: No longer block startup if connecting to wrong port (@shoekstra)
  • +
  • Downgrade voluptuous to 0.8.9 as it blocked the upgrade for some (@balloob)
  • +
+

Hotfix 0.25.2 - August 2

+
    +
  • Hotfix to make sure Z-Wave locks work again. Thanks to @tobiebooth for the quick fix.
  • +
+

Breaking changes

+
    +
  • Google Voice SMS notification support was removed.
  • +
+
+
+
+
+
+

+ ESP8266 and MicroPython - Part 1 +

+
+ + + six minutes reading time + + +
    +
  • How-To
  • +
  • ESP8266
  • +
  • Micropython
  • +
+
+ Comments +
+
+
+

+The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The documentation covers a lot of ground. This post is providing only a little summary which should get you started.

+

Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for download.

+ Read on → +
+
+
+
+
+

+ IoT Data Exploration with Jupyter Notebooks +

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
  • IoT-Data
  • +
+
+ Comments +
+
+
+

This is the first blog post by Anton Kireyeu. A new contributor to Home Assistant who will focus on exploring and visualizing Home Assistant data.

+

As we learned in the recent blog post by Fabian, all operational data of your Home Assistant application is stored locally and is available for exploration. Our first steps were querying data with the DB Browser for SQLite, exporting the data extract as a CSV file and graphing in LibreOffice. But what else can be done with this data and what tools are there available?

+

This post will help you get set up using a few popular data scientist tools to allow you to locally process your data:

+
    +
  •  Pandas: an open source tool for data analysis for Python
  • +
  •  matplotlib: a Python plotting library
  • +
  •  Jupyter notebook: application for creation and sharing of documents containing live code, visualizations and explanatory text
  • +
+

+ +One of the graphs created with this tutorial. +

+

TL; DR: Use this Jupyter Notebook to visualize of your data

+ Read on → +
+
+
+
+
+

+ Visualize your IoT data +

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
  • IoT-Data
  • +
+
+ Comments +
+
+
+

+

The history component is tracking everything that is going on within Home Assistant. This means that you have access to all stored information about your home. Our history is not a full-fledged graphical processing and visualization component as you may know from systems and network monitoring tools. The current limitation is that you only can select a day for a visual output of your information and not a period. Also, there is no possibility to drill down on a specific entity.

+

This blog post will show you ways to export data for reporting, visualization, or further analysis of automation rules.

+ Read on → +
+
+
+
+
+

+ 0.24: SQLAlchemy, KNX, Join by Joaoapps, and SimpliSafe. +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for Home Assistant 0.24 and it’s full of new integration for your Home. It contains some structural changes to our history which requires action from your end, so please keep reading.

+

MapQuest discontinued their free and direct tile access by Monday, July 11, 2016. With CARTO we found a very cool and suitable solution. They allow us to use their tile for the map. Thank you, CARTO.

+

Roy Hooper did an amazing job migrating the history support from being tied to SQLite to use the ORM SQLAlchemy instead. This means that you can now use any SQL backend for the history. So besides SQLite you can now databases like MySQL or PostgreSQL. However, this does require that you install SQLAlchemy and run a command to migrate your existing history over. We tried to make the process as seamless as possible by introducing a new command line script:

+
$ pip3 install SQLAlchemy
+$ hass --script db_migrator --config /path/to/config
+
+
+

You can omit the --config option if you use the default configuration directory. Run the script with --help to get more options.

+

+ +

Hotfix 0.24.1 - July 21

+

Quick hot fix after we found a bug in the migrator where it wouldn’t work with a database in a non-standard location. Thanks to @n8henrie and @AlucardZero.

+

Breaking changes

+
    +
  • Migrating existing databases (see above).
  • +
  • The APCUPSd Sensor was updated. This will need that you modify your configuration.yaml file.
  • +
  • Entity IDs of Verisure locks will change. This is a one time change but should improve readability.
  • +
+
+
+
+
+
+

+ PocketCHIP running Home Assistant +

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

+Over a year ago I participated in the kickstarter campaign for “CHIP - The World’s First Nine Dollar Computer” by Next Thing Co.. I went for the PocketCHIP because of the idea. Display, built-in storage (thus no need for SD cards), battery-powered, and a keyboard are pretty nice features. Last week a package arrives…

+ Read on → +
+
+
+
+
+

+ 0.23: Envisalink, Homematic, HDMI-CEC and Sony Bravia TV +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for Home Assistant 0.23 and it’s full of goodies. It’s also the release that bumps us over a 1000 tests and to 94% test coverage! Also our install issues on the Raspberry Pi and Synology have been resolved.

+

This release brings support for two new ecosystems: Envisalink and Homematic. We can now also control your TV via HDMI using HDMI-CEC (which works on the Pi!) and another cool feature is the persistent notifications which allow you to add a notification to the frontend till dismissed.

+

Wink support has been dramatically improved by migrating to the PubNub API. This allows Wink to push changes from their system to Home Assistant. This change came just in time as somehow our Wink integration was causing a lot of requests to their servers. Thanks to Wink for letting us know so we could solve it instead of blocking us.

+

On the config side, you can now store your passwords in your OS keyring or just in a standalone file. We also got a new service to reload the core config so no reboots needed anymore after changing customize settings!

+

+ +

Breaking changes

+
    +
  • Homematic thermostat configuration has changed and now depends on the new Homematic component.
  • +
+

Hotfix 0.23.1 - July 2

+
    +
  • Bump PyVera to 0.2.13 to fix traceback and pyvera thread dying related to bug (@rhooper)
  • +
  • HTTP - SSL: Check for OP_NO_COMPRESSION support before trying to use it (@AlucardZero)
  • +
  • Wink: Downgraded pubnub to work around pycryptodome conflicts (@w1ll1am23)
  • +
+

FAQ

+
    +
  • elevation: was introduced to the configuration for weather/sunrise data. For existing configurations add the value shown in the warning [homeassistant.config] Incomplete core config. Auto detected elevation: 665 to your configuration.yaml file.
  • +
+
+
+
+
+
+

+ Using USB webcams with Home Assistant +

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

+In the past month I was thinking about ways to integrate USB webcams into Home Assistant again. The main reason was that this would give those devices a second life and enable one to benefit from low-cost video surveillance. There are a couple of options available like pygame or SimpleCV but I never finished something. With the Local File camera platform by Landrash and motion you could integrate a local USB webcam with a few very easy steps.

+

In this blog post I am using a Fedora 24 (will most likely work on other distributions too) installation with Home Assistant 0.22.1 on a Foxconn nT-330i with an old Logitech QuickCam Orbit AF and a Logitech HD Webcam C270. As a start only the Quickcam is used. No multi-camera setup for now.

+ Read on → +
+
+
+
+
+

+ 0.22: Pandora, BT Home Hub 5 and local file camera. +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for the 0.22 release. This was a pretty rough release cycle and we had to issue two hot fixes for our core improvements. But it seems now that all is good and a lot of people have reported that their installs are faster than ever and the occasional quirks no longer occur.

+

We are aware that our new web stack has caused issues installing Home Assistant on ARM-based platforms. This sadly includes the Raspberry Pi and Synology NAS systems. We’re working on getting to a better solution. For Raspberry Pi, the All-in-One installer will take care of everything for you. We’re working on updating our standalone Raspberry Pi installation guide.

+

There are two cool things that I want to highlight in this release. The first is Pandora support. This is based on the CLI player called pianobar. This means that your machine running Home Assistant can be connected to the speakers and provide your house with tunes.

+

+ +

+

Another cool addition is the local file camera. This seems very basic at first but will allow you to generate a graph with your favorite 3rd party graphing tool and display it on your Home Assistant dashboard. We’re looking forward to see what you can do with this!

+

+ +

Breaking change

+
    +
  • The new Netatmo support caused us to change how Netatmo are configured. It’s now done via it’s own component.
  • +
+
netatmo:
+    api_key: API_KEY
+    secret_key: SECRET_KEY
+    username: username
+    password: password
+
+
+

Hotfix 0.22.1 - June 20

+
    +
  • Insteon Hub lights will load again
  • +
+
+
+
+
+
+

+ Home Assistant at PyCon 2016 +

+
+ + + two minutes reading time + + +
    +
  • Video
  • +
+
+ Comments +
+
+
+

It’s been already almost two weeks ago that a few of the Home Assistant developers headed towards Portland for PyCon 2016 - the conference about everything Python. We were there to learn all the nifty tricks to make our code better but most of all, to talk Home Automation.

+

+ Home Assistant developers + Couple of Home Assistant devs. Left to right: Paulus (@balloob), Alex (@infamy), Ryan (@rmkraus). +

+

On Monday I (Paulus) gave a presentation about Home Assistant to an audience of over 400 people! It was a bit scary at first but after a couple of minutes it went all great including some great questions afterwards. Slides can be found here and the talk is embedded right below:

+
+ +
+

One of the things that really impressed me was the amount of people that approached us to tell how they love Home Assistant, how it has replaced their previous solution, how they enjoyed contributing to Home Assistant and how helpful our community is. It makes me proud of Home Assistant and especially our community.

+ Read on → +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/12/index.html b/blog/posts/12/index.html new file mode 100644 index 0000000000..5962922374 --- /dev/null +++ b/blog/posts/12/index.html @@ -0,0 +1,639 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.21: Improved Web and support for EnOcean, LIRC and Osram Lightify +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for release 0.21 and it contains massive core improvements: replacement of our home grown HTTP stack with a standardized WSGI stack. This will improve performance, speed, security and make future development of advanced HTTP features a breeze.

+

This work was driven by the amazing Josh Wright. His knowledge, high standards and drive for security has helped improve Home Assistant a lot ever since he started helping out. Hip hip hurray for Josh!

+

Alright, time for the changes:

+

+ +

Breaking Changes

+
    +
  • Our work in the WSGI stack is not fully done yet. We still have a minor issues where retrieving the error log in the about screen can raise an encoding error
  • +
  • The API used to incorrectly accept a JSON body with form-url-encoded headers. Our cURL examples on the website used to be wrong and have been updated.
  • +
  • Make sure your configuration.yaml file contains frontend: to serve the frontend
  • +
+

Hotfixes 0.21.1 and 0.21.2

+

We released two hotfixes to address some issues that couldn’t wait till the next release.

+
0.21.1 - June 12
+
    +
  • Add eventlet to base requirements to resolve some installation issues (@balloob)
  • +
  • GTFS will filter out routes in the wrong direction (@imrehg)
  • +
  • Recover from rare error condition from LIRC (@partofthething)
  • +
  • Z-Wave autoheal will no longer raise exception (@balloob)
  • +
  • Alexa will now execute the script before making reply (@balloob)
  • +
  • Fix MJPEG camera streaming (@stjohnjohnson)
  • +
  • Fix frontend in older browsers (@balloob)
  • +
  • Fix history in more info dialog being cut off (@balloob)
  • +
+
0.21.2 - June 15
+
    +
  • Fix input_select calling the set_option service again when changed (@persandstrom)
  • +
  • Fix more info dialog not being able to open on Safari (@balloob)
  • +
  • Add support for OPTIONS HTTP command to get CORS working (@JshWright)
  • +
+
+
+
+
+
+

+ Community Highlights +

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
  • Video
  • +
+
+ Comments +
+
+
+

Our community is amazingly helpful and creative. If you haven’t been there yet, make sure to stop by our chat room and come hang out with us. In this blog post I want to highlight a few recent awesome projects and videos from the community.

+

SceneGen - cli for making scenes

+

SceneGen is a new command line utility developed by Andrew Cockburn that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states.

+

Videos

+

Nick Touran has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up a blog post and has put out a video showing the new integration, very cool!

+
+ +
+

Ben from BRUH Automation has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks.

+
+ +
+

Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS.

+
+ +
+
+
+
+
+
+

+ iBeacons: How to track things that can’t track themselves (part II) +

+
+ + + eight minutes reading time + + +
    +
  • iBeacons
  • +
  • Device-Tracking
  • +
  • OwnTracks
  • +
+
+ Comments +
+
+
+

This post is by Home Assistant contributor Greg Dowling.

+

In Part 1 I talked about using iBeacons to improve presence tracking. In part 2 I’ll talk about how to track things like keys that can’t track themselves by using iBeacons.

+

Tracking things using iBeacons

+

In the first part I mentioned that iBeacons just send out I’m here packets, and we used this to trigger an update when your phone came close to a fixed beacon.

+

But beacons don’t have to be fixed.

+

Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an I’m here message then it knows the beacon is close.

+

If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn’t have any tracking technology itself.

+

So if you put an iBeacon on your keys or in your car - then you can track them.

+

+ + Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective! +

+ Read on → +
+
+
+
+
+

+ Raspberry Pi all-in-one installer +

+
+ + + Less than one minute reading time + + +
    +
  • Video
  • +
+
+ Comments +
+
+
+

We are always hard at work at the virtual Home Assistant headquarters to make it easier for you to get started with Home Assistant. That’s why @jbags81 recently introduced the all-in-one installer. It allows you to get up and running with a complete Home Assistant setup by entering one line of code into your Raspberry Pi running Raspbian Jessie:

+
wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh;
+
+
+

This feature wouldn’t be complete if it wasn’t accompanied by a new video by Ben from BRUH Automation. The video shows how to install Raspbian Jessie on your Raspberry Pi and use the new installation script to get a full Home Assistant system up and running.

+
+ +
+
+
+
+
+
+

+ 0.20: Roku, Last.fm, AWS, Twilio +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Tons of new supported things in 0.20.

+ +

Breaking changes

+
    +
  • Asus WRT will now default to SSH with Telnet being an option
  • +
+
device_tracker:
+  platform: asuswrt
+  protocol: telnet
+
+
+
+
+
+
+
+

+ Why we use web components and Polymer +

+
+ + + three minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

I’ve been planning to write this post for a while now as we get questions like this a lot: “Why does Home Assistant use Polymer? Why not React, Redux and what not?”

+

It’s understandable, Polymer is quite the underdog in the world of web frameworks. A corporate backer does not guarantee popularity or an active community and this shows in the number of projects using Polymer.

+

Still, we use Polymer and it’s awesome. To explain why, I’ll be referencing the React workflow quite a bit, as they do a lot of things right, and show how it is done in Polymer.

+

Polymer gives us components for the web, just like React, but based on web standards: web components, CSS variables. These standards don’t have wide browser support yet but it’s being implemented by every major browser: It’s the future. For now they are being polyfilled and that works just fine but in the future the Home Assistant web app will be able to run native in the browsers == fast.

+ Read on → +
+
+
+
+
+

+ Video: How To Configure Home Assistant +

+
+ + + Less than one minute reading time + + +
    +
  • Video
  • +
+
+ Comments +
+
+
+

Ben from BRUH Automation authors a lot of great video’s about how he is using Home Assistant and how you can get started with it too. The video below will walk you through how to configure Home Assistant. Enjoy!

+

Make sure to subscribe to his YouTube channel for more Home Assistant video’s.

+
+ +
+
+
+
+
+
+

+ 0.19: Empowering scripts and Alexa +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic.

+

Scripts are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including from_state !). Passing data to script entities is available by passing the data to the script services.

+
automation:
+  trigger:
+    platform: mqtt
+    topic: some/notify/topic
+  action:
+    service: notify.notify
+    data_template:
+      message: 
+
+automation 2:
+  trigger:
+    platform: state
+    entity_id: light.hue
+  action:
+    service: notify.notify
+    data_template:
+      message:  is now 
+
+
+

Entity Namespaces allow you to influence the entity ids for a specific platform. For example you can turn light.living_room into light.holiday_home_living_room with the following config:

+
light:
+  platform: hue
+  entity_namespace: holiday_home
+
+
+ +

Deprecations

+
    +
  • Conditions in automations should now specify which condition to use with condition: instead of platform:. For example condition: state.
  • +
  • RFXtrx has a new config format.
  • +
+

Old RFXtrx config format:

+
  devices:
+    123efab1:
+      name: My DI.0 light device
+      packetid: 1b2200000890efab1213f60
+
+
+

New RFXtrx config format:

+
  devices:
+    1b2200000890efab1213f60:
+      name: My DI.0 light device
+
+
+
+
+
+
+
+

+ Talk: Automating your home with Home Assistant (OpenIoT Summit) +

+
+ + + Less than one minute reading time + + +
    +
  • Talks
  • +
  • Video
  • +
+
+ Comments +
+
+
+

At the beginning of April I gave a talk about Home Assistant at the OpenIoT summit in San Diego. I talk about the Home Assistant architecture and explain how to get started integrating your devices. Big thanks to my employer AppFolio (we’re hiring!) for letting me attend. Slides.

+
+ +
+
+
+
+
+
+

+ iBeacons: Making presence detection work better (part I) +

+
+ + + nine minutes reading time + + +
    +
  • iBeacons
  • +
  • Presence-Detection
  • +
  • OwnTracks
  • +
+
+ Comments +
+
+
+

This post is by Home Assistant contributor Greg Dowling.

+

In 2013 Apple introduced iBeacons: a class of Bluetooth low energy (LE) devices that broadcast their identifier to nearby devices, including most smartphones. At first glance it’s hard to imagine why they might be useful. In this two part blog I’ll try and explain why they are useful and how you can use them with Home Assistant.

+

The reason I started using iBeacons was to improve presence detection (and I think that’s the case with most people) so that’s what I’ll discuss in part 1. In part 2 I’ll talk about using iBeacons to track devices that can’t track themselves.

+

Using beacons to improve OwnTracks location data

+

When you use OwnTracks in standard major move mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient!

+

Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon.

+ Read on → +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/13/index.html b/blog/posts/13/index.html new file mode 100644 index 0000000000..ad023aa0d5 --- /dev/null +++ b/blog/posts/13/index.html @@ -0,0 +1,665 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.18: Bluetooth, LG WebOS TVs and Roombas. +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for 0.18. This release cycle is 2 days shorter than usual as I’ll be traveling to Europe. This also means that it can take some more time before you get feedback on PRs.

+

Since the last release we have moved all Home Assistant source code etc into its own organization on GitHub. We’re growing up! This sadly did cause us to have to move all Docker images. Check the breaking changes section for more info.

+

+

+ +

Breaking changes

+
    +
  • We have migrated our datetime format to be iso8601. This will only impact you if you are consuming the date times from the API directly. You can ignore this if you are just using Home Assistant via configuration and the frontend.
  • +
  • The constant TEMP_CELCIUS is now correctly called TEMP_CELSIUS. Old one is deprecated and will eventually be removed.
  • +
  • The location of the Docker image has changed. There was no possibility for us to keep maintaining the old image (as it was bound to the GitHub repo under my name) or to make a redirect. So if you are using the Home Assistant Docker image, change it to run homeassistant/home-assistant:latest for the latest release and homeassistant/home-assistant:dev for the latest dev version.
  • +
  • MySensors received two big changes that will cause you to update your configs. See component page for new example config. +
      +
    1. All MySensors entity IDs are different! There was an error in the naming that caused MySensors to append node ID and child ID instead of separating them with an underscore. This has been fixed but will cause all your MySensors entity IDs to change. This is a one time breaking change.
    2. +
    3. The second change is that we now support the TCP ethernet gateway. This is causing a slight change to the config format: you have to change port: under gateways to device:.
    4. +
    +
  • +
+
+
+
+
+
+

+ To Infinity and Beyond 🚀 +

+
+ + + two minutes reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+
+

After 2.5 years I think we can proudly say: Home Assistant is a success. I write we because Home Assistant is no longer a one-person side project. It has become the side project of many people who spend countless hours on making Home Assistant the best home automation software out there. To acknowledge this we migrated the repositories from being under my name to be under our own organization on GitHub.

+

On our journey we’ve reached many noteworthy milestones:

+
    +
  • #1 on HackerNews
  • +
  • Featured on ProductHunt
  • +
  • Trending repository on GitHub
  • +
  • 3000 stars on GitHub
  • +
  • 1.5 million page views on our website
  • +
  • Speaker at OpenIoT Summit 2016
  • +
+

All these accomplishments are a nice pat on the back but our journey is far from over. There are a lot of challenges ahead if we want to become the go to solution for home automation for everyone.

+

Until now the focus has been on making a platform that developers love to use. A platform that is simple but customizable. A platform that is both powerful and reliable. But most important: a platform that is local and open. Home Assistant does a great job at all these things.

+

There will be some major challenges ahead of us to target groups other than developers. Easy installation and easy configuration being the #1. I’m sure that we’ll be able to eventually achieve these goals. I can’t say yet how or when. As with everything Home Assistant, we’ll take tiny steps, gathering feedback along the way to make sure we’re solving the right problems.

+

I am confident that we will get there because we are set up for success: we have a robust architecture, high test coverage and an active community of world class developers and users. On top of that, we use Python which allows us to move fast and tackle complex problems in elegant ways. It is so easy to learn that it allows any programmer, experienced or not, to contribute support for devices and services. It’s as simple as filling in the blanks.

+

I would like to put out a big thank you to all our contributors who make Home Assistant what it is today. It doesn’t matter if it is form of code, documentation or giving support in our chat room or forums. You. all. rock.

+

Cheers to the future!

+

Paulus

+
+
+
+
+
+

+ Updated documentation +

+
+ + + 1 minute reading time + + +
    +
  • Website
  • +
+
+ Comments +
+
+
+

One of the main complaints that we receive is something along the lines “I read that X is possible yet I am unable to find it on the website.”. This post is to announce that we have taken the first steps to improve it by revamping the getting started and developers sections. It’s still a work in progress but we now have a solid foundation to build on for the future 👍.

+

Our documentation has been going through various phases. Initially it was just the README in our GitHub repository. I discovered Jekyll and GitHub pages in December 2014 and created home-assistant.io. I more or less broke the README in 5 pages and called it a website. Back then we had a whopping 11 components.

+

As Home Assistant grew, so did our documentation. Fabian Affolter does an amazing job in making sure there is at least a documentation stub for each new feature that lands. And that’s quite a feat given our frequent releases! But despite all the efforts, the documentation outgrew our existing documentation organization.

+

Today it has been almost 1.5 years since we started the website. We now have 264 components and platforms under our belt and have been honored with 1.5 million page views ✨. And hopefully we now also have documentation that our community deserves.

+

Finally, if you see some content that could use more clarifcation or is outdated, don’t hesitate to use the ‘Edit in GitHub’ link that is present on each page.

+
+
+
+
+
+

+ 0.17: Onkyo, Panasonic, GTFS and config validation +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we’ve been hard at work to introduce config validation! Especially huge thanks to @jaharkes for his hard work on this. Config validation is still in its early stages. More common platforms and components have been added but we didn’t do everything yet.

+

When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We’re looking into options to make it more clear - it is a work in progress.

+

Another big thing is the addition of GTFS support. You probably don’t know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend.

+

+ +

Breaking changes

+

As of now we are not aware of any breaking changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to execute_service in their script configs. This should be service.

+
+
+
+
+
+

+ Static website +

+
+ + + 1 minute reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

The frontend of Home Assistant is served with the help of a local web server. If you have customized your installation you already use this functionality. The content of your folder www in your Home Assistant configuration directory (.homeassistant) is available under /local (eg. http://localhost:8123/local for an index.html file).

+

But there is more you can do! You can not only host images for customization there but HTML files or even web applications including CSS and Javascript.

+

+ +

+ Read on → +
+
+
+
+
+

+ Your hub should be local and open +

+
+ + + 1 minute reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+
+

Today the news spread that Google will be shutting down the Revolv hubs. And shutting down here doesn’t mean they stop selling or supporting them - no, they are sending an update to each hub to turn your perfectly fine home automation hub into a useless piece of plastic. The fact that this seemed like a good idea by Google astonishes me. If anything, they should have gone the same route as ninjasphere: open it all up and let people decide on the fate of their own hub.

+

I’ve said it before but I’ll repeat it again:

+
+

The cloud should be treated as an extension to your smart home instead of running it.

+
+

Your hub should not be affected when your internet breaks down or the company that sold you your hub goes out of business. It should work locally so that it can continue to work even long after the vendor goes out of business or decides to kill it. Preferably, your hub should also be open so that the community can take over development after the vendor stops caring.

+

Unless you can afford losing a product here and there, be cautious when buying IoT products that depend on the cloud from companies that are not well established. The chances are high that they go bankrupt or get acquired and closed. This however is easier said than done as Gartner predicts that by 2017, 50 percent of IoT solutions will originate in startups that are less than three years old.

+
+
+
+
+
+

+ 0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Party people, 0.16 is here! The big thing with this release is that we have completely removed the barrier to get started by MQTT by being able to launch an embedded MQTT server: hbMQTT. Just add mqtt: to your config and a broker is launched and connected with Home Assistant. See the documentation for more info.

+

Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see breaking changes section at bottom for this!).

+

Rock on.

+

+ +

Breaking changes

+
    +
  • +

    Automation: support for old deprecated config has been removed

    +
  • +
  • +

    Tellstick configuration has changed

    +
  • +
+
tellstick:
+  signal_repetitions: X
+
+
+
    +
  • Vera configuration has changed
  • +
+
vera:
+  vera_controller_url: http://192.168.1.161:3480/
+  # Optional to exclude devices - this is a list of vera device ids
+  exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99]
+  # Optional to import switches as lights - this is a list of vera device ids
+  lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87]
+
+
+
+
+
+
+
+

+ 0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance. +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Two weeks has past so here is 0.15! We have been focussing a lot on quality. Making sure the system is more stable and reliable. I usually try to highlight one cool thing in the release notes but this release has 4 exciting announcements!

+
    +
  • @fabaff has upgraded the codebase to follow the PEP257 documentation standard.
  • +
  • @partofthething has migrated us to use the main Python Open Z-Wave library instead of our forked version.
  • +
  • To make our automations more powerful, @persandstrom added the option to use templates to dynamically create service calls. This works for automation, Alexa, universal media player, template switch. Learn more.
  • +
  • @MartinHjelmare has upgraded our scene support to now support all built-in services and components.
  • +
+

Besides bug fixes, this release also brings:

+

+ +
# Example using templates for service and data in service call.
+# Works for automation, Alexa, universal media player, template switch.
+automation:
+  - trigger:
+      - platform: state
+        entity_id: switch.bathroom
+    action:
+      service_template: >
+        {% if is_state('switch.bathroom', 'on') %}
+          switch.turn_on
+        {% else %}
+          switch.turn_off
+        {% endif %}
+      data_template:
+        entity_id: switch.{{ states('input_select.is') }}
+
+
+

Breaking Changes

+
    +
  • Media Player: Attributes to call service play_media has been renamed to +media_content_type and media_content_id, to match the corresponding media +player state attributes. This change affects automations, scripts and scenes.
  • +
+
+
+
+
+
+

+ 0.14: Steam, D-Link smart plugs and Neurio Energy Sensors +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s been another two weeks which means it’s time for release: 0.14!

+

+ +

+ + Camera feeds are now directly embedded in the frontend. +

+

Backwards incompatible changes

+
    +
  • Component: Simple Alarm has been removed. Still available in the cookbook.
  • +
  • Script: Turning on a script that is already on is now a no-op instead of skipping current delay.
  • +
  • Wemo switches now have to be set up via the main Wemo component
  • +
  • Command line platforms for switch, sensor and binary_sensor have been renamed to command_line.
  • +
  • The rfxtrx sensors entity ids will incur a one time change to move to a stable format. See the docs for more details.
  • +
+
+
+
+
+
+

+ Community Highlights +

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
  • Video
  • +
+
+ Comments +
+
+
+

Home Assistant land has been busy and a lot of people have been creating awesome stuff. We’ve added a cookbook section to the website full of examples how you can automate different things. Make sure you take a look and share your own recipes too!

+

Home automation demo by Part of the Thing

+
+ +
+

Haaska - Alexa Skill Adapter for Home Assistant

+

Haaska allows you to control lights, switches, and scenes exposed by your Home Assistant instance using an Amazon Echo. This is different from our own Alexa component because it will teach the Amazon Echo directly about the devices instead of teaching it to talk to Home Assistant. It will not allow you to use custom sentences but it will allow you to skip the ‘Ask Home Assistant’ part when giving commands:

+
    +
  • “Alexa, set kitchen to twenty percent”
  • +
  • “Alexa, turn on evening scene”
  • +
  • “Alexa, turn off bedroom light”
  • +
+

Haaska on GitHub

+

Integrating Home Assistant with HomeKit

+

Contributor Maddox has created a plugin for HomeBridge, an open-source HomeKit bridge. This will allow you to control your home using Siri on your Apple devices. HomeBridge has recently restructured so you’ll have to install the plugin separately with the homebridge-homeassistant npm package.

+

Example config.json entry to load Home Assistant:

+
"platforms": [
+    {
+        "platform": "HomeAssistant",
+        "name": "HomeAssistant",
+        "host": "http://192.168.1.50:8123",
+        "password": "xxx",
+        "supported_types": ["light", "switch", "media_player", "scene"]
+    }
+]
+
+
+

HomeBridge on GitHub +HomeBridge Home Assistant Plugin

+

Custom alarm system with Home Assistant

+

User thaijames describes in the Home Assistant forums how he has created his own NFC-based alarm system using Home Assistant, DIY components and Garfield dolls.

+

+ +Hold your NFC tag against the belly of Garfield to unlock the alarm. +

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/14/index.html b/blog/posts/14/index.html new file mode 100644 index 0000000000..085e72c602 --- /dev/null +++ b/blog/posts/14/index.html @@ -0,0 +1,626 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Multi-room audio with Snapcast, Mopidy, and Home Assistant +

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

Would you like to listen to music in every room in your home, controlled from one source? Then multi-room audio is for you.

+

Multi-room audio can be achieved by having a computer attached to speakers in every room. On each computer, services run to play and/or control the audio. With this DIY approach, the kind of computer and speakers is very much up to you. It could be your desktop computer with attached powered speakers, your HTPC hooked up to your TV and receiver, a Raspberry Pi with Amp or DAC, or even an Android device.

+

You’ll need two key software packages, besides Home Assistant. The first is Mopidy, a music server that can play local files, or connect to streaming music services like Spotify. The second is Snapcast, which enables synchronized audio streaming across your network. Both can be integrated into Home Assistant. Each room audio device will run an instance of the Snapcast client, and optionally a Mopidy instance. Your server will run a special instance of Mopidy and the Snapcast server.

+

Finally, you also need a player to control Mopidy. Any MPD-compatible player will work, and there are several Mopidy-only web-based options available. On Android, Remotedy is particularly nice since you can access multiple Mopidy instances in one place.

+

Home Assistant will provide device status, and volume control for each room. If you want to play music in all your rooms (on all your clients), access the server instance of Mopidy. If you want to play music only in a specific room, access that specific Mopidy instance. If you’re using a web UI for Mopidy, you can add links to each instance in Home Assistant with the weblink component.

+

+ +

+ Read on → +
+
+
+
+
+

+ 0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

The focus of 0.13 was on test coverage, big cheers to @rmkraus for his hard work on this. I’m proud to announce that we’ve hit the 90% test coverage of the core + important components. A big milestone for the project.

+

+ + Examples of the new input_select and weblink components. +

+

Not only did we gain a lot of test coverage, we also attracted a lot of new developers that contributed a variety of components and platforms:

+

+ +
+
+
+
+
+

+ Classifying the Internet of Things +

+
+ + + seven minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+
+

The core of home automation is knowing what’s going on. The faster we know about a state change, the better we can serve the user. If you want to have your lights to turn on when you arrive at home, it doesn’t help if it only knows about it after you’ve already opened the door and manually (!!) turned on the light.

+

Each smart device consists of the ‘normal’ device and the piece that makes it ‘smart’: the connectivity. The connectivity part of a device can consists of either control, state or both.

+

State describes what a device is up to right now. For example, a light can be on with a red color and a medium brightness.

+

Control is about controlling the smart device by sending commands via an API. These commands can vary from configuring how a device works till mimicking how a user would interact with a device. A media player can allow skipping to the next track and a sensor could allow to configure its sensitivity or polling interval.

+

The Home Assistant APIs are setup to be as convenient as possible. However, a network is always as weak as it’s weakest link. In our case these are the integrations. Take for example controlling a light that does not report state. The only state Home Assistant can report on after sending a command is the assumed state: what do we expect the state of the light to be if the command worked.

+

We want our users to get the best home automation experience out there and this starts with making sure they have devices that work well with Home Assistant. That’s why we will start applying the following classifiers to our integrations:

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassifierDescription
Assumed State + We are unable to get the state of the device. Best we can do is to assume the state based on our last command. +
Cloud Polling + Integration of this device happens via the cloud and requires an active internet connection. Polling the state means that an update might be noticed later. +
Cloud Push + Integration of this device happens via the cloud and requires an active internet connection. Home Assistant will be notified as soon as a new state is available. +
Local Polling + Offers direct communication with device. Polling the state means that an update might be noticed later. +
Local Push + Offers direct communication with device. Home Assistant will be notified as soon as a new state is available. +
+

The background to how we got to these classifiers can be read after the break.

+ Read on → +
+
+
+
+
+

+ Smarter SmartThings with MQTT and Home Assistant +

+
+ + + nine minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
+
+ Comments +
+
+
+

This is a guest post by Home Assistant users Jeremiah Wuenschel and St. John Johnson.

+

So you own a SmartThings Hub. You probably bought it when you were looking to get into the whole Home Automation hobby because it worked with pretty much everything and offered you the ability to automate anything. After a week of ownership, you realized that building dashboards and automating required writing way more Groovy then you expected. Then one day you were browsing reddit and discovered the amazingness that is Home Assistant! A solution that offered dashboards, graphs, working support for Nest, and REAL EASY automation!

+

You spent your weekend getting everything set up, showing it off to your significant other, but in the end you got stumped when it came to integrating with all your existing SmartThings toys. What do I do now? Should I buy another hub? Should I just buy a Z-Wave stick?

+

That’s where we came in. We wanted a solution that can bridge the awesomeness of Home Assistant with the SmartThings hub that works with almost everything.

+

+ +

+ Read on → +
+
+
+
+
+

+ 0.12: Insteon, LIFX, Twitter and ZigBee +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

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) 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 how to get started.

+

+ +Example of the new views in the frontend. Learn more. +

+

+ +

Backwards incompatible changes

+
    +
  • Nest config has moved from thermostat to the Nest component.
  • +
  • Entity IDs for Z-Wave devices are now generated in a deterministic way causing all IDs to change starting this release. This is a one time change. (Changed again in 0.31)
  • +
+
+
+
+
+
+

+ Perfect Home Automation +

+
+ + + five minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+
+

People often ask me about my vision for Home Assistant. Before I can describe where I want to go with Home Assistant, I should first talk about how home automation would look in my ideal world. This will be the aim of this post. I’m not going to focus on protocols, networks or specific hubs. That’s all implementation details. Instead, this post will focus on what is most important: the interaction between the users and their home.

+

You should not have to adapt to technology.

+

When people start using home automation, they always experience home control first: being able to control devices in new ways using a phone or computer. They believe the future is now and their app will be their remote for their lives. They only focus on what they are getting, not on what they are losing. You install some light bulbs and all of a sudden you are no longer able to use the light switches. You’ll arrive at home at night and have to pull out your phone, open the app, let it connect and finally you’ll be able to turn on the light. All while turning the light on could have been a switch away.

+

Yes, you can solve this with presence detection. What if your phone runs out of battery? You’ll have to resort to the switch again.

+

If you find that using your new home devices is cumbersome, the promise of home automation technology has failed you. Your lights should work with both a switch (or button) at the entrance of your room and via presence detection. Honestly, there are hardly any valid use cases for being able to control lights from your phone except for showing off.

+ Read on → +
+
+
+
+
+

+ 0.11: Extended support for DIY solutions +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

First release of 2016 and we are on 🔥! The main repository has passed 2500 ⭐ on GitHub (2596 ⭐ as of now). This release also has a record number of 20 contributors all working on improving and extending Home Assistant. With the continued growth, I am very excited to see what 2016 will bring us 🤘.

+

+ +

Backwards incompatible changes

+ +
+
+
+
+
+

+ 0.10: Amazon Echo, iCloud, Dweet.io, Twitch and templating support! +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Alrighty, it’s time for Home Assistant 0.10. A lot amazing things have changed and sadly we also had to introduce a bunch of backwards incompatible changes. I would like to give a big shoutout to Philip Lundrigan (@philipbl) who put a lot in effort in helping the migration to move towards using templates for a wide variety of platforms.

+
+ +
+

+ + Read on → +
+
+
+
+
+

+ Set up encryption using Let's Encrypt +

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

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

+

+ +

+ Read on → +
+
+
+ +
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/15/index.html b/blog/posts/15/index.html new file mode 100644 index 0000000000..3fbced2464 --- /dev/null +++ b/blog/posts/15/index.html @@ -0,0 +1,552 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Activating Tasker tasks from Home Assistant using command line switches +

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

+In this tutorial I will explain how you can activate Tasker tasks from Home Assistant command line switches. We are going to set up a switch that when toggled will make your Android device say either “On” or “Off”.

+

You could also do this with the automation component instead so whenever you put your house to sleep mode for example your Android device will open up Google Play Books or the Kindle app ready for you to read as well as dimming your lights, but this tutorial is all about the switches.

+ Read on → +
+
+
+
+
+

+ InfluxDB and Grafana +

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

+The InfluxDB 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 database.

+ Read on → +
+
+
+
+
+

+ 0.9: Rollershutters, locks, binary sensors and InfluxDB +

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s been a few weeks but we managed to polish a nice new release of Home Assistant for y’all!

+

+ +

To update, run pip3 install --upgrade homeassistant.

+

+ +

+
+
+
+
+
+

+ Community Highlights +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
  • Video
  • +
+
+ Comments +
+
+
+

From time to time we come along things that are worth sharing with fellow Home Assisters. Here a list of some cool stuff from last week:

+

First is the public beta of Let’s Encrypt. Let’s Encrypt is a new certificate authority that is free, automated and open. This means that it will now be very easy to secure your connection to Home Assistant while you are away from home. W1ll1am23 has written up a guide how to get started.

+

The next thing is a show-off of some of the cool stuff people do with Home Assistant. This is miniconfig talking to Home Assistant using the Amazon Echo!

+
+ +
+

And last but not least, Midwestern Mac did a microSD card performance comparison for the Raspberry Pi. If you’re using a Pi, make sure to check it out!

+
+
+
+
+
+

+ Survey November 2015 +

+
+ + + two minutes reading time + + +
    +
  • Survey
  • +
+
+ Comments +
+
+
+

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 and last week PyPI 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.

+ Read on → +
+
+
+
+
+

+ 0.8: Honeywell Thermostats, Orvibo switches and Z-Wave switches and lights +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

We have all been hard at work to get this latest release ready. One of the big highlights in this release is the introduction of an extended iconset to be used in the frontend (credits to @happyleavesaoc for idea and prototype). To get started with customizing, pick any icon from MaterialDesignIcons.com, prefix the name with mdi: and stick it into your customize section in configuration.yaml:

+
homeassistant:
+  customize:
+    switch.ac:
+      icon: 'mdi:air-conditioner'
+
+
+

Breaking changes

+
    +
  • Any existing zone icon will have to be replaced with one from MaterialDesignIcons.com.
  • +
  • LimitlessLED light services require colors to be specified in RGB instead of XY.
  • +
+

Changes

+

+ +
+
+
+
+
+

+ 0.7.6: Amazon FireTV, Radiotherm thermostats +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been squashed, test coverage increased to 85% and thanks to the hard work by @fabaff and myself the component section on the website has gotten a complete revamp.

+

Changes

+

+ + Read on → +
+
+
+
+
+

+ Report the temperature with ESP8266 to MQTT +

+
+ + + seven minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
  • ESP8266
  • +
+
+ Comments +
+
+
+

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 Assistant can pick it up.

+

+ +Picture of the final setup (+ 2 LED for decoration) +

+

+ +Home Assistant will keep track of historical values and allow you to integrate it into automation. +

+ Read on → +
+
+
+
+
+

+ 0.7.5: Blinkstick, SNMP, Telegram +

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

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

This release also includes some new platforms (because they keep coming!):

+

+ +

Also, the media player was extended by @maddox to support the play media command. This has been implemented for the iTunes platform.

+
+
+
+
+
+

+ Home Assistant goes geo with OwnTracks +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

A few weeks have past and it is time again for another release: version 0.7.4. This time we’re very glad to be able to introduce brand new integration with OwnTracks to allow tracking of people on a map. The geo support consists of three different parts:

+ +

We have added a new getting started section to get up and running.

+

+ +Map in Home Assistant showing two people and three zones (home, school, work) +

+

Ofcourse more things happened in the last three weeks. I’m moving away from my usual long post to a short summary of highlights:

+

+ +

+ +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/16/index.html b/blog/posts/16/index.html new file mode 100644 index 0000000000..8fdff0acb1 --- /dev/null +++ b/blog/posts/16/index.html @@ -0,0 +1,534 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Alarms, Sonos and iTunes now supported +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s like someone opened a can of rock solid developers and emptied it above our chat channel because it exploded with great conversations and solid contributions. Featured in release 0.7.3: Sonos, iTunes, Alarm component and Automation upgrade.

+

See GitHub for more detailed release notes.

+

Migration note: the scheduler component has been removed in favor of the automation component.

+

Sonos + Sonos support has been added by @rhooper and @SEJeff. Home Assistant is now able to automatically detect Sonos devices in your network and set them up for you. It will allow you to control music playing on your Sonos and change the volume.

+

iTunes and airplay speakers + @maddox has contributed support for controlling iTunes and airplay speakers. For this to work you will have to run itunes-api on your Mac as middleware.

+
# Example configuration.yaml entry
+media_player:
+  platform: itunes
+  name: iTunes
+  host: http://192.168.1.50
+  port: 8181
+
+
+ Read on → +
+
+
+
+
+

+ Remote Monitoring with Glances +

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

+Inspired by a feature requests I started looking into the available options to do monitoring of remote hosts. The feature request is about displaying system information in a similar way than the systemmonitor sensor does it for the local system. After a while I started to think that it would be a nice addition for a small home network where no full-blown system monitoring setup is present.

+ Read on → +
+
+
+
+
+

+ Home Assistant meets IFTTT +

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Today we announce the release of Home Assistant v0.7.2 which includes brand new support by @sfam to integrate with IFTTT. IFTTT stands for If This, Then That and is a webservice that integrates with almost every possible webservice out there. Adding Home Assistant to this mix means Home Assistant can connect with all via IFTTT.

+

It is now possible to disable your irregation system if it is going to be cloudy tomorrow or tweet if your smoke alarm goes off.

+

+ +

+

Head over to the setup instructions to get started with IFTTT. Click the read more button for some example recipes.

+ Read on → +
+
+
+
+
+

+ Using MQTT with Home Assistant +

+
+ + + eight minutes reading time + + +
    +
  • How-To
  • +
  • MQTT
  • +
+
+ Comments +
+
+
+

MQTT support was added to Home Assistant recently. The MQTT component will enable you to do all sort of things. Most likely you will use it to communicate with your devices. But Home Assistant doesn’t care where the data is coming from or is limited to real hardware as long as there is MQTT support. This means that it doesn’t matter if the data is coming from a human, a web service, or a device.

+

A great example is shown in a Laundry Automation post in this blog.

+

This post will give you a small overview of some other possibilities on how to use MQTT with Home Assistant.

+ Read on → +
+
+
+
+
+

+ 0.7: Better UI and improved distribution +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

As Home Assistant is gaining more and more users we started to feel the pain from not having a proper release mechanism. We had no version numbering and required users to checkout the source using Git to get started. On top of that, as the number of devices that we support keeps raising, so did the number of dependencies that are used. That’s why we decided to change the way we roll. From now on:

+
    +
  • Each release will have a version number, starting with version 0.7. This was chosen because it shows that we have been around for some time but are not considering ourselves to be fully stable.
  • +
  • Each release will be pushed to PyPi. This will be the only supported method of distribution.
  • +
  • Home Assistant is available after installation as a command-line utility hass.
  • +
  • The default configuration location has been moved from config in the current working directory to ~/.homeassistant (%APPDATA%/.homeassistant on Windows).
  • +
  • Requirements for components and platforms are no longer installed into the current Python environment (being virtual or not) but will be installed in <config-dir>/lib.
  • +
+

A huge shout out to Ryan Kraus for making this all possible. Please make sure you read the full blog post for details on how to migrate your existing setup.

+

And while Ryan was fixing distribution, I have been hard at work in giving Home Assistant a face lift. We already looked pretty good but lacked proper form of organization for users with many devices. The new UI moves away from a card per entity and has cards per group and domain instead. The demo has been updated so give it a spin.

+

+ + + + Screenshots of the new UI +

+ Read on → +
+
+
+
+
+

+ Laundry Automation: insight and notifications +

+
+ + + five minutes reading time + + +
    +
  • User-Stories
  • +
+
+ Comments +
+
+
+

This is a guest post by Home Assistant user and contributor Nolan Gilley.

+

In our house, laundry has been a struggle for quite some time. Our washer and dryer both lack a buzzer which leads to forgotten laundry, and stinky mess that needs to be rewashed. I decided to create a solution by monitoring the washer and dryer myself with some cheap electronics.

+

As an avid user of Home Assistant, I decided it would be the perfect application to manage the UI and notification system. Now all I needed was a way to monitor the washer and dryer. I tried using sound sensors but found them unreliable. I ended up opting for an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect if the doors are open or closed. I connected the accelerometers and reed switches to a Moteino, an arduino clone with an RF transceiver. The Moteino can perform the logic to figure out which state the appliances are in and wirelessly communicate that data with another Moteino that is connected via serial to my Raspberry Pi. The Raspberry Pi reads the serial data and repeats it over MQTT for Home Assistant to use. This is great because I don’t have to run Home Assistant on the Raspberry Pi. I can run it on a faster machine and point the MQTT component to my Raspberry Pi.

+

After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn’t get tripped by the washer or vice versa. In the plot below you can see the acceleration in the x direction for the accelerometer connected to the washing machine. It’s easy to see when the washing machine is in operation here. I used the same technique for the dryer’s accelerometer.

+

+ + + + Graph showing the accelerometer data +

+ Read on → +
+
+
+
+
+

+ Verisure devices and modern TP-Link routers now supported +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running git pull from the Home Assistant directory.

+

This release is a major milestone in our test coverage as we’ve crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded.

+

As we didn’t want to just push out bug fixes, this release includes a few additions:

+
    +
  • Support for modern TP-Link routers like the ArcherC9 line has been contributed by @chrisvis.
  • +
  • Improved support for MQTT topic subscriptions has been contributed by @qrtn
  • +
+

Verisure Support + Home Assistant support to integrate your Verisure alarms, hygrometers, sensors and thermometers has been contributed by @persandstrom.

+
# Example configuration.yaml entry
+verisure:
+  username: user@example.com
+  password: password
+  alarm: 1
+  hygrometers: 0
+  smartplugs: 1
+  thermometers: 0
+
+
+
+
+
+
+
+

+ MQTT, Rasperry Pi, Logitech Squeezebox and ASUSWRT routers now supported +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documenting all the various components.

+

MQTT Support + The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+  # All the other options are optional:
+  port: 1883
+  keepalive: 60
+  qos: 0
+  username: your_username
+  password: your_secret_password
+
+
+ Read on → +
+
+
+
+
+

+ IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported +

+
+ + + four minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Another month has passed and some great new features have landed in Home Assistant. This month release has been made possible by balloob, ettisan, fabaff, gyran, jamespcole, michaelarnauts, miniconfig and rmkraus.

+

This release includes some architectural changes by me. The first is that the frontend is now based on a NuclearJS 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.

+

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.

+
# Example configuration.yaml entry
+camera:
+  platform: generic
+  name: my sample camera
+  username: MY_USERNAME
+  password: MY_PASSWORD
+  still_image_url: http://194.218.96.92/jpg/image.jpg
+
+
+

+To update to the latest version, run scripts/update. Please report any issues on GitHub. +

+ Read on → +
+
+
+
+
+

+ Release notes for June 10, 2015 +

+
+ + + five minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Wow, almost a month has gone by since the last release and this release is packed. The biggest part of this release is probably one that you won’t notice: the frontend has been upgraded from Polymer 0.5 to the brand new released Polymer 1.0. Polymer has been declared stable by the Google overlords which will allow us to expand functionality that was waiting for this moment to arrive.

+

This release sets a record for the amount of people involved: 8! Andythigpen, Jamespcole, Azelphur, Fabaff, Dutchy-, Fbradyirl, wind-rider and ettisan, thanks a lot for your contributions!

+

A big improvement has been brought this release by wind-rider. He took the time to revive the Chromecast support and started improving the media player integration. This triggered other people to join in resulting in a revamped media player experience and support for the Music Player Daemon.

+

+ Example of the new media player cards +

+

+To update to the latest version, run scripts/update. Please report any issues on GitHub. +

+ Read on → +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/17/index.html b/blog/posts/17/index.html new file mode 100644 index 0000000000..fb702e5da5 --- /dev/null +++ b/blog/posts/17/index.html @@ -0,0 +1,562 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Release notes for May 14, 2015 +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Almost three busy weeks have past since the last release. We used this time to finally make the overhaul to use UTC as the internal date time format. We added a bunch of test coverage in the process to make sure the transition went smoothly. Pleas see the blog post about the UTC refactor for backwards incompatible changes.

+

This release includes a significant startup boost for the frontend and a fix for Wemo discovery after their latest firmware upgrade.

+

I would like to give a big shout out to our newest contributor fabaff for taking the time to improve the documentation.

+

+To update to the latest version, run scripts/update. Please report any issues on GitHub. +

+ Read on → +
+
+
+
+
+

+ UTC & Time zone awareness +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

I have recently merged code to refactor Home Assistant to use only UTC times internally. A much needed refactor. I’ve added some extra test coverage to time sensitive parts to ensure stability. The code has been live in the dev branch for the last 9 days and will be soon released to the master branch.

+

From now on all internal communication will be done in UTC: time changed events, datetime attributes of states, etc. To get the current time in UTC you can call homeassistant.util.dt.utcnow(). This is a timezone aware UTC datetime object. homeassistant.util.dt is a new util package with date helpers.

+

There is also such a thing as local time. Local time is based on the time zone that you have setup in your configuration.yaml. Local times should only be used for user facing information: logs, frontend and automation settings in configuration.yaml.

+

Setting up your time zone

+

Setting up a time zone happens in configuration.yaml. If you have no time zone setup, it will be auto detected using the existing detection code using freegeoip.net. You can find a list of compatible time zones on Wikipedia.

+
homeassistant:
+  time_zone: America/Los_Angeles
+
+
+

Compatibility

+

The changes to the code are mostly backwards compatible. The old hass.track_time_change and hass.track_point_in_time use now internally two new methods: hass.track_utc_time_change and hass.track_point_in_utc_time. The usage of the old methods have not changed and should be backwards compatible.

+

This refactor adds a new migration for the database adding a utc_offset column to events and states. This information is currently not used but can prove useful in the future when we start analyzing the historical data.

+

Backwards incompatible stuff

+

All built-in components have been upgraded. The following list is only for people that run custom components:

+
    +
  • hass.track_time_change and hass.track_point_in_time will now return a time zone aware datetime object. Python does not allow comparing a naive with an aware datetime object.
  • +
  • the sun attributes for rising and setting are now in UTC. The methods sun.next_rising(hass) and sun.next_setting(hass) are backwards compatible, just be careful if you used to read the raw attributes.
  • +
  • the API sends all times in UTC. If you use anything else besides the frontend to talk to HA, make sure it handles it differently.
  • +
+
+
+
+
+
+

+ Release notes for April 25, 2015 +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s been a month since the latest update and a lot has happened again. Here a quick overview of the new things.

+

Line Charts +James has upgraded the history in the frontend to support line graphs. Line graphs will be shown for any entity that has a unit of measurement. The line graphs will also be shown in the more info card of an entity. See the demo for a live example.

+

+ +

+

ISY994 hub support + Ryan has contributed support to integrate the ISY994 hub by Universal Devices. This allows you to integrate your X10/Insteon sensors, switches and lights.

+

He has created an extensive getting started guide which can be found on the ISY994 component page.

+
# Example configuration.yaml entry
+isy994:
+
+
+

Logbook + I (Paulus) have added a logbook component. The logbook component provides a different perspective on the history of your house by showing all the changes that happened to your house in chronological order. See the demo for a live example. +

+
# Example configuration.yaml entry
+logbook:
+
+
+ Read on → +
+
+
+
+
+

+ Release notes for March 22, 2015 +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

A new version of Home Assistant has just been pushed out. It contains bugfixes contributed by jamespcole, andythigpen, trainman419 and me. It also adds a bunch of great new features:

+

Script +Andythigpen has contributed a script component. This allows users to create a sequence of service calls and delays. Scripts can be started using the service script/turn_on and interrupted using the service script/turn_off. A separate page has been added to the frontend to see the status of your scripts.

+
# Example configuration.yaml entry
+script:
+  # Turns on the bedroom lights and then the living room lights 1 minute later
+  wakeup:
+    alias: Wake Up
+    sequence:
+      - alias: Bedroom lights on
+        execute_service: light.turn_on
+        service_data:
+          entity_id: group.bedroom
+      - delay:
+          # supports seconds, milliseconds, minutes, hours, etc.
+          minutes: 1
+      - alias: Living room lights on
+        execute_service: light.turn_on
+        service_data:
+          entity_id: group.living_room
+
+
+ Read on → +
+
+
+
+
+

+ Release notes for March 11, 2015 +

+
+ + + two minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It has only been a little over a week since Theodor introduced YAML support for Home Assistant but so much has already happened that it is time for a summary of recent changes. Before mentioning the highlights I want to thank andythigpen, jamespcole and theolind for numerous bug fixes, enhancements and new contributions. Thanks!

+

Monitor local resources.
+Theodor has contributed a new sensor platform to allow you to monitor disk usage, memory usage, CPU usage and running processes. This platform has superseded the process component which is now considered deprecated.

+
# Example configuration.yaml entry
+sensor:
+  - platform: systemmonitor
+    resources:
+      - type: disk_use_percent
+        arg: /home
+      - type: memory_free
+      - type: process
+        arg: kodi
+
+
+

Experimental Z-Wave support
+There is now experimental support for connecting Z-Wave networks using a Z-Wave USB stick. Right now it only integrates Z-Wave sensors into Home Assistant. Our goal is to get this tested by more people before adding support for other Z-Wave devices.

+

The new component is built on top of python-openzwave. This package is currently not distributed on PyPi so we’ve added a script scripts/build_python_openzwave to install it on your machine. Alternatively you can use the Docker image which is ready to go.

+

The development was done using an AEON Z-Wave USB stick and an AEON Z-Wave MultiSensor.

+
# Example configuration.yaml entry
+zwave:
+  usb_path: /dev/ttyUSB0
+
+
+

Voice control
+An initial version of voice control for Home Assistant has landed. The current implementation consists of two parts.

+

The first part is a component called conversation that exposes the service conversation/process. This service is capable of processing text and translating them into commands for devices. For now it will only support commands in the format of Turn <Friendly Name> <on/off>.

+

The second part is an upgrade to the frontend to use the speech-to-text in Chrome to allow users to speak commands. If you’re using Chrome, you can test this out in the demo.

+
# Example configuration.yaml entry
+conversation:
+
+
+
+
+
+
+
+

+ New logo for Home Assistant +

+
+ + + Less than one minute reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+
+

It is well known that you are either a good programmer or a good designer. It’s rare you’ll meet someone that is both. That’s why it wasn’t surprising to anyone that the logo that I made was mediocre — at best. Luckily, Jeremy Geltman has come to the rescue and contributed a brand new logo for Home Assistant.

+

The new logo follows Googles material design spec. It uses the blue color that Home Assistant uses in the interface and it comes in two versions: a high detailed version (for homescreen icon etc) and a simple version (for favicon etc).

+

+ +The old logo, the new detailed logo and the new simple logo. +

+
+
+
+
+
+

+ Home Assistant moving to YAML +

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Home Assistant is now using YAML for it’s configuration file. YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

+

The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

+

The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

+

Users of Home Assistant should migrate as the old configuration format is deprecated.

+
+
+
+
+
+

+ Streaming updates +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

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

+

+ Read on → +
+
+
+
+
+

+ Looking at the past +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Ever since the launch of Home Assistant you have been able to track the state of your house. But the view has always been limited to what the current state is. Not what it was. Today we are going to change that by introducing two brand new components:

+
    +
  • Recorder component that will record every event to a SQLite database
  • +
  • History component that will query and aggregate the recorded events
  • +
+

By adding this view into the past, we are adding an extra dimension into the state of your house. This brings great new possibilities for future features. The focus of today’s release is on getting the recording component to you to start recording and getting some data. To show what is being recorded a view has been added that shows the last 24 hours of your house. Expect more extensive tools to explore your history in the future.

+

Adding history to the UI was a challenge on itself because the old UI did not support easy navigation. So to add to the awesomeness of this release, Home Assistant also got a face lift.

+

The history component will be enabled for new users by default. For current users, run scripts/update to upgrade to the latest version and add [history] to your home-assistant.conf file.

+

+ + + +

+

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

+ Read on → +
+
+
+
+
+

+ Release notes for January 24, 2015 +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

I have just merged the latest version of the development branch into master. Here are some of the highlights of this release:

+

Configuration via the frontend
+Phliips Hue will now be auto discovered and uses the new configurator component to interact with the user to finish the setup process.

+

Wink Hub support
+Thanks to the work done by John McLaughlin and Geoff Norton we now support the lights, switches and sensors that are connected to the Wink hub.

+

The getting started guide and component page have been reorganized
+The getting started instructions have been split into separate pages per component and a general overview page. The goal is to have a page per component that describes:

+
    +
  • What it does
  • +
  • How to set it up
  • +
  • Which states it maintains
  • +
  • Which services it provides
  • +
  • Additional development tips
  • +
+

More reasonable errors
+Home Assistant should now throw better errors and offer solutions if you do not have the right version of Python 3, forgot to clone the git submodules or install the dependencies.

+

Streamlined first launch
+Home Assistant now supports --open-ui and --demo-mode command line properties to open the browser automatically and have something to show. Home Assistant now supports to be run without a password, allowing the interface to login automatically on launch.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/18/index.html b/blog/posts/18/index.html new file mode 100644 index 0000000000..bcd49f6ae7 --- /dev/null +++ b/blog/posts/18/index.html @@ -0,0 +1,332 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest in the house! +

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

For thet majority of its existence, Home Assistant primary focus was on presence detection, lights and switches. But not anymore as we’re expanding the supported devices. Today, we’re proud to introduce Nest Thermostat integration for Home Assistant contributed by Stefano Fiorini!

+

+ +

+

The new integration exists out of two parts: a generic thermostat component and a Nest platform implementation. The initial version implements provides a read-only card and services to control it. The plan is in the future to add temperature and away mode controls from the thermostat card and more info dialog. Internally, we are using the Python package python-nest by jkoelker to talk to the Nest.

+

If you own a Nest thermostat, add the following lines to your home-assistant.conf:

+
[thermostat]
+platform=nest
+username=YOUR_USERNAME
+password=YOUR_PASSWORD
+
+
+
+
+
+
+
+

+ Bootstrapping your setup with Discovery +

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

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

+

To enable the discovery component, add the following to your home-assistant.conf:

+
[discovery]
+
+
+

A new discovery section has been added to the Adding a new platform page with instructions how to make your platform discoverable.

+
+
+
+
+
+

+ Hello PushBullet, nice talking to you +

+
+ + + 1 minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

One of the things that was missing in Home Assistant for a while was a way to communicate with users. Wouldn’t it be nice to get a message when important events happen like the lights being turned on while no one is home? Since the Home Assistant frontend runs as a web application on the phone, we have no way to bring ourselves to the front. This is where the new notify component comes in, powered by PushBullet.

+

The new notify component will take in messages and tells them to the user. For now this will be powered by the very awesome PushBullet but any other messaging platform can be easily added.

+

+ + A message triggered by the simple_alarm component is shown by PushBullet on the Moto360. +

+

Read on to learn how to enable the notify component and integrate it with other components.

+ Read on → +
+
+
+
+
+

+ Home Control, Automation & the Smart Home +

+
+ + + four minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+
+

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

+

As a bare minimum a hub has to keep track of the state of each device and should be able to control them if possible. For example, it has to know which lights are on or off and offer a way to control the lights. For a sensor it only has to know the value. A hub with these capabilities offers home control.

+

+ + Hub dashboard example + + Example of a hub’s dashboard. Showing the state of 2 persons, 4 lights and the sun. +

+ Read on → +
+
+
+
+
+

+ Website launched! +

+
+ + + Less than one minute reading time + + +
    +
  • Website
  • +
+
+ Comments +
+
+
+

I finally took the time to setup a simple website to help people getting started with Home Assistant. The process was super smooth thanks to the great tools Jekyll and Octopress and the great services GitHub Pages and CloudFlare.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/2/index.html b/blog/posts/2/index.html new file mode 100644 index 0000000000..61461eb3cc --- /dev/null +++ b/blog/posts/2/index.html @@ -0,0 +1,669 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.60: Beckhoff/TwinCAT, WebDav, Gearbest, iAlarm +

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

The biggest change for 0.60 will be covered in a separate blog post. Thus, we will keep it short here. Just one thing: This is the last release in 2017. We will be back to our bi-weekly release cycle in 2018.

+

A big “Thank you” to all people who supported us to make this release possible.

+

TwinCAT

+

With the brand-new ADS (automation device specification) component by @stlehmann allows you to hook Home Assistant into this fieldbus independent interface which is often used between Beckhoff devices running with TwinCAT.

+

WebDav calendar

+

Thanks to @maxlaverse Home Assistant support now WebDav calendars.

+

Tracking prices

+

With the new gearbest sensor there is now an additional sensor available to track the price of a product.

+

Financial details

+

Yahoo! has discontinued their financial service. To fill this gap we have now the alpha_vantage sensor which is intruded in this release and allows you to monitor the stock market.

+

New Platforms

+ +

Release 0.60.1 - January 6

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ 0.59: Order pizza, Entity Picker, Color Wheel +

+
+ + + 11 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

We are proud to announce the availability of Home Assistant 0.59. To keep you in the loop: This is the second last release in 2017. We have stuck to our bi-weekly release cycle for another year but we decided that we will take a little break between Christmas and New Year.

+

Dominos Pizza platform

+

With the Dominos Pizza integration made by @wardcraigj your home is now taking care that you don’t starve. In combination with a Skybell or a DoorBird you will know exactly when the pizza is in front of your door.

+

Color picker

+

@NovapaX created a new color picker. While dragging the color badge with your finger, a badge will appear above your finger so you can see the current color.

+

+ Screenshot of the color wheel. + Screenshot of the color wheel. +

+

Shopping list tweaks

+

@balloob has refreshed the shopping list UI to make it more usable. It’s now possible to add items by typing, instead of just voice. Also editing has been made easier.

+

Entity picker

+

@balloob improved the way if you want to pick an entity. In the automation editor, the script editor and the service section of the Developer Tools it’s much easier to identify the right one! The automation editor will only suggest relevant entities.

+

+ Screenshot of the Entity Picker. + Screenshot of the of the Entity Picker. +

+

Hass.io Add-ons

+

If you follow our twitter feed then you may already know that @frenck spent some time to bring new stuff to the Community Hass.io Add-ons repository.

+ +

New Platforms

+ +

Release 0.59.1 - December 4

+ +

Release 0.59.2 - December 6

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Set up Hass.io on top of a virtual machine +

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with Hass.io. For a test or if you have a system which is already hosting virtual machines then the Hass.io installer is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with libvirt support and the guest will be running Debian 9. Hass.io will be installed on the guest.

+ Read on → +
+
+
+
+
+

+ 0.58: More translations, faster frontend, system log +

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

+The Hass.io release of 0.58 will be delayed by a couple of days because Pascal is moving this weekend. +

+

Translation update

+

Translations are up and running in full speed. Shortly after the last release we got our translation pipeline figured out. @armills and @c727 are doing an amazing job managing this project. We’ve doubled the number of supported languages to 42 and the amount of keys to translate went from 8 to 130. Our translators are on top of their game and 79% is already translated.

+

Talking about our translators, we now have 445 people with an account to help with translations. Not bad for 3 weeks!

+

And because more translations is more better, @robbiet480 has added the iOS app to Lokalise, our translation management platform. The iOS app is currently supported in 7 different languages.

+

Learn more about how to help with translations

+

Frontend improvements continue

+

Thanks to @Andrey-git we now are able to serve the frontend in modern JavaScript. Leveraging modern JavaScript makes the frontend faster to load and run. For now it’s opt-in but we’re looking into making it opt-out in the future. The ES5 version of the frontend will remain available for older devices.

+

To try it once, add ?latest to your Home Assistant bookmark. To make it the default on your installation, update your config to look like this:

+
frontend:
+  javascript_version: latest
+
+
+

+For Custom UI users: your custom UI will need to be updated before it can work with the new version of the frontend. +

+

System log enhanced

+

Our about screen that shows the error logs has gained a nice upgrade by @postlund. Now the 50 latest exceptions will be displayed with the option to get more information.

+

+ Screenshot of the about screen showing the system log. + Screenshot of the about screen showing the system log. +

+

New Platforms

+ +

Release 0.58.1 - November 21

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Secure remote access to Home Assistant using Tor +

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

Routers and gateways provided by broadband internet providers are very often limited regarding features and configuration possibilities. Most of these limitations affect the opportunities that allow users to set up port-forwarding, DMZ, and DHCP reservations since the suppliers figured that average user does not want (or should not) deal with these. Making your Home Assistant instance available remotely (and securely), in this case, becomes more difficult. Are you one of those unlucky ones?

+

There are a couple of options available to achieve a remote (and secure) accessible Home Assistant instance. However, almost all of them require you to: open one or more ports on your router, expose a public IP address, and require you to reserve a fixed IP in your DHCP server (or set up a static IP address). Examples of these are:

+
    +
  • Combination of DuckDNS (or similar), Let’s Encrypt (SSL), DHCP reservation, and forwarding a port to your device running Home Assistant.
  • +
  • Setup a VPN, which often requires more hardware and software. Additionally, it also requires port-forwarding, DHCP reservation and most likely DuckDNS (or similar).
  • +
  • SSH tunnel-ing. Which still requires port-forwarding, DHCP reservation and most likely (yeah, you’ve guessed it) DuckDNS (or similar).
  • +
+

There is, however, another option available that most people do not realize: Tor. Tor offers a capability that they refer to as Tor’s Hidden Services, which allows you to securely access your Home Assistant installation without the need for all these things. No need to forward and open ports, no need to expose your public IP, no DNS entry, no need for SSL certificates, and you do not have to assign a fixed IP to the device running your Home Assistant.

+

The most amazing part? It is super easy to set up!

+ Read on → +
+
+
+
+
+

+ Home Assistant and The Things Network (TTN) +

+
+ + + seven minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

The Home Assistant integration for The Things Network (TTN) uses their Storage feature to get the sensor data. The easiest way to observe TTN sensors would be MQTT as it doesn’t requires any additional configuration.

+

At the moment Home Assistant only supports one MQTT broker. This means that you can’t subscribe to topics which are located on different brokers.

+ Read on → +
+
+
+
+
+

+ Translating Home Assistant +

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

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

+

Translations

+

As mentioned in the 0.57 release notes, Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. @c727 took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with Lokalise to manage our translations!

+

Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our public signup link, and start translating right away. We’ve created a translation startup guide with additional details about how to contribute. Instructions are provided there for how to request a new language.

+

Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright!

+
+
+
+
+
+

+ 0.57: Translations, Hacktoberfest, Timers +

+
+ + + 20 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

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

+

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, to make the translation process accessible to anyone who would like to contribute. Stay tuned for a blog post with more documentation soon.

+

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!

+

Hacktoberfest

+

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

+ +

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.

+

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.

+

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

+

Timer

+

Okay, one more highlight before we’ll let you check out the changelog. Contributor @danielperna84 (famous for creating the HASS 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.

+

New Platforms

+

+ +

release 0.57.1 - november 4

+
    +
  • Fix login screen not showing when no password stored (@balloob)
  • +
+

release 0.57.2 - november 5

+
    +
  • Update frontend with fixes for setting temperature on climate card (@balloob)
  • +
  • Fix setting max brightness for TRADFRI (@ggravlingen - #10359)
  • +
+

release 0.57.3 - november 11

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Home Assistant and SSH +

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

Most system engineers are very familiar with SSH (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.

+ Read on → +
+
+
+
+
+

+ Home Assistant Demo +

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

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/

+

+ + Home Assistant’s online demo +

+ Read on → +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/3/index.html b/blog/posts/3/index.html new file mode 100644 index 0000000000..5c1adaf200 --- /dev/null +++ b/blog/posts/3/index.html @@ -0,0 +1,602 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Serial analog sensor +

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

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

+ Read on → +
+
+
+
+
+

+ 0.56: Skybell, Google Assistant, Travis CI and Toon +

+
+ + + 15 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

We reached another milestone aka number: 10000. GitHub is assigning numbers to pull requests and issues and the “10000” is a PR. 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 that collects some Home Assistant relevant terms. Talking about the documentation: @DubhAd rewrote large parts of the Z-Wave section. More structure to get started and to find details during the setup and the configuration.

+

Google Assistant / Google Home integration

+

This release includes a new component to integrate Home Assistant with Google Assistant by Phil Kates. 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.

+

Hacktoberfest

+

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.

+

Map

+

The map is now its own component. Similar to configuration (config:), it will not show up without adding it to your configuration.yaml file.

+
map:
+
+
+

Travis CI

+

Why not observe your Travis CI jobs with Home Assistant? @tchellomello created a Travis CI sensor which allows one to check on the current state of Travis jobs. Now you can make sure that the coffee is ready when the build passed.

+

New Platforms

+ +

0.56.1 - October 22

+ +

0.56.2 - October 23

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+ +
+
+
+

+ Templates, dates and times +

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

This Pull Request shows in a clear way what happens if the documentation is not as good as it should be. In short, it’s about 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 with a rest sensor and a value_template:.
  • +
  • Use a time_date sensor and a template {{ strptime(states('sensor.date'), '%Y-%m-%d').year }}.
  • +
  • Write a script in language X and use it with the command sensor or use date +"%Y" as a command:.
  • +
+ Read on → +
+
+
+
+
+

+ 0.55: Tibber, DuckDNS, The Things Network, Owntrack +

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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. @tinloaf added a feature that allows you to enter dates: input_datetime. Both will help you to improve your automation rules.

+

DuckDNS

+

Using Home Assistant with DuckDNS for Dynamic DNS (DDNS or DynDNS) is an old story. DuckDNS is also integrated in Hass.io. 0.55 ships a component for non Hass.io users to get a similar feature.

+

Recorder

+

The purging of data was improved. 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.

+

Owntracks

+

Owntracks is an easy way to track your devices. For some times we have the device tracker which depends on MQTT but thanks to a new feature in Owntracks we can now offer support for HTTP. The new platform doesn’t require a MQTT broker but sends messages directly as HTTP requests to Home Assistant.

+

Tibber

+

This release introduces a new sensor: Tibber. The sensor provides the current electricity price if you are a Tibber 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

+

The Things Network

+

The Things Network (TTN) is a LoRaWAN based network especially designed for IoT devices. With this integration 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.

+

New Platforms

+ +

0.55.1 - October 15

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Deprecating Python 3.4 support +

+
+ + + 1 minute reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

Update February 16, 2018: +Home Assistant 0.64 will be the last release to support Python 3.4. Starting with release 0.65, Home Assistant will require a minimum version of Python 3.5.3.

+
+

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

+
+
+
+ +
+
+
+

+ Participating in Hacktoberfest +

+
+ + + 1 minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

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:

+ +

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.

+

Our participation for Hacktoberfest 2016 was a huge success. Join us to repeat it this year.

+

Hacktober fest logo

+
+
+
+
+
+

+ Effortless encryption with Let's Encrypt and DuckDNS +

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

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 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 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 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. 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://<your_domain>.duckdns.org. Happy secure controlling your house!

+
# 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 by Andreas for instructions.

+

If you enjoy the free service provided by DuckDNS and Let’s Encrypt, consider donating to their cause:

+ +

More information:

+ +
+
+
+
+
+

+ Improved Hass.io build system +

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

+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, 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. 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 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 on how to publish your add-ons to Docker Hub. This will greatly improve the user experience. +

+

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

+

Old:

+
FROM %%BASE_IMAGE%%
+
+
+

New:

+
ARG BUILD_FROM
+FROM $BUILD_FROM
+
+
+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/4/index.html b/blog/posts/4/index.html new file mode 100644 index 0000000000..572a07f2d5 --- /dev/null +++ b/blog/posts/4/index.html @@ -0,0 +1,690 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.54: Todoist, DoorBird, Abode cameras +

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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

+

New Platforms

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Hassbian 1.3 - A bit of a stretch +

+
+ + + 1 minute reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

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.

+

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.

+

Upgrade scripts

+

@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.
  • +
  • Upgrade Hassbian-script: Downloads and upgrades the latest release of Hassbian-scripts. Contributed by @Ludeeus.
  • +
  • Upgrade Home-assistant: Upgrades the Home Assistant installation to the latest release. Contributed by @Ludeeus.
  • +
+

To follow discussions about the development of the HASSbian image or to contribute join our Discord chat server.

+

To get started with the new image, check out the installation instructions on the installing Hassbian page.

+
+
+
+
+
+

+ 0.53: Tesla, Customize editor, and super fast KNX rewrite +

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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!

+

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.

+
# Example configuration.yaml entry
+homeassistant:
+  # Include the customizations.
+  customize: !include customize.yaml
+
+# Enable the config screen
+config:
+
+
+

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.

+

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.

+

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 tunneling devices. In the background it uses asyncio communication. Check the climate integration in action here and see the lights in action below:

+
+ +
+

New Platforms

+ +

Release 0.53.1 - September 12

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ 0.52: Scripts editor, Nello.io locks, HipChat and Abode Home Security +

+
+ + + 11 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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!

+

To use the scripts editor, create a new file in your config directory named scripts.yaml and copy your existing scripts over:

+
# 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:

+
# Configuration.yaml example
+script: !include scripts.yaml
+
+
+
+ +
+

New Platforms

+ +

Release 0.52.1 - August 28

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ 0.51: Massive history speed up, finished automation editor and official vacuum cleaner support +

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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.

+

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.

+

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.

+
+ +
+

Vacuum cleaners

+

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

+

New Platforms

+ +

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)
  • +
+

Release 0.51.2 - August 14

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+ +
+
+
+

+ 0.50: Voice control, History improvements, and Xiaomi +

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Last Wednesday we released Hass.io, 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 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.

+

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.

+
# 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 for more information.

+
+ +
+

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

+

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.

+

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.

+

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.

+

New Platforms

+ +

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.

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+ +
+
+
+

+ Introducing Hass.io +

+
+ + + three minutes reading time + + +
    +
  • Announcements
  • +
+
+ Comments +
+
+
+

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

+

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

+

At launch we have included a couple of built-in add-ons 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, InfluxDB, HASS Configurator and AppDaemon.

+

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.

+ +

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

+ Read on → +
+
+
+
+
+

+ Home Assistant Podcast #4 +

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+
+

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

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/5/index.html b/blog/posts/5/index.html new file mode 100644 index 0000000000..c3a1b97cff --- /dev/null +++ b/blog/posts/5/index.html @@ -0,0 +1,645 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.49: Themes 🎨, kiosk mode and Prometheus.io +

+
+ + + 13 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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.

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

+

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

+

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.

+

New Platforms

+ +

Release 0.49.1 - July 24

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ Home Assistant Podcast #3 +

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+
+

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

+
+
+
+
+
+

+ Home Assistant is moving to Discord +

+
+ + + four minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

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 as smooth as possible for everyone. Join us now with just a click!

+

Click Read on → to find out more about why we’re moving.

+ Read on → +
+
+
+
+
+

+ 0.48: Snips.ai, Shiftr.io and a massive History query speed up +

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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.

+

Pascal 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 <config>/www directory.

+

Z-Wave will, as announced in the last release, be defaulting to generate the new entity ids. More info in the blog post. You can still opt-in for the old style.

+
zwave:
+  new_entity_ids: false
+
+
+

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! ⚡️

+

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 for further instructions.

+

Also a shoutout to @michaelarnauts for keeping an eye on our Docker build and once again reducing the file size 👍

+

Release 0.48.1 - July 5

+ +

New Platforms

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ [Update: fixed] A frank and serious warning about X +

+
+ + + three minutes reading time + + +
    +
  • Public-Service-Announcement
  • +
+
+ Comments +
+
+
+

Update June 21: Senic has removed our name from their materials and have issued an 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:

+ Read on → +
+
+
+
+
+

+ 0.47: Python Scripts, Sesame Smart Lock, Gitter, Onvif cameras +

+
+ + + 16 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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, which means that roughly every two days a new integration gets added!

+

Python Scripts

+

The biggest change is a new type of script component: Python scripts. 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 to see how to get started.

+

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.

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

+

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. +
  3. 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.
  4. +
  5. Rename entities using the ui card as described in the blog post to avoid conflicts. Restart Home Assistant to observe the changes.
  6. +
  7. Update all places mentioning IDs (groups, automation, customization, etc.) in configuration.yaml.
  8. +
  9. Add new_entity_ids: true to your zwave config.
  10. +
  11. Restart Home Assistant to run with new IDs.
  12. +
  13. The old entity IDs will be available in the more info dialog to trace down any remaining errors.
  14. +
+

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 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 (gdb stacktrace points at PyObject_GC_Del()).

+

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.

+

Release 0.47.1 - June 21

+ +

New platforms

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+
+
+

+ ZWave Entity IDs +

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

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.

+
+
+
+ +
+
+
+

+ 0.46: Rachio sprinklers, Netgear Arlo cameras and Z-Wave fans +

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

It’s time for 0.46! This release does not have too many new integrations, instead it focussed on bug fixes.

+

New platforms

+ +

Release 0.46.1 - June 9

+ +

Breaking changes

+
    +
  • The USPS sensor entity names have changed as there are now two. One for packages and one for mail. Config will now also use scan_interval instead of update_interval (@happyleavesaoc - #7655) (sensor.usps docs) (breaking change)
  • +
  • Automation state trigger: From/to checks will now ignore state changes that are just attribute changess (@amelchio - #7651) (automation.state docs) (breaking change)
  • +
  • Redesign monitored variables for hp_ilo sensor. monitored_variables is now a list of name and sensor_type values (@Juggels - #7534) (sensor.hp_ilo docs) (breaking change)
  • +
+
sensor:
+  - platform: hp_ilo
+    host: IP_ADDRESS or HOSTNAME
+    username: USERNAME
+    password: PASSWORD
+    monitored_variables:
+      - name: SENSOR NAME
+        sensor_type: SENSOR TYPE
+
+
+
    +
  • Automation - time: The after keyword for time triggers (not conditions) has been deprecated in favor of the at keyword. This resembles better what it does (old one still works, gives a warning) (@armills - #7846) (automation.time docs) (breaking change)
  • +
  • Automation - numeric_state: above and below will no longer trigger if it is equal. (@armills - #7857) (breaking change)
  • +
  • Broadlink switches: Entity ids will change for switches that don’t have a default name set. In this case the object_id is now used. (@abmantis - #7845) (switch.broadlink docs) (breaking change)
  • +
  • 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)
  • +
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+ +
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/6/index.html b/blog/posts/6/index.html new file mode 100644 index 0000000000..71229497ec --- /dev/null +++ b/blog/posts/6/index.html @@ -0,0 +1,658 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Home Assistant 0.45: Automation editor, Z-Wave panel, OCR +

+
+ + + 12 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

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!

+

First thing for this release is a feature that has been requested a lot: an automation editor! It’s still experimental - and many things are still in progress - but it works! You can create new automations and edit existing ones. If you start a new config, you’re all good to go. Otherwise check these instructions to get your automations ready for editing in the UI.

+

+ +

+

Check this video by Ben from BRUHautomation to see the new release in action.

+
+ +
+

As the editor is experimental, there are some limitations. These include that Chrome/Chromium is the only supported browser, we don’t support all triggers and actions and there is no support for conditions yet. But the foundation is there and so if you want to contribute to this, come help!

+

On the Z-Wave front a lot has happened. The biggest one is that we have a major extension of the Z-Wave panel thanks to @turbokongen! You will now be able to change config parameters and manage your devices.

+

+ +

+

Thanks to the work by the Python Open Z-Wave team we are now able to install it on demand from PyPi! There is no longer a need to pre-compile it yourself. This should give us the guarantee that we work with the Python Open Z-Wave version that the code expects.

+

+If you have a security key set in your Open Z-Wave options.xml, copy options.xml to your Home Assistant configuration directory. This is the only place where options will get persisted. +

+

Next to that @armills has lead the charge and managed to get full test coverage for Z-Wave! Thanks for all the hard work!

+

This release also contains two integrations which could help you to make non-smart devices a little smarter. The file sensor and the seven_segments OCR image processing platform. The first simply reads a plain-text file which was created by a logger or alike. The latter one extracts the value from a captured image that shows a seven-segments display.

+

+ +

+

And last, but not least, our Docker image is now based off Python 3.6. This version is faster and uses less memory than Python 3.5. Win!

+

If you are using our experimental Hass.io image, we made a breaking change in how the panel is served. If you have an existing installation, make sure you update your supervisor to the latest version before updating Home Assistant. If you are going to flash a new Hass.io image, make sure to only flash the new 0.8 image as linked on the installation page.

+

New integrations

+ +

Release 0.45.1 - May 22

+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

Breaking changes

+ + Read on → +
+
+
+
+
+

+ Home Assistant at PyCon US 2017 +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

In just 12 hours PyCon US 2017 starts. This is an exciting conference because there will be a bunch of Home Assistant developers and users there being able to meet in person.

+

Just like last year, we’ll be hosting a Home Assistant Open Space. Please stop by to ask any questions you have to the available developers. We haven’t reserved a slot yet but will do so tomorrow. We’ll update this post and announce it on social media as we know time and location. First open-space will be Friday at 4pm in room B112.

+

We will also be taken part in the development sprints from Monday-Wednesday. You only need to bring a laptop. We’ll help you get set up with a dev environment and you can be coding on top of Home Assistant in no time. Exact location inside the conference center to be announced. We are sitting in room A108.

+

On a final note, the Home Assistant community is very very active so don’t take it personal if we don’t remember your name, issue or contribution.

+
+
+
+
+
+

+ Home Assistant on an Orange Pi Zero +

+
+ + + four minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

This blog post is about the setup of Home Assistant on an Orange Pi Zero. Like the setup on a Raspberry Pi Zero it will only take a couple of minutes to get a fully functional super cheap (less than 18 Euro incl. casing and power supply) Home Assistant hub. The reasons to use an Orange Pi Zero beside the prize are the built-in Ethernet port and the availability.

+

+ +

+ Read on → +
+
+
+
+
+

+ Grazer Linuxtage 2017: Python Everywhere +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
  • Micropython
  • +
+
+ Comments +
+
+
+

I like Python. It’s a clean easy to read, easy to learn language. Yet when you use it for some time you still find more features to improve your coding. What I probably like most about Python is the community and the great libraries that already exist. Often solving a problem means including a pre-existing library and writing some glue code. That makes it quick to get things up and running.

+

I just gave a talk on how you can run Python to automate your home (yes with Home-Assistant) but also with MicroPython. Micropython allows you to run Python on your DIY sensors and switches around your home. Python everywhere - even on the chips that give Home-Assistant the data to be awesome.

+
+ +
+
+
+
+
+
+

+ Home Assistant 0.44: ZigBee, OpenCV and DLib +

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

This release brings some great new integrations. The biggest one is the native ZigBee integration by Russell Cloran. 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)

+

Another great new addition is OpenCV by Teagan Glenn. So now you’ll be able to unlock all the cool stuff from OpenCV right in Home Assistant. And if OpenCV is not your style, you can try out the new DLib integration added by Pascal Vizeli in this release.

+

This release also includes a new component to dynamically generate RSS feeds based on a template. This means that any RSS widget on your phone, tablet or computer can now be used to show Home Assistant data!

+

And finally, for users of the config panel in the UI, we have fixed the issue with the group editor.

+

Enjoy!

+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

New integrations

+ +

Release 0.44.2 - May 8

+
    +
  • Fix opening add-ons in Hass.io store that are not installed (@balloob)
  • +
+

Release 0.44.1 - May 7

+ + Read on → +
+
+
+
+
+

+ Podcast.__init__ interview with Paulus Schoutsen +

+
+ + + Less than one minute reading time + + +
    +
  • Media
  • +
+
+ Comments +
+
+
+

+ +

+

Earlier this year I was interviewed by Tobias Macey from Podcast.__init__ about Python and Home Assistant. Just realized that we never shared this on the blog, oops. Here it is, enjoy!

+ +
+
+
+
+
+

+ Home Assistant on a Pi Zero W in 30 minutes +

+
+ + + 1 minute reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

+ +

+

Saw the announcement yesterday for HASSbian 1.21 and got super excited?

+

Today we’ll flash the latest HASSbian to a Raspberry Pi Zero W. +With an added bonus that besides for an USB cable for power, there’s no need for any cables!

+

What you’ll need:

+
    +
  • a Raspberry Pi Zero W (an amazing tiny computer with built-in wifi)
  • +
  • a microSD card
  • +
  • some source of USB power
  • +
  • Wifi
  • +
  • a desktop or laptop
  • +
+

Let’s get to it!

+

First, download the HASSbian 1.21 image from here.

+

Unzip it.

+

Flash it to the microSD card. If you need a flash tool, try Etcher

+

When the flashing finishes, remove it and plug it back in. You should see a drive called “boot”.

+

Right in there, not in any folders, create a file called wpa_supplicant.conf.

+

The contents of the configuration file should be something like this: +(You may have to adjust for your configuration, hints here )

+
network={
+    ssid="YOUR_WIFI_NETWORK_NAME_HERE"
+    psk="YOUR_WIFI_PASSWORD_HERE"
+    key_mgmt=WPA-PSK
+}
+
+
+

Next stick your SD card into the Raspberry Pi Zero W, and plug it in.

+

After about a minute, use your SSH client to connect to HASSbian (or hassbian.local from a Mac), with the username pi. The default password is raspberry.

+

It’s a good idea to change the password. To do so, use the passwd command.

+

Next, type the following two commands into the SSH console:

+
$ sudo systemctl enable install_homeassistant.service
+$ sudo systemctl start install_homeassistant.service
+
+
+

Wait about 15-20 minutes and voilà you have your Home Assistant on your Raspberry Pi Zero W in 30 minutes.

+

To try it out, go to http://hassbian:8123 or http://hassbian.local:8123 if you’re using Mac.

+

For further details about HASSbian, take a look at the documentation.

+
+
+
+
+
+

+ HASSbian 1.21 - It's about time isn't it +

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

Hassbian 1.21 - It’s about time isn’t it

+

Since I, the developer of HASSbian, have been moving, started a new job and so on I’ve had few moments over for HASSbian development. The 1.2 release has been in pre-release for a few months now and just not communicated out that well. Hopefully this release changes that and I’ll do my best to release more often. There’s no simple way to update from 1.1 to 1.21 but 95% of the changes can be done by installing the hassbian-config package. For more information have a look at the hassbian-config page.

+

Hassbian 1.22 - Sins of last night

+

Development is sometimes fast and joyful but mistakes are made at times.

+

With the release of 1.21 a small problem with the OpenZWave build script wasn’t corrected even tough it was a known bug. Problem is simple as it’s only a problem with the symlink created for to the configuration folder for OpenZWave. This has been fixed and we bring some new things since they where ready anyway. The list below has been augmented with the updated information.

+

Hassbian-config

+

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. This replaces the hassbian-scripts functionality from 1.1.

+
    +
  • Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component that’s 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.
  • +
  • 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.
  • +
+

Spring cleaning

+

With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image.

+
    +
  • Replaced the hassbian-scripts folder with hassbian-config.
  • +
  • Update pi-gen. Our build script has been upgraded to follow the Raspbian image closer once again. Now you could build this image with Docker if your so inclined.
  • +
  • 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 our Discord chat server.

+

To get started with the new image, check out the installation instructions in the getting started section.

+
+
+
+
+
+

+ Setting up InfluxDB and Grafana using Docker +

+
+ + + two minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

Home Assistant collects volumes of (time series) data that are well suited for some fancy graphs. Although the History component provides some nice plots, I am sure you have always wanted those fancy Grafana plots. The problem, however, is that low-powered device such as Raspberry Pi that most of us use for our Home Assistant setup are not well suited for such operation.

+

Instead of running InfluxDB and Grafana on a Raspberry Pi or a different system and go through the classic approach of installing both tools separately, you can run them in a Docker container on another machine. For this tutorial, I am using a Synology NAS, but the instructions should apply to other devices that can run Docker. Just follow the steps below:

+
    +
  1. SSH into your NAS. You may have to run sudo su if you are getting permission errors.
  2. +
  3. Download the docker-statsd-influxdb-grafana image using the command: +docker pull samuelebistoletti/docker-statsd-influxdb-grafana
  4. +
  5. To start the container for the first-time launch: +
    docker run -d \
    +  --name docker-statsd-influxdb-grafana \
    +  -p 3003:3003 \
    +  -p 3004:8083 \
    +  -p 8086:8086 \
    +  -p 22022:22 \
    +  -p 8125:8125/udp \
    +  samuelebistoletti/docker-statsd-influxdb-grafana:latest
    +
    +
    +
  6. +
  7. The image should now be running and both InfluxBD and Grafana should be now up and running.
  8. +
  9. You can access InfluxDB at http://NAS_IP_ADDRESS:3004/ and Grafana at http://NAS_IP_ADDRESS:3003/
  10. +
  11. Navigate to http://NAS_IP_ADDRESS:3004/ and create the database home_assistant using the command CREATE DATABASE home_assistant. +

    + +

    +
  12. +
  13. Now, you need to configure Home Assistant to use InfluxDB. Since, we did not add any username/password to our database, we can simply add the following to our configuration.yaml (replace the IP address with that of the device running Docker) and restart Home Assistant to setup InfluxDB (you will have to fine tune it based on your preferences): +
    influxdb:
    +  host: 192.168.2.113
    +
    +
    +
  14. +
  15. Next, we need to configure Grafana to use InfluxDB. Navigate to http://NAS_IP_ADDRESS:3003/ to access Grafana (login with username and password root) and add your first data source. Here’s how you can configure Grafana to use InfluxDB database. Note that 192.168.2.113 is the IP address of my NAS. +

    + +

    +
  16. +
  17. You should see Data source is working if you have configured everything correctly.
  18. +
  19. With all that configured, you are now ready for the fun stuff. You can create as many dashboards as you want and then import the same in Home Assistant.
  20. +
  21. To add the Grafana dashboard in HA, use the following config: +
    panel_iframe:
    +  router:
    +    title: 'Temperature'
    +    url: 'http://192.168.2.113:3003/dashboard/db/temperature?edit&tab=time%20range'
    +
    +
    +

    The URL can be obtained by clicking Share Dashboard link on your dashboard:

    +

    + +

    +
  22. +
+
+
+
+
+
+

+ Hardware Contest 2017 +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

We have four submissions for our Hardware Contest 2017.

+ +

The voting is now open. To keep things simple are we using the voting feature of the forum. Vote for your choices.

+

End of the voting period: April, 30 2017 - 23.59 UTC

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/7/index.html b/blog/posts/7/index.html new file mode 100644 index 0000000000..df36d18fda --- /dev/null +++ b/blog/posts/7/index.html @@ -0,0 +1,607 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Home Assistant 0.43: IKEA Trådfri, Spotify and our iOS app is live +

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

Oooh yeah. It’s time for 0.43 and this is going to be a killer release. For the people that have been following on social media, you might have noticed that we got pretty excited about the new IKEA Trådfri line up. And so we are very happy to announce that thanks to the work by @ggravlingen, @MartinHjelmare and myself that this will be the first release to support the IKEA light bulbs. Home Assistant will automatically detect the gateway on your network and after following the instructions, allow you to control your lights.

+

+ +After automatic discovery, Home Assistant will ask the user to finish pairing with the gateway. +

+

And in case you have missed the other big news: @robbiet480 released the first version of our iOS app! It took a little over a year but it offers some great ways to make your iDevice work with Home Assistant. Big congrats to Robbie for shipping! As with our other parts, the app is open-sourced under APACHE 2 and contributors are welcome. Check it out.

+

A big shout out this release to @happyleavesaoc for his constant stream of great contributions to Home Assistant. The first contribution was back in October 2015 and since then @happyleavesaoc has been responsible for many platforms and bug fixes including the Spotify platform this release. Thanks @happyleavesaoc, you’re a great example of what makes our community awesome.

+

The new Spotify integration is based on the new Spotify Connect Playback API. It supports playback, album art and switching which Spotify device you’re controlling.

+

Also note that you have till the end of the weekend to submit an application to our giveaway of low energy servers which we got when we won the Thomas Krenn award 2017. Go apply!

+

New Platforms

+ + Read on → +
+
+
+
+
+

+ IKEA Trådfri: Internet of Things done right +

+
+ + + nine minutes reading time + + +
    +
  • Internet-of-Things
  • +
+
+ Comments +
+
+
+

Last month IKEA released a new home automation lineup called Trådfri. It consists of white bulbs, dimming remotes, color temperature remotes and motion sensors. After almost two weeks of research, we have come to the conclusion that this is going to be the perfect companion hardware to work with Home Assistant. Here is the gist of our breakdown:

+
    +
  • Works out of the box. You can get started by just buying the already paired light and remote. You only need to buy the gateway if you want to set time-based rules for your lights or use your phone as a remote.
  • +
  • Local only hub. No cloud that gathers data about how you live your life and it will keep working even if IKEA stops supporting it.
  • +
  • Based on open standards. It uses Zigbee between devices and CoAP/dTLS to talk to the gateway. This means that you are not locked into a single vendor. You can pair it with Philips Hue bulbs and other compatible vendors.
  • +
  • Affordable. Lights start at $12 standalone and $20 if bundled with a remote (USA prices).
  • +
  • Useful design. The gateway has built-in space to hide excess cables and remotes come with magnetic holders for on the wall.
  • +
  • Able to subscribe to changes (local push). Automations will be able to instantly respond to changes to device states by subscribing to the gateway for changes.
  • +
  • Full integration in Home Assistant 0.43 (scheduled for release April 22). Our community built a standalone library pytradfri and we use it in Home Assistant. Home Assistant will automatically discover gateways on your network and guide the user to set them up.
  • +
  • Downside: no integration with other systems yet. There are rumors that Homekit support will land in October and I expect both Google Home and Amazon Echo to eventually add support. Use Home Assistant to connect them all in the meanwhile.
  • +
  • Semi-downside: you can’t control your lights remotely. Because it’s local only, you won’t be able to control your lights remotely unless via a third-party integration.
  • +
+

Full breakdown available after clicking read more.

+

(Note: we are not affiliated with IKEA nor do we receive commission for sales. We are just big fans of their new line up!)

+ Read on → +
+
+
+
+
+

+ 1 year and 22 days ago I had an idea... +

+
+ + + three minutes reading time + + +
    +
  • Announcements
  • +
+
+ Comments +
+
+
+

1 year and 22 days ago, or 387 days ago, on March 25th, 2016, I started a project to bring Home Assistant to the iPhone.

+

I thought the existing notification and location solutions were lacking in one way or another and had wanted for years to have a project I could call my own which would allow me to learn iOS development. What better way then implementing an extremely complex application like Home Assistant?

+

I started with a lot of steam. I remember cranking out the initial work that night and showing Paulus who was astounded at how fast the UI was coming together.

+

Little would I know how many problems I would create and uncover throughout the process. Writing a mobile app for a project that moves as fast as Home Assistant is… tricky, to say the least. In the time since I started writing the app, Home Assistant had 90 releases. I started writing the day before 0.16 was released. Now we are at 0.42.3. Time flies…

+

I couldn’t have completed the app without help and input from the community. By the end I had 700 beta testers, of which about 500 were very active in testing the app.

+

I received emails and forum posts almost every day, even when the app would go without an update for weeks and sometimes months at a time as my life got busier and busier.

+

I wanted this app to be done 9 months ago, at least, but my drive to add more and more features killed that idea. This really taught me the value of the MVP over the kitchen sink.

+

It may not look the way that I wanted it to initially, with beautiful native UI components, but that’s okay. What I really cared about is there. The notification and location engines are some of the most customizable and powerful available in an iOS app if I do say so myself. I made them this way to keep with the spirit of infinite flexibility that is enshrined in Home Assistant.

+

Just because the app is released doesn’t mean we are at the end of the road. It’s only the beginning. There’s plenty of bugs to fix still, improvements to make, features to add. Beta testing will continue, and if anything, be expanded. I do want to have a native UI someday, but that’s pretty hard with how fast the project moves.

+

The biggest request I have is for more developers on the project. As many of you know, I have my hands in many different parts of Home Assistant, from governance and organization to managing the forums to writing this app, managing the Homebridge plugin and even sometimes writing code for the actual core codebase! I can’t do it all, and I’m still a new iOS developer who doesn’t know all the best practices.

+

The app is open source, has been for the last few months when I first prepared to submit it to Apple for review. I invite Swift developers to come and join me in building it. Trust me, there’s tons to do.

+

1 year and 22 days ago, on March 25th, 2016 I began work on Home Assistant for iOS.

+

Today, April 16th, 2017, I am extremely excited to announce that Home Assistant for iOS has been approved by Apple and is now available to download for a monthly subscription starting at $9.99 free! (had to get a joke in here somewhere!) on the iOS App Store in every country.

+

+

Please note, you must have Home Assistant 0.42.4 or later installed for the app to function properly.

+

Thanks for everything so far, I’m looking forward to the road that lies ahead for Home Assistant on iOS!

+
+
+
+
+
+

+ Home Assistant 0.42: Eddystone Beacons, Lockitron locks and Total Connect alarm systems +

+
+ + + 11 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

It’s time for Home Assistant 0.42. This release has been focused on refining the system and fixing a lot of bugs. We have also upgraded to the latest version of our HTTP library which should give us a significant boost serving files and API.

+

On our social media front, we have crossed the 1000 likes on our Facebook page! Also on the social media front, the YouTube channel diyAutomate has been putting out a lot of great getting started videos about Home Assistant, go check them out!

+

Also want to take a moment to thank Austin Andrews aka Templarian for his Material Design Icons. He is part of what makes Home Assistant so beautiful 🤗.

+

New integrations

+ + Read on → +
+
+
+
+
+

+ Thomas Krenn award 2017 +

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

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

+

+

The prize beside the very nice trophy contains hardware and we want to give that hardware partically away. We won four Low Energy Server v2 (LES) units with an Intel Celeron N2930, 8 GB of RAM, and a mSATA of 128 GB (one unit with 64 GB). We were thinking about to keep one of those units in Europe and one in North America for testing and to use during workshops and events. But the other two will go to interested parties.

+

As a raffle would be to easy, we make a contest out of it. This means that we are looking for your application. Of course, we would like to see those systems goes to active or future developers who can justify their need for one of the systems to run CI, UI tests, public accessible Home Assistant demo instances, etc. At the other hand we would like to keep it open, to see with what people are coming up. Please participate as well if you are planning to automate the public school of your kids with 1000 switches or light, need a server to run it, and want to provide regular feedback about the user experience.

+

Create an entry in our Forum. Be creative and use your imagination.

+

The details

+
    +
  • Jury: The Home Assistant community
  • +
  • Dead line: April, 23 2017 - 23.59 UTC
  • +
  • Voting period: April, 24th till April, 30 2017 - 23.59 UTC
  • +
+

The decision of the jury will be final. If there will be a dispute then the Top-5 committer of the Home Assistant organization on Github will decide. Also, we reserve us the right to ban applications if we suspect cheating or unfair methods. Updates will be available in the Forum and on Twitter.

+

Keep in mind that you may have to pay the fee for customs handling and the import duty by yourself. The plan is to ship the hardware from Germany. If you are located in a country with import/export regulations, we may not be able to ship the hardware to you.

+
+
+
+
+
+

+ HTTP to MQTT bridge +

+
+ + + three minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

The idea of creating HTTP to MQTT bridge appeared when I was trying to integrate Google Assistant with my Home Assistant after watching BRUH Automation video. Right now there is no MQTT service available in IFTTT. Existing integration solution uses 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 for the server part and MQTT.js for the client.

+ Read on → +
+
+
+
+
+

+ Home Assistant 0.41: Tado, Volumio, Workday, improved Plex +

+
+ + + nine minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Welcome to 0.41. There was a lot going on in the last two weeks. Not only from the code side but also from the social one of Home Assistant. Paulus did an interview with OpenSourceCraft, Fabian did a workshop at the Chemnitzer Linux Tage, and we are now an award-winning Open source project (I will cover that in a separate blog post).

+

Plex

+

@JesseWebDotCom made massive changes to the Plex media player platform. From better metadata support over new configuration options to improved controls and non-controllable clients.

+

Component overview

+

The Components overview is now powered by search/filtering feature. This will make it faster to get the component/platform you are looking for more quickly. Thanks again, @bdurrer for this.

+

Changelog

+

The new format of the changelog which was introduced with 0.40 will provide a link to the related pull request. We are not covering everything in our release notes but we think that this addition will make it easier to find details about the change.

+

New platforms/components

+ +

Breaking changes

+
    +
  • The Kodi notifier platform was migrated to async and the configuration synced with the Kodi media player platform (#6497).
  • +
  • For the Music Player Daemon (MPD) platform was location replaced with name (#6553).
  • +
  • Event decorators were removed (#6634).
  • +
  • The Emby mediaplayer platform was changed to avoid name clashes (#6664).
  • +
  • In a lot of places were the power and energy units update. This change mostly affects the switch platforms (#6212).
  • +
  • If set to auto then the MQTT implementation will use the bundled certificates automatically (#6707).
  • +
  • Autodiscovery of Android IP Webcam was removed (#6528).
  • +
  • The frontend is now using Shadow DOM and this could break your custom panels (#228).
  • +
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+ Read on → +
+
+
+ +
+
+
+

+ 0.40.2 and broken dependencies +

+
+ + + Less than one minute reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

TL; DR: We have just released version 0.40.2 that includes a fix related to the installation of dependencies.

+

Some users in the last few days have been reporting that their Home Assistant installation fails to start with an error in the http component:

+
ImportError: No module named 'aiohttp.file_sender'
+
+
+

The problem is that Home Assistant did not handle the case where a dependency would want to install a core dependency of Home Assistant that is newer than what Home Assistant works with. For now, we have identified the following two components that can cause this issue:

+
    +
  • AppleTV (0.38+)
  • +
  • Android IP Webcam (0.40+)
  • +
+

This issue has been resolved by 0.40.2. If you are on an impacted version and cannot upgrade to the latest version just yet, a temporary workaround will be to remove the <config dir>/deps directory and stop using the above mentioned integrations. In the case of AppleTV, you will also have to disable the discovery component to prevent it from being auto-detected.

+
+
+
+
+
+

+ Home Assistant 0.40: Turn any Android phone into an IP Webcam +

+
+ + + 10 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

+

It’s time for version 0.40 already! For this version, the main focus was on performance and bug fixes. Big thanks to @pvizeli for driving this effort. Startup is now super fast. We have also continued with adding warnings for components and platforms that are slowing down Home Assistant.

+

Some people have interpreted our recent added warnings as if 0.39 introduced the issues that caused the warning. This is not the case, the platforms and components have been misbehaving for a while but now we are adding warnings so we are able to track down the culprits.

+

Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to @dale3h, @CCOSTAN, @skalavala, @rrubin0, @brahmafear, @bassclarinetl2, and @torn8o! These are all people that hang out in our main chat channel and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇

+

And that our community kicks ass is also shown in the numbers. We have already raised together over $700 for the EFF via the sale of our t-shirts! All of you rock! Another number worth mentioning is that this release brings us passed 600 integrations for Home Assistant. All of you rock, again!

+

Z-Wave is now threadsafe

+

@andrey-git has spend a lot of time to make Z-Wave perform better. It should no longer cause Home Assistant to run slower or raise warnings about the timer getting out of sync.

+

Update on the MQTT Out of Memory errors in 0.39

+

MQTT started causing “Out of Memory” errors for some people on a Raspberry Pi. We have been able to track this down to Raspberry Pis that are using an older firmware. If you are experiencing this issue, please upgrade your firmware using rpi-update.

+

Turn any Android phone into an IP Camera

+

With the new support for IP Webcam added by @robbiet480 and @pvizeli you are now able to re-purpose any Android phone to become a multifunctional IP webcam. Some of the cool things that you can do:

+
    +
  • Integrate the Android device camera
  • +
  • Binary sensor when motion is detected
  • +
  • Sensors to expose the device sensors, including pressure, sound, battery, light
  • +
  • Control device features like the GPS, night vision and camera flash
  • +
+

+ +Screenshot of all the different functionality the IP webcam integration offers. +

+

Other Highlights

+
    +
  • Support added for Austrian weather using Zamg weather data (@Zac-HD)
  • +
  • Ring.com video doorbell integration added (@tchellomello)
  • +
  • Blink Home Security Camera support added (@fronzbot)
  • +
  • AppleTV has been converted to push data to Home Assistant instead of us having to poll (@postlund)
  • +
+

Breaking changes

+
    +
  • Vera entity ids have changed. This is a one time change to migrate to a model that will prevent future conflicts.
  • +
  • The Twilio notify platforms now have to be configured via the twilio component.
  • +
+
twilio:
+  account_sid: "abc"
+  auth_token: "xyz"
+
+
+
    +
  • 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 or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+

Release 0.40.1 - March 16

+ +

Release 0.40.2 - March 22

+

Hot fix release to fix dependency issues. More detailed information about the issue in this blog post.

+
    +
  • Prevent dependencies that are installed on demand from installing different versions of core dependencies (@balloob - #6738)
  • +
  • Upgrade PyChromecast to silent some benign errors (@balloob - #6702)
  • +
+ Read on → +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/8/index.html b/blog/posts/8/index.html new file mode 100644 index 0000000000..6f33a1900c --- /dev/null +++ b/blog/posts/8/index.html @@ -0,0 +1,922 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ 0.39: Configuration panel, state restoration and improved docs +

+
+ + + nine minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

It’s time for 0.39 and this release has some amazing new features!

+

+

T-Shirts

+

First off, in case you haven’t seen it yet: we have t-shirts now and they are beautiful. All proceeds from the shirts will be donated to the Electronic Frontier Foundation. The first three days all of you have already raised $400! Still waiting for Teespring to get back to me so stay tuned for the EU store.

+

Configuration panel

+

Yep, you read that right. We have a configuration panel. It’s just the first of many small steps. Putting in a foundation is important and gives us something to iterate on.

+

To start, we have three simple configuration panels:

+
    +
  • Core: allows you to validate config, reload core/group/automation config and restart/stop Home Assistant
  • +
  • Group: allows you to rename groups, change type between group/view and reorder entities.
  • +
  • Z-Wave: allows you to set device specific configuration settings
  • +
+

+ + Screenshot of our new configuration panel. +

+

As a security measure, the configuration panel will need to be activated in the config file to be activated. This can be done by adding the following to your configuration.yaml:

+
config:
+
+
+

Using our configuration panels will require you to structure your groups and Z-Wave device config according to how the configuration panel expects it. This is on purpose as it we will not be aiming to build a system that supports both our extended set of configuration extend hooks and our configuration panels. It’s one or the other.

+

To activate them in your config, create empty files groups.yaml and zwave_device_config.yaml in your config dir and add the following entries to your config:

+
group: !include groups.yaml
+
+zwave:
+  device_config: !include zwave_device_config.yaml
+
+
+

Note that this is the first release. Things will be missing, things might be broken.

+

Reorganized documentation

+

Thanks to Fabian we have a great re-organized documentation. Is it perfect yet? No. But we are getting close. We put a lot of focus on making sure the Raspberry Pi is the main focus of our getting started. The other instructions are still available, just not as part of the main getting started.

+

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

+

A couple of releases ago we introduced a new way of doing customize. It became a list that allowed different ways of matching the config to the entity.

+

We realized that this was leading into a rabbit hole that we had to get out off. Besides making it unnecessarily complicated it also blocked the road to config panels. And who doesn’t like config panels?

+

So starting this release, we had to make some breaking changes to right the wrong. We will be releasing an online tool to help you convert your config to the new format later today.

+

Update: the online tool can be found here.

+

Customize has been reverted to its original config

+

The old customize is back. The options to match by domain or using glob have been moved to its own options. It will now look like this:

+
homeassistant:
+  customize:
+    light.kitchen:
+      hidden: true
+  customize_domain:
+    light:
+      icon: mdi:home
+  customize_glob:
+    "light.kitchen_*":
+      icon: mid:description
+
+
+

Z-Wave customize is now device config

+

Ever wondered why the Z-Wave customize was called customize? Yeah, so did we. So when migrating this to the new config format, we decided to upgrade the name too:

+
zwave:
+  device_config:
+    light.kitchen:
+      ignored: true
+  device_config_domain:
+    light:
+      polling_intensity: 2
+  device_config_glob:
+    "light.kitchen_*":
+      polling_intensity: 0
+
+
+

Speed improvements

+

And a final shout out to Pascal. He keeps improving the performance of components and platforms all over Home Assistant.

+ Read on → +
+
+
+
+
+

+ Home Assistant t-shirts have arrived! +

+
+ + + two minutes reading time + + +
    +
  • Merchandise
  • +
+
+ Comments +
+
+
+

+ + Cool dude with beard and tattoo wearing the new blue Home Assistant shirt. +

+

What time is it? Yep, t-shirt time. Today we’re launching the first two Home Assistant designs. We have a blue t-shirt (🇪🇺 EU🇺🇸 US) as pictured above and a design for on black/gray shirts (🇪🇺 EU🇺🇸 US) as pictured below.

+ +

+

And because we love the internet and all the things that it has brought us, we will start with having 100% of the profit from the sales be donated to the Electronic Frontier Foundation. If you buy a shirt you will hit two birds with one stone (figuratively): you get to wear a kick-ass Home Assistant t-shirt and you help fund defending civil liberties in the digital world.

+

The EFF is a nonprofit organization that aims to protect the rights of technology users. You might however be more familiar with one of their projects: Let’s Encrypt. Read more about what the EFF does.

+

So, what are you waiting for? Get yourself a shirt! 🇪🇺 EU store🇺🇸 US store

+

+ + Family of 4 on a bench wearing the new black Home Assistant shirt. 🇪🇺 EU🇺🇸 US +

+

We are using Teespring.com to manage all the sales, production and distribution of the shirts and they will also donate our profits to the EFF. It’s also how we got all these amazing stockphotos. Some extra things to note about our teespring shop:

+
    +
  • Teespring shows that there is a number of days left until the end of the campaign for the shirts. Don’t worry about that, it should automatically relaunch.
  • +
+

More photos after the click.

+ Read on → +
+
+
+
+
+

+ Workshop at CLT 2017 +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

There will be a Home Assistant Workshop at the Chemnitzer Linux-Tage 2017. First I will cover the installation, the setup, and the configuration process. The second part will be all about automation. Last but not least, we will talk about the integration of a new platform/component.

+

Check the Workshop overview to get the details.

+

Reqistration is required as the places in the room are limited. The deadline for the registration is March, 8th 2017.

+
    +
  • Location: Technische Universität Chemnitz, Reichenhainer Straße 90, 09126 Chemnitz, Germany
  • +
  • Date: March, 12th 2017
  • +
  • Time: 10:00, Room W2
  • +
  • Language: German
  • +
+
+
+
+
+
+

+ 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +

+
+ + + seven minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Another Saturday, another release!

+

Core updates

+
    +
  • +

    Thanks to @pvizeli, all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code!

    +
  • +
  • +

    Now when you restart Home Assistant using the homeassistant.restart service, your configuration is checked. If it appears to be invalid the restart will fail.

    +
  • +
+

Rewritten frontend

+

The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new WebSockets API instead of the EventStream API.

+

Custom state card UI

+

A nice new feature is the possibility to create custom state cards in the frontend. Go ahead and write your own state card for lights, sensors, locks, etc.

+

MQTT discovery

+

MQTT now has discovery support which is different than our discovery component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant.

+

Alert component

+

If you left your front door open, then the new alert component can be used to remind you of this by sending you repeating notifications at a given interval.

+

Yeelight

+

The yeelight component has been ported to use a more stable and feature-complete python-yeelight backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our issue tracker.

+

Apple TV

+

Apple TV is now a supported media_player! It has support for just about every media player function, including a realtime display of playback status and artwork.

+

All changes

+

New platforms/components

+ +

Improvements

+
    +
  • Switch - Pilight: Validation no longer rejects alphanumeric IDs (@DavidLP)
  • +
  • Device tracker - ASUSWrt: Fixes ip neigh regex to handle the possible IPv6 “router” flag (@kylehendricks)
  • +
  • Light - MySensors: Fix mysensors RGB and W light turn on (@MartinHjelmare)
  • +
  • Light - Yeelight: new yeelight backend lib, new features (@rytilahti)
  • +
  • Climate - Eq3btsmart: Cleanup modes & available, bump version requirement (@rytilahti)
  • +
  • Sensor - SMA: Handle units correctly (@kellerza)
  • +
  • MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams (@aequitas)
  • +
  • Light - Hue: Fix lightgroups not syncing state (@tboyce1)
  • +
  • Dvice tracker - Owntracks: Fix OwnTracks state names (@tboyce1)
  • +
  • Wink: Wink AC and additional sensor support (@w1ll1am23)
  • +
  • Modbus: Modbus write_register accept list (@benvm)
  • +
  • Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS (@michaelarnauts)
  • +
  • Climate - Ecobee: Cleanup climate and ecobee (@Duoxilian)
  • +
  • Sensor - Miflora: Allow specification of bluetooth adapter (@Danielhiversen)
  • +
  • Sensor - Systemmonitor: Add average load to systemmonitor (@eagleamon)
  • +
  • Sensor - Openweathermap: Add wind bearing (@fabaff)
  • +
  • Notify - Facebook: Allow to use data for enhanced messages (@adrianlzt)
  • +
  • Light - Hyperion: Change CONF_DEFAULT_COLOR CV type (@Joeboyc2)
  • +
  • Mysensors: Fix validation of serial port on windows (@MartinHjelmare)
  • +
  • Notify - Webostv: Store the key file in the configuration directory (@pschmitt)
  • +
  • TTS: TTS ID3 support (@robbiet480)
  • +
  • Switch - Broadlink: Add send packet service (@Yannic-HAW)
  • +
  • Wink: Add support for position on Wink cover (@albertoarias)
  • +
  • Light - Flux: Make brightness display work for RGB devices. (@aequitas)
  • +
  • Media player - Roku: Fix attribute error for media_player/roku (@tchellomello)
  • +
  • Light - MQTT template: Fix brightness slider for MQTT template lights (@ray0711)
  • +
  • Template: Add min and max Jinja2 filters (@sbidoul)
  • +
  • Device tracker - Skyhub: Improve Sky Hub error handling (@alexmogavero)
  • +
  • Notify - SMTP: Add error checking to the MIMEImage encoding (@stratosmacker)
  • +
  • Light - MQTT: Check for command topics when determining the capabilities of an MQTT light (@herm)
  • +
  • Core: Check config before restarting (@andrey-git)
  • +
  • Light - Hue: Fix groups with same names (@tboyce1)
  • +
  • Template: Add icon_template to template sensor (@tboyce1)
  • +
  • Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions (@kellerza)
  • +
  • Light - Flux: Add support for fluxled discovery. (@aequitas)
  • +
  • Media player - AppleTV: Add discovery support to Apple TV (@postlund)
  • +
  • Sensor - Template: Improve warning message in template rendering (@Danielhiversen)
  • +
  • Light - Demo: Add available property and typing hints (@rytilahti)
  • +
  • Sensor - ARWN: Enhancements to ARWN platform (@sdague)
  • +
  • Fan - ISY994: Change medium state for filtering (@Teagan42)
  • +
  • Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. (@Duoxilian)
  • +
  • Tellduslive: Don’t throw exception if connection to server is lost (@molobrakos)
  • +
  • Zoneminder: Refactoring and JSON decode error handling (@pschmitt)
  • +
  • Image processing: Cleanup Base face class add support for microsoft face detect (@pvizeli)
  • +
+

Bugfixes: @balloob, @fabaff, @pvizeli, @mnoorenberghe, @armills, @tchellomello, @aequitas, @mathewpeterson, @molobrakos, @michaelarnauts, @jabesq, @turbokongen, @JshWright, @andriej, @jawilson, @andrey-git, @nodinosaur, @konikvranik, and you if you are missing here.

+

Release 0.38.1 - February 12

+
    +
  • Fix logbook ordering (@balloob)
  • +
  • Fix AppleTV conflicting dependency breaking websockets (@balloob)
  • +
+

Release 0.38.2 - February 12

+ +

Release 0.38.3 - February 15

+
    +
  • Sonos: fix losing favorite sources on disconnect (@pvizeli)
  • +
  • Google Calendar: fix timeMin losing events (@happyleavesaoc)
  • +
  • Fix Wink PubNub subscription (@w1ll1am23)
  • +
  • Z-Wave: getter not to ignore label (@andrey-git)
  • +
  • Moon: remove unit of measurement (@fabaff)
  • +
  • MySensors: add version requirement to notify and device tracker (@MartinHjelmare)
  • +
+

Release 0.38.4 - February 21

+
    +
  • Discovery: flux_led discovery led to problems on systems and has been removed (@bazwilliams)
  • +
  • Hidden devices are no longer visible on views (@balloob)
  • +
+

Breaking changes

+
    +
  • The support for LG webOS Smart TVs was improved. This requires you to move $HOME/.pylgtv to $HASS_CONFIG_DIR/webostv.conf or Home Assistant will need to be paired with the TV again.
  • +
  • Image processing events have been renamed: identify_face has become image_processing.detect_face, found_plate has become image_processing.found_plate
  • +
  • The FFmpeg binary sensor change the platform name from ffmpeg to ffmpeg_noise and ffmpeg_motion. Also all FFmpeg-related services are moved from a platform implementation to a the FFmpeg components and were rename from binary_sensor.ffmpeg_xy to ffmpeg.xy.
  • +
  • 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.
  • +
+

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+
+
+

+ HASSbian 1.1 - The Toy-box +

+
+ + + two minutes reading time + + +
    +
  • Technology
  • +
+
+ Comments +
+
+
+

Tonight I’m happy to announce a new release of the our Raspberry Pi image, HASSbian 1.1 - The Toy-box.
+Why Toy-box you wonder? Because it encompass the changes pretty well.

+

Changes from previous image are big and small but lets start with the interesting things.

+

Hassbian-scripts

+

A set of script written to add extra functionality to your Raspberry Pi installation. +This scripts are run as the pi user and installs a set of tools or packages. +Currently includes:

+
    +
  • Install Libcec. Adds local HDMI CEC support.
  • +
  • Install Mossquitto. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support.
  • +
  • Install OpenZWave. Installs OpenZWave and prepares for using a USB or GPIO ZWave controller.
  • +
  • Install Samba. Installs the Samba packages and shares your configuration over smb to be available to edit on any computer without the need for separate file transfer software. This share is unsecured and it’s usage is not recommended if your installation is publicly available.
  • +
+

All of these scripts are available in the directory /home/pi/hassbian-scripts/. This directory is actually a cloned git repository that’s cloned on first boot and can be updated to the latest release with ease after. +To update the hassbian-scripts directory execute the following command as the pi user.

+
$ cd hassbian-scripts
+$ git pull
+
+
+

To use any of the hassbian-scripts, execute the following command as the pi user. Here we use the libcec script as an example.

+
$ sudo ./hassbian-scripts/install_libcec.sh
+
+
+

For more information about these scripts have a look a the hassbian-scripts repository.

+

Spring cleaning

+

With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image.

+
    +
  • Update pi-gen. Our build script has been upgraded to follow the Raspbian image closer. This image is basically a Raspbian lite image with Home Assistant, dependencies and a small set of changes to the base system.
  • +
  • Removed Mosquitto. Not as bad as it sounds since it’s installation has been move to one of our new hassbian-scripts.
  • +
  • Added rng-tools. Let’s your HASSbian installation use the hardware support in the Raspberry Pi for entropy generation.
  • +
  • Added avahi-daemon package. Your Raspberry Pi should now be available at hassbian.local.
  • +
  • Added htop. User friendly interactive process monitor.
  • +
  • Added tmux. A great terminal multiplexer that makes working with the command line over ssh easier.
  • +
  • Added the homeassistant user to the dialout group. Simplifies use of hardware such as ZWave USB controllers that requires this permission.
  • +
+

On the horizon

+

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 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 our Discord chat server.

+

To get started with the new image, check out the installation instructions in the getting started section.

+
+
+
+
+
+

+ Smart Baby Monitor +

+
+ + + five minutes reading time + + +
    +
  • How-To
  • +
+
+ Comments +
+
+
+

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.

+ Read on → +
+
+
+
+
+

+ 0.37: Face detection, Coffee, Wink +

+
+ + + nine minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

No stats, no numbers, and alike this time. Ok, just one number: 0.37. We are back on track with our bi-weekly release cycle. Beside some organizational changes is this release shipping again cool features and new integrations. Please keep an eye on the “Breaking changes” section because there are also massive improvements for some platforms and components.

+

Governance

+

As announced, the new Governance requires for developers to sign the CLA. Code of Conduct, Contributor License Agreement, and proper Licensing will to protect all involved parties in the Home Assistant eco-system from users and community members to contributors.

+

Face recognition using the Microsoft Face API

+

@pvizeli has been on a roll with the image processing integrations. This time it’s the Microsoft Face API. This means that now it will be possible to train the API with the people you want to recognize and send images from your camera to the API as another source of automation.

+

Want to play a personalized tune when someone enters the house? It is now possible 😎

+

Improved camera security

+

After a security audit by Stephen O’Conner, he found that our source for randomly generated access tokens for camera feeds were reasonable predictable and could be brute force attacked in 2.5 weeks. A fix has been included in this release that uses the system provided random number generator for maximum randomness and rotates the keys every 10 minutes to reduce the window in which a brute force attack can happen.

+

Although the old method is not insecure, the new method is a lot more secure. Upgrading to the latest version is encouraged.

+

New customization options

+

@Andrey-git has added some great new options to the customize functionality. It is now possible to specify customizations as a wildcard for entities or for a specific domain.

+

Major Wink and HDMI CEC improvements

+

@w1ll1am23 did an amazing job fixing a ton of bugs and issues with the Wink integration. Biggest improvement is that it now is able to automatically refresh the authentication tokens. This means that if you have your email address and password in your configuration.yaml file, no client_id and client_secret are needed, and token which was generated with the generator located in the Wink documentation.

+

The new Wink support will cause renaming of all the binary sensors and will also create new sensors for devices that weren’t previously detected or supported in the older version.

+

Thanks to @konikvranik the HDMI CEC integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI CEC and give you more control.

+

First Coffee Maker supported

+

@stu-gott has added support for the first coffee maker in Home Assistant: Mr. Coffee Smart Optimal Brew. Happy brewing!

+

All changes

+

New platforms/components

+ +

Improvements

+
    +
  • Script: Fix script release (@balloob)
  • +
  • Camera - Amcrest: Add support for direct MJPEG streams from Amcrest cameras (@colinodell)
  • +
  • Sensor - Miflora: Removing throttle decorator (@freol35241)
  • +
  • Notify - Lannouncer: Fix get_service method (@mKeRix)
  • +
  • Sensor - WAQI: Add station parameter to waqi sensor (@whhsw)
  • +
  • Sensor - USPS: Absolute path to save cookie used by USPS sensor (@tchellomello)
  • +
  • Nest: Fix python-nest release number (@Danielhiversen)
  • +
  • Keyboard remote: Improve support (@MrMep)
  • +
  • Device tracker - VolvoOnCall: Fix timedelta (@pvizeli)
  • +
  • Climate - eq3btsmart: Expose away attribute (@rytilahti)
  • +
  • Remote: Reserve a test port for broken API to fix race (@armills)
  • +
  • Climate - Ecobee: Made target temperature sensitive to auto mode (@Duoxilian)
  • +
  • Configuration: Fix load_yaml default value (@balloob)
  • +
  • Notify - Facebook: Fix encoding error (@Danielhiversen)
  • +
  • Emulated_hue: Add upnp_bind_multicast option, default type to Google, and persist emulated hue IDs (@hoopty, @balloob)
  • +
  • Docker: Install phantomjs in Docker container (@jnewland)
  • +
  • Media player - MPD: Add listing and selection of available MPD playlists (@partofthething)
  • +
  • Media player - Denon AVR: Denon improvements (@glance-)
  • +
  • Light - x10.py: Improved x10 state monitoring (@martst)
  • +
  • Sensor - DSMR: TCP, reconnecting and V4 CRC support (@aequitas)
  • +
  • Media player - Yamaha.py: Fix Yamaha doing I/O in event loop (@balloob)
  • +
  • Device tracker UPC: Make upc more robust (@pvizeli)
  • +
  • Climate - Generic thermostat: Update (@MrMep)
  • +
  • Device tracker - Xiaomi.py: Xiaomi Mi Router token refresh (@RiRomain)
  • +
  • Camera - MJPEG: Support still image for thumbmail (@pvizeli)
  • +
  • Sensor - ZAMG: Updated valid station id list (@HerrHofrat)
  • +
  • Light - ISY994: Not overwrite state_attributes (@rmkraus)emul-hue
  • +
  • Light - Zwave: Use only supported features for devices (@turbokongen)
  • +
  • Media player - Kodi: Support for volume stepping (@armills)
  • +
  • Media player- roku: Use is_screensaver, update IDLE state, and use device name (@robbiet480, @xhostplus)
  • +
  • Switch - HDMI CEC: Support for devices and commands (@konikvranik)
  • +
  • Lock - Zwave: Improvements to Zwave lock platform (@turbokongen)
  • +
  • TTS: Invalidate broken file cache entries (@stu-gott)
  • +
  • Light - Hue: Improvements (@robbiet480)
  • +
  • TTS - YandexTTS: Added speed and emotion to Yandex TTS (@lupin-de-mid)
  • +
  • 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: 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)
  • +
  • Media player - Kodi: Add SSL configuration option (@ecksun)
  • +
  • Sensor - WAQI: Add missing particle value (@fabaff)
  • +
  • Wink: Support for python-wink 1.0.0 (@w1ll1am23)
  • +
  • Binary sensor - RPi GPIO: Add a small sleep before reading the sensor (@snagytx)
  • +
  • Sensor - USPS: Add name to configuration (@happyleavesaoc)
  • +
  • Sensor - Miflora: Remove throttle decorator from miflora platform (@freol35241)
  • +
  • Device tracker - asuswrt.py: Add IPv6 support when parsing neighbors (@leppa)
  • +
  • iOS: Discover notify.ios when iOS component loads (@robbiet480)
  • +
  • Homematic: Add MAX shutter contact class (@jannau)
  • +
  • Sensor - Darksky: Added forecast support (@nordlead2005)
  • +
  • Switch - Pilight: Implement echo config option (@janLo)
  • +
  • Core: Support customize in packages (@kellerza)
  • +
  • Switch - Flux: Allow disabling setting the brightness (@rytilahti)
  • +
  • Media player - Sonos: Add is_coordinator, set coordinator after join/unjoin, and no empty image (@pvizeli, @andrey-git, @robbiet480)
  • +
  • Climate: Hold mode (@Duoxilian)
  • +
  • Switch - TPlink: No longer doing I/O in event bus (@balloob)
  • +
  • Light - Insteon local: Improve Insteon configuration (@wardcraigj)
  • +
  • Emulated Hue: Emulated Hue “host-ip” fails to bind when running in docker without --net=host (@jeremydk)
  • +
  • Climate - EQ3 BT smart: Add reporting for availability (@rytilahti)
  • +
+

Bugfix: @balloob, @fabaff, @freol35241, @pvizeli, @Danielhiversen, @tdickman, @armills, @rytilahti, @R1chardTM, @asbach, @happyleavesaoc, @robbiet480, @colinodell, @joopert, @dale3h, @pavoni, @jaharkes, @MartinHjelmare, @mezz64, @jabesq, and you if you are missing in this list.

+

Release 0.37.1 - February 2

+
    +
  • Do not reject alphanumeric IDs for PiLight (@DavidLP)
  • +
  • Fix broken Hue discovery (@DanielHiversen)
  • +
  • Fix Amcrest (@tchellomello)
  • +
  • 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)
  • +
  • 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)
  • +
  • Prevent infinite loop in crossconfigured mqtt event streams (@aequitas)
  • +
  • Fix Hue lightgroups failing on startup (@tboyce1)
  • +
+

Breaking changes

+
    +
  • A major breaking change in the emulated_hue component means that unless you set type: alexa before starting up the newer Home Assistant version you will lose all devices that Alexa has discovered and will need to re-add them as well as create new groups.
  • +
  • The platform of the ISS integration was change to binary_sensor. Please check the platform documentation.
  • +
  • The Roku media uses now a new format for the entity IDs.
  • +
  • OpenALPR is no longer a component. It’s now a platform for Image processing.
  • +
  • Due to massive improvements of the Wink integration, the names of your binary sensors will change and new devices can show up.
  • +
  • The MySensors component now requires all persistence file paths to be set if any is set by the user. This is to avoid name conflicts for the paths. If no path is set Home Assistant will set all paths for you.
  • +
  • The Sonos service sonos_group_players was removed. Use now sonos_join for this function.
  • +
  • TTS cache have change for the last time. Files use now also an 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.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+
+
+

+ Home Assistant Governance [updated] +

+
+ + + five minutes reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+
+

UPDATE JAN 28, 2017

+

After feedback from the community we have updated the CLA and the license that Home Assistant is distributed under. For the CLA, instead of enforcing requirements on the grants and code, we now require contributions to be licensed under the Apache 2.0 license. Special thanks to Matthew Garrett for his feedback and advice.

+

Starting with release 0.37, Home Assistant will re-license the current code under the Apache 2.0 license. This is the license that will be used moving forward for all projects under our organization.

+
+

The Home Assistant project and community has seen enormous growth in the last three years. Many volunteers work tirelessly everyday to give you all the awesomeness that you see today. Much more work is involved than many people realize. Beyond simply coding Home Assistant, volunteers continually maintain related projects, update documentation, post examples, author blog posts, and moderate the forums and chat. This is something that we want to keep safe and functional, even as we grow.

+

Starting today we are announcing a few initiatives to help protect our users, contributors and community members.

+ Read on → +
+
+
+
+
+

+ Numbers +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

It’s week 3 of 2017 and great things did already happen. This is just a little recap.

+
    +
  • In the OSS Metrics leaderboard we are on place 30. Within three months we moved from our starting place which was 66 in September 2016 up to the current one.
  • +
  • We were listed on Github Trending. Also, was @balloob mentioned as trending developer.
  • +
  • @balloob’s talk at the OpenIoT Summit 2016 was rated as one of the Top 5 videos of the conference.
  • +
  • We now ship over 500 components and platforms.
  • +
  • We processed over 3500 Pull requests on the main repository so far.
  • +
+

You may ask yourself why this is amazing. It’s amazing because we are a community-only project driven by volunteers there is no financial support, no company in the background, and no paid developers who are working on Home Assistant. Here is another “Thank you” because you are the driving force behind Home Assistant.

+

What more numbers? Checkout the Trivia page

+

– Fabian

+
+
+
+
+
+

+ 0.36: ISS, USPS, Image processing, Insteon +

+
+ + + five minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Welcome to 2017 and 0.36. We are proud to announce the first release for this year. While we are still migrating parts to async but 0.36 is focusing on new features and a lot of bug fixes.

+

Packages

+

Packages are providing a new way to organize different component’s configuration parts together. With packages we offer the option to include different components or parts of configuration using any of the !include directives.

+

InfluxDB export

+

The InfluxDB component was causing problems in a wide variety of use cases. @titilambert improved our InfluxDB exporter feature. It might be that you need to run the migration script to update your InfluxDB database.

+
$ hass --script influxdb_migrator \
+    -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \
+    -d INFLUXDB_DB_NAME
+
+
+

International Space Station (ISS)

+

No, unfortunately we are not going to space. The iss sensor is tracking the position of the International Space Station and gives you some details.

+

Insteon local

+

The support for Insteon was removed due to issues a while ago. With the insteon_local component support for Insteon is back and let one work locally with an Insteon setup.

+

Image processing

+

The new image processing component currently works with number plates. But this could level the way to integrate feature like facial recognition, motion detection, or gestures control.

+

All changes

+ +

Release 0.36.1 - January 17

+ +

Breaking changes

+
    +
  • APNS service was moved to the notify domain. Use notify.apns_NOTIFIER_NAME instead of apns.NOTIFIER_NAME.
  • +
  • InfluxDB component has a new schema to store values in the InfluxDB database. You may require to run the influxdb_migrator script. +You have to note: +
      +
    • There will not be any tags/fields named time anymore.
    • +
    • All numeric fields (int/float/bool) will be stored as float inside influx db.
    • +
    • All string fields corresponding to state attributes will be renamed as FIELDNAME_str, where FIELDNAME is the state attribute, to avoid type conflicts.
    • +
    • All string fields corresponding to a state will be renamed as state (former value).
    • +
    • Fields named value will always be stored as float.
    • +
    • Fields named state will always be stored as string.
    • +
    +
  • +
  • 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.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/blog/posts/9/index.html b/blog/posts/9/index.html new file mode 100644 index 0000000000..ef7fef79fc --- /dev/null +++ b/blog/posts/9/index.html @@ -0,0 +1,1164 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Control My Christmas Tree Stats +

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

Hello and Happy New Year!

+

I am not Paulus. My name is Ben. I’m the creator of the BRUH Automation YouTube channel. 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! 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!

+

+ + The Christmas tree in action. +

+ Read on → +
+
+
+
+
+

+ Thank You +

+
+ + + two minutes reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

A year ago Home Assistant 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. 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.

+

However, being on a two week release cycle also means that the community has to rally each two weeks to make sure everything is ready to go. A lot of people are involved in making sure that all pieces are in place, to all of those: thank you! Thank you for all the time and effort you put in to make Home Assistant the best home automation software out there.

+

Another big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. Making quality software is not a small feat and all of you can be proud of yourself.

+

Also a big thanks for the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thanks GitHub, TravisCI, CloudFlare and Discourse!

+

And finally thank you community for being so helpful and awesome 🙇.

+

We’re taking a well deserved break and we will be back again in 2017 with more awesomeness. Happy holidays!

+

– Paulus

+
+
+
+
+
+

+ 0.35: Text-to-speech, VLC, Flic, netdata +

+
+ + + four minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

5000 stars on GitHub, 2000 people in our 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.

+

This will be the last release of 2016 as our developers are taking a well deserved break. We will be back in 2017!

+

Text to Speech

+

With the addition of a text-to-speech component by @pvizeli we have been able to bring Home Assistant to a whole new level. The text-to-speech component will take in any text and will play it on a media player that supports to play media. We have tested this on Sonos, Chromecast, and Google Home.

+

https://www.youtube.com/watch?v=Ke0QuoJ4tRM

+

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 developer chat and take a stab at one of our open issues.

+

VLC media player, Broadlink, and GPSLogger

+

Let you control VLC media player and play sound on connected speakers.

+

This Broadlink switch platform allow to you control Broadlink RM2 Pro and RM mini IR+RF devices. This Broadlink sensor platform adds support for Broadlink RM2 and A1 Devices.

+

The GPSLogger now also supports attributes as the speed, direction, altitude, provider, and activity.

+

All changes

+ +

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:

+
http:
+  base_url: example.duckdns.org
+
+
+
    +
  • Fix exit hanging on OS X with async logging (@balloob)
  • +
  • Fix Text to speech clearing cache (@pvizeli)
  • +
  • Allow setting a base API url in HTTP component (@balloob)
  • +
  • Fix occasional errors in automation (@pvizeli)
  • +
+

Release 0.35.2 - December 19

+
    +
  • When base url specified, do not combine it with server_port (@balloob)
  • +
+

Release 0.35.3 - December 23

+
    +
  • Fix issue with voicerrs and post api (@pvizeli)
  • +
  • Fix async component update on service calls (@pvizeli)
  • +
  • Fix async log handle do not close (@pvizeli)
  • +
  • Fix nest component with various KeyError exceptions (@technicalpickles)
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. 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. Make sure to fill in all fields of the issue template.

+
+
+
+
+
+

+ 0.34: New Remote component, Websockets, Sonarr, GPSLogger +

+
+ + + six minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Here we go… 0.34. Let’s call it the “Santa Claus” release. Rudolph was faster than expected and there’s lot’s of goodies on the sleigh. Of course, more work on async programming done by @pvizeli and @balloob, new components, new platforms, major improvements, and much more.

+

GPSLogger

+

The work of @dainok let’s you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the GPSLogger app. GPSLogger can use multiple sources: the passive one just get the latest Android known location, without activating GPS sensors or scanning for WiFi networks.

+

Remote component

+

The brand new remote component made by @iandday will simplify the integration of all kinds of remote control units. The first platform for Harmony is included in this release.

+

HomeMatic

+

The HomeMatic component has received some updates worth mentioning:

+
    +
  • Additional services +
      +
    • reconnect: Reconnect to your CCU/Homegear without restarting Home Assistant.
    • +
    • set_dev_value: Manually control a device, even if it’s not supported by Home Assistant yet.
    • +
    +
  • +
  • Support for multiple HomeMatic hosts
  • +
  • Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices)
  • +
  • Various improvements and fixes, especially for HM-Sec-Key (KeyMatic)
  • +
+

The support for multiple hosts is a result of allowing mixed configurations with wireless, wired, and IP devices. This has the drawback of making the update a breaking change (along with the renamed set_value service). However, the benefits and possibilities gained will be worth it.

+

Websocket API

+

This release includes a new websockets based API by @balloob to power the next generation of Home Assistant frontends. The current frontend has been partly migrated to use it and will be further migrated in the future.

+

All changes

+ +

Release 0.34.1 - December 4

+

This release has a bunch of bug fixes including a big one: emulated_hue will now work with Google Home! We usually reserve patch releases for small bug fixes but we considered this more impactful bug fix so important that we’re including it now instead of having people wait two weeks.

+

To make the fix backwards compatible (it is a patch release after all) you will have to add two new configuration option to emulated_hue to have it work with Google Home:

+
emulated_hue:
+  type: google_home
+  # This is important. Sadly, Google Home will not work with other ports.
+  listen_port: 80
+
+
+

We are working on a better solution for 0.35.

+ +

Release 0.34.2 - December 5

+
    +
  • Fix Nest interpreting Celsius as Fahrenheit and converting it (@balloob)
  • +
  • Fix Nest sensor platforms throwing errors (@technicalpickles)
  • +
  • Frontend will now always show persistent_notification and configurator entities even if not part of the active view (@balloob)
  • +
  • Fixed media player cards taking up unnecessary space (@balloob)
  • +
+

Release 0.34.3 - December 6

+
    +
  • Fix Hook connections (@dasos)
  • +
  • Fix random websocket connections (@balloob)
  • +
  • Fix Google Home sometimes not finding our emulated_hue (@jawilson)
  • +
  • Fix EnOcean config validation (@rubund)
  • +
+

Release 0.34.4 - December 7

+
    +
  • 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 between turning on multiple entities (@balloob)
  • +
  • Fix Nest Climate temperature issues (@technicalpickles)
  • +
+

Release 0.34.5 - December 12

+
    +
  • Fix Nest sensors doing I/O inside event loop (@balloob)
  • +
  • Fix Nest version bump not triggering re-install (@R1chardTM)
  • +
  • Fix Nest cameras without activity zones (@technicalpickles)
  • +
  • Fix Plex doing I/O inside event loop (@balloob)
  • +
+

Breaking changes

+
    +
  • The HomeMatic component now uses a different syntax for hosts and the set_value service has been renamed.
  • +
  • All RFXtrx sensors will get a new entity ID.
  • +
  • The frontend now uses websockets. If you run a server in front of Home Assistant, you will have to update your config (example nginx)
  • +
  • Nest contains changes which will require your attention.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you use these communication channels. Thanks.

+

Reporting Issues

+

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

+
+
+
+
+
+

+ 0.33: New Calendar component, Wink thermostats and Cisco IOS +

+
+ + + three minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

For this release we put a lot of focus on finishing our async upgrade and fix a bunch of bugs in the process.

+

But a new release wouldn’t be awesome if it didn’t had some new goodies and this release is no different. This release includes a new calendar component by @mnestor. It comes now with Google Calendar support, which should allow you to automate things based on your calendar events!

+

Changes

+ +

Release 0.33.1 - November 20

+ +

Release 0.33.2 - November 22

+ +

Release 0.33.3 - November 23

+
    +
  • Update Yr.no entities every hour (@kellerza)
  • +
  • Bump Netdisco to 0.7.7 (fixes discovery on Synology)
  • +
  • Fix discovery race condition (most obvious in Wemo) (@balloob)
  • +
+

Release 0.33.4 - November 24

+
    +
  • Set executor pool size to 10 (as intended) (@pvizeli)
  • +
+

This should fix occasional performance problems that some people have reported.

+

Breaking changes

+
    +
  • We have included a fix that impacts how we generate entity ids. This only impacts devices with accented characters. Instead of being stripped out, they are now replaced with the non-accented version. So now Tèst Mörê will become test_more instead of tst_mr.
  • +
  • Command line switches will now use the specified object ID for their entity ID instead of basing it off the name.
  • +
+

Reporting issues

+

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

+
+
+
+
+
+

+ 0.32: Hacktoberfest, InfluxDB sensor, Error reporting, and Weather +

+
+ + + six minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Another two weeks have passed and we are pleased to present Home Assistant 0.32.

+

Hacktoberfest

+

The Hacktoberfest is over now. Home Assistant made the 2nd and the 3rd place out of almost 30’000 participating repositories with a total of 528 pull requests closed - that’s an average of 17 pull requests a day! Thanks to all the contributors but also to the team of reviewers. This wouldn’t been possible without you 👏 .

+

Improved error reporting

+

This release has improved the reporting when a config validation error occurs. Thanks to @kellerza you will now get a persistent notification added to your UI when this happens.

+

Asynchronous

+

This release contains the first asynchronous sensor and camera platforms. @pvizeli and @fabaff ported most of the “internal” sensors to async programming. We hope that you will enjoy the new speed.

+

@balloob and @pvizeli worked a lot on the improvement of the core itself.

+

Weather component

+

For a long time we have had a bunch of weather sensors but it’s getting better: There is now a Weather component. Sorry, not much more to tell right now. The plans are to create a weather UI element and to improve the initial implementation.

+

All changes

+

+ +

Release 0.32.1 - November 6

+

We’ve added a warning to 0.32 to catch platforms accidentally slowing down Home Assistant. Our aim is to fix these quickly when reported, so here is 0.32.1 with all reported platforms fixed.

+
    +
  • Fix Sonos doing I/O inside the event loop (@pvizeli)
  • +
  • Fix Radiotherm doing I/O inside the event loop (@balloob)
  • +
  • Fix camera MJPEG streams when using HTTP 1.0 (@balloob)
  • +
+

Release 0.32.2 - November 7

+
    +
  • Move Honeywell I/O out of the event loop (@balloob)
  • +
  • Use sequential updates for non-async entities to prevent race conditions (@pvizeli)
  • +
  • Fix setting temperature in Celsius on Radiotherm CT50 thermostats (@andyat)
  • +
  • Fix PiLight config validation (@DavidLP)
  • +
+

Release 0.32.3 - November 11

+
    +
  • Fix OpenWeather weather platform doing I/O in event loop (@lwis)
  • +
  • Fix Alarm.com doing I/O in event loop (@jnewland)
  • +
  • Fix Tellstick doing I/O in event loop (@balloob)
  • +
  • Fix KNX doing I/O in event loop (@balloob)
  • +
  • Increase warning threshold for catching platforms that do I/O (@balloob)
  • +
  • Change pilight systemcode validation (@janLo)
  • +
  • Fix Yamaha discovering already configured receivers (@sdague)
  • +
  • Fix Sonos from installing dependency each time HA was started (@pvizeli)
  • +
  • Fix Synology camera SSL and error handling (@pvizeli)
  • +
  • Fix Panasonic Viera doing I/O in event loop (@balloob)
  • +
  • Improve generic camera error handling (@kellerza)
  • +
  • Light - Flux Led Lights: allow specifying mode if light does not support white mode (@DanielHiversen)
  • +
  • Fix Rest switch default template (@pvizeli)
  • +
+

Release 0.32.4 - November 15

+
    +
  • Fix device tracker from crashing HASS when a new device was discovered (@balloob)
  • +
  • HTTP: Fix X-Forwarded-For feature (@mweinelt)
  • +
+

Misc

+

Our website has now an additional category called “Ecosystem”. This will become the place where tools, apps, and other helper for the Home Assistant ecosystem can store their documentation or guides.

+ +

Breaking changes

+
    +
  • The Yahoo Finance platform supports now multiple stock. Please adjust your configuration.
  • +
  • Deprecated components garage_door, rollershutter, thermostat, and hvac have been removed.
  • +
  • The minimum Python version on Windows has been bumped to Python 3.5.
  • +
  • The Insteon Hub integration has been disabled due to a request from Insteon.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+
+
+
+
+
+

+ Explaining the Updater +

+
+ + + three minutes reading time + + +
    +
  • Organization
  • +
+
+ Comments +
+
+
+

On Saturday, we released Home Assistant 0.31 which includes an improved updater component that checks for new versions using the Home Assistant servers. We wanted to update the community on its rollout and answer some questions that have come up. As part of the update check anonymous information about your operating system and Python version is submitted to Home Assistant servers unless you have opted out.

+ Read on → +
+
+
+
+
+

+ 0.31: Reading you the news, some serious business, spooky hackery and a breaking Z-Wave change +

+
+ + + 14 minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

Hello again friend,

+

How are you? Having a good day? We sure are. If you aren’t having a good day, this might cheer you up…

+

Every other weekend around here gets a little hectic leading to a big sigh of relief as we release a new version of Home Assistant to the world. And this time is no different. Our developer community has once again built us a beautiful new release with lots of new features and improvements. We hope you like it.

+

One last thing before we get going though, I should warn you… @balloob got a bit lazy this week and let me (@robbiet480) step up to the plate again to write the blog post and do the release. I guess I didn’t do such a bad job in 0.27. You’ll never know what surprises I have in store. Now that i’ve got all that stuff out of the way, let’s get started…

+

Stats Update

+

Sadly, no big amazing stats to update you with this time, but we did recently pass 7,000 commits! This release featured submissions from 45 contributors. Hopefully with the new updater component we will be able to give you some really good stats in the 0.32 blog post.

+

Hacktoberfest

+

Hacktoberfest logo

+

October means Hacktoberfest time and our community has really come through with some excellent improvements and additions. As of this writing, we have 194 merged and 41 open pull requests to the home-assistant repository and 209 merged/28 open pull requests submitted to the home-assistant.github.io repository. If you want to get in on the fun check out our Hacktoberfest blog post or the Hacktoberfest website. You get an awesome t-shirt for free if you have 4 pull requests merged in the month of October! We even have tasks that a non-developer can easily accomplish with a tiny bit of work. Better hurry up though, only 9 days left and most of the easy tasks are gone!

+

⚠️ A greatly improved updater component (Please read this!) ⚠️

+

This release includes an update to our updater component. The responsibility of the updater component is to check if a new version is available and notify the user if this is the case.

+

It used to be that this component would check with PyPi (the Python package manager) to see if a new update was available. This had a couple of problems:

+
    +
  1. We are unable to do a slow rollout
  2. +
  3. We are unable to show the user extra information (like a link to a changelog or the release date)
  4. +
  5. We are unable to warn users for critical security updates
  6. +
+

So to work around these problems, we decided to start hosting the version check service ourselves. Since we had to get some infrastructure spun up anyway, we figured we would take it a step further. Which leads me to this bit of the update (the most important part):

+

What you need to know (the important bit!)

+

Remember how I mentioned that up there in the title that there is some serious business in this release? Well, we also added some basic analytics to the updater component which get sent to the server and stored so that we get a better idea of our user base.

+

Each Home Assistant instance running the updater component will generate a unique ID (based on UUIDv4) that will be used for the updater to be able to differentiate between instances. This UUID will be stored in your config directory in a file called .uuid.

+

Opting out

+

There are two ways to opt-out. The first way is by using the new opt_out option for the updater. This way the updater will continue to check for updates, but no information about your system will be shared with us.

+
updater:
+  reporting: no
+
+
+

You can also disable the updater component entirely by removing updater: from your configuration.yaml although we would not suggest you do this as you would miss any critical updates.

+

Finally, you can also reset your unique identifier by deleting the .uuid file and restarting Home Assistant.

+

Data stored on the Home Assistant update server

+

Here is what my production Home Assistant instance looks like from the server side:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionExample
archCPU Architecturex86_64
distributionLinux Distribution name (only Linux)Ubuntu
dockerTrue if running inside Dockerfalse
os_nameOperating system nameDarwin
os_versionOperating system version10.12
python_versionPython version3.5.2
timezoneTimezoneAmerica/Los_Angeles
user_agentUser agent used to submit analyticspython-requests/2.11.1
uuidUnique identifier10321ee6094d4a2ebb5ed55c675d5f5e
versionHome Assistant version0.31.0
virtualenvTrue if running inside virtualenvtrue
+

In addition to the above collected data, the server will also use your IP address to do a geographic IP address lookup to determine the city that you are from. To be extremely, extremely clear about this bit: The Home Assistant updater does not: store your IP address in a database and also does not submit the location information from your configuration.yaml.

+

+ + Geo-lookup on my IP resolves to Oakland with latitude/longitude pointing at the geographical center of the city. +

+

The server also adds two timestamps to the data: the original date your instance UUID was first seen and the timestamp of the last time we have seen your instance. This gives us the following extra data:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionExample
first_seen_datetimeFirst time instance ID was submitted2016-10-22T19:56:03.542Z
geo_cityGeoIP determined cityOakland
geo_country_codeGeoIP determined country codeUS
geo_country_nameGeoIP determined country nameUnited States
geo_latitudeGeoIP determined latitude (of the city)37.8047
geo_longitudeGeoIP determined longitude (of the city)-122.2124
geo_metro_codeGeoIP determined metro code807
geo_region_codeGeoIP determined region codeCA
geo_region_nameGeoIP determined region nameCalifornia
geo_time_zoneGeoIP determined time zoneAmerica/Los_Angeles
geo_zip_codeGeoIP determined zip code94602
last_seen_datetimeMost recent time instance ID was submitted2016-10-22T19:56:03.542Z
+

This data is held in the highest security. The update system runs in a secured Amazon Web Services account owned by me (@robbiet480). I personally have 5 years of experience with complex AWS deployments and have an extensive security background. I have audited the entire system and made sure to take every step to protect the data, including limiting who has access (just @balloob and myself). While not directly personally identifiable we absolutely understand some users hesistance to giving this information out. Please understand that we are only collecting this information to better understand our user base to provide better long term support and feature development then is currently possible.

+

We currently have 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 thank you for understanding why we are collecting this data and hope that you leave the feature enabled but fully understand if you feel uncomfortable with this.

+

This section was updated on October 24 to be more clear about geo-lookups being on the city level. See original version.

+

Now, back to the fun stuff…

+

Good evening. I’m Ron Burgundy and here’s what happening in your world tonight.

+

Home Assistant got a crazy idea recently that it couldn’t do enough already and wanted to challenge itself even more. I really don’t understand how it came up with this kooky idea, but it now thinks that its newest hobby should be a minor career in journalism.

+

0.31 adds support for the brand spanking new Alexa Flash Briefing API, allowing you to get updates from Home Assistant anytime you ask Alexa to read your flash briefing. What’s the use case you ask? Well, now when I wake up in the morning and get my flash briefing, Home Assistant adds this to the end of it for me:

+
+

Drive time with traffic is 35 minutes. There is an UberPOOL that will cost $11.52, estimated to be 2 minutes away, for a total of 37 minutes. BART is currently estimated to take 29 minutes. You should take BART, as it is estimated to be faster by 8 minutes.

+
+

Now I know how to best get to my real job (no, Home Assistant is not my real job, it does seem like it sometimes though) every morning. Obviously not the best home automation example, but I think you get the idea. I could see this being used to tell you any major events that happened in your home overnight or reading you your hyperlocal weather report. Thanks to the audio support you could even replace all of the default Alexa Flash Briefing sources with your own news feeds. Home Assistant supports both text and audio content as well as displaying data in the Alexa app. I also want to point out that unlike the existing Skill integration, the Flash Briefing API does not require HTTPS (but you should still be using HTTPS if possible). For more information, check out the new docs.

+

+ + You stay classy, San Diego. (It’s funny, because balloob lives in San Diego)) +

+

Major breaking Z-Wave changes ahead

+

A rather nasty Z-Wave issue was discovered recently by @lukas-hetzenecker. There was a somewhat large chance that if you had multiple of the same model Z-Wave device they may both try to use the same entity IDs. To fix the issue the internal Z-Wave index is now appended to the end of all Z-Wave entity IDs.

+

What this means for all you Z-Wave users is that you will need to update your configurations to reflect the change. I personally have quite a few (17) Z-Wave devices and went through the process this week. Here’s what I had to do:

+
    +
  • Update customizations
  • +
  • Update groups
  • +
  • Update my zwave.customize section
  • +
  • Update my Alexa skills that used old entity IDs
  • +
  • Because I use emulated_hue with Alexa and emulated_hue uses the entity ID as a unique identifier I also had to remove all Z-Wave devices from Alexa and re-add them.
  • +
+

Your todo list may be a little different from mine, I just wanted to outline the steps I took to give you an idea of what you need to think about. It’s not a very hard process, especially when using global find and replace in Sublime Text but did take me about 20 minutes to complete.

+

This is super annoying, I know, especially since we had said in 0.12 that Z-Wave IDs should hopefully never change again, but we are now forced to eat those words. I will state again that Z-Wave IDs shouldn’t change in the future but obviously we see how that went. To sum up on this section… sorry but it had to happen.

+

All changes

+ +

Release 0.31.1 - October 24

+
    +
  • Identify special character encoding error in YAML files (@kellerza, @lwis)
  • +
  • iOS app component bug fixes (@robbiet480)
  • +
  • Fix a spelling problem on user-facing error (@robbiet480)
  • +
  • YAML includes will ignore dirs/files prefixed with . (@lwis)
  • +
+

Breaking changes

+
    +
  • The HTTP component now takes a different format for authenticating IPs
  • +
  • Configuration format has changed for Proximity
  • +
  • The Arduino platform are now covered by the configuration check. Please check the documentation to see how.
  • +
  • The Z-Wave entity ID change mentioned above
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+

Until next time

+

Thanks for reading all of the above, especially since this week was a pretty long post. We should be back with a new post around November 5th announcing the arrival of 0.32.

+

– Robbie

+
+
+
+
+
+

+ 0.30: More Async, HASSbian, Digital Ocean, statistics, REST +

+
+ + + seven minutes reading time + + +
    +
  • Release-Notes
  • +
+
+ Comments +
+
+
+

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 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, issue report, and suggestions 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.

+

To reduce the run-time of your tests, @balloob did a lot of tweaking. For now the RFXtrx tests are excluded which cut the needed time for running on your Pull Request in half.

+

Documentation

+

All configuration sample entries are now minimized. This should help to avoid problem for starters and newbies as they only get what’s needed and not a full sample with all optional entries. If there is an issue with an entry in your configuration.yaml file the error message will provide you an URL that point to the documentation.

+

+ +

+

As soon as the Hacktoberfest started there were a lot of incoming Pull Requests for the documentation. A huge “Thank you” to all participants. Especially, we would like to give a cookie to @hillaryfraley. She created around a dozen Pull Requests so far and didn’t only fix typos but complete sections. The Hacktoberfest is still on-going and we are looking forward to get more Pull Requests.

+

Statistics

+

With the statistics sensor we would like to introduce a new sensor that is similar to the template sensor or the trend sensor. This sensor is consuming values from another sensor and is doing some statistical analysis of the data. Over a group of samples is the average/mean, the min/max, the total, the standard deviation, and the variance calculated which can be used in your automation rules. If the source is a binary sensor then the state changes are counted.

+

+ +

+

As the results are processed on-the-fly you still need to use the data from your database for an in-depth analysis of your stored information. Check the latest notebook for doing statistics with your Home Assistant database.

+

REST! We don’t…

+

There was a lot of work done on our implementation which are working with RESTful APIs. @w1ll1am23 extended the aREST platforms to display if an aREST unit is available or not. The aREST implementations are now covered by the configuration check as well. Please check the Breaking changes section for more details.

+

The REST sensor supports now HTTP authentication (basic and digest) and custom headers. This will allow you to access resources which are protected. This sample sensor will access GitHub and retrieve the latest release number while by-passing the rate limit for non-authenticated requests.

+
sensor
+  - platform: rest
+    resource: https://api.github.com/repos/home-assistant/home-assistant/releases/latest
+    username: YOUR_GITHUB_USERNAME
+    password: YOUR_GITHUB_ACCESS_TOKEN
+    authentication: basic
+    value_template: '{{ value_json.tag_name }}'
+    headers:
+      Accept: application/vnd.github.v3+json
+      Content-Type: application/json
+      User-Agent: Home Assistant REST sensor
+
+
+

Misc

+
    +
  • GitHub released with a recent update a review feature. This will give you more control over your comments while you review an open Pull Request.
  • +
  • Thanks to @robbiet480 we are now running mention-bot. It will help you when you create a new Pull Request to identify potential reviewers.
  • +
  • The Home Assistant Community Forum has now an additional section called “Installation”.
  • +
+

All changes

+

+ +

Release 0.30.1 - October 8

+
    +
  • Device Tracker known_devices.yaml validation is now more accepting (@kellerza)
  • +
  • Handle X10 light numbers greater than 9 (@mtl010957)
  • +
  • Fix command line covers without a template (@roidayan)
  • +
+

Release 0.30.2 - October 12

+
    +
  • Handle Volvo’s with dashes in their name (@molobrakos)
  • +
  • Fix some html5 push notification configuration options were discarded after first use (@T3m3z)
  • +
  • Fix Homematic device name with autodiscovery (@pvizeli)
  • +
  • Make ‘pin’ optional for zigbee device config (@flyte)
  • +
  • Fix when sending a notification to a service with target attached (i.e. notify.html5_unnamed_device_2) the target was not submitted to the platform as a list causing iteration over every character in the string. (@robbiet480)
  • +
  • Fix for Slack targets (@fabaff)
  • +
  • Fix for Pushover targets (@Nixon506E)
  • +
+

Breaking changes

+
    +
  • All deprecated condition options from automation have been removed (deprecated since May and have printed warnings to your console): +
      +
    • use_trigger_values is gone. You have to copy your triggers to conditions and adjust for the correct config.
    • +
    • condition_type is gone. Use condition: or instead.
    • +
    • To specify the type of a condition, use condition: instead of platform:.
    • +
    +
  • +
  • The Forecast.io was renamed to Dark Sky. Replace your - platform: forecast with - platform: darksky.
  • +
  • The aREST configuration between the sensor and the switch platform was aligned.
  • +
+

If you need help…

+

…don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.

+
+
+
+
+
+

+ Participating in Hacktoberfest +

+
+ + + Less than one minute reading time + + +
    +
  • Community
  • +
+
+ Comments +
+
+
+

Home Assistant will join this year for Hacktoberfest, 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 fix them. If you submit four pull-requests during the month of October you will have earned yourself a limited edition Hacktoberfest T-shirt!

+

Why contribute to Home Assistant:

+
    +
  • Written in Python3 with 94% test coverage
  • +
  • Active and helpful community
  • +
  • Friendly to new contributors
  • +
+

Resources to get started:

+ +

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.

+

Hacktober fest logo

+
+
+
+ +
+ +
+
+ + + + + + + diff --git a/cloud/alexa/index.html b/cloud/alexa/index.html new file mode 100644 index 0000000000..8d340da248 --- /dev/null +++ b/cloud/alexa/index.html @@ -0,0 +1,257 @@ + + + + + + + + + Alexa via Home Assistant Cloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Alexa via Home Assistant Cloud +

+
+
+

The Alexa integration allows users to control the entities via the Home Assistant Smart Home skill for Alexa. This means that you can say things like “Alexa, turn on the kitchen light” to control your local Home Assistant.

+

To use this integration, you need to have:

+ +

You can use configuration.yaml to configure the entities that are being shown to Alexa and how they are exposed.

+
# Example configuration.yaml entry configuring Alexa
+cloud:
+  alexa:
+    filter:
+      include_entities:
+        - light.kitchen
+        - light.kitchen_left
+      include_domains:
+        - switch
+      exclude_entities:
+        - switch.outside
+    entity_config:
+      light.kitchen:
+        name: Custom Name for Alexa
+        description: The light in the kitchen
+      switch.stairs:
+        display_categories: LIGHT
+
+
+
+

Configuration Variables

+
+
alexa
+
+

(map)(Optional)Configuration options for the Amazon Alexa integration.

+
+
+
+
filter
+
+

(map)(Optional)Filters for entities to include/exclude from Alexa.

+
+
+
+
include_entities
+
+

(list)(Optional)Entity IDs to include.

+
+
include_domains
+
+

(list)(Optional)Domains to include.

+
+
exclude_entities
+
+

(list)(Optional)Entity IDs to exclude.

+
+
exclude_domains
+
+

(list)(Optional)Domains to exclude.

+
+
+
+
entity_config
+
+

(map)(Optional)Entity specific configuration for Alexa

+
+
+
+
<ENTITY_ID>
+
+

(map)(Optional)Entity to configure

+
+
+
+
name
+
+

(string)(Optional)Name of entity to show in Alexa

+
+
description
+
+

(string)(Optional)Description of entity to show in Alexa

+
+
display_categories
+
+

(string)(Optional)The display category to use in Alexa. Available categories

+
+
+
+
+
+
+
+
+
+

Possible values for customizing

+

Configuration via customize: is no longer available. Use the entity config as described above.

+

Available domains

+

Currently, the following domains are available to be used with Alexa:

+
    +
  • alert
  • +
  • automation (enables/disables)
  • +
  • cover
  • +
  • fan (supports on/off and set speed)
  • +
  • group
  • +
  • input_boolean
  • +
  • light
  • +
  • lock (lock and unlock, but unlock is untested as Amazon has disabled unlock for now)
  • +
  • media_player (play, pause, stop, set volume, adjust volume, next track, and previous track)
  • +
  • scene
  • +
  • script (enables/disables)
  • +
  • switch
  • +
+
+
+
+ +
+ + + + + + + + diff --git a/cloud/index.html b/cloud/index.html new file mode 100644 index 0000000000..350224048f --- /dev/null +++ b/cloud/index.html @@ -0,0 +1,168 @@ + + + + + + + + + Home Assistant Cloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Home Assistant Cloud +

+
+
+

The Home Assistant Cloud is currently free and will become part of the upcoming Community Support Package. Learn more

+

The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa.

+

The following integrations are currently available:

+ + +

How does it work?

+

The Home Assistant Cloud has been designed with security in mind. When you activate the Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet.

+

Integrations like Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger!

+

You can find a list of frequently asked questions (and their answers) in this blog post.

+

Enabling the cloud

+

The Home Assistant Cloud is enabled by default. If not, add this to your configuration:

+
# Example configuration.yaml entry to enable the cloud component
+cloud:
+
+
+

Once activated, go to the configuration panel in Home Assistant and create an account and log in. If you are not seeing the Configuration panel, make sure you have the following option enabled in your configuration.yaml` file.

+
config:
+
+
+
+
+
+ +
+ + + + + + + + diff --git a/code_of_conduct/index.html b/code_of_conduct/index.html new file mode 100644 index 0000000000..143db233b0 --- /dev/null +++ b/code_of_conduct/index.html @@ -0,0 +1,188 @@ + + + + + + + + + Code of Conduct - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Code of Conduct +

+
+
+

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 +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation.

+

Our Standards

+

Examples of behavior that contributes to creating a positive environment +include:

+
    +
  • Using welcoming and inclusive language
  • +
  • Being respectful of differing viewpoints and experiences
  • +
  • Gracefully accepting constructive criticism
  • +
  • Focusing on what is best for the community
  • +
  • Showing empathy towards other community members
  • +
+

Examples of unacceptable behavior by participants include:

+
    +
  • The use of sexualized language or imagery and unwelcome sexual attention or +advances
  • +
  • Trolling, insulting/derogatory comments, and personal or political attacks
  • +
  • Public or private harassment
  • +
  • Publishing others’ private information, such as a physical or electronic +address, without explicit permission
  • +
  • Other conduct which could reasonably be considered inappropriate in a +professional setting
  • +
+

Our Responsibilities

+

Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior.

+

Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +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

+

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 +representing a project or community include using an official project e-mail +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

+

Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at safety@home-assistant.io. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately.

+

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

+

This Code of Conduct is adapted from the Contributor Covenant, version 1.4, +available here.

+

Adoption

+

This Code of Conduct was first adopted January 21st, 2017 and announced in this blog post.

+
+
+
+
+ + + + + + + diff --git a/components/abode/index.html b/components/abode/index.html new file mode 100644 index 0000000000..e1cef07d58 --- /dev/null +++ b/components/abode/index.html @@ -0,0 +1,630 @@ + + + + + + + + + Abode Home Security - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Home Security +

+
+
+

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 for further information about Abode Security.

+

There is currently support for the following device types within Home Assistant:

+
    +
  • Alarm Control Panel: Reports on the current alarm status and can be used to arm and disarm the system.
  • +
  • Binary Sensor: Reports on Quick Actions, Door Contacts, Connectivity sensors (remotes, keypads, and status indicators), Moisture sensors, and Motion or Occupancy sensors.
  • +
  • Camera: Reports on Camera devices and will download and show the latest captured still image.
  • +
  • Cover: Reports on Secure Barriers and can be used to open and close the cover.
  • +
  • Lock: Reports on Door Locks and can be used to lock and unlock the door.
  • +
  • Light: Reports on Dimmer lights and can be used to dim, change color, or turn the light on and off.
  • +
  • Switch: 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: Reports on Temperature, Humidity, and Light sensors.
  • +
+

Configuration

+

To use Abode devices in your installation, add the following abode section to your configuration.yaml file:

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

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
device_idThe Abode device ID of the event.
device_nameThe Abode device name of the event.
device_typeThe Abode device type of the event.
event_codeThe event code of the event.
event_nameThe name of the event.
event_typeThe type of the event.
event_utcThe UTC timestamp of the event.
user_nameThe Abode user that triggered the event, if applicable.
dateThe date of the event in the format MM/DD/YYYY.
timeThe time of the event in the format HH:MM AM.
+

There is a unique list of known event_codes that can be found here.

+

Services

+

Service change_setting

+

Change settings on your Abode system. For a full list of settings and valid values, consult the AbodePy settings section.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
settingNoThe setting you wish to change.
valueNoThe value you wish to change the setting to.
+

Service capture_image

+

Request a new still image from your Abode IR camera.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idNoString or list of strings that point at entity_ids of Abode cameras.
+

Service trigger_quick_action

+

Trigger a quick action automation on your Abode system.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idNoString or list of strings that point at entity_ids of binary_sensors that represent your Abode quick actions.
+
+
+ +
+
+ + + + + + + diff --git a/components/ads/index.html b/components/ads/index.html new file mode 100644 index 0000000000..64b39b0aa5 --- /dev/null +++ b/components/ads/index.html @@ -0,0 +1,500 @@ + + + + + + + + + ADS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ADS +

+
+
+

The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between Beckhoff automation devices running TwinCAT and other devices implementing this interface.

+

To enable ADS, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+ads:
+  device: '127.0.0.1.1.1'
+  port: 48898
+
+
+
+

Configuration Variables

+
+
device
+
+

(string)(Required)The AMS NetId that identifies the device.

+
+
port
+
+

(int)(Required)The port that runs the AMS server on the device, typically this would be 801 or 851.

+
+
ip_address
+
+

(string)(Optional)The IP address of the ADS device, if not set the first 4 bytes of the device id will be used.

+
+
+
+

Service

+

The ADS component will register the service write_by_name allowing you to write a value to a variable on your ADS device.

+
{
+    "adsvar": ".myvariable",
+    "adstype": "int",
+    "value": 123
+}
+
+
+

Service parameters:

+
    +
  • adsvar: Name of the variable on the ADS device. To access global variables on TwinCAT2 use a prepending dot .myvariable, for TwinCAT3 use GBL.myvariable.
  • +
  • adstype: Specify the type of the variable. Use one of the following: int, byte, uint, bool
  • +
  • value: The value that will be written in the variable.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.abode/index.html b/components/alarm_control_panel.abode/index.html new file mode 100644 index 0000000000..fa5066b3bd --- /dev/null +++ b/components/alarm_control_panel.abode/index.html @@ -0,0 +1,248 @@ + + + + + + + + + Abode Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Alarm Control Panel +

+
+
+

The abode security control panel platform allows you to control your Abode alarms.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.alarmdecoder/index.html b/components/alarm_control_panel.alarmdecoder/index.html new file mode 100644 index 0000000000..04df2cc2c5 --- /dev/null +++ b/components/alarm_control_panel.alarmdecoder/index.html @@ -0,0 +1,280 @@ + + + + + + + + + AlarmDecoder Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AlarmDecoder Alarm Control Panel +

+
+
+

The alarmdecoder alarm control panel platform allows you to control your AlarmDecoder alarms.

+

The requirement is that you have setup your AlarmDecoder hub.

+

Services

+

The Alarm Decoder component gives you access to several services for you to control your alarm with.

+
    +
  • alarm_arm_away: Arms the alarm in away mode; all faults will trigger the alarm.
  • +
  • alarm_arm_home: Arms the alarm in stay mode; faults to the doors or windows will trigger the alarm.
  • +
  • alarm_arm_night: Arms the alarm in instant mode; all faults will trigger the alarm. Additionally, the entry delay is turned off on the doors.
  • +
  • alarm_disarm: Disarms the alarm from any state. Also clears a check_zone flag after an alarm was triggered.
  • +
  • alarmdecoder_alarm_toggle_chime: Toggles the alarm’s chime state.
  • +
+

Note: alarm_arm_custom_bypass and alarm_trigger, while available in the services list in Home Assistant, are not currently implemented in the Alarm Decoder component.

+

Attributes

+

There are several attributes available on the alarm panel to give you more information about your alarm.

+
    +
  • ac_power: Set to true if your system has AC power supplying it.
  • +
  • backlight_on: Set to true if your keypad’s backlight is on.
  • +
  • battery_low: Set to true if your system’s back-up battery is low.
  • +
  • check_zone: Set to true if your system was recently triggered. When check_zone is true, it must be cleared by entering your code + 1 before attempting to rearm your alarm.
  • +
  • chime: Set to true if your system’s chime is activated. When activated, your system will beep anytime a door or window is faulted while the alarm is disarmed.
  • +
  • entry_delay_off: Set to true if your system is in “Instant” mode, meaning the alarm will sound on any faults.
  • +
  • programming_mode: Set to true if your system is in programming mode.
  • +
  • ready: Set to true if your system is ready to be armed. Any faults, including motions sensors, will make this value false.
  • +
  • zone_bypassed: Set to true if your system is currently bypassing a zone.
  • +
+

Examples

+

Using a combination of the available services and attributes, you can create switch templates.

+

Chime Status and Control

+
- platform: template
+  switches:
+    alarm_chime:
+      friendly_name: Chime
+      value_template: "{{ is_state_attr('alarm_control_panel.alarm_panel', 'chime', true) }}"
+      turn_on:
+        service: alarm_control_panel.alarmdecoder_alarm_toggle_chime
+        data:
+          code: !secret alarm_code
+      turn_off:
+        service: alarm_control_panel.alarmdecoder_alarm_toggle_chime
+        data:
+          code: !secret alarm_code
+      icon_template: >-
+          {% if is_state_attr('alarm_control_panel.alarm_panel', 'chime', true) %}
+            mdi:bell-ring
+          {% else %}
+            mdi:bell-off
+          {% endif %}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.alarmdotcom/index.html b/components/alarm_control_panel.alarmdotcom/index.html new file mode 100644 index 0000000000..a26f418875 --- /dev/null +++ b/components/alarm_control_panel.alarmdotcom/index.html @@ -0,0 +1,230 @@ + + + + + + + + + Alarm.com Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Alarm.com Alarm Control Panel +

+
+
+

The alarmdotcom platform is consuming the information provided by Alarm.com.

+

To enable this, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  platform: alarmdotcom
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): Username for the Alarm.com account.
  • +
  • password (Required): Password for Alarm.com account.
  • +
  • name (Optional): The name of the alarm. Default is ‘Alarm.com’.
  • +
  • code (Optional): Specifies a code to enable or disable the alarm in the frontend.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.arlo/index.html b/components/alarm_control_panel.arlo/index.html new file mode 100644 index 0000000000..5dd16b6334 --- /dev/null +++ b/components/alarm_control_panel.arlo/index.html @@ -0,0 +1,283 @@ + + + + + + + + + Arlo Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arlo Control Panel +

+
+
+

The arlo alarm control panel allows you to control your Arlo base stations. You can use it to switch modes and trigger alarms from Home Assistant.

+

To get your Arlo base stations working within Home Assistant, please follow the instructions for the general Arlo component.

+

Once you have enabled the Arlo component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: arlo
+
+
+
+

Configuration Variables

+
+
home_mode_name
+
+

(string)(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
+
+

(string)(Optional)Arlo base station does not have a built-in away mode. You can map one of your custom modes to home assistant’s away mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match eactly as you set it up in the Arlo app.

+

Default value: Armed mode in Arlo

+
+
+
+

Examples

+

These examples are based on an Arlo base station named my_arlo_base_station. Replace this with the name of your base station’s entity_id.

+

Arming the Arlo Base Station when leaving.

+
- id: arm_arlo_when_leaving
+  alias: Arm Arlo cameras when leaving
+  trigger:
+    platform: state
+    entity_id: group.family
+    from: home
+    to: not_home
+  action:
+    service: alarm_control_panel.alarm_arm_away
+    entity_id: alarm_control_panel.my_arlo_base_station
+
+
+

Setting Arlo to a custom mode (mapped to home_mode_name in configuration.yaml) when arriving.

+
- id: disarm_arlo_when_arriving
+  alias: Set Arlo cameras to Home mode when arriving
+  trigger:
+    platform: state
+    entity_id: group.family
+    from: not_home
+    to: home
+  action:
+    service: alarm_control_panel.alarm_arm_home
+    entity_id: alarm_control_panel.my_arlo_base_station
+
+
+

You can also completely disarm the Arlo base station by calling the alarm_control_panel.alarm_disarm service, and trigger the alarm by calling the alarm_control_panel.alarm_trigger service.

+

More examples and configuration options can be found on the Manual Alarm Control page.

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.canary/index.html b/components/alarm_control_panel.canary/index.html new file mode 100644 index 0000000000..6ded1b99ac --- /dev/null +++ b/components/alarm_control_panel.canary/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Canary Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Canary Alarm Control Panel +

+
+
+

The canary alarm control panel platform allows you to integrate your Canary alarm system in Home Assistant.

+

To add canary alarm control panel to your installation, follow instructions in Canary component.

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.concord232/index.html b/components/alarm_control_panel.concord232/index.html new file mode 100644 index 0000000000..0e5d3fd34e --- /dev/null +++ b/components/alarm_control_panel.concord232/index.html @@ -0,0 +1,235 @@ + + + + + + + + + Concord232 Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Concord232 Alarm Control Panel +

+
+
+

The concord232 platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4.

+

To use this platform, you will need to have the external concord232 client and server installed. The server must be running on the device which is connected to the automation module’s serial port. The client must be installed on the machine running Home Assistant. These may often be the same machine, but do not have to be. For additional details in setting up and testing the client and server, see https://github.com/JasonCarter80/concord232

+

To enable this platform in home assistant, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: concord232
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host where the concord232 server process is running. Defaults to localhost.
  • +
  • port (Optional): The port where the Alarm panel is listening. Defaults to 5007.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.egardia/index.html b/components/alarm_control_panel.egardia/index.html new file mode 100644 index 0000000000..a40d8746f2 --- /dev/null +++ b/components/alarm_control_panel.egardia/index.html @@ -0,0 +1,227 @@ + + + + + + + + + Egardia / Woonveilig Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Egardia / Woonveilig Alarm Control Panel +

+
+
+

The egardia platform allows you to integrate your Egardia/Woonveilig alarm control panel in Home Assistant. +You will need to set up your Egardia hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.envisalink/index.html b/components/alarm_control_panel.envisalink/index.html new file mode 100644 index 0000000000..a3bf8908eb --- /dev/null +++ b/components/alarm_control_panel.envisalink/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Envisalink Alarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Envisalink Alarm +

+
+
+

The envisalink alarm control panel platform allows you to control your Envisalink alarms.

+

The requirement is that you have setup your Envisalink hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.ialarm/index.html b/components/alarm_control_panel.ialarm/index.html new file mode 100644 index 0000000000..93ad7e203f --- /dev/null +++ b/components/alarm_control_panel.ialarm/index.html @@ -0,0 +1,246 @@ + + + + + + + + + Antifurto365 iAlarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Antifurto365 iAlarm Control Panel +

+
+
+

The ialarm platform provides connectivity with the Antifurto365 iAlarm alarm systems.

+

This platform supports the following services: alarm_arm_away, alarm_arm_home and alarm_disarm.

+

To enable this, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: ialarm
+    host: ALARM_SYSTEM_IP
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of the iAlarm device on your home network.

+
+
username
+
+

(string)(Required)Username used to sign into the iAlarm web client (should be admin by default).

+
+
password
+
+

(string)(Required)Password used to sign into the iAlarm web client. If it has a leading zero you need to put the password within quotes.

+
+
name
+
+

(string)(Optional)Name of device in Home Assistant.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.manual/index.html b/components/alarm_control_panel.manual/index.html new file mode 100644 index 0000000000..c40defbc70 --- /dev/null +++ b/components/alarm_control_panel.manual/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Manual Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Manual Alarm Control Panel +

+
+
+

This platform enables you to set manual alarms in Home Assistant.

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: manual
+
+
+

Configuration variables:

+
    +
  • name (Optional): The name of the alarm. Default is “HA Alarm”.
  • +
  • code (Optional): If defined, specifies a code to enable or disable the alarm in the frontend.
  • +
  • code_template (Optional): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables from_state and to_state identify the current and desired state. Only one of code and code_template can be specified.
  • +
  • delay_time (Optional): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds.
  • +
  • pending_time (Optional): The time in seconds of the pending time before effecting a state change. Default is 60 seconds.
  • +
  • trigger_time (Optional): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
  • +
  • disarm_after_trigger (Optional): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
  • +
  • armed_custom_bypass/armed_home/armed_away/armed_night/disarmed/triggered (Optional): State specific settings +
      +
    • delay_time (Optional): State specific setting for delay_time (all states except triggered)
    • +
    • pending_time (Optional): State specific setting for pending_time (all states except disarmed)
    • +
    • trigger_time (Optional): State specific setting for trigger_time (all states except triggered)
    • +
    +
  • +
+

State machine

+

The state machine of the manual alarm component is complex but powerful. The +transitions are timed according to three values, delay_time, pending_time +and trigger_time. The values in turn can come from the default configuration +variable or from a state-specific override.

+

When the alarm is armed, its state first goes to pending for a number +of seconds equal to the destination state’s pending_time, and then +transitions to one of the “armed” states. Note that code_template +never receives “pending” in the to_state variable; instead, +to_state contains the state which the user has requested. However, +from_state can contain “pending”.

+

When the alarm is triggered, its state goes to pending for a number of +seconds equal to the previous state’s delay_time plus the triggered +state’s pending_time. Then the alarm transitions to the “triggered” +states. The code is never checked when triggering the alarm, so the +to_state variable of code_template cannot ever contain “triggered” +either; again, from_state can contain “triggered”.

+

The alarm remains in the “triggered” state for a number of seconds equal to the +previous state’s trigger_time. Then, depending on disarm_after_trigger, +it goes back to either the previous state or disarmed. If the previous +state’s trigger_time is zero, the transition to “triggered” is entirely +blocked and the alarm remains in the armed state.

+

Each of the settings is useful in different scenarios. pending_time gives +you some time to leave the building (for “armed” states) or to disarm the alarm +(for the “triggered” state).

+

delay_time can also be used to allow some time to disarm the alarm, but with +more flexibility. For example, you could specify a delay time for the +“armed away” state, in order to avoid triggering the alarm while the +garage door opens, but not for the “armed home” state.

+

trigger_time is useful to disable the alarm when disarmed, but it can also +be used for example to sound the siren for a shorter time during the night.

+

In the config example below:

+
    +
  • +

    the disarmed state never triggers the alarm;

    +
  • +
  • +

    the armed_home state will leave no time to leave the building or disarm the alarm;

    +
  • +
  • +

    while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back.

    +
  • +
+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: manual
+    name: Home Alarm
+    code: 1234
+    pending_time: 30
+    delay_time: 20
+    trigger_time: 4
+    disarmed:
+      trigger_time: 0
+    armed_home:
+      pending_time: 0
+      delay_time: 0
+
+
+

Examples

+

In this section, you find some real-life examples of how to use this panel.

+

Sensors

+

Using sensors to trigger the alarm.

+
automation:
+- alias: 'Trigger alarm while armed away'
+  trigger:
+    - platform: state
+      entity_id: sensor.pir1
+      to: 'active'
+    - platform: state
+      entity_id: sensor.pir2
+      to: 'active'
+    - platform: state
+      entity_id: sensor.door
+      to: 'open'
+    - platform: state
+      entity_id: sensor.window
+      to: 'open'
+  condition:
+    - condition: state
+      entity_id: alarm_control_panel.ha_alarm
+      state: armed_away
+  action:
+    service: alarm_control_panel.alarm_trigger
+    entity_id: alarm_control_panel.ha_alarm
+
+
+

Sending a notification when the alarm is triggered.

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

+
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/components/alarm_control_panel.manual_mqtt/index.html b/components/alarm_control_panel.manual_mqtt/index.html new file mode 100644 index 0000000000..5e80f38b3e --- /dev/null +++ b/components/alarm_control_panel.manual_mqtt/index.html @@ -0,0 +1,310 @@ + + + + + + + + + Manual Alarm Control Panel with MQTT Support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Manual Alarm Control Panel with MQTT Support +

+
+
+

This platform extends the manual alarm 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 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’
  • +
+

To use your panel in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: manual_mqtt
+    state_topic: home/alarm
+    command_topic: home/alarm/set
+
+
+

Configuration variables:

+

The following configuration variables from the base manual alarm platform are available:

+
    +
  • name (Optional): The name of the alarm. Default is “HA Alarm”.
  • +
  • code (Optional): If defined, specifies a code to enable or disable the alarm in the frontend. This code is not required for MQTT interactions.
  • +
  • code_template (Optional): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables from_state and to_state identify the current and desired state. Only one of code and code_template can be specified.
  • +
  • delay_time (Optional): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds.
  • +
  • pending_time (Optional): The time in seconds of the pending time before effecting a state change. Default is 60 seconds.
  • +
  • trigger_time (Optional): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
  • +
  • disarm_after_trigger (Optional): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
  • +
  • armed_home/armed_away/armed_night/disarmed/triggered (Optional): State specific settings +
      +
    • delay_time (Optional): State specific setting for delay_time (all states except triggered)
    • +
    • pending_time (Optional): State specific setting for pending_time (all states except disarmed)
    • +
    • trigger_time (Optional): State specific setting for trigger_time (all states except triggered)
    • +
    +
  • +
+

See the documentation for the manual alarm platform for a description.

+

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 configuration example below:

+
    +
  • The disarmed state never triggers the alarm.
  • +
  • The armed_home state will leave no time to leave the building or disarm the alarm.
  • +
  • While other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back.
  • +
+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: manual_mqtt
+    state_topic: home/alarm
+    command_topic: home/alarm/set
+    pending_time: 30
+    delay_time: 20
+    trigger_time: 4
+    disarmed:
+      trigger_time: 0
+    armed_home:
+      pending_time: 0
+      delay_time: 0
+
+
+

Examples

+

Refer to the Manual Alarm Control page for some real life examples of how to use this panel.

+

MQTT Control

+

The state of this alarm can be controlled using 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/components/alarm_control_panel.mqtt/index.html b/components/alarm_control_panel.mqtt/index.html new file mode 100644 index 0000000000..c7fbb1267a --- /dev/null +++ b/components/alarm_control_panel.mqtt/index.html @@ -0,0 +1,335 @@ + + + + + + + + + MQTT Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Alarm Control Panel +

+
+
+

The mqtt alarm panel platform enables the possibility to control MQTT capable alarm panels. The Alarm icon will change state after receiving a new state from state_topic. If these messages are published with RETAIN flag, the MQTT alarm panel will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state will be unknown.

+

The component will accept the following states from your Alarm Panel (in lower case):

+
    +
  • ‘disarmed’
  • +
  • ‘armed_home’
  • +
  • ‘armed_away’
  • +
  • ‘pending’
  • +
  • ‘triggered’
  • +
+

The component can control your Alarm Panel by publishing to the command_topic when a user interacts with the Home Assistant frontend.

+

To enable this platform, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: mqtt
+    state_topic: "home/alarm"
+    command_topic: "home/alarm/set"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the alarm.

+

Default value: MQTT Alarm

+
+
state_topic
+
+

(string)(Required)The MQTT topic subscribed to receive state updates.

+
+
command_topic
+
+

(string)(Required)The MQTT topic to publish commands to change the alarm state.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
payload_disarm
+
+

(string)(Optional)The payload to disarm your Alarm Panel.

+

Default value: DISARM

+
+
payload_arm_home
+
+

(string)(Optional)The payload to set armed-home mode on your Alarm Panel.

+

Default value: ARM_HOME

+
+
payload_arm_away
+
+

(string)(Optional)The payload to set armed-away mode on your Alarm Panel.

+

Default value: ARM_AWAY

+
+
code
+
+

(string)(Optional)If defined, specifies a code to enable or disable the alarm in the frontend.

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.nx584/index.html b/components/alarm_control_panel.nx584/index.html new file mode 100644 index 0000000000..f1c7aba7aa --- /dev/null +++ b/components/alarm_control_panel.nx584/index.html @@ -0,0 +1,234 @@ + + + + + + + + + NX584 Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NX584 Alarm Control Panel +

+
+
+

The nx584 platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through pynx584 which is required for this to work.

+

To enable this, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: nx584
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host where the nx584 server process is running. Defaults to localhost.
  • +
  • port (Optional): The port where the Alarm panel is listening. Defaults to 5007.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.satel_integra/index.html b/components/alarm_control_panel.satel_integra/index.html new file mode 100644 index 0000000000..39401858de --- /dev/null +++ b/components/alarm_control_panel.satel_integra/index.html @@ -0,0 +1,230 @@ + + + + + + + + + Satel Integra Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Satel Integra Alarm Control Panel +

+
+
+

The satel_integra alarm control panel platform allows you to control your SatelIntegra alarms.

+

The requirement is that you have setup your SatelIntegra hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.simplisafe/index.html b/components/alarm_control_panel.simplisafe/index.html new file mode 100644 index 0000000000..6e0d0cf69d --- /dev/null +++ b/components/alarm_control_panel.simplisafe/index.html @@ -0,0 +1,230 @@ + + + + + + + + + SimpliSafe Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SimpliSafe Alarm Control Panel +

+
+
+

The simplisafe platform enables the ability to control a SimpliSafe control panel. simplisafe.com.

+

To enable this, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  platform: simplisafe
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): Username for the SimpliSafe account.
  • +
  • password (Required): Password for SimpliSafe account.
  • +
  • name (Optional): The name of the alarm. Default is the SimpliSafe alarm id.
  • +
  • code (Optional): Specifies a code to enable or disable the alarm in the frontend.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.spc/index.html b/components/alarm_control_panel.spc/index.html new file mode 100644 index 0000000000..8b89c8ae23 --- /dev/null +++ b/components/alarm_control_panel.spc/index.html @@ -0,0 +1,245 @@ + + + + + + + + + Vanderbilt SPC Alarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vanderbilt SPC Alarm +

+
+
+

The spc alarm control panel platform allows you to control your Vanderbilt SPC alarms.

+

The requirement is that you have setup your SPC hub.

+

The changed_by attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in automation.

+
automation:
+  - alias: Alarm status changed
+    trigger:
+      - platform: state
+        entity_id: alarm_control_panel.alarm_1
+    action:
+      - service: notify.notify
+        data_template:
+          message: >
+            Alarm changed from {{ trigger.from_state.state }}
+            to {{ trigger.to_state.state }}
+            by {{ trigger.to_state.attributes.changed_by }}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.totalconnect/index.html b/components/alarm_control_panel.totalconnect/index.html new file mode 100644 index 0000000000..4cc8dc25a7 --- /dev/null +++ b/components/alarm_control_panel.totalconnect/index.html @@ -0,0 +1,231 @@ + + + + + + + + + Honeywell TotalConnect Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Honeywell TotalConnect Alarm Control Panel +

+
+
+

The totalconnect platform provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies.

+

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:

+
# Example configuration.yaml entry
+alarm_control_panel:
+  - platform: totalconnect
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name of device in Home Assistant.
  • +
  • username (Required): Username used to sign into the TotalConnect app/web client.
  • +
  • password (Required): Password used to sign into the TotalConnect app/web client.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.verisure/index.html b/components/alarm_control_panel.verisure/index.html new file mode 100644 index 0000000000..2acf74f056 --- /dev/null +++ b/components/alarm_control_panel.verisure/index.html @@ -0,0 +1,257 @@ + + + + + + + + + Verisure Alarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure Alarm +

+
+
+

The Verisure alarm control panel platform allows you to control your Verisure Alarms.

+

The requirement is that you have setup your Verisure hub.

+

The changed_by attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in automation.

+
automation:
+  - alias: Alarm status changed
+    trigger:
+      - platform: state
+        entity_id: alarm_control_panel.alarm_1
+    action:
+      - service: notify.notify
+        data_template:
+          message: >
+            Alarm changed from {{ trigger.from_state.state }}
+            to {{ trigger.to_state.state }}
+            by {{ trigger.to_state.attributes.changed_by }}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel.wink/index.html b/components/alarm_control_panel.wink/index.html new file mode 100644 index 0000000000..b58020ab84 --- /dev/null +++ b/components/alarm_control_panel.wink/index.html @@ -0,0 +1,259 @@ + + + + + + + + + Wink Alarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Alarm +

+
+
+

No Wink hub is required to support these devices.

+

The Wink alarm platform allows you to control your Wink Canary all-in-one security camera.

+

The requirement is that you have setup Wink.

+

Supported devices

+
    +
  • Canary all-in-one security camera
  • +
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/alarm_control_panel/index.html b/components/alarm_control_panel/index.html new file mode 100644 index 0000000000..d7e17fcf9b --- /dev/null +++ b/components/alarm_control_panel/index.html @@ -0,0 +1,204 @@ + + + + + + + + + Alarm Control Panels - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/alarmdecoder/index.html b/components/alarmdecoder/index.html new file mode 100644 index 0000000000..018b078ea4 --- /dev/null +++ b/components/alarmdecoder/index.html @@ -0,0 +1,495 @@ + + + + + + + + + AlarmDecoder Alarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AlarmDecoder Alarm +

+
+
+

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 for further information about the AlarmDecoder devices.

+

There is currently support for the following device types within Home Assistant:

+ +

This is a fully event-based component. Any event sent by the AlarmDecoder device will be immediately reflected within Home Assistant.

+

An alarmdecoder section must be present in the configuration.yaml file and contain the following options as required:

+
# Example configuration.yaml entry
+alarmdecoder:
+  device:
+    type: socket
+    host: 192.168.1.20
+    port: 10000
+  panel_display: On
+  zones:
+    01:
+      name: 'Smoke Detector'
+      type: 'smoke'
+      rfid: '0123456'
+    02:
+      name: 'Front Door'
+      type: 'opening'
+
+
+

Configuration variables:

+
    +
  • 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
  • +
  • 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 docs. Note: If no zones are specified, Home Assistant will not load any binary_sensor components.
  • +
  • rfid (Optional): The RF serial-number associated with RF zones. Providing this field allows Home Assistant to associate raw sensor data to a given zone, allowing direct monitoring of the state, battery, and supervision status.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/alert/index.html b/components/alert/index.html new file mode 100644 index 0000000000..8b8faaad9c --- /dev/null +++ b/components/alert/index.html @@ -0,0 +1,298 @@ + + + + + + + + + Alert - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Alert +

+
+
+

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

+

Basic Example

+

The alert component makes use of any of the notifications components. To setup the alert component, first, you must setup a notification component. Then, add the following to your configuration file:

+
# Example configuration.yaml entry
+alert:
+  garage_door:
+    name: Garage is open
+    done_message: Garage is closed
+    entity_id: input_boolean.garage_door
+    state: 'on'
+    repeat: 30
+    can_acknowledge: True
+    skip_first: True
+    notifiers:
+      - ryans_phone
+      - kristens_phone
+
+
+

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

In this example, the garage door status (input_boolean.garage_door) is watched and this alert will be triggered when its status is equal to on. This indicates that the door has been opened. Because the skip_first option was set to True, the first notification will not be delivered immediately. However, every 30 minutes, a notification will be delivered until either input_boolean.garage_door no longer has a state of on or until the alert is acknowledged using the Home Assistant frontend.

+

For notifiers that require other parameters (such as twilio_sms which requires you specify a target parameter when sending the notification), you can use the group notification to wrap them for an alert. Simply create a group notification type with a single notification member (such as twilio_sms) specifying the required parameters other than message provided by the alert component:

+
- platform: group
+  name: john_phone_sms
+  services:
+    - service: twilio_sms
+      data:
+        target: !secret john_phone
+
+
+
freshwater_temp_alert:
+  name: "Warning: I have detected a problem with the freshwater tank temperature"
+  entity_id: binary_sensor.freshwater_temperature_status
+  state: 'on'
+  repeat: 5
+  can_acknowledge: true
+  skip_first: false
+  notifiers:
+    - john_phone_sms
+
+
+

Complex Alert Criteria

+

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.

+
binary_sensor:
+  - platform: template
+    sensors:
+      motion_battery_low:
+        value_template: '{{ states.sensor.motion.attributes.battery < 15 }}'
+        friendly_name: 'Motion battery is low'
+
+alert:
+  motion_battery:
+    name: Motion Battery is Low
+    entity_id: binary_sensor.motion_battery_low
+    repeat: 30
+    notifiers:
+      - ryans_phone
+      - kristens_phone
+
+
+

This example will begin firing as soon as the entity sensor.motion’s battery attribute falls below 15. It will continue to fire until the battery attribute raises above 15 or the alert is acknowledged on the frontend.

+

Dynamic Notification Delay Times

+

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.

+
# Example configuration.yaml entry
+alert:
+  garage_door:
+    name: Garage is open
+    entity_id: input_boolean.garage_door
+    state: 'on'   # Optional, 'on' is the default value
+    repeat:
+      - 15
+      - 30
+      - 60
+    can_acknowledge: True  # Optional, default is True
+    skip_first: True  # Optional, false is the default
+    notifiers:
+      - ryans_phone
+      - kristens_phone
+
+
+

Now the first message will be sent after a 15 minute delay, the second will be sent 30 minutes after that, and a 60 minute delay will fall between every following notification. For example, if the garage door opens at 2:00, a notification will be sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes.

+
+
+ +
+
+ + + + + + + diff --git a/components/alexa/index.html b/components/alexa/index.html new file mode 100644 index 0000000000..b03288cc28 --- /dev/null +++ b/components/alexa/index.html @@ -0,0 +1,488 @@ + + + + + + + + + Alexa / Amazon Echo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Alexa / Amazon Echo +

+
+
+

+ Use Home Assistant Cloud to integrate with Alexa without any effort. +

+

There are a few ways that you can use Amazon Echo and Home Assistant together.

+ +

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.

+

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.

+
+ +
+

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 about how to set up encryption for Home Assistant. When running Hass.io, using the Let’s Encrypt and Duck DNS 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.

+

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. +
  3. Change your Home Assistant serving port to 443 this is done in the http section with the server_port entry in your configuration.yaml file
  4. +
+

To get started with Alexa skills:

+
    +
  • Log in to Amazon developer console
  • +
  • Click the Alexa button at the top of the console
  • +
  • Click the yellow “Add a new skill” button in the top right +
      +
    • Skill Type: Custom Interaction Model (default)
    • +
    • Name: Home Assistant
    • +
    • Invocation name: home assistant (or be creative, up to you)
    • +
    • Version: 1.0
    • +
    • Endpoint: +
        +
      • https
      • +
      • https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD
      • +
      +
    • +
    +
  • +
+

You can use this specially sized Home Assistant logo as the large icon and this one as the small one.

+

Configuring your Amazon Alexa skill

+

Alexa works based on intents. Each intent has a name and variable slots. For example, a LocateIntent with a slot that contains a User. Example intent schema:

+
{
+  "intents": [
+    {
+      "intent": "LocateIntent",
+      "slots": [
+      {
+          "name": "User",
+          "type": "AMAZON.US_FIRST_NAME"
+        }]
+    },
+    {
+      "intent": "WhereAreWeIntent",
+      "slots": []
+    }
+  ]
+}
+
+
+

To bind these intents to sentences said by users you define utterances. Example utterances can look like this:

+
LocateIntent Where is {User}
+LocateIntent Where's {User}
+LocateIntent Where {User} is
+LocateIntent Where did {User} go
+
+WhereAreWeIntent where we are
+
+
+

This means that we can now ask Alexa things like:

+
    +
  • Alexa, ask Home Assistant where Paul is
  • +
  • Alexa, ask Home Assistant where we are
  • +
+

Configuring Home Assistant

+

When activated, the Alexa component will have Home Assistant’s native intent support handle the incoming intents. If you want to run actions based on intents, use the intent_script component.

+

To enable Alexa add the following entry to your configuration.yaml file:

+
alexa:
+
+
+

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:

+
{
+  "intent": "ActivateSceneIntent",
+  "slots":
+  [
+    {
+      "name" : "Scene",
+      "type" : "Scenes"
+    }
+  ]
+}
+
+
+

Then create a custom slot type called Scenes listing every scene you want to control:

+

+ +Custom slot type for scene support. +

+

The names must exactly match the scene names (minus underscores - amazon discards them anyway and we later map them back in with the template).

+

In the new Alexa Skills Kit, you can also create synonyms for slot type values, which can be used in place of the base value in utterances. Synonyms will be replaced with their associated slot value in the intent request sent to the Alexa API endpoint, but only if there are not multiple synonym matches. Otherwise, the value of the synonym that was spoken will be used.

+

+ +Custom slot values with synonyms. +

+

Add a sample utterance:

+
ActivateSceneIntent activate {Scene}
+
+
+

Then add the intent to your intent_script section in your HA config file:

+
intent_script:
+  ActivateSceneIntent:
+    action:
+      service: scene.turn_on
+      data_template:
+        entity_id: scene.{{ Scene | replace(" ", "_") }}
+    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 Home Assistant to activate <some scene> and Alexa will activate that scene for you.

+

Adding Scripts

+

We can easily extend the above idea to work with scripts as well. As before, add an intent for scripts:

+
{
+  "intent": "RunScriptIntent",
+  "slots":
+  [
+    {
+      "name" : "Script",
+      "type" : "Scripts"
+    }
+  ]
+}
+
+
+

Create a custom slot type called Scripts listing every script you want to run:

+

+ +Custom slot type for script support. +

+

Add a sample utterance:

+
RunScriptIntent run {Script}
+
+
+

Then add the intent to your intent_script section in your HA config file:

+
intent_script:
+  RunScriptIntent:
+    action:
+      service: script.turn_on
+      data_template:
+        entity_id: script.{{ Script | replace(" ", "_") }}
+    speech:
+      type: plain
+      text: OK
+
+
+

Now say Alexa ask Home Assistant to run <some script> and Alexa will run that script for you.

+

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

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

Giving Alexa Some Personality

+

In the examples above, we told Alexa to say OK when she successfully completed the task. This is effective but a little dull! We can again use templates to spice things up a little.

+

First create a file called alexa_confirm.yaml with something like the following in it (go on, be creative!):

+
          >
+          {{ [
+          "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"
+          ] | random }} 
+
+
+

Then, wherever you would put some simple text for a response like OK, replace it with a reference to the file so that:

+
text: OK
+
+
+

becomes:

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

+

Flash Briefing Skills

+

As of version 0.31 Home Assistant supports the new Alexa Flash Briefing Skills API. A Flash Briefing Skill adds a new Flash Briefing source that is generated by Home Assistant.

+

Configuring a Flash Briefing skill in Home Assistant

+

You can use templates for the title, audio, text and display_url configuration parameters.

+

Here’s an example configuration of a Flash briefing skill that will tell you who is at home:

+
# Example configuration.yaml entry
+alexa:
+  flash_briefings:
+    whoishome:
+      - title: Who's at home?
+        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 %}
+
+
+

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 for more information about allowed configuration parameters and formats.

+

Configuring your Flash Briefing skill

+
    +
  • Log in to Amazon developer console
  • +
  • Click the Alexa navigation tab at the top of the console
  • +
  • Click on the “Get Started >” button under “Alexa Skills Kit”
  • +
  • Click the yellow “Add a new skill” button in the top right +
      +
    • Skill Information +
        +
      • For Skill Type select “Flash Briefing Skill API”
      • +
      • You can enter whatever name you want
      • +
      • Hit “Next”
      • +
      +
    • +
    • Interaction Model +
        +
      • Nothing to do here
      • +
      +
    • +
    • Configuration +
        +
      • Add new feed +
          +
        • For URL, enter https://YOUR_HOST/api/alexa/flash_briefings/BRIEFING_ID?api_password=YOUR_API_PASSWORD where BRIEFING_ID is the key you entered in your configuration (such as whoishome in the above example). NOTE: Do not use a non-standard http or https port, AWS will not connect to it.
        • +
        • You can use this specially sized Home Assistant logo as the Feed Icon
        • +
        • 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.
      • +
      +
    • +
    +
  • +
  • To invoke your flash briefing, open the Alexa app on your phone or go to the 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”.
  • +
+

Smart Home

+

While the Skills API described above allows for arbitrary intents, all +utterances must begin with “Alexa, tell $invocation_name …”

+

The Emulated Hue component provides a simpler +interface such as, “Alexa, turn on the kitchen light”. However it has some +limitations since everything looks like a light bulb.

+

Amazon provides a Smart Home API for richer home automation control. It takes +considerable effort to configure. The easy solution is to use +Home Assistant Cloud.

+

If you don’t want to use Home Assistant Cloud and are willing to do the +integration work yourself, Home Assistant can expose an HTTP API which makes +the integration work easier. Example configuration:

+
alexa:
+  smart_home:
+    filter:
+      include_entities:
+        - light.kitchen
+        - light.kitchen_left
+      include_domains:
+        - switch
+      exclude_entities:
+        - switch.outside
+    entity_config:
+      light.kitchen:
+        name: Custom Name for Alexa
+        description: The light in the kitchen
+      switch.stairs:
+        display_categories: LIGHT
+
+
+

This exposes an HTTP POST endpoint at http://your_hass_ip/api/alexa/smart_home +which accepts and returns messages conforming to the +Smart Home v3 payload. +You must then create an Amazon developer account with an Alexa skill and Lambda +function to integrate this endpoint. See +Haaska for an example.

+
+
+ +
+
+ + + + + + + diff --git a/components/amcrest/index.html b/components/amcrest/index.html new file mode 100644 index 0000000000..00cae69b53 --- /dev/null +++ b/components/amcrest/index.html @@ -0,0 +1,499 @@ + + + + + + + + + Amcrest IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Amcrest IP Camera +

+
+
+

The amcrest platform allows you to integrate your Amcrest IP camera in Home Assistant.

+

To enable your camera in your installation, add the following to your configuration.yaml file:

+
# 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 documentation to install the ffmpeg.

+

Finish its configuration by visiting the Amcrest sensor page or Amcrest camera page.

+

To check if your Amcrest camera is supported/tested, visit the supportability matrix link from the python-amcrest project.

+
+
+ +
+
+ + + + + + + diff --git a/components/android_ip_webcam/index.html b/components/android_ip_webcam/index.html new file mode 100644 index 0000000000..a66e5b6255 --- /dev/null +++ b/components/android_ip_webcam/index.html @@ -0,0 +1,534 @@ + + + + + + + + + Android IP Webcam - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Android IP Webcam +

+
+
+

The android_ip_webcam component turns an Android phone into a network camera with multiple viewing options.

+

It’s setup as an MJPEG camera and all settings as switches inside of Home Assistant. You can also expose the sensors. If you have multiple phones, you can use all options inside a list.

+

To set it up, download the IP Webcam app, and add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+android_ip_webcam:
+  - host: 192.168.1.10
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP Address of the phone on the network.
  • +
  • port (Optional): Default is set 8080. The port the IP Webcam listens on.
  • +
  • name (Optional): Override the name of the phone.
  • +
  • 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 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.
  • +
+

Supported features

+

Sensors:

+
    +
  • audio_connections
  • +
  • battery_level
  • +
  • battery_temp
  • +
  • battery_voltage
  • +
  • light
  • +
  • motion
  • +
  • pressure
  • +
+

Settings (Switches):

+
    +
  • exposure_lock
  • +
  • ffc
  • +
  • focus
  • +
  • gps_active
  • +
  • night_vision
  • +
  • overlay
  • +
  • torch
  • +
  • whitebalance_lock
  • +
  • video_recording
  • +
+

Full example

+
# 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
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/apcupsd/index.html b/components/apcupsd/index.html new file mode 100644 index 0000000000..8d3f16e262 --- /dev/null +++ b/components/apcupsd/index.html @@ -0,0 +1,462 @@ + + + + + + + + + APCUPSd - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ APCUPSd +

+
+
+

APCUPSd status information can be integrated into Home Assistant when the Network Information Server (NIS) is configured is enabled on the APC device.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+apcupsd:
+
+
+

Configuration variables:

+
    +
  • host (Optional): The hostname/IP address on which the APCUPSd NIS is being served. Defaults to localhost.
  • +
  • port (Optional): The port on which the APCUPSd NIS is listening. Defaults to 3551.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/api/index.html b/components/api/index.html new file mode 100644 index 0000000000..40c8e10b67 --- /dev/null +++ b/components/api/index.html @@ -0,0 +1,221 @@ + + + + + + + + + API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ API +

+
+
+

The api component exposes a RESTful API and allows one to interact with a Home Assistant instance that is running headless. This component depends on the http component.

+

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

+
# Example configuration.yaml entry
+api:
+
+
+

For details to use the API, please refer to the REST API or the Python REST API documentation in the “Developer” section.

+
+
+ +
+
+ + + + + + + diff --git a/components/apiai/index.html b/components/apiai/index.html new file mode 100644 index 0000000000..27ddbcedd8 --- /dev/null +++ b/components/apiai/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/apple_tv/index.html b/components/apple_tv/index.html new file mode 100644 index 0000000000..c8292629f1 --- /dev/null +++ b/components/apple_tv/index.html @@ -0,0 +1,556 @@ + + + + + + + + + Apple TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Apple TV +

+
+
+

The apple_tv platform allows you to control an Apple TV (3rd and 4th generation). See the remote platform 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:

+
$ 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:

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

+

Guides

+

Scanning for devices

+

Make sure Home Sharing is enabled on the Apple TV.

+

To scan for devices and determine the login_id, 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):

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

+

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:

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

+

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

+

Services

+

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 attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of Apple TVs.
+

Service apple_tv_scan

+

Scans the local network for Apple TVs. All found devices are presented as a persistent notification.

+
+
+ +
+
+ + + + + + + diff --git a/components/arduino/index.html b/components/arduino/index.html new file mode 100644 index 0000000000..44489bccdd --- /dev/null +++ b/components/arduino/index.html @@ -0,0 +1,236 @@ + + + + + + + + + Arduino - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arduino +

+
+
+

The Arduino 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 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) 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 on your board. Please upload the StandardFirmata sketch to your board; please refer to the Arduino documentation for further information.

+

To integrate an Arduino boards with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+arduino:
+  port: /dev/ttyACM0
+
+
+
+

Configuration Variables

+
+
port
+
+

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

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

+

Add the user who is used to run Home Assistant to the groups to allow access to the serial port.

+
$ sudo usermod -a -G dialout,lock $USER
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/arlo/index.html b/components/arlo/index.html new file mode 100644 index 0000000000..e613b1496e --- /dev/null +++ b/components/arlo/index.html @@ -0,0 +1,484 @@ + + + + + + + + + Arlo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arlo +

+
+
+

The arlo implementation allows you to integrate your Arlo devices in Home Assistant.

+

To enable device linked in your Arlo account, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+arlo:
+  username: you@example.com
+  password: secret
+
+
+

Configuration variables:

+
    +
  • username (Required): The username for accessing your Arlo account.
  • +
  • password (Required): The password for accessing your Arlo account.
  • +
+

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 or Arlo camera page or Arlo control panel page.

+

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.

+
#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/components/asterisk_mbox/index.html b/components/asterisk_mbox/index.html new file mode 100644 index 0000000000..828334a498 --- /dev/null +++ b/components/asterisk_mbox/index.html @@ -0,0 +1,243 @@ + + + + + + + + + Asterisk Voicemail - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Asterisk Voicemail +

+
+
+

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

+
# 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/components/august/index.html b/components/august/index.html new file mode 100644 index 0000000000..6a7d0a373d --- /dev/null +++ b/components/august/index.html @@ -0,0 +1,490 @@ + + + + + + + + + August - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ August +

+
+
+

The august component allows you to integrate your August devices in Home Assistant. Currently this component supports August Lock and Doorbell.

+

You will need your August login information (username (either phone# or email), and password) to use this module.

+

To set it up, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+august:
+  login_method: phone
+  username: "+16041234567"
+  password: secret
+
+
+
+

Configuration Variables

+
+
login_method
+
+

(string)(Required)Method to login to your August account, either “email” or “phone”. A verification code will be sent to your email or phone during setup.

+
+
username
+
+

(string)(Required)The username for accessing your August account. This depends on your login_method, if login_method is email, this will be your email of the account. Otherwise, this will be your phone number.

+
+
password
+
+

(string)(Required)The password for accessing your August account.

+
+
timeout
+
+

(int)(Optional)Timeout to wait for connections.

+

Default value: 10

+
+
+
+

Once Home Assistant is started, a configurator will pop up asking you to enter verification code that is sent to your phone number or email.

+
+
+ +
+
+ + + + + + + diff --git a/components/automation/index.html b/components/automation/index.html new file mode 100644 index 0000000000..681b3948be --- /dev/null +++ b/components/automation/index.html @@ -0,0 +1,218 @@ + + + + + + + + + Automation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Automation +

+
+
+

Please see the docs section for in-depth documentation on how to use the automation component.

+

Starting with 0.28 your automation rules can be controlled with the frontend.

+

+ +

+

This allows one to reload the automation without restarting Home Assistant itself. If you don’t want to see the automation rule in your frontend use hide_entity: True to hide it. You can also use initial_state: 'off' so that the automation is not automatically turned on after a Home assistant reboot.

+
automation:
+  - alias: Door alarm
+    hide_entity: True
+    initial_state: 'off'
+    trigger:
+      - platform: state
+  ...
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/axis/index.html b/components/axis/index.html new file mode 100644 index 0000000000..fb4f712d45 --- /dev/null +++ b/components/axis/index.html @@ -0,0 +1,547 @@ + + + + + + + + + Axis - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Axis +

+
+
+

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

+

You can also manually configure your devices by adding the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+axis:
+  m1065lw:
+    host: IP ADDRESS
+    include:
+      - camera
+
+
+

Configuration variables:

+

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:

+
# Example configuration.yaml entry
+axis:
+  m1065lw:
+    host: IP ADDRESS
+    username: USERNAME
+    password: PASSWORD
+    include:
+      - camera
+      - motion
+      - pir
+      - sound
+      - daynight
+    trigger_time: 0
+    location: köket
+
+
+

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

+

Device services

+

Available services: vapix_call.

+

Service axis/vapix_call

+

Send a command using Vapix. For details please read the API specifications.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
namenoName of device to communicate with.
paramnoWhat parameter to operate on.
cgiyesWhich cgi to call on the device. Default is param.cgi.
actionyesWhat type of call. Default is update.
+

Response to call can be subscribed to on event vapix_call_response

+
+
+ +
+
+ + + + + + + diff --git a/components/bbb_gpio/index.html b/components/bbb_gpio/index.html new file mode 100644 index 0000000000..5cf8ba4109 --- /dev/null +++ b/components/bbb_gpio/index.html @@ -0,0 +1,206 @@ + + + + + + + + + BeagleBone Black GPIO - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BeagleBone Black GPIO +

+
+
+

The bbb_gpio component is the base for all BeagleBone Black related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.abode/index.html b/components/binary_sensor.abode/index.html new file mode 100644 index 0000000000..6a7063f14d --- /dev/null +++ b/components/binary_sensor.abode/index.html @@ -0,0 +1,403 @@ + + + + + + + + + Abode Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Binary Sensor +

+
+
+

The abode security control panel platform allows you to control your Abode 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.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.ads/index.html b/components/binary_sensor.ads/index.html new file mode 100644 index 0000000000..00692c9487 --- /dev/null +++ b/components/binary_sensor.ads/index.html @@ -0,0 +1,413 @@ + + + + + + + + + ADS Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ADS Binary Sensor +

+
+
+

The ads binary sensor platform can be used to monitor a boolean value on your ADS device.

+

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml +file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: ads
+    adsvar: .boolean1
+
+
+
+

Configuration Variables

+
+
adsvar
+
+

(string)(Required)The name of the variable which you want to access on the ADS device.

+
+
name
+
+

(string)(Optional)An identifier for the light in the frontend.

+
+
device_class
+
+

(string)(Optional)The type/class of the sensor to set the icon in the frontend.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.alarmdecoder/index.html b/components/binary_sensor.alarmdecoder/index.html new file mode 100644 index 0000000000..a9203e233f --- /dev/null +++ b/components/binary_sensor.alarmdecoder/index.html @@ -0,0 +1,387 @@ + + + + + + + + + AlarmDecoder Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AlarmDecoder Binary Sensor +

+
+
+

The alarmdecoder alarm control panel platform allows you to control your AlarmDecoder alarms.

+

Check the type/class list for a possible visualization of your zone.

+

The requirement is that you have setup your AlarmDecoder hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.android_ip_webcam/index.html b/components/binary_sensor.android_ip_webcam/index.html new file mode 100644 index 0000000000..9e91c70dd2 --- /dev/null +++ b/components/binary_sensor.android_ip_webcam/index.html @@ -0,0 +1,399 @@ + + + + + + + + + Android IP Webcam Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Android IP Webcam Binary Sensor +

+
+
+

The android_ip_webcam binary sensor platform lets you observe the motion state of Android IP webcam sensors through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup.

+

Examples

+

You can also setup the binary motion sensor with the following script:

+
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) }}'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.apcupsd/index.html b/components/binary_sensor.apcupsd/index.html new file mode 100644 index 0000000000..eff2a66ad0 --- /dev/null +++ b/components/binary_sensor.apcupsd/index.html @@ -0,0 +1,269 @@ + + + + + + + + + APCUPSd Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ APCUPSd Binary Sensor +

+
+
+

In addition to the APCUPSd Sensor devices, you may also create a device which is simply “on” when the UPS status is online and “off” at all other times.

+

To enable this sensor, you first have to set up apcupsd, and add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: apcupsd
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name to use in the front end.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.arest/index.html b/components/binary_sensor.arest/index.html new file mode 100644 index 0000000000..f17c373713 --- /dev/null +++ b/components/binary_sensor.arest/index.html @@ -0,0 +1,413 @@ + + + + + + + + + aREST Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ aREST Binary Sensor +

+
+
+

The arest binary sensor platform allows you to get all data from your devices (like Arduinos with an ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the aREST RESTful framework.

+

To use your aREST binary sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: arest
+    resource: http://IP_ADDRESS
+    pin: 8
+
+
+

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

+
$ curl -X GET http://192.168.0.5/digital/9
+{"return_value": 0, "id": "office1", "name": "Office", "connected": true}
+
+
+

An example for Pin 9 inspired by the command above could look like this:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: arest
+    resource: http://192.168.0.5/digital/9
+    pin: 9
+    name: Office
+
+
+

+This sensor is not suitable for fast state changes because there is a high possibility that the change took place between two update cycle. +

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.august/index.html b/components/binary_sensor.august/index.html new file mode 100644 index 0000000000..8b220a8f21 --- /dev/null +++ b/components/binary_sensor.august/index.html @@ -0,0 +1,391 @@ + + + + + + + + + August Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ August Binary Sensor +

+
+
+

To get your August doorbell binary sensors working within Home Assistant, please follow the instructions for the general August component.

+

If you have August Doorbell, once you have enabled the August component, you should see following sensors:

+
    +
  • Doorbell ding sensor
  • +
  • Doorbell motion sensor
  • +
  • Doorbell online sensor
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.aurora/index.html b/components/binary_sensor.aurora/index.html new file mode 100644 index 0000000000..2bc98428fd --- /dev/null +++ b/components/binary_sensor.aurora/index.html @@ -0,0 +1,386 @@ + + + + + + + + + Aurora sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Aurora sensor +

+
+
+

The aurora platform uses the NOAA aurora forecast service to let you know if an aurora might be visible at your home location in the next 30 minutes, based off of current solar flare activity.

+

This service gives a number 0-100 representing the current likelihood of visible auroras at your latitude/longitude. By default this sensor is set up to trigger when the reported likelihood for your location is > 75. It updates every 5 minutes.

+

You can check the attributes of the sensor to see your exact forecast.

+

To add the aurora binary sensor to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: aurora
+
+
+

Configuration variables:

+
    +
  • forecast_threshold (Optional): Provide your own threshold number above which the sensor will trigger. Defaults to 75.
  • +
  • name (Optional): The name of the sensor. Default is ‘Aurora Visibility’.
  • +
+
  binary_sensor:
+    - platform: aurora
+      forecast_threshold: 50
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.axis/index.html b/components/binary_sensor.axis/index.html new file mode 100644 index 0000000000..9cbdcc89cf --- /dev/null +++ b/components/binary_sensor.axis/index.html @@ -0,0 +1,392 @@ + + + + + + + + + Axis Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Axis Binary Sensor +

+
+
+

The Axis platform allows you to get data from your Axis devices from within Home Assistant.

+

See the Axis main component for configuration instructions.

+

The following sensor types are supported:

+
    +
  • Motion detection
  • +
  • Passive IR motion detection
  • +
  • Sound detection
  • +
  • Day/night mode
  • +
  • Tampering detection
  • +
  • Input port
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.bayesian/index.html b/components/binary_sensor.bayesian/index.html new file mode 100644 index 0000000000..c1e4ff58d3 --- /dev/null +++ b/components/binary_sensor.bayesian/index.html @@ -0,0 +1,441 @@ + + + + + + + + + Bayesian Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bayesian Binary Sensor +

+
+
+

The bayesian binary sensor platform observes the state from multiple sensors and uses Bayes’ rule 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:

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

Full examples

+
# 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'
+
+
+
# 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/components/binary_sensor.bbb_gpio/index.html b/components/binary_sensor.bbb_gpio/index.html new file mode 100644 index 0000000000..81af8e81f7 --- /dev/null +++ b/components/binary_sensor.bbb_gpio/index.html @@ -0,0 +1,409 @@ + + + + + + + + + BeagleBone Black GPIO Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BeagleBone Black GPIO Binary Sensor +

+
+
+

The bbb_gpio binary sensor platform allows you to read sensor values of the GPIOs of your BeagleBone Black.

+

To use your BeagleBone Black’s GPIO in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: bbb_gpio
+    pins:
+      P8_12:
+        name: Door
+      GPIO0_26:
+        name: Window
+
+
+

Configuration variables:

+
    +
  • pins array (Required): Array of used pins. +
      +
    • pin_name (Required): Pin numbers and corresponding names. +
        +
      • name (Required): Friendly name to use for the frontend.
      • +
      • bouncetime (Optional): Debounce time for reading input pin defined in milliseconds [ms]. Defaults to 50 ms.
      • +
      • invert_logic (Optional): If true, inverts the input logic to ACTIVE LOW. Default is false (ACTIVE HIGH).
      • +
      • pull_mode (Optional): Type of internal pull resistor connected to input. Options are UP - pull-up resistor and DOWN - pull-down resistor. Defaults to UP.
      • +
      +
    • +
    +
  • +
+

For more details about the GPIO layout, visit the article about the BeagleBone Black.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.blink/index.html b/components/binary_sensor.blink/index.html new file mode 100644 index 0000000000..f0e2fe504a --- /dev/null +++ b/components/binary_sensor.blink/index.html @@ -0,0 +1,384 @@ + + + + + + + + + Blink Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blink Binary Sensor +

+
+
+

+To get your Blink binary sensors working with Home Assistant, follow the instructions for the general Blink component. +

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.bloomsky/index.html b/components/binary_sensor.bloomsky/index.html new file mode 100644 index 0000000000..b19168d5f5 --- /dev/null +++ b/components/binary_sensor.bloomsky/index.html @@ -0,0 +1,404 @@ + + + + + + + + + BloomSky Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BloomSky Binary Sensor +

+
+
+

The bloomsky binary sensor platform allows you to get data from your BloomSky device.

+

To get your BloomSky binary sensors working with Home Assistant, follow the instructions for the BloomSky component first.

+

To use your BloomSky binary sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: bloomsky
+    monitored_conditions:
+      - Night
+      - Rain
+
+
+

Configuration variables:

+
    +
  • monitored_conditions array (Required): The sensors that you wish to monitor on all of your devices. Select from these options: +
      +
    • Night
    • +
    • Rain
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.command_line/index.html b/components/binary_sensor.command_line/index.html new file mode 100644 index 0000000000..a2afde45a3 --- /dev/null +++ b/components/binary_sensor.command_line/index.html @@ -0,0 +1,441 @@ + + + + + + + + + Command line Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Command line Binary Sensor +

+
+
+

The command_line binary sensor platform issues specific commands to get data.

+

To use your Command binary sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: command_line
+    command: cat /proc/sys/net/ipv4/ip_forward
+
+
+

Configuration variables:

+
    +
  • command (Required): The action to take to get the value.
  • +
  • name (Optional): Let you overwrite the name of the device. By default name from the device is used.
  • +
  • device_class (Optional): The type/class 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 to extract a value from the payload.
  • +
  • scan_interval (Optional): Defines number of seconds for polling interval (defaults to 60 seconds).
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

SickRage

+

Check the state of an SickRage instance.

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: command_line
+    command: netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running")
+    name: 'sickragerunning'
+    device_class: moving
+    payload_on: "Running"
+    payload_off: "Not running"
+
+
+

Check RasPlex

+

Check if RasPlex is online.

+
binary_sensor:
+  - platform: command_line
+    command: 'ping -c 1 rasplex.local | grep "1 received" | wc -l'
+    name: 'is_rasplex_online'
+    device_class: connectivity
+    payload_on: 1
+    payload_off: 0
+
+
+

An alternative solution could look like this:

+
binary_sensor:
+  - platform: command_line
+    name: Printer
+    command: ping -W 1 -c 1 192.168.1.10 > /dev/null 2>&1 && echo success || echo fail
+    device_class: connectivity
+    payload_on: "success"
+    payload_off: "fail"
+
+
+

Consider to use the ping sensor as an alternative to the samples above.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.concord232/index.html b/components/binary_sensor.concord232/index.html new file mode 100644 index 0000000000..413f508e9b --- /dev/null +++ b/components/binary_sensor.concord232/index.html @@ -0,0 +1,387 @@ + + + + + + + + + Concord232 Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Concord232 Binary Sensor +

+
+
+

The concord232 platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4.

+

To enable this, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: concord232
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host where the concord232 server process is running. Defaults to localhost.
  • +
  • port (Optional): The port where the Alarm panel is listening. Defaults to 5007.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.deconz/index.html b/components/binary_sensor.deconz/index.html new file mode 100644 index 0000000000..24d982fc1d --- /dev/null +++ b/components/binary_sensor.deconz/index.html @@ -0,0 +1,412 @@ + + + + + + + + + deCONZ Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ deCONZ Binary Sensor +

+
+
+

See the deCONZ main component for configuration instructions.

+

The following sensor types are supported:

+
    +
  • Fire/Smoke detection
  • +
  • Open/Close detection
  • +
  • Presence detection
  • +
  • Water leakage detection
  • +
+

Entity ids will be binary_sensor.device_name, where device_name is defined in deCONZ.

+

Verified to be supported binary sensors

+
    +
  • Open/Close Detection +
      +
    • Xiaomi Smart Home Security Door & Window Contact Sensor
    • +
    +
  • +
  • Presence Detection +
      +
    • IKEA Trådfri Motion Sensor
    • +
    • Philips Hue Motion Sensor
    • +
    • Xiaomi Motion Sensor
    • +
    • Xiaomi Smart Home Aqara Human Body Sensor
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.digital_ocean/index.html b/components/binary_sensor.digital_ocean/index.html new file mode 100644 index 0000000000..32403fee91 --- /dev/null +++ b/components/binary_sensor.digital_ocean/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Digital Ocean Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Digital Ocean Binary Sensor +

+
+
+

The digital_ocean binary sensor platform allows you to monitor your Digital Ocean droplets.

+

To use your Digital Ocean droplets, you first have to set up your Digital Ocean hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: digital_ocean
+    droplets:
+      - 'fedora-512mb-nyc3-01'
+      - 'coreos-512mb-nyc3-01'
+
+
+
+

Configuration Variables

+
+
droplets
+
+

(list)(Required)List of droplets you want to monitor.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.ecobee/index.html b/components/binary_sensor.ecobee/index.html new file mode 100644 index 0000000000..05e55c3c31 --- /dev/null +++ b/components/binary_sensor.ecobee/index.html @@ -0,0 +1,391 @@ + + + + + + + + + Ecobee Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ecobee Binary Sensor +

+
+
+

To get your Ecobee binary sensors working with Home Assistant, follow the instructions for the general Ecobee component.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.egardia/index.html b/components/binary_sensor.egardia/index.html new file mode 100644 index 0000000000..b4418181a1 --- /dev/null +++ b/components/binary_sensor.egardia/index.html @@ -0,0 +1,384 @@ + + + + + + + + + Egardia Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Egardia Binary Sensor +

+
+
+

The egardia platform allows you to get data from your Egardia/Woonveilig binary sensors from within Home Assistant. +Currently only door contacts are supported. IR sensors are not supported and will probably never be since their status cannot be read outside of the alarm control panel. Smoke sensors and others might be added but currently are not supported.

+

You will need to set up your Egardia hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.eight_sleep/index.html b/components/binary_sensor.eight_sleep/index.html new file mode 100644 index 0000000000..2b7604f303 --- /dev/null +++ b/components/binary_sensor.eight_sleep/index.html @@ -0,0 +1,383 @@ + + + + + + + + + Eight Sleep Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Eight Sleep Binary Sensor +

+
+
+

The eight_sleep binary sensor platform lets you observe the presence state of a Eight Sleep cover/mattress through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.enocean/index.html b/components/binary_sensor.enocean/index.html new file mode 100644 index 0000000000..df27830c73 --- /dev/null +++ b/components/binary_sensor.enocean/index.html @@ -0,0 +1,424 @@ + + + + + + + + + EnOcean Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EnOcean Binary Sensor +

+
+
+

This can typically be one of those batteryless wall switches. Currently only one type has been tested: Eltako FT55 which uses the EnOcean PTM 215 module. All switches using this module are expected to work. Other devices will most likely not work without changing the Home Assistant code.

+

To use your EnOcean device, you first have to set up your EnOcean hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: enocean
+    id: [0x01,0x90,0x84,0x3C]
+
+
+

Configuration variables:

+
    +
  • id (Required): The ID of the device. This is the 4 bytes long number written on the dimmer.
  • +
  • name (Optional): An identifier for the switch in the frontend.
  • +
  • device_class (Optional): The type/class of the sensor to set the icon in the frontend.
  • +
+

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.
  • +
  • which: Always 0 when using the single rocket. 0 or 1 when using the dual rocket switch.
  • +
  • onoff: 0 or 1 for either side of the rocket.
  • +
+

Sample automation to switch lights on and off:

+
# Example automation to turn lights on/off on button release
+automation:
+  - alias: hall light switches
+    trigger:
+      platform: event
+      event_type: button_pressed
+      event_data:
+        id: [0xYY, 0xYY, 0xYY, 0xYY]
+        pushed: 0
+    action:
+      service_template: "{% if trigger.event.data.onoff %} light.turn_on {% else %} light.turn_off {%endif %}"
+      data_template:
+        entity_id: "{% if trigger.event.data.which == 1 %} light.hall_left {% else %} light.hall_right {%endif %}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.envisalink/index.html b/components/binary_sensor.envisalink/index.html new file mode 100644 index 0000000000..6c74974d62 --- /dev/null +++ b/components/binary_sensor.envisalink/index.html @@ -0,0 +1,387 @@ + + + + + + + + + Envisalink Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Envisalink Binary Sensor +

+
+
+

The envisalink platform allows you to get data from your Envisalink binary sensors from within Home Assistant.

+

Check the type/class list for a possible visualization of your zone.

+

The requirement is that you have setup your Envisalink hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.ffmpeg/index.html b/components/binary_sensor.ffmpeg/index.html new file mode 100644 index 0000000000..7675d272df --- /dev/null +++ b/components/binary_sensor.ffmpeg/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/binary_sensor.ffmpeg_motion/index.html b/components/binary_sensor.ffmpeg_motion/index.html new file mode 100644 index 0000000000..d06f230fc8 --- /dev/null +++ b/components/binary_sensor.ffmpeg_motion/index.html @@ -0,0 +1,403 @@ + + + + + + + + + FFmpeg Motion Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FFmpeg Motion Binary Sensor +

+
+
+

The ffmpeg platform allows you to use any video feed with FFmpeg for motion sensors in Home Assistant.

+

+If the ffmpeg process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service ffmpeg.start, ffmpeg.stop, ffmpeg.restart. +

+

Motion

+

FFmpeg doesn’t have a motion detection filter, but can use a scene filter to detect a new scene/motion. You can set how much needs to change in order to detect motion with the option ‘changes’, the percent value of change between frames. If you want a really small value for ‘changes’, you can also add a denoise filter.

+

To add FFmpeg with motion detection to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: ffmpeg_motion
+    input: FFMPEG_SUPPORTED_INPUT
+
+
+

Configuration variables:

+
    +
  • input (Required): An FFmpeg-compatible input file, stream, or feed.
  • +
  • name (Optional): Override the name of your camera for the frontend.
  • +
  • initial_state (Optional): Start ffmpeg with Home Assistant. Defaults to true.
  • +
  • changes (Optional): How much needs to change between two frames to detect it as motion (a lower value is more sensitive). Defaults to 10%.
  • +
  • reset (Optional): The time to reset the state after no new motion is detected. Defaults to 20 seconds.
  • +
  • repeat (Optional): How many events need to be detected in repeat_time in order to trigger a motion. Defaults to 0 repeats (deactivated).
  • +
  • repeat_time (Optional): The span of time repeat events need to occur in before triggering a motion. Defaults to 0 seconds (deactivated).
  • +
  • extra_arguments (Optional): Extra options to pass to ffmpeg, e.g. video denoise filtering.
  • +
+

To experiment with values (changes/100 is the scene value in ffmpeg):

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

+

Tips

+
    +
  • Use motion only in a custom area with crop filter:
  • +
+
extra_arguments: -filter:v "crop=100:100:12:34"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.ffmpeg_noise/index.html b/components/binary_sensor.ffmpeg_noise/index.html new file mode 100644 index 0000000000..e8d3e1ecb0 --- /dev/null +++ b/components/binary_sensor.ffmpeg_noise/index.html @@ -0,0 +1,394 @@ + + + + + + + + + FFmpeg Noise Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FFmpeg Noise Binary Sensor +

+
+
+

The ffmpeg platform allows you to use any video or audio feed with FFmpeg for various sensors in Home Assistant.

+

+If the ffmpeg process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service ffmpeg.start, ffmpeg.stop, ffmpeg.restart. +

+

Noise

+

To add FFmpeg with noise detection to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: ffmpeg_noise
+    input: FFMPEG_SUPPORTED_INPUT
+
+
+

Configuration variables:

+
    +
  • input (Required): An FFmpeg-compatible input file, stream, or feed.
  • +
  • name (Optional): Override the name of your camera.
  • +
  • initial_state (Optional): Default true. Start ffmpeg with home-assistant.
  • +
  • peak (Optional): Default -30. The threshold of detecting noise, in dB. 0 is very loud and -100 is low.
  • +
  • duration (Optional): Default 1 second. How long the noise needs to be over the peak to trigger the state.
  • +
  • reset (Optional): Default 20 seconds. The time to reset the state after no new noise is over the peak.
  • +
  • extra_arguments (Optional): Extra options to pass to ffmpeg, like audio frequency filtering.
  • +
  • output (Optional): Allows you to send the audio output of this sensor to an Icecast server or other FFmpeg-supported output, e.g. to stream with Sonos after a state is triggered.
  • +
+

To experiment with values:

+
$ ffmpeg -i YOUR_INPUT -vn -filter:a silencedetect=n=-30dB:d=1 -f null -
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.flic/index.html b/components/binary_sensor.flic/index.html new file mode 100644 index 0000000000..513b7bc125 --- /dev/null +++ b/components/binary_sensor.flic/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Flic Smart Button - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Flic Smart Button +

+
+
+

The flic platform allows you to connect with multiple flic 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, OS X or Windows.

+

To use your flic buttons in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: flic
+
+
+

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

Discovery

+

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.

+

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.

+

Events

+

The flic component fires flic_click events on the bus. You can capture the events and respond to them in automation scripts like this:

+
# Example configuration.yaml automation entry
+automation:
+  - alias: Turn on lights in living room if flic is pressed once
+    trigger:
+      platform: event
+      event_type: flic_click
+      event_data:
+        button_name: flic_81e4ac74b6d2
+        click_type: single
+    action:
+      service: homeassistant.turn_off
+      entity_id: group.lights_livingroom
+
+
+

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.
  • +
  • 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.
  • +
+
Ignoring Click Types
+

For some purposes it might make sense to exclude a specific click type from triggering click events. For example when ignoring double clicks, pressing the button twice fast results in two single instead of a double click event. This is very useful for applications where you want to click fast.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.gc100/index.html b/components/binary_sensor.gc100/index.html new file mode 100644 index 0000000000..37dad51d20 --- /dev/null +++ b/components/binary_sensor.gc100/index.html @@ -0,0 +1,393 @@ + + + + + + + + + gc100 Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ gc100 Binary Sensor +

+
+
+

To enable this sensor, you first have to set up gc100, and add the following lines to your configuration.yaml file:

+
# 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/components/binary_sensor.hikvision/index.html b/components/binary_sensor.hikvision/index.html new file mode 100644 index 0000000000..3644109062 --- /dev/null +++ b/components/binary_sensor.hikvision/index.html @@ -0,0 +1,467 @@ + + + + + + + + + Hikvision Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hikvision Binary Sensor +

+
+
+

The Hikvision Binary Sensor is a platform that parses the event stream of a Hikvision IP Camera or NVR and presents the camera/nvr events to Home Assistant as binary sensors with either an “off” or “on” state.

+

The platform will automatically add all sensors to Home Assistant that are configured within the camera/nvr interface to “Notify the surveillance center” as a trigger. If you would like to hide a sensor type you can do so by either unchecking “Notify the surveillance center” in the camera configuration or by using the “ignored” customize option detailed below.

+

+In order for the sensors to work the hikvision user must have the ‘Remote: Notify Surveillance Center / Trigger Alarm Output’ permission which can be enabled from the user managment section of the web interace. Also the ‘WEB Authentication’ needs to be set to ‘digest/basic’ in the security / authentication section. +

+

For example, if you configure a camera with the name “Front Porch” that has motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant:

+
binary_sensor.front_porch_motion
+binary_sensor.front_port_line_crossing
+
+
+

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
+binary_sensor.home_motion_2
+binary_sensor.home_line_crossing_1
+binary_sensor.home_line_crossing_2
+
+
+

This platform should work with all Hikvision cameras and nvrs, and has been confirmed to work with the following models:

+
    +
  • DS-2CD3132-I
  • +
  • DS-2CD2232-I5
  • +
  • DS-2CD2032-I
  • +
  • DS-2CD2042WD-I
  • +
  • DS-2CD2142FWD-I
  • +
+

To enable this sensor, the following lines are required in your configuration.yaml:

+
binary_sensor:
+  platform: hikvision
+  host: IP_ADDRESS
+  username: user
+  password: pass
+
+
+

Configuration options for a Hikvision Sensor:

+
    +
  • name (Optional): The name you’d like to give the camera in Home Assistant, defaults to name defined in the camera.
  • +
  • host (Required): The IP address of the camera you would like to connect to.
  • +
  • port (Optional): The port to connect to the camera on, defaults to 80.
  • +
  • ssl (Optional): True if you want to connect with https. Be sure to set the port also.
  • +
  • username (Required): The username to authenticate with.
  • +
  • password (Required): The password to authenticate with.
  • +
  • customize (Optional): This attribute contains sensor-specific override values. Only sensor name needs defined: +
      +
    • ignored (Optional): Ignore this sensor completely. It won’t be shown in the Web Interface and no events are generated for it.
    • +
    • delay (Optional): Specify the delay to wait after a sensor event ends before notifying Home Assistant. This is useful to catch multiple quick trips in one window without the state toggling on and off. The default delay is 5 seconds.
    • +
    +
  • +
+

Supported sensor/event types are:

+
    +
  • Motion
  • +
  • Line Crossing
  • +
  • Field Detection
  • +
  • Video Loss
  • +
  • Tamper Detection
  • +
  • Shelter Alarm
  • +
  • Disk Full
  • +
  • Disk Error
  • +
  • Net Interface Broken
  • +
  • IP Conflict
  • +
  • Illegal Access
  • +
  • Video Mismatch
  • +
  • Bad Video
  • +
  • PIR Alarm
  • +
  • Face Detection
  • +
  • Scene Change Detection
  • +
+

Example of a configuration in your configuration.yaml that utilizes the customize options for a camera:

+
binary_sensor:
+  platform: hikvision
+  host: 192.168.X.X
+  port: 80
+  ssl: False
+  username: user
+  password: pass
+  customize:
+    motion:
+      delay: 30
+    line_crossing:
+      ignored: True
+
+
+

Example of a configuration in your configuration.yaml that utilizes the customize options for a nvr:

+
binary_sensor:
+  platform: hikvision
+  host: 192.168.X.X
+  port: 80
+  ssl: False
+  username: user
+  password: pass
+  customize:
+    motion_1:
+      delay: 30
+    field_detection_2:
+      ignored: True
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.hive/index.html b/components/binary_sensor.hive/index.html new file mode 100644 index 0000000000..66d1933698 --- /dev/null +++ b/components/binary_sensor.hive/index.html @@ -0,0 +1,399 @@ + + + + + + + + + Hive Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hive Binary Sensor +

+
+
+

The ‘hive’ binary sensor component integrates your Hive sensors into Home Assistant.

+

The Hive sensor component supports the following Hive products:

+
    +
  • Hive Window or Door Sensor
  • +
  • Hive Motion Sensor
  • +
+

+Full configuration details can be found on the main Hive component page. +

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.homematic/index.html b/components/binary_sensor.homematic/index.html new file mode 100644 index 0000000000..8ba6270ecb --- /dev/null +++ b/components/binary_sensor.homematic/index.html @@ -0,0 +1,395 @@ + + + + + + + + + Homematic Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic Binary Sensor +

+
+
+

The homematic binary sensor platform lets you observe the state changes of binary Homematic sensors through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup Homematic.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.http/index.html b/components/binary_sensor.http/index.html new file mode 100644 index 0000000000..1f309df03b --- /dev/null +++ b/components/binary_sensor.http/index.html @@ -0,0 +1,431 @@ + + + + + + + + + HTTP Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HTTP Binary Sensor +

+
+
+

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:

+
http://IP_ADDRESS:8123/api/states/binary_sensor.DEVICE_NAME
+
+
+

+You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices. +

+

The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor.

+
{"state": "on", "attributes": {"friendly_name": "Radio"}}
+
+
+

For a quick test curl can be useful to “simulate” a device.

+
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+    -H "Content-Type: application/json" \
+    -d '{"state": "off", "attributes": {"friendly_name": "Radio"}}' \
+    http://localhost:8123/api/states/binary_sensor.radio
+
+
+

To check if the sensor is working, use again curl to retrieve the current state.

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       http://localhost:8123/api/states/binary_sensor.radio
+{
+    "attributes": {
+        "friendly_name": "Radio"
+    },
+    "entity_id": "binary_sensor.radio",
+    "last_changed": "16:45:51 05-02-2016",
+    "last_updated": "16:45:51 05-02-2016",
+    "state": "off"
+}
+
+
+

Examples

+

In this section you find some real life examples of how to use this sensor. Beside curl.

+

Using Python request module

+

As already shown on the API page, it’s very simple to use Python and the Requests module for the interaction with Home Assistant.

+
response = requests.post(
+        'http://localhost:8123/api/states/binary_sensor.radio',
+        headers={'x-ha-access': 'YOUR_PASSWORD', 'content-type': 'application/json'},
+        data=json.dumps({'state': 'on', 'attributes': {'friendly_name': 'Radio'}}))
+print(response.text)
+
+
+

Using httpie

+

httpie is a user-friendly CLI HTTP client.

+
$ http -v POST http://localhost:8123/api/states/binary_sensor.radio \
+      x-ha-access:YOUR_PASSWORD content-type:application/json state=off \
+      attributes:='{"friendly_name": "Radio"}'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.ihc/index.html b/components/binary_sensor.ihc/index.html new file mode 100644 index 0000000000..d3fb4fa8ab --- /dev/null +++ b/components/binary_sensor.ihc/index.html @@ -0,0 +1,442 @@ + + + + + + + + + IHC Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IHC Binary Sensor +

+
+
+

Before you can use the IHC Binary Sensor platform, you must setup the IHC Component

+

When auto setup is enabled the following products will be found in the IHC project and setup as binary sensors:

+
    +
  • Dataline magnet contacts
  • +
  • Dataline Pir sensors
  • +
  • Dataline Pir sensors with twilight detection
  • +
  • Dataline Pir alarm sensor
  • +
  • Dataline smoke detector
  • +
  • Dataline gas detector
  • +
  • Dataline light sensor
  • +
+

To manually configure IHC Binary Sensors insert this section in your configuration:

+
binary_sensor:
+  - platform: ihc
+    binary_sensors:
+      - id: 12345
+        name: mysensor
+        type: opening
+        inverting: True
+      - id: 12346
+           ...
+
+
+
+

Configuration Variables

+
+
binary_sensors
+
+

(map)(Optional)List of binary sensors to setup manually.

+
+
+
+
id
+
+

(int)(Required)The IHC resource id.

+
+
inverting
+
+

(bool)(Optional)If True the sensor will be inverted.

+

Default value: false

+
+
name
+
+

(string)(Optional)The name of the component

+
+
type
+
+

(string)(Optional)The binary sensor type. See Home Assistant binary sensor for available types.

+
+
+
+
+
+

The resource id should be an id of a boolean IHC resource. +For more information about IHC resource ids see Manual Setup

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.insteon_plm/index.html b/components/binary_sensor.insteon_plm/index.html new file mode 100644 index 0000000000..1f171a98e3 --- /dev/null +++ b/components/binary_sensor.insteon_plm/index.html @@ -0,0 +1,391 @@ + + + + + + + + + Insteon PLM Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon PLM Binary Sensor +

+
+
+

The insteon_plm binary sensor platform lets you control your sensors through +an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a +USB or serial port. To add support, set up the primary insteon_plm +component.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.iss/index.html b/components/binary_sensor.iss/index.html new file mode 100644 index 0000000000..c435418abd --- /dev/null +++ b/components/binary_sensor.iss/index.html @@ -0,0 +1,398 @@ + + + + + + + + + International Space Station - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ International Space Station +

+
+
+

The iss platform uses the Open Notify API to let you know if the station is above your home location. This means that ISS is 10° above the horizon of your home.

+

You can check in the attributes of the sensor to see the timestamp for the next rise of the station, its current coordinates, and the number of people in space.

+

To add ISS binary sensor to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: iss
+
+
+
+

Configuration Variables

+
+
show_on_map
+
+

(string)(Optional)Option to show the position of the ISS on the map.

+

Default value: false

+
+
+
+

+If you set show_on_map True then the location attributes are named latitude and longitude. The default name of the location attributes is lat and long to avoid showing them on the map. +

+

Show position on map with camera platform

+

The generic camera platform offers the possibility to show the location of the ISS on Google Maps.

+
# Example configuration.yaml entry
+camera:
+  - platform: generic
+    name: ISS
+    still_image_url: https://maps.googleapis.com/maps/api/staticmap?center={{ states.binary_sensor.iss.attributes.lat }},{{ states.binary_sensor.iss.attributes.long }}&zoom=5&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ states.binary_sensor.iss.attributes.lat }},{{ states.binary_sensor.iss.attributes.long }}
+    limit_refetch_to_url_change: true
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.isy994/index.html b/components/binary_sensor.isy994/index.html new file mode 100644 index 0000000000..962252b012 --- /dev/null +++ b/components/binary_sensor.isy994/index.html @@ -0,0 +1,398 @@ + + + + + + + + + ISY994 Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Binary Sensor +

+
+
+

The isy994 platform allows you to get data from your ISY994 binary sensors from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.knx/index.html b/components/binary_sensor.knx/index.html new file mode 100644 index 0000000000..409efc594c --- /dev/null +++ b/components/binary_sensor.knx/index.html @@ -0,0 +1,447 @@ + + + + + + + + + KNX Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Binary Sensor +

+
+
+

The knx sensor platform allows you to monitor KNX binary sensors.

+

The knx component must be configured correctly, see KNX Component.

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: knx
+    name: "Entrance.Motion.Sensor"
+    address: '6/0/2'
+    device_class: 'motion'
+    #significant_bit: 2
+    #reset_after: 100
+
+
+

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.
  • +
  • reset_after (Optional): Reset back to OFF state after specified milliseconds.
  • +
+

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.

+
# 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.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.linode/index.html b/components/binary_sensor.linode/index.html new file mode 100644 index 0000000000..6c309814fe --- /dev/null +++ b/components/binary_sensor.linode/index.html @@ -0,0 +1,273 @@ + + + + + + + + + Linode Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Linode Binary Sensor +

+
+
+

The linode binary sensor platform allows you to monitor your Linode nodes.

+

Add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: linode
+    nodes:
+      - 'myvpsname'
+
+
+
+

Configuration Variables

+
+
nodes
+
+

(string)(Required)List of VPSs you want to control.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.maxcube/index.html b/components/binary_sensor.maxcube/index.html new file mode 100644 index 0000000000..e24f1f8654 --- /dev/null +++ b/components/binary_sensor.maxcube/index.html @@ -0,0 +1,268 @@ + + + + + + + + + eQ-3 MAX! Cube binary sensors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ eQ-3 MAX! Cube binary sensors +

+
+
+

See instructions at the main component.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.mercedesme/index.html b/components/binary_sensor.mercedesme/index.html new file mode 100644 index 0000000000..fb6dfa6a41 --- /dev/null +++ b/components/binary_sensor.mercedesme/index.html @@ -0,0 +1,387 @@ + + + + + + + + + Mercedes me Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mercedes me Binary Sensor +

+
+
+

The Mercedes me platform allows you to get data from your Mercedes me connected car sensors like windows, doors, lock, tire warnings from within Home Assistant.

+

They will be automatically discovered if the Mercedes me component is loaded.

+

For more configuration information see the Mercedes me component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.modbus/index.html b/components/binary_sensor.modbus/index.html new file mode 100644 index 0000000000..8a4965254b --- /dev/null +++ b/components/binary_sensor.modbus/index.html @@ -0,0 +1,423 @@ + + + + + + + + + Modbus Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Modbus Binary Sensor +

+
+
+

The modbus binary sensor allows you to gather data from Modbus coils.

+

To use your Modbus binary sensors in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+binary_sensor:
+  - platform: modbus
+    coils:
+      - name: Sensor1
+        slave: 1
+        coil: 100
+      - name: Sensor2
+        slave: 1
+        coil: 110
+
+
+

Configuration variables:

+
    +
  • coils array (Required): The array contains a list of coils to read from. +
      +
    • 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 documentation.

+

Full example

+

Example a sensor with a 10 seconds scan interval:

+
binary_sensor:
+  - platform: modbus
+    scan_interval: 10
+    coils:
+      - name: Sensor1
+        slave: 1
+        coil: 100
+      - name: Sensor2
+        slave: 1
+        coil: 110
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.mqtt/index.html b/components/binary_sensor.mqtt/index.html new file mode 100644 index 0000000000..272b68a236 --- /dev/null +++ b/components/binary_sensor.mqtt/index.html @@ -0,0 +1,521 @@ + + + + + + + + + MQTT Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Binary Sensor +

+
+
+

The mqtt binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: on or off.

+

The binary sensor state will be updated only after a new message is published on state_topic matching payload_on or payload_off. If these messages are published with the retain flag set, the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup. 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:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: mqtt
+    state_topic: "home-assistant/window/contact"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the binary sensor.

+

Default value: MQTT Binary Sensor

+
+
state_topic
+
+

(string)(Required)The MQTT topic subscribed to receive sensor values.

+
+
payload_on
+
+

(string)(Optional)The payload that represents the on state.

+

Default value: true

+
+
payload_off
+
+

(string)(Optional)The payload that represents the off state.

+

Default value: false

+
+
availability_topic
+
+

(string)(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
+
+

(string)(Optional)The payload that represents the online state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the offline state.

+

Default value: offline

+
+
qos
+
+

(integer)(Optional)The maximum QoS level to be used when receiving messages.

+

Default value: 0

+
+
device_class
+
+

(string)(Optional)The type/class of the sensor to set the icon in the frontend.

+
+
value_template
+
+

(string)(Optional)Defines a template to extract a value from the payload.

+
+
force_update
+
+

(boolean)Sends update events even if the value hasn’t changed. Useful if you want to have meaningful value graphs in history.

+

Default value: false

+
+
+
+

Examples

+

In this section, you will find some real-life examples of how to use this sensor.

+

Full configuration

+

To test, you can use the command line tool mosquitto_pub shipped with mosquitto or the mosquitto-clients package to send MQTT messages. To set the state of the binary sensor manually:

+
$  mosquitto_pub -h 127.0.0.1 -t home-assistant/window/contact -m "OFF"
+
+
+

The example below shows a full configuration for a binary sensor:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: mqtt
+    name: "Window Contact Sensor"
+    state_topic: "home-assistant/window/contact"
+    payload_on: "ON"
+    payload_off: "OFF"
+    availability_topic: "home-assistant/window/availability"
+    payload_available: "online"
+    payload_not_available: "offline"
+    qos: 0
+    device_class: opening
+    value_template: '{{ value.x }}'
+
+
+

Get the state of a device with ESPEasy

+

Assuming that you have flashed your ESP8266 unit with ESPEasy. Under “Config” is a name (“Unit Name:”) set for your device (here it’s “bathroom”). A configuration for a “Controller” for MQTT with the protocol “OpenHAB MQTT” is present and the entries (“Controller Subscribe:” and “Controller Publish:”) are adjusted to match your needs. In this example, the topics are prefixed with “home”. Also, add a “Switch Input” in the “Devices” tap with the name “switch” and “button” as value.

+

As soon as the unit is online, you will get the state of the attached button.

+
home/bathroom/status Connected
+...
+home/bathroom/switch/button 1
+
+
+

The configuration will look like the example below:

+
# Example configuration.yml entry
+binary_sensor:
+  - platform: mqtt
+    name: Bathroom
+    state_topic: "home/bathroom/switch/button"
+    payload_on: "1"
+    payload_off: "0"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.mysensors/index.html b/components/binary_sensor.mysensors/index.html new file mode 100644 index 0000000000..a96485b4d0 --- /dev/null +++ b/components/binary_sensor.mysensors/index.html @@ -0,0 +1,502 @@ + + + + + + + + + MySensors Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Binary Sensor +

+
+
+

Integrates MySensors binary sensors into Home Assistant. See the main component for configuration instructions.

+

The following sensor types are supported:

+

MySensors version 1.4 and higher

+ + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_DOORV_TRIPPED
S_MOTIONV_TRIPPED
S_SMOKEV_TRIPPED
+

MySensors version 1.5 and higher

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_SPRINKLERV_TRIPPED
S_WATER_LEAKV_TRIPPED
S_SOUNDV_TRIPPED
S_VIBRATIONV_TRIPPED
S_MOISTUREV_TRIPPED
+

For more information, visit the serial api of MySensors.

+

Example sketch

+
/**
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/binary
+ */
+
+
+#include <MySensor.h>
+#include <SPI.h>
+#include <Bounce2.h>
+
+#define SN "BinarySensor"
+#define SV "1.0"
+#define CHILD_ID 1
+#define BUTTON_PIN 3  // Arduino Digital I/O pin for button/reed switch.
+
+MySensor gw;
+Bounce debouncer = Bounce();
+MyMessage msg(CHILD_ID, V_TRIPPED);
+
+void setup()
+{
+  gw.begin();
+  gw.sendSketchInfo(SN, SV);
+  // Setup the button.
+  pinMode(BUTTON_PIN, INPUT_PULLUP);
+  // After setting up the button, setup debouncer.
+  debouncer.attach(BUTTON_PIN);
+  debouncer.interval(5);
+  gw.present(CHILD_ID, S_DOOR);
+  gw.send(msg.set(0));
+}
+
+void loop()
+{
+  if (debouncer.update()) {
+    // Get the update value.
+    int value = debouncer.read();
+    // Send in the new value.
+    gw.send(msg.set(value == LOW ? 1 : 0));
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.mystrom/index.html b/components/binary_sensor.mystrom/index.html new file mode 100644 index 0000000000..6bded87368 --- /dev/null +++ b/components/binary_sensor.mystrom/index.html @@ -0,0 +1,428 @@ + + + + + + + + + myStrom Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ myStrom Binary Sensor +

+
+
+

The mystrom binary sensor platform allows you to use myStrom Wifi Buttons with Home Assistant. The myStrom Wifi Buttons support three and the myStrom WiFi Button + four different push pattern:

+
    +
  • single: Short push (approx. 1/2 seconds)
  • +
  • double: 2x sequential short pushes (within 2 seconds)
  • +
  • long: Long push (approx. 2 seconds)
  • +
  • touch: Touch of the button’s surface (only affective for WiFi Button +)
  • +
+

The first usage of the pattern will create the binary sensor for the pattern. If the WiFi Button is pushed one time then a binary sensor for the single pattern will be created. The same applies for the other patterns. With the second usage of the pattern the binary sensors become fully functional.

+

The buttons will give you feedback with its built-in LED:

+
    +
  • white then green: Pattern was submitted successfully
  • +
  • white then red: There is a problem with the communication
  • +
+

To use your myStrom WiFi Button in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: mystrom
+
+
+

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. 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 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 receiving the data is [IP address Home Assistant]:8123/api/mystrom.

+
$ 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]
+{
+  "[MAC address of the button]": {
+    "type": "button",
+    "battery": true,
+    "reachable": true,
+    "meshroot": false,
+    "charge": true,
+    "voltage": 4.292,
+    "fw_version": "2.26",
+    "single": "get://[IP address Home Assistant]:8123/api/mystrom?single=[id of the button]",
+    "double": "",
+    "long": "",
+    "touch": ""
+  }
+}
+
+
+

A complete command to set the URL for a double click could look like the example below:

+
$ curl -d "double=get://192.168.1.3:8123/api/mystrom?double%3DButton1" http://192.168.1.12/api/v1/device/4D5F5D5CD553
+
+
+

+The firmware version 2.26 doesn’t support TLS/SSL. This means that you are only able to use the WiFi Buttons if you are using plain-text communication between Home Assistant and the clients/entities. +

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.nest/index.html b/components/binary_sensor.nest/index.html new file mode 100644 index 0000000000..27fde5dd80 --- /dev/null +++ b/components/binary_sensor.nest/index.html @@ -0,0 +1,430 @@ + + + + + + + + + Nest Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest Binary Sensor +

+
+
+

The nest binary sensor platform lets you monitor various states of your Nest devices.

+

+You must have the Nest component configured to use these sensors. The binary sensors will be setup if the nest component is configured and the required configuration for the nest binary sensor is set. +

+

To enable binary sensors and customize which sensors are setup, you can extend the Nest component configuration in your configuration.yaml file with the following settings:

+
# Example configuration.yaml entry
+nest:
+  binary_sensors:
+    monitored_conditions:
+      - 'fan'
+      - 'target'
+
+
+

By default all binary sensors for your available Nest devices will be monitored. Leave monitored_conditions blank to disable all binary sensors for the Nest component.

+

Configuration variables:

+
    +
  • monitored_conditions array (Optional): States to monitor.
  • +
+

The following conditions are available by device:

+
    +
  • Nest Thermostat: +
      +
    • online
    • +
    • fan
    • +
    • is_using_emergency_heat
    • +
    • is_locked
    • +
    • has_leaf
    • +
    +
  • +
  • Nest Protect: +
      +
    • online
    • +
    +
  • +
  • Nest Camera: +
      +
    • online
    • +
    • motion_detected
    • +
    • person_detected
    • +
    • sound_detected
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.netatmo/index.html b/components/binary_sensor.netatmo/index.html new file mode 100644 index 0000000000..e68f2f95ac --- /dev/null +++ b/components/binary_sensor.netatmo/index.html @@ -0,0 +1,433 @@ + + + + + + + + + Netatmo Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netatmo Binary Sensor +

+
+
+

Basic Configuration

+

The netatmo binary sensor platform is consuming the information provided by a Netatmo camera. This component allows you to get the latest event seen by the camera.

+

To enable the Netatmo binary sensor, you have to set up netatmo, this will use discovery to add your binary sensor.

+

Advanced configuration

+

If you want to select a specific sensor, set discovery to False for netatmo and add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+binary_sensor:
+  platform: netatmo
+  home: home_name
+  timeout: 90
+  cameras:
+    - camera_name1
+  welcome_sensors:
+    - Someone known
+    - Someone unknown
+    - Motion
+  presence_sensors:
+    - Outdoor motion
+    - Outdoor human
+    - Outdoor animal
+    - Outdoor vehicle
+
+
+

Configuration variables:

+
    +
  • home (Optional): Will use the cameras of this home only.
  • +
  • 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. +
      +
    • ‘Someone known’
    • +
    • ‘Someone unknown’
    • +
    • ‘Motion’
    • +
    +
  • +
  • presence_sensors array (Optional): List of monitored conditions. +
      +
    • ‘Outdoor motion’
    • +
    • ‘Outdoor human’
    • +
    • ‘Outdoor animal’
    • +
    • ‘Outdoor vehicle’
    • +
    +
  • +
+

If home and cameras is not provided, all cameras will be used. If multiple cameras are available then each monitored conditions will create a specific sensor for each camera

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.nx584/index.html b/components/binary_sensor.nx584/index.html new file mode 100644 index 0000000000..54142a4cec --- /dev/null +++ b/components/binary_sensor.nx584/index.html @@ -0,0 +1,409 @@ + + + + + + + + + NX584 zones - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NX584 zones +

+
+
+

The nx584 platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through pynx584 which is required for this to work.

+

Enabling this sensor platform exposes all of your zones as binary sensors, which provides visibility through the UI as well as the ability to trigger automation actions instantly when something happens like a door opening, or a motion sensor trigger.

+

To enable this feature, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+binary_sensor:
+  platform: nx584
+
+
+

Configuration variables:

+
    +
  • host (Optional): This is the host where the nx584 server process is running. If unset, it is assumed to be localhost, which will work if the server process is running on the same system as Home Assistant.
  • +
  • port (Optional): The port where the server process is running. Defaults to 5007.
  • +
  • exclude_zones (Optional): This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc.
  • +
  • zone_types (Optional): This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. The list of available zone types relevant to alarm zones are: opening, motion, gas, smoke, moisture, safety.
  • +
+

An extended configuration entry could look like this:

+
# Full example configuration.yaml entry
+binary_sensor:
+  platform: nx584
+  host: 192.168.1.10
+  port: 5007
+  exclude_zones:
+    - 3
+    - 5
+  zone_types:
+    1: opening
+    2: opening
+    4: motion
+    6: moisture
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.octoprint/index.html b/components/binary_sensor.octoprint/index.html new file mode 100644 index 0000000000..8912dd32a8 --- /dev/null +++ b/components/binary_sensor.octoprint/index.html @@ -0,0 +1,403 @@ + + + + + + + + + OctoPrint Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OctoPrint Binary Sensor +

+
+
+

The octoprint binary sensor platform let you monitor if your 3D printer is printing or if there was a printing error.

+

+You must have the OctoPrint component configured to use this sensor. +

+

To set it up, add the following information to your configuration.yaml file:

+
binary_sensor:
+  - platform: octoprint
+    monitored_conditions:
+      - Printing
+      - Printing Error
+
+
+

Configuration variables:

+
    +
  • monitored_conditions array (Required): States to monitor. +
      +
    • Printing: State of the printer.
    • +
    • Printing Error: Error while printing.
    • +
    +
  • +
  • name (Optional): The name of the sensor. Default is ‘OctoPrint’.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.pilight/index.html b/components/binary_sensor.pilight/index.html new file mode 100644 index 0000000000..ad61daab25 --- /dev/null +++ b/components/binary_sensor.pilight/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Pilight Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pilight Binary Sensor +

+
+
+

The pilight binary sensor platform implement the pilight hub 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:

+
# 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:

+
# Example configuration.yml entry
+binary_sensor:
+  - platform: pilight
+    name: 'Motion'
+    variable: 'state'
+    payload:
+      unitcode: 371399
+    payload_on: 'closed'
+    disarm_after_trigger: True
+    reset_delay_sec: 30
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.ping/index.html b/components/binary_sensor.ping/index.html new file mode 100644 index 0000000000..c292fa3933 --- /dev/null +++ b/components/binary_sensor.ping/index.html @@ -0,0 +1,408 @@ + + + + + + + + + Ping (ICMP) Binary sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ping (ICMP) Binary sensor +

+
+
+

The ping binary sensor platform allows you to using ping to send ICMP echo requests. This way you can check if a given host is online and determine the round trip times from your Home Assistant instance to that system.

+

To use this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: ping
+    host: 192.168.0.1
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or hostname of the system you want to track.
  • +
  • count (Optional): Number of packets to send. Defaults to 5.
  • +
  • name (Optional): Let you overwrite the name of the device. Defaults to Ping Binary sensor.
  • +
+

The sensor exposes the different round trip times values measured by ping as attributes:

+
    +
  • round trip time mdev
  • +
  • round trip time avg
  • +
  • round trip time min
  • +
  • round trip time max
  • +
+

The default polling interval is 5 minutes. As many components based on the entity class, it is possible to overwrite this scan interval by specifying a scan_interval configuration key (value in seconds). In the example below we setup the ping binary sensor to poll the devices every 30 seconds.

+
# Example configuration.yaml entry to ping host 192.168.0.1 with 2 packets every 30 seconds.
+binary_sensor:
+  - platform: ping
+    host: 192.168.0.1
+    count: 2
+    scan_interval: 30
+
+
+

+When run on Windows systems, the round trip time attributes are rounded to the nearest millisecond and the mdev value is unavailable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.raincloud/index.html b/components/binary_sensor.raincloud/index.html new file mode 100644 index 0000000000..6fb44b3f45 --- /dev/null +++ b/components/binary_sensor.raincloud/index.html @@ -0,0 +1,400 @@ + + + + + + + + + Melnor Raincloud Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melnor Raincloud Binary Sensor +

+
+
+

To get your Melnor RainCloud binary sensors working within Home Assistant, please follow the instructions for the general Raincloud component.

+

Once you have enabled the Raincloud component, add the following to your configuration.yaml file:

+
# 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/components/binary_sensor.random/index.html b/components/binary_sensor.random/index.html new file mode 100644 index 0000000000..b82aae93d5 --- /dev/null +++ b/components/binary_sensor.random/index.html @@ -0,0 +1,593 @@ + + + + + + + + + Random Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Random Binary Sensor +

+
+
+

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:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: random
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+
+
+
+

See the entity component options to control how often the main component polls the random binary sensor. The default is 30 seconds.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.raspihats/index.html b/components/binary_sensor.raspihats/index.html new file mode 100644 index 0000000000..ebafb8d1d5 --- /dev/null +++ b/components/binary_sensor.raspihats/index.html @@ -0,0 +1,451 @@ + + + + + + + + + Raspihats Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspihats Binary Sensor +

+
+
+

The raspihats binary sensor platform allows you to read sensor values ​​using the digital inputs of the raspihats boards.

+

To use your raspihats boards in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: raspihats
+    i2c_hats:
+      - board: DI6acDQ6rly
+        address: 0x60
+        channels:
+          - index: 0
+            name: PIR Office
+            invert_logic: true
+            device_class: motion
+          - index: 1
+            name: PIR Bedroom
+
+
+

Configuration variables:

+
    +
  • i2c_hats (Optional): Array of used I2C-HATs. +
      +
    • board (Required): The board name [Di16, Di6Rly6, DI16ac, DI6acDQ6rly].
    • +
    • address (Required): The board I2C address, hex value. +
        +
      • channels (Required): Array of used digital input channels. +
          +
        • index (Required): Digital input channel index.
        • +
        • name (Required): Friendly name to use for the frontend.
        • +
        • invert_logic (Optional): Inverts the input logic, default is false.
        • +
        • device_class (Optional): See device classes in binary_sensor component, default is None
        • +
        +
      • +
      +
    • +
    +
  • +
+

Directions for installing smbus support on Raspberry Pi

+

Enable I2c interface with the Raspberry Pi configuration utility:

+
# pi user environment: Enable i2c interface
+$ sudo raspi-config
+
+
+

Select Interfacing options->I2C choose <Yes> 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:

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

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:

+
$ /usr/sbin/i2cdetect -y 1
+
+
+

It will output a table like this:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.rest/index.html b/components/binary_sensor.rest/index.html new file mode 100644 index 0000000000..d1488161e0 --- /dev/null +++ b/components/binary_sensor.rest/index.html @@ -0,0 +1,501 @@ + + + + + + + + + RESTful Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RESTful Binary Sensor +

+
+
+

The rest binary sensor platform is consuming a given endpoint which is exposed by a RESTful API of a device, an application, or a web service. The binary sensor has support for GET and POST requests.

+

The JSON messages can contain different values like 1, "1", TRUE, true, on, or open. If the value is nested then use a template.

+
{
+    "name": "Binary sensor",
+    "state": {
+        "open": "true",
+        "timestamp": "2016-06-20 15:42:52.926733"
+    }
+}
+
+
+

To enable this sensor, add the following lines to your configuration.yaml file for a GET request:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+
+
+

or for a POST request:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+    method: POST
+
+
+
+

Configuration Variables

+
+
resource
+
+

(string)(Required)The resource or endpoint that contains the value.

+

Default value: string

+
+
method
+
+

(string)(Optional)The method of the request.

+

Default value: GET

+
+
name
+
+

(string)(Optional)Name of the REST binary sensor.

+

Default value: REST Binary Sensor

+
+
device_class
+
+

(string)(Optional)The type/class of the sensor to set the icon in the frontend.

+
+
value_template
+
+

(template)(Optional)Defines a template to extract the value.

+
+
payload
+
+

(string)(Optional)The payload to send with a POST request. Usually formed as a dictionary.

+
+
verify_ssl
+
+

(boolean)(Optional)Verify the certification of the endpoint.

+

Default value: true

+
+
authentication
+
+

(string)(Optional)Type of the HTTP authentication. basic or digest.

+
+
username
+
+

(string)(Optional)The username for accessing the REST endpoint.

+
+
password
+
+

(string)(Optional)The password for accessing the REST endpoint.

+
+
headers
+
+

(list | string)(Optional)The headers for the requests.

+
+
+
+

+Make sure that the URL exactly matches your endpoint or resource. +

+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

aREST sensor

+

Instead of using an aREST binary sensor, you could retrieve the value of a device supporting aREST directly with a REST binary sensor.

+
binary_sensor:
+  - platform: rest
+    resource: http://192.168.0.5/digital/9
+    method: GET
+    name: Light
+    device_class: light
+    value_template: '{{ value_json.return_value }}'
+
+
+

Accessing an HTTP authentication protected endpoint

+

The REST sensor supports HTTP authentication and customized headers.

+
binary_sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS:5000/binary_sensor
+    username: ha1
+    password: test1
+    authentication: basic
+    headers:
+      User-Agent: Home Assistant
+      Content-Type: application/json
+
+
+

The headers will contain all relevant details. This will also give you the ability to access endpoints that are protected by tokens.

+
Content-Length: 1024
+Host: IP_ADDRESS1:5000
+Authorization: Basic aGExOnRlc3Qx
+Accept-Encoding: identity
+Content-Type: application/json
+User-Agent: Home Assistant
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.rfxtrx/index.html b/components/binary_sensor.rfxtrx/index.html new file mode 100644 index 0000000000..47e60c8220 --- /dev/null +++ b/components/binary_sensor.rfxtrx/index.html @@ -0,0 +1,489 @@ + + + + + + + + + RFXtrx Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFXtrx 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, the easiest way to find your binary sensors is to add this to your configuration.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:

+
# 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 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 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:

+
# 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:

+
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/components/binary_sensor.ring/index.html b/components/binary_sensor.ring/index.html new file mode 100644 index 0000000000..52195c41c0 --- /dev/null +++ b/components/binary_sensor.ring/index.html @@ -0,0 +1,401 @@ + + + + + + + + + Ring Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ring Binary Sensor +

+
+
+

To get your Ring.com binary sensors working within Home Assistant, please follow the instructions for the general Ring component.

+

Once you have enabled the Ring component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: ring
+
+
+

Configuration variables:

+
    +
  • 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 movement was detected by the Ring doorbell.
    • +
    +
  • +
+

Currently it supports doorbell, external chimes and stickup cameras.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.rpi_gpio/index.html b/components/binary_sensor.rpi_gpio/index.html new file mode 100644 index 0000000000..0bd30cabfb --- /dev/null +++ b/components/binary_sensor.rpi_gpio/index.html @@ -0,0 +1,406 @@ + + + + + + + + + Raspberry Pi GPIO Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspberry Pi GPIO Binary Sensor +

+
+
+

The rpi_gpio binary sensor platform allows you to read sensor values of the GPIOs of your Raspberry Pi.

+

To use your Raspberry Pi’s GPIO in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: rpi_gpio
+    ports:
+      11: PIR Office
+      12: PIR Bedroom
+
+
+

Configuration variables:

+
    +
  • ports array (Required): Array of used ports. +
      +
    • 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).
  • +
+

For more details about the GPIO layout, visit the Wikipedia article about the Raspberry Pi.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.rpi_pfio/index.html b/components/binary_sensor.rpi_pfio/index.html new file mode 100644 index 0000000000..480ad2dc5d --- /dev/null +++ b/components/binary_sensor.rpi_pfio/index.html @@ -0,0 +1,409 @@ + + + + + + + + + PiFace Digital I/O Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PiFace Digital I/O Binary Sensor +

+
+
+

The rpi_pfio binary sensor platform allows you to read sensor values of the PiFace Digital I/O .

+

To use your PiFace Digital I/O module in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: rpi_pfio
+    ports:
+      0:
+        name: PIR Office
+        invert_logic: true
+      1:
+        name: Doorbell
+        settle_time: 50
+
+
+

Configuration variables:

+
    +
  • ports array (Required): Array of used ports. +
      +
    • num (Required): Port number. +
        +
      • name (Required): Port name.
      • +
      • settle_time (Optional): The time in milliseconds for port debouncing. Default is 2 0ms.
      • +
      • invert_logic (Optional): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH).
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.satel_integra/index.html b/components/binary_sensor.satel_integra/index.html new file mode 100644 index 0000000000..fc497c534c --- /dev/null +++ b/components/binary_sensor.satel_integra/index.html @@ -0,0 +1,384 @@ + + + + + + + + + Satel Integra Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Satel Integra Binary Sensor +

+
+
+

The satel_integra binary sensor allows you to monitor your SatelIntegra alarm zones (inputs).

+

Check the type/class list for a possible visualization of your zone.

+

The requirement is that you have setup your SatelIntegra hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.skybell/index.html b/components/binary_sensor.skybell/index.html new file mode 100644 index 0000000000..79c6e6924f --- /dev/null +++ b/components/binary_sensor.skybell/index.html @@ -0,0 +1,409 @@ + + + + + + + + + Skybell Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybell Binary Sensor +

+
+
+

To get your Skybell.com binary sensors working within Home Assistant, please follow the instructions for the general Skybell component.

+

Once you have enabled the Skybell component, add the following to your configuration.yaml file:

+
# 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/components/binary_sensor.sleepiq/index.html b/components/binary_sensor.sleepiq/index.html new file mode 100644 index 0000000000..313a4c8fd9 --- /dev/null +++ b/components/binary_sensor.sleepiq/index.html @@ -0,0 +1,382 @@ + + + + + + + + + SleepIQ Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SleepIQ Binary Sensor +

+
+
+

To get your SleepIQ binary sensors working with Home Assistant, follow the instructions for the general SleepIQ component.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.spc/index.html b/components/binary_sensor.spc/index.html new file mode 100644 index 0000000000..88af29ef4a --- /dev/null +++ b/components/binary_sensor.spc/index.html @@ -0,0 +1,384 @@ + + + + + + + + + SPC Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SPC Binary Sensor +

+
+
+

The spc platform allows you to get data from your Vanderbilt SPC binary sensors from within Home Assistant.

+

Check the type/class list for a possible visualization of your zone. Currently motion, smoke and door sensors are supported.

+

The requirement is that you have setup your SPC hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.tapsaff/index.html b/components/binary_sensor.tapsaff/index.html new file mode 100644 index 0000000000..10f2c4b671 --- /dev/null +++ b/components/binary_sensor.tapsaff/index.html @@ -0,0 +1,245 @@ + + + + + + + + + Taps Aff - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Taps Aff +

+
+
+

The tapsaff binary sensor provides the ‘Taps Aff’ status for a given location within the UK using Taps Aff.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: tapsaff
+    location: glasgow
+
+
+

Configuration variables:

+
    +
  • location (Required): The location for the Taps Aff. It must be configured with a UK postcode or city to work.
  • +
  • name (Optional): The name to use when displaying this sensor.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.tcp/index.html b/components/binary_sensor.tcp/index.html new file mode 100644 index 0000000000..e285c7f460 --- /dev/null +++ b/components/binary_sensor.tcp/index.html @@ -0,0 +1,399 @@ + + + + + + + + + TCP Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TCP Binary Sensor +

+
+
+

The TCP Binary Sensor is a type of TCP Sensor which is either “off” or “on”. In order to use this sensor type, in addition to the configuration for the TCP Sensor, you must supply a value_on value to represent what is returned when the device is turned on.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
binary_sensor:
+# Example configuration.yaml entry
+  platform: tcp
+  name: TCP Binary Sensor
+  host: IP_ADDRESS
+  port: PORT
+  payload: "r State\n"
+  value_on: 1
+  timeout: 5
+
+
+

Configuration options for the a TCP Sensor:

+
    +
  • name (Required): The name you’d like to give the sensor in Home Assistant.
  • +
  • host (Required): The hostname/IP address to connect to.
  • +
  • port (Required): The port to connect to the host on.
  • +
  • payload (Required): What to send to the host in order to get the response we’re interested in.
  • +
  • value_on (Required): The value returned when the device is “on”.
  • +
  • timeout (Optional): How long in seconds to wait for a response from the service before giving up and disconnecting. Defaults to 10.
  • +
  • value_template (Optional): Defines a template to extract the value. By default it’s assumed that the entire response is the value.
  • +
  • buffer_size (Optional): The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default. Defaults to 1024.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.tellduslive/index.html b/components/binary_sensor.tellduslive/index.html new file mode 100644 index 0000000000..5920632369 --- /dev/null +++ b/components/binary_sensor.tellduslive/index.html @@ -0,0 +1,379 @@ + + + + + + + + + Telldus Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telldus Binary Sensor +

+
+
+

Integrates Telldus Live binary sensors into Home Assistant. See the main component for configuration instructions.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.template/index.html b/components/binary_sensor.template/index.html new file mode 100644 index 0000000000..a034b3d524 --- /dev/null +++ b/components/binary_sensor.template/index.html @@ -0,0 +1,551 @@ + + + + + + + + + Template Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Template Binary Sensor +

+
+
+

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:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: template
+    sensors:
+      sun_up:
+        friendly_name: "Sun is up"
+        value_template: >-
+          {{ states.sun.sun.attributes.elevation|float > 0 }}
+
+
+
+

Configuration Variables

+
+
sensors
+
+

(map)(Required)List of your sensors.

+
+
+
+
sensor_name
+
+

(map)(Required)The slug of the sensor.

+
+
+
+
friendly_name
+
+

(string)(Optional)Name to use in the frontend.

+
+
entity_id
+
+

(string | list)(Optional)A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities.

+
+
device_class
+
+

(device_class)(Optional)The type/class of the sensor to set the icon in the frontend.

+

Default value: None

+
+
value_template
+
+

(template)(Required)Defines a template to set the state of the sensor.

+
+
icon_template
+
+

(template)(Optional)Defines a template for the icon of the sensor.

+
+
entity_picture_template
+
+

(template)(Optional)Defines a template for the entity picture of the sensor.

+
+
delay_on
+
+

(time)(Optional)The amount of time the template state must be met before this sensor will switch to on.

+
+
delay_off
+
+

(time)(Optional)The amount of time the template state must be not met before this sensor will switch to off.

+
+
+
+
+
+
+
+

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 +{{ states.switch.source.state == 'on' }} +with this equivalent that returns true/false and never gives an unknown +result: +{{ is_state('switch.source', 'on') }}

+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

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:

+
sensor:
+  - platform: template
+    sensors:
+      furnace_on:
+        friendly_name: "Furnace Running"
+        device_class: heat
+        value_template: "{{ states('sensor.furnace')|float > 2.5 }}"
+
+
+

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.

+
binary_sensor:
+  - platform: template
+    sensors:
+      movement:
+        device_class: motion
+        value_template: "{{ is_state('switch.movement', 'on') }}"
+      door:
+        device_class: opening
+        value_template: "{{ is_state('switch.door', 'on') }}"
+
+
+

Combining Multiple Sensors

+

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.

+
binary_sensor:
+  - platform: template
+    sensors:
+      co:
+        friendly_name: "CO"
+        device_class: gas
+        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') }}
+
+
+

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 delay_off, we can have this sensor only turn off if +there has been no washer activity for 5 minutes.

+
# Determine when the washing machine has a load running.
+binary_sensor:
+  - platform: template
+    sensors:
+      washing_machine:
+        friendly_name: "Washing Machine"
+        delay_off:
+          minutes: 5
+        value_template: >-
+          {{ states('sensor.washing_machine_power')|float > 0 }}
+
+
+

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.

+
binary_sensor:
+  - platform: template
+    sensors:
+      people_home:
+        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') }}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.tesla/index.html b/components/binary_sensor.tesla/index.html new file mode 100644 index 0000000000..0680ad0c95 --- /dev/null +++ b/components/binary_sensor.tesla/index.html @@ -0,0 +1,396 @@ + + + + + + + + + Tesla Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla Binary Sensor +

+
+
+

The Tesla platform allows you to get data from your Tesla sensors from within Home Assistant.

+

They will be automatically discovered if the Tesla component is loaded.

+

For more configuration information see the Tesla component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.threshold/index.html b/components/binary_sensor.threshold/index.html new file mode 100644 index 0000000000..2567a47ae7 --- /dev/null +++ b/components/binary_sensor.threshold/index.html @@ -0,0 +1,411 @@ + + + + + + + + + Threshold Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Threshold Binary Sensor +

+
+
+

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. It support also a range if lower and upper are given.

+

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.

+
{{ states.sensor.furnace.state > 2.5 }}
+
+
+

To enable the threshold sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: threshold
+    entity_id: sensor.random
+    lower: 20
+
+
+
+

Configuration Variables

+
+
entity_id
+
+

(entity_id)(Required)The entity to monitor. Only sensors are supported.

+
+
lower
+
+

(float)(Optional)The lower threshold which the observed value is compared against.

+
+
upper
+
+

(float)(Optional)The upper threshold which the observed value is compared against.

+
+
hysteresis
+
+

(float)(Optional)The distance the observed value must be from the threshold before the state is changed.

+

Default value: 0.0

+
+
name
+
+

(string)(Optional)Name of the sensor to use in the frontend.

+

Default value:

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.trend/index.html b/components/binary_sensor.trend/index.html new file mode 100644 index 0000000000..53b620feb8 --- /dev/null +++ b/components/binary_sensor.trend/index.html @@ -0,0 +1,427 @@ + + + + + + + + + Trend Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Trend Binary Sensor +

+
+
+

The trend platform allows you to create sensors which show the trend of numeric state orstate_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:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: trend
+    sensors:
+      solar_angle:
+        entity_id: sun.sun
+
+
+

Configuration variables:

+
    +
  • sensors array (Required): List of your sensors. +
      +
    • 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.
    • +
    • device_class (Optional): The type/class 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
    • +
    +
  • +
+

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.

+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

This example indicates true if the sun is still rising:

+
binary_sensor:
+  - platform: trend
+    sensors:
+      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:

+
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
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.upcloud/index.html b/components/binary_sensor.upcloud/index.html new file mode 100644 index 0000000000..09a942e5ef --- /dev/null +++ b/components/binary_sensor.upcloud/index.html @@ -0,0 +1,277 @@ + + + + + + + + + UpCloud Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UpCloud Binary Sensor +

+
+
+

The upcloud binary sensor platform allows you to monitor your UpCloud servers.

+

To use your UpCloud servers, you first have to set up your UpCloud hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: upcloud
+    servers:
+      - 002167b7-4cb1-44b7-869f-e0900ddeeae1
+      - 00886296-6137-4074-afe3-068e16d89d00
+
+
+
+

Configuration Variables

+
+
servers
+
+

(list)(Required)List of servers you want to monitor.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.velbus/index.html b/components/binary_sensor.velbus/index.html new file mode 100644 index 0000000000..5c3d1f6689 --- /dev/null +++ b/components/binary_sensor.velbus/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Velbus sensors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velbus sensors +

+
+
+

The velbus binary_sensor allows you to control Velbus connected wall switches.

+

To use your Velbus wall switches in your installation, add the following to your configuration.yaml file:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.vera/index.html b/components/binary_sensor.vera/index.html new file mode 100644 index 0000000000..f1b66348e0 --- /dev/null +++ b/components/binary_sensor.vera/index.html @@ -0,0 +1,401 @@ + + + + + + + + + Vera Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Binary Sensor +

+
+
+

The vera platform allows you to get data from your Vera binary sensors from within Home Assistant.

+

They will be automatically discovered if the vera component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.verisure/index.html b/components/binary_sensor.verisure/index.html new file mode 100644 index 0000000000..d322fda803 --- /dev/null +++ b/components/binary_sensor.verisure/index.html @@ -0,0 +1,393 @@ + + + + + + + + + Verisure Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure Binary Sensor +

+
+
+

Integrates Verisure binary sensors into Home Assistant. See the main component for configuration instructions.

+

The following binary sensor types are supported:

+

Door & Window

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.vultr/index.html b/components/binary_sensor.vultr/index.html new file mode 100644 index 0000000000..3b6faf510a --- /dev/null +++ b/components/binary_sensor.vultr/index.html @@ -0,0 +1,294 @@ + + + + + + + + + Vultr Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vultr Binary Sensor +

+
+
+

The vultr binary sensor platform allows you to monitor your Vultr subscription to see if it is powered on or not.

+

To use this binary sensor, you first have to set up your Vultr hub.

+

+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):

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: vultr
+    subscription: 123456
+
+
+
+

Configuration Variables

+
+
subscription
+
+

(string)(Required)The subscription you want to monitor, this can be found in the URL when viewing a server.

+
+
name
+
+

(string)(Optional)The name you want to give this binary sensor.

+

Default value: Vultr {subscription label}

+
+
+
+

Full configuration.yaml (produces binary_sensor.totally_awesome_server):

+
binary_sensor:
+  - platform: vultr
+    name: totally_awesome_server
+    subscription: 12345
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.wink/index.html b/components/binary_sensor.wink/index.html new file mode 100644 index 0000000000..8950f820a5 --- /dev/null +++ b/components/binary_sensor.wink/index.html @@ -0,0 +1,424 @@ + + + + + + + + + Wink Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Binary Sensor +

+
+
+

The Wink binary sensor platform allows you to get data from your Wink binary sensors.

+

The requirement is that you have setup Wink.

+

Supported Binary sensor devices

+
    +
  • Smoke and CO detectors (No Wink hub required for Nest)
  • +
  • Window/Door sensors
  • +
  • Motion sensors
  • +
  • Ring Door bells (No hub required)
  • +
  • Liquid presence sensors
  • +
  • Z-wave lock key codes
  • +
  • Lutron connected bulb remote buttons
  • +
  • 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 confirmed to work, but others may work as well. +

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.workday/index.html b/components/binary_sensor.workday/index.html new file mode 100644 index 0000000000..af7b9adca8 --- /dev/null +++ b/components/binary_sensor.workday/index.html @@ -0,0 +1,408 @@ + + + + + + + + + Workday Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Workday Binary Sensor +

+
+
+

The workday binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also uses the python module holidays to incorporate information about region-specific public holidays.

+

To enable the workday sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: workday
+    country: DE
+    workdays: [ mon, wed, fri ]
+
+
+

Configuration variables:

+
    +
  • name (Optional): A name for this sensor. Defaults to Workday Sensor
  • +
  • country (Required): Country code according to holidays notation.
  • +
  • province (Optional): Province code according to holidays 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.

+

+If you use the sensor for Norway (NO) you need to wrap NOin quotes or write the name in full. Otherwise the value is evaluated as False. +If you use the sensor for Canada (CA) with Ontario (ON) as province: then you need to wrap ON in quotes. Otherwise the value is evaluated as True (check the YAML documentation for further details) and the sensor will not work. +

+

Example usage for automation:

+
automation:
+  alias: Turn on heater on workdays
+  trigger:
+    platform: time
+    at: '08:00:00'
+  condition:
+    condition: state
+    entity_id: 'binary_sensor.workday_sensor'
+    state: 'on'
+  action:
+    service: switch.turn_on
+    entity_id: switch.heater
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.xiaomi_aqara/index.html b/components/binary_sensor.xiaomi_aqara/index.html new file mode 100644 index 0000000000..9e247de77e --- /dev/null +++ b/components/binary_sensor.xiaomi_aqara/index.html @@ -0,0 +1,771 @@ + + + + + + + + + Xiaomi Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Binary Sensor +

+
+
+

The xiaomi aqara binary sensor platform allows you to get data from your Xiaomi binary sensors.

+

The requirement is that you have setup the xiaomi aqara component.

+

Type of sensors supported

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameZigBee entityModel no.StatesEventEvent keyEvent values
Motion Sensor (1st gen)motionRTCGQ01LMon, offmotion  
Motion Sensor (2nd gen)sensor_motion.aq2RTCGQ11LMon, offmotion  
Door and Window Sensor (1st gen)magnetWSDCGQ01LMon, off   
Door and Window Sensor (2nd gen)sensor_magnet.aq2MCCGQ11LMon, off   
Smoke DetectorsmokeJTYJ-GD-01LM/BWon, off   
Gas Leak DetectornatgasJTQJ-BF-01LM/BWon, off   
Water Leak Sensorsensor_wleak.aq1SJCGQ11LMon, off   
Button (1st gen)switchWXKG01LMon (through long_click_press), offclickclick_typelong_click_press, long_click_release, hold, single, double
Button (2nd gen)sensor_switch.aq2WXKG11LMoff (always)clickclick_typesingle, double
Aqara Wireless Switch (Single)86sw1WXKG03LMoff (always)clickclick_typesingle
Aqara Wireless Switch (Double)86sw2WXKG02LMoff (always)clickclick_typesingle, both
CubecubeMFKZQ01LMoff (always)cube_actionaction_type, action_value (rotate)flip90, flip180, move, tap_twice, shake_air, swing, alert, free_fall, rotate (degrees at action_value)
+

Automation examples

+

Motion

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

Door and/or Window

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

Smoke

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

Gas

+
- 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 {{ states.binary_sensor.natgas_sensor_158dxxxxxxxxxx.attributes.density }} detected.'
+
+
+

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.

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

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.

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

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.

+
- 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: >-
+        {% 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 %}
+
+- 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: >-
+        {% 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 %}
+
+- 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/components/binary_sensor.zha/index.html b/components/binary_sensor.zha/index.html new file mode 100644 index 0000000000..392a0787c7 --- /dev/null +++ b/components/binary_sensor.zha/index.html @@ -0,0 +1,385 @@ + + + + + + + + + ZigBee Home Automation Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Home Automation Binary Sensor +

+
+
+

To get your ZigBee binary sensors working with Home Assistant, follow the instructions for the general ZigBee Home Automation component.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.zigbee/index.html b/components/binary_sensor.zigbee/index.html new file mode 100644 index 0000000000..5f5917d9fe --- /dev/null +++ b/components/binary_sensor.zigbee/index.html @@ -0,0 +1,403 @@ + + + + + + + + + ZigBee Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Binary Sensor +

+
+
+

A zigbee binary sensor in this context is a device connected to one of the digital input pins on a ZigBee module. The states reported by such a device are limited to on or off. By default, a binary sensor is considered on when the ZigBee device’s digital input pin is held ‘high’ and considered off when it is held low. This behavior can be inverted by setting the on_state configuration variable to low.

+

To enable a digital input pin as binary sensor in your installation, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+binary_sensor:
+  - platform: zigbee
+    name: Hallway PIR Sensor
+    pin: 0
+
+
+

Configuration variables:

+
    +
  • name (Required): The name you would like to give the binary sensor in Home Assistant.
  • +
  • pin (Required): The number identifying which pin to use.
  • +
  • address (Optional): The long 64-bit address of the remote ZigBee device whose digital input pin you’d like to sample. Do not include this variable if you want to sample the local ZigBee device’s pins.
  • +
  • on_state (Optional): Either high (default) or low, depicting whether the binary sensor is considered on when the pin is high or low.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor.zwave/index.html b/components/binary_sensor.zwave/index.html new file mode 100644 index 0000000000..4a0600e026 --- /dev/null +++ b/components/binary_sensor.zwave/index.html @@ -0,0 +1,400 @@ + + + + + + + + + Z-Wave Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Binary Sensor +

+
+
+

To get your Z-Wave binary sensors working with Home Assistant, follow the instructions for the general Z-Wave component.

+
+
+ +
+
+ + + + + + + diff --git a/components/binary_sensor/index.html b/components/binary_sensor/index.html new file mode 100644 index 0000000000..0a2500c307 --- /dev/null +++ b/components/binary_sensor/index.html @@ -0,0 +1,403 @@ + + + + + + + + + Binary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Binary Sensor +

+
+
+

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.

+

The way these sensors are displayed in the frontend can be modified in the customize section. The following device classes are supported for binary sensors:

+
    +
  • None: Generic on/off. This is the default and doesn’t need to be set.
  • +
  • battery: On means low, Off means normal
  • +
  • cold: On means cold, Off means normal
  • +
  • connectivity: On means connected, Off means disconnected
  • +
  • door: On means open, Off means closed
  • +
  • garage_door: On means open, Off means closed
  • +
  • gas: On means gas detected, Off means no gas (clear)
  • +
  • heat: On means hot, Off means normal
  • +
  • light: On means light detected, Off means no light
  • +
  • lock: On means open (unlocked), Off means closed (locked)
  • +
  • moisture: On means moisture detected (wet), Off means no moisture (dry)
  • +
  • motion: On means motion detected, Off means no motion (clear)
  • +
  • moving: On means moving, Off means not moving (stopped)
  • +
  • occupancy: On means occupied, Off means not occupied (clear)
  • +
  • opening: On means open, Off means closed
  • +
  • plug: On means device is plugged in, Off means device is unplugged
  • +
  • power: On means power detected, Off means no power
  • +
  • presence: On means home, Off means away
  • +
  • problem: On means problem detected, Off means no problem (OK)
  • +
  • safety: On means unsafe, Off means safe
  • +
  • smoke: On means smoke detected, Off means no smoke (clear)
  • +
  • sound: On means sound detected, Off means no sound (clear)
  • +
  • vibration: On means vibration detected, Off means no vibration (clear)
  • +
  • window: On means open, Off means closed
  • +
+

For analog sensors please check the component overview.

+
+
+ +
+
+ + + + + + + diff --git a/components/blink/index.html b/components/blink/index.html new file mode 100644 index 0000000000..5c2742ff6a --- /dev/null +++ b/components/blink/index.html @@ -0,0 +1,510 @@ + + + + + + + + + Blink - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blink +

+
+
+

The blink component lets you view camera images and motion events from Blink camera and security systems.

+

You will need your Blink login information (username, usually you email address, and password) to use this module.

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+blink:
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): Your username to login to Blink.
  • +
  • password (Required): Your password to login to Blink.
  • +
+

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 sensor per camera that reports temperature.
  • +
  • A sensor per camera that reports battery level.
  • +
  • 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.

+

Services:

+

This services are available for the blink component:

+
    +
  • arm_system
  • +
  • arm_camera
  • +
  • snap_picture
  • +
+

For arm_system, the value sent can be either True or False and will arm and disarm the whole Blink system. Arm system example:

+
{
+    "device_armed": "True"
+}
+
+
+

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:

+
{
+    "friendly_name": "Living Room",
+    "device_armed": "False"
+}
+
+
+

The snap_picture service takes the camera name as the payload and with take a new picture with your camera.

+
{
+    "friendly_name": "Living Room"
+}
+
+
+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/bloomsky/index.html b/components/bloomsky/index.html new file mode 100644 index 0000000000..e03066fffc --- /dev/null +++ b/components/bloomsky/index.html @@ -0,0 +1,469 @@ + + + + + + + + + BloomSky - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BloomSky +

+
+
+

The bloomsky component allows you to access your BloomSky weather station’s sensors, binary sensors, and camera from Home Assistant.

+

Obtain your API key from your BloomSky dashboard. Click developers in the bottom left of the screen.

+

To integrate your BloomSky hub with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+bloomsky:
+  api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your BloomSky API key.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/bmw_connected_drive/index.html b/components/bmw_connected_drive/index.html new file mode 100644 index 0000000000..2912acd3e7 --- /dev/null +++ b/components/bmw_connected_drive/index.html @@ -0,0 +1,494 @@ + + + + + + + + + BMW connected drive - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BMW connected drive +

+
+
+

This component lets you retrieve data on your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account and a Connected Drive enabled vehicle for this to work.

+

For compatibility with your BMW vehicle check the (bimmer_connected page)[https://github.com/ChristianKuehnel/bimmer_connected] on github.

+

To enable this component in your installation, add the following to your +configuration.yaml file:

+
# Example configuration.yaml entry
+bmw_connected_drive:
+  name:
+    username: USERNAME_BMW_CONNECTED_DRIVE
+    password: PASSWORD_BMW_CONNECTED_DRIVE
+    country: COUNTRY_BMW_CONNECTED_DRIVE
+
+
+
+

Configuration Variables

+
+
bmw_connected_drive
+
+

(map)(Required)configuration

+
+
+
+
name
+
+

(string)(Required)Name of your account in Home Assistant.

+
+
username
+
+

(string)(Required)Your BMW Connected Drive username.

+
+
password
+
+

(string)(Required)Your BMW Connected Drive password.

+
+
country
+
+

(string)(Required)The country of your Connected Drive account. Please use the exact names for the country as listed on the Connected Drive website.

+
+
+
+
+
+

Disclaimer

+

This software is not affiliated with or endorsed by BMW Group.

+
+
+ +
+
+ + + + + + + diff --git a/components/browser/index.html b/components/browser/index.html new file mode 100644 index 0000000000..4f2c2c8f3a --- /dev/null +++ b/components/browser/index.html @@ -0,0 +1,193 @@ + + + + + + + + + Browser - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Browser +

+
+
+

The browser component provides a service to open URLs in the default browser on the host machine.

+

To load this component, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+browser:
+
+
+

Service browser/browse_url

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
urlnoThe URL to open.
+

Usage

+

To use this service, choose Call Service from the Developer Tools. Choose the service browser/browse_url from the list of Available services: and enter the URL into the Service Data field and hit CALL SERVICE.

+
{"url": "http://www.google.com"}
+
+
+

This will open the given URL on the host machine.

+
+
+ +
+
+ + + + + + + diff --git a/components/calendar.caldav/index.html b/components/calendar.caldav/index.html new file mode 100644 index 0000000000..54e7e5c3d9 --- /dev/null +++ b/components/calendar.caldav/index.html @@ -0,0 +1,262 @@ + + + + + + + + + CalDav - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CalDav +

+
+
+

The caldav platform allows you to connect to your WebDav calendar and generate binary sensors. A different sensor will be created for each individual calendar, or you can specify custom calendars which match a criteria you define (more on that below). These sensors will be on if you have an on going event in that calendar or off if the event is later in time, or if there is no event at all. The WebDav calendar get updated roughly every 10 minutes.

+

Prerequisites

+

You need to have a CalDav server and eventually credentials for it. This component was tested against Baikal but any component complying with the RFC4791 should work.

+

You might need some additional system packages to compile the Python caldav library. On a Debian based system, install them by:

+
$ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev
+
+
+

Basic Setup

+

To integrate a WebDav calendar in Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+calendar:
+  - platform: caldav
+    username: john.doe@test.com
+    password: !secret caldav
+    url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default
+
+
+

This example will generate default binary sensors for each calendar you have in your account. Those calendars will be on when there is an ongoing event and off if not. Events that last a whole day are ignored in those calendars. You have to setup custom calendars in order to take them into account or for advanced event filtering.

+

Custom calendars

+

You have the possibility to create multiple binary sensors for events that match certain conditions.

+
# Example configuration.yaml entry
+calendar:
+  - platform: caldav
+    username: john.doe@test.com
+    password: !secret caldav
+    url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default
+    custom_calendars:
+      - name: 'HomeOffice'
+        calendar: 'Agenda'
+        search: 'HomeOffice'
+      - name: 'WarmupFlat'
+        calendar: 'Agenda'
+        search: 'Warmup'
+
+
+

This will create two binary sensors for the calendar name Agenda: “HomeOffice” and “WarmupFlat”. Those sensors will be on if there is an ongoing event matching the regular expression specified in search. In custom calendars, events that last a whole day are taken into account.

+

Please note that when you configure custom calendars, the default ones are not created anymore.

+
+

Configuration Variables

+
+
url
+
+

(string)(Required)The full URL to your calendars.

+
+
username
+
+

(string)(Optional)Username for authentication.

+
+
password
+
+

(string)(Optional)Password for authentication.

+
+
calendars
+
+

(list)(Optional)List of the calendars to filter. Empty or absent means no filtering.

+
+
custom_calendars
+
+

(list)(Optional)Details on any custom binary sensor calendars you want to create.

+
+
+
+
name
+
+

(string)(Required)The name of your custom calendar.

+
+
calendar
+
+

(string)(Required)The source calendar to search on.

+
+
search
+
+

(string)(Required)

+
+
+
+
+
+

Sensor attributes

+
    +
  • offset_reached: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting !!-10 would trigger this attribute to be on 10 minutes before the event starts.
  • +
  • all_day: True/False if this is an all day event. Will be False if there is no event found.
  • +
  • message: The event title with the search values extracted. So in the above example for offset_reached the message would be set to Very important meeting
  • +
  • description: The event description.
  • +
  • location: The event Location.
  • +
  • start_time: Start time of event.
  • +
  • end_time: End time of event.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/calendar.google/index.html b/components/calendar.google/index.html new file mode 100644 index 0000000000..0f6e440b89 --- /dev/null +++ b/components/calendar.google/index.html @@ -0,0 +1,287 @@ + + + + + + + + + Google Calendar Event - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Calendar Event +

+
+
+

This platform allows you to connect to your Google Calendars and generate binary sensors. The sensors created can trigger based on any event on the calendar or only for matching events. When you first setup this component it will generate a new configuration file google_calendars.yaml that will contain information about all of the calendars you can see.

+

Prerequisites

+

Generate a Client ID and Client Secret on Google Developers Console.

+
    +
  1. Follow the wizard using the following information.
  2. +
  3. When it gets to the point of asking Which API are you using? just click cancel.
  4. +
  5. Under APIs & Services > Credentials, click on the tab ‘OAuth consent screen’.
  6. +
  7. Set ‘Product name shown to users’ to anything you want. We suggest Home-Assistant.
  8. +
  9. Save this page. You don’t have to fill out anything else there.
  10. +
  11. Click ‘Create credentials’ -> OAuth client ID.
  12. +
  13. Set the Application type to ‘Other’ and give this credential set a name then click Create.
  14. +
  15. Save the client ID and secret as you will need to put these in your configuration.yaml file.
  16. +
  17. Click on “Library”, search for “Google Calendar API” and enable it.
  18. +
+

Basic Setup

+

To integrate Google Calendar in Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+google:
+  client_id: *Value_created_from_steps_above*
+  client_secret: *Value_created_from_steps_above*
+
+
+

Configuration variables:

+
    +
  • client_id (Required): Use the value you generated in the Prerequisites stage.
  • +
  • client_secret (Required): Use the value you generated in the Prerequisites stage.
  • +
  • track_new_calendar (Optional): Will automatically generate a binary sensor when a new calendar is detected. The system scans for new calendars on startup. By default this is set to True.
  • +
+

The next steps will require you to have Home Assistant running.

+

After you have it running complete the Google authentication that pops up. It will give you a URL and a code to enter. This will grant your Home Assistant service access to all the Google Calendars that the account you authenticate with can read. This is a Read-Only view of these calendars.

+

Calendar Configuration

+

Editing google_calendars.yaml

+

A basic entry for a single calendar looks like:

+
- cal_id: "***************************@group.calendar.google.com"
+  entities:
+  - device_id: test_everything
+    name: Give me everything
+    track: true
+- cal_id: "***************************@group.calendar.google.com"
+  entities:
+  - device_id: test_important
+    name: Important Stuff
+    track: true
+    search: "#Important"
+    offset: "!!"
+  - device_id: test_unimportant
+    name: UnImportant Stuff
+    track: true
+    search: "#UnImportant"
+
+
+

Variables:

+
    +
  • +

    cal_id: The Google generated unique id for this calendar. DO NOT CHANGE

    +
  • +
  • +

    entities: Yes, you can have multiple sensors for a calendar!

    +
      +
    • +

      device_id: (Required): The name that all your automations/scripts will use to reference this device.

      +
    • +
    • +

      name: (Required): What is the name of your sensor that you’ll see in the frontend.

      +
    • +
    • +

      track: (Required): Should we create a sensor True or ignore it False?

      +
    • +
    • +

      search: (Optional): If set will only trigger for matched events.

      +
    • +
    • +

      offset: (Optional): A set of characters that precede a number in the event title for designating a pre-trigger state change on the sensor. (Default: !!)

      +
    • +
    +
  • +
+

From this we will end up with the binary sensors calendar.test_unimportant and calendar.test_important which will toggle themselves on/off based on events on the same calendar that match the search value set for each. You’ll also have a sensor calendar.test_everything that will not filter events out and always show the next event available.

+

But what if you only wanted it to toggle based on all events? Just leave out the search parameter.

+

Note: If you use a # sign for search then wrap the whole search term in quotes. Otherwise everything following the hash sign would be considered a YAML comment.

+

Sensor attributes

+
    +
  • +

    offset_reached: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting #Important !!-10 would trigger this attribute to be on 10 minutes before the event starts.

    +
  • +
  • +

    all_day: True/False if this is an all day event. Will be False if there is no event found.

    +
  • +
  • +

    message: The event title with the search and offset values extracted. So in the above example for offset_reached the message would be set to Very important meeting

    +
  • +
  • +

    description: The event description.

    +
  • +
  • +

    location: The event Location.

    +
  • +
  • +

    start_time: Start time of event.

    +
  • +
  • +

    end_time: End time of event.

    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/calendar.todoist/index.html b/components/calendar.todoist/index.html new file mode 100644 index 0000000000..791644c89e --- /dev/null +++ b/components/calendar.todoist/index.html @@ -0,0 +1,308 @@ + + + + + + + + + Todoist - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Todoist +

+
+
+

This platform allows you to connect to your Todoist Projects 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.

+

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 and find the section labeled “API token” at the bottom of the page. Copy that token and use it in your configuration file.

+

Basic Setup

+

To integrate Todoist in Home Assistant, add the following section to your configuration.yaml file:

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

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:

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

+

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.

    +
  • +
+

Services

+

Todoist also comes with access to a service, calendar.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:

+
{
+    "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/components/calendar/index.html b/components/calendar/index.html new file mode 100644 index 0000000000..1514e16763 --- /dev/null +++ b/components/calendar/index.html @@ -0,0 +1,150 @@ + + + + + + + + + Calendar - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Calendar +

+
+
+

The calendar component allows you to integrate your calendars into Home Assistant.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.abode/index.html b/components/camera.abode/index.html new file mode 100644 index 0000000000..bbe4bfe472 --- /dev/null +++ b/components/camera.abode/index.html @@ -0,0 +1,288 @@ + + + + + + + + + Abode Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Camera +

+
+
+

The abode security control panel platform allows you to control your Abode 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.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.amcrest/index.html b/components/camera.amcrest/index.html new file mode 100644 index 0000000000..09ea41dfc7 --- /dev/null +++ b/components/camera.amcrest/index.html @@ -0,0 +1,275 @@ + + + + + + + + + Amcrest IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Amcrest IP Camera +

+
+
+

To get your Amcrest cameras working within Home Assistant, please follow the instructions for the general Amcrest component.

+

Once you have enabled the Amcrest component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: amcrest
+
+
+

To check if your Amcrest camera is supported/tested, visit the supportability matrix link from the python-amcrest project.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.android_ip_webcam/index.html b/components/camera.android_ip_webcam/index.html new file mode 100644 index 0000000000..112290525f --- /dev/null +++ b/components/camera.android_ip_webcam/index.html @@ -0,0 +1,281 @@ + + + + + + + + + Android IP Webcam Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Android IP Webcam Camera +

+
+
+

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 platform can be used.

+

To enable only the camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: mjpeg
+    mjpeg_url: http://IP_ADDRESS:8080/video
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.arlo/index.html b/components/camera.arlo/index.html new file mode 100644 index 0000000000..d6b0f1547a --- /dev/null +++ b/components/camera.arlo/index.html @@ -0,0 +1,284 @@ + + + + + + + + + Arlo Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arlo Camera +

+
+
+

To get your Arlo cameras working within Home Assistant, please follow the instructions for the general Arlo component.

+

This component is not yet able to live stream from your Arlo camera, but it will be able to playback the last video capture.

+

Once you have enabled the Arlo component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: arlo
+    ffmpeg_arguments: '-pred 1 -q:v 2'
+
+
+

Configuration variables:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.august/index.html b/components/camera.august/index.html new file mode 100644 index 0000000000..d3bb2bf291 --- /dev/null +++ b/components/camera.august/index.html @@ -0,0 +1,272 @@ + + + + + + + + + August Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ August Camera +

+
+
+

The august camera platform allows you to view the latest camera image (triggered by motion) by your August device in Home Assistant.

+

To add august camera to your installation, follow instructions in August component.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.axis/index.html b/components/camera.axis/index.html new file mode 100644 index 0000000000..7921aadc95 --- /dev/null +++ b/components/camera.axis/index.html @@ -0,0 +1,269 @@ + + + + + + + + + Axis Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Axis Camera +

+
+
+

The Axis camera platform allows you to stream video from your Axis cameras.

+

The requirement is that you have setup your Axis camera.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.blink/index.html b/components/camera.blink/index.html new file mode 100644 index 0000000000..cdabc7af60 --- /dev/null +++ b/components/camera.blink/index.html @@ -0,0 +1,273 @@ + + + + + + + + + Blink Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blink Camera +

+
+
+

+To get your Blink cameras working with Home Assistant, follow the instructions for the general Blink component. +

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.bloomsky/index.html b/components/camera.bloomsky/index.html new file mode 100644 index 0000000000..bd9f419abd --- /dev/null +++ b/components/camera.bloomsky/index.html @@ -0,0 +1,277 @@ + + + + + + + + + BloomSky Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BloomSky Camera +

+
+
+

The bloomsky camera component allows you to view the current photo created by the camera in the BloomSky weather station. This can work in concert with BloomSky sensors.

+

To enable this camera in your installation, set up the BloomSky component with your API key and add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: bloomsky
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.canary/index.html b/components/camera.canary/index.html new file mode 100644 index 0000000000..40eeccaf06 --- /dev/null +++ b/components/camera.canary/index.html @@ -0,0 +1,286 @@ + + + + + + + + + Canary Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Canary Camera +

+
+
+

The canary camera platform allows you to watch the live stream of your Canary camera in Home Assistant. This requires the ffmpeg component to be already configured.

+

To add canary camera to your installation, follow instructions in Canary component. Once you have Canary component setup, your Canary camera(s) should show up automatically.

+

You can add the following to your configuration.yaml file to configure canary camera with optional settings:

+
camera:
+  - platform: canary
+
+
+
+

Configuration Variables

+
+
ffmpeg_arguments
+
+

(string)(Optional)Extra options to pass to ffmpeg, e.g. image quality or video filter options. More details in FFmpeg component.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.dispatcher/index.html b/components/camera.dispatcher/index.html new file mode 100644 index 0000000000..a0affb0c09 --- /dev/null +++ b/components/camera.dispatcher/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Dispatcher IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dispatcher IP Camera +

+
+
+

+This platform is meant for developers only. +

+

The dispatcher camera platform allows developers to create virtual camera’s.

+

You would normally not add this camera to your configuration directly but have it be discovered by one of the components that uses it.

+
# Example configuration.yaml entry
+camera:
+  - platform: dispatcher
+    signal: name_of_dispatcher_signal
+
+
+

To update the image from another piece of code, run this from an async context:

+
from homeassistant.helpers.dispatcher import async_dispatcher_send
+
+async_dispatcher_send(hass, 'name_of_dispatcher_signal', image_data)
+
+
+

Configuration variables:

+
    +
  • signal (Required): The signal name of dispatcher signal they send image data to this camera.
  • +
  • name (Optional): This parameter allows you to override the name of your camera.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.doorbird/index.html b/components/camera.doorbird/index.html new file mode 100644 index 0000000000..fbc16b50c6 --- /dev/null +++ b/components/camera.doorbird/index.html @@ -0,0 +1,277 @@ + + + + + + + + + DoorBird Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DoorBird Camera +

+
+
+

The doorbird implementation allows you to view the live video and previous images from your DoorBird device in Home Assistant.

+

+ You must have the DoorBird component configured to use this camera. +

+

To enable the camera, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: doorbird
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.ffmpeg/index.html b/components/camera.ffmpeg/index.html new file mode 100644 index 0000000000..6851ad3e59 --- /dev/null +++ b/components/camera.ffmpeg/index.html @@ -0,0 +1,281 @@ + + + + + + + + + FFmpeg Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FFmpeg Camera +

+
+
+

The ffmpeg platform allows you to use any video feed as a camera in Home Assistant via FFmpeg. This video source must support multiple simultaneous reads, because for every concurrent Home Assistant user, a connection will be made to the source every 10 seconds. Normally this should not be a problem.

+

To enable your FFmpeg feed in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: ffmpeg
+    input: FFMPEG_SUPPORTED_INPUT
+
+
+

Configuration variables:

+
    +
  • input (Required): An FFmpeg-compatible input file, stream, or feed.
  • +
  • name (Optional): Override the name of your camera.
  • +
  • extra_arguments (Optional): Extra options to pass to ffmpeg, e.g. image quality or video filter options.
  • +
+

Image quality

+

You can control the image quality with extra_arguments -q:v 2-32 or with lossless option -pred 1.

+

If you are running into trouble with this sensor, please refer to the Troubleshooting section.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.foscam/index.html b/components/camera.foscam/index.html new file mode 100644 index 0000000000..399018cb56 --- /dev/null +++ b/components/camera.foscam/index.html @@ -0,0 +1,276 @@ + + + + + + + + + Foscam IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Foscam IP Camera +

+
+
+

The foscam platform allows you to watch the live stream of your Foscam IP camera in Home Assistant.

+

To enable your Foscam IP camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: foscam
+    ip: IP_ADDRESS
+    username: USERNAME
+    password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • ip (Required): The IP address your camera.
  • +
  • port (Optional): The port that the camera is running on. The default is 88.
  • +
  • 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.
  • +
+

+There seems to be some issues within Foscam with lengthy passwords and passwords containing certain symbols. Be sure to check your camera’s documentation. +

+

Control Foscam PTZ (Pan/Tilt/Zoom) - Home/Away

+

Foscam Webcams which support CGI Commands can be controlled by Home Assistant (Source). For an example of how this can be done, see the Foscam IP Camera Pan, Tilt, Zoom Control Cookbook entry.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.generic/index.html b/components/camera.generic/index.html new file mode 100644 index 0000000000..3990e8249c --- /dev/null +++ b/components/camera.generic/index.html @@ -0,0 +1,307 @@ + + + + + + + + + Generic IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Generic IP Camera +

+
+
+

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 cameras while outside of your network. The endpoint is /api/camera_proxy/camera.[name].

+

To enable this camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: generic
+    still_image_url: http://194.218.96.92/jpg/image.jpg
+
+
+

Configuration variables:

+
    +
  • still_image_url (Required): The URL your camera serves the image on, eg. http://192.168.1.21:2112/. Can be a template.
  • +
  • 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.
  • +
  • authentication (Optional): Type for authenticating the requests basic (default) or digest.
  • +
  • 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.
  • +
+

+ + Screenshot showing Google Maps integration in Home Assistant front end. + Example showing the Generic camera platform pointing at a dynamic Google Map image. + +

+

Examples

+

In this section you find some real life examples of how to use this camera platform.

+

Weather graph from yr.no

+
camera:
+  - platform: generic
+    name: Weather
+    still_image_url: https://www.yr.no/place/Norway/Oslo/Oslo/Oslo/meteogram.svg
+    content_type: 'image/svg+xml'
+
+
+

Local image with Hass.io

+

You can show a static image with this platform. Just place the image here: /config/www/your_image.png

+
camera:
+  - platform: generic
+    name: Some Image
+    still_image_url: https://127.0.0.1:8123/local/your_image.png
+
+
+

Sharing a camera feed from one Home Assistant instance to another

+

If you are running more than one Home Assistant instance (let’s call them the ‘host’ and ‘receiver’ instances) you may wish to display the camera feed from the host instance on the receiver instance. You can use the REST API to access the camera feed on the host (IP address 127.0.0.5) and display it on the receiver instance by configuring the receiver with the the following:

+
camera:
+  - platform: generic
+    name: Host instance camera feed
+    still_image_url: https://127.0.0.5:8123/api/camera_proxy/camera.live_view
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.local_file/index.html b/components/camera.local_file/index.html new file mode 100644 index 0000000000..bfafb362fd --- /dev/null +++ b/components/camera.local_file/index.html @@ -0,0 +1,273 @@ + + + + + + + + + Local File - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Local File +

+
+
+

The local_file camera platform allows you to integrate any readable image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated.

+

This can for example be used with various camera platforms that save a temporary images locally. It can also be used to display a graph that you render periodically and will then be displayed in Home Assistant.

+

To enable this camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: local_file
+    file_path: /tmp/image.jpg
+
+
+

Configuration variables:

+
    +
  • file_path (Required): File to serve as the camera.
  • +
  • name (Optional): Name of the camera
  • +
+

+The given file_path must be an existing file because the camera platform setup make a readable check on it. +

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.mjpeg/index.html b/components/camera.mjpeg/index.html new file mode 100644 index 0000000000..cf71f6178d --- /dev/null +++ b/components/camera.mjpeg/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Generic MJPEG IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Generic MJPEG IP Camera +

+
+
+

The mjpeg camera platform allows you to integrate IP cameras which are capable to stream their video with MJPEG into Home Assistant.

+

To enable this camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: mjpeg
+    mjpeg_url: http://192.168.1.92/mjpeg
+
+
+

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 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.
  • +
  • authentication (Optional): basic (default) or digest auth for requests.
  • +
+

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

+

Examples

+

Example of using a DCS-930L Wireless N Network Camera from D-Link:

+
camera:
+  - platform: mjpeg
+    name: Livingroom Camera
+    still_image_url: http://IP/image.jpg
+    mjpeg_url: http://IP/video/mjpg.cgi
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.mqtt/index.html b/components/camera.mqtt/index.html new file mode 100644 index 0000000000..60ca8819b8 --- /dev/null +++ b/components/camera.mqtt/index.html @@ -0,0 +1,314 @@ + + + + + + + + + MQTT Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Camera +

+
+
+

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.

+

To enable this camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: mqtt
+    topic: zanzito/shared_locations/my-device
+
+
+

Configuration variables:

+
    +
  • topic (Required): MQTT topic to subscribe to.
  • +
  • name (Optional): Name of the camera
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.neato/index.html b/components/camera.neato/index.html new file mode 100644 index 0000000000..89c9bc768f --- /dev/null +++ b/components/camera.neato/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Neato Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Neato Camera +

+
+
+

The neato camera platform allows you to view the latest cleaning map of your Neato Botvac Connected.

+

To add neato camera to your installation, follow instructions in Neato component.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.nest/index.html b/components/camera.nest/index.html new file mode 100644 index 0000000000..79f41f9b21 --- /dev/null +++ b/components/camera.nest/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Nest Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest Camera +

+
+
+

The nest platform allows you to watch the live stream of your Nest camera in Home Assistant.

+

+You must have the Nest component configured to use this camera. The nest camera will automatically be setup when you do. +

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.netatmo/index.html b/components/camera.netatmo/index.html new file mode 100644 index 0000000000..f9dc786987 --- /dev/null +++ b/components/camera.netatmo/index.html @@ -0,0 +1,302 @@ + + + + + + + + + Netatmo Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netatmo Camera +

+
+
+

Basic Configuration

+

The netatmo camera platform is consuming the information provided by a Netatmo camera. This component allows you to view the current photo created by the Camera.

+

To enable the Netatmo camera, you have to set up netatmo, this will use discovery to add your camera.

+

Advanced configuration

+

If you want to select a specific camera, set discovery to False for netatmo and add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+camera:
+  - platform: netatmo
+
+
+

Configuration variables:

+
    +
  • home (Optional): Will display the cameras of this home only.
  • +
  • cameras array (Optional): Cameras to use. Multiple entities allowed. +
      +
    • camera_name: Name of the camera to display.
    • +
    +
  • +
+

If home and cameras are not provided, all cameras will be displayed. For more control over your cameras check the configuration sample below.

+
# Example configuration.yaml entry
+camera:
+  platform: netatmo
+  home: home_name
+  cameras:
+    - camera_name1
+    - camera_name2
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.onvif/index.html b/components/camera.onvif/index.html new file mode 100644 index 0000000000..5f61efe088 --- /dev/null +++ b/components/camera.onvif/index.html @@ -0,0 +1,301 @@ + + + + + + + + + ONVIF Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ONVIF Camera +

+
+
+

The onvif camera platform allows you to use an ONVIF camera in Home Assistant. This requires the ffmpeg component to be already configured.

+

To enable your ONVIF camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: onvif
+    host: 192.168.1.111
+
+
+

Configuration variables:

+
    +
  • host (Required): An IP or hostname of the camera.
  • +
  • name (Optional): Override the name of your camera.
  • +
  • username (Optional): The username for the camera.
  • +
  • password (Optional): The password for the camera.
  • +
  • port (Optional): The port for the camera. This defaults to 5000.
  • +
  • profile (Optional): Video profile that will be used to obtain the stream. This defaults to 0. More details below.
  • +
  • extra_arguments (Optional): Extra options to pass to ffmpeg, e.g. image quality or video filter options. More details in FFmpeg component.
  • +
+

Most of the Onvif cameras support more than one audio/video Profile. Each profile provides different image quality. Usually, the first profile has the highest quality, and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn’t able to render the highest quality image in real-time - especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config profile variable.

+

Service camera.onvif_ptz

+

If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your camera.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeDescription
entity_idString or list of strings that point at entity_ids of cameras. Else targets all.
tiltTilt direction. Allowed values: UP, DOWN
panPan direction. Allowed values: RIGHT, LEFT
zoomZoom. Allowed values: ZOOM_IN, ZOOM_OUT
+

If you are running into trouble with this sensor, please refer to the Troubleshooting section.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.proxy/index.html b/components/camera.proxy/index.html new file mode 100644 index 0000000000..50641a7e50 --- /dev/null +++ b/components/camera.proxy/index.html @@ -0,0 +1,291 @@ + + + + + + + + + Camera Proxy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Camera Proxy +

+
+
+

The proxy camera platform allows you to pass another camera’s output through post-processing routines and generate a new camera with the post-processed output.

+

The current post-processing supports resizing the image/MJPEG as well as limiting the maximum refresh rate.

+

The current proxy capabilities are intended to reduce the camera bandwidth for slower internet connections.

+

To enable this camera in your installation, you must first have an existing working camera configured in Home Assistant. Next, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: proxy
+    entity_id: camera.<existingcamera>
+    max_stream_width: 360
+    max_image_width: 720
+
+
+

Configuration variables:

+
    +
  • entity_id (Required): The ID of another Home Assistant camera to post-process.
  • +
  • name (Optional): This parameter allows you to override the name of your camera.
  • +
  • max_image_width (Optional): The maximum width of single images taken from the camera (aspect ratio will be maintained).
  • +
  • max_stream_width (Optional): The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained).
  • +
  • image_quality (Optional): The quality level used for resulting JPEG for snapshots (default: 75).
  • +
  • stream_quality (Optional): The quality level used for resulting MJPEG streams (default: 75).
  • +
  • image_refresh_rate (Optional): The minimum time in seconds between generating successive image snapshots.
  • +
  • force_resize (Optional): Resize the image even if the resulting image would take up more bandwidth than the original.
  • +
  • cache_images (Optional): Preserve the last image and re-send in the case the camera is not responding.
  • +
+

Examples

+

Example of using a Camera proxy along with a Foscam camera:

+
camera:
+  - platform: foscam
+    ip: 192.168.1.10
+    username: foscam_camera
+    password: camera_password
+    name: mycamera
+  - platform: proxy
+    entity_id: camera.mycamera
+    max_stream_width: 360
+    max_image_width: 480
+    image_refresh_rate: 5.0
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.ring/index.html b/components/camera.ring/index.html new file mode 100644 index 0000000000..6d2f989f8f --- /dev/null +++ b/components/camera.ring/index.html @@ -0,0 +1,321 @@ + + + + + + + + + Ring Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ring Camera +

+
+
+

To get your Ring.com cameras working within Home Assistant, please follow the instructions for the general Ring component. Please note that downloading and playing Ring video will require a Ring Protect plan.

+

Once you have enabled the Ring component, add the following to your configuration.yaml file:

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

+

Currently it supports doorbell and stickup cameras.

+

Saving the videos captured by your Ring Door Bell

+

You can save locally the latest video captured by your Ring Door Bell using the downloader along with either an automation or python_script. First, enable the downloader component in your configuration by adding the following to your configuration.yaml.

+
downloader:
+  download_dir: downloads
+
+
+

Then you can use the following action in your automation (this will save the video file under <config>/downloads/ring_<camera_name>/):

+
action:
+  - service: downloader.download_file
+    data_template:
+      url: ""
+      subdir: ""
+      filename: ""
+
+
+

If you want to use python_script, enable it your configuration.yaml file first:

+
python_script:
+
+
+

You can then use the following python_script to save the video file:

+
# 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,
+    'filename': ring_cam.attributes.get('friendly_name')
+}
+
+# call downloader component to save the video
+hass.services.call('downloader', 'download_file', data)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.rpi_camera/index.html b/components/camera.rpi_camera/index.html new file mode 100644 index 0000000000..55cdaeaf31 --- /dev/null +++ b/components/camera.rpi_camera/index.html @@ -0,0 +1,314 @@ + + + + + + + + + Raspberry Pi Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspberry Pi Camera +

+
+
+

The rpi_camera platform allows you to integrate the Raspberry Pi camera into Home Assistant. This component uses the application raspistill to store the image from camera.

+

To enable this camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: rpi_camera
+
+
+
+

Configuration Variables

+
+
image_width
+
+

(int)(Optional)Set the image width.

+

Default value: 640

+
+
name
+
+

(string)(Optional)Name of the camera.

+

Default value: Raspberry Pi Camera

+
+
image_height
+
+

(int)(Optional)Set the image height.

+

Default value: 480

+
+
image_quality
+
+

(int)(Optional)Set the image quality (from 0 to 100).

+

Default value: 7

+
+
image_rotation
+
+

(int)(Optional)Set image rotation (0-359).

+

Default value: 0

+
+
horizontal_flip
+
+

(int)(Optional)Set horizontal flip (0 to disable, 1 to enable).

+

Default value: 0

+
+
vertical_flip
+
+

(int)(Optional)Set vertical flip (0 to disable, 1 to enable).

+

Default value: 0

+
+
timelapse
+
+

(int)(Optional)Takes a picture every this many milliseconds (thousands of a second) - the default means one picture a second.

+

Default value: 1000

+
+
file_path
+
+

(string)(Optional)Save the picture in a custom file path.

+

Default value: A temporary file is used.

+
+
+
+

The given file_path must be an existing file because the camera platform setup performs a writeable check on it. Also, keep in mind that the path should be whitelisted.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.skybell/index.html b/components/camera.skybell/index.html new file mode 100644 index 0000000000..13ba22ea79 --- /dev/null +++ b/components/camera.skybell/index.html @@ -0,0 +1,283 @@ + + + + + + + + + Skybell Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybell Camera +

+
+
+

To get your Skybell.com cameras working within Home Assistant, please follow the instructions for the general Skybell component.

+

Once you have enabled the Skybell component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: skybell
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.synology/index.html b/components/camera.synology/index.html new file mode 100644 index 0000000000..f9fba99144 --- /dev/null +++ b/components/camera.synology/index.html @@ -0,0 +1,290 @@ + + + + + + + + + Synology Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Synology Camera +

+
+
+

  +The synology platform allows you to watch the live streams of your Synology Surveillance Station based IP cameras in Home Assistant.

+

To enable your Surveillance Station cameras in your installation, add the following to your configuration.yaml file:

+
# Minimum configuration.yaml entry
+camera:
+  - platform: synology
+    url: SYNOLOGY_URL
+    username: USERNAME
+    password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • url (Required): The URL to your synology, including port.
  • +
  • username (Required): The username for accessing surveillance station.
  • +
  • password (Required): The password for accessing surveillance station.
  • +
  • timeout (Optional): The timeout in seconds used when connecting to the Surveillance Station. Defaults to 5.
  • +
  • whitelist (Optional): A list of which cameras you want to add, the names must be the same as in Surveillance Station. If omitted all cameras are added.
  • +
  • verify_ssl (Optional): True to require a valid certificate, False to disable certificate checking. Defaults to True.
  • +
+

A full sample configuration for the synology platform is shown below:

+
# Example configuration.yaml entry
+camera:
+  - platform: synology
+    url: https://192.168.1.120:5001
+    username: USERNAME
+    password: PASSWORD
+    timeout: 15
+    verify_ssl: False
+
+
+

+Most users will need to set verify_ssl to false unless they have installed a valid SSL certificate in place of the built in self-signed certificate. +

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.usps/index.html b/components/camera.usps/index.html new file mode 100644 index 0000000000..cbd95178ba --- /dev/null +++ b/components/camera.usps/index.html @@ -0,0 +1,279 @@ + + + + + + + + + USPS Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ USPS Camera +

+
+
+

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 to see mail images. This works in concert with USPS sensors.

+

+You must have the USPS component 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:

+
# Example configuration.yaml entry
+camera:
+  - platform: usps
+    scan_interval: 5
+
+
+

To enable this camera in your installation, set up the USPS component with your username and password.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.uvc/index.html b/components/camera.uvc/index.html new file mode 100644 index 0000000000..2fa789ee96 --- /dev/null +++ b/components/camera.uvc/index.html @@ -0,0 +1,272 @@ + + + + + + + + + UniFi Video Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UniFi Video Camera +

+
+
+

The uvc component allows you to integrate UniFi Video Camera (UVC) into Home Assistant.

+

To enable a UVC camera in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: uvc
+    nvr: IP_ADDRESS
+    key: API_KEY
+
+
+

Configuration variables:

+
    +
  • nvr (Required): The IP or hostname of the NVR (Network Video Recorder) server.
  • +
  • key (Required): The API key available from the NVR web interface.
  • +
  • port (Optional): The port number to use for accessing the NVR.
  • +
  • password (Optional): The camera password. Defaults to ubnt if not given.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/camera.verisure/index.html b/components/camera.verisure/index.html new file mode 100644 index 0000000000..c235c5aaf0 --- /dev/null +++ b/components/camera.verisure/index.html @@ -0,0 +1,281 @@ + + + + + + + + + Verisure Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure Camera +

+
+
+

The verisure camera platform allows you to control your Verisure cameras.

+

The requirement is that you have setup your Verisure hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.xeoma/index.html b/components/camera.xeoma/index.html new file mode 100644 index 0000000000..d07567f97e --- /dev/null +++ b/components/camera.xeoma/index.html @@ -0,0 +1,327 @@ + + + + + + + + + Xeoma Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xeoma Camera +

+
+
+

The Xeoma camera platform allows you to view the video feeds from a Xeoma video surveillance server.

+

To enable Xeoma camera feeds, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+camera:
+  - platform: xeoma
+    host: http://localhost:10090
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The URL of the Xeoma server’s web interface.

+
+
username
+
+

(string)(Optional)The username used to access the Xeoma server’s web interface.

+
+
password
+
+

(string)(Optional)The password used to access the Xeoma server’s web interface.

+
+
new_version
+
+

(boolean)(Optional)Set to false if the Xeoma server version is 17.5 or earlier.

+

Default value: true

+
+
cameras
+
+

(list)(Optional)List of customizations for individual Xeoma cameras.

+
+
+
+
image_name
+
+

(string)(Required)The name of the JPEG image for this camera as configured in Xeoma (without .jpg extension).

+
+
name
+
+

(string)(Optional)The name to display in the frontend for this camera.

+

Default value: The image_name for this camera.

+
+
hide
+
+

(boolean)(Optional)Don’t show this camera in Home Assistant.

+

Default value: false

+
+
+
+
+
+

Full examples

+
# Example configuration.yaml entry
+camera:
+  - platform: xeoma
+    host: http://localhost:10090
+    username: user
+    password: secretpassword
+    new_version: false
+    cameras:
+      - image_name: front_porch
+        name: Front Porch
+      - image_name: back_patio
+        hide: true
+
+
+

To use this platform, you must have the Xeoma Web Server module enabled in at least one of your camera chains.

+

This platform will parse the Xeoma web interface to find all enabled cameras and add them all to Home Assistant. You can +hide individual cameras using the platform configuration.

+

The image_name configuration value for each camera should match the name supplied to the Xeoma Web Server configuration (under Path to access images) with the .jpg extension removed.

+
+
+ +
+
+ + + + + + + diff --git a/components/camera.yi/index.html b/components/camera.yi/index.html new file mode 100644 index 0000000000..9004f1c598 --- /dev/null +++ b/components/camera.yi/index.html @@ -0,0 +1,314 @@ + + + + + + + + + Yi Home Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yi Home Camera +

+
+
+

The yi camera platform allows you to utilize Yi Home Cameras 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 / 27US / 47US
  • +
  • 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.

+

Preparing the Device

+

Installing Alternative Firmware

+

In order to integrate the camera with Home Assistant, 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.

+

Once installed, please ensure that you have enabled FTP and Telnet on your device.

+

+Currently, version 0.1.4-beta2 of the custom firmware is the highest supported. Firmwares higher than this version use Pure-FTPd, which has a bug that prevents FFmpeg from correctly rendering video files. +

+

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

+

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 <IP ADDRESS>.
  2. +
  3. Enter root as the username and <blank> as the password.
  4. +
  5. Type passwd and hit <Enter>.
  6. +
  7. Enter your new password twice.
  8. +
  9. Log out of Telnet.
  10. +
+

Configuring the Platform

+

To enable the platform, add the following lines to yourconfiguration.yaml file:

+
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. Defaults to root.
  • +
  • ffmpeg_arguments (Optional): Extra options to pass to ffmpeg (e.g. image quality or video filter options).
  • +
+

Image quality

+

Any option supported by ffmpeg camera 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:

+
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/components/camera.zoneminder/index.html b/components/camera.zoneminder/index.html new file mode 100644 index 0000000000..dc4f2c0911 --- /dev/null +++ b/components/camera.zoneminder/index.html @@ -0,0 +1,280 @@ + + + + + + + + + ZoneMinder Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZoneMinder Camera +

+
+
+

The zoneminder camera platform lets you monitor the current stream of your ZoneMinder cameras.

+

+You must have the ZoneMinder component configured to view the camera stream. +

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+camera:
+  - platform: zoneminder
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/camera/index.html b/components/camera/index.html new file mode 100644 index 0000000000..c4e0d35069 --- /dev/null +++ b/components/camera/index.html @@ -0,0 +1,315 @@ + + + + + + + + + Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Camera +

+
+
+

The camera component allows you to use IP cameras with Home Assistant. With a little additional work you could use USB cameras as well.

+

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.

+

Service enable_motion_detection

+

Enable the motion detection in a camera.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName(s) of entities to enable motion detection, e.g., camera.living_room_camera.
+

Service disable_motion_detection

+

Disable the motion detection in a camera.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName(s) of entities to disable motion detection, e.g., camera.living_room_camera.
+

Service snapshot

+

Take a snapshot from a camera.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName(s) of entities to create a snapshot from, e.g., camera.living_room_camera.
filename noTemplate of a file name. Variable is entity_id, e.g., /tmp/snapshot_{{ entity_id }}.
+

The path part of filename must be an entry in the whitelist_external_dirs in your homeassistant: section of your configuration.yaml file.

+

For example, the following action in an automation would take a snapshot from “yourcamera” and save it to /tmp with a timestamped filename.

+
action:
+  service: camera.snapshot
+  data:
+    entity_id: camera.yourcamera
+    filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
+
+
+

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.

+
{
+  "entity_id": "camera.living_room_camera"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/canary/index.html b/components/canary/index.html new file mode 100644 index 0000000000..8728450c36 --- /dev/null +++ b/components/canary/index.html @@ -0,0 +1,492 @@ + + + + + + + + + Canary - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Canary +

+
+
+

The canary component allows you to integrate your Canary devices in Home Assistant.

+

You will need your Canary login information (username, usually your email address, and password) to use this module.

+

To set it up, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+canary:
+  username: you@example.com
+  password: secret
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The username for accessing your Canary account.

+
+
password
+
+

(string)(Required)The password for accessing your Canary account.

+
+
timeout
+
+

(int)(Optional)Timeout to wait for connections.

+

Default value: 10

+
+
+
+

Once loaded, your front end will have the following components:

+
    +
  • A camera image triggered by motion for each camera.
  • +
  • An alarm control panel for each location.
  • +
  • A sensor per camera that reports temperature.
  • +
  • A sensor per camera that reports humidity.
  • +
  • A sensor per camera that reports air quality.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.daikin/index.html b/components/climate.daikin/index.html new file mode 100644 index 0000000000..baf413bd9c --- /dev/null +++ b/components/climate.daikin/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Daikin AC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Daikin AC +

+
+
+

The daikin climate platform integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters:

+
    +
  • mode (cool, heat, dry, fan only or auto)
  • +
  • fan speed (on supported models)
  • +
  • target temperature
  • +
  • swing mode (on supported models)
  • +
+

Current temperature is displayed.

+

+Please note, the daikin platform integrates ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45) into Home Assistant. BRP069A42 does not support setting of fan speed or fan swing mode. +

+

The platform has been integrated with discovery so all your Daikin AC’s climate devices can be automatically discovered.

+

To enable the platform, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate:
+  - platform: daikin
+    host: 10.0.0.1
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)IP or hostname of the device.

+
+
name
+
+

(string)(Optional)If the device has a name previously set by the user than that name will be used.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.ecobee/index.html b/components/climate.ecobee/index.html new file mode 100644 index 0000000000..78cf0be0e9 --- /dev/null +++ b/components/climate.ecobee/index.html @@ -0,0 +1,747 @@ + + + + + + + + + Ecobee Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ecobee Thermostat +

+
+
+

+To get your Ecobee thermostats working with Home Assistant, follow the instructions for the general Ecobee component. +

+

Concepts

+

The Ecobee Thermostat supports the following key concepts.

+

The target temperature is the temperature that the device attempts +to achieve. The target temperature is either determined by the +currently active climate or it may be overridden by a hold. When the +thermostat is not in auto mode, there is a single target +temperature. When the thermostat is in auto operation mode, there is a +pair of target temperatures: the lower target temperature determines +the lowest desired temperature, while the higher target temperature +determines the highest desired temperature (the thermostat will switch +between heating and cooling to keep the temperature within these +limits).

+

A climate is a predefined or user-defined set of states that the +thermostat aims to achieve. The ecobee thermostat provides three predefined +climates: Home, Away, and Sleep. The user can define additional climates.

+

A hold is an override of the target temperature defined in the +currently active climate. The temperature targeted in the hold mode may be +explicitly set (temperature hold), it may be derived from a reference +climate (home, away, sleep, etc.), or it may be derived from a vacation +defined by the thermostat. All holds are temporary. Temperature and +climate holds expire when the thermostat transitions to the next climate +defined in its program. A vacation hold starts at the beginning of the +defined vacation period, and expires when the vacation period ends.

+

When in away mode, the target temperature is permanently overridden by +the target temperature defined for the away climate. The away mode is a +simple way to emulate a vacation mode.

+

The operation mode of the device is the currently active operational +modes that the Ecobee thermostat provides: heat, auxHeatOnly, cool, +auto, and off.

+

Attributes

+

The following attributes are provided by the Ecobee Thermostat: +name, temperature_unit, current_temperature, target_temperature, +target_temperature_low, target_temperature_high, desired_fan_mode, +fan, current_hold_mode, current_operation, operation_list, +operation_mode, mode, fan_min_on_time, device_state_attributes, +is_away_mode_on, vacation, climate_list, aux_heat. +The attributes min_temp and max_temp are meaningless constant values.

+

Attribute name

+

Returns the name of the Ecobee Thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
StringName of the Ecobee Thermostat
+

Attribute temperature_unit

+

Returns the unit of measurement used for temperature by the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
StringName of the temperature unit
+

Attribute current_temperature

+

Returns the current temperature measured by the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerCurrently measured temperature
+

Attribute target_temperature

+

Returns the target temperature of the thermostat, when the thermostat is +not in auto operation mode.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerTarget temperature
+

Attribute target_temperature_low

+

Returns the desired heating temperature set in the thermostat when in +auto operation mode.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerTarget temperature
+

Attribute target_temperature_high

+

Returns the desired cooling temperature set in the thermostat when in +auto operation mode.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerTarget temperature
+

Attribute desired_fan_mode

+

Returns the desired fan mode of the current operation.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘on’, ‘off’
+

Attribute fan

+

Returns the current fan state.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘on’, ‘off’
+

Attribute current_hold_mode

+

Returns the current temperature hold, if any.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘temp’, ‘vacation’, ‘home’, ‘away’, etc., None
+

Attribute current_operation

+

Returns the current operation of the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘auto’, ‘cool’, ‘heat’, ‘off’
+

Attribute operation_list

+

Returns the list of available operation modes.

+ + + + + + + + + + + + + +
Attribute typeDescription
List of StringAvailable operation modes
+

Attribute operation_mode

+

Returns the current operation mode of the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
StringCurrently active operation mode
+

Attribute mode

+

Returns the climate currently active on the thermostat. The mode +is returned as the user-visible name (rather than the internally used name).

+

Attribute fan_min_on_time

+

Returns the current fan minimum on time.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerCurrent fan minimum on time in minutes
+

Attribute is_away_mode_on

+

Returns whether the thermostat is in away mode (see the corresponding +service for more detail).

+

Attribute actual humidity

+

Returns the humidity as measured by the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerCurrent humidity
+

Attribute vacation

+

Returns the currently active vacation or None.

+ + + + + + + + + + + + + +
Attribute typeDescription
StringName of currently active vacation
+

Attribute climate_list

+

Returns the list of climates defined in the thermostat.

+

Attribute aux_heat

+

Returns the current auxiliary heat state.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘on’, ‘off’
+

Services

+

The following services are provided by the Ecobee Thermostat: +set_away_mode, set_hold_mode, set_temperature, set_operation_mode, +fan_min_on_time, resume_program. +The services set_aux_heat, set_humidity, set_fan_mode, and +set_swing_mode offered by the Climate component +are not implemented for this thermostat.

+

Service set_away_mode

+

Turns the away mode on or off for the thermostat.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
away_modeno‘on’ or ‘off’
+

Service set_hold_mode

+

Puts the thermostat into the given hold mode. For ‘home’, ‘away’, ‘sleep’, +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. +It is not possible to set a vacation hold; such hold has to be +defined on the thermostat directly. However, a vacation hold can be +canceled.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
hold_modeno‘temp’, ‘home’, ‘away’, ‘sleep’, etc., None
+

Service set_temperature

+

Puts the thermostat into a temporary hold at the given temperature.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
target_temp_lownoDesired heating target temperature (when in auto mode)
target_temp_highnoDesired cooling target temperature (when in auto mode)
temperaturenoDesired target temperature (when not in auto mode)
+

Only the target temperatures relevant for the current operation mode need to +be provided.

+

Service set_operation_mode

+

Sets the current operation mode of the thermostat.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
operation_modeno‘auto’, ‘auxHeatOnly’, ‘cool’, ‘heat’, ‘off’
+

Service fan_min_on_time

+

Sets the fan minimum on time.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
fan_min_on_timenoDesired fan minimum on time
+

Service resume_program

+

Resumes the currently active schedule.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
resume_allnotrue or false
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.econet/index.html b/components/climate.econet/index.html new file mode 100644 index 0000000000..fbfa72808d --- /dev/null +++ b/components/climate.econet/index.html @@ -0,0 +1,327 @@ + + + + + + + + + EcoNet water heater - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EcoNet water heater +

+
+
+

The econet water heater platform is consuming the information provided by a EcoNet enabled Rheem water heater. This component allows you to set the temperature, the operation mode, and enable vaction mode.

+

To enable the econet water heater platform add the following to your config.

+
# Example configuration.yaml entry
+climate:
+  - platform: econet
+    username: YOUR_ECONET_EMAIL
+    password: YOUR_ECONET_PASSWORD
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The username used to connect to your EcoNet account.

+
+
password
+
+

(string)(Required)The password used to connect to your EcoNet account.

+
+
+
+

Service econet_add_vacation

+

You can use the service econet/add_vacation to create a new vacation for your EcoNet water heaters.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesThe entity id of the water heater to add the vaction to.
start_dateyesThis is a Unix timestamp for when the vaction should start.
end_dateyesthis is a Unix timestamp for when the vaction should end.
+

+The Unix timestamps can be obtained from the input_datetime component. This will allow you to graphically set the start and end date. +

+

Service econet_delete_vacation

+

You can use the service econet/delete_vacation to remove all vactions from an EcoNet water heater.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesThe entity id of the water heater to remove the vaction from.
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.ephember/index.html b/components/climate.ephember/index.html new file mode 100644 index 0000000000..62fc847b67 --- /dev/null +++ b/components/climate.ephember/index.html @@ -0,0 +1,270 @@ + + + + + + + + + EPH Controls Ember Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EPH Controls Ember Thermostat +

+
+
+

The ephember climate platform lets you control EPH Controls 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:

+
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/components/climate.eq3btsmart/index.html b/components/climate.eq3btsmart/index.html new file mode 100644 index 0000000000..ff80eed79d --- /dev/null +++ b/components/climate.eq3btsmart/index.html @@ -0,0 +1,292 @@ + + + + + + + + + EQ3 Bluetooth Smart Thermostats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EQ3 Bluetooth Smart Thermostats +

+
+
+

The eq3btsmart climate platform allows you to integrate EQ3 Bluetooth Smart Thermostats.

+

The current functionality allows setting the temperature as well as controlling the supported modes with help of python-eq3bt library. +As the device doesn’t contain a temperature sensor (read more), +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 be done with the eq3cli tool:

+
eq3cli --mac 00:11:22:33:44:55
+
+[00:1A:22:XX:XX:XX] Target 17.0 (mode: auto dst, away: no)
+Locked: False
+Batter low: False
+Window open: False
+Boost: False
+Current target temp: 21.0
+Current mode: auto dst
+Valve: 0
+
+
+

Configuration

+
# Example configuration.yaml entry
+climate:
+  - platform: eq3btsmart
+    devices:
+      room1:
+        mac: '00:11:22:33:44:55'
+
+
+

Configuration variables:

+
    +
  • devices array (Required): List of thermostats. +
      +
    • [device-name] (Required): The name to use for the thermostat. +
        +
      • mac (Required): MAC address of the thermostat.
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.flexit/index.html b/components/climate.flexit/index.html new file mode 100644 index 0000000000..76da2befbb --- /dev/null +++ b/components/climate.flexit/index.html @@ -0,0 +1,292 @@ + + + + + + + + + Flexit A/C controller - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Flexit A/C controller +

+
+
+

Integrates Flexit Air Conditioning unit into Home Assistant.

+

Requires an CI66 Modbus Adapter CI66

+

To enable this platform, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate:
+  - platform: flexit
+    slave: 21
+
+
+

Configuration variables:

+
    +
  • slave (Required): The slave ID of the modbus adapter, set using DIP-switches.
  • +
  • name (Optional): Displayed name of the A/C unit
  • +
+

+This component requires the Modbus component to be set up to work +

+

Full configuration example including modbus setup shown below:

+

DIP-switch settings on the CI66: +1=ON, 2=ON, 3=OFF, 4=ON, 5=OFF, 6=ON, 7=ON, 8=ON

+
# Full example configuration.yaml entry
+modbus:
+  type: serial
+  method: rtu
+  port: /dev/ttyUSB0
+  baudrate: 56000
+  stopbits: 1
+  bytesize: 8
+  parity: E
+
+climate:
+  - platform: flexit
+    name: Main A/C
+    slave: 21
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.generic_thermostat/index.html b/components/climate.generic_thermostat/index.html new file mode 100644 index 0000000000..265f76bac3 --- /dev/null +++ b/components/climate.generic_thermostat/index.html @@ -0,0 +1,304 @@ + + + + + + + + + Generic Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Generic Thermostat +

+
+
+

The generic_thermostat climate platform is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater or air conditioning under the hood. When in heater mode, if the measured temperature is cooler then the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in air conditioning mode, if the measured temperature is hotter then the target temperature, the air conditioning will be turned on and turned off when required temperature is reached.

+
# Example configuration.yaml entry
+climate:
+  - platform: generic_thermostat
+    name: Study
+    heater: switch.study_heater
+    target_sensor: sensor.study_temperature
+
+
+

Configuration variables:

+
    +
  • name (Required): Name of thermostat
  • +
  • heater (Required): entity_id for heater switch, must be a toggle device. Becomes air conditioning switch when ac_mode is set to True
  • +
  • target_sensor (Required): entity_id for a temperature sensor, target_sensor.state must be temperature.
  • +
  • min_temp (Optional): Set minimum set point available (default: 7)
  • +
  • max_temp (Optional): Set maximum set point available (default: 35)
  • +
  • target_temp (Optional): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. As of version 0.59, it will retain the target temperature set before restart if available.
  • +
  • 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.
  • +
  • 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. Use also with switches that might lose state. The keep-alive call is done with the current valid climate component state (either on or off).
  • +
  • initial_operation_mode (Optional): Set the initial operation mode. Valid values are off or auto. Value has to be double quoted. If this parameter is not set, it is preferable to set a keep_alive value. This is helpful to align any discrepancies between generic_thermostat and heater state.
  • +
  • away_temp (Optional): Set the temperature used by “away_mode”. If this is not specified, away_mode feature will not get activated.
  • +
+

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

+

Currently the generic_thermostat climate platform supports ‘heat’, ‘cool’ and ‘off’ operation modes. You can force your generic_thermstat to avoid starting by setting Operation to ‘off’.

+

Please note that changing Away Mode you will force a target temperature change as well that will get restored once the Away Mode is turned off.

+
# Full example configuration.yaml entry
+climate:
+  - platform: generic_thermostat
+    name: Study
+    heater: switch.study_heater
+    target_sensor: sensor.study_temperature
+    min_temp: 15
+    max_temp: 21
+    ac_mode: False
+    target_temp: 17
+    cold_tolerance: 0.3
+    hot_tolerance: 0
+    min_cycle_duration:
+      seconds: 5
+    keep_alive:
+      minutes: 3
+    initial_operation_mode: "off"
+    away_temp: 16
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.heatmiser/index.html b/components/climate.heatmiser/index.html new file mode 100644 index 0000000000..5d9ac9278b --- /dev/null +++ b/components/climate.heatmiser/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Heatmiser Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Heatmiser Thermostat +

+
+
+

The heatmiser climate platform let you control Heatmiser DT/DT-E/PRT/PRT-E thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP.

+

Further work would be required to get this setup to connect over Wifi, but the HeatmiserV3 python module being used is a full implementation of the V3 protocol.

+

To set it up, add the following information to your configuration.yaml file:

+
climate:
+  - platform: heatmiser
+    ipaddress: YOUR_IPADDRESS
+    port: YOUR_PORT
+    tstats:
+      - 1:
+        id: THERMOSTAT_ID
+        name: THERMOSTAT_NAME
+
+
+

A single interface can handle up to 32 connected devices.

+

Configuration variables:

+
    +
  • ipaddress (Required): The ip address of your interface.
  • +
  • port (Required): The port that the interface is listening on.
  • +
  • tstats (Required): A list of thermostats activated on the gateway.
  • +
  • id (Required): The id of the thermostat as configured on the device itself
  • +
  • name (Required): A friendly name for the thermostat
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.hive/index.html b/components/climate.hive/index.html new file mode 100644 index 0000000000..d3d014b7ea --- /dev/null +++ b/components/climate.hive/index.html @@ -0,0 +1,287 @@ + + + + + + + + + Hive Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hive Thermostat +

+
+
+

The ‘hive’ climate component integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the mode and setting the target temperature. +A short boost for Hive Heating or Hive Hot water can be set by using the Aux Heat function, this will turn on the boost feature for Hive Heating or Hive Hot water for 30 minutes at 0.5 degrees higher than the current temperature.

+

The Hive climate component supports the following Hive products:

+
    +
  • Hive Active Heating
  • +
  • Hive Multizone
  • +
  • Hot water control
  • +
+

+Full configuration details can be found on the main Hive component page. +

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.homematic/index.html b/components/climate.homematic/index.html new file mode 100644 index 0000000000..fb5d89f7b1 --- /dev/null +++ b/components/climate.homematic/index.html @@ -0,0 +1,281 @@ + + + + + + + + + Homematic Thermostats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic Thermostats +

+
+
+

The homematic climate platform lets you control Homematic thermostats through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup Homematic.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.honeywell/index.html b/components/climate.honeywell/index.html new file mode 100644 index 0000000000..6d536a0e38 --- /dev/null +++ b/components/climate.honeywell/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Honeywell Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Honeywell Thermostat +

+
+
+

The honeywell climate platform let you control Honeywell Connected thermostats from Home Assistant.

+

To set it up, add the following information to your configuration.yaml file:

+
climate:
+  - platform: honeywell
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+    scan_interval: 600
+
+
+

+Scan interval is expressed in seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell. +

+

Configuration variables:

+
    +
  • username (Required): The username of an user with access.
  • +
  • password (Required): The password for your given admin account.
  • +
  • region (Optional): Region identifier (either ‘eu’ or ‘us’). Defaults to ‘eu’ if not provided.
  • +
  • scan_interval(Optional): Scan interval is expressed in seconds. Recommended value of 600 seconds. Default value is 120 seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell.
  • +
  • away_temperature (Optional) (only for eu region): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C.
  • +
  • away_cool_temperature (Optional) (only for us region): Cooling setpoint when away mode is on. If omitted it defaults to 30.0 deg C.
  • +
  • away_heat_temperature (Optional) (only for us region): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.knx/index.html b/components/climate.knx/index.html new file mode 100644 index 0000000000..0fa189be4b --- /dev/null +++ b/components/climate.knx/index.html @@ -0,0 +1,340 @@ + + + + + + + + + KNX Climate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Climate +

+
+
+

The knx climate platform is used as in interface with KNX thermostats.

+

The knx component must be configured correctly, see KNX Component.

+

To use your KNX thermostats in your installation, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate:
+   - platform: knx
+     name: HASS-Kitchen.Temperature
+     temperature_address: '5/1/1'
+     setpoint_shift_address: '5/1/2'
+     setpoint_shift_state_address: '5/1/3'
+     target_temperature_address: '5/1/4'
+     operation_mode_address: '5/1/5'
+
+
+

Alternatively, if your device has dedicated binary group addresses for frost/night/comfort mode:

+
# Example configuration.yaml entry
+climate:
+  - platform: knx
+    name: HASS-Kitchen.Temperature
+    temperature_address: '5/1/1'
+    setpoint_shift_address: '5/1/2'
+    setpoint_shift_state_address: '5/1/3'
+    target_temperature_address: '5/1/4'
+    operation_mode_frost_protection_address: '5/1/5'
+    operation_mode_night_address: '5/1/6'
+    operation_mode_comfort_address: '5/1/7'
+
+
+

Configuration variables:

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

The knx component sets the desired target temperature by modifying the setpoint_shift. The module provides the following configuration options:

+
    +
  • setpoint_shift_address: (Optional) KNX address for setpoint_shift
  • +
  • setpoint_shift_state_address: (Optional) Explicit KNX address for reading setpoint_shift.
  • +
  • setpoint_shift_step: (Optional) Defines for step size in Kelvin for each step of setpoint_shift. Default is 0.5 K.
  • +
  • setpoint_shift_min: (Optional) Minimum value of setpoint shift. Default is “-6”.
  • +
  • setpoint_shift_max: (Optional) Maximum value of setpoint shift. Default is “6”.
  • +
+

The operation modes may be controlled with the following directives:

+
    +
  • operation_mode_address (Optional): KNX address for operation mode (Frost protection/night/comfort).
  • +
  • operation_mode_state_address (Optional): Explicit KNX address for reading operation mode
  • +
  • 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.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.maxcube/index.html b/components/climate.maxcube/index.html new file mode 100644 index 0000000000..cea1da056b --- /dev/null +++ b/components/climate.maxcube/index.html @@ -0,0 +1,268 @@ + + + + + + + + + eQ-3 MAX! Cube thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ eQ-3 MAX! Cube thermostat +

+
+
+

See instructions at the main component.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.melissa/index.html b/components/climate.melissa/index.html new file mode 100644 index 0000000000..aa402dd801 --- /dev/null +++ b/components/climate.melissa/index.html @@ -0,0 +1,270 @@ + + + + + + + + + Melissa Climate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melissa Climate +

+
+
+

The Melissa climate platform allows you to control your Melissa Climate from within Home Assistant.

+

The climate platform will be automatically configured if Melissa component is configured.

+

For more configuration information see the Melissa component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.mqtt/index.html b/components/climate.mqtt/index.html new file mode 100644 index 0000000000..790e594890 --- /dev/null +++ b/components/climate.mqtt/index.html @@ -0,0 +1,503 @@ + + + + + + + + + MQTT HVAC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT HVAC +

+
+
+

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.

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

+
+
name
+
+

(string)(Optional)The name of the HVAC.

+

Default value: MQTT HVAC

+
+
qos
+
+

(integer)(Optional)The maximum QoS level to be used when receiving and publishing messages.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)Defines if published messages should have the retain flag set.

+

Default value: false

+
+
send_if_off
+
+

(boolean)(Optional)Set to false to suppress sending of all MQTT messages when the current mode is Off.

+

Default value: true

+
+
initial
+
+

(number)(Optional)Set the initial target temperature.

+

Default value: 21

+
+
payload_on
+
+

(string)(Optional)The payload that represents enabled state.

+

Default value: true

+
+
payload_off
+
+

(string)(Optional)The payload that represents disabled state.

+

Default value: false

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
value_template
+
+

(template)(Optional)Default template to render the payloads on all *_state_topics with.

+
+
current_temperature_topic
+
+

(string)(Optional)The MQTT topic on which to listen for the current temperature.

+
+
power_command_topic
+
+

(string)(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
+
+

(string)(Optional)The MQTT topic to publish commands to change the HVAC operation mode.

+
+
mode_state_topic
+
+

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

+
+
mode_state_template
+
+

(template)(Optional)A template to render the value received on the mode_state_topic with.

+
+
temperature_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the target temperature.

+
+
temperature_state_topic
+
+

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

+
+
temperature_state_template
+
+

(template)(Optional)A template to render the value received on the temperature_state_topic with.

+
+
fan_mode_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the fan mode.

+
+
fan_mode_state_topic
+
+

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

+
+
fan_mode_state_template
+
+

(template)(Optional)A template to render the value received on the fan_mode_state_topic with.

+
+
swing_mode_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the swing mode.

+
+
swing_mode_state_topic
+
+

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

+
+
swing_mode_state_template
+
+

(template)(Optional)A template to render the value received on the swing_mode_state_topic with.

+
+
away_mode_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the away mode.

+
+
away_mode_state_topic
+
+

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

+
+
away_mode_state_template
+
+

(template)(Optional)A template to render the value received on the away_mode_state_topic with.

+
+
hold_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the hold mode.

+
+
hold_state_topic
+
+

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

+
+
hold_state_template
+
+

(template)(Optional)A template to render the value received on the hold_state_topic with.

+
+
aux_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to switch auxiliary heat.

+
+
aux_state_topic
+
+

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

+
+
aux_state_template
+
+

(template)(Optional)A template to render the value received on the aux_state_topic with.

+
+
+
+

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.

+

Using Templates

+

For all *_state_topics, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topis can be specified as value_template. This can be useful if you received payloads are e.g. in JSON format. Since in JSON, a quoted string (e.g. "foo") is just a string, this can also be used for unquoting.

+

Say you receive the operation mode "auto" via your mode_state_topic, but the mode is actually called just auto, here’s what you could do:

+
climate:
+  - platform: mqtt
+    name: Study
+    modes:
+      - off
+      - on
+      - auto
+    mode_command_topic: "study/ac/mode/set"
+    mode_state_topic: "study/ac/mode/state"
+    mode_state_template: "{{ value_json }}"
+
+
+

This will parse the incoming "auto" as JSON, resulting in auto. Obviously, in this case you could also just set value_template: "{{ value_json }}".

+

Example

+

A full configuration example looks like the one below.

+
# 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/components/climate.mysensors/index.html b/components/climate.mysensors/index.html new file mode 100644 index 0000000000..866b851bb9 --- /dev/null +++ b/components/climate.mysensors/index.html @@ -0,0 +1,548 @@ + + + + + + + + + MySensors HVAC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors HVAC +

+
+
+

Integrates MySensors HVAC into Home Assistant. See the main component for configuration instructions.

+

The following actuator types are supported:

+
MySensors version 1.5 and higher
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_HVACV_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED, V_TEMP
+

V_HVAC_FLOW_STATE is mapped to the state of the Climate component in Home Assistant as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Home Assistant StateMySensors State
STATE_COOLCoolOn
STATE_HEATHeatOn
STATE_AUTOAutoChangeOver
STATE_OFFOff
+

Currently humidity, away_mode, aux_heat, swing_mode is not supported. This will be included in later versions as feasible.

+

Set the target temperature using V_HVAC_SETPOINT_HEAT in Heat mode, and V_HVAC_SETPOINT_COOL in Cool Mode. In case of any Auto Change Over mode you can use V_HVAC_SETPOINT_HEAT as well as V_HVAC_SETPOINT_COOL to set the both the low bound and the high bound temperature of the device.

+

You can use V_HVAC_SPEED to control the Speed setting of the Fan in the HVAC.

+

You can use V_TEMP to send the current temperature from the node to Home Assistant.

+

For more information, visit the serial api of MySensors.

+

Example sketch for MySensors 2.x

+
/*
+* Documentation: http://www.mysensors.org
+* Support Forum: http://forum.mysensors.org
+*/
+
+#define MY_RADIO_NRF24
+#define CHILD_ID_HVAC 0
+
+#include <MySensors.h>
+
+// Uncomment your heatpump model
+//#include <FujitsuHeatpumpIR.h>
+//#include <PanasonicCKPHeatpumpIR.h>
+//#include <PanasonicHeatpumpIR.h>
+//#include <CarrierHeatpumpIR.h>
+//#include <MideaHeatpumpIR.h>
+//#include <MitsubishiHeatpumpIR.h>
+//#include <SamsungHeatpumpIR.h>
+//#include <SharpHeatpumpIR.h>
+//#include <DaikinHeatpumpIR.h>
+
+//Some global variables to hold the states
+int POWER_STATE;
+int TEMP_STATE;
+int FAN_STATE;
+int MODE_STATE;
+int VDIR_STATE;
+int HDIR_STATE;
+
+IRSenderPWM irSender(3);       // IR led on Arduino digital pin 3, using Arduino PWM
+
+//Change to your Heatpump
+HeatpumpIR *heatpumpIR = new PanasonicNKEHeatpumpIR();
+
+/*
+new PanasonicDKEHeatpumpIR()
+new PanasonicJKEHeatpumpIR()
+new PanasonicNKEHeatpumpIR()
+new CarrierHeatpumpIR()
+new MideaHeatpumpIR()
+new FujitsuHeatpumpIR()
+new MitsubishiFDHeatpumpIR()
+new MitsubishiFEHeatpumpIR()
+new SamsungHeatpumpIR()
+new SharpHeatpumpIR()
+new DaikinHeatpumpIR()
+*/
+
+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");
+}
+
+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) {
+  if (message.isAck()) {
+     Serial.println("This is an ack from gateway");
+     return;
+  }
+
+  Serial.print("Incoming message for: ");
+  Serial.print(message.sensor);
+
+  String recvData = message.data;
+  recvData.trim();
+
+  Serial.print(", New status: ");
+  Serial.println(recvData);
+  switch (message.type) {
+    case V_HVAC_SPEED:
+      Serial.println("V_HVAC_SPEED");
+
+      if(recvData.equalsIgnoreCase("auto")) FAN_STATE = 0;
+      else if(recvData.equalsIgnoreCase("min")) FAN_STATE = 1;
+      else if(recvData.equalsIgnoreCase("normal")) FAN_STATE = 2;
+      else if(recvData.equalsIgnoreCase("max")) FAN_STATE = 3;
+    break;
+
+    case V_HVAC_SETPOINT_COOL:
+      Serial.println("V_HVAC_SETPOINT_COOL");
+      TEMP_STATE = message.getFloat();
+      Serial.println(TEMP_STATE);
+    break;
+
+    case V_HVAC_FLOW_STATE:
+      Serial.println("V_HVAC_FLOW_STATE");
+      if (recvData.equalsIgnoreCase("coolon")) {
+        POWER_STATE = 1;
+        MODE_STATE = MODE_COOL;
+      }
+      else if (recvData.equalsIgnoreCase("heaton")) {
+        POWER_STATE = 1;
+        MODE_STATE = MODE_HEAT;
+      }
+      else if (recvData.equalsIgnoreCase("autochangeover")) {
+        POWER_STATE = 1;
+        MODE_STATE = MODE_AUTO;
+      }
+      else if (recvData.equalsIgnoreCase("off")){
+        POWER_STATE = 0;
+      }
+      break;
+  }
+  sendHeatpumpCommand();
+  sendNewStateToGateway();
+}
+
+void sendNewStateToGateway() {
+  send(msgHVACSetPointC.set(TEMP_STATE));
+  send(msgHVACSpeed.set(FAN_STATE));
+  send(msgHVACFlowState.set(MODE_STATE));
+}
+
+void sendHeatpumpCommand() {
+  Serial.println("Power = " + (String)POWER_STATE);
+  Serial.println("Mode = " + (String)MODE_STATE);
+  Serial.println("Fan = " + (String)FAN_STATE);
+  Serial.println("Temp = " + (String)TEMP_STATE);
+
+  heatpumpIR->send(irSender, POWER_STATE, MODE_STATE, FAN_STATE, TEMP_STATE, VDIR_AUTO, HDIR_AUTO);
+}
+
+
+

Example sketch for MySensors 1.x

+
/*
+* Documentation: http://www.mysensors.org
+* Support Forum: http://forum.mysensors.org
+*/
+
+#include <MySensor.h>
+/*
+* Include all the other Necessary code here.
+* The example code is limited to message exchange for mysensors
+* with the controller (ha).
+*/
+
+#define CHILD_ID_HVAC  0  // childId
+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);
+
+/*
+* Include all the other Necessary code here.
+* The example code is limited to message exchange for mysensors
+* with the controller (ha).
+*/
+
+void setup()
+{
+  // Startup and initialize MySensors library.
+  // Set callback for incoming messages.
+  gw.begin(incomingMessage);
+
+  // Send the sketch version information to the gateway and Controller
+  gw.sendSketchInfo("HVAC", "0.1");
+
+  gw.present(CHILD_ID_HVAC, S_HVAC, "Thermostat");
+  gw.send(msgHVACFlowState.set("Off"));
+  gw.send(msgHVACSetPointC.set(target_temp));
+  gw.send(msgHVACSpeed.set("Max"));
+}
+
+void loop() {
+  // Process incoming messages (like config from server)
+  gw.process();
+}
+
+void incomingMessage(const MyMessage &message) {
+  String recvData = message.data;
+  recvData.trim();
+  switch (message.type) {
+    case V_HVAC_SPEED:
+    if(recvData.equalsIgnoreCase("auto")) fan_speed = 0;
+    else if(recvData.equalsIgnoreCase("min")) fan_speed = 1;
+    else if(recvData.equalsIgnoreCase("normal")) fan_speed = 2;
+    else if(recvData.equalsIgnoreCase("max")) fan_speed = 3;
+    processHVAC();
+    break;
+    case V_HVAC_SETPOINT_COOL:
+    target_temp = message.getFloat();
+    processHVAC();
+    break;
+    case V_HVAC_FLOW_STATE:
+    if(recvData.equalsIgnoreCase("coolon") && (!Present_Power_On )){
+      togglePower();
+    }
+    else if(recvData.equalsIgnoreCase("off") && Present_Power_On ){
+      togglePower();
+    }
+    break;
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.nest/index.html b/components/climate.nest/index.html new file mode 100644 index 0000000000..0bad8e8f98 --- /dev/null +++ b/components/climate.nest/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Nest Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest Thermostat +

+
+
+

The nest climate platform let you control a thermostat from Nest.

+

+You must have the Nest component configured to use these sensors. The nest climate component will automatically be setup when you do. +

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.netatmo/index.html b/components/climate.netatmo/index.html new file mode 100644 index 0000000000..16f35b9687 --- /dev/null +++ b/components/climate.netatmo/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Netatmo Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netatmo Thermostat +

+
+
+

The netatmo thermostat platform is consuming the information provided by a Netatmo Smart Thermostat thermostat. This component allows you to view the current temperature and setpoint.

+

To enable the Netatmo thermostat, you first have to set up netatmo, this will use discovery to add your thermostat.

+

If you want to select a specific thermostat, set discovery to False for netatmo and add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+climate:
+  - platform: netatmo
+
+
+

Configuration variables:

+
    +
  • relay (Optional): Will display the thermostats of this relay only.
  • +
  • thermostat array (Optional): Thermostat to use. +
      +
    • thermostat_name: Name of the thermostat to display.
    • +
    +
  • +
+

If relay and thermostat are not provided, all thermostats will be displayed.

+
# Example configuration.yaml entry
+climate:
+  platform: netatmo
+  relay: relay_name
+  thermostat:
+    - thermostat_name
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.nuheat/index.html b/components/climate.nuheat/index.html new file mode 100644 index 0000000000..30cf8dbcfd --- /dev/null +++ b/components/climate.nuheat/index.html @@ -0,0 +1,486 @@ + + + + + + + + + NuHeat Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NuHeat Thermostat +

+
+
+

+To get your NuHeat Signature thermostats working within Home Assistant, please follow the instructions for the general NuHeat component +

+

Concepts

+

The NuHeat Thermostat supports the following key concepts.

+

The target temperature is the temperature that the device attempts to achieve. The target temperature is either determined by the schedule programmed into the thermostat (auto mode) or may be overridden. When the target temperature is set by Home Assistant, the thermostat will hold this temperature until the schedule is resumed.

+

Attributes

+

The following attributes are provided by the NuHeat thermostat: name, temperature_unit, current_temperature, target_temperature, current_hold_mode, current_operation, operation_list, min_temp and max_temp.

+

Attribute name

+

Returns the name of the NuHeat Thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
StringName of the thermostat
+

Attribute temperature_unit

+

Returns the unit of measurement used for temperature by the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
StringName of the temperature unit
+

Attribute current_temperature

+

Returns the current temperature measured by the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerCurrently measured temperature
+

Attribute target_temperature

+

Returns the target temperature of the thermostat, when the thermostat is +not in auto operation mode.

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerTarget temperature
+

Attribute current_hold_mode

+

Returns the current temperature hold, if any.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘temperature’, ‘temporary_temperature’, ‘auto’, etc.
+

Attribute current_operation

+

Returns the current operation of the thermostat.

+ + + + + + + + + + + + + +
Attribute typeDescription
String‘heat’, ‘idle’
+

Attribute operation_list

+

Returns the list of available operation modes.

+ + + + + + + + + + + + + +
Attribute typeDescription
List of StringAvailable operation modes
+

Attribute min_temp

+

Returns the minimum supported temperature by the thermostat

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerMinimum supported temperature
+

Attribute max_temp

+

Returns the maximum supported temperature by the thermostat

+ + + + + + + + + + + + + +
Attribute typeDescription
IntegerMaximum supported temperature
+

Services

+

The following services are provided by the NuHeat Thermostat: set_temperature, set_hold_mode, nuheat_resume_program.

+

The services fan_min_on_time, set_aux_heat, set_away_mode, set_humidity, set_fan_mode, set_operation_mode and set_swing_mode offered by the Climate component are not implemented for this thermostat.

+

Service set_temperature

+

Puts the thermostat into an indefinite hold at the given temperature.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
temperaturenoDesired target temperature (when not in auto mode)
+

Only the target temperatures relevant for the current operation mode need to +be provided.

+

Service set_hold_mode

+

Sets the thermostat’s hold mode. The NuHeat thermostat supports “auto” (to run the thermostat’s programmed schedule), “temperature” (to indefinitely hold the thermostat’s current target temperature), or “temporary_temperature” (to hold the thermostat’s current target temperature until the thermostat’s next scheduled event).

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
hold_modenoNew value of hold mode.
+

Service nuheat_resume_program

+

Resumes the currently active schedule.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.oem/index.html b/components/climate.oem/index.html new file mode 100644 index 0000000000..09dd8ef06b --- /dev/null +++ b/components/climate.oem/index.html @@ -0,0 +1,274 @@ + + + + + + + + + OpenEnergyMonitor WiFi Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenEnergyMonitor WiFi Thermostat +

+
+
+

This platform supports the ESP82666 based “WiFi MQTT Relay / Thermostat” sold by OpenEnergyMonitor. The underlying library only supports this single relay variant of the original device.

+

This platform controls the setpoint of the thermostat in its “manual” mode, therefore there is a configuration option the away setpoint.

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate oem:
+  - platform: oem
+    host: 192.168.0.100
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or hostname of the thermostat.
  • +
  • port (Optional): The port for the web interface. Defaults to 80.
  • +
  • name (Optional): The name to use for the frontend.
  • +
  • username (Optional): Username for the web interface if set.
  • +
  • password (Optional): Password for the web interface if set.
  • +
  • away_temp (Optional): Setpoint for the thermostat in away mode. Defaults to 14 C.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.proliphix/index.html b/components/climate.proliphix/index.html new file mode 100644 index 0000000000..1492838172 --- /dev/null +++ b/components/climate.proliphix/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Proliphix Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Proliphix Thermostat +

+
+
+

The proliphix climate platform let you control Proliphix thermostat from Home Assistant.

+

Currently supported and tested thermostats:

+
    +
  • NT10e
  • +
+

To set it up, add the following information to your configuration.yaml file:

+
climate:
+  - platform: proliphix
+    host: IP_ADDRESS
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Required): Address of your thermostat, eg. 192.168.1.32.
  • +
  • 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 +of OID values. A complete collection of the API is available in this API documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.radiotherm/index.html b/components/climate.radiotherm/index.html new file mode 100644 index 0000000000..e9ac6fb2b0 --- /dev/null +++ b/components/climate.radiotherm/index.html @@ -0,0 +1,284 @@ + + + + + + + + + Radio Thermostat (3M Filtrete) Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Radio Thermostat (3M Filtrete) Thermostat +

+
+
+

The radiotherm climate platform let you control a thermostat from Radio Thermostat or 3M Filtrete. Your thermostat must have the Wi-Fi module installed and connected to your network.

+

The underlying library supports:

+
    +
  • CT50 V1.09
  • +
  • CT50 V1.88
  • +
  • CT50 V1.94 (also known as Filtrete 3M50)
  • +
  • CT80 Rev B2 V1.03
  • +
+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate:
+  - platform: radiotherm
+
+
+

Configuration variables:

+
    +
  • host (Optional): List of your Radiotherm thermostats. If not provided the thermostats will be auto-detected.
  • +
  • away_temperature_heat (Optional): Target heating temperature in Fahrenheit for away mode. This is separate from away mode in the app. Defaults to ‘60’.
  • +
  • away_temperature_cool (Optional): Target cooling temperature in Fahrenheit for away mode. This is separate from away mode in the app. Defaults to ‘85’.
  • +
  • hold_temp (Optional): Boolean to control if Home Assistant temperature adjustments hold (True) or are temporary (False). Defaults to False.
  • +
+

Set hold_temp: True if you want temperature settings from Home Assistant to override a thermostat schedule on the thermostat itself. Otherwise Home Assistant will perform temporary temperature changes.

+

The away mode functions similarly to the away mode feature of the website and apps, but cannot detect if you set away mode outside of Home Assistant.

+

Multiple thermostats can be assigned by using host: if auto-detection is not used.

+
climate:
+  platform: radiotherm
+  host:
+    - 192.168.99.137
+    - 192.168.99.202
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.sensibo/index.html b/components/climate.sensibo/index.html new file mode 100644 index 0000000000..58fb46e643 --- /dev/null +++ b/components/climate.sensibo/index.html @@ -0,0 +1,284 @@ + + + + + + + + + Sensibo A/C controller - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sensibo A/C controller +

+
+
+

Integrates Sensibo Air Conditioning controller into Home Assistant.

+

To enable this platform, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate:
+  - platform: sensibo
+    api_key: <your_key_here>
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your API key.
  • +
  • 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 https://home.sensibo.com/me/api

+

+If you create the API key using a dedicated user (and not your main user), +then in the Sensibo app log you will be able to distinguish between actions +done in the app and actions done by Home Assistant. +

+

Full config example

+
climate:
+  - platform: sensibo
+    api_key: deadbeaf
+    id:
+      - id1
+      - id2
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.tado/index.html b/components/climate.tado/index.html new file mode 100644 index 0000000000..c6dde5a6da --- /dev/null +++ b/components/climate.tado/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Tado Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tado Thermostat +

+
+
+

The tado climate platform is interact with your climate devices.

+

The requirement is that you have set up the tado component.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.tesla/index.html b/components/climate.tesla/index.html new file mode 100644 index 0000000000..78f5de6dd3 --- /dev/null +++ b/components/climate.tesla/index.html @@ -0,0 +1,282 @@ + + + + + + + + + Tesla HVAC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla HVAC +

+
+
+

The Tesla climate platform allows you to control your Tesla 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 documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.toon/index.html b/components/climate.toon/index.html new file mode 100644 index 0000000000..b8acd651fd --- /dev/null +++ b/components/climate.toon/index.html @@ -0,0 +1,298 @@ + + + + + + + + + Toon Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Toon Thermostat +

+
+
+

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 AssistantToon
PerformanceComfort
HeatThuis
EcoWeg
CoolSlapen
+

Please refer to the hub component for setup instructions.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.touchline/index.html b/components/climate.touchline/index.html new file mode 100644 index 0000000000..e7217f0ccb --- /dev/null +++ b/components/climate.touchline/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Roth Touchline - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Roth Touchline +

+
+
+

The touchline climate platform let you control ROTH Touchline floor heating thermostats from Roth.

+

To set it up, add the following information to your configuration.yaml file:

+
climate:
+  - platform: touchline
+    host: YOUR_IPADDRESS
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Optional)The IP address of your controller, e.g., http://192.168.1.1.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.venstar/index.html b/components/climate.venstar/index.html new file mode 100644 index 0000000000..ae5654e3f5 --- /dev/null +++ b/components/climate.venstar/index.html @@ -0,0 +1,315 @@ + + + + + + + + + Venstar Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Venstar Thermostat +

+
+
+

The venstar climate platform allows you to control Venstar thermostats from Home Assistant. +Venstar thermostats feature a local API that allows for automation without the need for a cloud service.

+

Currently supported and tested thermostats:

+
    +
  • Color Touch T7900
  • +
+

Currently supported functionality:

+
    +
  • Setting heat/cool temperature when the thermostat is in the appropriate mode.
  • +
  • Changing the operation mode of the thermostat (heat/cool/off/auto)
  • +
  • Turning the fan on/off
  • +
  • Setting the humidity level
  • +
+

Note - Please ensure you update your thermostat to the latest firmware. Currently tested on firmware 5.10.

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+climate:
+  - platform: venstar
+    host: IP_OR_HOSTNAME_OF_THERMOSTAT
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)Address of your thermostat, e.g., 192.168.1.32.

+
+
username
+
+

(string)(Optional)Username for the thermostat.

+
+
password
+
+

(string)(Optional)Password for the thermostat.

+
+
ssl
+
+

(boolean)(Optional)Whether to use SSL or not when communicating.

+

Default value: false

+
+
timeout
+
+

(int)(Optional)Number of seconds for API timeout.

+

Default value: 5

+
+
+
+

Full configuration sample

+
# Example configuration.yaml entry
+climate:
+  - platform: venstar
+    host: IP_OR_HOSTNAME_OF_THERMOSTAT
+    ssl: True/False
+    username: OPTIONAL_AUTH_USER_HERE
+    password: OPTIONAL_AUTH_PASS_HERE
+    timeout: 5
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate.vera/index.html b/components/climate.vera/index.html new file mode 100644 index 0000000000..945121f060 --- /dev/null +++ b/components/climate.vera/index.html @@ -0,0 +1,288 @@ + + + + + + + + + Vera Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Thermostat +

+
+
+

The vera climate platform allows you to control your Vera thermostats from within Home Assistant.

+

They will be automatically discovered if the vera component is loaded.

+

For more configuration information see the Vera component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.wink/index.html b/components/climate.wink/index.html new file mode 100644 index 0000000000..1dbcc243e1 --- /dev/null +++ b/components/climate.wink/index.html @@ -0,0 +1,307 @@ + + + + + + + + + Wink Climate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Climate +

+
+
+

The Wink climate platform allows you to get data from your Wink thermostats, Air Conditioners, and Water Heaters.

+

The requirement is that you have setup Wink.

+

Supported climate devices

+
    +
  • Nest (No Wink hub required)
  • +
  • Ecobee (No Wink hub required)
  • +
  • Sensi (No Wink hub required)
  • +
  • Carrier (Unconfirmed)
  • +
  • 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 confirmed to work, but others may work as well. +

+
+
+ +
+
+ + + + + + + diff --git a/components/climate.zwave/index.html b/components/climate.zwave/index.html new file mode 100644 index 0000000000..82ac0e2932 --- /dev/null +++ b/components/climate.zwave/index.html @@ -0,0 +1,340 @@ + + + + + + + + + Z-Wave Climate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Climate +

+
+
+

To get your Z-Wave thermostat or HVAC unit working with Home Assistant, follow the instructions for the general Z-Wave component.

+

+Thermostats with support for fan modes or different operating modes, will be handled like a HVAC device and will also be detected as one. +If the thermostat support different operating modes, you will get one thermostat entity for each mode. These can be hidden with settings using the customize setting in the configuration.yaml file. +

+

To enable the climate component for your Z-Wave network, add the following to your configuration.yaml file.

+
climate:
+  - platform: zwave
+
+
+

Once enabled, any Z-Wave climate devices will be available to Home Assistant. Multiple entities may be created. The following entities are created for a Remotec ZXT-120.

+
    +
  • climate.remotec_zxt120_heating_1_id Allows you to control the connected device. See below for examples.
  • +
  • sensor.remotec_zxt120_temperature_38 A sensor which returns the current temperature set on the attached device.
  • +
+

Automating Z-Wave Climate Devices

+

The following examples will instruct a Remotec ZXT-120 to turn the attached device mode to Heating, and set the temperature at 24 degrees after 8pm. Add it to automation.yaml.

+
automation:
+  - alias: Turn on Heater at 8pm
+    trigger:
+      - platform: time
+        at: "20:00:00"
+    action:
+      - service: climate.set_operation_mode
+        data:
+          entity_id: climate.remotec_zxt120_heating_1_id
+          operation_mode: Heat
+      - service: climate.set_temperature
+        data:
+          entity_id: climate.remotec_zxt120_heating_1_39
+          temperature: 24
+
+
+

Generally in Home Assistant you can use the homeassistant/turn_off service to turn devices off. For the Remotec ZXT-120, you must instead make a service call like the following.

+
automation:
+  - alias: Turn off Heater at 9pm
+    trigger:
+      - platform: time
+        at: "21:00:00"
+    action:
+      - service: climate.set_operation_mode
+        data:
+          entity_id: climate.remotec_zxt120_heating_1_id
+          operation_mode: 'Off'
+
+
+

Note: In the example above, the word Off is encased in single quotes to be valid YAML.

+

Test if it works

+

A simple way to test if your Z-Wave climate device is working is to use service developer tool icon Services from the Developer Tools. Choose the applicable Climate service from the list of Available services: and enter something like the sample below into the Service Data field and then press CALL SERVICE.

+
{
+  "entity_id": "climate.remotec_zxt120_heating_1_id",
+  "operation_mode": "Heat"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/climate/index.html b/components/climate/index.html new file mode 100644 index 0000000000..372efd9f0e --- /dev/null +++ b/components/climate/index.html @@ -0,0 +1,590 @@ + + + + + + + + + Climate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Climate +

+
+
+

The climate component is built for the controlling and monitoring of HVAC (heating, ventilating, and air conditioning) and thermostat devices.

+

To enable this component, pick one of the platforms, and add it to your configuration.yaml:

+
# Example configuration.yaml entry
+climate:
+  platform: demo
+
+
+

Services

+

Climate control services

+

Available services: climate.set_aux_heat, climate.set_away_mode, climate.set_temperature, climate.set_humidity, climate.set_fan_mode, climate.set_operation_mode, climate.set_swing_mode, climate.set_hold_mode, climate.turn_on, climate.turn_off

+

+Not all climate services may be available for your platform. Be sure to check the available services Home Assistant has enabled by checking service developer tool icon Services. +

+

Service climate.set_aux_heat

+

Turn auxiliary heater on/off for climate device

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
aux_heatnoNew value of auxiliary heater.
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_aux_heat
+      data:
+        entity_id: climate.kitchen
+        aux_heat: true
+
+
+

Service climate.set_away_mode

+

Set away mode for climate device. The away mode changes the target temperature permanently to a temperature +reflecting a situation where the climate device is set to save energy. This may be used to emulate a +“vacation mode”, for example.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
away_modenoNew value of away mode.
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_away_mode
+      data:
+        entity_id: climate.kitchen
+        away_mode: 'on'
+
+
+

Service climate.set_hold_mode

+

Set hold mode for climate device. The hold mode changes the target temperature of the client device temporarily to +a different temperature. Typical hold modes provided by a climate device are “away” or “home”, where the hold temperature +is chosen depending on a predefined climate, or “temperature” hold, where a particular temperature is selected as the +temporary target temperature. The particular modes available depend on the climate device.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
hold_modenoNew value of hold mode.
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_hold_mode
+      data:
+        entity_id: climate.kitchen
+        hold_mode: 'away'
+
+
+

Service climate.set_temperature

+

Set target temperature of climate device

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
temperaturenoNew target temperature for hvac
target_temp_highyesNew target high temperature for hvac
target_temp_lowyesNew target low temperature for hvac
operation_modeyesOperation mode to set temperature to. This defaults to current_operation mode if not set, or set incorrectly.
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_temperature
+      data:
+        entity_id: climate.kitchen
+        temperature: 24
+        operation_mode: Heat
+
+
+

Service climate.set_humidity

+

Set target humidity of climate device

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
humiditynoNew target humidity for climate device
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_humidity
+      data:
+        entity_id: climate.kitchen
+        humidity: 60
+
+
+

Service climate.set_fan_mode

+

Set fan operation for climate device

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
fan_modenoNew value of fan mode
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_fan_mode
+      data:
+        entity_id: climate.kitchen
+        fan_mode: 'On Low'
+
+
+

Service climate.set_operation_mode

+

Set operation mode for climate device

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
operation_modenoNew value of operation mode
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_operation_mode
+      data:
+        entity_id: climate.kitchen
+        operation_mode: Heat
+
+
+

Service climate.set_swing_mode

+

Set operation mode for climate device

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Else targets all.
swing_modenoNew value of swing mode
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: climate.set_swing_mode
+      data:
+        entity_id: climate.kitchen
+        swing_mode: 1
+
+
+

Service climate.turn_on

+

Turn climate device on

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Targets all when omitted.
+

Service climate.turn_off

+

Turn climate device off

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of climate devices to control. Targets all when omitted.
+

Customization

+

The step for the setpoint can be adjusted (default to 0,5 increments) by adding the following line into configuration

+
customize:
+  - entity_id
+      target_temp_step: 1
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cloud.alexa/index.html b/components/cloud.alexa/index.html new file mode 100644 index 0000000000..177b58eef0 --- /dev/null +++ b/components/cloud.alexa/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/cloud/index.html b/components/cloud/index.html new file mode 100644 index 0000000000..7b197dba5d --- /dev/null +++ b/components/cloud/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Home Assistant Cloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Home Assistant Cloud +

+
+
+

The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa. Learn more.

+
# Example configuration.yaml entry to enable the cloud component
+cloud:
+
+
+

Once activated, go to the configuration panel in Home Assistant and create an account and log in. If you are not seeing the Configuration panel, make sure you have the following option enabled in your configuration.yaml` file.

+
config:
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/coinbase/index.html b/components/coinbase/index.html new file mode 100644 index 0000000000..a2652fef7b --- /dev/null +++ b/components/coinbase/index.html @@ -0,0 +1,182 @@ + + + + + + + + + coinbase - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ coinbase +

+
+
+

The coinbase component lets you access account balances and exchange rates from coinbase.

+

You will need to obtain an API key from coinbase’s developer site to use this component. You need to give read access to wallet:accounts in order for the component to access relevant data.

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+coinbase:
+  api_key: asdfghjklqwertyuiopzxcvbnm 
+  api_secret: nkjnewncfghjklqwertyuiopzxcvbnm 
+  exchange_rate_currencies:
+    - BTC
+    - ETH
+    - LTC
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)Your API key to access coinbase.

+
+
api_secret
+
+

(string)(Required)Your API secret to access coinbase.

+
+
exchange_rate_currencies
+
+

(list)(Optional)List of currencies to create exchange rate sensors for.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/comfoconnect/index.html b/components/comfoconnect/index.html new file mode 100644 index 0000000000..2e42590227 --- /dev/null +++ b/components/comfoconnect/index.html @@ -0,0 +1,485 @@ + + + + + + + + + Zehnder ComfoAir Q Ventilation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zehnder ComfoAir Q Ventilation +

+
+
+

The comfoconnect component lets you control Zehnder ComfoAir Q350/450/600 +ventilation units from Home Assistant. You need a ComfoConnect LAN C +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 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:

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

+
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/components/config/index.html b/components/config/index.html new file mode 100644 index 0000000000..9d234e14af --- /dev/null +++ b/components/config/index.html @@ -0,0 +1,180 @@ + + + + + + + + + Config - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Config +

+
+
+

The config component is designed to display panels in the frontend to configure and manage parts of Home Assistant.

+

To enable the configuration panel, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+config:
+
+
+

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.

+

+ +

+

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.

+

Automation

+

This section enables you to create and modify automations from within Home Assistant, without needing to write out the yaml code.

+

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.

+

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/components/configurator/index.html b/components/configurator/index.html new file mode 100644 index 0000000000..10920ebeff --- /dev/null +++ b/components/configurator/index.html @@ -0,0 +1,223 @@ + + + + + + + + + Configurator - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Configurator +

+
+
+

+This component is intended for developers. +

+

The configurator component allows components to request information from the user. It is currently implemented as the minimum viable product:

+
    +
  • It supports showing a text, image and button to the user
  • +
  • Input fields can be defined with a description, and optional type
  • +
  • It will trigger a callback when the button is pressed
  • +
+

The Hue component in the demo and Plex are implemented using the configurator. See the source of the demo component for a simple example.

+

See the source for more details on how to use the configurator component.

+
+
+ +
+
+ + + + + + + diff --git a/components/conversation/index.html b/components/conversation/index.html new file mode 100644 index 0000000000..e3bc970a50 --- /dev/null +++ b/components/conversation/index.html @@ -0,0 +1,239 @@ + + + + + + + + + Conversation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Conversation +

+
+
+

The conversation component allows you to converse with Home Assistant. You can either converse by pressing the microphone in the frontend (supported browsers only (no iOS)) or by calling the conversation/process service with the transcribed text.

+

+ + Screenshot of the conversation interface in Home Assistant. +

+
# Example base configuration.yaml entry
+conversation:
+
+
+
+

Configuration Variables

+
+
intents
+
+

(map)(Optional)Intents that the conversation component should understand.

+
+
+
+
<INTENT NAME>
+
+

(list)(Required)Sentences that should trigger this intent.

+
+
+
+
+
+

Adding custom sentences

+

By default, it will support turning devices on and off. You can say things like “turn on kitchen lights” or “turn the living room lights off”. You can also configure your own sentences to be processed. This works by mapping sentences to intents and then configure the intent script component to handle these intents.

+

Here is a simple example to be able to ask what the temperature in the living room is.

+
# Example configuration.yaml entry
+conversation:
+  intents:
+    LivingRoomTemperature:
+     - What is the temperature in the living room
+
+intent_script:
+  LivingRoomTemperature:
+    speech:
+      text: It is currently {{ states.sensor.temperature }} degrees in the living room.
+
+
+

Adding advanced custom sentences

+

Sentences can contain slots (marked with curly braces: {name}) and optional words (marked with square brackets: [the]). The values of slots will be passed on to the intent and are available inside the templates.

+

The following configuration can handle the following sentences:

+
    +
  • Change the lights to red
  • +
  • Change the lights to green
  • +
  • Change the lights to blue
  • +
  • Change the lights to the color red
  • +
  • Change the lights to the color green
  • +
  • Change the lights to the color blue
  • +
+
# Example configuration.yaml entry
+conversation:
+  intents:
+    ColorLight:
+     - Change the lights to [the color] {color}
+
+intent_script:
+  ColorLight:
+    speech:
+      text: Changed the lights to {{ color }}.
+    action:
+      service: light.turn_on
+      data_template:
+        rgb_color:
+          - "{% if color == 'red' %}255{% else %}0{% endif %}"
+          - "{% if color == 'green' %}255{% else %}0{% endif %}"
+          - "{% if color == 'blue' %}255{% else %}0{% endif %}"
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/counter/index.html b/components/counter/index.html new file mode 100644 index 0000000000..485a1cc1bd --- /dev/null +++ b/components/counter/index.html @@ -0,0 +1,290 @@ + + + + + + + + + Counter - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Counter +

+
+
+

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:

+
# Example configuration.yaml entry
+counter:
+  my_custom_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 to use for your input and prefix the name with mdi:. For example mdi:car, mdi:ambulance or mdi:motorbike.

+

Services

+

Available services: increment, decrement, and reset.

+

Service counter.increment

+

Increments the counter with 1 or the given value for the steps.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName of the entity to take action, e.g., counter.count0.
+

Service counter.decrement

+

Decrements the counter with 1 or the given value for the steps.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName of the entity to take action, e.g., counter.count0.
+

Service counter.reset

+

With this service the counter is reset to its initial value.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName of the entity to take action, e.g., counter.count0.
+

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.

+
{
+  "entity_id": "counter.count0"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.abode/index.html b/components/cover.abode/index.html new file mode 100644 index 0000000000..23b6095ac3 --- /dev/null +++ b/components/cover.abode/index.html @@ -0,0 +1,258 @@ + + + + + + + + + Abode Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Cover +

+
+
+

The abode security control panel platform allows you to control your Abode alarms.

+

This component will automatically add Secure Barriers configured in your Abode account.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.command_line/index.html b/components/cover.command_line/index.html new file mode 100644 index 0000000000..977ad4a07a --- /dev/null +++ b/components/cover.command_line/index.html @@ -0,0 +1,293 @@ + + + + + + + + + Command Line Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Command Line Cover +

+
+
+

A command_linecover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line.

+

To enable a command line cover in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+cover:
+  - platform: command_line
+    covers:
+      garage_door:
+        command_open: move_command up garage
+        command_close: move_command down garage
+        command_stop: move_command stop garage
+
+
+

Configuration variables:

+
    +
  • covers (Required): The array that contains all command line covers. +
      +
    • identifier (Required): Name of the command line cover as slug. Multiple entries are possible. +
        +
      • command_open (Required): The command to open the cover.
      • +
      • command_close (Required): The action to close the cover.
      • +
      • command_stop (Required): The action to stop the cover.
      • +
      • command_state (Optional): If given, this will act as a sensor that runs in the background and updates the state of the cover. If the command returns a 0 the indicates the cover is fully closed, whereas a 100 indicates the cover is fully open.
      • +
      • value_template (optional - default: ‘{{ value }}’): if specified, command_state will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your command_state returns a string “open”, using value_template as in the example config above will allow you to translate that into the valid state 100.
      • +
      • friendly_name (Optional): The name used to display the cover in the frontend.
      • +
      +
    • +
    +
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Full configuration

+
# Example configuration.yaml entry
+cover:
+  - platform: command_line
+    covers:
+      garage_door:
+        command_open: move_command up garage
+        command_close: move_command down garage
+        command_stop: move_command stop garage
+        command_state: state_command garage
+        value_template: >
+          {% if value == 'open' %}
+          100
+          {% elif value == 'closed' %}
+          0
+          {% endif %}
+          
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.garadget/index.html b/components/cover.garadget/index.html new file mode 100644 index 0000000000..0474d5a567 --- /dev/null +++ b/components/cover.garadget/index.html @@ -0,0 +1,321 @@ + + + + + + + + + Garadget Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Garadget Cover +

+
+
+

The garadget cover platform lets you control Garadget garage door futurizers through Home Assistant.

+

To enable Garadget Covers in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+cover:
+  - platform: garadget
+    covers:
+        190028001947343412342341:
+          username: UseYourLogin@garadget.com
+          password: abc123
+      4c003f001151353432134214:
+        access_token: df4cc785ff818f2b01396c44142342fccdef
+
+
+

Configuration variables:

+
    +
  • covers array (Required): List of your doors. +
      +
    • device (Required): This is the device id from your Garadget portal.
    • +
    • Either: +
        +
      • username (Required): Your Garadget account username.
      • +
      • password (Required): Your Garadget account password.
      • +
      +
    • +
    • Or: +
        +
      • access_token (Required): A generated access_token from your Garadget account.
      • +
      +
    • +
    • name (Optional): Name to use in the frontend, will use name configured in Garadget otherwise.
    • +
    +
  • +
+

If provided, the access_token will be used, otherwise the username and password will be used to automatically generate an access token at start time.

+

Example with more detail:

+

+ +

+
# Related configuration.yaml entry
+cover:
+  - platform: garadget
+    covers:
+      190028001947343412342341:
+        access_token: !secret garadget_access_token
+        name: Garage door
+
+sensor:
+  - platform: template
+    sensors:
+      garage_door_status:
+        friendly_name: 'State of the door'
+        value_template: '{{ states.cover.garage_door.state }}'
+      garage_door_time_in_state:
+        friendly_name: 'Since'
+        value_template: '{{ states.cover.garage_door.attributes.time_in_state }}'
+      garage_door_wifi_signal_strength:
+        friendly_name: 'WiFi strength'
+        value_template: '{{ states.cover.garage_door.attributes.wifi_signal_strength }}'
+        unit_of_measurement: 'dB'
+
+group:
+  garage_door:
+    name: Garage door
+    entities:
+      - cover.garage_door
+      - sensor.garage_door_status
+      - sensor.garage_door_time_in_state
+      - sensor.garage_door_wifi_signal_strength
+
+customize:
+  sensor.garage_door_time_in_state:
+    icon: mdi:timer-sand
+  sensor.garage_door_wifi_signal_strength:
+    icon: mdi:wifi
+
+
+

Some of the Garadget sensors can create a lot of clutter in the logbook. Use this section of code in your configuration.yaml to exclude those entries.

+
logbook:
+  exclude:
+    entities:
+      - sensor.garage_door_time_in_state
+      - sensor.garage_door_wifi_signal_strength
+
+
+

As of firmware release 1.17 the garadget device has native support for MQTT. The options allow the end-user to configure the device in the following ways ‘cloud only’, ‘cloud and MQTT’ or ‘MQTT only’.

+

For configuration of the garadget as a MQTT cover:

+
cover:
+  - platform: mqtt
+    name: "Garage Door"
+    command_topic: "garadget/device_name/command"
+    state_topic: "garadget/device_name/status"
+    payload_open: "open"
+    payload_close: "close"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.homematic/index.html b/components/cover.homematic/index.html new file mode 100644 index 0000000000..5684c4357d --- /dev/null +++ b/components/cover.homematic/index.html @@ -0,0 +1,251 @@ + + + + + + + + + Homematic Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic Cover +

+
+
+

The homematic cover platform lets you control Homematic covers such as rollershutters through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup Homematic.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.isy994/index.html b/components/cover.isy994/index.html new file mode 100644 index 0000000000..79b112465c --- /dev/null +++ b/components/cover.isy994/index.html @@ -0,0 +1,251 @@ + + + + + + + + + ISY994 Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Cover +

+
+
+

The isy994 platform allows you to get data from your ISY994 cover from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.knx/index.html b/components/cover.knx/index.html new file mode 100644 index 0000000000..8db6fe9d2a --- /dev/null +++ b/components/cover.knx/index.html @@ -0,0 +1,284 @@ + + + + + + + + + KNX Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Cover +

+
+
+

The knx cover platform is used as in interface with KNX covers.

+

The knx component must be configured correctly, see KNX Component.

+

To use your KNX covers in your installation, add the following to your configuration.yaml file:

+
# 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/components/cover.lutron/index.html b/components/cover.lutron/index.html new file mode 100644 index 0000000000..6d3b1b6d72 --- /dev/null +++ b/components/cover.lutron/index.html @@ -0,0 +1,238 @@ + + + + + + + + + Lutron Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Cover +

+
+
+

To get your Lutron roller shades working with Home Assistant, follow the instructions for the general Lutron component.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.lutron_caseta/index.html b/components/cover.lutron_caseta/index.html new file mode 100644 index 0000000000..3adb596e4d --- /dev/null +++ b/components/cover.lutron_caseta/index.html @@ -0,0 +1,247 @@ + + + + + + + + + Lutron Caseta Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Caseta Cover +

+
+
+

To get Lutron Caseta roller and honeycomb shades working with Home Assistant, first follow the instructions for the general Lutron Caseta component.

+

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.

+

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.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.mqtt/index.html b/components/cover.mqtt/index.html new file mode 100644 index 0000000000..650508fb85 --- /dev/null +++ b/components/cover.mqtt/index.html @@ -0,0 +1,462 @@ + + + + + + + + + MQTT Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Cover +

+
+
+

The mqtt cover platform allows you to control an MQTT cover (such as blinds, a rollershutter, or a garage door).

+

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.

+

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.

+

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:

+
# Example configuration.yaml entry
+cover:
+  - platform: mqtt
+    name: "MQTT Cover"
+    command_topic: "home-assistant/cover/set"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the cover.

+

Default value: MQTT Cover

+
+
command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to control the cover.

+
+
payload_open
+
+

(string)(Optional)The command payload that opens the cover.

+

Default value: OPEN

+
+
payload_close
+
+

(string)(Optional)The command payload that closes the cover.

+

Default value: CLOSE

+
+
payload_stop
+
+

(string)(Optional)The command payload that stops the cover.

+

Default value: STOP

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive cover state messages.

+
+
state_open
+
+

(string)(Optional)The payload that represents the open state.

+

Default value: open

+
+
state_closed
+
+

(string)(Optional)The payload that represents the closed state.

+

Default value: closed

+
+
availability_topic
+
+

(string)(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
+
+

(string)(Optional)The payload that represents the online state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the offline state.

+

Default value: offline

+
+
optimistic
+
+

(string)(Optional)Flag that defines if switch works in optimistic mode.

+

Default value: true if no state topic defined, else false.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level to be used when receiving and publishing messages.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)Defines if published messages should have the retain flag set.

+

Default value: false

+
+
value_template
+
+

(string)(Optional)Defines a template to extract a value from the payload.

+
+
set_position_topic
+
+

(string)(Optional)The MQTT topic to publish position commands to.

+
+
set_position_template
+
+

(string)(Optional) Defines a template to define the position to be sent to the set_position_topic topic. Incoming position value is available for use in the template ``. If no template is defined, the numeric position (0-100) will be written directly to the topic.

+
+
tilt_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to control the cover tilt.

+
+
tilt_status_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive tilt status update values.

+
+
tilt_min
+
+

(integer)(Optional)The minimum tilt value.

+

Default value: 0

+
+
tilt_max
+
+

(integer)(Optional)The maximum tilt value

+

Default value: 100

+
+
tilt_closed_value
+
+

(integer)(Optional)The value that will be sent on a close_cover_tilt command.

+

Default value: 0

+
+
tilt_opened_value
+
+

(integer)(Optional)The value that will be sent on an open_cover_tilt command.

+

Default value: 0

+
+
tilt_status_optimistic
+
+

(boolean)(Optional)Flag that determines if tilt works in optimistic mode.

+

Default value: true if tilt_status_topic is not defined, else false

+
+
tilt_invert_state
+
+

(boolean)(Optional)Flag that determines if open/close are flipped; higher values toward closed and lower values toward open.

+

Default value: false

+
+
+
+

Examples

+

In this section you will find some real life examples of how to use this platform.

+

Full configuration without tilt

+

The example below shows a full configuration for a cover without tilt.

+
# Example configuration.yml entry
+cover:
+  - platform: mqtt
+    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: "closed"
+    payload_available: "online"
+    payload_not_available: "offline"
+    optimistic: false
+    value_template: '{{ value.x }}'
+
+
+

Full configuration

+

The example below shows a full configuration for a cover.

+
# Example configuration.yml entry
+cover:
+  - platform: mqtt
+    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: "closed"
+    payload_available: "online"
+    payload_not_available: "offline"
+    optimistic: false
+    value_template: '{{ value.x }}'
+    tilt_command_topic: 'home-assistant/cover/tilt'
+    tilt_status_topic: 'home-assistant/cover/tilt-state'
+    tilt_min: 0
+    tilt_max: 180
+    tilt_closed_value: 70
+    tilt_opened_value: 180
+
+
+

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:

+
$  mosquitto_pub -h 127.0.0.1 -t home-assistant/cover/set -m "CLOSE"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.myq/index.html b/components/cover.myq/index.html new file mode 100644 index 0000000000..e0afe181d6 --- /dev/null +++ b/components/cover.myq/index.html @@ -0,0 +1,242 @@ + + + + + + + + + MyQ Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MyQ Cover +

+
+
+

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.

+

To use your MyQ cover in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+cover:
+  - platform: myq
+    username: email@email.com
+    password: password
+    type: chamberlain
+
+
+

Configuration variables:

+
    +
  • username (Required): Your MyQ account username.
  • +
  • password (Required): Your MyQ account password.
  • +
  • type (Required): Your device type/brand. Supported types are chamberlain, liftmaster, craftsman and merlin.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.mysensors/index.html b/components/cover.mysensors/index.html new file mode 100644 index 0000000000..9a9082db96 --- /dev/null +++ b/components/cover.mysensors/index.html @@ -0,0 +1,408 @@ + + + + + + + + + MySensors Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Cover +

+
+
+

Integrates MySensors covers into Home Assistant. See the main component for configuration instructions.

+

The following actuator types are supported:

+
MySensors version 1.4
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_COVERV_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT]
+
MySensors version 1.5 and higher
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_COVERV_UP, V_DOWN, V_STOP, [V_PERCENTAGE or V_STATUS]
+

All V_TYPES above are required. Use V_PERCENTAGE (or V_DIMMER) if you know the exact position of the cover in percent, use V_STATUS (or V_LIGHT) if you don’t.

+

For more information, visit the serial api of MySensors.

+

Example sketch

+
/*
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ */
+
+// Enable debug prints to serial monitor
+#define MY_DEBUG
+#define MY_RADIO_NRF24
+
+#include <MySensors.h>
+#define SN "Cover"
+#define SV "1.1"
+
+// Actuators for moving the cover up and down respectively.
+#define COVER_UP_ACTUATOR_PIN 2
+#define COVER_DOWN_ACTUATOR_PIN 3
+// Sensors for finding out when the cover has reached its up/down position.
+// These could be simple buttons or linear hall sensors.
+#define COVER_UP_SENSOR_PIN 4
+#define COVER_DOWN_SENSOR_PIN 5
+
+#define CHILD_ID 0
+
+// Internal representation of the cover state.
+enum State {
+  IDLE,
+  UP, // Window covering. Up.
+  DOWN, // Window covering. Down.
+};
+
+static int state = IDLE;
+static int status = 0; // 0=cover is down, 1=cover is up
+static bool initial_state_sent = false;
+MyMessage upMessage(CHILD_ID, V_UP);
+MyMessage downMessage(CHILD_ID, V_DOWN);
+MyMessage stopMessage(CHILD_ID, V_STOP);
+MyMessage statusMessage(CHILD_ID, V_STATUS);
+
+void sendState() {
+  // Send current state and status to gateway.
+  send(upMessage.set(state == UP));
+  send(downMessage.set(state == DOWN));
+  send(stopMessage.set(state == IDLE));
+  send(statusMessage.set(status));
+}
+
+void setup() {
+  pinMode(COVER_UP_SENSOR_PIN, INPUT);
+  pinMode(COVER_DOWN_SENSOR_PIN, INPUT);
+}
+
+void presentation() {
+  sendSketchInfo(SN, SV);
+
+  present(CHILD_ID, S_COVER);
+}
+
+void loop() {
+  if (!initial_state_sent) {
+    sendState();
+    initial_state_sent = true;
+  }
+
+  if (state == IDLE) {
+    digitalWrite(COVER_UP_ACTUATOR_PIN, LOW);
+    digitalWrite(COVER_DOWN_ACTUATOR_PIN, LOW);
+  }
+
+  if (state == UP && digitalRead(COVER_UP_SENSOR_PIN) == HIGH) {
+    Serial.println("Cover is up.");
+    // Update status and state; send it to the gateway.
+    status = 1;
+    state = IDLE;
+    sendState();
+    // Actuators will be disabled in next loop() iteration.
+  }
+
+  if (state == DOWN && digitalRead(COVER_DOWN_SENSOR_PIN) == HIGH) {
+    Serial.println("Cover is down.");
+    // Update status and state; send it to the gateway.
+    status = 0;
+    state = IDLE;
+    sendState();
+    // Actuators will be disabled in next loop() iteration.
+  }
+}
+
+void receive(const MyMessage &message) {
+  if (message.type == V_UP) {
+    // Set state to covering up and send it back to the gateway.
+    state = UP;
+    sendState();
+    Serial.println("Moving cover up.");
+
+    // Activate actuator until the sensor returns HIGH in loop().
+    digitalWrite(COVER_UP_ACTUATOR_PIN, HIGH);
+  }
+
+  if (message.type == V_DOWN) {
+    // Set state to covering up and send it back to the gateway.
+    state = DOWN;
+    sendState();
+    Serial.println("Moving cover down.");
+    // Activate actuator until the sensor returns HIGH in loop().
+    digitalWrite(COVER_DOWN_ACTUATOR_PIN, HIGH);
+  }
+
+  if (message.type == V_STOP) {
+    // Set state to idle and send it back to the gateway.
+    state = IDLE;
+    sendState();
+    Serial.println("Stopping cover.");
+
+    // Actuators will be switched off in loop().
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.opengarage/index.html b/components/cover.opengarage/index.html new file mode 100644 index 0000000000..944e91901f --- /dev/null +++ b/components/cover.opengarage/index.html @@ -0,0 +1,317 @@ + + + + + + + + + OpenGarage Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenGarage Cover +

+
+
+

The opengarage cover platform lets you control the open-source OpenGarage.io device through Home Assistant.

+

To enable OpenGarage Covers in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+cover:
+  platform: opengarage
+  covers:
+      garage:
+        host:  192.168.1.12
+        device_key: opendoor
+        name:  Left Garage Door
+      garage2:
+        host:  192.168.1.13
+        device_key: opendoor
+        name:  Right Garage Door
+
+
+

Configuration variables:

+
    +
  • covers array (Required): List of your doors. +
      +
    • identifier (Required): Name of the cover as slug. Multiple entries are possible. +
        +
      • host (Required): IP address of device.
      • +
      • port (Optional): HTTP Port. Default is 80.
      • +
      • device_key (Required): Access key to control device. Default is opendoor.
      • +
      • name (Optional): Name to use in the Frontend. If not provided, it will use name configured in device.
      • +
      +
    • +
    +
  • +
+

Example with more detail:

+

+ +

+
# Related configuration.yaml entry
+cover:
+  platform: opengarage
+  covers:
+      garage:        
+        host: 192.168.1.12
+        device_key: opendoor
+        name: honda
+
+sensor:
+  platform: template
+  sensors:
+    garage_status:
+      friendly_name: 'Honda Door Status'
+      value_template: '{% if states.cover.honda %}
+          {% if states.cover.honda.attributes["door_state"] == "open" %}
+            Open
+          {% elif states.cover.honda.attributes["door_state"] == "closed" %}
+            Closed
+          {% elif states.cover.honda.attributes["door_state"] == "opening" %}
+            Opening
+          {% elif states.cover.honda.attributes["door_state"] == "closing" %}
+            Closing
+          {% else %}
+            Unknown
+          {% endif %}
+          {% else %}
+          n/a
+          {% endif %}'
+    garage_car_present:
+      friendly_name: 'Honda in Garage'
+      value_template: '{% if states.cover.honda %}
+          {% if states.cover.honda.state == "open" %}
+            n/a
+          {% elif ((states.cover.honda.attributes["distance_sensor"] > 40) and (states.cover.honda.attributes["distance_sensor"] < 100)) %}
+            Yes
+          {% else %}
+            No
+          {% endif %}
+          {% else %}
+          n/a
+          {% endif %}'
+
+group:
+  garage:     
+    name: Garage
+    entities:
+      - cover.honda
+      - sensor.garage_status
+      - sensor.garage_car_present     
+
+customize:
+  cover.honda:
+    friendly_name: Honda
+    entity_picture: /local/honda.gif
+  sensor.garage_car_present:
+    icon: mdi:car
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.rflink/index.html b/components/cover.rflink/index.html new file mode 100644 index 0000000000..3d1c02dcf8 --- /dev/null +++ b/components/cover.rflink/index.html @@ -0,0 +1,311 @@ + + + + + + + + + RFLink Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFLink Cover +

+
+
+

The rflink cover platform supports devices that use RFLink gateway firmware, for example, the Nodo 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.

+

After configuring the RFLink hub covers will be automatically discovered and added. Except the Somfy RTS devices.

+

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:

+
# 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 a 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.
  • +
+

Device support

+

See device support

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.rfxtrx/index.html b/components/cover.rfxtrx/index.html new file mode 100644 index 0000000000..fd0bc3e416 --- /dev/null +++ b/components/cover.rfxtrx/index.html @@ -0,0 +1,285 @@ + + + + + + + + + RFXtrx Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFXtrx Cover +

+
+
+

The rfxtrx platform supports Siemens/LightwaveRF and RFY roller shutters that communicate in the frequency range of 433.92 MHz.

+

First you have to set up your rfxtrx hub.

+

Configuration

+
Siemens/LightwaveRF
+

The easiest way to find your roller shutters is to add this to your configuration.yaml:

+
cover:
+  - platform: rfxtrx
+    automatic_add: True
+
+
+

Launch your homeassistant and go the website (e.g http://localhost:8123). Push your remote and your device should be added.

+

Once added it will show an ID (e.g 0b11000102ef9f210010f70) and you can verify that it works from the frontend. Then you should update your configuration to:

+
cover:
+  - platform: rfxtrx
+    devices:
+      0b11000102ef9f210010f70:
+        name: device_name
+
+
+
RFY
+

The RFXtrx433e is required for RFY support, however it does not support receive for the RFY protocol - as such devices cannot be automatically added. Instead, configure the device in the rfxmngr tool. Make a note of the assigned ID and Unit Code and then add a device to the configuration with the following id 071a0000[id][unit_code]. Eg, if the id was 0a 00 01, and the unit code was 01 then the fully qualified id would be 071a00000a000101, if you set your id/code to single digit in the rfxmngr eg, id: 1 02 04 and unit code: 1 you will need to add 0 before, so 102031 becomes 071a000001020301.

+
Common
+

Example configuration:

+
# Example configuration.yaml entry
+cover:
+  - platform: rfxtrx
+    automatic_add: False
+    signal_repetitions: 2
+    devices:
+      0b1100ce3213c7f210010f70: # Siemens/LightwaveRF
+        name: Bedroom Shutter
+      071a00000a000101: # RFY
+        name: Bathroom Shutter
+
+
+

Configuration variables:

+
    +
  • devices (Required): A list of devices with their name to use in the frontend.
  • +
  • automatic_add (Optional): To enable the automatic addition of new covers (Siemens/LightwaveRF only).
  • +
  • signal_repetitions (Optional): Because the rxftrx 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 roller shutter to try to send each signal repeatedly.
  • +
  • fire_event (Optional): Fires an event even if the state is the same as before. Can be used for automations.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.rpi_gpio/index.html b/components/cover.rpi_gpio/index.html new file mode 100644 index 0000000000..ce5a9d4c0f --- /dev/null +++ b/components/cover.rpi_gpio/index.html @@ -0,0 +1,288 @@ + + + + + + + + + Raspberry Pi Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspberry Pi Cover +

+
+
+

The rpi_gpio cover platform allows you to use a Raspberry Pi to control your cover such as Garage doors.

+

It uses two pins on the Raspberry Pi.

+
    +
  • The state_pin will detect if the cover is closed, and
  • +
  • the relay_pin will trigger the cover to open or close.
  • +
+

Although you do not need Andrews Hilliday’s software controller when you run Home Assistant, he has written clear instructions on how to hook your garage door and sensors up to your Raspberry Pi, which can be found here.

+

To enable Raspberry Pi Covers in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+cover:
+  - platform: rpi_gpio
+    covers:
+      - relay_pin: 10
+        state_pin: 11
+
+
+

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.
    • +
    • name (Optional): Name to use in the frontend.
    • +
    +
  • +
+

Full example:

+
# Example configuration.yaml entry
+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
+      - relay_pin: 12
+        state_pin: 13
+        name: 'Right door'
+
+
+

Remote Raspberry Pi Cover

+

If you don’t have Home Assistant running on your Raspberry Pi and you want to use it as a remote cover instead, there is a project called GarageQTPi that will work remotely with the MQTT Cover Component. Follow the Github instructions to install and configure GarageQTPi and once configured follow the Home Assistant instructions to configure the MQTT Cover.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.scsgate/index.html b/components/cover.scsgate/index.html new file mode 100644 index 0000000000..5fd08f92ce --- /dev/null +++ b/components/cover.scsgate/index.html @@ -0,0 +1,264 @@ + + + + + + + + + SCSGate Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SCSGate Cover +

+
+
+

The SCSGate devices can control motorized covers connected to the BTicino MyHome system.

+

To enable SCSGate covers in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+cover:
+  - platform: scsgate
+    devices:
+      living_room:
+        name: Living Room
+        scs_id: XXXXX
+
+
+

Configuration variables:

+
    +
  • devices array (Required): A list of devices. +
      +
    • [slug] (Required): Slug of the device. +
        +
      • name (Required): Name to use in the frontend.
      • +
      • scs_id (Required): The ID of your SCSGate device.
      • +
      +
    • +
    +
  • +
+

+Known limitation: It is not possible to know the current state of the cover. +

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.tahoma/index.html b/components/cover.tahoma/index.html new file mode 100644 index 0000000000..0e54b81134 --- /dev/null +++ b/components/cover.tahoma/index.html @@ -0,0 +1,239 @@ + + + + + + + + + Tahoma Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tahoma Cover +

+
+
+

The tahoma cover platform lets you control covers added to your Tahoma Box in Home Assistant.

+

Covers will be added automatically. Please refer to the component configuration on how to setup Tahoma.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.tellstick/index.html b/components/cover.tellstick/index.html new file mode 100644 index 0000000000..7d7ca1afaa --- /dev/null +++ b/components/cover.tellstick/index.html @@ -0,0 +1,250 @@ + + + + + + + + + TellStick Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TellStick Cover +

+
+
+

This tellstick cover platform allows you to control your TellStick covers.

+

To use your TellStick device, you first have to set up your Tellstick hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+cover:
+  - platform: tellstick
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.template/index.html b/components/cover.template/index.html new file mode 100644 index 0000000000..7910953557 --- /dev/null +++ b/components/cover.template/index.html @@ -0,0 +1,519 @@ + + + + + + + + + Template Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Template Cover +

+
+
+

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:

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

Configuration Variables

+
+
covers
+
+

(map)(Required)List of your covers.

+
+
+
+
friendly_name
+
+

(string)(Optional)Name to use in the frontend.

+
+
entity_id
+
+

(string | list)(Optional)A list of entity IDs so the cover only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities.

+
+
value_template
+
+

(template)(Exclusive)Defines a template to get the state of the cover. Valid values are open/true or closed/false. value_template and position_template cannot be specified concurrently.

+
+
position_template
+
+

(template)(Exclusive)Defines a template to get the state of the cover. Legal values are numbers between 0 (closed) and 100 (open). value_template and position_template cannot be specified concurrently.

+
+
icon_template
+
+

(template)(Optional)Defines a template to specify which icon to use.

+
+
open_cover
+
+

(action)(Inclusive)Defines an action to run when the cover is opened. If open_cover is specified, close_cover must also be specified. At least one of open_cover and set_cover_position must be specified.

+
+
close_cover
+
+

(action)(Inclusive)Defines an action to run when the cover is closed.

+
+
stop_cover
+
+

(action)(Optional)Defines an action to run when the cover is stopped.

+
+
set_cover_position
+
+

(action)(Optional)Defines an action to run when the cover is set to a specific value (between 0 and 100).

+
+
set_cover_tilt_position
+
+

(action)(Optional)Defines an action to run when the cover tilt is set to a specific value (between 0 and 100).

+
+
optimistic
+
+

(bool)(Optional)Force cover position to use optimistic mode.

+

Default value: false

+
+
tilt_optimistic
+
+

(bool)(Optional)Force cover tilt position to use optimistic mode.

+

Default value: false

+
+
tilt_template
+
+

(template)(Optional)Defines a template to get the tilt state of the cover. Legal values are numbers between 0 (closed) and 100 (open).

+
+
+
+
+
+

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 +{{ states.switch.source.state == 'on' }} +with this equivalent that returns true/false and never gives an unknown +result: +{{ is_state('switch.source', 'on') }}

+

Optimistic Mode

+

In optimistic mode, the cover position state is maintained internally. This +mode is automatically enabled if neither value_template or +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 +attribute. There is an equivalent mode for tilt_position that is enabled +when tilt_template is not specified or when the +tilt_optimistic attribute is used.

+

Examples

+

In this section you will find some real life examples of how to use this cover.

+

Garage Door

+

This example converts a garage door with a controllable switch and position +sensor into a cover.

+
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 %}
+
+
+

Multiple Covers

+

This example allows you to control two or more covers at once.

+
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 %}
+
+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
+
+
+

Change The Icon

+

This example shows how to change the icon based on the cover state.

+
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 %}
+
+
+

Change The Entity Picture

+

This example shows how to change the entity picture based on the cover state.

+
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 %}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover.vera/index.html b/components/cover.vera/index.html new file mode 100644 index 0000000000..1e8816b8de --- /dev/null +++ b/components/cover.vera/index.html @@ -0,0 +1,258 @@ + + + + + + + + + Vera Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Cover +

+
+
+

The vera cover platform allows you to control your Vera covers from within Home Assistant.

+

They will be automatically discovered if the Vera component is loaded.

+

For more configuration information see the Vera component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.wink/index.html b/components/cover.wink/index.html new file mode 100644 index 0000000000..9f9902ca05 --- /dev/null +++ b/components/cover.wink/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Wink Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Cover +

+
+
+

Wink cover/garage door functionality depends on the product you’re using. With GoControl/Linear Home Assistant can open, close, and view state. Chamberlain is currently limited to view only. Meaning Home Assistant will only show the current state of the door and control has been disabled (by Chamberlain). If you have a Chamberlain garage door, and would like to control it via Home Assistant, please contact Chamberlain and request that they re-enabled third-party control.

+

The following quote is from Wink.

+
+

As part of our agreement with Chamberlain, third-party access to control Chamberlain garage doors has been restricted. Please contact Chamberlain directly to inquire about permissions.

+
+

The requirement is that you have setup Wink.

+

Supported cover devices

+
    +
  • Bali window treatments
  • +
  • Lutron shades
  • +
  • Pella motorized blinds and shades
  • +
  • GoControl garage door opener
  • +
  • Chamberlain (Limited functionality) (No Wink hub required)
  • +
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.xiaomi_aqara/index.html b/components/cover.xiaomi_aqara/index.html new file mode 100644 index 0000000000..650eb42edd --- /dev/null +++ b/components/cover.xiaomi_aqara/index.html @@ -0,0 +1,248 @@ + + + + + + + + + Xiaomi Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Cover +

+
+
+

The xiaomi aqara cover platform allows you to get data from your Xiaomi covers.

+

The requirement is that you have setup Xiaomi aqara.

+
+
+ +
+
+ + + + + + + diff --git a/components/cover.zwave/index.html b/components/cover.zwave/index.html new file mode 100644 index 0000000000..1715f4a03c --- /dev/null +++ b/components/cover.zwave/index.html @@ -0,0 +1,264 @@ + + + + + + + + + Z-Wave Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Cover +

+
+
+

Z-Wave garage doors, blinds, and roller shutters are supported as cover in Home Assistant.

+

To get your Z-Wave covers working with Home Assistant, follow the instructions for the general Z-Wave component.

+

If you discover that you need to invert the operation of open/close for a particular device, you may change this behavior in your Z-Wave section of your configuration.yaml file as follows:

+
zwave:
+  device_config:
+    cover.my_cover:
+      invert_openclose_buttons: true
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/cover/index.html b/components/cover/index.html new file mode 100644 index 0000000000..c530bae7b3 --- /dev/null +++ b/components/cover/index.html @@ -0,0 +1,321 @@ + + + + + + + + + Covers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Covers +

+
+
+

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. Besides the basic ones like friendly_name or hidden, the following attributes are supported for covers:

+ + + + + + + + + + + + + + + + + + + + +
AttributeDefaultDescription
device_class none Generic cover device
window Window controller
garage Garage door controller
assumed_statefalseIf set to true, cover buttons will always be enabled
+

Services

+

Cover control services

+

Available services: cover.open_cover, cover.close_cover, cover.stop_cover, cover.open_cover_tilt, cover.close_cover_tilt, cover.stop_cover_tilt

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of covers. Else targets all.
+

Service cover.set_cover_position

+

Set cover position of one or multiple covers.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of covers. Else targets all.
positionnoInteger between 0 and 100.
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: cover.set_cover_position
+      data:
+        entity_id: cover.demo
+        position: 50
+
+
+

Service cover.set_cover_tilt_position

+

Set cover tilt position of one or multiple covers.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_id’s of covers. Else targets all.
positionnoInteger between 0 and 100.
+

Automation example

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    - service: cover.set_cover_tilt_position
+      data:
+        entity_id: cover.demo
+        position: 50
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/daikin/index.html b/components/daikin/index.html new file mode 100644 index 0000000000..56f98cf729 --- /dev/null +++ b/components/daikin/index.html @@ -0,0 +1,499 @@ + + + + + + + + + Daikin AC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Daikin AC +

+
+
+

The daikin component integrates Daikin air conditioning systems into Home Assistant.

+

To automatically add all your Daikin devices (ACs and associated sensors) into your Home Assistant installation, add the following to your ‘configuration.yaml’ file:

+

+Please note, the Daikin platform integrates ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45) into Home Assistant. +

+

To automatically add all your Daikin devices (ACs and associated sensors) into your Home Assistant installation, add the following to your configuration.yaml file:

+
# Full manual example configuration.yaml entry
+daikin:
+  hosts:
+    - 192.168.4.161
+  monitored_conditions:
+    - inside_temperature
+    - outside_temperature
+
+
+
+

Configuration Variables

+
+
hosts
+
+

(array)(Optional)List of IP addresses or hostnames.

+

Default value: All discovered hosts

+
+
monitored_conditions
+
+

(list)(Optional)List of items you want to monitor for each device.

+

Default value: All conditions

+
+
+
+
inside_temperature
+
+

The current temperature measured inside the house.

+
+
outside_temperature
+
+

The current temperature measured outside the house.

+
+
+
+
+
+

+Please note that some AC devices may report outside temperature only when they are turned on. +

+
+
+ +
+
+ + + + + + + diff --git a/components/datadog/index.html b/components/datadog/index.html new file mode 100644 index 0000000000..fda716af61 --- /dev/null +++ b/components/datadog/index.html @@ -0,0 +1,212 @@ + + + + + + + + + Datadog - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Datadog +

+
+
+

The datadog component sends all state changes to Datadog using a Datadog Agent.

+

Datadog allows you to analyze, monitor, cross-reference and alert upon your data. You can use it to detect statistical anomalies, see graphs across multiple sources in real-time, send critical alerts to Slack, etc.

+

+ +

+

The component also sends events from the logbook into Datadog, allowing you to correlate these events with your data.

+

+ +

+

To use the datadog component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+datadog:
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address or hostname of your Datadog host, e.g. 192.168.1.23. Defaults to localhost.
  • +
  • port (Optional): Port to use. Defaults to 8125.
  • +
  • prefix (Optional): Prefix to use. Defaults to hass.
  • +
  • rate (Optional): The sample rate of UDP packets sent to Datadog. Defaults to 1.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/deconz/index.html b/components/deconz/index.html new file mode 100644 index 0000000000..3b9382c2a4 --- /dev/null +++ b/components/deconz/index.html @@ -0,0 +1,620 @@ + + + + + + + + + deCONZ - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ deCONZ +

+
+
+

deCONZ by Dresden Elektronik is a software that communicates with Conbee/Raspbee Zigbee gateways and exposes Zigbee devices that are connected to the gateway.

+

deCONZ REST API.

+

Home Assistant will automatically discover deCONZ presence on your network, if discovery: is present in your configuration.yaml file.

+

If you don’t have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to Menu->Settings->Unlock Gateway in deCONZ and then use the deCONZ configurator in Home Assistant GUI to create an API key. When you’ve generated the API key from Home Assistant, the API key will be stored in deconz.conf inside the home-assistant folder.

+

You can add the following to your configuration.yaml file if you are not using the discovery: component:

+
# Example configuration.yaml entry
+deconz:
+  host: IP ADDRESS
+
+
+

Supported Device types

+ +
+

Configuration Variables

+
+
host
+
+

(string)(Optional)The IP address of your deCONZ web server.

+
+
api_key
+
+

(string)(Optional)The API key to access your deCONZ web server.

+
+
port
+
+

(int)(Optional)Configure port deCONZ web server is accessible from.

+

Default value: 80

+
+
+
+

A full configuration could look like this:

+
# Example configuration.yaml entry
+deconz:
+  host: 127.0.0.1
+  api_key: 0123456789
+  port: 80
+
+
+

Device services

+

Available services: configure.

+

Service deconz/configure

+

Set attribute of device in Deconz using Rest API.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
fieldNoString representing a specific device in deCONZ.
entityNoString representing a specific HASS entity of a device in deCONZ.
dataNoData is a JSON object with what data you want to alter.
+

Field and entity are exclusive, i.e you can only use one in a request.

+

{ “field”: “/lights/1”, “data”: {“name”: “light2”} }

+

{ “entity”: “light.light1”, “data”: {“name”: “light2”} }

+

{ “field”: “/config”, “data”: {“permitjoin”: 60} }

+

Remote control devices

+

Remote controls (ZHASwitch category) will be not be exposed as a regular entity, but as events named ‘deconz_event’ with a payload of ‘id’ and ‘event’. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level.

+

Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Switch codeDescription
1XXXButton #1 up to #8
XXX1Button hold
XXX2Button short release
XXX3Button long release
+

Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up button.

+

For the IKEA Tradfri remote, 1 is the middle button, 2 is up, 3 is down, 4 is left, and 5 is right.

+

Examples

+

Step up and step down input number with wireless dimmer

+
automation:
+  - alias: 'Toggle lamp from dimmer'
+    initial_state: 'on'
+    trigger:
+      platform: event
+      event_type: deconz_event
+      event_data:
+        id: remote_control_1
+        event: 1002
+    action:
+      service: light.toggle
+      entity_id: light.lamp
+
+  - alias: 'Increase brightness of lamp from dimmer'
+    initial_state: 'on'
+    trigger:
+      platform: event
+      event_type: deconz_event
+      event_data:
+        id: remote_control_1
+        event: 2002
+    action:
+      - service: light.turn_on
+        data_template:
+          entity_id: light.lamp
+          brightness: >
+            {% set bri = states.light.lamp.attributes.brightness | int %}
+            {{ [bri+30, 249] | min }}
+
+  - alias: 'Decrease brightness of lamp from dimmer'
+    initial_state: 'on'
+    trigger:
+      platform: event
+      event_type: deconz_event
+      event_data:
+        id: remote_control_1
+        event: 3002
+    action:
+      - service: light.turn_on
+        data_template:
+          entity_id: light.lamp
+          brightness: >
+            {% set bri = states.light.lamp.attributes.brightness | int %}
+            {{ [bri-30, 0] | max }}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/demo/index.html b/components/demo/index.html new file mode 100644 index 0000000000..61234e3a77 --- /dev/null +++ b/components/demo/index.html @@ -0,0 +1,242 @@ + + + + + + + + + Demo platforms - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Demo platforms +

+
+
+

The demo platform allows you to use components which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online Home Assistant demo or hass --demo-mode but combined with your own real/functional platforms.

+

Available demo platforms:

+ +

To integrate a demo platform in Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+[component]:
+  - platform: demo
+
+
+

Configuration variables:

+
    +
  • [component] (Required): The name of the component as stated in the listing above the configuration example.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/device_sun_light_trigger/index.html b/components/device_sun_light_trigger/index.html new file mode 100644 index 0000000000..3e7598ffb4 --- /dev/null +++ b/components/device_sun_light_trigger/index.html @@ -0,0 +1,231 @@ + + + + + + + + + Presence based lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Presence based lights +

+
+
+

Home Assistant has a built-in component called device_sun_light_trigger to help you automate your lights. The component will:

+
    +
  • Fade in the lights when the sun is setting and there are people home
  • +
  • Turn on the lights when people get home after the sun has set
  • +
  • Turn off the lights when all people leave the house
  • +
+

This component requires the components sun, device_tracker and light to be enabled.

+

To enable this component, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_sun_light_trigger:
+
+
+

Configuration variables:

+
    +
  • light_group (Optional): Specify a specific light/group of lights that has to be turned on.
  • +
  • light_profile (Optional): Specify which light profile to use when turning lights on.
  • +
  • device_group (Optional): Specify which group of devices to track.
  • +
  • disable_turn_off (Optional): Disable lights being turned off when everybody leaves the house.
  • +
+

A full configuration example could look like this:

+
# Example configuration.yaml entry
+device_sun_light_trigger:
+  light_group: group.living_room
+  light_profile: relax
+  device_group: group.my_devices
+  disable_turn_off: 1
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.actiontec/index.html b/components/device_tracker.actiontec/index.html new file mode 100644 index 0000000000..6c4e79495d --- /dev/null +++ b/components/device_tracker.actiontec/index.html @@ -0,0 +1,328 @@ + + + + + + + + + Actiontec - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Actiontec +

+
+
+

This platform allows you to detect presence by looking at connected devices to an Actiontec device.

+

Supported devices (tested):

+
    +
  • MI424WR (Verizon FIOS)
  • +
+

+This device tracker needs telnet to be enabled on the router. +

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: actiontec
+    host: YOUR_ROUTER_IP
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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 admin.
  • +
  • password (Required): The password for your given admin account.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.aruba/index.html b/components/device_tracker.aruba/index.html new file mode 100644 index 0000000000..6fc63d6147 --- /dev/null +++ b/components/device_tracker.aruba/index.html @@ -0,0 +1,331 @@ + + + + + + + + + Aruba - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Aruba +

+
+
+

This platform allows you to detect presence by looking at connected devices to an Aruba Instant device.

+

Supported devices (tested):

+
    +
  • ARUBA AP-105
  • +
+

+This device tracker needs telnet to be enabled on the router. +

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: aruba
+    host: YOUR_ROUTER_IP
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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.
  • +
  • password (Required): The password for your given admin account.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.asuswrt/index.html b/components/device_tracker.asuswrt/index.html new file mode 100644 index 0000000000..32418d3196 --- /dev/null +++ b/components/device_tracker.asuswrt/index.html @@ -0,0 +1,333 @@ + + + + + + + + + ASUSWRT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ASUSWRT +

+
+
+

The asuswrt platform offers presence detection by looking at connected devices to a ASUSWRT based router.

+

+This platform is NOT available for Microsoft Windows installations. +

+

To use an ASUSWRT router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: asuswrt
+    host: YOUR_ROUTER_IP
+    username: YOUR_ADMIN_USERNAME
+
+
+

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 admin.
  • +
  • password (Optional): The password for your given admin account (use this if no SSH key is given).
  • +
  • protocol (Optional): The protocol (ssh or telnet) to use. Defaults to ssh.
  • +
  • port (Optional): SSH port to use. Defaults to 22.
  • +
  • mode (Optional): The operating mode of the router (router or ap). Defaults to router.
  • +
  • ssh_key (Optional): The path to your SSH private key file associated with your given admin account (instead of password).
  • +
+

+You need to enable telnet on your router if you choose to use protocol: telnet. +

+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.automatic/index.html b/components/device_tracker.automatic/index.html new file mode 100644 index 0000000000..49a7a29c76 --- /dev/null +++ b/components/device_tracker.automatic/index.html @@ -0,0 +1,346 @@ + + + + + + + + + Automatic - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Automatic +

+
+
+

The automatic platform offers presence detection by retrieving your car’s information from the Automatic cloud service.

+

To use Automatic with Home Assistant, first you must create a free development account. 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 <home-assistant-url>/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 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:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: automatic
+    client_id: 1234567
+    secret: 0987654321
+    devices:
+      - 2007 Honda Element
+      - 2004 Subaru Impreza
+
+
+

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/).
  • +
  • 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.

+
# Example automatic event automation
+automation:
+  - trigger: 
+      - platform: event
+        event_type: automatic_update
+        event_data:
+          type: "ignition:on"
+          vehicle:
+            id: "C_1234567890abcdefc"
+    action:
+      - service: light.turn_off
+
+
+

See the device tracker component page for instructions how to configure the cars to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.bbox/index.html b/components/device_tracker.bbox/index.html new file mode 100644 index 0000000000..87102d0e9e --- /dev/null +++ b/components/device_tracker.bbox/index.html @@ -0,0 +1,332 @@ + + + + + + + + + Bbox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bbox +

+
+
+

The bbox platform offers presence detection by looking at connected devices to a Bbox based router from Bouygues, which is one of the main Internet provider in France.

+

+Bbox is a generic name for different hardware routers. The platform has only been tested on a Sagem F@st 5330b because it’s the only model the developer owns. +

+

To use an Bbox router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: bbox
+
+
+

+For now and due to third party limitation, the Bbox must be on the same local network as the Home Assistant installation. And with the default IP configuration (IP of the router must be 192.168.1.254). +

+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.bluetooth_le_tracker/index.html b/components/device_tracker.bluetooth_le_tracker/index.html new file mode 100644 index 0000000000..c329fc8862 --- /dev/null +++ b/components/device_tracker.bluetooth_le_tracker/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Bluetooth LE Tracker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bluetooth LE Tracker +

+
+
+

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

+

Devices discovered are stored with ‘BLE_’ as the prefix for device mac addresses in known_devices.yaml.

+

This platform requires pybluez to be installed. On Debian based installs, run

+
$ sudo apt install bluetooth libbluetooth-dev pkg-config libboost-python-dev libboost-thread-dev libglib2.0-dev python-dev
+
+
+

Before you get started with this platform, please note that:

+
    +
  • This platform is incompatible with Windows
  • +
  • This platform requires access to the bluetooth stack, see Rootless Setup section for further information
  • +
+

To use the Bluetooth tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: bluetooth_le_tracker
+
+
+

Configuration variables:

+
    +
  • device_id (Optional): The device ID for the Bluetooth device to be used for tracking. Defaults to hci0.
  • +
  • track_new_devices (Optional): If new discovered devices are tracked by default. Defaults to True.
  • +
  • scan_duration (Optional): How long should the scanner be looking for BLE devices. Defaults to 10 seconds.
  • +
  • interval_seconds (Optional): Seconds between each scan for new devices. Defaults to 12 seconds.
  • +
+

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.

+

Rootless Setup

+

Normally accessing the Bluetooth stack is reserved for root, but running programs that are networked as root is a bad security wise. To allow non-root access to the Bluetooth stack we can give Python 3 the missing capabilities to access the Bluetooth stack. Quite like setting the setuid bit (see Stack Exchange for more information).

+
$ sudo apt-get install libcap2-bin
+$ sudo setcap 'cap_net_raw,cap_net_admin+eip' `readlink -f \`which python3\``
+
+
+

If you have installed Home Assistant with AIO, you need to do the following command, this will grant access to Home Assistant to run the required command.

+
$ sudo setcap cap_net_raw,cap_net_admin+eip /srv/homeassistant/homeassistant_venv/bin/python3
+
+
+

A restart of Home Assistant is required.

+

For additional configuration variables check the Device tracker page.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.bluetooth_tracker/index.html b/components/device_tracker.bluetooth_tracker/index.html new file mode 100644 index 0000000000..9c5e172da4 --- /dev/null +++ b/components/device_tracker.bluetooth_tracker/index.html @@ -0,0 +1,322 @@ + + + + + + + + + Bluetooth Tracker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bluetooth Tracker +

+
+
+

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 only supports Bluetooth on Raspberry Pi 3 via the Bluetooth BCM43xx (/addons/bluetooth_bcm43xx/) addon. Hass.io doesn’t support external Bluetooth dongles. +

+

To use the Bluetooth tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+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 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.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.bmw_connected_drive/index.html b/components/device_tracker.bmw_connected_drive/index.html new file mode 100644 index 0000000000..8ed92cc6c2 --- /dev/null +++ b/components/device_tracker.bmw_connected_drive/index.html @@ -0,0 +1,321 @@ + + + + + + + + + BMW connected drive - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BMW connected drive +

+
+
+

The bmw_connected_drive platform allows you to import data on your BMW into Home Assistant.

+

The device tracker platform will be automatically configured if the bmw_connected_drive component is configured.

+

For more configuration information see the bmw_connected_drive component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.bt_home_hub_5/index.html b/components/device_tracker.bt_home_hub_5/index.html new file mode 100644 index 0000000000..6e35086746 --- /dev/null +++ b/components/device_tracker.bt_home_hub_5/index.html @@ -0,0 +1,317 @@ + + + + + + + + + BT Home Hub 5 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BT Home Hub 5 +

+
+
+

This platform offers presence detection by looking at connected devices to a BT Home Hub 5 based router.

+

To use a BT Home Hub 5 router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: bt_home_hub_5
+    host: 192.168.1.254
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your router, e.g. 192.168.1.254.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.cisco_ios/index.html b/components/device_tracker.cisco_ios/index.html new file mode 100644 index 0000000000..f91b168523 --- /dev/null +++ b/components/device_tracker.cisco_ios/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Cisco IOS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Cisco IOS +

+
+
+

This is a presence detection scanner for Cisco IOS devices.

+

+This device tracker needs SSH to be enabled on the router. +

+

Before using this scanner it is recommended that you lower the ARP cache timeout on your router, as Cisco IOS normally comes with a 4 hour default ARP cache timeout.

+

For example, the following commands will lower the timeout to 2 minutes on Vlan1:

+
# 1. use this command to see what Vlan your devices are on
+show ip arp
+
+# 2. Go into configure mode
+conf t
+
+# 3. Use the Vlan name as you see it from step 1 above
+interface Vlan1
+
+# 4. Set a new arp cache timeout
+arp timeout 120
+
+# 5. Exit
+# Press <ctrl+c> to exit configure mode
+
+# 6. Don't forget to save the new config, so that it will survive a reboot
+copy running-config startup-config
+
+
+

+If you have a very large number of devices on your VLan (+1000), then you may want to adjust the ARP cache timeout to suit your needs. See this discussion to learn more. +

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: cisco_ios
+    host: ROUTER_IP_ADDRESS
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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.
  • +
  • password (Required): The password for your given admin account.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.ddwrt/index.html b/components/device_tracker.ddwrt/index.html new file mode 100644 index 0000000000..a8cc21610c --- /dev/null +++ b/components/device_tracker.ddwrt/index.html @@ -0,0 +1,325 @@ + + + + + + + + + DD-WRT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DD-WRT +

+
+
+

This platform offers presence detection by looking at connected devices to a DD-WRT based router.

+

To use a DD-WRT router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: ddwrt
+    host: ROUTER_IP_ADDRESS
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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.
  • +
  • password (Required): The password for your given admin account.
  • +
+

By default Home Assistant pulls information about connected devices from DD-WRT every 5 seconds. +See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.fritz/index.html b/components/device_tracker.fritz/index.html new file mode 100644 index 0000000000..fc1c724243 --- /dev/null +++ b/components/device_tracker.fritz/index.html @@ -0,0 +1,327 @@ + + + + + + + + + FRITZ!Box - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FRITZ!Box +

+
+
+

The fritz platform offers presence detection by looking at connected devices to a AVM Fritz!Box based router.

+

+It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml +If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml; be patient this will take a while.

+

To use an Fritz!Box router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: fritz
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1.
  • +
  • username (Optional: The username of an user with administrative privileges, usually admin.
  • +
  • password (Optional): The password for your given admin account.
  • +
+

+It seems that it is not necessary to use it in current generation Fritz!Box routers because the necessary data can be retrieved anonymously. +

+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.geofency/index.html b/components/device_tracker.geofency/index.html new file mode 100644 index 0000000000..d2a0468816 --- /dev/null +++ b/components/device_tracker.geofency/index.html @@ -0,0 +1,331 @@ + + + + + + + + + Geofency - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Geofency +

+
+
+

This platform allows you to detect presence using Geofency. Geofency is a paid app 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:

+
# 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:

+
# 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://<ha_server>/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=<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_<name from Geofency>, 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, otherwise, it will be set to the name of the zone.

+

To make Geofency work better with the 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.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.gpslogger/index.html b/components/device_tracker.gpslogger/index.html new file mode 100644 index 0000000000..359c3eaba8 --- /dev/null +++ b/components/device_tracker.gpslogger/index.html @@ -0,0 +1,362 @@ + + + + + + + + + GPSLogger - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ GPSLogger +

+
+
+

The gpslogger device tracker platform allows you to detect presence using GPSLogger. GPSLogger is an open source app for Android 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:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: gpslogger
+    password: !secret gpslogger_password
+
+
+
+

Configuration Variables

+
+
password
+
+

(string)(Optional)Separate password for GPS Logger endpoint. If provided using regular API password to contact endpoint will result in 401 response.

+
+
+
+

Setup on your smartphone

+

Install GPSLogger for Android on your device.

+

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

+
https://[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
+
+
+

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.

+
    +
  • It’s HIGHLY recommended to use SSL/TLS.
  • +
  • Use the domain that Home Assistant is available on the internet or the public IP address. This can be a local IP address if you are using an always on VPN from your mobile device to your home network.
  • +
  • Only remove [Port] if your Home Assistant instance is using port 443. Otherwise set it to the port you’re using.
  • +
  • For Home Assistant only the above URL, as written, will work - do not add or remove any parameters.
  • +
  • Make sure to include your API password if you have configured a password. Add &api_password=[Your password] to the end of the URL.
  • +
  • You can change the name of your device name by replacing &device=%SER with &device=[Devicename].
  • +
+

If your battery drains fast then you can tune the performance of GPSLogger under Performance -> Location providers

+

+ + Performance +

+

A request can be forced from the app to test if everything is working fine. A successful request will update the known_devices.yaml file with the device’s serial number.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.hitron_coda/index.html b/components/device_tracker.hitron_coda/index.html new file mode 100644 index 0000000000..9fd122d7e6 --- /dev/null +++ b/components/device_tracker.hitron_coda/index.html @@ -0,0 +1,336 @@ + + + + + + + + + Hitron CODA Routers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hitron CODA Routers +

+
+
+

This component offers presence detection by examining devices connected to a Rogers Hitron CODA +Router.

+

To use a Hitron router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: hitron_coda
+    host: !secret router_ip
+    username: !secret router_username
+    password: !secret router_password
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of your router, e.g., 192.168.0.1.

+
+
username
+
+

(string)(Required)The username to login into the router (user should have read access to the web interface of the router). Usually “cusadmin”.

+
+
password
+
+

(string)(Required)The password for the specified username. Usually your WiFi password.

+
+
+
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.huawei_router/index.html b/components/device_tracker.huawei_router/index.html new file mode 100644 index 0000000000..648530736b --- /dev/null +++ b/components/device_tracker.huawei_router/index.html @@ -0,0 +1,325 @@ + + + + + + + + + Huawei Router - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Huawei Router +

+
+
+

This component offers presence detection by looking at connected devices to a Huawei router. +Currently, this was only tested with the Huawei HG8247H and HG8247Q Smart Router (used by Vodafone Portugal).

+

To use a Huawei router in your installation, add the following to your configuration.yaml file:

+
# 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 for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.icloud/index.html b/components/device_tracker.icloud/index.html new file mode 100644 index 0000000000..768186ac98 --- /dev/null +++ b/components/device_tracker.icloud/index.html @@ -0,0 +1,340 @@ + + + + + + + + + iCloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ iCloud +

+
+
+

The icloud platform allows you to detect presence using the iCloud service. iCloud allows users to track their location on iOS devices.

+

It does require that your device is registered with “Find My iPhone”.

+

To integrate iCloud in Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: icloud
+    username: USERNAME
+    password: PASSWORD
+    account_name: accountname
+
+
+

Configuration variables:

+
    +
  • username (Required): The username for the iCloud account.
  • +
  • password (Required): The password for your given username.
  • +
  • account_name (Optional): The friendly name for the account_name. If this isn’t given, it will use the account_name of the username (so the part before the @ in the email address).
  • +
+

+This may cause battery drainage as it wakes up your device to get the current location. +

+

+You may receive an email from Apple stating that someone has logged into your account. +

+

To disable the drainage of the battery, a dynamic interval is being used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device.

+

2 Steps Authentication is enabled for iCloud. The component will ask which device you want to use as Trusted Device and then you can enter the code that has been sent to that device. The duration of this authentication is determined by Apple, but is now at 2 months, so you will only need to verify your account each two months, even after restarting Home Assistant. +2 Factor Authentication is the improved version of 2 Steps Authentication, this is still not supported by the pyicloud library. Therefore it’s not possible to use it with the device_tracker yet.

+

4 services are available for this component:

+
    +
  • icloud_update: This service can be used to ask for an update of a certain iDevice. The account_name and device_name are optional.
  • +
  • icloud_lost_iphone: This service will play the Lost iPhone sound on a certain iDevice. The account_name and device_name are optional.
  • +
  • icloud_set_interval: This service will change the dynamic interval of an iDevice. The account_name and device_name are optional. If interval is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If interval isn’t used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level.
  • +
  • icloud_reset_account: This service can be used to reset an iCloud account. This is helpful when not all devices are being found by the component or if you have added a new iDevice to your account. The account_name is optional.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.keenetic_ndms2/index.html b/components/device_tracker.keenetic_ndms2/index.html new file mode 100644 index 0000000000..43ebc02d93 --- /dev/null +++ b/components/device_tracker.keenetic_ndms2/index.html @@ -0,0 +1,326 @@ + + + + + + + + + Keenetic NDMS2 Routers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Keenetic NDMS2 Routers +

+
+
+

This component offers presence detection by examining devices connected to a Keenetic +Router running NDMS2 firmware.

+

To use a Keenetic router in your installation, add the following to your configuration.yaml file:

+
# 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 for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.linksys_ap/index.html b/components/device_tracker.linksys_ap/index.html new file mode 100644 index 0000000000..d4b76f222b --- /dev/null +++ b/components/device_tracker.linksys_ap/index.html @@ -0,0 +1,338 @@ + + + + + + + + + Linksys Access Points - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Linksys Access Points +

+
+
+

The linksys_ap platform offers presence detection by looking at connected devices to a Linksys based access point. +It was tested with a LAPAC1750 AC1750 Dual Band Access Point.

+

To use a Linksys Access Point in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: linksys_ap
+    host: 192.168.1.1
+    username: admin
+    password: password
+
+
+

Configuration variables:

+
    +
  • host (Required): The hostname or IP address of your access point, eg. 192.168.1.1.
  • +
  • username (Required: The username of an user with administrative privileges (read-only is sufficient).
  • +
  • password (Required): The password for your given admin account.
  • +
  • verify_ssl (Optional): Verify SSL certificate for https request. Defaults to true.
  • +
+

Example for all configuration options:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: linksys_ap
+    host: 192.168.1.1
+    username: admin
+    password: password
+    verify_ssl: true
+    scan_interval: 6
+    consider_home: 12
+
+
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.linksys_smart/index.html b/components/device_tracker.linksys_smart/index.html new file mode 100644 index 0000000000..8a0825cf2e --- /dev/null +++ b/components/device_tracker.linksys_smart/index.html @@ -0,0 +1,326 @@ + + + + + + + + + Linksys Smart Wifi Router - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Linksys Smart Wifi Router +

+
+
+

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:

+
# 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 for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.locative/index.html b/components/device_tracker.locative/index.html new file mode 100644 index 0000000000..d30ac1c934 --- /dev/null +++ b/components/device_tracker.locative/index.html @@ -0,0 +1,325 @@ + + + + + + + + + Locative - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Locative +

+
+
+

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

+

This platform allows you to detect presence using Locative. Locative is an open source app for iOS and 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:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: locative
+
+
+

Install on your smartphone:

+ +

To configure Locative, you must set up the app to send a GET request to your Home Assistant server at http://<ha_server>/api/locative. Make sure to include the API password if you have configured a password in Home Assistant (add ?api_password=<password> to the end of the URL). When you enter or exit a geofence, Locative will send a GET request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your known_devices.yaml file for a new device that Locative will have created on it’s first GET. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated.

+

+ +

+

When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to “not home”.

+

To use Locative in combination with another device tracker, such as nmap or Netgear, fill in the mac field to the Locative entry in known_devices.yaml with the MAC address of the device you want to track. The state of the device will be determined by the source that reported last.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.luci/index.html b/components/device_tracker.luci/index.html new file mode 100644 index 0000000000..6922592425 --- /dev/null +++ b/components/device_tracker.luci/index.html @@ -0,0 +1,335 @@ + + + + + + + + + OpenWRT (luci) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenWRT (luci) +

+
+
+

This is one of the two ways we support OpenWRT. If you encounter problems, try ubus.

+

This is a presence detection scanner for OpenWRT using luci.

+

+This component requires a workaround when using luci with HTTPS and a self-signed certificate. +

+

Before this scanner can be used you have to install the luci RPC package on OpenWRT:

+
# opkg install luci-mod-rpc
+
+
+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: luci
+    host: ROUTER_IP_ADDRESS
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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.
  • +
  • password (Required): The password for your given admin account.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+

+Some installations have a small bug. The timeout for luci RPC calls is not set and this makes the call fail. +

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.meraki/index.html b/components/device_tracker.meraki/index.html new file mode 100644 index 0000000000..500b8c3716 --- /dev/null +++ b/components/device_tracker.meraki/index.html @@ -0,0 +1,330 @@ + + + + + + + + + Meraki - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Meraki +

+
+
+

Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network. +Follow instructions here how to enable Location Analytics.

+

After you configure access to the Meraki CMX API, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: meraki
+    secret: your_secret
+    validator: meraki_validator
+
+
+
+

Configuration Variables

+
+
secret
+
+

(string)(Required)Secret code added in Meraki

+
+
validator
+
+

(string)(Required)Validation string from Meraki

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.mercedesme/index.html b/components/device_tracker.mercedesme/index.html new file mode 100644 index 0000000000..f5bc6a3582 --- /dev/null +++ b/components/device_tracker.mercedesme/index.html @@ -0,0 +1,324 @@ + + + + + + + + + Mercedes me - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mercedes me +

+
+
+

The Mercedes me platform allows you to get data about the location of your Mercedes me connected car car within Home Assistant.

+

The device tracker platform will be automatically configured if Mercedes me component is configured.

+

For more configuration information see the Mercedes me component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.mikrotik/index.html b/components/device_tracker.mikrotik/index.html new file mode 100644 index 0000000000..897d42243d --- /dev/null +++ b/components/device_tracker.mikrotik/index.html @@ -0,0 +1,334 @@ + + + + + + + + + Mikrotik - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mikrotik +

+
+
+

The mikrotik platform offers presence detection by looking at connected devices to a Mikrotik Routerboard based router.

+

You need to enable the RouterOS API to use this platform.

+

Terminal:

+
/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:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: mikrotik
+    host: IP_ADDRESS
+    username: ADMIN_USERNAME
+    password: ADMIN_PASSWORD
+
+
+

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. Defaults to 8728.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.mqtt/index.html b/components/device_tracker.mqtt/index.html new file mode 100644 index 0000000000..0cec564b2a --- /dev/null +++ b/components/device_tracker.mqtt/index.html @@ -0,0 +1,373 @@ + + + + + + + + + MQTT Device Tracker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Device Tracker +

+
+
+

The mqtt device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: mqtt
+    devices:
+      paulus_oneplus: 'location/paulus'
+      annetherese_n4: 'location/annetherese'
+
+
+

Configuration variables:

+
    +
  • devices (Required): List of devices with their topic.
  • +
  • qos (Optional): The QoS level of the topic.
  • +
+

Example JSON you can publish to the topic (e.g. via mqtt.publish service):

+
{
+  "topic": "/location/paulus",
+  "payload": "home"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.mqtt_json/index.html b/components/device_tracker.mqtt_json/index.html new file mode 100644 index 0000000000..aaf7617da0 --- /dev/null +++ b/components/device_tracker.mqtt_json/index.html @@ -0,0 +1,336 @@ + + + + + + + + + JSON MQTT Device Tracker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ JSON MQTT Device Tracker +

+
+
+

The mqtt_json device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: mqtt_json
+    devices:
+      paulus_oneplus: location/paulus
+      annetherese_n4: location/annetherese
+
+
+

Configuration variables:

+
    +
  • devices (Required): List of devices with their topic.
  • +
  • qos (Optional): The QoS level of the topic.
  • +
+

This platform receives JSON formatted payloads containing GPS information, for example:

+
{"longitude": 1.0,"gps_accuracy": 60,"latitude": 2.0,"battery_level": 99.9}
+
+
+

Where longitude is the longitude, latitude is the latitude, gps_accuracy is the accuracy in meters, battery_level is the current battery level of the device sending the update. +longitude and latitude are required keys, gps_accuracy and battery_level are optional.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.mysensors/index.html b/components/device_tracker.mysensors/index.html new file mode 100644 index 0000000000..a1bbb52e61 --- /dev/null +++ b/components/device_tracker.mysensors/index.html @@ -0,0 +1,430 @@ + + + + + + + + + MySensors Device Tracker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Device Tracker +

+
+
+

Integrates MySensors device trackers into Home Assistant. See the main component for configuration instructions.

+

The following sensor types are supported:

+
MySensors version 2.0 and higher
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_GPSV_POSITION
+

For more information, visit the serial api of MySensors.

+

MySensors 2.x example sketch

+
/**
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/gps
+ */
+
+// Enable debug prints to serial monitor
+#define MY_DEBUG
+// Enable and select radio type attached
+#define MY_RADIO_NRF24
+//#define MY_RADIO_RFM69
+
+#include <MySensors.h>
+
+#define SN "GPS Sensor"
+#define SV "1.0"
+
+// GPS position send interval (in milliseconds)
+#define GPS_SEND_INTERVAL 30000
+// The child id used for the gps sensor
+#define CHILD_ID_GPS 1
+
+MyMessage msg(CHILD_ID_GPS, V_POSITION);
+
+// Last time GPS position was sent to controller
+unsigned long lastGPSSent = -31000;
+
+// Some buffers
+char latBuf[11];
+char lngBuf[11];
+char altBuf[6];
+char payload[30];
+
+// Dummy values. Implementation of real GPS device is not done.
+float gpsLocationLat = 40.741895;
+float gpsLocationLng = -73.989308;
+float gpsAltitudeMeters = 12.0;
+
+void setup() {
+
+}
+
+void presentation() {
+  sendSketchInfo(SN, SV);
+  present(CHILD_ID_GPS, S_GPS);
+}
+
+void loop()
+{
+  unsigned long currentTime = millis();
+
+  // Evaluate if it is time to send a new position
+  bool timeToSend = currentTime - lastGPSSent > GPS_SEND_INTERVAL;
+
+  if (timeToSend) {
+    // Send current gps location
+    // Build position and altitude string to send
+    dtostrf(gpsLocationLat, 1, 6, latBuf);
+    dtostrf(gpsLocationLng, 1, 6, lngBuf);
+    dtostrf(gpsAltitudeMeters, 1, 0, altBuf);
+    sprintf(payload, "%s,%s,%s", latBuf, lngBuf, altBuf);
+
+    Serial.print(F("Position: "));
+    Serial.println(payload);
+
+    send(msg.set(payload));
+    lastGPSSent = currentTime;
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.netgear/index.html b/components/device_tracker.netgear/index.html new file mode 100644 index 0000000000..9354aa20fe --- /dev/null +++ b/components/device_tracker.netgear/index.html @@ -0,0 +1,333 @@ + + + + + + + + + Netgear - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netgear +

+
+
+

This platform allows you to detect presence by looking at connected devices to a Netgear device.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: netgear
+    host: YOUR_ROUTER_IP
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

Configuration variables:

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

List of models that are known to use port 80:

+
    +
  • Nighthawk X4S - AC2600 (R7800)
  • +
  • Orbi
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.nmap_tracker/index.html b/components/device_tracker.nmap_tracker/index.html new file mode 100644 index 0000000000..3904e90fed --- /dev/null +++ b/components/device_tracker.nmap_tracker/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Nmap - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nmap +

+
+
+

As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (192.168.1.1/24) and the range notation (192.168.1.1-255).

+

You might have to install the packages for arp and nmap. On Debian based hosts (for example Hassbian and Raspbian) do so by running $ sudo apt-get install net-tools nmap. On a Fedora host run $ sudo dnf -y install nmap.

+

+If you are using Hass.io 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:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: nmap_tracker
+    hosts: 192.168.1.0/24
+
+
+

Configuration variables:

+
    +
  • hosts (Required): The network address to scan (in any supported NMap format). Mixing subnets and IPs is possible.
  • +
  • home_interval (Optional): The number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery.
  • +
  • exclude (Optional): Hosts not to include in nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error), so excluding that host is a good idea.
  • +
  • scan_options (Optional): Configurable scan options for nmap. Default to -F --host-timeout 5s
  • +
+

A full example for the nmap tracker could look like the following sample:

+
# Example configuration.yaml entry for nmap
+# One whole subnet, and skipping two specific IPs.
+device_tracker:
+  - platform: nmap_tracker
+    hosts: 192.168.1.0/24
+    home_interval: 10
+    exclude:
+     - 192.168.1.12
+     - 192.168.1.13
+
+
+
# Example configuration.yaml for nmap
+# One subnet, and two specific IPs in another subnet.
+device_tracker:
+  - platform: nmap_tracker
+    hosts:
+      - 192.168.1.0/24
+      - 10.0.0.2
+      - 10.0.0.15
+
+
+

In the above example, Nmap will be call with the process: +nmap -oX - 192.168.1.1/24 10.0.0.2 10.0.0.15 -F --host-timeout 5s

+

An example of how the Nmap scanner can be customized:

+

Add the capabilities to Nmap. Be sure to specify the full path to wherever you installed Nmap:

+

sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap +

+

And you can set up the device tracker as

+
- platform: nmap_tracker
+  hosts: 192.168.1.1-25
+  scan_options: " --privileged -sP "
+
+
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.owntracks/index.html b/components/device_tracker.owntracks/index.html new file mode 100644 index 0000000000..20f9ff3d5a --- /dev/null +++ b/components/device_tracker.owntracks/index.html @@ -0,0 +1,379 @@ + + + + + + + + + Owntracks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Owntracks +

+
+
+

This platform allows you to detect presence using Owntracks. OwnTracks allows users to track their location on iOS phones and publish it to an MQTT broker. This platform will connect to the broker and monitor for new locations.

+

+The Android app for OwnTracks is no longer developed or supported, Zanzito is a drop in replacement for OwnTracks MQTT. +

+

This component requires the MQTT component to be set up and works very well together with the zone component.

+

To integrate Owntracks in Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: owntracks
+
+
+

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 (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) 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. 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.
  • +
  • mqtt_topic (Optional): The topic to subscribe for Owntracks updates on your MQTT instance (defaults to owntracks/#).
  • +
  • events_only (Optional): Home Assistant will ignore all location updates and rely solely on geofence enter/leave events.
  • +
  • region_mapping (Optional): Dictionary to remap names of regions as configured in the Owntracks app to Home Assistant zones. Use this if you have multiple homes or Home Assistant instances and want to map a different label to ‘home’. key: value maps Owntracks region key to Home Assistant zone value.
  • +
+

A full sample configuration for the owntracks platform is shown below:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: owntracks
+    max_gps_accuracy: 200
+    waypoints: True
+    mqtt_topic: "owntracks/#"
+    events_only: True
+    waypoint_whitelist:
+      - jon
+      - ram
+    region_mapping:
+      cabin: home
+      office: work
+
+
+

Using Owntracks with other device trackers

+

Owntracks can also be used with other device trackers, such as Nmap or Netgear. To do this, fill in the mac field to the Owntracks entry in known_devices.yaml with the MAC address of the device you want to track. This way the state of the device will be determined by the source that reported last. The naming convention for known device list is <username>_<device-id> and could be set in app configuration. More details about this config can found in device tracker.

+

An example showing the inclusion of the mac field for multiple component tracking. The mac field will need to be added to the owntracks device and will enable tracking by all components that track via the mac address.

+
USERNAME_DEVICE_ID:
+  name: Friendly Name
+  mac: EA:AA:55:E7:C6:94
+  picture: https://home-assistant.io/images/favicon-192x192.png
+  gravatar: test@example.com
+  track: yes
+  hide_if_away: no
+
+
+

Using Owntracks regions

+

Owntracks can track regions, and send region entry and exit information to Home Assistant (HA). You set up a region in the Owntracks app which you should name the same as your HA Zone, and then make sure to turn on the share option for the region in the owntracks app. Please see the owntracks documentation.

+

Home Assistant will use the enter and leave messages to set your zone location. Your location will be set to the center of zone when you enter. Location updates from OwnTracks will be ignored while you are inside a zone.

+

When you exit a zone, Home Assistant will start using location updates to track you again. To make sure that Home Assistant correctly exits a zone (which it calculates based on your GPS coordinates), you may want to set your Zone radius in HA to be slightly smaller that the Owntracks region radius.

+

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.

+

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 recognize it as home, but you will have a more stable iBeacon connection.

+

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.

+

When your phone sees a mobile iBeacon that it knows about, it will tell HA the location of that iBeacon. If your phone moves while you are connected to the iBeacon, HA will update the location of the iBeacon. But when your phone loses the connection, HA will stop updating the iBeacon location.

+

To use mobile iBeacons with HA, you just set up a region that doesn’t match your Zone names. If HA sees an entry event for an iBeacon region that doesn’t match a Zone name (say keys) - it will start tracking it, calling the device device_tracker.beacon_keys).

+

This allows you to write zone automations for devices that can’t track themselves (for example alert me if I leave the house and my keys are still at home). Another example would be open the gates if my car arrives home.

+

Using mobile and fixed iBeacons together

+

You can use iBeacons of both types together, so if you have a Zone drive with an iBeacon region called -drive and you arrive home with a mobile iBeacon called -car, then device_tracker.beacon_car will be set to a state of drive.

+

Importing Owntracks waypoints as zones

+

By default, any Owntracks user connected to Home Assistant can export their waypoint definitions (from the Export - Export to Endpoint menu item) which will then be translated to zone definitions in Home Assistant. The zones will be named <user>-<device> - <waypoint name>. This functionality can be controlled in 2 ways:

+
    +
  1. The configuration variable waypoints can be set to False which will disable importing waypoints for all users.
  2. +
  3. The configuration variable waypoint_whitelist can contain a list of users who are allowed to import waypoints.
  4. +
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.owntracks_http/index.html b/components/device_tracker.owntracks_http/index.html new file mode 100644 index 0000000000..34442bdfa0 --- /dev/null +++ b/components/device_tracker.owntracks_http/index.html @@ -0,0 +1,323 @@ + + + + + + + + + OwnTracks (via HTTP) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OwnTracks (via HTTP) +

+
+
+

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:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: owntracks_http
+
+
+

For configuration options and usage instructions, read the documentation for the OwnTracks platform.

+

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/components/device_tracker.ping/index.html b/components/device_tracker.ping/index.html new file mode 100644 index 0000000000..75fdbf43fa --- /dev/null +++ b/components/device_tracker.ping/index.html @@ -0,0 +1,330 @@ + + + + + + + + + Ping (ICMP) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ping (ICMP) +

+
+
+

The ping platform offers presence detection by using ping to send ICMP echo requests. This can be useful when devices are running a firewall and are blocking UDP or TCP packets but responding to ICMP requests (like Android phones). This tracker doesn’t need to know the MAC address since the host can be on a different subnet. This makes this an option to detect hosts on a different subnet when nmap or other solutions don’t work since arp doesn’t work.

+

To use this presence detection in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: ping
+    hosts:
+      hostone: 192.168.2.10
+
+
+

Configuration variables:

+
    +
  • hosts array (Required): List of device names and their corresponding IP address or hostname.
  • +
  • count (Optional): Number of packet used for each device (avoid false detection).
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.sky_hub/index.html b/components/device_tracker.sky_hub/index.html new file mode 100644 index 0000000000..b74f546b87 --- /dev/null +++ b/components/device_tracker.sky_hub/index.html @@ -0,0 +1,319 @@ + + + + + + + + + Sky Hub - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sky Hub +

+
+
+

The sky_hub platform offers presence detection by looking at connected devices to a Sky Hub router based router.

+

To use your Sky Hub device in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: sky_hub
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address of your router. Defaults to 192.168.1.254.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.snmp/index.html b/components/device_tracker.snmp/index.html new file mode 100644 index 0000000000..55691ecadd --- /dev/null +++ b/components/device_tracker.snmp/index.html @@ -0,0 +1,418 @@ + + + + + + + + + SNMP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SNMP +

+
+
+

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. It could be that you need to install the SNMP support manually. +

+

The following OID examples pull the current MAC Address table from a router. This reflects all recent devices seen on the network. However, since devices are not removed until they time out, this is less effective for device tracker component page than desirable. It is recommended to use Ping or NMAP instead.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrandDevice/FirmwareOID
Mikrotikunknown RouterOS version/model1.3.6.1.4.1.14988.1.1.1.2.1.1
MikrotikRouterOS 6.x on RB20111.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
pfSense2.2.41.3.6.1.2.1.4.22.1.2
BiPAC7800DXL Firmware 2.32e1.3.6.1.2.1.17.7.1.2.2.1.1
OpenWrtChaos Calmer 15.051.3.6.1.2.1.4.22.1.2
TP-LinkArcher VR2600v1.3.6.1.2.1.3.1.1.2.19.1
TP-LinkArcher VR6001.3.6.1.2.1.3.1.1.2
EdgeRouterLite v1.9.01.3.6.1.2.1.4.22.1.2
RuckusZoneDirector 9.13.31.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6
DD-WRTunknown RouterOS version/model1.3.6.1.2.1.4.22.1.2
+

To use the SNMP version 1 platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry for SNMP version 1
+device_tracker:
+  - platform: snmp
+    host: 192.168.1.1
+    community: public
+    baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1
+
+
+

If you want to use encryption, you must enable SNMP version 3 by adding authkey and privkey variables and enabling SNMP version 3 on your router. Currently only SHA1 is supported for authentication and AES for encryption. Example of SNMPv3 configuration:

+
# Example configuration.yaml entry for SNMP version 3
+device_tracker:
+  - platform: snmp
+    host: 192.168.1.1
+    community: username
+    authkey: authpass
+    privkey: privpass
+    baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1
+
+
+

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

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.swisscom/index.html b/components/device_tracker.swisscom/index.html new file mode 100644 index 0000000000..84df287348 --- /dev/null +++ b/components/device_tracker.swisscom/index.html @@ -0,0 +1,322 @@ + + + + + + + + + Swisscom Internet-Box - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Swisscom Internet-Box +

+
+
+

The swisscom platform offers presence detection by looking at connected devices to an Internet-Box router from Swisscom which is an Internet provider in Switzerland.

+

+There are three models of Internet-Box (light, standard and plus). The platform has only been tested on the Internet-Box plus but the others should work as well because they have the same web interface. +

+

To use an Internet-Box router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: swisscom
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address of your router. Set it if you are not using 192.168.1.1.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.tado/index.html b/components/device_tracker.tado/index.html new file mode 100644 index 0000000000..9f1c57faaa --- /dev/null +++ b/components/device_tracker.tado/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Tado - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tado +

+
+
+

The tado device tracker is using the Tado Smart Thermostat and its 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.

+

To use the Tado platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry for Tado
+device_tracker:
+  - platform: tado
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+    home_id: YOUR_HOME_ID
+
+
+

Configuration variables:

+
    +
  • username (Required): The username for your Tado account.
  • +
  • password (Required): The password for your Tado account.
  • +
  • home_id (Optional): The id of your home of which you want to track devices. If provided, the Tado device tracker will tack all devices known to Tado associated with this home. See below how to find it.
  • +
+

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

+

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:

+
{
+  "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/components/device_tracker.tesla/index.html b/components/device_tracker.tesla/index.html new file mode 100644 index 0000000000..b6ce37190e --- /dev/null +++ b/components/device_tracker.tesla/index.html @@ -0,0 +1,333 @@ + + + + + + + + + Tesla - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla +

+
+
+

The Tesla platform allows you to get data about the location of your Tesla 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 documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.thomson/index.html b/components/device_tracker.thomson/index.html new file mode 100644 index 0000000000..30c9aca878 --- /dev/null +++ b/components/device_tracker.thomson/index.html @@ -0,0 +1,322 @@ + + + + + + + + + Thomson - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Thomson +

+
+
+

Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor.

+

This platform allows you to detect presence by looking at connected devices to a Thomson device.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: thomson
+    host: YOUR_ROUTER_IP
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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 admin.
  • +
  • password (Required): The password for your given admin account.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.tile/index.html b/components/device_tracker.tile/index.html new file mode 100644 index 0000000000..d35e385f87 --- /dev/null +++ b/components/device_tracker.tile/index.html @@ -0,0 +1,342 @@ + + + + + + + + + Tile - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tile +

+
+
+

The tile platform allows Home Assistant to utilize Tile® Bluetooth trackers. +The official Tile mobile app handles the actual tracking of Tile devices using +the mobile device’s Bluetooth and GPS.

+

To integrate Tile into Home Assistant, add the following section to your +configuration.yaml file:

+
device_tracker:
+  - platform: tile
+    username: email@address.com
+    password: MY_PASSWORD_123
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)the email address for the Tile account

+
+
password
+
+

(string)(Required)the password for the Tile account

+
+
monitored_variables
+
+

(list)(Optional)the Tile types to monitor; valid values are TILE and PHONE (default is for all types to be included)

+
+
show_inactive
+
+

(boolean)(Optional)whether to show expired/disabled Tiles

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.tomato/index.html b/components/device_tracker.tomato/index.html new file mode 100644 index 0000000000..25917ce3bf --- /dev/null +++ b/components/device_tracker.tomato/index.html @@ -0,0 +1,362 @@ + + + + + + + + + Tomato - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tomato +

+
+
+

The tomato platform requires an extra config variable called http_id. The value can be obtained by logging in to the Tomato admin interface and search for http_id in the page source code.

+

Because of a limitation in Tomato’s API, this platform will only track wireless devices. If tracking wired devices like a Philips Hue Hub is necessary, it is possible to use another platform like NMAP.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: tomato
+    host: YOUR_ROUTER_IP_ADDRESS
+    username: YOUR_ADMIN_USERNAME
+    password:  YOUR_ADMIN_PASSWORD
+    http_id: YOUR_HTTP_ID
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Optional)The IP address or hostname of your router, e.g. 192.168.1.1 or rt-ac68u.

+
+
port
+
+

(int)(Optional)The port number of your router, e.g. 443.

+

Default value: 80/443 (automatically detected)

+
+
ssl
+
+

(bool)(Optional)Whether to connect via https.

+

Default value: false

+
+
verify_ssl
+
+

(string | bool)(Optional)If SSL verification for https resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values False or True or you can pass a location on the device where a certificate can be used for verification e.g. /mnt/NAS/router_cert.pem.

+

Default value: true

+
+
username
+
+

(string)(Required)The username of an user with administrative privileges, usually admin.

+
+
password
+
+

(string)(Required)The password for your given admin account.

+
+
http_id
+
+

(string)(Required)The value can be obtained by logging in to the Tomato admin interface and search for http_id in the page source code.

+
+
+
+

See the device tracker component page for instructions how to configure the people to be tracked.

+

A description of the API s available in this Tomato API blog post.

+

SSL Certificate:

+

Gathering the SSL Certificate of your router can be accomplished with this (or a similar) command:

+
openssl s_client -showcerts -connect 172.10.10.1:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > router_cert.pem
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.tplink/index.html b/components/device_tracker.tplink/index.html new file mode 100644 index 0000000000..2f94d1af35 --- /dev/null +++ b/components/device_tracker.tplink/index.html @@ -0,0 +1,346 @@ + + + + + + + + + TP-Link - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TP-Link +

+
+
+

The tplink platform allows you to detect presence by looking at connected devices to a TP-Link device. This includes the ArcherC9 line.

+

+TP-Link devices typically only allow one login at a time to the admin console. This component will count towards your one allowed login. Depending on how aggressively you configure device_tracker you may not be able to access the admin console of your TP-Link device without first stopping Home Assistant. Home Assistant takes a few seconds to login, collect data, and log out. If you log into the admin console manually, remember to log out so that Home Assistant can log in again. +

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: tplink
+    host: YOUR_ROUTER_IP
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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.
  • +
  • password (Required): The password for your given admin account.
  • +
+

For Archer C9 models running firmware version 150811 or later please use the encrypted password you can retrieve like this:

+
    +
  1. Go to the login page of your router. (default: 192.168.0.1)
  2. +
  3. Type in the password you use to login into the password field.
  4. +
  5. Click somewhere else on the page so that the password field is not selected anymore.
  6. +
  7. Open the JavaScript console of your browser (usually by pressing F12 and then clicking on “Console”).
  8. +
  9. Type document.getElementById("login-password").value;.
  10. +
  11. Copy the returned value to your Home Assistant configuration as password.
  12. +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.trackr/index.html b/components/device_tracker.trackr/index.html new file mode 100644 index 0000000000..585ddd25c5 --- /dev/null +++ b/components/device_tracker.trackr/index.html @@ -0,0 +1,325 @@ + + + + + + + + + TrackR - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TrackR +

+
+
+

The trackr platform allows you to detect presence using TrackR devices.

+

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:

+
# Example configuration.yaml entry
+device_tracker:
+  platform: trackr
+  username: USERNAME
+  password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): The email address for the TrackR account.
  • +
  • password (Required): The password for your given username.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.ubus/index.html b/components/device_tracker.ubus/index.html new file mode 100644 index 0000000000..2fd2861e15 --- /dev/null +++ b/components/device_tracker.ubus/index.html @@ -0,0 +1,451 @@ + + + + + + + + + OpenWRT (ubus) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenWRT (ubus) +

+
+
+

This is one of the two ways we support OpenWRT. If you encounter problems, try luci.

+

This is a presence detection scanner for OpenWRT using ubus. It scans for changes in hostapd.*, which will detect and report changes in devices connected to the access point on the router.

+

Before this scanner can be used you have to install the ubus RPC package on OpenWRT:

+
opkg install rpcd-mod-file
+
+
+

And create a read-only user to be used by setting up the ACL file /usr/share/rpcd/acl.d/user.json.

+
{
+  "user": {
+    "description": "Read only user access role",
+    "read": {
+      "ubus": {
+        "*": [ "*" ]
+      },
+      "uci": [ "*" ]
+    },
+    "write": {}
+  }
+}
+
+
+

Restart the services.

+
# /etc/init.d/rpcd restart && /etc/init.d/uhttpd restart
+
+
+

Check if the file namespaces is registered with the RPC server.

+
# ubus list | grep file
+file
+
+
+

After this is done, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: ubus
+    host: ROUTER_IP_ADDRESS
+    username: YOUR_ADMIN_USERNAME
+    password: YOUR_ADMIN_PASSWORD
+
+
+

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, dhcpd, or none. Defaults to dnsmasq.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+

Troubleshooting

+

If you find that this never creates known_devices.yaml, or if you need more information on the communication chain between Home Assistant and OpenWRT, follow these steps to grab the packet stream and gain insight into what’s happening.

+

Increase Log Level

+
    +
  1. On your Home Assistant device, stop Home Assistant
  2. +
  3. Adjust configuration.yaml to log more detail for the device_tracker component +
    logger:
    +  default: warn
    +  logs:
    + homeassistant.components.device_tracker: debug
    +
    +
    +
  4. +
  5. In another window, tail the logfile in the configuration directory: +
    $ tail -f home-assistant.log  | grep device_tracker
    +
    +
    +
  6. +
  7. If you see a python stack trace like the following, check your configuration for correct username/password. +
    17-04-28 10:43:30 INFO (MainThread) [homeassistant.loader] Loaded device_tracker from homeassistant.components.device_tracker
    +17-04-28 10:43:30 INFO (MainThread) [homeassistant.loader] Loaded device_tracker.ubus from homeassistant.components.device_tracker.ubus
    +17-04-28 10:43:30 INFO (MainThread) [homeassistant.setup] Setting up device_tracker
    +17-04-28 10:43:31 INFO (MainThread) [homeassistant.components.device_tracker] Setting up device_tracker.ubus
    +17-04-28 10:43:31 ERROR (MainThread) [homeassistant.components.device_tracker] Error setting up platform ubus
    +  File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/__init__.py", line 152, in async_setup_platform
    +  File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 36, in get_scanner
    +  File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 58, in __init__
    +  File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 156, in _get_session_id
    +  File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 147, in _req_json_rpc
    +17-04-28 10:43:31 INFO (MainThread) [homeassistant.core] Bus:Handling <Event service_registered[L]: domain=device_tracker, service=see>
    +17-04-28 10:43:31 INFO (MainThread) [homeassistant.core] Bus:Handling <Event component_loaded[L]: component=device_tracker>
    +
    +
    +
  8. +
  9. If you see lines like the following repeated at intervals that correspond to the check interval from the config (12 seconds by default), then Home Assistant is correctly polling the router, and you’ll need to look at what the router is sending back. +
    17-04-28 10:50:34 INFO (Thread-7) [homeassistant.components.device_tracker.ubus] Checking ARP
    +
    +
    +
  10. +
+

Inspect Packets With TCPDump

+

These steps require that tcpdump is installed on your Home Assistant device, and that you have a utility such as Wireshark for viewing the packets. It also assumes that Home Assistant is communicating with your router over HTTP and not HTTPS.

+
    +
  1. On your Home Assistant device, stop Home Assistant
  2. +
  3. In another shell on your Home Assistant device, start tcpdump +
    $ sudo tcpdump -nnvXSs 0 -w /var/tmp/dt.out 'host <router_ip> and port 80'
    +
    +
    +
      +
    • In this example we are only looking for traffic to or from port 80, and we are writing the packet stream out to /var/tmp/dt.out
    • +
    +
  4. +
  5. Start Home Assistant
  6. +
  7. After a few seconds you should see a line like Got xx where xx is an incrementing number. This indicates that it has captured packets that match our filter. After you see this number increment a few times (>20), you can hit Ctrl-C to cancel the capture.
  8. +
  9. Transfer /var/tmp/dt.out to the machine where you’re running Wireshark and either drag/drop it onto the Wireshark window or use File/Open to open the capture file.
  10. +
  11. In the window that opens, look for the first line that reads POST /ubus. Right click on this line, choose Follow and then HTTP Stream to view just the HTTP stream for this connection.
  12. +
  13. The first POST will show Home Assistant logging into ubus and receiving a session identifier back. It will look something like this: +``` +POST /ubus HTTP/1.1 +Host: 10.68.0.1 +Accept: / +User-Agent: python-requests/2.13.0 +Connection: keep-alive +Accept-Encoding: gzip, deflate +Content-Length: 161
  14. +
+

{“jsonrpc”: “2.0”, “params”: [“00000000000000000000000000000000”, “session”, “login”, {“password”: “", "username": "root"}], "method": "call", "id": 1}

+

HTTP/1.1 200 OK +Date: Fri, 28 Apr 2017 12:04:46 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive

+

{“jsonrpc”:”2.0”,”id”:1,”result”:[0,{“ubus_rpc_session”:”8b4e1632389fcfd09e96a792e01c332c”,”timeout”:300,”expires”:300,”acls”:{“access-group”:{“unauthenticated”:[“read”],”user”:[“read”]},”ubus”:{“”:[“”],”session”:[“access”,”login”]},”uci”:{“*”:[“read”]}},”data”:{“username”:”root”}}]}

+
9. In the response above, the portion that reads `"result":[0,` indicates that ubus accepted the login without issue. If this is not `0`, search online for what ubus status corresponds to the number you're receiving and address any issues that it brings to light.
+10. Otherwise, back in the main Wireshark window click the `x` in the right side of the filter bar where it reads `tcp.stream eq 0`. Scroll down until you find the next `POST /ubus` line and view the HTTP stream again. This request is Home Assistant actually requesting information and will look something like the following:
+
+
+

POST /ubus HTTP/1.1 +Host: 10.68.0.1 +Accept: / +User-Agent: python-requests/2.13.0 +Connection: keep-alive +Accept-Encoding: gzip, deflate +Content-Length: 114

+

{“jsonrpc”: “2.0”, “params”: [“8b4e1632389fcfd09e96a792e01c332c”, “hostapd.*”, “”, {}], “method”: “list”, “id”: 1}

+

HTTP/1.1 200 OK +Date: Fri, 28 Apr 2017 12:04:46 GMT +Content-Type: application/json +Transfer-Encoding: chunked +Connection: keep-alive

+

{“jsonrpc”:”2.0”,”id”:1,”result”:{}} +```

+
    +
  1. In this case we are actually receiving a valid response with no data. The request says that we are looking for ARP information from hostapd.*, which is the access point on the router. In my environment I don’t use the AP on the router, and so it was correctly returning no data. Armed with this information, I know that I cannot use this component for device tracking or presence.
  2. +
+

Cleanup

+

When you’re done troubleshooting, remember to reset your logging configuration and delete any capture files that contain sensitive information.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.unifi/index.html b/components/device_tracker.unifi/index.html new file mode 100644 index 0000000000..41b9851663 --- /dev/null +++ b/components/device_tracker.unifi/index.html @@ -0,0 +1,373 @@ + + + + + + + + + Ubiquiti Unifi WAP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ubiquiti Unifi WAP +

+
+
+

This platform allows you to detect presence by looking at devices connected to a Ubiquiti Unifi controller.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: unifi
+    host: unifi
+    username: username
+    password: password
+    ssid_filter:
+      - 'HomeSSID'
+      - 'IoTSSID'
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)A user on the controller

+
+
password
+
+

(string)(Required)The password for the account

+
+
host
+
+

(string)(Optional)The hostname or IP address of your controller

+

Default value: localhost

+
+
port
+
+

(int)(Optional)The port of your controller’s web interface

+

Default value: 8443

+
+
site_id
+
+

(string)(Optional)For multisite installations, you can specify site_id to specify which is used

+

Default value: default

+
+
verify_ssl
+
+

(boolean or filename)(Optional)Whether to do strict validation on SSL certificates of the Unifi controller. This can be true/false or the path to a locally trusted certificate to use for verification (i.e. “/path/to/custom_cert.pm”)

+

Default value: true

+
+
detection_time
+
+

(int)(Optional)How long since the last seen time before the device is marked away, specified in seconds.

+

Default value: 300

+
+
ssid_filter
+
+

(list of strings)(Optional)Filter the SSIDs that tracking will occur on.

+

Default value: None

+
+
+
+

See the device tracker component page for instructions how to configure the people to be tracked.

+

Configuring Users

+

The Unifi controller allows you to create multiple users on it besides the main administrator. It is recommended that you create a limited user that has read-only permissions for the Unifi device tracker.

+

Conflicts with MQTT

+

The Unifi controller can either be a dedicated hardware device (Unifi’s cloud key), or as software any Linux system. If you run the the Unifi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT component as well.

+

It is recommended that you run the Unifi controller in a dedicate virtual machine to avoid that situation.

+

Troubleshooting and Time Synchronization

+

Presence detection depends on accurate time configuration between Home Assistant and the Unifi controller.

+

If Home Assistant and the Unifi controller are running on separate machines or VMs ensure that all clocks are syncronized. Failing to have syncronized clocks will lead to Home Assistant failing to mark a device as home.

+

Related Issue

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.unifi_direct/index.html b/components/device_tracker.unifi_direct/index.html new file mode 100644 index 0000000000..81af6b62f2 --- /dev/null +++ b/components/device_tracker.unifi_direct/index.html @@ -0,0 +1,335 @@ + + + + + + + + + Ubiquiti Unifi direct AP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ubiquiti Unifi direct AP +

+
+
+

This platform allows you to detect presence by looking at devices connected to a UniFi AP. This device tracker differs form Ubiquiti Unifi WAP because it doesn’t require the Unifi controller software.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: unifi_direct
+    host: YOUR_AP_IP_ADDRESS
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The hostname or IP address of your Unifi AP.

+
+
username
+
+

(string)(Required)The SSH device username used to connect to your Unifi AP.

+
+
password
+
+

(string)(Required)The SSH device password used to connect to your Unifi AP.

+
+
+
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.upc_connect/index.html b/components/device_tracker.upc_connect/index.html new file mode 100644 index 0000000000..3e66f9c0d5 --- /dev/null +++ b/components/device_tracker.upc_connect/index.html @@ -0,0 +1,325 @@ + + + + + + + + + UPC ConnectBox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UPC ConnectBox +

+
+
+

The upc_connect platform offers presence detection by looking at connected devices to a Connect Box from Liberty Global (also known as UPC Cablecom in Switzerland) which is a Internet provider in Switzerland and Austria.

+

To use a Connect Box in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: upc_connect
+
+
+

Configuration variables:

+
    +
  • 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 for instructions how to configure the people to be tracked.

+

Also known to be working with the following devices:

+
    +
  • Irish Virgin Media Super Hub 3.0
  • +
  • Ziggo Connectbox NL
  • +
  • Unitymedia Connect Box (DE)
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.volvooncall/index.html b/components/device_tracker.volvooncall/index.html new file mode 100644 index 0000000000..c2765ca752 --- /dev/null +++ b/components/device_tracker.volvooncall/index.html @@ -0,0 +1,319 @@ + + + + + + + + + Volvo On Call - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Volvo On Call +

+
+
+

Integrates Volvo on Call into Home Assistant. See the main component for configuration instructions.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker.xiaomi/index.html b/components/device_tracker.xiaomi/index.html new file mode 100644 index 0000000000..2cbe6dcd36 --- /dev/null +++ b/components/device_tracker.xiaomi/index.html @@ -0,0 +1,323 @@ + + + + + + + + + Xiaomi Router - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Router +

+
+
+

The xiaomi platform offers presence detection by looking at connected devices to a Xiaomi router.

+

To use an Xiaomi router in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+device_tracker:
+  - platform: xiaomi
+    host: YOUR_ROUTER_IP
+    password: YOUR_ADMIN_PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your router, eg. 192.168.0.1.
  • +
  • username (Optional: The admin username. By default admin.
  • +
  • password (Required): The password for the admin account.
  • +
+

See the device tracker component page for instructions how to configure the people to be tracked.

+
+
+ +
+
+ + + + + + + diff --git a/components/device_tracker/index.html b/components/device_tracker/index.html new file mode 100644 index 0000000000..77dbb5c989 --- /dev/null +++ b/components/device_tracker/index.html @@ -0,0 +1,408 @@ + + + + + + + + + Device Tracker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Device Tracker +

+
+
+

Home Assistant can get information from your wireless router or third party services like iCloud or OwnTracks to track which devices are connected and considered “in home”. Please check the sidebar for a list of brands of supported wireless routers and services.

+

There are also trackers available which use different technologies like MQTT or Nmap to scan the network for devices.

+

An event (device_tracker_new_device) will be fired when a device is discovered for the first time.

+

Configuring a device_tracker platform

+

To get started add the following lines to your configuration.yaml (example for Netgear):

+
# Example configuration.yaml entry for Netgear device
+device_tracker:
+  - platform: netgear
+    host: 192.168.1.1
+    username: admin
+    password: YOUR_PASSWORD
+    new_device_defaults:
+      track_new_devices: True
+      hide_if_away: False
+
+
+
+

The following optional parameters can be used with any platform. However device tracker will only look for global settings under the configuration of the first configured platform:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDefaultDescription
interval_seconds12Seconds between each scan for new devices
consider_home180Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. consider_home helps prevent false alarms in presence detection when using IP scanners such as Nmap. consider_home accepts various time representations, (E.g. the following all represents 3 minutes: 180, 0:03, 0:03:00)
new_device_defaults Default values for new discovered devices. Available options track_new_devices (default: True), hide_if_away (default: False)
+

The extended example from above would look like the following sample:

+
# Example configuration.yaml entry for Netgear device
+device_tracker:
+  - platform: netgear
+    host: 192.168.1.1
+    username: admin
+    interval_seconds: 10
+    consider_home: 180
+    track_new_devices: yes
+
+
+

Multiple device trackers can be used in parallel, such as Owntracks and Nmap. The state of the device will be determined by the source that reported last.

+

known_devices.yaml

+

Once device_tracker is enabled, a file will be created in your config dir named known_devices.yaml. Edit this file to adjust which devices to be tracked.

+

Here’s an example configuration for a single device:

+
devicename:
+  name: Friendly Name
+  mac: EA:AA:55:E7:C6:94
+  picture: https://home-assistant.io/images/favicon-192x192.png
+  track: yes
+  hide_if_away: no
+
+
+

+ In the example above, devicename refers to the detected name of the device. For instance, my_iphone. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDefaultDescription
nameHost name or “Unnamed Device”The friendly name of the device.
macNoneThe MAC address of the device. Add this if you are using a network device tracker like Nmap or SNMP.
pictureNoneA 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.
iconmdi:accountAn icon for this device (use as an alternative to picture).
gravatarNoneAn 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_awayFalseIf 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/components/dialogflow/index.html b/components/dialogflow/index.html new file mode 100644 index 0000000000..39a8bfaa15 --- /dev/null +++ b/components/dialogflow/index.html @@ -0,0 +1,257 @@ + + + + + + + + + Dialogflow - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dialogflow +

+
+
+

+Before 0.56 this component was named apiai. +

+

The dialogflow component is designed to be used with the webhook integration of Dialogflow. 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 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.

+

Configuring your Dialogflow account

+
    +
  • Login with your Google account
  • +
  • Click on “Create Agent”
  • +
  • Select name, language (if you are planning to use Google Actions check their supported languages) 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.

+

Configuring Home Assistant

+

When activated, the alexa component will have Home Assistant’s native intent support handle the incoming intents. If you want to run actions based on intents, use the intent_script component.

+

Examples

+

Download this zip and load it in your Dialogflow agent (Settings -> Export and Import) for examples intents to use with this configuration:

+
# 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(' ', '_') }}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/digital_ocean/index.html b/components/digital_ocean/index.html new file mode 100644 index 0000000000..9db404efd6 --- /dev/null +++ b/components/digital_ocean/index.html @@ -0,0 +1,471 @@ + + + + + + + + + Digital Ocean - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Digital Ocean +

+
+
+

The digital_ocean component allows you to access the information about your Digital Ocean droplets from Home Assistant.

+

Obtain your API key from your Digital Ocean dashboard.

+

To integrate your Digital Ocean droplets with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+digital_ocean:
+  access_token: YOUR_API_KEY
+
+
+
+

Configuration Variables

+
+
access_token
+
+

(string)(Required)Your Digital Ocean API access token.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/discoverable/index.html b/components/discoverable/index.html new file mode 100644 index 0000000000..b4a725dc6d --- /dev/null +++ b/components/discoverable/index.html @@ -0,0 +1,156 @@ + + + + + + + + + Discoverable - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Discoverable +

+
+
+

The Home Assistant discovery protocol is a lightweight feature that introduces support for Home Assistant servers to be discoverable. This will allow Home Assistant instances running with MicroPython to get started without any required configuration (Example from the MicroPython Home Assistant documentation):

+
from homeassistant.discovery import get_instance()
+
+hass = get_instance()
+
+for state in hass.states():
+    print(state)
+
+
+

To enable discovery in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+discoverable:
+  expose_password: yes
+
+
+

Configuration variables:

+
    +
  • expose_password (Optional): It is up to the user to expose the password in the discovery response (Default: off). If password not exposed, uHA instances will have to provide it (get_instance('my password')).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/discovery/index.html b/components/discovery/index.html new file mode 100644 index 0000000000..933e56e0eb --- /dev/null +++ b/components/discovery/index.html @@ -0,0 +1,297 @@ + + + + + + + + + Discovery - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Discovery +

+
+
+

Home Assistant can discover and automatically configure zeroconf/mDNS and uPnP devices on your network. Currently the discovery component can detect:

+ +

It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user.

+

To load this component, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+discovery:
+  ignore:
+    - sonos
+    - samsung_tv
+
+
+

Configuration variables:

+
    +
  • ignore (Optional): A list of platforms that never will be automatically configured by discovery.
  • +
+

Valid values for ignore are:

+
    +
  • apple_tv: Apple TV
  • +
  • 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
  • +
  • sabnzbd: SABnzbd downloader
  • +
  • samsung_tv: Samsung TVs
  • +
  • sonos: Sonos speakers
  • +
  • tellduslive: Telldus Live
  • +
  • wink: Wink Hub
  • +
  • yamaha: Yamaha media player
  • +
  • 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. +

+

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

+

+If you see Not initializing discovery because could not install dependency netdisco==0.6.1 in the logs, you will need to install the python3-dev or python3-devel package on your system manually (eg. sudo apt-get install python3-dev or sudo dnf -y install python3-devel). On the next restart of Home Assistant, the discovery should work. If you still get an error, check if you have a compiler (gcc) available on your system. +
+For DSM/Synology, install via debian-chroot see this forum post. +

+

If you are developing a new platform, please read how to make your platform discoverable for further details.

+
+
+ +
+
+ + + + + + + diff --git a/components/dominos/index.html b/components/dominos/index.html new file mode 100644 index 0000000000..4bbe757bd9 --- /dev/null +++ b/components/dominos/index.html @@ -0,0 +1,273 @@ + + + + + + + + + Dominos Pizza - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dominos Pizza +

+
+
+

The Dominos component allows you to order Dominos Pizza from within your Home Assistant scripts and automations.

+

At present, this component only supports ordering within Canada and the US.

+

To enable the component, you need to set up your customer information and define some orders.

+

Orders are a group of product codes. You can get these product codes by inspecting an order request from the Dominos web app, or you can add this custom panel by following this readme to see the available product codes in a separate panel in your install.

+

Currently, there is no support in this component for toppings, coupons or order tracking.

+
dominos:
+  country_code: ca
+  first_name: John
+  last_name: Smith
+  email: john.smith@example.com
+  phone: 123456789
+  address: 24 Housten Dr, Ottawa, ON, K2M2M2
+  orders:
+  - name: Medium Pan
+    codes:
+      - P12IPAZA
+
+
+

Now you can use the Dominos service to order pizza within your automations:

+
- service: dominos.order
+  data:
+    order_entity_id: dominos.medium_pan
+
+
+
+

Configuration Variables

+
+
country_code
+
+

(string)(Required)'ca' or 'us', depending on your location

+
+
first_name
+
+

(string)(Required)Your first name

+
+
last_name
+
+

(string)(Required)Your last name

+
+
email
+
+

(string)(Required)Your email address

+
+
phone
+
+

(string)(Required)Your phone number

+
+
address
+
+

(string)(Required)Your delivery address

+
+
show_menu
+
+

(integer)(Optional)Dumps product codes from your nearest store into your log (for use in with the custom panel)

+
+
orders
+
+

(list)(Optional)Sets of product codes to use for ordering

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/doorbird/index.html b/components/doorbird/index.html new file mode 100644 index 0000000000..e46ae640ed --- /dev/null +++ b/components/doorbird/index.html @@ -0,0 +1,473 @@ + + + + + + + + + DoorBird - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DoorBird +

+
+
+

The doorbird implementation allows you to integrate your DoorBird device in Home Assistant.

+

To connect your device, add the following to your configuration.yaml file:

+
# 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 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.
  • +
  • doorbell_events (Optional): Setting this to true this will register a callback URL with the device so that events can be published to the event bus when the doorbell rings.
  • +
+

+Enabling doorbell_events will delete all other registered push notification services with the device every time Home Assistant starts. This will not affect notifications delivered by the DoorBird mobile app. +

+
+
+ +
+
+ + + + + + + diff --git a/components/downloader/index.html b/components/downloader/index.html new file mode 100644 index 0000000000..2e975b44bb --- /dev/null +++ b/components/downloader/index.html @@ -0,0 +1,218 @@ + + + + + + + + + Downloader - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Downloader +

+
+
+

The downloader component provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist. The directory needs to be writable for the user that is running Home Assistant.

+

To enable it, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+downloader:
+  download_dir: downloads
+
+
+

Configuration variables:

+
    +
  • download_dir (Required): If the path is not absolute, it’s assumed to be relative to the Home Assistant configuration directory (eg. .homeassistant/downloads).
  • +
+

Use the 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”.

+
{"url":"http://domain.tld/path/to/file"}
+
+
+

This will download the file from the given URL.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
urlnoThe URL of the file to download.
subdiryesDownload into subdirectory of download_dir
filenameyesDetermine the filename.
overwriteyesWhether to overwrite the file or not, defaults to false.
+
+
+ +
+
+ + + + + + + diff --git a/components/duckdns/index.html b/components/duckdns/index.html new file mode 100644 index 0000000000..4521ae0a68 --- /dev/null +++ b/components/duckdns/index.html @@ -0,0 +1,188 @@ + + + + + + + + + DuckDNS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DuckDNS +

+
+
+

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:

+
# Example configuration.yaml entry
+duckdns:
+  domain: mysubdomain
+  access_token: abcdefgh
+
+
+
+

Configuration Variables

+
+
domain
+
+

(string)(Required)Your duckdns subdomain (without the .duckdns.org suffix).

+
+
access_token
+
+

(string)(Required)Your DuckDNS access token. Log in to the site to get one.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/dweet/index.html b/components/dweet/index.html new file mode 100644 index 0000000000..208392bf61 --- /dev/null +++ b/components/dweet/index.html @@ -0,0 +1,222 @@ + + + + + + + + + Dweet.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dweet.io +

+
+
+

The dweet component makes it possible to transfer details collected with Home Assistant to Dweet.io and visualize them with freeboard.io. Keep in mind that your information will be public!

+

+ +

+

+ The publishing interval is limited to 1 second. This means that it’s possible to miss fast changes. +

+

To use the dweet component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+dweet:
+  name: HAExport
+  whitelist:
+    - input_number.brightness
+    - input_boolean.notify_home
+    - sensor.weather_temperature
+    - sensor.cpu
+
+
+

Configuration variables:

+
    +
  • name (Required): Choose must choose an unique name.
  • +
  • whitelist (Required): List of entity IDs you want to publish.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/dyson/index.html b/components/dyson/index.html new file mode 100644 index 0000000000..8dfcd4e0e0 --- /dev/null +++ b/components/dyson/index.html @@ -0,0 +1,498 @@ + + + + + + + + + Dyson - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dyson +

+
+
+

The dyson component is the main component to integrate all Dyson related platforms: Fans and Robot vacuum.

+

To enable this component, add the following lines to your configuration.yaml:

+
dyson:
+  username: <dyson_account_user_email>
+  password: <dyson_acount_password>
+  language: <dyson_account_language>
+  devices:
+    - device_id: <device_id_1> # eg: Pure Cool Link device
+      device_ip: <device_ip_1>
+    - device_id: <device_id_2> # eg: Eye 360 robot vacuum
+      device_ip: <device_ip_2>
+    ...
+
+
+

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

+
$ nmap -p 1883 XXX.XXX.XXX.XXX/YY -- open
+
+
+

Where:

+
    +
  • XXX.XXX.XXX.XXX is your network address
  • +
  • YY is your network mask
  • +
+

For example:

+
$ nmap -p 1883 192.168.0.0/24 -- open
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/ecobee/index.html b/components/ecobee/index.html new file mode 100644 index 0000000000..14719303d1 --- /dev/null +++ b/components/ecobee/index.html @@ -0,0 +1,504 @@ + + + + + + + + + ecobee - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ecobee +

+
+
+

The ecobee component lets you control a thermostats and view sensor data from ecobee thermostats.

+

You will need to obtain an API key from ecobee’s developer site to use this component. To get the key, first you need to register your thermostat which should be done as part of the ecobee installation. Once you have done that perform the following steps.

+
    +
  1. Click on the Become a developer link on the developer site.
  2. +
  3. Login with your ecobee credentials.
  4. +
  5. Accept the SDK agreement.
  6. +
  7. Fill in the fields.
  8. +
  9. Click save.
  10. +
+

Now login to the regular consumer portal, and in the hamburger menu there will be a new option Developer. Now we can create the Application to hook up to Home Assistant.

+
    +
  1. Select the Developer option.
  2. +
  3. Select Create New.
  4. +
  5. Give your app a name (it appears to need to be unique across all users, as I tried ‘home-assistant’ and it said it was already in use. Try -home-assistant) and a summary (neither of these are important as they are not used anywhere).
  6. +
  7. For Authorization method select ecobee PIN.
  8. +
  9. You don’t need an Application Icon or Detailed Description.
  10. +
  11. Click Create.
  12. +
+

Now under the Name and Summary Section you will have an API key. Copy this key and use it in you configuration section below. Click the X to close the Developer section.

+

The first time you run Home Assistant with this component it will give you a PIN code that you need to authorize in the ecobee consumer portal. You can do this by clicking Add Application in the My Apps section in the sidebar.

+

The PIN can be found from the Home Assistant portal on the Ecobee card or from the configurator.ecobee entity in states in the portal.

+
    +
  • 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 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:

+
# Example configuration.yaml entry
+ecobee:
+  api_key: asdfghjklqwertyuiopzxcvbnm 
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your ecobee API key. This is only needed for the initial setup of the component. Once registered it can be removed. If you revoke the key in the ecobee portal you will need to update this again and remove the ecobee.conf file in the .homeassistant configuration path.
  • +
  • hold_temp (Optional): True/False whether or not to hold changes indefinitely (True) or until the next scheduled event. Defaults to False.
  • +
+

+ + +

+

If for whatever reason you delete and re-create your ecobee app at ecobee.com such that your developer API key changes, you will need to delete your /conf/ecobee.conf file. You will also need to update the api_key: in the configuration.yaml or secrets.yaml file.

+
+
+ +
+
+ + + + + + + diff --git a/components/egardia/index.html b/components/egardia/index.html new file mode 100644 index 0000000000..5d31d76a1a --- /dev/null +++ b/components/egardia/index.html @@ -0,0 +1,500 @@ + + + + + + + + + Egardia - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Egardia +

+
+
+

The egardia platform enables the ability to control an Egardia/Woonveilig control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically (hidden by default).

+

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 the integration with your alarm panel, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+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.
  • +
  • version (Optional): The version of the Egardia system. GATE-01, GATE-02 and GATE-03 are currently supported. Defaults to GATE-01.
  • +
  • port (Optional): The port of the alarm panel. Defaults to 80.
  • +
  • report_server_enabled (Optional): Enable reporting by server. Defaults to False.
  • +
  • report_server_port (Optional): Port of the Egardia server. Defaults to 52010.
  • +
  • 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 to 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. +
  3. 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. You can leave the port number set to 52010 or change it to anything you like. 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’.
  4. +
  5. The Egardia component relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e. the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia component to work correctly you will need to capture the codes. To do this, on your Home Assistant machine run $ sudo python3 egardiaserver.py. Refer to the python-egardia repository for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. Record the codes shown as well as the status they relate to (see step 4 below). 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 of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). For comfort, before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).
  6. +
  7. Once you have the codes, update your configuration.yaml: +
     # Example configuration.yaml entry
    + egardia:
    +   host: YOUR_HOST
    +   username: YOUR_USERNAME
    +   password: YOUR_PASSWORD
    +   report_server_enabled: True
    +   report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010)
    +   report_server_codes:
    +     arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
    +     disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
    +     armhome: XXXXXXXXXXXXXXXX
    +     triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX
    +     ignore: XXXXXXXXXXXXXXXX
    +
    +
    +
  8. +
+

Note that for all code groups (arm,disarm, etc) 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.

+
    +
  1. 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. Note: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl).
  2. +
+
+
+ +
+
+ + + + + + + diff --git a/components/eight_sleep/index.html b/components/eight_sleep/index.html new file mode 100644 index 0000000000..c1cd3aabc9 --- /dev/null +++ b/components/eight_sleep/index.html @@ -0,0 +1,523 @@ + + + + + + + + + Eight Sleep - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Eight Sleep +

+
+
+

The eight_sleep component allows Home Assistant to fetch data from your Eight Sleep smart cover or mattress.

+

It’s setup utilizing ‘Sensor’ components to convey the current state of your bed and results of your sleep sessions and a ‘Binary Sensor’ component to indicate your presence in the bed. A service is also provided to set the heating level and duration of the bed.

+

You must have at least two sleep sessions recorded in the Eight Sleep app prior to setting up the Home Assistant component.

+

To get started add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+eight_sleep:
+    username: "user@email.com"
+    password: "password"
+
+
+

Configuration variables:

+
    +
  • username (Required): The email address associated with your Eight Sleep account.
  • +
  • password (Required): The password associated with your Eight Sleep account.
  • +
  • partner (Optional): Default is False. Defines if you’d like to fetch data for both sides of the bed.
  • +
+

Supported features

+

Sensors:

+
    +
  • eight_left/right_bed_state
  • +
  • eight_left/right_sleep_session
  • +
  • eight_left/right_previous_sleep_session
  • +
  • eight_left/right_bed_temperature
  • +
  • eight_left/right_sleep_stage
  • +
  • eight_room_temperature
  • +
+

Binary Sensors:

+
    +
  • eight_left/right_bed_presence
  • +
+

Service heat_set

+

You can use the service eight_sleep/heat_set to adjust the target heating level and heating duration of your bed.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoEntity ID of bed state to adjust.
targetnoTarget heating level from 0-100.
durationnoDuration to heat at the target level in seconds.
+

Script Example:

+
script:
+  bed_set_heat:
+    sequence:
+      - service: eight_sleep.heat_set
+        data:
+          entity_id: "sensor.eight_left_bed_state"
+          target: 35
+          duration: 3600
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/emoncms_history/index.html b/components/emoncms_history/index.html new file mode 100644 index 0000000000..9088ee4124 --- /dev/null +++ b/components/emoncms_history/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Emoncms history - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Emoncms history +

+
+
+

The emoncms_history component makes it possible to transfer details collected with Home Assistant to Emoncms.org or your local running Emoncms instance. It will send the data to a specific input node on Emoncms with the entity IDs as a key. Afterwards you can create feeds and dashboards in Emoncms with the collected data.

+

To use the emoncms_history component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+emoncms_history:
+  api_key: put your emoncms WRITE api key here
+  url: https://emoncms.org
+  inputnode: 19
+  whitelist:
+    - sensor.owm_temperature
+    - sensor.owm_wind_speed
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your emoncms write api key
  • +
  • url (Required): The root URL of your Emoncms installation. (Use https://emoncms.org for the cloud based version)
  • +
  • inputnode (Required): Input node that will be used inside emoncms. Please make sure you use a dedicated, not used before, node for this component!
  • +
  • whitelist (Required): List of entity IDs you want to publish.
  • +
  • scan_interval (Optional): Defines, in seconds, how regularly the states of the whitelisted entities are being gathered and send to emoncms. Default is 30 seconds.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/emulated_hue/index.html b/components/emulated_hue/index.html new file mode 100644 index 0000000000..cc5ffe00f0 --- /dev/null +++ b/components/emulated_hue/index.html @@ -0,0 +1,550 @@ + + + + + + + + + Emulated Hue Bridge - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Emulated Hue Bridge +

+
+
+

+Be aware that emulated_hue doesn’t work for new Google Home users. If you’re a new user of Google Home, use the Google Assistant component. +

+

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

+

+A physical Hue Bridge is required for Philips Hue lights to function - this virtual bridge will not replace a physical bridge. Instead, it allows Home Assistant to represent non-Philips Hue devices to Amazon Echo as Philips Hue devices, which Amazon Echo can control with built-in support. +

+

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

+

+Both Google Home and Alexa use the device they were initially set up with for communication with emulated_hue. In other words: if you remove/replace this device you will also break emulated_hue. +

+

Configuration

+

To enable the emulated Hue bridge, add one of the following configs to your configuration.yaml file:

+
# Google Home example configuration.yaml entry
+emulated_hue:
+  listen_port: 80
+  # Google Home does not work on different ports.
+
+
+
# Amazon Echo example configuration.yaml entry
+emulated_hue:
+
+
+

Configuration variables:

+
    +
  • type (Optional): The type of assistant which we are emulating. 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.

    +
  • +
  • advertise_ip (Optional): If you need to override the IP address used for UPnP discovery. (For example, using network isolation in Docker)
  • +
  • +

    advertise_port (Optional): If you need to specifically override the advertised UPnP port.

    +
  • +
  • +

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

    expose_by_default (Optional): Whether or not entities should be exposed via the bridge by default instead of explicitly (see the ‘emulated_hue’ customization below). If not specified, this defaults to true. Warning: If you have a lot of devices (more than 49 total across all exposed domains), you should be careful with this option. Exposing more devices than Alexa supports can result in it not seeing any of them. If you are having trouble getting any devices to show up, try disabling this, and explicitly exposing just a few devices at a time to see if that fixes it.

    +
  • +
  • exposed_domains (Optional): The domains that are exposed by default if expose_by_default is set to true. If not specified, this defaults to the following list: +
      +
    • switch
    • +
    • light
    • +
    • group
    • +
    • input_boolean
    • +
    • media_player
    • +
    • fan
    • +
    +
  • +
  • entities (Optional): Customization for entities.
  • +
+

A full configuration sample looks like the one below.

+
# Example configuration.yaml entry
+emulated_hue:
+  host_ip: 192.168.1.186
+  listen_port: 8300
+  advertise_ip: 10.0.0.10
+  advertise_port: 8080
+  off_maps_to_on_domains:
+    - script
+    - scene
+  expose_by_default: true
+  exposed_domains:
+    - light
+  entities:
+    light.bedroom_light:
+      name: "Bedside Lamp"
+    light.ceiling_lights:
+      hidden: true
+
+
+

The following are attributes that can be applied in the entities section:

+
    +
  • name (Optional): The name that the emulated Hue will use. The default for this is the entity’s friendly name.
  • +
  • hidden (Optional): Whether or not the emulated Hue bridge should expose the entity. Adding hidden: false will expose the entity to Alexa. The default value for this attribute is controlled by the expose_by_default option.
  • +
+

+These attributes used to be found under the customize section of homeassistant, however, they have now been moved to entities. Emulated Hue configuration under homeassistant.customize will be deprecated in the near future. +

+

Troubleshooting

+

You can verify that the emulated_hue component has been loaded and is responding by pointing a local browser to the following URL:

+
    +
  • http://<HA IP Address>:8300/description.xml - This URL should return a descriptor file in the form of an XML file.
  • +
  • http://<HA IP Address>: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://<HA IP Address>:80/description.xml).

+

An additional step is required to run Home Assistant as a 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 a non-root user.

+
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, your path will be /srv/homeassistant/bin/python3.

+

License

+

Much of this code is based on work done by Bruce Locke on his ha-local-echo project, originally released under the MIT License. The license is located here.

+
+
+ +
+
+ + + + + + + diff --git a/components/enocean/index.html b/components/enocean/index.html new file mode 100644 index 0000000000..33a1660af2 --- /dev/null +++ b/components/enocean/index.html @@ -0,0 +1,487 @@ + + + + + + + + + EnOcean - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EnOcean +

+
+
+

The EnOcean standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are necessary.

+

The enocean component adds support for some of these devices. You will need a controller like the USB300 in order for it to work.

+

There is currently support for the following device types within Home Assistant:

+ +

However, only a few devices have been confirmed to work. These are:

+
    +
  • Eltako FUD61 dimmer
  • +
  • Eltako FT55 battery-less wall switch
  • +
  • Jung ENOA590WW battery-less wall switch
  • +
  • Permundo PSC234 (switch and power monitor)
  • +
+

Other devices will most likely need some changes in the Home Assistant code in order to work. Support for teaching of devices is also missing at this time.

+

To integrate an EnOcean controller with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+enocean:
+  device: /dev/ttyUSB0
+
+
+

Configuration variables:

+
    +
  • device (Required): The port where your device is connected to your Home Assistant host.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/envisalink/index.html b/components/envisalink/index.html new file mode 100644 index 0000000000..4293722dc6 --- /dev/null +++ b/components/envisalink/index.html @@ -0,0 +1,282 @@ + + + + + + + + + Envisalink Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Envisalink Alarm Control Panel +

+
+
+

The envisalink 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 Eyez On, known as the Envisalink. The Envisalink evl3 and evl4 boards provide a TCP/IP interface to the alarm panel, where it emulates an alarm keypad. This board also exposes a raw TCP/IP based API, upon which this component is built. Currently, the Envisalink version 4 is the latest model. This component supports both the evl3 and the evl4.

+

Please visit the eyezon website for further information about the evl3 and evl4 boards.

+

There is currently support for the following device types within Home Assistant:

+
    +
  • Binary Sensor: Reports on zone status
  • +
  • Sensor: Emulates an alpha-numeric keypad attached to the alarm panel
  • +
  • Alarm Control Panel: Reports on partition status, and can be used to arm/disarm the system
  • +
+

This is a fully event-based component. Any event sent by the Envisalink device will be immediately reflected within Home Assistant.

+

As of 0.29, the alarm_trigger service is supported. It is possible to fire off an envisalink-based alarm directly from Home Assistant. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation.

+

An envisalink section must be present in the configuration.yaml file and contain the following options as required:

+
# Example configuration.yaml entry
+envisalink:
+  host: <envisalink IP address>
+  panel_type: HONEYWELL or DSC
+  user_name: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  code: '1234'
+  port: 4025
+  evl_version: 3
+  keepalive_interval: 60
+  zonedump_interval: 30
+  panic_type: Police
+  zones:
+    11:
+      name: 'Back Door'
+      type: 'opening'
+    21:
+      name: 'First Floor Motion'
+      type: 'motion'
+  partitions:
+    1:
+      name: 'Home Alarm'
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the Envisalink device on your home network.
  • +
  • panel_type (Required): HONEYWELL or DSC, depending upon which alarm system you have.
  • +
  • user_name (Required): Which username to authenticate with when connecting to the device. On a Honeywell alarm panel, the username/password are the same.
  • +
  • password (Required): Which password to authenticate with when connecting to the device. EVL3 only works with max. 6 characters.
  • +
  • code (Required): Your alarm panel’s code, for authenticating user input during arm/disarm.
  • +
  • port (Optional): Which network port to connect with. Default: 4025
  • +
  • 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
  • +
  • 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 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.
  • +
+

Supported services:

+

The following services are supported by Envisalink and can be used to script or automate the alarm.

+
    +
  • alarm_disarm: Disarms the alarm with the user code provided, or the code specified in the configuration.
  • +
  • alarm_arm_home: Arms the alarm in home mode.
  • +
  • alarm_arm_away: Arms the alarm in standard away mode.
  • +
  • alarm_trigger: Trigger an alarm on the Envisalink connected alarm system. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation.
  • +
  • envisalink_alarm_keypress: Sends a string of up to 6 characters to the alarm. DSC alarms only
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/fan.comfoconnect/index.html b/components/fan.comfoconnect/index.html new file mode 100644 index 0000000000..61e6d8a8a4 --- /dev/null +++ b/components/fan.comfoconnect/index.html @@ -0,0 +1,199 @@ + + + + + + + + + Zehnder ComfoAir Q Ventilation fans - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zehnder ComfoAir Q Ventilation fans +

+
+
+

Please see the main component for information how to set it up.

+
+
+ +
+
+ + + + + + + diff --git a/components/fan.dyson/index.html b/components/fan.dyson/index.html new file mode 100644 index 0000000000..bd2f67c617 --- /dev/null +++ b/components/fan.dyson/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Dyson Purifier Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dyson Purifier Fan +

+
+
+

The dyson fan platform allows you to control your Dyson Purifier fans.

+

You have first to setup the Dyson component

+

Supported fan devices

+
    +
  • Pure Cool link (desk and tower)
  • +
  • Pure Hot+cool link (but heating is not yet supported)
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/fan.insteon_hub/index.html b/components/fan.insteon_hub/index.html new file mode 100644 index 0000000000..7f32ade176 --- /dev/null +++ b/components/fan.insteon_hub/index.html @@ -0,0 +1,200 @@ + + + + + + + + + Insteon Hub Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon Hub Fan +

+
+
+

The insteon_hub fan component lets you control your fans connected to an Insteon Hub with Home Assistant.

+

To get your Insteon Hub fan working with Home Assistant, follow the instructions for the general Insteon Hub component.

+
+
+ +
+
+ + + + + + + diff --git a/components/fan.insteon_local/index.html b/components/fan.insteon_local/index.html new file mode 100644 index 0000000000..2c9c97e8c8 --- /dev/null +++ b/components/fan.insteon_local/index.html @@ -0,0 +1,200 @@ + + + + + + + + + Insteon (Local) Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon (Local) Fan +

+
+
+

The insteon_local fan component lets you control your fan connected to an Insteon Hub with Home Assistant.

+

To get your insteon fans working with Home Assistant, follow the instructions for the general Insteon local component. The fans will be automatically disovered and added to Home Assistant. The device names will be the Insteon address of the fans.

+
+
+ +
+
+ + + + + + + diff --git a/components/fan.insteon_plm/index.html b/components/fan.insteon_plm/index.html new file mode 100644 index 0000000000..9ba65afe4d --- /dev/null +++ b/components/fan.insteon_plm/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Insteon PLM Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon PLM Fan +

+
+
+

The insteon_plm fan platform lets you control your FanLinc through +an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a +USB or serial port. To add support, set up the primary insteon_plm +component.

+
+
+ +
+
+ + + + + + + diff --git a/components/fan.isy994/index.html b/components/fan.isy994/index.html new file mode 100644 index 0000000000..dea44e1588 --- /dev/null +++ b/components/fan.isy994/index.html @@ -0,0 +1,215 @@ + + + + + + + + + ISY994 Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Fan +

+
+
+

The isy994 platform allows you to get data from your ISY994 fan from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/fan.mqtt/index.html b/components/fan.mqtt/index.html new file mode 100644 index 0000000000..efa8790493 --- /dev/null +++ b/components/fan.mqtt/index.html @@ -0,0 +1,390 @@ + + + + + + + + + MQTT Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Fan +

+
+
+

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

+

Optimistic mode can be forced even if a state_topic is available. Try to enable it if you are experiencing incorrect fan operation.

+

To enable MQTT fans in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+fan:
+  - platform: mqtt
+    command_topic: "bedroom_fan/on/set"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the fan.

+

Default value: MQTT Fan

+
+
command_topic
+
+

(string)(Required)The MQTT topic to publish commands to change the fan state.

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive state updates.

+
+
payload_on
+
+

(string)(Optional)The payload that represents the running state.

+

Default value: true

+
+
payload_off
+
+

(string)(Optional)The payload that represents the stop state.

+

Default value: false

+
+
state_value_template
+
+

(string)(Optional)Defines a template to extract a value from the state.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
optimistic
+
+

(boolean)(Optional)Flag that defines if lock works in optimistic mode

+

Default value: true if no state topic defined, else false.

+
+
retain
+
+

(boolean)(Optional)If the published message should have the retain flag on or not.

+

Default value: true

+
+
oscillation_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive oscillation state updates.

+
+
oscillation_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the oscillation state.

+
+
payload_oscillation_on
+
+

(string)(Optional)The payload that represents the oscillation on state.

+

Default value: oscillate_on

+
+
payload_oscillation_off
+
+

(string)(Optional)The payload that represents the oscillation off state.

+

Default value: oscillate_off

+
+
oscillation_value_template
+
+

(string)(Optional)Defines a template to extract a value from the oscillation.

+
+
speed_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive speed state updates.

+
+
speed_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change speed state.

+
+
payload_low_speed
+
+

(string)(Optional)The payload that represents the fan’s low speed.

+

Default value: low

+
+
payload_medium_speed
+
+

(string)(Optional)The payload that represents the fan’s medium speed.

+

Default value: medium

+
+
payload_high_speed
+
+

(string)(Optional)The payload that represents the fan’s high speed.

+

Default value: high

+
+
speed_value_template
+
+

(string)(Optional)Defines a template to extract a value from the speed payload.

+
+
speeds
+
+

(string list)(Optional)List of speeds this fan is capable of running at. Valid entries are off, low, medium, and high.

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+

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

+

Examples

+

In this section you find some real life examples of how to use this fan.

+

Full configuration

+

The example below shows a full configuration for a MQTT fan.

+
# Example configuration.yml entry
+fan:
+  - platform: mqtt
+    name: "Bedroom Fan"
+    state_topic: "bedroom_fan/on/state"
+    command_topic: "bedroom_fan/on/set"
+    oscillation_state_topic: "bedroom_fan/oscillation/state"
+    oscillation_command_topic: "bedroom_fan/oscillation/set"
+    speed_state_topic: "bedroom_fan/speed/state"
+    speed_command_topic: "bedroom_fan/speed/set"
+    qos: 0
+    payload_on: "true"
+    payload_off: "false"
+    payload_oscillation_on: "true"
+    payload_oscillation_off: "false"
+    payload_low_speed: "low"
+    payload_medium_speed: "medium"
+    payload_high_speed: "high"
+    speeds:
+      - low
+      - medium
+      - high
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/fan.velbus/index.html b/components/fan.velbus/index.html new file mode 100644 index 0000000000..1654f509cf --- /dev/null +++ b/components/fan.velbus/index.html @@ -0,0 +1,234 @@ + + + + + + + + + Velbus Fans - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velbus Fans +

+
+
+

The velbus fan allows you to control Velbus connected fans.

+

To use your Velbus fans in your installation, add the following to your configuration.yaml file:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/fan.wink/index.html b/components/fan.wink/index.html new file mode 100644 index 0000000000..718777ef07 --- /dev/null +++ b/components/fan.wink/index.html @@ -0,0 +1,235 @@ + + + + + + + + + Wink Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Fan +

+
+
+

The Wink fan platform allows you to control your Wink fans.

+

The requirement is that you have setup Wink.

+

Supported fan devices

+
    +
  • 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/components/fan.xiaomi_miio/index.html b/components/fan.xiaomi_miio/index.html new file mode 100644 index 0000000000..b1c917693c --- /dev/null +++ b/components/fan.xiaomi_miio/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Xiaomi Air Purifier - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Air Purifier +

+
+
+

The xiaomi_miio fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S and Air Purifier Pro.

+

Currently, the supported features are:

+
    +
  • On, Off
  • +
  • Operation modes (auto, silent, favorite, idle)
  • +
  • Buzzer (on, off)
  • +
  • Child lock (on, off)
  • +
  • LED (on, off), LED brightness (bright, dim, off)
  • +
  • Favorite Level (0…16)
  • +
  • Attributes +
      +
    • power
    • +
    • aqi
    • +
    • average_aqi
    • +
    • humidity
    • +
    • temperature
    • +
    • mode
    • +
    • favorite_level
    • +
    • led
    • +
    • led_brightness
    • +
    • buzzer
    • +
    • child_lock
    • +
    • purify_volume
    • +
    • filter_life_remaining
    • +
    • filter_hours_used
    • +
    • motor_speed
    • +
    +
  • +
+

Please follow the instructions on Retrieving the Access Token to get the API token.

+

To add a Xiaomi Air Purifier to your installation, add the following to your configuration.yaml file:

+
fan:
+# Example configuration.yaml entry
+  - platform: xiaomi_miio
+    host: 192.168.130.66
+    token: YOUR_TOKEN
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of your fan.

+
+
token
+
+

(string)(Required)The API token of your fan.

+
+
name
+
+

(string)(Optional)The name of your fan.

+

Default value: Xiaomi Air Purifier

+
+
+
+

Platform Services

+

Service fan.xiaomi_miio_set_buzzer_on

+

Turn the buzzer on.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
+

Service fan.xiaomi_miio_set_buzzer_off

+

Turn the buzzer off.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
+

Service fan.xiaomi_miio_set_led_on

+

Turn the led on.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
+

Service fan.xiaomi_miio_set_led_off

+

Turn the led off.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
+

Service fan.xiaomi_miio_set_child_lock_on

+

Turn the child lock on.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
+

Service fan.xiaomi_miio_set_child_lock_off

+

Turn the child lock off.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a 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 attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
brightnessnoBrightness, between 0 and 2.
+

Service fan.xiaomi_miio_set_favorite_level

+

Set the favorite level of the operation mode “favorite”.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific air purifier. Else targets all.
levelnoLevel, between 0 and 16.
+
+
+ +
+
+ + + + + + + diff --git a/components/fan.zwave/index.html b/components/fan.zwave/index.html new file mode 100644 index 0000000000..9e979baa05 --- /dev/null +++ b/components/fan.zwave/index.html @@ -0,0 +1,220 @@ + + + + + + + + + Z-Wave Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Fan +

+
+
+

To get your Z-Wave fans working with Home Assistant, follow the instructions for the general Z-Wave component.

+
+
+ +
+
+ + + + + + + diff --git a/components/fan/index.html b/components/fan/index.html new file mode 100644 index 0000000000..e45332044e --- /dev/null +++ b/components/fan/index.html @@ -0,0 +1,180 @@ + + + + + + + + + Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fan +

+
+
+

The fan component is built for the controlling of fan devices. It can be called the little brother of the climate component.

+

To enable this component, pick one of the platforms, and add it to your configuration.yaml:

+
# Example configuration.yaml entry
+climate:
+  platform: fan
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/feedreader/index.html b/components/feedreader/index.html new file mode 100644 index 0000000000..dc9a19e466 --- /dev/null +++ b/components/feedreader/index.html @@ -0,0 +1,261 @@ + + + + + + + + + Feedreader - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Feedreader +

+
+
+

Add an RSS/Atom feed reader that polls feeds every hour and sends new entries into the event bus.

+

To use RSS feeds in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+feedreader:
+  urls:
+    - https://home-assistant.io/atom.xml
+    - https://github.com/blog.atom
+    - https://hasspodcast.io/feed/podcast
+
+
+

Configuration variables:

+
    +
  • urls (Required): List of URLS for your feeds.
  • +
+

Feedreader events can be used out of the box to trigger automation actions, e.g.:

+
automation:
+  - alias: Trigger action when new element(s) in RSS feed
+    trigger:
+      platform: event
+      event_type: feedreader
+    action:
+      service: script.turn_on
+      entity_id: script.my_action
+
+
+
automation:
+  - alias: Send notification of RSS feed title when updated
+    trigger:
+      platform: event
+      event_type: feedreader
+    action:
+      service: persistent_notification.create
+      data_template:
+        title: "New HA Podcast available"
+        message: "New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}"
+        notification_id: "{{ trigger.event.data.title }}"
+
+
+

Any field under the <entry> 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:

+
EVENT_FEEDREADER = "feedreader"
+hass.bus.listen(EVENT_FEEDREADER, event_listener)
+
+
+

To get started developing custom components, please refer to the developers documentation

+

For a drop in packaged complete example of Feedreader, you can use the PodCast notifier.

+
+
+ +
+
+ + + + + + + diff --git a/components/ffmpeg/index.html b/components/ffmpeg/index.html new file mode 100644 index 0000000000..3b263ec2b7 --- /dev/null +++ b/components/ffmpeg/index.html @@ -0,0 +1,515 @@ + + + + + + + + + FFmpeg - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FFmpeg +

+
+
+

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. If you want hardware acceleration support on a Raspberry Pi, you will need to build from source by yourself. Windows binaries are available on the FFmpeg website. +

+

+If you are using Hass.io 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:

+
ffmpeg:
+
+
+

Configuration variables:

+
    +
  • ffmpeg_bin (Optional): Default ffmpeg. The name or path to the ffmpeg binary.
  • +
  • run_test (Optional): Default True. Check if input is usable by ffmpeg.
  • +
+

Raspbian Debian Jessie Lite Installations

+

To get the binary on Raspbian Debian Jessie Lite on a RPi you need to perform the following:

+
$ sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
+$ sudo apt-get update
+$ sudo apt-get -t jessie-backports install ffmpeg
+
+
+

We can use now following in the configuration:

+
ffmpeg:
+  ffmpeg_bin: /usr/bin/ffmpeg
+
+
+

Troubleshooting

+

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

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

USB cameras

+

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.

+
$ v4l2-ctl --list-devices
+UVC Camera (046d:0825) (usb-0000:00:14.0-1):
+  /dev/video1
+
+Integrated Camera (usb-0000:00:14.0-10):
+  /dev/video0
+
+
+

Record a test video with your USB device /dev/video1:

+
$ ffmpeg -i /dev/video1 -codec:v libx264 -qp 0 lossless.mp4
+[...]
+Input #0, video4linux2,v4l2, from '/dev/video1':
+  Duration: N/A, start: 43556.376974, bitrate: 147456 kb/s
+    Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
+[...]
+Output #0, mp4, to 'lossless.mp4':
+  Metadata:
+    encoder         : Lavf57.41.100
+    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc
+    Metadata:
+      encoder         : Lavc57.48.101 libx264
+    Side data:
+      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
+Stream mapping:
+  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
+Press [q] to stop, [?] for help
+frame=  223 fps= 40 q=-1.0 Lsize=   16709kB time=00:00:07.40 bitrate=18497.5kbits/s dup=58 drop=0 speed=1.32x
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/foursquare/index.html b/components/foursquare/index.html new file mode 100644 index 0000000000..718ad09fe8 --- /dev/null +++ b/components/foursquare/index.html @@ -0,0 +1,213 @@ + + + + + + + + + Foursquare - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Foursquare +

+
+
+

The foursquare component accepts pushes from the Foursquare Real-Time API and a service to check users in on Swarm.

+
# Example configuration.yaml entry
+foursquare:
+  access_token: "<foursquare access token>"
+  push_secret: "<foursquare push secret>"
+
+
+

Configuration variables:

+
    +
  • access_token (Required): A Foursquare API access token.
  • +
  • push_secret (Required): The push secret that Foursquare provides to you in the app dashboard.
  • +
+

Getting the access token

+

After you have registered your APP on your My Apps Page you get a CLIENT_ID and you have specified a +REDIRECT_URL which can be any URL you like, but since it will get your access token via a HTTP GET request, it should be a URL which will ignore the access_token HTTP GET variable. A good idea is to choose the URL of your Home Assistant. +Visit the following URL in your browser:

+
https://foursquare.com/oauth2/authenticate?client_id=CLIENT_ID&response_type=token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
+
+
+

and change the CLIENT_ID and YOUR_REGISTERED_REDIRECT_URL to your actual values. +You will receive an OAuth request landing page, asking you if you want to connect your Foursquare account to your newly created app. Say “Yes”. +After that, you will get redirected to your REDIRECT_URL with the access_token as a HTTP GET variable. Copy everything after the = and paste it in your configuration.yaml as the access_token.

+

Real-Time API

+

The component accepts pushes from Foursquare at /api/foursquare. The route does not require authentication.

+

Foursquare check-in events can be used out of the box to trigger automation actions, e.g.:

+
automation:
+  - alias: Trigger action when you check into a venue.
+    trigger:
+      platform: event
+      event_type: foursquare.push
+    action:
+      service: script.turn_on
+      entity_id: script.my_action
+
+
+

Check ins

+

To check a user in, use the foursquare/checkin service.

+

Parameters:

+
    +
  • venueId (Required): The Foursquare venue where the user is checking in.
  • +
  • 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.”
  • +
  • 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.
  • +
  • altAcc (Optional): Vertical accuracy of the user’s location, in meters.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/frontend/index.html b/components/frontend/index.html new file mode 100644 index 0000000000..a70f208013 --- /dev/null +++ b/components/frontend/index.html @@ -0,0 +1,327 @@ + + + + + + + + + Frontend - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Frontend +

+
+
+

This offers the official frontend to control Home Assistant.

+
# Example configuration.yaml entry
+frontend:
+
+
+
+

Configuration Variables

+
+
javascript_version
+
+

(string)(Optional)Version of the JavaScript to serve to clients. Options: es5 - transpiled so old browsers understand it. latest - not transpiled, so will work on recent browsers only. auto - select a version according to the browser user-agent. The value in the config can be overiden by putting es5 or latest in the URL. For example http://localhost:8123/states?es5

+

Default value: auto

+
+
themes
+
+

(map)(Optional)Allow to define different themes. See below for further details.

+
+
+
+
[identifier]
+
+

(list | map)(Required)Name to use in the frontend.

+
+
+
+
[css-identifier]
+
+

(list | string)(Required)The CSS identifier.

+
+
+
+
+
+
extra_html_url
+
+

(list)(Optional)List of additional resources to load in latest javascript mode.

+
+
extra_html_url_es5
+
+

(list)(Optional)List of additional resources to load in es5 javascript mode.

+
+
development_repo
+
+

(string)(Optional)Allow to point to a directory containing frontend files instead of taking them from a pre-built PyPI package. Useful for Frontend development.

+
+
+
+

Themes

+

Starting with version 0.49 you can define themes:

+

Example:

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

+

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:

+
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”:

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

Manual Theme Selection

+

When themes are enabled in the configuration.yaml file, a new option will show up in the Configuration panel under General called “Set a theme.” You can then choose any installed theme from the dropdown list and it will be applied immediately.

+

+ + Set a theme +

+

Loading extra HTML

+

Starting with version 0.53 you can specify extra HTML files to load.

+

Example:

+
# Example configuration.yaml entry
+frontend:
+  extra_html_url:
+    - https://example.com/file1.html
+    - /file2.html
+
+
+

Those will be loaded via <link rel='import' href='' async> on any page (states and panels).

+

Manual Language Selection

+

The browser language is automatically detected. To use a different language, go to General in the Configuration panel and select a one from “Choose a Language”. It will be applied immediately.

+

+ + Choose a Language +

+
+
+ +
+
+ + + + + + + diff --git a/components/gc100/index.html b/components/gc100/index.html new file mode 100644 index 0000000000..f2f32b2dda --- /dev/null +++ b/components/gc100/index.html @@ -0,0 +1,465 @@ + + + + + + + + + gc100 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ gc100 +

+
+
+

The Global Caché 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:

+
# 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/components/goalfeed/index.html b/components/goalfeed/index.html new file mode 100644 index 0000000000..8eab8de853 --- /dev/null +++ b/components/goalfeed/index.html @@ -0,0 +1,250 @@ + + + + + + + + + Goalfeed - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Goalfeed +

+
+
+

The goalfeed component lets you use your Goalfeed account to trigger events in Home Assistant whenever a NHL or MLB team scores.

+

To use this component, enter your email address and password from your goalfeed.ca account in your configuration.yaml file:

+
# Example configuration.yaml entry
+goalfeed:
+  username: your_email@gmail.com
+  password: goalfeed_password
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The email address on your goalfeed.ca account.

+
+
password
+
+

(string)(Required)The password on your goalfeed.ca account.

+
+
+
+

Now you can use the goal event type in your automations:

+
- alias: 'Jets Goal'
+  trigger:
+    platform: event
+    event_type: goal
+    event_data:
+      team_name: "Winnipeg Jets"
+
+
+

Goal events have the following event data:

+
    +
  • team: Three letter code representing the team. This is unique within the leagues, but not unique across the leagues (i.e. ‘WPG’ or ‘TOR’).
  • +
  • team_name: The team that scored (i.e. ‘Winnipeg Jets’ or ‘Toronto Blue Jays’).
  • +
  • team_hash: A unique hash for the team (you can find these values on https://goalfeed.ca/get-teams).
  • +
  • league_id: A unique number for the league.
  • +
  • league_name: A the short name of the league (i.e. ‘NHL’ or ‘MLB’).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/google_assistant/index.html b/components/google_assistant/index.html new file mode 100644 index 0000000000..cb2cf2d4ea --- /dev/null +++ b/components/google_assistant/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Google Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Assistant +

+
+
+

The google_assistant component allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device.

+

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

+

To enable this, add the following lines to your configuration.yaml file:

+
# 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]
+  agent_user_id: [a string to identify user]
+  api_key: [a Homegraph API Key generated for the Google Actions project]
+  exposed_domains:
+    - switch
+    - light
+    - group
+  entity_config:
+    switch.kitchen:
+      name: Custom Name for Google Assistant
+      aliases:
+        - bright lights
+        - entry lights
+    light.living_room:
+      expose: false
+      room: living room
+
+
+

Configuration variables:

+
+

Configuration Variables

+
+
project_id
+
+

(string)(Required)Project ID from the Google Developer console (looks like words-2ab12)

+
+
client_id
+
+

(string)(Required)A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth (example aBcDeFgHiJkLmNoP)

+
+
access_token
+
+

(string)(Required)Another different long random URL safe string (example aBcDeFgHiJkLmNoP)

+
+
agent_user_id
+
+

(string)(Optional)A string to identify the user, e.g. email address. If not provided, the component will generate one.

+
+
api_key
+
+

(string)(Optional)An API Key generated for the project from Google Console which allows you to update devices without unlinking and relinking an account (see step 9 below). If not provided then the google_assistant.request_sync service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, “Ok Google, sync my devices”. Once you have setup this componenet you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration.

+
+
expose_by_default
+
+

(boolean)(Optional)Expose devices in all supported domains by default.

+

Default value: true

+
+
exposed_domains
+
+

(list)(Optional)List of entity domains to expose to Google Assistant.

+
+
entity_config
+
+

(map)(Optional)Entity specific configuration for Google Assistant

+
+
+
+
<ENTITY_ID>
+
+

(map)(Optional)Entity to configure

+
+
+
+
name
+
+

(string)(Optional)Name of the entity to show in Google Assistant

+
+
expose
+
+

(boolean)(Optional)Force an entity to be exposed/excluded.

+
+
aliases
+
+

(list)(Optional)Aliases that can also be used to refer to this entity

+
+
room
+
+

(string)(Optional)Allows for associating this device to a Room in Google Assistant. This is currently non-functional, but will be enabled in the near future.

+
+
+
+
+
+
+
+

Available domains

+

Currently, the following domains are available to be used with Google Assistant, listed with their default types:

+
    +
  • group (on/off)
  • +
  • input boolean (on/off)
  • +
  • scene (on)
  • +
  • script (on)
  • +
  • switch (on/off)
  • +
  • fan (on/off)
  • +
  • light (on/off/brightness/rgb color/color temp)
  • +
  • cover (on/off/set position (via set brightness))
  • +
  • media_player (on/off/set volume (via set brightness))
  • +
  • climate (temperature setting)
  • +
+

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

If you’re not using Linux, you can use sites such as this one to generate a random string (containing mixed case letters and numbers) of up to 80 characters.

+

Setup

+
    +
  1. Download the gactions CLI to be used later. You can download and run this anywhere and on any machine. Just remember where you put it for later and don’t forget to run chmod +x gactions to make it executable on Mac or Linux.
  2. +
  3. Create a new file named project.json (in the same directory you downloaded gactions to) and replace the [YOUR HOME ASSISTANT URL:PORT] below with the URL you use to access Home Assistant. +Note: This must be an HTTPS URL to work. Don’t forget to include the port number if you’re not using port 443.
  4. +
+
{
+  "actions": [{
+    "name": "actions.devices",
+    "deviceControl": {
+    },
+    "fulfillment": {
+      "conversationName": "automation"
+    }
+  }],
+  "conversations": {
+    "automation":
+    {
+      "name": "automation",
+      "url": "https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant"
+    }
+  }
+}
+
+
+
    +
  1. Create a new project in the developer console. + a. Add/Import project + b. Go to Build under the Actions SDK box + c. Copy the command that looks like:
  2. +
+

gactions update --action_package PACKAGE_NAME --project doctest-2d0b8

+
    +
  1. Replace PACKAGE_NAME with project.json and run that command in a console from the same directory you saved project.json in (you’ll need to put ./ before gactions so that it reads ./gactions if you’re running it on Linux or Windows). It should output a URL like https://console.actions.google.com/project/doctest-2d0b8/overview - go there.
  2. +
  3. 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.
  4. +
  5. The final item on that page Account linking is required for your app to interact with Home Assistant. +
      +
    1. Grant type: Implicit
    2. +
    3. Client ID: The client_id from your Home Assistant configuration above
    4. +
    5. Authorization URL (replace with your actual URL): https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth. If you have set api_password: add this password to the URL https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth?api_password=[YOUR API PASSWORD])
    6. +
    7. Configure your client. Add scopes for email and name.
    8. +
    9. Testing instructions: Enter anything. It doesn’t matter since you won’t submit this app.
    10. +
    +
  6. +
  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. +
  9. If you haven’t already added the component configuration to configuration.yaml and restarted Home Assistant, you’ll be unable to continue until you have.
  10. +
  11. Open the Google Assistant app and go into Settings > Home Control
  12. +
  13. 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.
  14. +
  15. If you want to allow other household users to control the devices: +
      +
    1. Go to the developer console using the address from point 4.
    2. +
    3. Under the gear icon, click Permissions
    4. +
    5. Click Add, type the new user’s e-mail address and choose Project -> Editor role
    6. +
    7. Have the new user go to developer console and repeat steps starting from point 7.
    8. +
    +
  16. +
  17. If you want to use the google_assistant.request_sync service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: +
      +
    1. Go to the cloud console
    2. +
    3. Select your project and click Enable Homegraph API
    4. +
    5. Go to Credentials and select API Key from Create Credentials
    6. +
    7. Note down the generated API Key and use this in the configuration
    8. +
    +
  18. +
+

Troubleshooting the request_sync service

+

The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like “Request contains an invalid argument”. If this happens, then unlink the account from Home Control and relink.

+

The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on developer console. Resolve this by:

+
    +
  1. Removing your project from the developer console.
  2. +
  3. Add a new project to the cloud console. Here you get a new project_id.
  4. +
  5. Enable Homegraph API to the new project.
  6. +
  7. Generate a new API key.
  8. +
  9. Again, create a new project in the developer console. Described above. But at the step ‘Build under the Actions SDK box’ choose your newly created project. By this, they share the same project_id.
  10. +
+
+
+ +
+
+ + + + + + + diff --git a/components/google_domains/index.html b/components/google_domains/index.html new file mode 100644 index 0000000000..4bd08d17e4 --- /dev/null +++ b/components/google_domains/index.html @@ -0,0 +1,198 @@ + + + + + + + + + Google Domains - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Domains +

+
+
+

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:

+
# Example configuration.yaml entry
+google_domains:
+  domain: subdomain.domain.com
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+
+

Configuration Variables

+
+
domain
+
+

(string)(Required)Your FQDN.

+
+
username
+
+

(string)(Required)The generated username for this DDNS record.

+
+
password
+
+

(string)(Required)The generated password for this DDNS record.

+
+
timeout
+
+

(number)(Optional)Timeout (in seconds) for the API calls.

+

Default value: 10

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/graphite/index.html b/components/graphite/index.html new file mode 100644 index 0000000000..e8981f10c5 --- /dev/null +++ b/components/graphite/index.html @@ -0,0 +1,203 @@ + + + + + + + + + Graphite - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Graphite +

+
+
+

The graphite component records all events and state changes and feeds the data to a graphite instance.

+

To enable this component, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+graphite:
+
+
+

Configuration variables:

+
    +
  • host (Option): IP address of your graphite host, eg. http://192.168.1.10. Defaults to localhost
  • +
  • port (Optional): Port to use. Defaults to 2003.
  • +
  • prefix (Optional): Prefix is the metric prefix in graphite. Defaults to ha.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/group/index.html b/components/group/index.html new file mode 100644 index 0000000000..6e88599d3a --- /dev/null +++ b/components/group/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Group - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Group +

+
+
+

Groups allow the user to combine multiple entities into one. A group can be promoted to a view by setting view: yes under the group definition. This will make the group available as a new tab in the frontend.

+

Check the Set State page from the Developer Tools and browse the Current entities: listing for all available entities.

+

By default, every group appears in the HOME tab. If you create a group default_view it will REPLACE the contents of the HOME tab so you can customize the HOME tab as you wish.

+
# Example configuration.yaml entry
+group:
+  default_view:
+    view: yes
+    icon: mdi:home
+    entities:
+      - group.kitchen
+      - group.awesome_people
+      - group.climate
+  kitchen:
+    name: Kitchen
+    entities:
+      - switch.kitchen_pin_3
+  upstairs:
+    name: Kids
+    icon: mdi:account-multiple
+    view: yes
+    entities:
+      - input_boolean.notify_home
+      - camera.demo_camera
+      - device_tracker.demo_paulus
+      - group.garden
+  climate:
+    name: Climate
+    view: no
+    entities:
+      - sensor.bedroom_temp
+      - sensor.porch_temp
+  awesome_people:
+    name: Awesome People
+    view: no
+    entities:
+      - device_tracker.dad_smith
+      - device_tracker.mom_smith
+
+
+

Configuration variables:

+
    +
  • view (Optional): If yes then the entry will be shown as a view (tab) at the top. Groups that are set to view: yes cannot be used as entities in other views.
  • +
  • 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 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.
  • +
+

+ +Example of groups shown as views in the frontend. +

+

If all entities in a group are switches or lights then Home Assistant adds a switch at the top of the card that turns them all on/off at once. If you want to hide this switch, set control to hidden.

+

You can create views (tabs) that contain other groups (but not other groups which are marked as view: yes). +Notice in the example below that in order to refer to the group “Living Room”, you use group.living_room (lowercase and spaces replaced with underscores).

+
# Example configuration.yaml entry that shows two groups, referred to in a view group (tab)
+  Living Room:
+    control: hidden
+    entities:
+      - light.light_family_1
+      - binary_sensor.motion_living
+  Bedroom: light.light_bedroom, switch.sleeping
+  Rooms:
+    view: yes
+    name: Rooms
+    entities:
+      - group.living_room
+      - group.bedroom
+
+
+

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 them to be visible in your custom groups and views.

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

Group behavior

+

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.

+

Customize group order

+

You can also order your groups using customize with order: if they don’t show up in the order you want them in.

+
# Example configuration.yaml to order groups with order:
+customize:
+  group.all_automations:
+    order: 1
+  group.all_scripts:
+    order: 2
+group:
+  automation_view:
+    name: Automation
+    view: yes
+    entities:
+      - group.all_automations
+      - group.all_scripts
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/hassio/index.html b/components/hassio/index.html new file mode 100644 index 0000000000..b9def484ee --- /dev/null +++ b/components/hassio/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/hdmi_cec/index.html b/components/hdmi_cec/index.html new file mode 100644 index 0000000000..28b2075138 --- /dev/null +++ b/components/hdmi_cec/index.html @@ -0,0 +1,380 @@ + + + + + + + + + HDMI CEC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HDMI CEC +

+
+
+

The hdmi_cec component provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entities for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as sound-bars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use cec-client (part of the libcec package) to listen to traffic on the CEC bus and discover the correct numbers.

+

CEC Setup

+

Adapter

+

The computer running Home Assistant must support CEC, and of course be connected via HDMI to a device also supporting CEC. You can purchase a USB CEC adapter to add support if necessary. Note that all Raspberry Pi models support CEC natively.

+

libcec

+

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, 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 then just move forward to the configuration as all requirements are already fulfilled. +

+

Symlinking into virtual environment

+

Create a symlink to the cec installation including the _cec.so file. Keep in mind different installation methods will result in different locations of cec.

+
$ ln -s /path/to/your/installation/of/cec /path/to/your/venv/lib/python*/site-packages
+$ ln -s /path/to/your/installation/of/_cec.so /path/to/your/venv/lib/python*/site-packages
+
+
+
+
Symlinking examples:
+

For the default virtual environment of a HASSbian Image for Raspberry Pi the command would be as follows.

+
$ ln -s /usr/local/lib/python*/dist-packages/cec /srv/homeassistant/lib/python*/site-packages
+$ ln -s /usr/local/lib/python*/dist-packages/_cec.so /srv/homeassistant/lib/python*/site-packages
+
+
+
+

If after symlinking and adding hdmi_cec: to your configuration you are getting the following error in your logs, +* failed to open vchiq instance you will also need to add the user account Home Assistant runs under, to the video group. To add the Home Assistant user account to the video group, run the following command. $ usermod -a -G video <hass_user_account> +

+

Testing your installation

+
    +
  • Login to Raspberry Pi
  • +
+
ssh pi@your_raspberry_pi_ip
+
+
+
    +
  • at the command line type:
  • +
+
echo scan | cec-client -s -d 1
+
+
+
    +
  • This will give you the list of devices that are on the bus
  • +
+
opening a connection to the CEC adapter...
+requesting CEC bus information ...
+CEC bus information
+===================
+device #4: Playback 1
+address:       3.0.0.0
+active source: no
+vendor:        Sony
+osd string:    BD
+CEC version:   1.4
+power status:  on
+language:      ???
+
+
+

address: entry above this will be used to configure Home Assistant, this address is represented below as 3: BlueRay player. +

+

Configuration Example

+

In the following example, a Pi Zero running Home Assistant is on a TV’s HDMI port 1. HDMI port 2 is attached to a AV receiver. Three devices are attached to the AV receiver on HDMI ports 1 through 3.

+

You can use either direct mapping name to physical address of device

+
hdmi_cec:
+  devices:
+    TV: 0.0.0.0
+    Pi Zero: 1.0.0.0
+    Fire TV Stick: 2.1.0.0
+    Chromecast: 2.2.0.0
+    Another Device: 2.3.0.0
+    BlueRay player: 3.0.0.0
+
+
+

or port mapping tree:

+
hdmi_cec:
+  devices:
+    1: Pi Zero
+    2:
+      1: Fire TV Stick
+      2: Chromecast
+      3: Another Device
+    3: BlueRay player
+
+
+

Choose just one schema. Mixing both approaches is not possible.

+

Another option you can use in config is platform which specifying of default platform of HDMI devices. “switch” and “media_player” are supported. Switch is default.

+
hdmi_cec:
+  platform: media_player
+
+
+

Then you set individual platform for devices in customizations:

+
hdmi_cec:
+  types:
+    hdmi_cec.hdmi_5: media_player
+
+
+

And the last option is host. PyCEC supports bridging CEC commands over TCP. When you start pyCEC on machine with HDMI port (python -m pycec), you can then run homeassistant on another machine and connect to CEC over TCP. Specify TCP address of pyCEC server:

+
hdmi_cec:
+  host: 192.168.1.3
+
+
+

Services

+

Select Device

+

Call the hdmi_cec.select_device service with the name of the device from config or entity_id or physical address”to select it, for example:

+
{"device": "Chromecast"}
+
+
+
{"device": "switch.hdmi_3"}
+
+
+
{"device": "1.1.0.0"}
+
+
+

So an Automation action using the example above would look something like this.

+
action:
+  service: hdmi_cec.select_device
+    data:
+      device: Chromecast
+
+
+

Power On

+

Call the hdmi_cec.power_on service (no arguments) to power on any devices that support this function.

+

An Automation action using the example above would look something like this.

+
action:
+  service: hdmi_cec.power_on
+
+
+

Standby

+

Call the hdmi_cec.standby service (no arguments) to place in standby any devices that support this function.

+

An Automation action using the example above would look something like this.

+
action:
+  service: hdmi_cec.standby
+
+
+

Change volume level

+

Call the hdmi_cec.volume service with one of following commands:

+

Volume up

+

Increase volume three times:

+
{"up": 3}
+
+
+

Keep increasing volume until release is called:

+
{"up": "press"}
+
+
+

Stop increasing volume:

+
{"up": "release"}
+
+
+

Volume down

+

Decrease volume three times:

+
{"down": 3}
+
+
+

Keep decreasing volume until release is called:

+
{"down": "press"}
+
+
+

Stop decreasing volume:

+
{"down": "release"}
+
+
+

Volume mute

+

Toggle mute:

+
{"mute": ""}
+
+
+

value is ignored.

+

Useful References

+ +
+
+ +
+
+ + + + + + + diff --git a/components/history/index.html b/components/history/index.html new file mode 100644 index 0000000000..f0ea9f4955 --- /dev/null +++ b/components/history/index.html @@ -0,0 +1,295 @@ + + + + + + + + + History - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ History +

+
+
+

The history component will track everything that is going on within Home Assistant and allows the user to browse through it. It depends on the recorder component for storing the data and uses the same database setting. If any entities are excluded from being recorded, no history will be available for these entities.

+

To enable the history option in your installation, add the following to your configuration.yaml file:

+
# Basic configuration.yaml entry
+history:
+
+
+

+ + + +

+

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

+

Configuration variables:

+
    +
  • exclude (Optional): Configure which components should not be displayed. +
      +
    • entities (Optional): The list of entity ids to be excluded from the history.
    • +
    • domains (Optional): The list of domains to be excluded from the history.
    • +
    +
  • +
  • include (Optional): Configure which components should be displayed. +
      +
    • entities (Optional): The list of entity ids to be included to the history.
    • +
    • domains (Optional): The list of domains to be included to the history.
    • +
    +
  • +
+

Without any include or exclude configuration the history displays graphs for every entity (well that’s not exactly true - for instance hidden entities or scenes are never shown) on a given date. If you are only interested in some of the entities you have several options:

+

Define domains and entities to exclude (aka. blacklist). This is convenient when you are basically happy with the information displayed, but just want to remove some entities or domains. Usually these are entities/domains which do not change (like weblink) or rarely change (like updater or automation).

+
# Example configuration.yaml entry with exclude
+history:
+  exclude:
+    domains:
+      - automation
+      - weblink
+      - updater
+    entities:
+      - sensor.last_boot
+      - sensor.date
+
+
+

Define domains and entities to display by using the include configuration (aka. whitelist). If you have a lot of entities in your system and your exclude list is getting too large, it might be better just to define the entities or domains to include.

+
# Example configuration.yaml entry with include
+history:
+  include:
+    domains:
+      - sensor
+      - switch
+      - media_player
+
+
+

Use the include list to define the domains/entities to display, and exclude some of them within the exclude list. This makes sense if you, for instance, include the sensor domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the include entities list just include the sensor domain and exclude the sensor entities you are not interested in. Note that the order of any include entities will be displayed as listed in the configuration, otherwise, the display order is arbitrary.

+
# Example configuration.yaml entry with include and exclude
+history:
+  include:
+    domains:
+      - sensor
+      - switch
+      - media_player
+  exclude:
+    entities:
+     - sensor.last_boot
+     - sensor.date
+
+
+

If you’d like the order of display of the sensors to follow the way +they are listed in the included entity list, you can set the flag +use_include_order to True.

+
# Example configuration.yaml entry using specified entity display order
+history:
+  use_include_order: True
+  include:
+    entities:
+      - sun.sun
+      - light.front_porch
+
+
+

Implementation details

+

The history is stored in a SQLite database home-assistant_v2.db within your configuration directory unless the recorder component is set up differently.

+
    +
  • events table is all events except time_changed that happened while recorder component was running.
  • +
  • states table contains all the new_state values of state_changed events.
  • +
  • Inside the states table you have: +
      +
    • entity_id: the entity_id of the entity
    • +
    • state: the state of the entity
    • +
    • attributes: JSON of the state attributes
    • +
    • last_changed: timestamp last time the state has changed. A state_changed event can happen when just attributes change.
    • +
    • last_updated: timestamp anything has changed (state, attributes)
    • +
    • created: timestamp this entry was inserted into the database
    • +
    +
  • +
+

When the history component queries the states table it only selects states where the state has changed: WHERE last_changed=last_updated

+

On dates

+

SQLite databases do not support native dates. That’s why all the dates are saved in seconds since the UNIX epoch. Convert them manually using this site or in Python:

+
from datetime import datetime
+datetime.fromtimestamp(1422830502)
+
+
+

API

+

The history information is also available through the RESTful API.

+
+
+ +
+
+ + + + + + + diff --git a/components/history_graph/index.html b/components/history_graph/index.html new file mode 100644 index 0000000000..7551e1f46e --- /dev/null +++ b/components/history_graph/index.html @@ -0,0 +1,261 @@ + + + + + + + + + History Graph - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ History Graph +

+
+
+

+ +

+

The history_graph component will make the UI display a graph similar to the graphs in more-info popups and the history panel.

+

To use this component in your installation, add the following to your configuration.yaml file:

+
# Minimal configuration.yaml entry
+history_graph:
+  gr1:
+    entities:
+      - light.ceiling.lights
+  
+
+
+

Configuration variables

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeOptionalDefaultDescription
entitiesno List of entities whose history to show as a graph.
nameyesIDName to display.
hours_to_showyes24Number of hours to show.
refreshyes0Number of seconds between graph refreshes. 0 for no refreshes.
+

Full Example

+
# 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/components/hive/index.html b/components/hive/index.html new file mode 100644 index 0000000000..f3d40e5ffd --- /dev/null +++ b/components/hive/index.html @@ -0,0 +1,500 @@ + + + + + + + + + Hive - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hive +

+
+
+

This Hive component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating.

+

This component uses the unofficial API used in the official Hive website https://my.hivehome.com, and you will need to use the same Username and Password you use on the Hive website to configure this Hive component in Home Assistant.

+

To add your Hive devices into your Home Assistant installation, using the default scan_interval, add the following to your ‘configuration.yaml’ file:

+
# Example configuration.yaml entry
+hive:
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)Your username from https://my.hivehome.com.

+
+
password
+
+

(string)(Required)Your password from https://my.hivehome.com.

+
+
scan_interval
+
+

(int)(Optional)The time in minutes between Hive API calls

+

Default value: 2

+
+
+
+

The Hive Home Assistant platform currently supports the following Hive devices:

+
    +
  • Hive Active Heating (including hot water and Hive Multizone)
  • +
  • Hive Active Light Dimmable
  • +
  • Hive Active Light Cool to Warm White
  • +
  • Hive Active Light Color Changing
  • +
  • Hive Active Plug
  • +
  • Hive Window or Door Sensor
  • +
  • Hive Motion Sensor
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/homekit/index.html b/components/homekit/index.html new file mode 100644 index 0000000000..310bfb6b1d --- /dev/null +++ b/components/homekit/index.html @@ -0,0 +1,248 @@ + + + + + + + + + HomeKit - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HomeKit +

+
+
+

The HomeKit component allows you to forward entities from Home Assistant to Apple HomeKit, so they could be controlled from Apple Home app and Siri.

+
+

Configuration Variables

+
+
homekit
+
+

(map)(Required)HomeKit configuration.

+
+
+
+
pincode
+
+

(string)(Optional)Pin code required during setup of HomeKit Home Assistant accessory. The format needs to be ‘XXX-XX-XXX’ where X is a number between 0 and 9.

+

Default value: “123-45-678”

+
+
port
+
+

(int)(Optional)Port for the HomeKit extension.

+

Default value: 51826

+
+
+
+
+
+

Setup

+

To enable the HomeKit component in Home Assistant, add the following to your configuration file:

+
# Example for HomeKit setup
+homekit:
+  pincode: '123-45-678'
+
+
+

It is not recommended to choose ‘123-45-678’ as your pin code!

+

After Home Assistant has started, all supported entities (see the list below which components are already integrated) will be exposed to HomeKit. To add them:

+
    +
  1. Open the Home App.
  2. +
  3. Choose Add Accessory and then Don't Have a Code or Can't Scan?.
  4. +
  5. The Home Assistant Bridge should be listed there. Select it and follow the instructions to complete setup.
  6. +
+

After the setup is completed you should be able to control your Home Assistant components through Home and Siri.

+

Supported Components

+

The following components are currently supported:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ComponentType NameDescription
alarm_control_panelSecuritySystemAll security systems.
climateThermostatAll climate devices.
coverWindowAll covers that support set_cover_position.
sensorTemperatureSensorAll sensors that have Celsius and Fahrenheit as their unit_of_measurement.
switch/remoteSwitchAll switches or remotes (represented as switches).
+

Currently only devices that are setup when Home Assistant is starting can be exposed to HomeKit. This means that especially Z-Wave components are currently not supported, since they will be setup afterwards. We are working on a solution for this problem.

+
+
+ +
+
+ + + + + + + diff --git a/components/homematic/index.html b/components/homematic/index.html new file mode 100644 index 0000000000..d37d32cc51 --- /dev/null +++ b/components/homematic/index.html @@ -0,0 +1,671 @@ + + + + + + + + + Homematic - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic +

+
+
+

The Homematic 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 devices, uni-directional communication is possible as well.

+

Device support is available for most of the wired and wireless devices, as well as a few IP devices. If you have a setup with mixed protocols, you have to configure additional hosts with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. The virtual thermostatgroups the CCU provides use port 9292 and require you to set the path setting to /groups.

+

If you want to see if a specific device you have is supported, head over to the pyhomematic repository and browse through the source code. A dictionary with the device identifiers (e.g. HM-Sec-SC-2) can be found within the relevant modules near the bottom. If your device is not supported, feel free to contribute.

+

We automatically detect all devices we currently support and try to generate useful names. If you enable name-resolving, we try to fetch names from Metadata (Homegear), via JSON-RPC or the XML-API you may have installed on your CCU. Since this may fail this is disabled by default. +You can manually rename the created entities by using Home Assistant’s Customizing feature. With it you are also able to hide entities you don’t want to see in the UI.

+

To set up the component, add the following information to your configuration.yaml file:

+
homematic:
+  interfaces:
+    wireless:
+      host: 127.0.0.1
+
+
+

Configuration variables (global):

+
    +
  • interfaces (Required): Configuration for each XML-RPC interface to integrate into Home Assistant.
  • +
  • hosts (Optional): Configuration for each Hub (CCU/Homegear) to integrate into Home Assistant.
  • +
  • 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.
  • +
+

Configuration variables (interface):

+
    +
  • host (Required): IP address or Hostname of CCU/Homegear device or Hass.io add-on.
  • +
  • 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.
  • +
  • username (Optional): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU.
  • +
  • password (Optional): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above.
  • +
  • path (Optional): Set to /groups when using port 9292.
  • +
+

Configuration variables (host):

+
    +
  • host (Required): IP address of CCU/Homegear device.
  • +
  • username (Optional): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU.
  • +
  • password (Optional): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above.
  • +
+

Example configuration with multiple protocols and some other options set:

+
homematic:
+  interfaces:
+    rf:
+      host: 127.0.0.1
+      resolvenames: json
+      username: Admin
+      password: secret
+      primary: true
+      variables: true
+    wired:
+      host: 127.0.0.1
+      port: 2000
+      resolvenames: json
+      username: Admin
+      password: secret
+    ip:
+      host: 127.0.0.1
+      port: 2010
+    groups:
+      host: 127.0.0.1
+      port: 9292
+      resolvenames: json
+      username: Admin
+      password: secret
+      path: /groups
+  hosts:
+    ccu2:
+      host: 127.0.0.1
+      username: Admin
+      password: secret
+    
+
+
+

The resolvenames option

+

We use three approaches to fetch the names of devices. Each assumes you have properly named your devices in your existing Homematic setup. As a general advice: Use ASCII for your devices names. Home Assistant won’t include non-ASCII characters in entity-names.

+
    +
  1. json: The CCU allows to fetch details of the paired devices via JSON-RPC. For this to work you need to add valid credentials to your component-configuration. Guest-access is sufficient to query for device names.
  2. +
  3. xml: If you use a CCU, there is an add-on called the “XML-API”. With it installed, you are able to fetch all kinds of information from you CCU using XML-RPC. We can leverage this and fetch the names of devices set within the CCU. We don’t support authentication with this method.
  4. +
  5. metadata: Homegear provides device-names through the metadata devices internally have. When using an HM-CFG-LAN interface, you typically use a configuration software (“HomeMatic-Komponenten konfigurieren” is the name of the shortcut on your desktop by default) to pair and configure your devices. If you have paired devices, you’ll see them listed in a table. The leftmost column (Name) is prefilled with default names. You can click such a name and enter whatever you like.
  6. +
+

Resolving names can take some time. So when you start Home Assistant you won’t see you devices at first. For a setup with 20+ devices it can take up to a minute until all devices show up in the UI.

+

Multiple hosts

+

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 entities in Home Assistant. They all use their own connection and work as expected.

+

Reading attributes of entities

+

Most devices have, besides their state, additional attributes like their battery state or valve position. These can be accessed using templates in automations, or even as their own entities using the template sensor component. Here’s an example of a template sensor that exposes the valve state of a thermostat.

+
sensor:
+- platform: template
+  sensors:
+    bedroom_valve:
+      value_template: '{{ states.climate.leq123456.attributes.Valve }}'
+      entity_id: climate.leq123456
+      friendly_name: 'Bedroom valve'
+
+
+

Variables

+

It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. +The states of the variables are available through the attributes of your hub entity (e.g. homematic.ccu2). Use templates (as mentioned above) to make your variables available to automations or as entities. +The values of variables are polled from the CCU/Homegear in an interval of 30 seconds. Setting the value of a variable happens instantly and is directly pushed.

+

Events

+

When HomeMatic devices change their state or some other internal value, the CCU/Homegear sends event messages to Home Assistant. These events are automatically parsed and the entities in Home Assistant are updated. However, you can also manually use these events to trigger automations. Two event-types are available:

+
    +
  • homematic.keypress: For devices with buttons, see information below
  • +
  • homematic.impulse: For impulse sensors
  • +
+

Devices with buttons

+

Devices with buttons (e.g. HM-Sen-MDIR-WM55, remote controls) may not be fully visible in the UI. This is intended, as buttons don’t serve any value here and all they do is trigger events. +As an example: +The HM-Sen-MDIR-WM55 motion detector will be displayed as 2 entities. A motion sensor and a brightness sensor. On top of that we have 2 sets (one set per button) of 4 events: PRESS_SHORT, PRESS_LONG, PRESS_CONT, PRESS_LONG_RELEASE. Be aware, that there are devices which don’t provide all of these events. But in general: if you can press it, it usually at least has PRESS_SHORT.

+

Here’s an example of how to use these events for automations:

+
automation:
+   trigger:
+     platform: event
+     event_type: homematic.keypress
+     event_data:
+       name: Kitchen Switch
+       channel: 1
+       param: PRESS_SHORT
+   action:
+     service: switch.turn_on
+     entity_id: switch.Kitchen_Ambience
+
+
+

The channel parameter is equal to the channel of the button you are configuring the automation for. You can view the available channels in the UI you use to pair your devices. +The name depends on if you chose to resolve names or not. If not, it will be the device ID (e.g. LEQ1234657). If you chose to resolve names (and that is successful), it will be the name you have set in your CCU or in the metadata (e.g. “Kitchen Switch”).

+

You can test whether your button works within Home Assistant if you look at the terminal output. When pressing a button, lines similar to those should appear:

+
2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=PRESS_SHORT, value=True
+2018-01-27 11:51:32 INFO (MainThread) [homeassistant.core] Bus:Handling <Event homematic.keypress[L]: param=PRESS_SHORT, name=your_nice_name, channel=6>
+2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=INSTALL_TEST, value=True
+
+
+

It may happen that “your_nice_name” is not resolved correctly; the according message (#2 in the above example) will be missing. This might be due to secure communication between your HM interface and the HM device. You can change the communication from “secure” to “standard” within your HM-interface to solve that issue (in “Einstellungen” - “Geräte” find your device and change “Übertragungsmodus” from secure to standard) - not recommended for devices that should have secure communication.

+

Services

+
    +
  • homematic.virtualkey: Simulate a keypress (or other valid action) on CCU/Homegear with device or virtual keys.
  • +
  • homematic.reconnect: Reconnect to CCU/Homegear without restarting Home Assistant (useful when CCU has been restarted)
  • +
  • homematic.set_variable_value: Set the value of a system variable.
  • +
  • homematic.set_device_value: Control a device manually (even devices without support). Equivalent to setValue-method from XML-RPC.
  • +
+

Examples

+

Simulate a button being pressed

+
...
+action:
+  service: homematic.virtualkey
+  data:
+    address: BidCoS-RF
+    channel: 1
+    param: PRESS_LONG
+
+
+

Open KeyMatic

+
...
+action:
+  service: homematic.virtualkey
+  data:
+    address: LEQ1234567
+    channel: 1
+    param: OPEN
+
+
+

Set boolean variable to true

+
...
+action:
+  service: homematic.set_variable_value
+  data:
+    entity_id: homematic.ccu2
+    name: Variablename
+    value: true
+
+
+

Advanced examples

+

If you are familiar with the internals of HomeMatic devices, you can manually set values on the devices. This can serve as a workaround if support for a device is currently not available, or only limited functionality has been implemented. +Using this service provides you direct access to the setValue-method of the primary connection. If you have multiple hosts, you may select the one hosting a specific device by providing the proxy-parameter with a value equivalent to the name you have chosen. In the example configuration from above rf, wired and ip would be valid values.

+

Manually turn on a switch actor

+
...
+action:
+  service: homematic.set_device_value
+  data:
+    address: LEQ1234567
+    channel: 1
+    param: STATE
+    value: true
+
+
+

Manually set temperature on thermostat

+
...
+action:
+  service: homematic.set_device_value
+  data:
+    address: LEQ1234567
+    channel: 4
+    param: SET_TEMPERATURE
+    value: 23.0
+
+
+

Manually set lock on KeyMatic devices

+
...
+action:
+  service: lock.lock
+  entity_id: lock.leq1234567
+
+
+

Manually set unlock on KeyMatic devices

+
...
+action:
+  service: lock.unlock
+  entity_id: lock.leq1234567
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/http/index.html b/components/http/index.html new file mode 100644 index 0000000000..c8cbd24fac --- /dev/null +++ b/components/http/index.html @@ -0,0 +1,285 @@ + + + + + + + + + HTTP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HTTP +

+
+
+

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 is HIGHLY recommended that you set the api_password, especially if you are planning to expose your installation to the internet. +

+

+Don’t use option server_host on a hass.io installation! +

+
# Example configuration.yaml entry
+http:
+  api_password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • api_password (Optional): Protect Home Assistant with a password.
  • +
  • server_host (Optional): Only listen to incoming requests on specific IP/host (default: bind to 0.0.0.0 which means accept all IPv4 connections). Use server_host: "::0" if you want to listen to (and only) IPv6.
  • +
  • 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 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 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.
  • +
  • ip_ban_enabled (Optional): Flag indicating whether additional IP filtering is enabled. Defaults to False.
  • +
  • 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:

+
# Example configuration.yaml entry
+http:
+  api_password: YOUR_PASSWORD
+  server_port: 12345
+  ssl_certificate: /etc/letsencrypt/live/hass.example.com/fullchain.pem
+  ssl_key: /etc/letsencrypt/live/hass.example.com/privkey.pem
+  cors_allowed_origins:
+    - https://google.com
+    - https://home-assistant.io
+  use_x_forwarded_for: True
+  trusted_networks:
+    - 127.0.0.1
+    - ::1
+    - 192.168.0.0/24
+    - 2001:DB8:ABCD::/48
+  ip_ban_enabled: True
+  login_attempts_threshold: 5
+
+
+

The Set up encryption using Let’s Encrypt blog post gives you details about the encryption of your traffic using free certificates from Let’s Encrypt.

+

Or use a self signed certificate following the instructions here Self-signed certificate for SSL/TLS.

+

On top of the http component is a REST API, Python API and WebSocket API available. There is also support for 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 sends and receives messages over HTTP.

+

To use those kind of sensors or binary sensors in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived.

+

All requests need to be sent to the endpoint of the device and must be POST.

+

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

+
127.0.0.1:
+  banned_at: '2016-11-16T19:20:03'
+
+
+

After a ban is added a Persistent Notification is populated to the Home Assistant frontend.

+

+Please note, that sources from trusted_networks won’t be banned automatically. +

+
+
+ +
+
+ + + + + + + diff --git a/components/hue/index.html b/components/hue/index.html new file mode 100644 index 0000000000..008feb9d5b --- /dev/null +++ b/components/hue/index.html @@ -0,0 +1,554 @@ + + + + + + + + + Philips Hue - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Philips Hue +

+
+
+

Philips Hue support is integrated into Home Assistant as a Hub that can drive the light platform. The preferred way to setup the Philips Hue platform is by enabling the discovery component.

+

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.

+

When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant configuration directory. That token authenticates the communication with the Hue bridge. This token uses the 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.

+

Once registration is complete you should see the Hue lights listed as “light” entities; if you don’t you may have to restart Home Assistant once more. 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, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+hue:
+  bridges:
+    - 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.
  • +
+

Migrating from older configuration

+

In previous versions of the Hue component the configuration looked different:

+
# Example configuration.yaml entry
+light:
+  - platform: hue
+    host: DEVICE_IP_ADDRESS
+
+
+

You will need to convert each bridge into an entry in the new configuration style. See above for an example.

+

Multiple Hue bridges

+

Multiple Hue bridges work transparently with discovery, you don’t have to do anything. If you prefer to configure them manually and 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:

+
# Example configuration.yaml entry
+hue:
+  bridges:
+    - host: BRIDGE1_IP_ADDRESS
+      filename: phue.conf
+    - host: BRIDGE2_IP_ADDRESS
+      filename: phue2.conf
+
+
+

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

+

Example:

+

To create a LightGroup named Ceiling lights that contains the lights 1, 2 and 3, execute the following command:

+
$ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http://<bridge>/api/<username>/groups
+
+
+

The <username> is the string that is used to register Home Assistant on the bridge, you can find it in the phue.conf file in your configuration path. <bridge> is the IP address or hostname of your Hue bridge.

+

You can find out the ids of your lights by executing the following command:

+
$ curl http://<bridge>/api/<username>/lights
+
+
+

Home Assistant will automatically detect your new LightGroup and add it to the interface.

+

+ To support Hue Light Groups, your bridge needs to have at least firmware 1.13 (released on June 3, 2016). +

+

More information can be found on the Philips Hue API documentation website.

+

Using Hue Scenes in Home Assistant

+

The Hue platform has its 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 hue.hue_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:

+
script:
+  porch_on:
+    sequence:
+      - service: hue.hue_activate_scene
+        data:
+          group_name: "Porch"
+          scene_name: "Porch Orange"
+
+
+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
group_namenoThe group/room name of the lights. Find this in the Hue official app.
scene_namenoThe name of the scene. Find this in the Hue official app.
+

Note: group_name is not linked to Home Assistant group name.

+

Finding Group and Scene Names

+

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.

+

Alternatively, you can dump all rooms and scene names using this gist. 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.

+

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 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/components/ifttt.manything/index.html b/components/ifttt.manything/index.html new file mode 100644 index 0000000000..06f871f597 --- /dev/null +++ b/components/ifttt.manything/index.html @@ -0,0 +1,316 @@ + + + + + + + + + ManyThing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ManyThing +

+
+
+

Manything 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 and the ManyThing Channel. Use the IFTTT Setup instructions to activate the IFTTT Platform.

+

After setting up IFTTT, Maker Channel and ManyThing Channel, you can use the following examples to configure Home Assistant.

+
# Example configuration.yaml entry
+automation:
+  - alias: 'ManyThing Recording ON'
+    # This calls an IFTTT recipe to turn on recording of the ManyThing Camera
+    # if we leave the house during the day.
+    trigger:
+      - platform: state
+        entity_id: group.all_devices
+        to: 'not_home'
+    condition:
+      - platform: state
+        entity_id: sun.sun
+        state: 'above_horizon'
+    action:
+      service: ifttt.trigger
+      data: {"event":"manything_on"}
+
+  - alias: 'ManyThing Recording OFF'
+    # This calls an IFTTT recipe to turn off recording of the ManyThing Camera
+    # when we get home unless it's nighttime.
+    trigger:
+      - platform: state
+        entity_id: group.all_devices
+        to: 'home'
+    condition:
+      - condition: state
+        entity_id: sun.sun
+        state: 'above_horizon'
+    action:
+      service: ifttt.trigger
+      data: {"event":"manything_off"}
+
+
+

Setting up a recipe

+

+ +You need to setup a unique trigger for each event you sent to IFTTT. +For ManyThing support, you need to set up an on and off event. +

+

Testing your trigger

+

You can use the developer tools to test your Maker Channel trigger. To do this, open the Home Assistant UI, 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:

+ + + + + + + + + + + + + + + + + + + + + +
FieldValue
domainifttt
servicetrigger
Service Data{"event": "manything_on"}
+
+
+ +
+
+ + + + + + + diff --git a/components/ifttt/index.html b/components/ifttt/index.html new file mode 100644 index 0000000000..d4046199fb --- /dev/null +++ b/components/ifttt/index.html @@ -0,0 +1,314 @@ + + + + + + + + + IFTTT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IFTTT +

+
+
+

IFTTT 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 for examples how to use it.

+
# Example configuration.yaml entry
+ifttt:
+  key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+
+

key is your API key which can be obtained by viewing the Settings of the Webhooks applet. It’s the last part of the URL (e.g. https://maker.ifttt.com/use/MYAPIKEY) you will find under My Applets > Webhooks > Settings.

+

+ +Property screen of the Maker Channel +

+

Once you have added your key to your configuration.yaml file, restart your Home Assistant server. This will load up the IFTTT component and make a service available to trigger events in IFTTT.

+

+After restarting the server, be sure to watch the console for any logging errors that show up in red, white or yellow. +

+

Testing your trigger

+

You can use the Developer tools to test your 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:

+ + + + + + + + + + + + + + + + + + + + + +
FieldValue
domainifttt
servicetrigger
Service Data{"event": "EventName", "value1": "Hello World"}
+

+ +When your screen looks like this, click the ‘call service’ button. +

+

Setting up a recipe

+

Press the New applet button and search for Webhooks.

+

+ +Choose “Webhooks” as service. +

+

+ +You need to setup a unique trigger for each event you sent to IFTTT. +

+
# Example configuration.yaml Automation entry
+automation:
+  alias: Startup Notification
+  trigger:
+    platform: homeassistant
+    event: start
+  action:
+    service: ifttt.trigger
+    data: {"event":"TestHA_Trigger", "value1":"Hello World!"}
+
+
+

IFTTT can also be used in scripts and with data_template. Here is the above automation broken into an automation and script using variables and data_templates.

+
# Example configuration.yaml Automation entry
+automation:
+  alias: Startup Notification
+  trigger:
+    platform: homeassistant
+    event: start
+  action:
+    service: script.ifttt_notify
+    data_template:
+      value1: 'HA Status:'
+      value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is "
+      value3: "{{ trigger.event.data.to_state.state }}"
+
+
+
#Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP).
+ifttt_notify:
+  sequence:
+    - service: ifttt.trigger
+      data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"}
+
+
+

Sending events from IFTTT to Home Assistant

+

To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web. This can be achieved by forwarding port 8123 from your router to the device running Home Assistant. If your ISP is giving you a new IP address from time to time, consider using DuckDNS.

+

In the URL field, you can then put an API URL. You probably want to use a POST action, so select POST as method. After your request line, you need to add your Home Assistant password, which you defined in the http section of your config, in the form of ?api_password=YOUR_PASSWORD. For the message body, refer to the API page linked above.

+

+ +

+

Additional Channel Examples

+

Additional examples of using IFTTT channels can be found below.

+ + + + + + + + + + + + + +
ChannelDescription
ManythingAutomates turning recording ON and OFF based on Home Assistant AWAY and HOME values.
+
+
+ +
+
+ + + + + + + diff --git a/components/ihc/index.html b/components/ihc/index.html new file mode 100644 index 0000000000..8c1313e3f8 --- /dev/null +++ b/components/ihc/index.html @@ -0,0 +1,526 @@ + + + + + + + + + IHC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IHC +

+
+
+

IHC Controller integration for Home Assistant allows you to connect the LK IHC controller to Home Assistant. +(The controller is sold under other names in different countries - “ELKO Living system” in Sweden and Norway)

+

An ihc section must be present in the configuration.yaml file and contain the following options:

+
# Example configuration.yaml entry
+ihc:
+   url: http://192.168.1.3
+   username: admin
+   password: mysecret
+   auto_setup: True
+   info: True
+
+
+
+

Configuration Variables

+
+
auto_setup
+
+

(bool)(Optional)True to have IHC products auto setup.

+
+
info
+
+

(bool)(Optional)If True additional IHC info will be shown on each component.

+
+
password
+
+

(string)(Required)The password for the IHC Controller.

+
+
url
+
+

(string)(Required)The URL of the IHC Controller.

+
+
username
+
+

(string)(Required)The username for the IHC Controller.

+
+
+
+

The info option will show the IHC “name”, “note” and “position” attributes. +This will make it easier to identify the IHC products within Home Assistant

+

There is currently support for the following device types within Home Assistant:

+ +

Auto setup of IHC products

+

If the auto setup is enabled, the ihc component will automatically find IHC products and insert these as devices in Home Assistant. +To disable this set auto_setup to False. (Auto setup is on by default) +See the individual device types for a list of IHC products to be recognized automatically.

+

Components will get a default name that is a combination of the IHC group and IHC resource id. +If you want to change the display names use the Customizing entities

+

Manual setup

+

Each device is associated with an IHC resource id. +To manually setup components you specify resource ids from the IHC project. +(The IHC project is the file you edit/upload to the IHC Controller using LK IHC Visual - or similar program if your controller is not the LK brand). +The project file is an XML file and you can view it with any text/XML editor. +You can rename it to have the XML extension and use a browser like Chrome or Internet Explorer. +The resources are the <airlink_xxx> or <dataline_xxx> eleements. +Shown as inputs or outputs of products in the IHC application. +You can also use inputs and outputs from function blocks. +These are the <resource_input> and <resource_output> elements from the project file.

+

The IHC resource id should be specified as an integer value. (In the project file the id will be specified as a hex number)

+

If you want an easier way to get the IHC resource ids, you can download the Alternative Service View application. +The application will show the product tree. You can expand it, select inputs and outputs and when selected you can see the resource id.

+

See the manual of each device type for configuration options.

+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.dlib_face_detect/index.html b/components/image_processing.dlib_face_detect/index.html new file mode 100644 index 0000000000..2f3e7eaa05 --- /dev/null +++ b/components/image_processing.dlib_face_detect/index.html @@ -0,0 +1,197 @@ + + + + + + + + + Dlib Face Detect - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dlib Face Detect +

+
+
+

The dlib_face_detect image processing platform allows you to use the Dlib through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes.

+

This can be used to trigger an automation rule. Further info is on the component page.

+

Configuration Home Assistant

+
# Example configuration.yaml entry
+image_processing:
+  - platform: dlib_face_detect
+    source:
+      - entity_id: camera.door
+
+
+

Configuration variables:

+
    +
  • source array (Required): List of image sources. +
      +
    • entity_id (Required): A camera entity id to get picture from.
    • +
    • name (Optional): This parameter allows you to override the name of your image_processing entity.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.dlib_face_identify/index.html b/components/image_processing.dlib_face_identify/index.html new file mode 100644 index 0000000000..3753a75185 --- /dev/null +++ b/components/image_processing.dlib_face_identify/index.html @@ -0,0 +1,204 @@ + + + + + + + + + Dlib Face Identify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dlib Face Identify +

+
+
+

The dlib_face_identify image processing platform allows you to use the Dlib 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 page.

+

Configuration Home Assistant

+
# Example configuration.yaml entry
+image_processing:
+ - platform: dlib_face_identify
+   source:
+    - entity_id: camera.door
+   faces:
+     Jon: /home/hass/jon.jpg
+     Bob: /home/hass/bob.jpg
+
+
+

Configuration variables:

+
    +
  • source array (Required): List of image sources. +
      +
    • entity_id (Required): A camera entity id to get picture from.
    • +
    • name (Optional): This parameter allows you to override the name of your image_processing entity.
    • +
    +
  • +
  • faces array (Required): List of faces sources.
  • +
+

+If the platform fails to load because it could not install its requirement, install cmake: sudo apt-get install cmake. +

+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.microsoft_face_detect/index.html b/components/image_processing.microsoft_face_detect/index.html new file mode 100644 index 0000000000..ace0888b97 --- /dev/null +++ b/components/image_processing.microsoft_face_detect/index.html @@ -0,0 +1,200 @@ + + + + + + + + + Microsoft Face Detect - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Microsoft Face Detect +

+
+
+

The microsoft_face_detect image processing platform allows you to use the Microsoft Face Identify API through Home Assistant. This platform enables you do detect face on camera and fire an event with attributes.

+

Please refer to the component configuration on how to setup the API key.

+

For using the result inside an automation rule, take a look at the component page.

+

Configuration Home Assistant

+
# Example configuration.yaml entry
+image_processing:
+  - platform: microsoft_face_detect
+    source:
+      - entity_id: camera.door
+
+
+

Configuration variables:

+
    +
  • confidence (Optional): The minimum of confidence in percent to process with Home Assistant. Defaults to 80.
  • +
  • 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.
    • +
    +
  • +
  • attributes array (Optional): The image search attributes. Supported: age, gender, glasses. Default age, gender.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.microsoft_face_identify/index.html b/components/image_processing.microsoft_face_identify/index.html new file mode 100644 index 0000000000..1ece672a0e --- /dev/null +++ b/components/image_processing.microsoft_face_identify/index.html @@ -0,0 +1,201 @@ + + + + + + + + + Microsoft Face Identify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Microsoft Face Identify +

+
+
+

The microsoft_face_identify image processing platform lets you use Microsoft Face identify API through Home Assistant. This platform allow you do identify persons on camera and fire an event with attributes.

+

Please refer to the component configuration on how to setup the API key.

+

For using the result inside an automation rule, take a look at the component page.

+

Configuration Home Assistant

+
# Example configuration.yaml entry
+image_processing:
+ - platform: microsoft_face_identify
+   group: family
+   source:
+    - entity_id: camera.door
+
+
+

Configuration variables:

+
    +
  • group (Required): Micrsoft face group to detect person from it.
  • +
  • confidence (Optional): The minimum of confidence in percent to process with Home Assistant. Defaults to 80.
  • +
  • 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.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.openalpr_cloud/index.html b/components/image_processing.openalpr_cloud/index.html new file mode 100644 index 0000000000..6a74261eeb --- /dev/null +++ b/components/image_processing.openalpr_cloud/index.html @@ -0,0 +1,202 @@ + + + + + + + + + OpenALPR Cloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenALPR Cloud +

+
+
+

OpenALPR integration for Home Assistant allows you to process licences plates from a camera. You can use them to open a garage door or trigger any other automation.

+

For using the result inside an automation rule, take a look at the component page.

+

Configuration Home Assistant

+
# Example configuration.yaml entry
+image_processing:
+ - platform: openalpr_cloud
+   api_key: 'sk_abcxyz123456'
+   region: eu
+   source:
+    - entity_id: camera.garage
+
+
+

Configuration variables:

+
    +
  • region (Required): Country or region. List of supported values.
  • +
  • api_key (Required): You need an API key from OpenALPR Cloud.
  • +
  • confidence (Optional): The minimum of confidence in percent to process with Home Assistant. Defaults to 80.
  • +
  • source array (Required): List of image sources. +
      +
    • entity_id (Required): A list of devices to add in Home Assistant.
    • +
    • name (Optional): This parameter allows you to override the name of your OpenALPR entity.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.openalpr_local/index.html b/components/image_processing.openalpr_local/index.html new file mode 100644 index 0000000000..ec8e376476 --- /dev/null +++ b/components/image_processing.openalpr_local/index.html @@ -0,0 +1,214 @@ + + + + + + + + + OpenALPR Local - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenALPR Local +

+
+
+

OpenALPR integration for Home Assistant allows you to process licences plates from a camera. You can use them to open a garage door or trigger any other automation.

+

For using inside automation look on component page.

+

Local installation

+

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. Documentation of how to build OpenALPR is found here.

+

On a Debian system you can use this cmake command to build only the command line tool:

+
$ cmake -DWITH_TEST=FALSE -DWITH_BINDING_JAVA=FALSE --DWITH_BINDING_PYTHON=FALSE \
+  --DWITH_BINDING_GO=FALSE -DWITH_DAEMON=FALSE -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
+
+
+

For other operating system please refer to the OpenALPR wiki.

+

Verify your alpr installation with:

+
$ wget -O- -q http://plates.openalpr.com/h786poj.jpg | alpr -
+
+
+

Configuration Home Assistant

+
# Example configuration.yaml entry
+image_processing:
+ - platform: openalpr_local
+   region: eu
+   source:
+    - entity_id: camera.garage
+
+
+

Configuration variables:

+
    +
  • region (Required): Country or region. List of supported values.
  • +
  • alpr_bin (Optional): The command line tool alpr from OpenALPR software for local processing. Defaults to alpr.
  • +
  • confidence (Optional): The minimum of confidence in percent to process with Home Assistant. Defaults to 80.
  • +
  • source array (Required): List of image sources. +
      +
    • entities (Required): A list of devices to add in Home Assistant.
    • +
    • name (Optional): This parameter allows you to override the name of your OpenALPR entity.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.opencv/index.html b/components/image_processing.opencv/index.html new file mode 100644 index 0000000000..d127dc2a5a --- /dev/null +++ b/components/image_processing.opencv/index.html @@ -0,0 +1,218 @@ + + + + + + + + + OpenCV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenCV +

+
+
+

OpenCV is an open source computer vision image and video processing library.

+

Some pre-defined classifiers can be found here.

+

To setup OpenCV with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+image_processing:
+  - platform: opencv
+    name: Front Door Faces
+    source:
+      - entity_id: camera.front_door
+    classifier:
+      mom: /path/to/classifier.xml
+
+
+
    +
  • name (Required): The name of the OpenCV image processor.
  • +
  • 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 may also be defined as a dictionary of names to classifier configurations:

+
    mom:
+      file: /path/to/classifier/xml
+      neighbors: 4
+      min_size: (40, 40)
+      scale: 1.1f
+
+
+
    +
  • 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

+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing.seven_segments/index.html b/components/image_processing.seven_segments/index.html new file mode 100644 index 0000000000..5902b4131b --- /dev/null +++ b/components/image_processing.seven_segments/index.html @@ -0,0 +1,257 @@ + + + + + + + + + Seven segments display - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Seven segments display +

+
+
+

The seven_segments image processing platform allows you to read physical seven segments displays through Home Assistant. ssocr is used to extract the value shown on the display which is observed by a camera.

+

+If you are using Hass.io 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:

+
$ 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 # 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 segment display in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+image_processing:
+  - platform: seven_segments
+    source:
+      - entity_id: camera.seven_segments
+
+
+

Configuration variables:

+
    +
  • ssocr_bin (Optional): The command line tool ssocr. Set it if you use a different name for the executable. Defaults to ssocr.
  • +
  • x_position (Optional): X coordinate of the upper left corner of the area to crop. Defaults to 0.
  • +
  • y_position (Optional): Y coordinate of the upper left corner of the area to crop. Defaults to 0.
  • +
  • height (Optional): Height of the area to crop. Defaults to 0.
  • +
  • width (Optional): Width of the area to crop. Defaults to 0.
  • +
  • rotate (Optional): Rotation of the image. Defaults to 0.
  • +
  • threshold (Optional): Threshold for the difference between the digits and the background. Defaults to 0.
  • +
  • digits (Optional): Number of digits in the display. Defaults to -1.
  • +
  • extra_arguments (Optional): Other arguments to use. Like -D, dilation, erosion, greyscale, make_mono, etc.
  • +
  • source array (Required): List of image sources. +
      +
    • entity_id (Required): A camera entity id to get picture from.
    • +
    • name (Optional): This parameter allows you to override the name of your image_processing entity.
    • +
    +
  • +
+

Setup process

+

It’s suggested that the first attempt to determine the needed parameters is using ssocr directly. This may require a couple of iterations to get the result

+
$ ssocr -D erosion crop 390 250 490 280 -t 20 -d 4 seven-seg.png
+
+
+

This would lead to the following entry for the configuration.yaml file:

+
camera:
+  - platform: local_file
+    file_path: /home/homeassistant/.homeassistant/seven-seg.png
+    name: seven_segments
+image_processing:
+  - platform: seven_segments
+    x_position: 390
+    y_position: 250
+    height: 280
+    width: 490
+    threshold: 20
+    digits: 4
+    source:
+      - entity_id: camera.seven_segments
+
+
+

+ +

+

With the help of a template sensor, the value can be shown as badge.

+
sensor:
+  - platform: template
+    sensors:
+      power_meter:
+        value_template: '{{ states.image_processing.sevensegment_ocr_seven_segments.state }}'
+        friendly_name: 'Ampere'
+        unit_of_measurement: 'A'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/image_processing/index.html b/components/image_processing/index.html new file mode 100644 index 0000000000..95f7136983 --- /dev/null +++ b/components/image_processing/index.html @@ -0,0 +1,204 @@ + + + + + + + + + Image Processing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Image Processing +

+
+
+

Image processing enables Home Assistant to process images from cameras. Only camera entities are supported as sources.

+

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 (base_url) inside the http component. +

+

ALPR

+

Alpr entities attribute have a vehicle counter vehicles and all found plates as plates.

+

This event is trigger after OpenALPR found a new license plate.

+
# Example configuration.yaml automation entry
+automation:
+- alias: Open garage door
+  trigger:
+    platform: event
+    event_type: image_processing.found_plate
+    event_data:
+      entity_id: openalpr.camera_garage_1
+      plate: BE2183423
+...
+
+
+

The following event attributes will be present (platform-dependent): entity_id, plate, confidence

+

Face

+

Face entities attribute have a face counter total_faces and all face data as faces.

+

This event is trigger after Microsoft Face found a faces.

+
# Example configuration.yaml automation entry
+automation:
+- alias: Known person in front of my door
+  trigger:
+    platform: event
+    event_type: image_processing.detect_face
+    event_data:
+      entity_id: image_processing.door
+      name: 'Hans Maier'
+...
+
+
+

The following event attributes will be present (platform-dependent): entity_id, name, confidence, age, gender, motion, glasses

+
+
+ +
+
+ + + + + + + diff --git a/components/index.html b/components/index.html new file mode 100644 index 0000000000..2f5d9d9585 --- /dev/null +++ b/components/index.html @@ -0,0 +1,2347 @@ + + + + + + + + + Components - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Components +

+
+
+

+Support for these components is provided by the Home Assistant community. +

+ + + + + + + +
+
+
+
+ + + + + + + diff --git a/components/influxdb/index.html b/components/influxdb/index.html new file mode 100644 index 0000000000..89683ec308 --- /dev/null +++ b/components/influxdb/index.html @@ -0,0 +1,271 @@ + + + + + + + + + InfluxDB - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ InfluxDB +

+
+
+

The influxdb component makes it possible to transfer all state changes to an external InfluxDB database. For more details, see the blog post on InfluxDB.

+

Configuration

+

The default InfluxDB configuration doesn’t enforce authentication. If you have installed InfluxDB on the same host where Home Assistant is running and haven’t made any configuration changes, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+influxdb:
+
+
+

You will still need to create a database named home_assistant via InfluxDB’s command line interface. For instructions on how to create a database check the InfluxDB documentation relevant to the version you have installed.

+

Configuration variables:

+
    +
  • host (Optional): IP address of your database host, e.g. 192.168.1.10. Defaults to localhost.
  • +
  • port (Optional): Port to use. Defaults to 8086.
  • +
  • username (Optional): The username of the database user. The user needs read/write privileges on the database.
  • +
  • password (Optional): The password for the database user account.
  • +
  • database (Optional): Name of the database to use. Defaults to home_assistant. The database must already exist.
  • +
  • ssl (Optional): Use https instead of http to connect. Defaults to false.
  • +
  • verify_ssl (Optional): Verify SSL certificate for https request. Defaults to false.
  • +
  • max_retries (Optional): Allow the component to retry if there was a network error when transmitting data
  • +
  • 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 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.
    • +
    +
  • +
  • include (Optional): Configure which components should be included in recordings to InfluxDB. If set, all other entities will not be recorded to InfluxDB. Values set by the blacklist option will prevail. +
      +
    • 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.
  • +
+

Helper scripts

+ +

Examples

+

Full configuration

+
influxdb:
+  host: 192.168.1.190
+  port: 20000
+  database: DB_TO_STORE_EVENTS
+  username: MY_USERNAME
+  password: MY_PASSWORD
+  ssl: true
+  verify_ssl: true
+  max_retries: 3
+  default_measurement: state
+  exclude:
+    entities:
+       - entity.id1
+       - entity.id2
+    domains:
+       - automation
+  include:
+    entities:
+       - entity.id3
+       - entity.id4
+  tags:
+    instance: prod
+    source: hass
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/input_boolean/index.html b/components/input_boolean/index.html new file mode 100644 index 0000000000..0d7c331784 --- /dev/null +++ b/components/input_boolean/index.html @@ -0,0 +1,266 @@ + + + + + + + + + Input Boolean - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Input Boolean +

+
+
+

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:

+
# Example configuration.yaml entry
+input_boolean:
+  notify_home:
+    name: Notify when someone arrives home
+    initial: off
+    icon: mdi:car
+
+
+
+

Configuration Variables

+
+
input_boolean
+
+

(map)(Required)Alias for the input. Multiple entries are allowed.

+
+
+
+
name
+
+

(String)(Optional)Friendly name of the input.

+
+
initial
+
+

(boolean)(Optional)Initial value when Home Assistant starts.

+

Default value: false

+
+
icon
+
+

(icon)(Optional)Icon to display for the component. Refer to the Customizing devices page for possible values.

+
+
+
+
+
+

Restore State

+

This component supports the restore_state function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the recorder component is enabled and your entity does not have a value set for initial. Additional information can be found in the Restore state section of the recorder component documentation.

+

Automation Examples

+

Here’s an example of an automation using the above input_boolean. This action will only occur if the switch is on.

+
automation:
+  alias: Arriving home
+  trigger:
+    platform: state
+    entity_id: binary_sensor.motion_garage
+    to: 'on'
+  condition:
+    condition: state
+    entity_id: input_boolean.notify_home
+    state: 'on'
+  action:
+    service: notify.pushbullet
+    data:
+      title: ""
+      message: "Honey, I'm home!"
+
+
+

You can also set or change the status of an input_boolean by using input_boolean.turn_on, input_boolean.turn_off or input_boolean.toggle in your automations.

+
    - service: input_boolean.turn_on
+      data:
+        entity_id: input_boolean.notify_home
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/input_datetime/index.html b/components/input_datetime/index.html new file mode 100644 index 0000000000..e44ee77a4d --- /dev/null +++ b/components/input_datetime/index.html @@ -0,0 +1,341 @@ + + + + + + + + + Input Datetime - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Input Datetime +

+
+
+

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:

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

+
+
input_datetime
+
+

(map)(Required)Alias for the datetime input. Multiple entries are allowed.

+
+
+
+
name
+
+

(String)(Optional)Friendly name of the datetime input.

+
+
has_time
+
+

(Boolean)(Optional)Set to true if the input should have a time. At least one has_time or has_date must be defined.

+

Default value: false

+
+
has_date
+
+

(Boolean)(Optional)Set to true if the input should have a date. At least one has_time or has_date must be defined.

+

Default value: false

+
+
initial
+
+

(datetime | time | date)(Optional)Set the initial value of this input, depending on has_time and has_date.

+

Default value: 1970-01-01 00:00 | 1970-01-01 | 00:00

+
+
+
+
+
+

Attributes

+

A datetime input entity’s state exports several attributes that can be useful in automations and templates.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
has_timetrue if this entity has a time.
has_datetrue if this entity has a date.
year
month
day
The year, month and day of the date.
(only available if has_date: true)
hour
minute
second
The hour, minute and second of the time.
(only available if has_time: true)
timestampA timestamp representing the time held in the input.
If has_date: true, this is the UNIX timestamp of the date / time held by the input. Otherwise if only has_time: true, this is the number of seconds since midnight representing the time held by the input.
+

Restore State

+

This component supports the restore_state function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the recorder component is enabled and your entity does not have a value set for initial. Additional information can be found in the Restore state section of the recorder component documentation.

+

Services

+

This component provides a service to modify the state of the input_datetime.

+ + + + + + + + + + + + + + + + + + + + +
ServiceDataDescription
set_datetimetimeThis can be used to dynamically set the time.
set_datetimedateThis can be used to dynamically set the date.
+

Automation Examples

+

The following example shows the usage of the input_datetime as a trigger in an automation (note that you will need a time sensor elsewhere in your configuration):

+
# Example configuration.yaml entry
+# Turns on bedroom light at the time specified.
+automation:
+  trigger:
+    platform: template
+    value_template: "{{ states('sensor.time') == (states.input_datetime.bedroom_alarm_clock_time.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
+  action:
+    service: light.turn_on
+    entity_id: light.bedroom
+
+
+

To dynamically set the input_datetime you can call input_datetime.set_datetime. The following example can be used in an automation rule:

+
# Example configuration.yaml entry
+# Sets input_datetime to '05:30' when an input_boolean is turned on.
+automation:
+  trigger:
+    platform: state
+    entity_id: input_boolean.example
+    to: 'on'
+  action:
+    service: input_datetime.set_datetime
+    entity_id: input_datetime.bedroom_alarm_clock_time
+    data:
+      time: '05:30:00'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/input_number/index.html b/components/input_number/index.html new file mode 100644 index 0000000000..fb046ca867 --- /dev/null +++ b/components/input_number/index.html @@ -0,0 +1,374 @@ + + + + + + + + + Input Number - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Input Number +

+
+
+

+Before version 0.55 this component was known as input_slider and did not have the mode configuration option. Also, service select_value is now set_value. +

+

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:

+
# Example configuration.yaml entry
+input_number:
+  slider1:
+    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

+
+
input_number
+
+

(map)(Required)Alias for the input. Multiple entries are allowed.

+
+
+
+
min
+
+

(float)(Required)Minimum value.

+
+
max
+
+

(float)(Required)Maximum value.

+
+
name
+
+

(string)(Optional)Friendly name of the input.

+
+
initial
+
+

(float)(Optional)Initial value when Home Assistant starts.

+

Default value: 0

+
+
step
+
+

(float)(Optional)Step value for the slider. Smallest value 0.001.

+

Default value: 1

+
+
mode
+
+

(box | slider)(Optional)Can specify box or slider.

+

Default value: slider

+
+
unit_of_measurement
+
+

(string)(Optional)Unit of measurement in which the value of the slider is expressed in.

+
+
icon
+
+

(icon)(Optional)Icon to display in front of the box/slider in the frontend. Refer to the Customizing devices page for possible values.

+
+
+
+
+
+

Restore State

+

This component supports the restore_state function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the recorder component is enabled and your entity does not have a value set for initial. Additional information can be found in the Restore state section of the recorder component documentation.

+

Automation Examples

+

Here’s an example of input_number being used as a trigger in an automation.

+
# Example configuration.yaml entry using 'input_number' as a trigger in an automation
+input_number:
+  bedroom_brightness:
+    name: Brightness
+    initial: 254
+    min: 0
+    max: 254
+    step: 1
+automation:
+  - alias: Bedroom Light - Adjust Brightness
+    trigger:
+      platform: state
+      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
+        data_template:
+          entity_id: light.bedroom
+          brightness: "{{ trigger.to_state.state | int }}"
+
+
+

Another code example using input_number, this time being used in an action in an automation.

+
# Example configuration.yaml entry using 'input_number' in an action in an automation
+input_select:
+  scene_bedroom:
+    name: Scene
+    options:
+      - Select
+      - Concentrate
+      - Energize
+      - Reading
+      - Relax
+      - 'OFF'
+    initial: 'Select'
+input_number:
+  bedroom_brightness:
+    name: Brightness
+    initial: 254
+    min: 0
+    max: 254
+    step: 1
+automation:
+  - alias: Bedroom Light - Custom
+    trigger:
+      platform: state
+      entity_id: input_select.scene_bedroom
+      to: CUSTOM
+    action:
+      - service: light.turn_on
+        # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable.
+        data_template:
+          entity_id: light.bedroom
+          brightness: "{{ states('input_number.bedroom_brightness') | int }}"
+
+
+

Example of input_number being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation.

+
# Example configuration.yaml entry using 'input_number' in an action in an automation
+input_number:
+  target_temp:
+    name: Target Heater Temperature Slider
+    min: 1
+    max: 30
+    step: 1
+    unit_of_measurement: step  
+    icon: mdi:target
+
+# This automation script runs when a value is received via MQTT on retained topic: setTemperature
+# It sets the value slider on the GUI. This slides also had its own automation when the value is changed.
+automation:
+  - alias: Set temp slider
+    trigger:
+      platform: mqtt
+      topic: 'setTemperature'
+    action:
+      service: input_number.set_value
+      data_template:
+        entity_id: input_number.target_temp
+        value: "{{ trigger.payload }}"
+
+# This automation script runs when the target temperature slider is moved.
+# It publishes its value to the same MQTT topic it is also subscribed to.
+automation:
+  - alias: Temp slider moved
+    trigger:
+      platform: state
+      entity_id: input_number.target_temp
+    action:
+      service: mqtt.publish
+      data_template:
+        topic: 'setTemperature'
+        retain: true
+        payload: "{{ states('input_number.target_temp') | int }}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/input_select/index.html b/components/input_select/index.html new file mode 100644 index 0000000000..e39f1b6571 --- /dev/null +++ b/components/input_select/index.html @@ -0,0 +1,373 @@ + + + + + + + + + Input Select - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Input Select +

+
+
+

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 in your installation, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+input_select:
+  who_cooks:
+    name: Who cooks today
+    options:
+     - Paulus
+     - Anne Therese
+    initial: Anne Therese
+    icon: mdi:panda
+  living_room_preset:
+    options:
+      - Visitors
+      - Visitors with kids
+      - Home Alone
+
+
+
+

Configuration Variables

+
+
input_select
+
+

(map)(Required)Alias for the input. Multiple entries are allowed.

+
+
+
+
name
+
+

(String)(Optional)Friendly name of the input.

+
+
options
+
+

(Array)(Required)List of options to choose from.

+
+
initial
+
+

(Element of options)(Optional)Initial value when Home Assistant starts.

+

Default value: First element of options

+
+
icon
+
+

(icon)(Optional)Icon to display for the component. Refer to the Customizing devices page for possible values.

+
+
+
+
+
+

+Because YAML defines booleans 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. +

+

Restore State

+

This component supports the restore_state function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the recorder component is enabled and your entity does not have a value set for initial. Additional information can be found in the Restore state section of the recorder component documentation.

+

Services

+

This components provide three services to modify the state of the input_select.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ServiceDataDescription
select_optionoptionThis can be used to select a specific option.
set_optionsoptions
entity_id(s)
Set the options for specific input_select entities.
select_previous Select the previous option.
select_next Select the next option.
+

Scenes

+

To specify a target option in a Scene you have to specify the target as option attribute:

+
# Example configuration.yaml entry
+scene:
+  - name: Example1
+    entities:
+      input_select.who_cooks:
+        option: Paulus
+
+
+

Automation Examples

+

The following example shows the usage of the input_select.select_option service in an automation:

+
# Example configuration.yaml entry
+automation:
+  - alias: example automation
+    trigger:
+      platform: event
+      event_type: MY_CUSTOM_EVENT
+    action:
+      - service: input_select.select_option
+        data:
+          entity_id: input_select.who_cooks
+          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:

+
# 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"]
+
+
+

Example of input_select being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation.

+
# Example configuration.yaml entry using 'input_select' in an action in an automation
+   
+# Define input_select
+input_select:
+  thermostat_mode:
+    name: Thermostat Mode
+    options:
+      - "auto"
+      - "off"
+      - "cool"
+      - "heat"
+    icon: mdi:target
+
+# Automation.     
+ # This automation script runs when a value is received via MQTT on retained topic: thermostatMode
+ # It sets the value selector on the GUI. This selector also had its own automation when the value is changed.
+- alias: Set Thermostat Mode Selector
+  trigger:
+    platform: mqtt
+    topic: "thermostatMode"
+   # entity_id: input_select.thermostat_mode
+  action:
+     service: input_select.select_option
+     data_template:
+      entity_id: input_select.thermostat_mode
+      option: "{{ trigger.payload }}"
+
+ # This automation script runs when the thermostat mode selector is changed.
+ # It publishes its value to the same MQTT topic it is also subscribed to.
+- alias: Set Thermostat Mode
+  trigger:
+    platform: state
+    entity_id: input_select.thermostat_mode
+  action:
+    service: mqtt.publish
+    data_template:
+      topic: "thermostatMode"
+      retain: true
+      payload: "{{ states('input_select.thermostat_mode') }}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/input_slider/index.html b/components/input_slider/index.html new file mode 100644 index 0000000000..baffd2f98b --- /dev/null +++ b/components/input_slider/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/input_text/index.html b/components/input_text/index.html new file mode 100644 index 0000000000..b9b27e7fac --- /dev/null +++ b/components/input_text/index.html @@ -0,0 +1,268 @@ + + + + + + + + + Input Text - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Input Text +

+
+
+

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. It can also be configured in password mode (obscured text).

+
# 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]*'
+  text4:
+    name: Text 4
+    mode: password
+
+
+
+

Configuration Variables

+
+
input_text
+
+

(map)(Required)Alias for the input. Multiple entries are allowed.

+
+
+
+
name
+
+

(String)(Optional)Friendly name of the text input.

+
+
min
+
+

(int)(Optional)Minimum length for the text value.

+

Default value: 0

+
+
max
+
+

(int)(Optional)Maximum length for the text value.

+

Default value: 100

+
+
initial
+
+

(String)(Optional)Initial value when Home Assistant starts.

+

Default value: empty

+
+
pattern
+
+

(String)(Optional)Regex pattern for client side validation.

+

Default value: empty

+
+
mode
+
+

(String)(Optional)Can specify text or password. Elements of type “password” provide a way for the user to securely enter a value.

+

Default value: text

+
+
+
+
+
+

Restore State

+

This component supports the restore_state function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the recorder component is enabled and your entity does not have a value set for initial. Additional information can be found in the Restore state section of the recorder component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/insteon_hub/index.html b/components/insteon_hub/index.html new file mode 100644 index 0000000000..60978ac808 --- /dev/null +++ b/components/insteon_hub/index.html @@ -0,0 +1,470 @@ + + + + + + + + + Insteon Hub - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon Hub +

+
+
+

+This component has been disabled due to a complaint by Insteon. It will be enabled again once this issue has been resolved. +

+

The insteon component lets you use your Insteon Hub with Home Assistant.

+

You will need to obtain an Insteon REST API key from the Insteon Developer program to use this component.

+

To integrate your Insteon Hub with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+insteon_hub:
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+
    +
  • username (Required): The username used to access the Insteon interface (e.g. the 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/components/insteon_local/index.html b/components/insteon_local/index.html new file mode 100644 index 0000000000..ee427572bd --- /dev/null +++ b/components/insteon_local/index.html @@ -0,0 +1,482 @@ + + + + + + + + + Insteon (local) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon (local) +

+
+
+

The insteon_local component let you use your Insteon Hub with Home Assistant.

+

To integrate your Insteon local setup with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml platform entry
+insteon_local:
+  host: YOUR HUB IP
+  username: YOUR HUB USERNAME
+  password: YOUR HUB PASSWORD
+
+
+

Configuration variables: +Note: The username and password here are for the hub and are different than the ones used to access the app. You can usually find these on the bottom of your hub (unless you’ve changed them through the settings in the app)

+
    +
  • host (Required): The IP address of your hub.
  • +
  • username (Required): The username used to access the Insteon interface (find in your Insteon app).
  • +
  • password (Required): The password used to access the Insteon interface.
  • +
  • timeout (Optional): Timeout to wait for connections. Defaults to 10 seconds.
  • +
  • port (Optional): The port your hub is configured to listen to. Defaults to 25105.
  • +
+

Full configuration

+

The insteon_local component currently supports lights (dimmers), switches and fans.

+
insteon_local:
+  host: YOUR HUB IP
+  username: YOUR HUB USERNAME
+  password: YOUR HUB PASSWORD
+  timeout: 10
+  port: 25105
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/insteon_plm/index.html b/components/insteon_plm/index.html new file mode 100644 index 0000000000..4da7c470fe --- /dev/null +++ b/components/insteon_plm/index.html @@ -0,0 +1,562 @@ + + + + + + + + + Insteon PLM - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon PLM +

+
+
+

This component adds “local push” support for INSTEON PowerLinc Modems allowing +linked INSTEON devices to be used within Home Assistant as lights, switches, +and binary sensors. Device support is provided by the underlying insteonplm +package. It is known to work with the 2413U USB and 2412S RS242 flavors +of PLM and the 2448A7 USB stick. This component does not work with the +IP-based hub products. For that, you’ll want the “Insteon (Local)” component +instead.

+
# insteon_plm supported configuration variables
+insteon_plm:
+  port: SERIAL_PORT
+  device_override:
+     - address: ADDRESS
+       cat: CATEGORY
+       subcat: SUBCATEGORY
+       firmware: FIRMWARE
+       product_key: PRODUCT_KEY
+
+
+

Configuration variables:

+
    +
  • port (Required): The port for your device, e.g. /dev/ttyUSB0
  • +
  • device_override (Optional): Override the default device definition +
      +
    • ADDRESS is found on the device itself in the form 1A.2B.3C or 1a2b3c
    • +
    • CATEGORY is found in the back of the device’s User Guide in the form of +0x00 - 0xff
    • +
    • SUBCATEGORY is found in the back of the device’s User Guide in the form +of 0x00 - 0xff
    • +
    • FIRMWARE and PRODUCT_KEY are more advanced options and will typically +not be used.
    • +
    +
  • +
+

Autodiscovery

+

The first time autodiscovery runs, the duration may require up to 20 seconds +per device. Subsequent startups will occur much quicker using cached device +information. If a device is not recognized during autodiscovery, you can add +the device to the device_override configuration.

+

In order for a device to be discovered it must be linked to the PLM as either +a responder or a controller.

+

Linking Devices to the PLM

+

In order for any two Insteon devices to talk with one another, they must be +linked. For an overview of device linking please read the Insteon page on +understanding linking. Currently Insteon PLM does not support software +linking of devices. If you need software that can link your devices (if you +are using a USB Stick PLM for example), you can download HouseLinc which runs +on any Windows PC, or you can use Insteon Terminal which is open source and +runs on most platforms. HouseLinc is no longer supported by SmartHome but it +still works. Insteon Terminal is a very useful tool but please read the +disclaimers carefully, they are important.

+

Customization

+

The only configuration item that is absolutely necessary is the port so that +Home Assistant can connect to the PLM. This will expose all the supported INSTEON +devices which exist in the modem’s ALL-Link database. However, devices will +only be shown by their INSTEON hex address (e.g. “1A.2B.3C”) which can be a bit +unwieldy. As you link and unlink devices using the ‘Set’ buttons, they’ll be +added and removed from Home Assistant automatically.

+

You can use the normal Home Assistant device customization section of your +configuration to assign friendly names and special icons to your devices. This +is especially useful for setting device_class on your binary_sensor INSTEON +devices.

+

Device Overrides

+

INSTEON devices are added to Home Assistant using the platform(s) that make the +most sense given the model and features of the hardware. The features of the +INSTEON device are built into the Home Assistant platform. Changing the +platform is not recommended. There are two primary uses for the +device_override feature.

+
    +
  • Devices that do not respond during autodiscovery. This is common for battery +operated devices.
  • +
  • Devices that have not been fully developed. This allows an unknown device to +be mapped to a device that operates similarly to another device.
  • +
+

Example Configuration with Options

+
# Full example of insteon_plm configuration with customizations and overrides
+
+homeassistant:
+  customize:
+    light.a1b2c3:
+      friendly_name: Bedside Lamp
+    binary_sensor.a2b3c4:
+      friendly_name: Garage Door
+      device_class: opening
+
+insteon_plm:
+  port: /dev/ttyUSB0
+  device_override:
+    - address: a1b2c3  # Hidden Door Sensor [2845-222]
+      cat: 0x10
+      subcat: 0x11     
+
+
+

What NOT to do

+

Insteon PLM is a top level component and device discovery will identify +the Home Assistant platform the device belongs in. As such, do not +declare Insteon devices in other platforms. For example, this configuration +will NOT work:

+
light:
+  - platform: insteon_plm
+    address: 1a2b3c
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/intent_script/index.html b/components/intent_script/index.html new file mode 100644 index 0000000000..f1fcf84d67 --- /dev/null +++ b/components/intent_script/index.html @@ -0,0 +1,175 @@ + + + + + + + + + Intent Script - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Intent Script +

+
+
+

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.

+
# Example configuration.yaml entry
+intent_script:
+  GetTemperature:  # Intent type
+    speech:
+      text: We have {{ states.sensor.temperature }} 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.
    • +
    • 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/components/introduction/index.html b/components/introduction/index.html new file mode 100644 index 0000000000..555c3884ab --- /dev/null +++ b/components/introduction/index.html @@ -0,0 +1,219 @@ + + + + + + + + + Introduction - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Introduction +

+
+
+

The introduction component will show a card in the UI with ‘Welcome Home!’ and steps on how to get started. It will also print the same message to the console when starting up.

+

The introduction component is loaded by default on a new Home Assistant instance.

+
# Example configuration.yaml entry
+introduction:
+
+
+

To disable this component, remove the introduction: entry from your configuration.yaml file.

+
+
+ +
+
+ + + + + + + diff --git a/components/ios/index.html b/components/ios/index.html new file mode 100644 index 0000000000..584446ac26 --- /dev/null +++ b/components/ios/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/iota/index.html b/components/iota/index.html new file mode 100644 index 0000000000..37edfc1ac5 --- /dev/null +++ b/components/iota/index.html @@ -0,0 +1,248 @@ + + + + + + + + + IOTA - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IOTA +

+
+
+

IOTA is a new blockless distributed ledger which is scalable, lightweight and makes it possible to transfer value without any fees.

+

The iota component displays various details (e.g., the balance, node attributes) of IOTA wallets.

+
# configuration.yaml example
+iota:
+  iri: https://testnet140.tangle.works:4434
+  wallets:
+    - name: Default Wallet
+      seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+
+

Configuration Variables

+
+
iri
+
+

(string)(Required)URL of the IRI node.

+
+
testnet
+
+

(bool)(Optional)Flag for indicating “testnet”.

+

Default value: false

+
+
wallets
+
+

(list)(Required)List of IOTA wallets.

+
+
+
+
name
+
+

Name of the wallet.

+
+
seed
+
+

Seed of the wallet.

+
+
+
+
+
+

A full configuration example could look the one below:

+
# Full example
+iota:
+  iri: https://testnet140.tangle.works:4434
+  testnet: true
+  wallets:
+    - name: Default Wallet
+      seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+    - name: Exchange Wallet
+      seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/isy994/index.html b/components/isy994/index.html new file mode 100644 index 0000000000..730b763223 --- /dev/null +++ b/components/isy994/index.html @@ -0,0 +1,597 @@ + + + + + + + + + ISY994 Controller - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Controller +

+
+
+

The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. Some models of the ISY994 can even control Z-Wave devices. +The ISY994 controller is manufactured by Universal Devices.

+

Basic Configuration

+

Home Assistant is capable of communicating with any binary sensor, cover, fan, light, lock, sensor and switch that is configured on the controller. Using the programs on the controller, custom binary sensors, cover, fan, lock, and switches can also be created.

+

To integrate your ISY994 controller with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+isy994:
+  host: ISY_ADDRESS
+  username: ISY_USERNAME
+  password: ISY_PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Required): The host entry should be in full URL format, eg. http://192.168.10.100:80
  • +
  • username (Required): The username that used to access the ISY interface.
  • +
  • password (Required): The password that used to access the ISY interface.
  • +
  • sensor_string (Optional): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is ‘sensor’. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). This is only necessary for nodes that are not automatically detected as sensors by Home Assistant. Insteon door, window, motion and leak sensors should all be detected automatically.
  • +
  • ignore_string (Optional): Any devices that contain this string in their name (or folder path) will be ignored by Home Assistant. They will not become entities at all. The default value is {IGNORE ME}.
  • +
  • enable_climate (Optional): When enabled, climate measurements from the optional climate module in the ISY994 will show up in Home Assistant as sensors. The default value is True.
  • +
  • tls (Optional): This entry should reflect the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value.
  • +
+

Once the ISY controller is configured, it will automatically import any binary sensors, covers, fans, lights, locks, sensors and switches it can locate.

+

Sensors

+

An Insteon door/window sensor will show up as a single Binary Sensor rather than two discrete devices like it does in the ISY994 admin panel. Note that when in “Two Nodes” mode, the sensor will have an UNKNOWN state until the sensor changes for the first time since the last Home Assistant reboot. If you do not use Insteon scenes that are controlled directly from the door sensor, you may prefer to set the sensor to “One Node” mode using the ISY Admin Panel.

+

Each Insteon leak sensor will also show up as a single Binary Sensor as opposed to the two nodes seen in the ISY994. The name of the device will be based on what the parent node is named in the ISY994, which is typically the one with “-Dry” at the end of the name. This may be confusing, because “On” means wet in Home Assistant. You can rename this node either in the ISY994 Admin Panel (which will change the entity_id in Home Assistant) or assign a friendly_name in the Customization section of your configuration.

+

If your leak or door/window sensor supports heartbeats, a new binary_sensor device will be added to Home Assistant to represent the battery state. The sensor will stay “Off” so long as the daily heartbeats occur. If a heartbeat is missed, the sensor will flip to “On”. The name of this device will be based on the heartbeat node in the ISY.

+

Handling Insteon Control Events

+

A Home Assistant isy994_control event is emitted for every “control” event in the Insteon network. This allows you to write automations that trigger based on Insteon button presses. You can also trigger off of the unique Insteon events, such as double-presses, long-holds etc.

+
automation:
+  - alias: turn off living room on double tap lightswitch
+    trigger:
+      platform: event
+      event_type: isy994_control
+      event_data:
+        entity_id: light.lr_track_lights_front
+        control: 'DFOF'
+    action:
+      service: light.turn_off
+      entity_id: light.lr_track_lights_rear
+
+
+

All isy994_control events will have an entity_id and control parameter in its event_data. You’ll need to refer to ISY994 documentation for the list of every possible control type, but the common ones are:

+
    +
  • DON: On button
  • +
  • DOF: Off button
  • +
  • DFON: “Fast On”, usually from double-tapping an On button
  • +
  • DFOF: “Fast Off”, usually from double-tapping an Off button
  • +
  • FDUP: “Fade Up”, usually while holding down an On button
  • +
  • FDDOWN: “Fade Down”, usually while holding down an Off button
  • +
  • FDSTOP: “Fade Stop”, when releasing a long-held button
  • +
  • BRT: “Brighten”, from controllers that issue a single command to slightly brighten a light
  • +
  • DIM: “Dim”, from controllers that issue a single command to slightly dim a light
  • +
+

Insteon Scenes

+

All Insteon scenes configured in the ISY994 will show up as switches in Home Assistant.

+

Creating Custom Devices

+

Using the Programs tab in the controller’s Administrative Console, custom devices can be created that will appear natively inside of Home Assistant. Home Assistant will scan the following folders and build the device to the associated domains:

+
My Programs
+├── HA.binary_sensor
+|   ├── Movement In House
+|   |   └── status
+|   └── Garage Open
+|   |   └── status
+├── HA.cover
+|   ├── Left Garage Door
+|   |   ├── actions
+|   |   └── status
+|   ├── Living Room Blinds
+|   |   ├── actions
+|   |   └── status
+├── HA.fan
+|   ├── Desk Fan
+|   |   ├── actions
+|   |   └── status
+|   ├── Living Room Fan
+|   |   ├── actions
+|   |   └── status
+├── HA.lock
+|   ├── Front Door
+|   |   ├── actions
+|   |   └── status
+|   ├── Back Door
+|   |   ├── actions
+|   |   └── status
+├── HA.switch
+|   ├── Dining Lights
+|   |   ├── actions
+|   |   └── status
+|   ├── Sleep Mode
+|   |   ├── actions
+|   |   └── status
+
+
+

A device is created by creating a directory, with the name for the device, under any of the following root directories:

+
    +
  • HA.binary_sensor will create a binary sensor (see Customizing Devices to set the sensor class)
  • +
  • HA.cover will create a cover
  • +
  • HA.fan will create a fan
  • +
  • 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. 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.

+

+ +

+

The status program in this directory is what indicates the state of the device:

+
    +
  • binary_sensor on if the clause returns true, otherwise off
  • +
  • cover closed if the clause returns true, otherwise open
  • +
  • fan on if the clause returns true, otherwise off
  • +
  • lock locked if the clause returns true, otherwise unlocked
  • +
  • switch on if the clause returns true, otherwise off
  • +
+

+ +

+

The actions program indicates what should be performed for the following device services:

+
    +
  • cover the THEN clause is evaluated for the open_cover service, the ELSE clause is evaluated for the close_cover service
  • +
  • fan the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service
  • +
  • lock the THEN clause is evaluated for the lock service, the ELSE clause is evaluated for the unlock service
  • +
  • switch the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service
  • +
+

+ +

+

The example program above shows how to control a legacy X10 device from Home Assistant using an ISY controller.

+
+
+ +
+
+ + + + + + + diff --git a/components/joaoapps_join/index.html b/components/joaoapps_join/index.html new file mode 100644 index 0000000000..286877f3ae --- /dev/null +++ b/components/joaoapps_join/index.html @@ -0,0 +1,511 @@ + + + + + + + + + Joaoapps Join - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Joaoapps Join +

+
+
+

The joaoapps_join component exposes services from 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.

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - platform: joaoapps_join
+    api_key: asd97823jb628a34fwsdfwefd5384345tf2d
+    device_id: d5asdfasdf54645h45h368761dfe5gt8a
+    device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b
+    device_names: Pixel, iPhone
+    name: Phones
+joaoapps_join:
+  - name: android
+    device_id: group.android
+    api_key: asd97823jb628a34fwsdfwefd5384345tf2d
+
+
+

Configuration variables:

+
    +
  • api_key (Required): The API key for Join.
  • +
  • device_id (Optional): The id of your device.
  • +
  • device_ids (Optional): Comma separated list of device ids.
  • +
  • device_names (Optional): Comma separated list of device names.
  • +
+

The notify service has two optional parameters: icon and vibration. You can use them like so:

+
{"message":"Hello from Home Assistant!","title":"Home Assistant","data":{"icon":"https://goo.gl/xeetdy", "vibration":"0,65,706,86,657,95,668,100"}}
+
+
+

The services exposed in the joaoapps_join component can be used with the service data described below:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ServiceData
joaoapps_join/ring 
joaoapps_join/send_sms{"number":"5553334444", "message":"Hello!"}
joaoapps_join/send_tasker{"command":"test"}
joaoapps_join/send_url{"url":"http://google.com"}
joaoapps_join/send_wallpaper{"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"}
joaoapps_join/send_file{"url":"http://download.thinkbroadband.com/5MB.zip"}
+
+
+ +
+
+ + + + + + + diff --git a/components/juicenet/index.html b/components/juicenet/index.html new file mode 100644 index 0000000000..f4f97e288c --- /dev/null +++ b/components/juicenet/index.html @@ -0,0 +1,459 @@ + + + + + + + + + Juicenet - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Juicenet +

+
+
+

The juicenet sensor platform pulls data from a JuiceNet charging station equipped with a wifi connection. It will access and make available all of the devices attached to your account.

+

To enable the platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+juicenet:
+    access_token: ACCESS_TOKEN
+
+
+

Configuration variables:

+
    +
  • access_token (Required): Your eMotorWerks API Token can be found in the dashboard.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/keyboard/index.html b/components/keyboard/index.html new file mode 100644 index 0000000000..772637c9ac --- /dev/null +++ b/components/keyboard/index.html @@ -0,0 +1,227 @@ + + + + + + + + + Keyboard - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Keyboard +

+
+
+

The keyboard component simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS):

+
    +
  • keyboard/volume_up
  • +
  • keyboard/volume_down
  • +
  • keyboard/volume_mute
  • +
  • keyboard/media_play_pause
  • +
  • keyboard/media_next_track
  • +
  • keyboard/media_prev_track
  • +
+

To load this component, add the following lines to your configuration.yaml:

+
keyboard:
+
+
+

Dependencies

+

You may need to install platform-specific dependencies for PyUserInput in order to use the keyboard component. In most cases this can be done by running:

+
$ pip3 install [package name]
+
+
+

Windows

+

x64 Windows users may have trouble installing pywin through pip. Using an executable installer should work around this issue.

+

Similar installers (unofficial) for pyhook have been ported to python 3.4 and should help with x64 pip issues with pyhook.

+
+
+ +
+
+ + + + + + + diff --git a/components/keyboard_remote/index.html b/components/keyboard_remote/index.html new file mode 100644 index 0000000000..b4b9e14e41 --- /dev/null +++ b/components/keyboard_remote/index.html @@ -0,0 +1,302 @@ + + + + + + + + + Keyboard Remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Keyboard Remote +

+
+
+

Receive signals from a keyboard and use it as a remote control.

+

This component allows you to use a keyboard as remote control. It will fire keyboard_remote_command_received events which can then be used in automation rules.

+

The evdev package is used to interface with the keyboard and thus this is Linux only. It also means you can’t use your normal keyboard for this because evdev will block it.

+
# Example configuration.yaml entry
+keyboard_remote:
+  type: 'key_up'
+
+
+

Configuration variables:

+
    +
  • type (Required): Possible values are key_up, key_down, and key_hold. Be careful, key_hold will fire a lot of events.
  • +
  • device_descriptor (Optional): Path to the local event input device file that corresponds to the keyboard.
  • +
  • device_name (Optional): Name of the keyboard device.
  • +
+

Either device_name or device_descriptor must be present in the configuration entry. Indicating a device name is useful in case of repeating disconnections and re-connections of the device (for example, a bluetooth keyboard): the local input device file might change, thus breaking the configuration, while the name remains the same. +In case of presence of multiple devices of the same model, device_descriptor must be used.

+

A list of possible device descriptors and names is reported in the debug log at startup when the device indicated in the configuration entry could not be found.

+

A full configuration for Keyboard Remote could look like the one below:

+
keyboard_remote:
+  device_descriptor: '/dev/input/by-id/bluetooth-keyboard'
+  type: 'key_up'
+
+
+

or like the following:

+
keyboard_remote:
+  device_name: 'Bluetooth Keyboard'
+  type: 'key_down'
+
+
+

And an automation rule to breathe life into it:

+
automation:
+  alias: Keyboard all lights on
+  trigger:
+    platform: event
+    event_type: keyboard_remote_command_received
+    event_data:
+      key_code: 107 # inspect log to obtain desired keycode
+  action:
+    service: light.turn_on
+    entity_id: light.all
+
+
+

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.

+

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.

+

Here’s an automation example that plays a sound through a media player whenever the keyboard connects/disconnects:

+
automation:
+  - alias: Keyboard Connected
+    trigger:
+      platform: event
+      event_type: keyboard_remote_connected
+    action:
+      - service: media_player.play_media
+        data:
+          entity_id: media_player.speaker
+          media_content_id: keyboard_connected.wav
+          media_content_type: music
+  - alias: Keyboard Disconnected
+    trigger:
+      platform: event
+      event_type: keyboard_remote_disconnected
+    action:
+      - service: media_player.play_media
+        data:
+          entity_id: media_player.speaker
+          media_content_id: keyboard_disconnected.wav
+          media_content_type: music
+
+
+

Permissions

+

There might be permissions problems with the event input device file. If this is the case, the user that Home Assistant runs as must be allowed read and write permissions with:

+
$ sudo setfacl -m u:HASS_USER:rw /dev/input/event*
+
+
+

where HASS_USER is the user who runs Home Assistant.

+

If you want to make this permanent, you can use a udev rule that sets it for all event input devices. Add a file /etc/udev/rules.d/99-userdev-input.rules containing:

+
KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:HASS_USER:rw $env{DEVNAME}"
+
+
+

You can check ACLs permissions with

+
$ getfacl /dev/input/event*
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/kira/index.html b/components/kira/index.html new file mode 100644 index 0000000000..10aef8dc5b --- /dev/null +++ b/components/kira/index.html @@ -0,0 +1,522 @@ + + + + + + + + + Kira - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Kira +

+
+
+

The kira component is the main component to integrate Keene Electronics IR over IP Kira modules with Home Assistant.

+

Example Configuration

+
# Example configuration.yaml entry
+kira:
+
+
+

Kira modules have no built-in mechanism for auto-discovery, so will need to be configured to send packets to Home Assistant. Documentation for this can be found on the manufacturer’s website Here.

+

Configuration Options

+
# Example configuration.yaml entry
+kira:
+  sensors:
+    - name: kira_sensor
+      host: 0.0.0.0
+      port: 65432
+  remotes:
+    - name: kira_remote
+      host: 192.168.100.1
+      port: 65432
+
+
+

Configuration variables:

+
    +
  • sensors (Optional): Kira sensors to register +
      +
    • name (Optional): Name of this sensor.
    • +
    • host (Optional): Bind address for this sensor. 0.0.0.0 is default.
    • +
    • port (Optional): UDP port to listen for packets on. 65432 is default.
    • +
    +
  • +
  • remotes (Optional): Remote Kira modules to register +
      +
    • name (Optional): Name of this remote.
    • +
    • host (Required): IP address of Kira module to send commands to.
    • +
    • port (Optional): UDP port to send packets to. 65432 is default.
    • +
    +
  • +
+

If no sensors or remotes are specified, a sensor with default values will be added.

+

Code Configuration

+

The first time the Kira component is loaded, kira_codes.yaml will be created in the Home Assistant configuration directory.

+
# Example kira_codes.yaml entry
+- name: LivingRoomTVOn
+  code: "K 2322 228A 1126 023E 0227 023E 0207 023F 0658 025D 0207 023F 0227 0220 0227 023F 0222 023E 0222 0220 067D 023F 0658 0222 0227 025C 0640 023F 0658 025D 0640 023E 0658 025D 0640 023F 0222 025C 0207 0222 0678 023E 0207 023F 0227 023F 0222 025C 063B 025C 0640 023E 0660 023E 0658 025D 0207 0222 0678 023E 0660 0220 0678 023E 0202 025D 0207 023F 2000"
+  type: kira
+- name: HDMI_1
+  code: "0000 006d 0026 0000 0155 00aa 0016 0015 0016 0015 0016 0040 0016 0015 0016 0015 0016 0014 0016 0015 0016 0015 0016 0040 0016 0040 0016 0015 0016 0040 0016 0040 0016 0040 0016 0040 0016 0040 0016 0015 0016 0040 0016 0040 0016 0040 0016 0014 0016 0015 0016 0040 0016 0040 0016 0040 0016 0015 0016 0014 0016 0014 0016 0040 0016 0040 0016 0014 0016 0015 0016 060b 0155 0055 0016 0e58 0155 0055 0016 00aa"
+  device: LivingRoomTv
+  type: pronto
+- name: RGB
+  code: "F709 DC24"
+  device: LivingRoomTv
+  type: nec
+
+
+

Configuration variables:

+
    +
  • name (Required): The name of this code.
  • +
  • code (Required): The data for this code (see below).
  • +
  • device (Optional): The device this code is associated with. Default is “unknown”.
  • +
  • type (Optional): The type of this code. If this field is omitted, the type will be autodetected if possible.
  • +
  • repeat (Optional): The number of times to repeat this code (on transmit). Default is 1.
  • +
+

Some manufacturers (e.g. Samsung) require an IR code to be sent a number of times in a row in rapid succession (usually 3). This doesn’t apply to the vast majority of devices, but it can be helpful if needed.

+

Code Types

+

When creating an entry in kira_codes.yaml, a few different kinds of codes can be used.

+
    +
  • kira: This is the native wire protocol used by Kira modules. These can be captured using netcat.
  • +
  • pronto: Pronto codes are supported.
  • +
  • nec: If the device uses NEC IR codes and the manufacturer has published them, they can be used here.
  • +
+

NOTE: NEC codes by themselves contain enough information to recognize an IR sequence, but not enough to reconstruct it. Codes of this type are receive-only (usable by sensors but not remotes).

+
+
+ +
+
+ + + + + + + diff --git a/components/knx/index.html b/components/knx/index.html new file mode 100644 index 0000000000..c95f207c57 --- /dev/null +++ b/components/knx/index.html @@ -0,0 +1,566 @@ + + + + + + + + + KNX - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX +

+
+
+

The KNX 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. Through this, it will send and receive commands to and from other devices to the KNX bus.

+

+ Please note, the knx platform does not support Windows and needs at least python version 3.5. +

+

There is currently support for the following device types within Home Assistant:

+ +

Configuration

+

To use your KNX in your installation, add the following lines to your configuration.yaml file:

+
knx:
+
+
+

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:

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

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

+
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).
  • +
+
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 behavior.
  • +
+

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

Exposing sensor values or time to knx bus

+

KNX component is able to expose time or sensor values to KNX bus. The component will broadcast any change of the exposed value to the KNX bus and answer read requests to the specified group address:

+
# Example configuration.yaml entry
+knx:
+    expose::
+        - type: 'temperature'
+          entity_id: 'sensor.owm_temperature'
+          address: '0/0/2'
+        - type: 'time'
+          address: '0/0/1'
+        - type: 'datetime'
+          address: '0/0/23'
+
+
+
    +
  • type: Type of the exposed value. Either time or datetime or any supported type of KNX Sensor (e.g. “temperature” or “humidity”).
  • +
  • entity_id: Entity id of the HASS component to be exposed. Not necessarry for types time and datetime.
  • +
  • address: KNX group address.
  • +
+

Known issues

+

Due to lame multicast support the routing abstraction and the gateway scanner only work with Python >=3.5.

+
+
+ +
+
+ + + + + + + diff --git a/components/lametric/index.html b/components/lametric/index.html new file mode 100644 index 0000000000..349d360bb8 --- /dev/null +++ b/components/lametric/index.html @@ -0,0 +1,460 @@ + + + + + + + + + LaMetric - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LaMetric +

+
+
+

LaMetric Time 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:

+ +

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.

+
# configuration.yaml example
+lametric:
+  client_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
+  client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.abode/index.html b/components/light.abode/index.html new file mode 100644 index 0000000000..2e16abb5c6 --- /dev/null +++ b/components/light.abode/index.html @@ -0,0 +1,372 @@ + + + + + + + + + Abode Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Light +

+
+
+

The abode security control panel platform allows you to control your Abode 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.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.ads/index.html b/components/light.ads/index.html new file mode 100644 index 0000000000..74b73bb540 --- /dev/null +++ b/components/light.ads/index.html @@ -0,0 +1,384 @@ + + + + + + + + + ADS Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ADS Light +

+
+
+

The ads light platform allows you to control your connecte ADS lights.

+

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml +file:

+
# Example configuration.yaml entry
+light:
+  - platform: ads
+    adsvar: GVL.enable_light
+    adsvar_brightness: GVL.brightness
+
+
+
+

Configuration Variables

+
+
adsvar
+
+

(string)(Required)The name of the boolean variable that switches the light on

+
+
adsvar_brightness
+
+

(integer)(Optional)The name of the variable that controls the brightness, use an unsigned integer on the PLC side

+
+
name
+
+

(string)(Optional)An identifier for the Light in the frontend

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.avion/index.html b/components/light.avion/index.html new file mode 100644 index 0000000000..9496adc1e1 --- /dev/null +++ b/components/light.avion/index.html @@ -0,0 +1,373 @@ + + + + + + + + + Avi-on - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Avi-on +

+
+
+

Support for the Avi-on Bluetooth dimmer switch Avi-On.

+

To enable these lights, add the following lines to your configuration.yaml file:

+
# 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:

+
# Manual device configuration.yaml entry
+light:
+  - platform: avion
+    devices:
+      00:21:4D:00:00:01:
+        name: Light 1
+        api_key: Gr35a/rt3RgaRenl9ag8Ba==
+      00:21:3D:20:00:a1:
+        name: Light 2
+        api_key: Gr35a/rt3RgaRenl9ag8Ba==
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.blinksticklight/index.html b/components/light.blinksticklight/index.html new file mode 100644 index 0000000000..e64e94cb71 --- /dev/null +++ b/components/light.blinksticklight/index.html @@ -0,0 +1,354 @@ + + + + + + + + + Blinkstick - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blinkstick +

+
+
+

The blinkstick platform lets you control your Blinkstick lights from within Home Assistant.

+

To add blinkstick to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: blinksticklight
+    serial: BS000795-1.1
+    name: Living Room
+
+
+

Configuration variables:

+
    +
  • serial (Required): The serial number of your stick.
  • +
  • name (Required): Name of the stick.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.blinkt/index.html b/components/light.blinkt/index.html new file mode 100644 index 0000000000..7516a2fd9f --- /dev/null +++ b/components/light.blinkt/index.html @@ -0,0 +1,347 @@ + + + + + + + + + Blinkt! - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blinkt! +

+
+
+

The blinkt light platform lets you control the Blinkt! board, featuring eight super-bright RGB LEDs.

+

To enable blinkt in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: blinkt
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.deconz/index.html b/components/light.deconz/index.html new file mode 100644 index 0000000000..5806d64930 --- /dev/null +++ b/components/light.deconz/index.html @@ -0,0 +1,370 @@ + + + + + + + + + deCONZ lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ deCONZ lights +

+
+
+

See the deCONZ main component for configuration instructions.

+

Entity Ids names will be light.device_name, where device_name is defined in deCONZ. Light groups created in deCONZ will be created in Home Assistant as lights named light.group_name_in_deconz, allowing the user to control groups of lights with only a single API call to deCONZ.

+

Verified to be supported sensors

+
    +
  • IKEA Trådfri bulb E14 WS opal 400lm
  • +
  • IKEA Trådfri Bulb E27 WS Opal 980lm
  • +
  • IKEA Trådfri Bulb E27 WS Opal 1000lm
  • +
  • IKEA Trådfri Bulb GU10 W 400lm
  • +
  • OSRAM Flex RGBW
  • +
  • OSRAM Gardenpole RGBW
  • +
  • Philips Hue White A19
  • +
  • Philips Hue White Ambiance A19
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.decora/index.html b/components/light.decora/index.html new file mode 100644 index 0000000000..1e3fe00862 --- /dev/null +++ b/components/light.decora/index.html @@ -0,0 +1,381 @@ + + + + + + + + + Leviton Decora - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Leviton Decora +

+
+
+

Support for the Decora Bluetooth dimmer switch Leviton.

+

The API key can be obtained by downloading this git repository and running the read_key.py script with the Bluetooth address of the switch as the first argument. Hold the switch in the off position until the green status LED starts flashing before running the script. The output is the API key.

+

To enable these lights, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: decora
+    devices:
+      00:21:4D:00:00:01:
+        api_key: 0x12345678
+
+
+

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 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/components/light.decora_wifi/index.html b/components/light.decora_wifi/index.html new file mode 100644 index 0000000000..f6dc64dccd --- /dev/null +++ b/components/light.decora_wifi/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Leviton Decora Wi-Fi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Leviton Decora Wi-Fi +

+
+
+

Support for Leviton Decora Wi-Fi dimmers/switches via the MyLeviton API.

+

Supported devices (tested):

+
    +
  • DW6HD1-BZ (Decora Smart Wi-Fi 600W Dimmer)
  • +
  • DW15S-1BZ (Decora Smart Wi-Fi 15A Switch)
  • +
+

To enable these lights, add the following lines to your configuration.yaml file:

+
# 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/components/light.enocean/index.html b/components/light.enocean/index.html new file mode 100644 index 0000000000..b1d194a501 --- /dev/null +++ b/components/light.enocean/index.html @@ -0,0 +1,372 @@ + + + + + + + + + EnOcean Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EnOcean Light +

+
+
+

An EnOcean light can take many forms. Currently only one type has been tested: Eltako FUD61 dimmer.

+

To use your EnOcean device, you first have to set up your EnOcean hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: enocean
+    id: [0x01,0x90,0x84,0x3C]
+    sender_id: [0xFF,0xC6,0xEA,0x04]
+
+
+

Configuration variables:

+
    +
  • id (Required): The ID of the device. This is the 4 bytes long number written on the dimmer.
  • +
  • sender_id (Required): The Sender ID of the device. This is a 4 bytes long number.
  • +
  • name (Optional): An identifier for the Ligh in the frontend.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.flux_led/index.html b/components/light.flux_led/index.html new file mode 100644 index 0000000000..2b79b31ddf --- /dev/null +++ b/components/light.flux_led/index.html @@ -0,0 +1,474 @@ + + + + + + + + + Flux Led/MagicLight - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Flux Led/MagicLight +

+
+
+

The flux_led support is integrated into Home Assistant as a light platform. Several brands of both bulbs and controllers use the same protocol and they have the HF-LPB100 chipset in common. The chances are high that your bulb or controller (eg. WiFi LED CONTROLLER) will work if you can control the device with the MagicHome app.

+

Example of bulbs:

+ +

Examples of controllers:

+ +

Configuration Details

+

To enable those lights, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: flux_led
+
+
+

Configuration variables:

+
    +
  • automatic_add (Optional): To enable the automatic addition of lights on startup.
  • +
  • devices (Optional): A list of devices with their ip address
  • +
+

Configuration variables within devices list:

+
    +
  • name (Optional): A friendly name for the device.
  • +
  • mode (Optional): The chosen brightness mode; options are ‘rgbw’ and ‘rgb’, defaults to rgbw.
  • +
  • protocol (Optional): Set this to ‘ledenet’ if you are using a ledenet bulb.
  • +
+

+Depending on your controller or bulb type, there are two ways to configure brightness. +The component defaults to rgbw. If your device has a separate white channel, you do not need to specify anything else; changing the white value will adjust the brightness of white channel keeping rgb color constant. However, if your device does not have a separate white channel, you will need to set the mode to rgb. In this mode, the device will keep the same color, and adjust the rgb values to dim or brighten the color. +

+

Example configuration

+

Will automatically search and add all lights on start up:

+
# Example configuration.yaml entry
+light:
+  - platform: flux_led
+    automatic_add: True
+
+
+

Will add two lights with given name and create an automation rule to randomly set color each 45 seconds:

+
light:
+# Example configuration.yaml entry
+  - platform: flux_led
+    devices:
+      192.168.0.106:
+        name: flux_lamppost
+      192.168.0.109:
+        name: flux_living_room_lamp
+
+automation:
+  alias: random_flux_living_room_lamp
+  trigger:
+    platform: time
+    seconds: '/45'
+  action:
+    service: light.turn_on
+    data:
+      entity_id: light.flux_living_room_lamp
+      effect: random
+
+
+

Will add a light without the white mode:

+
    192.168.1.10:
+      name: NAME
+      mode: "rgb"
+
+
+

Will add a light with rgb+white mode (default). White and RGB channels can be adjusted independently using a slider and color picker respectively.

+
    192.168.1.10:
+      name: NAME
+      mode: "rgbw"
+
+
+

Some devices such as the Ledenet RGBW controller use a slightly different protocol for communicating the brightness to each color channel. If your device is only turning on or off but not changing color or brightness try adding the LEDENET protocol.

+
light:
+  - platform: flux_led
+    devices:
+      192.168.1.10:
+        name: NAME
+        protocol: 'ledenet'
+
+
+

Effects

+

The FLUX_LED light offers a number of effects which are not included in other lighting packages. These can be selected from the front-end, or sent in the effect field of the light TURN_ON command.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Effect NameDescription
colorloopSmoothly transitions through the rainbow
colorjumpJumps through seven different rainbow colors.
colorstrobeStrobes each rainbow color in a loop.
randomChooses a random color by selecting random values for R, G, and B
red_fade, green_fade, blue_fade, yellow_fade, cyan_fade, purple_fade, white_fadeFades between the color as indicated in the effect name and black.
rg_cross_fadeFades between red and green.
rb_cross_fadeFades between red and blue.
gb_cross_fadeFades between green and blue
red_strobe, green_strobe, blue_strobe, yellow_strobe, cyan_strobe, purple_strobe, white_strobeStrobes the color indicated by the effect name.
+
+
+ +
+
+ + + + + + + diff --git a/components/light.greenwave/index.html b/components/light.greenwave/index.html new file mode 100644 index 0000000000..df7e1e92e3 --- /dev/null +++ b/components/light.greenwave/index.html @@ -0,0 +1,366 @@ + + + + + + + + + Greenwave Reality (TCP Connected) Lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Greenwave Reality (TCP Connected) Lights +

+
+
+

This component communicates with the Greenwave Reality (TCP Connected) Gateway to allow control of all lights and fixtures registered to the gateway. Bulbs and Fixtures can be created and modified inside the TCP Lighting App for Android and iOS.

+

This component has been tested on firmware revisions:

+
    +
  • 2.0.105
  • +
+

To configure the connection to the gateway, add the following to your configuration.yaml file:

+
light:
+  - platform: greenwave
+    host: XXX.XXX.XXX.XXX
+    version: 3
+
+
+

The version option is the major revision of your firmware, which should be 2 or 3. If you are running Version 2, there are no extra steps. If you are running Version 3, you must press the Sync button on the gateway prior to the first launch of Home Assistant, so a token can be grabbed. Once home assistant has started, you can either press the Sync button again or wait for it to time out manually.

+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP Address of your Gateway

+
+
version
+
+

(integer)(Required)Major version of the gateway firmware

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.group/index.html b/components/light.group/index.html new file mode 100644 index 0000000000..0a6d9d7b21 --- /dev/null +++ b/components/light.group/index.html @@ -0,0 +1,382 @@ + + + + + + + + + Light Group - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Light Group +

+
+
+

The group light platform lets you combine multiple lights into one entity. All child lights of a light group can still be used as usual, but controlling the state of the grouped light will forward the command to each child light.

+

To enable this platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: group
+    name: Kitchen Lights
+    entities:
+      - light.kitchen_ceiling_lights
+      - light.kitchen_under_cabinet_lights
+      - light.kitchen_spot_lights
+      - light.pendant_lights
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the light group. Defaults to “Light Group”.

+
+
entities
+
+

(string list)(Required)A list of entities to be included in the light group.

+
+
+
+

+ +Example of the light group “Kitchen Lights”. +

+

The supported features of all lights will be added together. For example, if you have one RGB light in a group of otherwise brightness-only lights, the light group will be shown with a color picker.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.hive/index.html b/components/light.hive/index.html new file mode 100644 index 0000000000..afa911d1ae --- /dev/null +++ b/components/light.hive/index.html @@ -0,0 +1,370 @@ + + + + + + + + + Hive Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hive Light +

+
+
+

The ‘hive’ light component integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light.

+

The Hive light component supports the following Hive products:

+
    +
  • Hive Active Light Dimmable
  • +
  • Hive Active Light Cool to Warm White
  • +
  • Hive Active Light Color Changing
  • +
+

+Full configuration details can be found on the main Hive component page. +

+
+
+ +
+
+ + + + + + + diff --git a/components/light.homematic/index.html b/components/light.homematic/index.html new file mode 100644 index 0000000000..7f41da9361 --- /dev/null +++ b/components/light.homematic/index.html @@ -0,0 +1,365 @@ + + + + + + + + + Homematic Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic Light +

+
+
+

The homematic light platform lets you control Homematic lights through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup Homematic.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.hue/index.html b/components/light.hue/index.html new file mode 100644 index 0000000000..b16d522c30 --- /dev/null +++ b/components/light.hue/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Philips Hue Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Philips Hue Light +

+
+
+

The Philips Hue light platform allows you to control your Philips Hue lights.

+

This component will automatically add Lights configured on your Hue bridges.

+

The requirement is that you have setup your Philips Hue bridge.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.hyperion/index.html b/components/light.hyperion/index.html new file mode 100644 index 0000000000..04e08a3d3d --- /dev/null +++ b/components/light.hyperion/index.html @@ -0,0 +1,358 @@ + + + + + + + + + Hyperion - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hyperion +

+
+
+

The hyperion platform allows you to integrate your Hyperion into Home Assistant. Hyperion is an open source Ambilight implementation which runs on many platforms.

+

To use your Hyperion light in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: hyperion
+    host: IP_ADDRESS
+
+
+

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.
  • +
  • hdmi_priority (Optional): The priority of the HDMI grabber of this Hyperion instance, note that this priority must be higher than all other priorities used for correct behavior. Defaults to 880.
  • +
  • default_color (Optional): The color of the light. Defaults to [255, 255, 255].
  • +
  • effect_list (Optional): The list of effects that can be used. Defaults to ['HDMI', 'Cinema brighten lights', 'Cinema dim lights', 'Knight rider', 'Blue mood blobs', 'Cold mood blobs', 'Full color mood blobs', 'Green mood blobs', 'Red mood blobs', 'Warm mood blobs', 'Police Lights Single', 'Police Lights Solid', 'Rainbow mood', 'Rainbow swirl fast', 'Rainbow swirl', 'Random', 'Running dots', 'System Shutdown', 'Snake', 'Sparks Color', 'Sparks', 'Strobe blue', 'Strobe Raspbmc', 'Strobe white', 'Color traces', 'UDP multicast listener', 'UDP listener', 'X-Mas'].
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.iglo/index.html b/components/light.iglo/index.html new file mode 100644 index 0000000000..3cabb3888b --- /dev/null +++ b/components/light.iglo/index.html @@ -0,0 +1,367 @@ + + + + + + + + + iGlo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ iGlo +

+
+
+

The iglo platform allows you to integrate your iGlo Lights into Home Assistant.

+

To use your iGlo light in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: iglo
+    host: 192.168.1.10
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address for connecting to the light.

+
+
name
+
+

(string)(Optional)The name for this light.

+

Default value: iGlo Light

+
+
port
+
+

(integer)(Optional)The port used to connect to the light.

+

Default value: 8080

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.ihc/index.html b/components/light.ihc/index.html new file mode 100644 index 0000000000..947abcb1c3 --- /dev/null +++ b/components/light.ihc/index.html @@ -0,0 +1,409 @@ + + + + + + + + + IHC Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IHC Light +

+
+
+

Before you can use the IHC Light platform, you must setup the IHC Component

+

When auto setup is enabled the following products will be found in the IHC project and setup as light devices:

+
    +
  • Wireless lamp outlet dimmer
  • +
  • Wireless dimmer
  • +
  • Wireless combi dimmer 4 buttons
  • +
  • Wireless lamp outlet relay
  • +
  • Wireless combi relay 4 buttons
  • +
  • Wireless mobile dimmer
  • +
  • Dataline lamp outlet
  • +
+

To manually configure IHC lights insert this section in your configuration:

+
light:
+  - platform: ihc
+    lights:
+      - id: 12345
+        name: tablelight
+        dimmable: True
+      - id: 12346
+        name: anotherlight
+      ...
+
+
+
+

Configuration Variables

+
+
lights
+
+

(map)(Optional)List of lights to setup manually

+
+
+
+
dimmable
+
+

(bool)(Optional)Set to True if the IHC resource is a light level

+

Default value: false

+
+
id
+
+

(int)(Required)The IHC resource id.

+
+
name
+
+

(string)(Optional)The name of the component

+
+
+
+
+
+

In the example above 12345 is ihc resource id and “tablelight” is the name. +The IHC resource id can be a light level for dimmers or a boolean output of a relay. +For more information about IHC resource ids see Manual Setup

+
+
+ +
+
+ + + + + + + diff --git a/components/light.insteon_hub/index.html b/components/light.insteon_hub/index.html new file mode 100644 index 0000000000..43b932726c --- /dev/null +++ b/components/light.insteon_hub/index.html @@ -0,0 +1,353 @@ + + + + + + + + + Insteon Hub Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon Hub Light +

+
+
+

The insteon_hub light component lets you control your lights connected to an Insteon Hub with Home Assistant.

+

To get your Insteon Hub fan working with Home Assistant, follow the instructions for the general Insteon Hub component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.insteon_local/index.html b/components/light.insteon_local/index.html new file mode 100644 index 0000000000..d56be54022 --- /dev/null +++ b/components/light.insteon_local/index.html @@ -0,0 +1,353 @@ + + + + + + + + + Insteon (Local) Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon (Local) Light +

+
+
+

The insteon_local light component lets you control your lights connected to an Insteon Hub with Home Assistant.

+

To get your insteon lights working with Home Assistant, follow the instructions for the general Insteon local component. The lights will be automatically disovered and added to Home Assistant. The device names will be the Insteon address of the lights.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.insteon_plm/index.html b/components/light.insteon_plm/index.html new file mode 100644 index 0000000000..32952b6167 --- /dev/null +++ b/components/light.insteon_plm/index.html @@ -0,0 +1,358 @@ + + + + + + + + + Insteon PLM Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon PLM Light +

+
+
+

The insteon_plm light platform lets you control your dimmable light switches through an INSTEON PowerLinc Modem (PLM) device connected directly to your system on an USB or serial port. To add support, set up the primary insteon_plm component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.isy994/index.html b/components/light.isy994/index.html new file mode 100644 index 0000000000..baf1bc2601 --- /dev/null +++ b/components/light.isy994/index.html @@ -0,0 +1,365 @@ + + + + + + + + + ISY994 Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Light +

+
+
+

The isy994 platform allows you to get data from your ISY994 light from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.knx/index.html b/components/light.knx/index.html new file mode 100644 index 0000000000..fbbb74f520 --- /dev/null +++ b/components/light.knx/index.html @@ -0,0 +1,390 @@ + + + + + + + + + KNX Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Light +

+
+
+

The knx light component is used as in interface to switching/light actuators.

+

The knx component must be configured correctly, see KNX Component.

+

To use your KNX light in your installation, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: knx
+    name: Kitchen-Light-1
+    address: '1/0/9'
+    brightness_address: '1/0/11'
+
+
+

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/components/light.lifx/index.html b/components/light.lifx/index.html new file mode 100644 index 0000000000..bb67d55769 --- /dev/null +++ b/components/light.lifx/index.html @@ -0,0 +1,519 @@ + + + + + + + + + LIFX - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LIFX +

+
+
+

The lifx platform allows you to integrate your LIFX into Home Assistant.

+

Please note, the lifx platform does not support Windows. The lifx_legacy platform (supporting basic functionality) can be used instead.

+
# Example configuration.yaml entry
+light:
+  - platform: lifx
+
+
+

Configuration variables:

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

Set state

+

The LIFX bulbs allow a change of color and brightness even when they are turned off. This way you can control the light during the day so its settings are correct when events for turning on are received, for example from motion detectors or external buttons.

+

The normal light.turn_on call cannot be used for this because it always turns the power on. Thus, LIFX has its own service call that allows color changes without affecting the current power state.

+

Service light.lifx_set_state

+

Change the light to a new state.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeDescription
entity_idString or list of strings that point at entity_ids of lights. Else targets all.
transitionDuration (in seconds) for the light to fade to the new state.
zonesList of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0).
infraredAutomatic infrared level (0..255) when light brightness is low (for compatible bulbs).
powerTurn 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 to specify the new state.
+

Light effects

+

The LIFX platform supports several light effects. You can start these effects with default options by using the effect attribute of the normal light.turn_on service, for example like this:

+
automation:
+  - alias: ...
+    trigger:
+      # ...
+    action:
+      - service: light.turn_on
+        data:
+          entity_id: light.office, light.kitchen
+          effect: lifx_effect_pulse
+
+
+

However, if you want to fully control a light effect, you have to use its dedicated service call, like this:

+
script:
+  colorloop_start:
+    alias: 'Start colorloop'
+    sequence:
+      - service: light.lifx_effect_colorloop
+        data:
+          entity_id: group.livingroom
+          brightness: 255
+          period: 10
+          spread: 30
+          change: 35
+
+
+

The available light effects and their options are listed below.

+

Service light.lifx_effect_pulse

+

Run a flash effect by changing to a color and then back.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeDescription
entity_idString or list of strings that point at entity_ids of lights. Else targets all.
color_nameA color name such as red or green.
rgb_colorA list containing three integers representing the RGB color you want the light to be.
brightnessInteger between 0 and 255 for how bright the color should be.
periodThe duration of a single pulse (in seconds).
cyclesThe total number of pulses.
modeThe way to change between colors. Valid modes: blink (default), breathe, ping, strobe, solid.
power_onSet this to False to skip the effect on lights that are turned off (defaults to True).
+

Service light.lifx_effect_colorloop

+

Run an effect with colors looping around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeDescription
entity_idString or list of strings that point at entity_ids of lights. Else targets all.
brightnessNumber between 0 and 255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light.
periodDuration (in seconds) between starting a new color change.
transitionDuration (in seconds) where lights are actively changing color.
changeHue movement per period, in degrees on a color wheel (ranges from 0 to 359).
spreadMaximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359).
power_onSet this to False to skip the effect on lights that are turned off (defaults to True).
+

Service light.lifx_effect_stop

+

Run an effect that does nothing, thereby stopping any other effect that might be running.

+ + + + + + + + + + + + + +
Service data attributeDescription
entity_idString or list of strings that point at entity_ids of lights. Else targets all.
+
+
+ +
+
+ + + + + + + diff --git a/components/light.limitlessled/index.html b/components/light.limitlessled/index.html new file mode 100644 index 0000000000..c2e5b2de69 --- /dev/null +++ b/components/light.limitlessled/index.html @@ -0,0 +1,428 @@ + + + + + + + + + LimitlessLED - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LimitlessLED +

+
+
+

limitlessled can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight, or iLight.

+

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 or iTunes). 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, white and dimmer group to the same group number, effectively allowing 16 groups (4 rgbww, 4 rgbw, 4 white and 4 dimmer) per bridge.

+

To add limitlessled to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  platform: limitlessled
+  bridges:
+    - host: 192.168.1.10
+      groups:
+      - number: 1
+        name: Bedroom
+      - number: 2
+        type: rgbw
+        name: Bathroom
+      - number: 3
+        type: rgbw
+        name: Kitchen
+        fade: on
+      - number: 4
+        type: dimmer
+        name: Livingroom
+    - host: 192.168.1.11
+      groups:
+      - number: 1
+        name: Living Room & Hall
+      - number: 1
+        type: bridge-led
+        name: Bridge Light
+
+
+

Configuration variables:

+
    +
  • bridges array (Required): +
      +
    • host (Required): IP address of the device, eg. 192.168.1.32
    • +
    • version (Optional): Bridge version (default is 6).
    • +
    • port (Optional): Bridge port. Defaults to 5987. For older bridges than v6 choose 8899.
    • +
    • groups array (Required): The list of available groups. +
        +
      • number (Required): Group number (1-4). Corresponds to the group number on the remote. These numbers may overlap only if the type is different.
      • +
      • name (Required): Any name you’d like. Must be unique among all configured groups.
      • +
      • type (Optional): Type of group. Choose either rgbww, rgbw, white, bridge-led or dimmer. rgbw is the default if you don’t specify this entry. Use bridge-led to control the built-in LED of newer WiFi bridges.
      • +
      • fade (Optional): Fade behavior. Defaults to off. If turned on, the group is faded out before being turned off. This makes for a more pleasing transition at the expense of wall switch usability, since the light will turn back on at the lowest brightness if it is power cycled.
      • +
      +
    • +
    +
  • +
+

Properties

+

Refer to the light documentation for general property usage, but keep in mind the following notes specific to LimitlessLED.

+
    +
  • RGBWW (Only supported on v6 bridges) +
      +
    • Color: There are 25,856 color possibilities along the LimitlessLED color spectrum. For colors, hue and saturation can be used, but not lightness. If you select a color with lightness, Home Assistant will calculate the nearest valid LimitlessLED color. In white mode the temperature can be set.
    • +
    • Temperature: There are 101 temperature steps.
    • +
    • Brightness: There are 101 brightness steps.
    • +
    +
  • +
  • RGBW +
      +
    • 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.
    • +
    • Temperature: Wifi bridge v6 supports 101 temperature steps; older versions only 10.
    • +
    • Brightness: Wifi bridge v6 supports 101 brightness steps; older versions only 10.
    • +
    +
  • +
  • Dimmer (Only supported on v6 bridges) +
      +
    • This type is for a single color LED dimmer like the 1CH MiLight dimmer module or similar. This type is only supported by the version 6 Wifi bridges.
    • +
    • Brightness: Wifi bridge v6 supports 101 brightness steps.
    • +
    +
  • +
  • Transitions +
      +
    • If a transition time is set, the group will transition between the current settings and the target settings for the duration specified. Transitions from or to white are not possible - the color will change immediately.
    • +
    +
  • +
+

Initialization & Synchronization

+

When starting Home Assistant, the last recorded state will be shown. This might no longer match the actual state of the bulbs.

+

If you control your LimitlessLED lights via the MiLight mobile application or other means while Home Assistant is running, Home Assistant can not track those changes and you may observe obsolete information.

+

This lack of synchronization is due to a LimitlessLED limitation.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.litejet/index.html b/components/light.litejet/index.html new file mode 100644 index 0000000000..012bd32996 --- /dev/null +++ b/components/light.litejet/index.html @@ -0,0 +1,354 @@ + + + + + + + + + LiteJet Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LiteJet Light +

+
+
+

To get your LiteJet lights working with Home Assistant, follow the instructions for the general LiteJet component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.lutron/index.html b/components/light.lutron/index.html new file mode 100644 index 0000000000..756f64d5a3 --- /dev/null +++ b/components/light.lutron/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Lutron Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Light +

+
+
+

To get your Lutron lights working with Home Assistant, follow the instructions for the general Lutron component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.lutron_caseta/index.html b/components/light.lutron_caseta/index.html new file mode 100644 index 0000000000..747e5851b8 --- /dev/null +++ b/components/light.lutron_caseta/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Lutron Caseta Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Caseta Light +

+
+
+

To get Lutron Caseta lights working with Home Assistant, follow the instructions for the general Lutron Caseta component.

+

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.

+

For more information on working with lights in Home Assistant, see the Lights component.

+

Available services: light.turn_on, light.turn_off and light.toggle. The light.turn_on service supports attributes brightness and brightness_pct.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.mochad/index.html b/components/light.mochad/index.html new file mode 100644 index 0000000000..b6b28053a8 --- /dev/null +++ b/components/light.mochad/index.html @@ -0,0 +1,366 @@ + + + + + + + + + Mochad Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mochad Light +

+
+
+

The mochad light platform lets you control an X10 enabled dimmer/light +device.

+

To enable this sensor, you first have to set up the mochad component and then add the following to your configuration.yaml file:

+
# 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 light. Default is: x10light_devaddress.
  • +
  • comm_type (Optional): pl (powerline) or rf (radio frequency). Default is pl.
  • +
  • brightness_levels (Optional): The number of brightness levels the X10 light device supports. This can either be 32, 64, or 256 (note that the max +value sent to the device will be n-1 because it starts at 0)
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.mqtt/index.html b/components/light.mqtt/index.html new file mode 100644 index 0000000000..b86378ebe9 --- /dev/null +++ b/components/light.mqtt/index.html @@ -0,0 +1,666 @@ + + + + + + + + + MQTT Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Light +

+
+
+

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 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 the device (message from state_topic).

+

Optimistic mode can be forced, even if the state_topic is available. Try to enable it, if experiencing incorrect light operation.

+
# Example configuration.yml entry
+light:
+  - platform: mqtt
+    command_topic: "office/rgb1/light/switch"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the light.

+

Default value: MQTT Light

+
+
command_topic
+
+

(string)(Required)The MQTT topic to publish commands to change the switch state.

+
+
brightness_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the light’s brightness.

+
+
brightness_scale
+
+

(integer)(Optional)Defines the maximum brightness value (i.e. 100%) of the MQTT device.

+

Default value: 255

+
+
brightness_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive brightness state updates.

+
+
brightness_value_template
+
+

(string)(Optional)Defines a template to extract the brightness value.

+
+
color_temp_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the light’s color temperature state. The color temperature command slider has a range of 157 to 500 mireds (micro reciprocal degrees).

+
+
color_temp_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive color temperature state updates.

+
+
color_temp_value_template
+
+

(string)(Optional)Defines a template to extract the color temperature value.

+
+
effect_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the light’s effect state.

+
+
effect_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive effect state updates.

+
+
effect_value_template
+
+

(string)(Optional)Defines a template to extract the effect value.

+
+
effect_list
+
+

(string list)(Optional)The list of effects the light supports.

+
+
on_command_type
+
+

(string)(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
+
+

(boolean)(Optional)Flag that defines if switch works in optimistic mode.

+

Default value: true if no state topic defined, else false.

+
+
payload_on
+
+

(string)(Optional)The payload that represents enabled state.

+

Default value: true

+
+
payload_off
+
+

(string)(Optional)The payload that represents disabled state.

+

Default value: false

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)If the published message should have the retain flag on or not.

+

Default value: false

+
+
rgb_command_template
+
+

(string)(Optional)Defines a template to compose message which will be sent to rgb_command_topic. Available variables: red, green and blue.

+
+
rgb_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the light’s RGB state.

+
+
rgb_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive RGB state updates. The expected payload is the RGB values separated by commas, for example 255,0,127.

+
+
rgb_value_template
+
+

(string)(Optional)Defines a template to extract the RGB value.

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive state updates.

+
+
state_value_template
+
+

(string)(Optional)Defines a template to extract the state value. The template should match the payload on and off values, so if your light uses power on to turn on, your state_value_template string should return power on when the switch is on. For example if the message is just on, your state_value_template should be power .

+
+
white_value_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the light’s white value.

+
+
white_value_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive white value updates.

+
+
white_value_template
+
+

(string)(Optional)Defines a template to extract the white value.

+
+
xy_command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the light’s XY state.

+
+
xy_state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive XY state updates.

+
+
xy_value_template
+
+

(string)(Optional)Defines a template to extract the XY value.

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+

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

+

+ XY and RGB can not be used at the same time. If both are provided, XY overrides RGB. +

+

Comparison of light MQTT platforms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functionmqttmqtt_jsonmqtt_template
Brightness
Color temperature
Effects
Flashing
RGB Color
Transitions
XY Color
White Value
+

Examples

+

In this section you will find some real life examples of how to use this sensor.

+

Brightness and RGB support

+

To enable a light with brightness and RGB support in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+light:
+  - platform: mqtt
+    name: "Office Light RGB"
+    state_topic: "office/rgb1/light/status"
+    command_topic: "office/rgb1/light/switch"
+    brightness_state_topic: "office/rgb1/brightness/status"
+    brightness_command_topic: "office/rgb1/brightness/set"
+    rgb_state_topic: "office/rgb1/rgb/status"
+    rgb_command_topic: "office/rgb1/rgb/set"
+    state_value_template: "{{ value_json.state }}"
+    brightness_value_template: "{{ value_json.brightness }}"
+    rgb_value_template: "{{ value_json.rgb | join(',') }}"
+    qos: 0
+    payload_on: "ON"
+    payload_off: "OFF"
+    optimistic: false
+
+
+

Brightness and no RGB support

+

To enable a light with brightness (no RGB version) in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+light:
+  - platform: mqtt
+    name: "Office light"
+    state_topic: "office/light/status"
+    command_topic: "office/light/switch"
+    brightness_state_topic: 'office/light/brightness'
+    brightness_command_topic: 'office/light/brightness/set'
+    qos: 0
+    payload_on: "ON"
+    payload_off: "OFF"
+    optimistic: false
+
+
+

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:

+
# 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/light/brightness'
+    brightness_command_topic: 'office/light/brightness/set'
+    on_command_type: 'brightness'
+
+
+

Implementations

+
    +
  • A basic example using a nodeMCU board (ESP8266) to control its built-in LED (on/off).
  • +
  • Another example to control a RGB LED (on/off, brightness, and colors).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.mqtt_json/index.html b/components/light.mqtt_json/index.html new file mode 100644 index 0000000000..6c2ea47589 --- /dev/null +++ b/components/light.mqtt_json/index.html @@ -0,0 +1,598 @@ + + + + + + + + + MQTT JSON Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT JSON Light +

+
+
+

The mqtt_json light platform lets you control a MQTT-enabled light that can receive JSON messages.

+

This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing and white values. The messages sent to/from the lights look similar to this, omitting fields when they aren’t needed:

+
{
+  "brightness": 255,
+  "color_temp": 155,
+  "color": {
+    "r": 255,
+    "g": 255,
+    "b": 255,
+    "x": 0.123,
+    "y": 0.123
+  },
+  "effect": "colorloop",
+  "state": "ON",
+  "transition": 2,
+  "white_value": 150
+}
+
+
+

In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off.

+

When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from state_topic).

+

Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly.

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_json
+    command_topic: "home/rgb1/set"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the light.

+

Default value: MQTT JSON Light

+
+
command_topic
+
+

(string)(Required)The MQTT topic to publish commands to change the light’s state.

+
+
brightness
+
+

(boolean)(Optional)Flag that defines if the light supports brightness.

+

Default value: false

+
+
brightness_scale
+
+

(integer)(Optional)Defines the maximum brightness value (i.e. 100%) of the MQTT device.

+

Default value: 255

+
+
color_temp
+
+

(boolean)(Optional)Flag that defines if the light supports color temperature.

+

Default value: false

+
+
effect
+
+

(boolean)(Optional)Flag that defines if the light supports effects.

+

Default value: false

+
+
effect_list
+
+

(string list)(Optional)The list of effects the light supports.

+
+
flash_time_long
+
+

(integer)(Optional)The duration, in seconds, of a “long” flash.

+

Default value: 10

+
+
flash_time_short
+
+

(integer)(Optional)The duration, in seconds, of a “short” flash.

+

Default value: 2

+
+
optimistic
+
+

(boolean)(Optional)Flag that defines if the light works in optimistic mode.

+

Default value: true if no state topic defined, else false.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)If the published message should have the retain flag on or not.

+

Default value: false

+
+
rgb
+
+

(boolean)(Optional)Flag that defines if the light supports RGB colors.

+

Default value: false

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive state updates.

+
+
white_value
+
+

(boolean)(Optional)Flag that defines if the light supports white values.

+

Default value: false

+
+
xy
+
+

(boolean)(Optional)Flag that defines if the light supports XY colors.

+

Default value: false

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+

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

+

+ XY and RGB can not be used at the same time. If both are provided, XY overrides RGB. +

+

Comparison of light MQTT platforms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functionmqttmqtt_jsonmqtt_template
Brightness
Color temperature
Effects
Flashing
RGB Color
Transitions
XY Color
White Value
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Brightness and RGB support

+

To enable a light with brightness and RGB support in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_json
+    name: mqtt_json_light_1
+    state_topic: "home/rgb1"
+    command_topic: "home/rgb1/set"
+    brightness: true
+    rgb: true
+
+
+

Brightness and no RGB support

+

To enable a light with brightness (but no color support) in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_json
+    name: mqtt_json_light_1
+    state_topic: "home/rgb1"
+    command_topic: "home/rgb1/set"
+    brightness: true
+
+
+

Brightness Scaled

+

To enable a light using a brightness scale other than 8bit the brightness_scale option may be added to denote the “fully on” value:

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_json
+    name: mqtt_json_light_1
+    state_topic: "home/light"
+    command_topic: "home/light/set"
+    brightness: true
+    brightness_scale: 4095
+
+
+

Home Assistant will then convert its 8bit value in the message to and from the device:

+
{
+  "brightness": 4095,
+  "state": "ON",
+}
+
+
+

Implementations

+
    +
  • +

    A full example of custom lighting using this platform and an ESP8266 microcontroller can be found here. It supports on/off, brightness, transitions, RGB colors, and flashing.

    +
  • +
  • +

    There is also another implementation forked from the above repo, it supports all the same features but is made for addressable LED strips using FastLED on a NodeMCU V3 it can be found here.

    +
  • +
  • +

    MQTT JSON Light is another implementation for ESP8266 including MQTT discovery.

    +
  • +
  • +

    esphomelib is a library for ESP32-based boards that has many of Home Assistant’s MQTT features (like discovery) pre-implemented and provides high-level abstractions for components such as lights or sensors.

    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.mqtt_template/index.html b/components/light.mqtt_template/index.html new file mode 100644 index 0000000000..04ae2ca687 --- /dev/null +++ b/components/light.mqtt_template/index.html @@ -0,0 +1,555 @@ + + + + + + + + + MQTT Template Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Template Light +

+
+
+

The mqtt_template light platform lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. +It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating.

+

This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing, effects and white values.

+

In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off.

+

When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from state_topic).

+

Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly.

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_template
+    command_topic: "home/rgb1/set"
+    command_on_template: "on"
+    command_off_template: "off"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the light.

+

Default value: MQTT Template Light

+
+
effect_list
+
+

(string list)(Optional)List of possible effects.

+
+
command_topic
+
+

(string)(Required)The MQTT topic to publish commands to change the light’s state.

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive state updates.

+
+
command_on_template
+
+

(string)(Required)The template for on state changes. Available variables: state, brightness, red, green, blue, flash, transition and effect.

+
+
command_off_template
+
+

(string)(Required)The template for off state changes. Available variables: state and transition.

+
+
state_template
+
+

(string)(Optional)Template to extract state from the state payload value.

+
+
brightness_template
+
+

(string)(Optional)Template to extract brightness from the state payload value.

+
+
red_template
+
+

(string)(Optional)Template to extract red color from the state payload value.

+
+
green_template
+
+

(string)(Optional)Template to extract green color from the state payload value.

+
+
blue_template
+
+

(string)(Optional)Template to extract blue color from the state payload value.

+
+
color_temp_template
+
+

(string)(Optional)Template to extract color temperature from the state payload value.

+
+
effect_template
+
+

(string)(Optional)Template to extract effect from the state payload value.

+
+
white_value_template
+
+

(string)(Optional)Template to extract white value from the state payload value.

+
+
optimistic
+
+

(string)(Optional)Flag that defines if the light works in optimistic mode.

+

Default value: true if no state topic or state template is defined, else false.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+

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

+

Comparison of light MQTT platforms

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functionmqttmqtt_jsonmqtt_template
Brightness
Color temperature
Effects
Flashing
RGB Color
Transitions
XY Color
White Value
+

Examples

+

In this section you find some real life examples of how to use this light.

+

Simple string payload

+

For a simple string payload with the format state,brightness,r-g-b (e.g. on,255,255-255-255), add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_template
+    command_topic: "home/rgb1/set"
+    state_topic: "home/rgb1/status"
+    command_on_template: "on,{{ brightness|d }},{{ red|d }}-{{ green|d }}-{{ blue|d }}"
+    command_off_template: "off"
+    state_template: "{{ value.split(',')[0] }}"  # must return `on` or `off`
+    brightness_template: "{{ value.split(',')[1] }}"
+    red_template: "{{ value.split(',')[2].split('-')[0] }}"
+    green_template: "{{ value.split(',')[2].split('-')[1] }}"
+    blue_template: "{{ value.split(',')[2].split('-')[2] }}"
+
+
+

JSON payload

+

For a JSON payload with the format {"state": "on", "brightness": 255, "color": [255, 255, 255], "effect": "rainbow"}, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: mqtt_template
+    effect_list:
+      - rainbow
+      - colorloop
+    command_topic: "home/rgb1/set"
+    state_topic: "home/rgb1/status"
+    command_on_template: >
+      {"state": "on"
+      {%- if brightness is defined -%}
+      , "brightness": {{ brightness }}
+      {%- endif -%}
+      {%- if red is defined and green is defined and blue is defined -%}
+      , "color": [{{ red }}, {{ green }}, {{ blue }}]
+      {%- endif -%}
+      {%- if effect is defined -%}
+      , "effect": "{{ effect }}"
+      {%- endif -%}
+      }
+    command_off_template: '{"state": "off"}'
+    state_template: '{{ value_json.state }}'
+    brightness_template: '{{ value_json.brightness }}'
+    red_template: '{{ value_json.color[0] }}'
+    green_template: '{{ value_json.color[1] }}'
+    blue_template: '{{ value_json.color[2] }}'
+    effect_template: '{{ value_json.effect }}'
+
+
+

No brightness or color support

+

If you don’t want brightness, color or effect support, just omit the corresponding configuration sections.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.mysensors/index.html b/components/light.mysensors/index.html new file mode 100644 index 0000000000..60786fd06d --- /dev/null +++ b/components/light.mysensors/index.html @@ -0,0 +1,617 @@ + + + + + + + + + MySensors Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Light +

+
+
+

Integrates MySensors lights into Home Assistant. See the main component for configuration instructions.

+

The following actuator types are supported:

+
MySensors version 1.4
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_DIMMERV_DIMMER*, V_LIGHT*
+
MySensors version 1.5 and higher
+ + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_DIMMER[V_DIMMER* or V_PERCENTAGE*], [V_LIGHT* or V_STATUS*]
S_RGB_LIGHTV_RGB*, [V_LIGHT* or V_STATUS*], [V_DIMMER or V_PERCENTAGE]
S_RGBW_LIGHTV_RGBW*, [V_LIGHT* or V_STATUS*], [V_DIMMER or V_PERCENTAGE]
+

V_TYPES with a star (*) denote V_TYPES that should be sent at sketch startup. For an S_DIMMER, send both a V_DIMMER/V_PERCENTAGE and a V_LIGHT/V_STATUS message. For an S_RGB_LIGHT, send both a V_RGB and a V_LIGHT/V_STATUS message with a V_DIMMER/V_PERCENTAGE message being optional. Same principal applies for S_RGBW_LIGHT and V_RGBW.

+

Sketch should acknowledge a command sent from controller with the same type. If command invokes a change to off state (including a V_PERCENTAGE, V_RGB, or V_RGBW message of zero), only a V_STATUS of zero message should be sent. See sketches below for examples.

+

For more information, visit the serial api of MySensors.

+

MySensors 1.x example sketch

+
/*
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/dimmer
+ */
+
+#include <MySensor.h>
+#include <SPI.h>
+
+#define SN "DimmableRGBLED"
+#define SV "1.0"
+#define CHILD_ID 1
+#define LED_PIN 5
+
+MySensor gw;
+
+char rgb[7] = "ffffff"; // RGB value.
+int currentLevel = 0;  // Current dimmer level.
+MyMessage dimmerMsg(CHILD_ID, V_PERCENTAGE);
+MyMessage lightMsg(CHILD_ID, V_STATUS);
+MyMessage rgbMsg(CHILD_ID, V_RGB);
+
+void setup()
+{
+  gw.begin(incomingMessage);
+  gw.sendSketchInfo(SN, SV);
+  gw.present(CHILD_ID, S_RGB_LIGHT);
+  // Send initial values.
+  gw.send(lightMsg.set(currentLevel > 0 ? 1 : 0));
+  gw.send(dimmerMsg.set(currentLevel));
+  gw.send(rgbMsg.set(rgb));
+}
+
+void loop()
+{
+  gw.process();
+}
+
+void incomingMessage(const MyMessage &message) {
+  if (message.type == V_RGB) {
+    // Retrieve the RGB value from the incoming message.
+    // RGB LED not implemented, just a dummy print.
+    String hexstring = message.getString();
+    hexstring.toCharArray(rgb, sizeof(rgb));
+    Serial.print("Changing color to ");
+    Serial.println(rgb);
+    gw.send(rgbMsg.set(rgb));
+  }
+
+  if (message.type == V_STATUS || message.type == V_PERCENTAGE) {
+    // Retrieve the light status or dimmer level from the incoming message.
+    int requestedLevel = atoi(message.data);
+
+    // Adjust incoming level if this is a V_LIGHT update [0 == off, 1 == on].
+    requestedLevel *= (message.type == V_STATUS ? 100 : 1);
+
+    // Clip incoming level to valid range of 0 to 100
+    requestedLevel = requestedLevel > 100 ? 100 : requestedLevel;
+    requestedLevel = requestedLevel < 0   ? 0   : requestedLevel;
+
+    // Change level value of LED pin.
+    analogWrite(LED_PIN, (int)(requestedLevel / 100. * 255));
+    currentLevel = requestedLevel;
+
+    // Update the gateway with the current V_STATUS and V_PERCENTAGE.
+    gw.send(lightMsg.set(currentLevel > 0 ? 1 : 0));
+    gw.send(dimmerMsg.set(currentLevel));
+    }
+}
+
+
+

MySensors 2.x example sketch

+
/*
+ * Example Dimmable Light
+ * Code adapted from http://github.com/mysensors/MySensors/tree/master/examples/DimmableLight
+ *
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ */
+
+// Enable debug prints
+#define MY_DEBUG
+
+// Enable and select radio type attached
+#define MY_RADIO_NRF24
+//#define MY_RADIO_RFM69
+
+#include <MySensors.h>
+
+#define CHILD_ID_LIGHT 1
+
+#define LIGHT_OFF 0
+#define LIGHT_ON 1
+
+#define SN "Dimmable Light"
+#define SV "1.0"
+
+int16_t last_state = LIGHT_ON;
+int16_t last_dim = 100;
+
+MyMessage light_msg( CHILD_ID_LIGHT, V_STATUS );
+MyMessage dimmer_msg( CHILD_ID_LIGHT, V_PERCENTAGE );
+
+void setup()
+{
+  update_light();
+  Serial.println( "Node ready to receive messages..." );
+}
+
+void loop()
+{
+  //In MySensors2.x, first message must come from within loop()
+  static bool first_message_sent = false;
+  if ( first_message_sent == false ) {
+    Serial.println( "Sending initial state..." );
+    send_dimmer_message();
+    send_status_message();
+    first_message_sent = true;
+  }
+}
+
+void presentation()
+{
+  // Send the sketch version information to the gateway
+  sendSketchInfo( SN, SV );
+  present( CHILD_ID_LIGHT, S_DIMMER );
+}
+
+void receive(const MyMessage &message)
+{
+  //When receiving a V_STATUS command, switch the light between OFF
+  //and the last received dimmer value  
+  if ( message.type == V_STATUS ) {
+    Serial.println( "V_STATUS command received..." );
+
+    int lstate = message.getInt();
+    if (( lstate < 0 ) || ( lstate > 1 )) {
+      Serial.println( "V_STATUS data invalid (should be 0/1)" );
+      return;
+    }
+    last_state = lstate;
+
+    //If last dimmer state is zero, set dimmer to 100
+    if (( last_state == LIGHT_ON ) && ( last_dim == 0 )) {
+      last_dim=100;
+    }
+
+    //Update constroller status
+    send_status_message();
+
+  } else if ( message.type == V_PERCENTAGE ) {
+    Serial.println( "V_PERCENTAGE command received..." );
+    int dim_value = constrain( message.getInt(), 0, 100 );
+    if ( dim_value == 0 ) {
+      last_state = LIGHT_OFF;
+
+      //Update constroller with dimmer value & status
+      send_dimmer_message();
+      send_status_message();      
+    } else {
+      last_state = LIGHT_ON;
+      last_dim = dim_value;
+
+      //Update constroller with dimmer value
+      send_dimmer_message();
+    }
+
+  } else {
+    Serial.println( "Invalid command received..." );
+    return;
+  }
+
+  //Here you set the actual light state/level
+  update_light();
+}
+
+void update_light()
+{
+  //For this example, just print the light status to console.
+  if ( last_state == LIGHT_OFF ) {
+    Serial.println( "Light state: OFF" );
+  } else {
+    Serial.print( "Light state: ON, Level: " );
+    Serial.println( last_dim );
+  }
+}
+
+void send_dimmer_message()
+{
+  send( dimmer_msg.set( last_dim ) );
+}
+
+void send_status_message()
+{
+  if ( last_state == LIGHT_OFF ) {
+    send( light_msg.set( (int16_t)0) );
+  } else {
+    send( light_msg.set( (int16_t)1) );
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.mystrom/index.html b/components/light.mystrom/index.html new file mode 100644 index 0000000000..7a77b72fba --- /dev/null +++ b/components/light.mystrom/index.html @@ -0,0 +1,397 @@ + + + + + + + + + myStrom WiFi Bulb - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ myStrom WiFi Bulb +

+
+
+

The mystrom light platform allows you to control your myStrom WiFi Bulbs.

+

To use your myStrom WiFi Bulb in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: mystrom
+    host: IP_ADDRESS
+    mac: MAC_ADDRESS
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of your myStrom WiFi Bulb, e.g., 192.168.1.32.

+
+
mac
+
+

(string)(Required)The MAC address of your myStrom WiFi Bulb, e.g., 5AAC8CA542F3.

+
+
name
+
+

(string)(Optional)The name to use when displaying this bulb.

+

Default value: myStrom Bulb

+
+
+
+

Check if you are able to access the light located at IP_ADRRESS. The details about your light is provided as a JSON response.

+
$ curl http://[IP_ADDRESS]/api/v1/device/[MAC_ADDRESS]
+
+{
+  "MAC_ADDRESS": {
+    "type": "rgblamp",
+    "battery": false,
+    "reachable": true,
+    "meshroot": false,
+    "on": true,
+    "color": "0;0;100",
+    "mode": "hsv",
+    "ramp": 409,
+    "power": 5.1,
+    "fw_version": "2.25"
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.osramlightify/index.html b/components/light.osramlightify/index.html new file mode 100644 index 0000000000..0b3e773356 --- /dev/null +++ b/components/light.osramlightify/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Osram Lightify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Osram Lightify +

+
+
+

The osramlightify platform allows you to integrate your Osram Lightify into Home Assistant.

+
# Example configuration.yaml entry
+light:
+  - platform: osramlightify
+    host: 192.168.0.50
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address of the Osram Lightify bridge, eg. 192.168.1.50.
  • +
  • allow_lightify_groups (Optional): (true/false) Edit this to stop homeassistant from importing the lightify groups.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.piglow/index.html b/components/light.piglow/index.html new file mode 100644 index 0000000000..3d1c96f153 --- /dev/null +++ b/components/light.piglow/index.html @@ -0,0 +1,347 @@ + + + + + + + + + Piglow - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Piglow +

+
+
+

The piglow platform lets you control the Piglow lights on your Raspberry Pi from within Home Assistant.

+

To add piglow to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: piglow
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.qwikswitch/index.html b/components/light.qwikswitch/index.html new file mode 100644 index 0000000000..6e2f4f6ffb --- /dev/null +++ b/components/light.qwikswitch/index.html @@ -0,0 +1,353 @@ + + + + + + + + + QwikSwitch Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ QwikSwitch Light +

+
+
+

The qwikswitch light platform allows you to control your QwikSwitch relays and dimmers as lights from within Home Assistant.

+

The platform is configured through the QwikSwitch component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.rflink/index.html b/components/light.rflink/index.html new file mode 100644 index 0000000000..d6bcdaa5f1 --- /dev/null +++ b/components/light.rflink/index.html @@ -0,0 +1,435 @@ + + + + + + + + + RFLink Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFLink Light +

+
+
+

The rflink component support devices that use RFLink gateway firmware, for example the Nodo 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.

+

After configuring the RFLink hub lights will be automatically discovered and added.

+

RFLink switch/light ID’s are composed of: protocol, id, switch. For example: newkaku_0000c6c2_1.

+

Once the ID of a light is known it can be used to configure the light in HA, for example to add it to a different group, hide it or configure a nice name.

+

Configuring a device as light with a nice name:

+
# Example configuration.yaml entry
+light:
+  - platform: rflink
+    device_defaults:
+      fire_event: true
+      signal_repetitions: 2
+    devices:
+      newkaku_0000c6c2_1:
+        name: Living room
+
+
+

Configuration variables:

+
    +
  • automatic_add (Optional): Automatically add new/unconfigured devices to HA 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.
  • +
  • type (Optional): Override automatically detected type of the light device, can be: switchable, dimmable, hybrid or toggle. See ‘Light Types’ below. (default: Switchable)
  • +
  • aliases (Optional): Alternative Rflink ID’s this device is known by.
  • +
  • fire_event (Optional): Fire a 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.
  • +
+

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

+
# Example configuration.yaml entry
+light:
+  - platform: rflink
+    devices:
+      newkaku_0000c6c2_1:
+        name: Living room
+        aliases:
+          - newkaku_000000001_2
+          - kaku_000001_a
+      Ansluta_ce30_0:
+        name: Kitchen Under Counter Lights
+      Maclean_0d82_01:
+        name: Bedroom Lamp
+
+
+

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.

+

Light types

+

Light devices can come in different forms. Some only switch on and off, other support dimming. Dimmable devices might not always respond nicely to repeated on command as they turn into a pulsating state until on is pressed again (for example KlikAanKlikUit). The RFLink component support three types of lights to make things work in every situation:

+
    +
  • Hybrid: This type sends a dim followed by an an on command; and off commands. This will make dimmable devices turn on at the requested dim level and on/off devices on. One caveat is this type is not compatible with signal repetition as multiple on signals will cause dimmers to go into disco mode.
  • +
  • Switchable: Device type that sends only on and off commands. It work for both on/off and dimmable type switches. However dimmables might have issues with signal repetition (see above).
  • +
  • Dimmable: Sends only dim and off commands. This does not work on on/off type devices as they don’t understand the dim command. For dimmers this does not cause issues with signal repetitions.
  • +
  • Toggle: Device type that sends only on commands to turn on or off the device. Some switches like for example Livolo light switches use the same ‘on’ command to switch on and switch off the lights. If the light is on and ‘on’ gets sent, the light will turn off and if the light is off and ‘on’ gets sent, the light will turn on. If the device has an unknown state, it will assume it is off by default.
  • +
+

By default new lights are assigned the switchable type. Protocol supporting dimming are assigned the hybrid type. Currently only newkaku protocol is detected as dimmable. Please refer to Device Support to get your dimmers supported.

+

Hiding/ignoring lights

+

Lights are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods:

+ +

Device support

+

See device support

+
+
+ +
+
+ + + + + + + diff --git a/components/light.rfxtrx/index.html b/components/light.rfxtrx/index.html new file mode 100644 index 0000000000..53e20ad8c3 --- /dev/null +++ b/components/light.rfxtrx/index.html @@ -0,0 +1,398 @@ + + + + + + + + + RFXtrx Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFXtrx Light +

+
+
+

The rfxtrx platform support lights that communicate in the frequency range of 433.92 MHz.

+

First you have to set up your rfxtrx hub.

+

The easiest way to find your lights is to add this to your configuration.yaml:

+
light:
+  - platform: rfxtrx
+    automatic_add: True
+
+
+

Launch your Home Assistant and go the website. Push your remote and your device should be added:

+

+ +

+

Here the name is 0b11000102ef9f210010f70 and you can verify that it works from the frontend. Then you should update your configuration to:

+
light:
+  platform: rfxtrx
+  devices:
+    0b11000102ef9f210010f70:
+      name: device_name
+
+
+

Example configuration:

+
# Example configuration.yaml entry
+light:
+  platform: rfxtrx
+  devices:
+    0b11000f10e9e5660b010f70:
+      name: Light1
+    0b1100100f29e5660c010f70:
+      name: Light_TV
+
+
+

Configuration variables:

+
    +
  • devices (Required): A list of devices with their name to use in the frontend.
  • +
  • automatic_add (Optional): To enable the automatic addition of new lights.
  • +
  • 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. Can be used for automations.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.rpi_gpio_pwm/index.html b/components/light.rpi_gpio_pwm/index.html new file mode 100644 index 0000000000..c3b9e17cde --- /dev/null +++ b/components/light.rpi_gpio_pwm/index.html @@ -0,0 +1,392 @@ + + + + + + + + + PWM LED - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PWM LED +

+
+
+

The rpi_gpio_pwm platform allows to control multiple lights using pulse-width modulation, for example led strips. It supports one-color, RGB and RGBW LEDs driven by GPIOs of a Raspberry Pi or a PCA9685 controller.

+

For controlling the GPIOs, the platform connects to the pigpio-daemon, which must be running. On Raspbian Jessie 2016-05-10 or newer the pigpio library is already included. On other operating systems it needs to be installed first (see installation instructions).

+

To enable this platform, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+light:
+  - platform: rpi_gpio_pwm
+    leds:
+      - name: Lightstrip Cupboard
+        driver: gpio
+        pins: [17]
+        type: simple
+
+
+

Configuration variables:

+
    +
  • leds array (Required): Can contain multiple LEDs. +
      +
    • name (Required): The name of the LED.
    • +
    • driver (Required): The driver which controls the LED. Choose either gpio or pca9685.
    • +
    • pins (Required): The pins connected to the LED as a list.. The order of pins is determined by the specified type.
    • +
    • type (Required): The type of LED. Choose either rgb, rgbw or simple.
    • +
    • freq (Optional): The PWM frequency. (Default: 200)
    • +
    • address (Optional): The address of the PCA9685 driver. (Default: 0x40)
    • +
    +
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

RGB LED connected to PCA9685 controller

+

This example uses a PCA9685 controller to control a RGB LED.

+
# Example configuration.yaml entry
+light:
+  - platform: rpi_gpio_pwm
+    leds:
+      - name: TV Backlight
+        driver: pca9685
+        pins: [0, 1, 2] # [R, G, B]
+        type: rgb
+
+
+

RGBW LED connected to PCA9685 controller

+

This example uses a PCA9685 controller to interact with a RGBW LED.

+
# Example configuration.yaml entry
+light:
+  - platform: rpi_gpio_pwm
+    leds:
+      - name: Lightstrip Desk
+        driver: pca9685
+        pins: [3, 4, 5, 6] # [R, G, B, W]
+        type: rgbw
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.scsgate/index.html b/components/light.scsgate/index.html new file mode 100644 index 0000000000..8650e0c326 --- /dev/null +++ b/components/light.scsgate/index.html @@ -0,0 +1,369 @@ + + + + + + + + + SCSGate Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SCSGate Light +

+
+
+

The SCSGate device can control lights of the BTicino MyHome system.

+

To enable SCSGate lights in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: scsgate
+    devices:
+      living_room:
+        name: Living Room
+        scs_id: XXXXX
+
+
+

Configuration variables:

+
    +
  • devices (Required): A list of devices with their name to use in the frontend.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.sensehat/index.html b/components/light.sensehat/index.html new file mode 100644 index 0000000000..0e955b2e43 --- /dev/null +++ b/components/light.sensehat/index.html @@ -0,0 +1,354 @@ + + + + + + + + + Sense HAT Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sense HAT Light +

+
+
+

The sensehat light platform lets you control the Sense HAT board’s 8x8 RGB LED matrix on your Raspberry Pi from within Home Assistant.

+

To add sensehat to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  platform: sensehat
+  name: SenseHAT
+
+
+

For setting up the Sense HAT sensors, please see the Sense HAT sensor component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.skybell/index.html b/components/light.skybell/index.html new file mode 100644 index 0000000000..62bd2516ec --- /dev/null +++ b/components/light.skybell/index.html @@ -0,0 +1,367 @@ + + + + + + + + + Skybell Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybell Light +

+
+
+

To get your Skybell.com LED light working within Home Assistant, please follow the instructions for the general Skybell component.

+

Once you have enabled the Skybell component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: skybell
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.tellstick/index.html b/components/light.tellstick/index.html new file mode 100644 index 0000000000..d8cb40e752 --- /dev/null +++ b/components/light.tellstick/index.html @@ -0,0 +1,361 @@ + + + + + + + + + TellStick Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TellStick Light +

+
+
+

This tellstick light platform allows you to control your TellStick dimmers.

+

To use your TellStick device, you first have to set up your Tellstick hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  platform: tellstick
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.template/index.html b/components/light.template/index.html new file mode 100644 index 0000000000..b39cdb33c8 --- /dev/null +++ b/components/light.template/index.html @@ -0,0 +1,557 @@ + + + + + + + + + Template Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Template 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:

+
# Example configuration.yaml entry
+light:
+  - platform: template
+    lights:
+      theater_lights:
+        friendly_name: "Theater Lights"
+        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:
+          service: script.theater_lights_off
+        set_level:
+          service: script.theater_lights_level
+          data_template:
+            brightness: "{{ brightness }}"
+
+
+
+

Configuration Variables

+
+
lights
+
+

(map)(Required)List of your lights.

+
+
+
+
friendly_name
+
+

(string)(Optional)Name to use in the frontend.

+
+
entity_id
+
+

(string | list)(Optional)A list of entity IDs so the light only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities.

+
+
value_template
+
+

(template)(Optional)Defines a template to get the state of the light.

+

Default value: optimistic

+
+
level_template
+
+

(template)(Optional)Defines a template to get the brightness of the light.

+

Default value: optimistic

+
+
turn_on
+
+

(action)(Required)Defines an action to run when the light is turned on.

+
+
turn_off
+
+

(action)(Required)Defines an action to run when the light is turned off.

+
+
set_level
+
+

(action)(Optional)Defines an action to run when the light is given a brightness command.

+
+
+
+
+
+

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 +{{ states.switch.source.state == 'on' }} +with this equivalent that returns true/false and never gives an unknown +result: +{{ is_state('switch.source', 'on') }}

+

Examples

+

In this section you will find some real life examples of how to use this light.

+

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 from 0.0 to 1.0.

+
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 %}
+        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
+        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 %}
+
+
+

Change The Icon

+

This example shows how to change the icon based on the light state.

+
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
+            is_volume_muted: false
+        turn_off:
+          service: media_player.volume_mute
+          data:
+            entity_id: media_player.receiver
+            is_volume_muted: true
+
+
+

Change The Entity Picture

+

This example shows how to change the entity picture based on the light state.

+
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
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.tikteck/index.html b/components/light.tikteck/index.html new file mode 100644 index 0000000000..40620c20d4 --- /dev/null +++ b/components/light.tikteck/index.html @@ -0,0 +1,360 @@ + + + + + + + + + Tikteck - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tikteck +

+
+
+

Support for the Bluetooth smart bulb from Tikteck. To enable these lights, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: tikteck
+    devices:
+      00:21:4D:00:00:01:
+        name: Bulb 1
+        password: 76409387
+      00:21:4D:00:00:01:
+        name: Bulb 2
+        password: 36478643
+
+
+

Configuration variables:

+
    +
  • devices: A list of devices with their bluetooth address, a custom name to use in the frontend and the bulb-specific password. The password can be obtained from an Android device using an app like aLogcat or the adb logcat command for phones in developer mode. Look for a line like:
  • +
+
E LedoBleSDK: login =skName=======[Smart Light]=======skPw==[password]
+
+
+

The password is the text between the square brackets following skPw.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.tplink/index.html b/components/light.tplink/index.html new file mode 100644 index 0000000000..325e145987 --- /dev/null +++ b/components/light.tplink/index.html @@ -0,0 +1,380 @@ + + + + + + + + + TP-Link Bulb - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TP-Link Bulb +

+
+
+

The tplink light platform allows you to control the state of your TP-Link smart bulb.

+

Supported units:

+
    +
  • LB100
  • +
  • LB110
  • +
  • LB120
  • +
  • LB130
  • +
+

To use your TP-Link light in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: tplink
+    host: IP_ADDRESS
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name to use when displaying this bulb.

+

Default value: TP-Link Light

+
+
host
+
+

(string)(Required)The IP address of your TP-Link bulb, eg. 192.168.1.32.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/light.tradfri/index.html b/components/light.tradfri/index.html new file mode 100644 index 0000000000..66125e4b35 --- /dev/null +++ b/components/light.tradfri/index.html @@ -0,0 +1,349 @@ + + + + + + + + + IKEA Trådfri lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/components/light.velbus/index.html b/components/light.velbus/index.html new file mode 100644 index 0000000000..c042dc97be --- /dev/null +++ b/components/light.velbus/index.html @@ -0,0 +1,383 @@ + + + + + + + + + Velbus lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velbus lights +

+
+
+

The velbus light allows you to control Velbus lights.

+

To use your Velbus lights in your installation, add the following to your configuration.yaml file:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/light.vera/index.html b/components/light.vera/index.html new file mode 100644 index 0000000000..de9e2b6229 --- /dev/null +++ b/components/light.vera/index.html @@ -0,0 +1,372 @@ + + + + + + + + + Vera Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Light +

+
+
+

The vera platform allows you to control your Vera lights from within Home Assistant.

+

They will be automatically discovered if the vera component is loaded.

+

For more configuration information see the Vera component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.wemo/index.html b/components/light.wemo/index.html new file mode 100644 index 0000000000..0134f33857 --- /dev/null +++ b/components/light.wemo/index.html @@ -0,0 +1,354 @@ + + + + + + + + + Belkin WeMo Lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Belkin WeMo Lights +

+
+
+

The wemo platform allows you to control your Belkin WeMo LED lights and Smart Dimmer Switch from within Home Assistant.

+

They will be automatically discovered if the discovery component is enabled.

+

For more configuration information see the WeMo component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.wink/index.html b/components/light.wink/index.html new file mode 100644 index 0000000000..4a5c6c9621 --- /dev/null +++ b/components/light.wink/index.html @@ -0,0 +1,388 @@ + + + + + + + + + Wink Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Light +

+
+
+

The wink light platform allows you to use your Wink lights.

+

The requirement is that you have setup Wink.

+

Supported light devices

+
    +
  • Z-wave switches with dimming
  • +
  • Hue
  • +
  • Lightify
  • +
  • GE link
  • +
  • Wink light groups (User created groups of lights)
  • +
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/light.x10/index.html b/components/light.x10/index.html new file mode 100644 index 0000000000..4340ab7954 --- /dev/null +++ b/components/light.x10/index.html @@ -0,0 +1,358 @@ + + + + + + + + + X10 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ X10 +

+
+
+

The x10 light platform allows you to control your X10 based lights with Home Assistant.

+

Requires Heyu x10 and a CM11A interface; the CM17A “FireCracker” interface is not supported.

+

To enable those lights, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: x10
+    devices:
+      - id: a2
+        name: Guest Room
+      - id: a3
+        name: Bedroom Lamp
+
+
+

Configuration variables:

+
    +
  • id (Required): Device identifier. Composed of house code and unit id.
  • +
  • name (Required): A friendly name for the device.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.xiaomi_aqara/index.html b/components/light.xiaomi_aqara/index.html new file mode 100644 index 0000000000..8d71ec1759 --- /dev/null +++ b/components/light.xiaomi_aqara/index.html @@ -0,0 +1,362 @@ + + + + + + + + + Xiaomi Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Light +

+
+
+

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.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.xiaomi_miio/index.html b/components/light.xiaomi_miio/index.html new file mode 100644 index 0000000000..c53b98816f --- /dev/null +++ b/components/light.xiaomi_miio/index.html @@ -0,0 +1,443 @@ + + + + + + + + + Xiaomi Philips Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Philips Light +

+
+
+

The xiaomi_miio platform allows you to control the state of your Xiaomi Philips LED Ball Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2.

+

Currently, the supported features are on, off, set_cct (colortemp) , set_bright (brightness).

+

Please follow the instructions on 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:

+
# Example configuration.yaml entries
+light:
+  - platform: xiaomi_miio
+    name: Xiaomi Philips Smart LED Ball
+    host: 192.168.130.67
+    token: YOUR_TOKEN
+    model: philips.light.bulb
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of your light.
  • +
  • token (Required): The API token of your light.
  • +
  • name (Optional): The name of your light.
  • +
  • model (Optional): The model of your light. Valid values are philips.light.bulb, philips.light.sread1, philips.light.ceiling and philips.light.zyceiling. This setting can be used to bypass the device model detection and is recommended if your device isn’t always available.
  • +
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of your device.

+
+
token
+
+

(string)(Required)The API token of your device.

+
+
name
+
+

(string)(Optional)The name of your device.

+

Default value: Xiaomi Philips Light

+
+
model
+
+

(string)(Optional)The model of your device.

+
+
+
+

Platform Services

+

Service light.xiaomi_miio_set_scene

+

Set one of the 4 available fixed scenes.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific light. Else targets all.
scenenoScene, between 1 and 4.
+

Service light.xiaomi_miio_set_delayed_turn_off

+

Delayed turn off.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific light. Else targets all.
time_periodnoTime period for the delayed turn off.
+
+
+ +
+
+ + + + + + + diff --git a/components/light.yeelight/index.html b/components/light.yeelight/index.html new file mode 100644 index 0000000000..1d45ff6fd2 --- /dev/null +++ b/components/light.yeelight/index.html @@ -0,0 +1,384 @@ + + + + + + + + + Yeelight Wifi Bulb - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yeelight Wifi Bulb +

+
+
+

The yeelight light platform allows you to control your Yeelight Wifi bulbs with Home Assistant.

+

Example configuration

+

To enable those lights, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: yeelight
+    devices:
+      192.168.1.25:
+        name: Living Room
+        transition: 1000
+        use_music_mode: True #(defaults to False)
+        save_on_change: False #(defaults to True)
+      192.168.1.13:
+        name: Front Door
+
+
+

Configuration variables:

+
    +
  • ip (Required): IP(s) of your wifi bulbs
  • +
  • name (Optional): A friendly name for the device.
  • +
  • transition (Optional, default 350): Smooth transitions over time (in ms).
  • +
  • use_music_mode (Optional, default False): Enable music mode.
  • +
  • save_on_change (Optional, default True): Saves the bulb state when changed from Home Assistant.
  • +
+

Music mode

+

Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the component and it tries to keep the connection open, which may not be wanted in all use-cases.

+

Initial setup

+

+Before trying to control your light through Home Assistant, you have to setup your bulb using Yeelight app. ( Android, IOS ). +In the bulb property, you have to enable “LAN Mode” (previously called “Developer mode”). LAN mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. +Determine your bulb IP (using router, software, ping …). +Information on how to enable “LAN Mode” can be found here. +

+

+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
  • +
  • YLDD01YL: Lightstrip (Color)
  • +
  • YLDD02YL: Lightstrip (Color)
  • +
  • MJCTD01YL: Xiaomi Mijia Bedside Lamp - WIFI Version!
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.yeelightsunflower/index.html b/components/light.yeelightsunflower/index.html new file mode 100644 index 0000000000..bb92631955 --- /dev/null +++ b/components/light.yeelightsunflower/index.html @@ -0,0 +1,361 @@ + + + + + + + + + Yeelight Sunflower Bulb - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yeelight Sunflower Bulb +

+
+
+

The yeelightsunflower light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant.

+

+The “Yeelight Sunflower” bulbs are not the same as the “Yeelight WiFi” bulbs. +

+

To enable your lights, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+light:
+  - platform: yeelightsunflower
+    host: 192.168.1.59
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address of your Yeelight Sunflower hub.
  • +
+

+When the hub is loaded, your lights will appear as devices with their Zigbee IDs as part of the entity name. +

+

+The Yeelight Sunflower hub supports SSDP discovery, but that has not been built into the platform. Let the developer know if that would be helpful to you. +

+
+
+ +
+
+ + + + + + + diff --git a/components/light.zengge/index.html b/components/light.zengge/index.html new file mode 100644 index 0000000000..bdc0751265 --- /dev/null +++ b/components/light.zengge/index.html @@ -0,0 +1,361 @@ + + + + + + + + + Zengge - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zengge +

+
+
+

The zengge platform allows you to integrate your Zengge Bluetooth bulbs into Home Assistant.

+
# Example configuration.yaml entry
+light:
+  - platform: zengge
+    devices:
+      C4:BE:84:51:54:8B:
+        name: Living Room
+
+
+

Configuration variables:

+
    +
  • devices array (Required): List of your devices/bulbs. +
      +
    • MAC address (Required): The MAC address of the bulb. +
        +
      • name (Optional): Friendly name for the frontend.
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.zha/index.html b/components/light.zha/index.html new file mode 100644 index 0000000000..1acbcbe83a --- /dev/null +++ b/components/light.zha/index.html @@ -0,0 +1,355 @@ + + + + + + + + + ZigBee Home Automation Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Home Automation Light +

+
+
+

To get your ZigBee lights working with Home Assistant, follow the instructions for the general ZigBee Home Automation component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light.zigbee/index.html b/components/light.zigbee/index.html new file mode 100644 index 0000000000..ab9c34a21c --- /dev/null +++ b/components/light.zigbee/index.html @@ -0,0 +1,372 @@ + + + + + + + + + ZigBee Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Light +

+
+
+

A ZigBee light in this context is a light connected to one of the digital output pins on a ZigBee module. It can simply be switched on and off. By default, a light is considered on when the ZigBee device’s digital output is held high and considered off when it is held low. This behavior can be inverted by setting the on_state configuration variable to low.

+

To configure a digital output pin as light, add the following to your configuration.yaml file:

+
light:
+  - name: Desk Lamp
+    platform: zigbee
+    pin: 0
+
+
+

Configuration variables:

+
    +
  • name (Required): The name you would like to give the light in Home Assistant.
  • +
  • pin (Required): The number identifying which pin to use.
  • +
  • address (Optional): The long 64 bit address of the remote ZigBee device whose digital output pin you would like to switch. Do not include this variable if you want to switch the local ZigBee device’s pins.
  • +
  • on_state (Optional): Either high (default) or low, depicting whether the digital output pin is pulled high or low when the light is turned on.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/light.zwave/index.html b/components/light.zwave/index.html new file mode 100644 index 0000000000..b5ce6febb0 --- /dev/null +++ b/components/light.zwave/index.html @@ -0,0 +1,370 @@ + + + + + + + + + Z-Wave Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Light +

+
+
+

To get your Z-Wave lights working with Home Assistant, follow the instructions for the general Z-Wave component.

+
+
+ +
+
+ + + + + + + diff --git a/components/light/index.html b/components/light/index.html new file mode 100644 index 0000000000..4200c6de28 --- /dev/null +++ b/components/light/index.html @@ -0,0 +1,472 @@ + + + + + + + + + Lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lights +

+
+
+

This component allows you to track and control various light bulbs. Read the platform documentation for your particular light hardware to learn how to enable it.

+

+The light component supports multiple entries in configuration.yaml by appending a sequential number to the section: light 2:, light 3: etc. +

+

Service light.turn_on

+

Turns one light on or multiple lights on using groups.

+

Most lights do not support all attributes. You can check the platform documentation of your particular light for hints but in general you will have to try things out and see what works.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of strings that point at entity_ids of lights. Else targets all.
transitionyesNumber that represents the time (in seconds) the light should take to transition to the new state.
profileyesString with the name of one of the built-in profiles (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_coloryesA 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_coloryesA 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
white_valueyesInteger between 0 and 255 for how bright a dedicated white LED should be.
color_tempyesAn integer in mireds representing the color temperature you want the light to be.
kelvinyesAlternatively, you can specify the color temperature in Kelvin.
color_nameyesA human readable string of a color name, such as blue or goldenrod. All CSS3 color names are supported.
brightnessyesInteger between 0 and 255 for how bright the color should be.
brightness_pctyesAlternatively, you can specify brightness in percent (a number between 0 and 100).
flashyesTell light to flash, can be either value short or long.
effectyesApplies an effect such as colorloop or random.
+

+In order to apply attributes to an entity you will need to add data: to the configuration. See example below +

+
# Example configuration.yaml entry
+automation:
+- id: one
+  alias: Turn on light when motion is detected
+  trigger:
+    - platform: state
+      entity_id: binary_sensor.motion_1
+      to: 'on'
+  action:
+    - service: light.turn_on
+      data:
+        entity_id: light.living_room
+        brightness: 255
+        kelvin: 2700
+
+
+

Service light.turn_off

+

Turns one or multiple lights off.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of lights. Else targets all.
transitionyesInteger that represents the time the light should take to transition to the new state in seconds.
+

Service light.toggle

+

Toggles the state of one or multiple lights using groups.

+

Note: If light.toggle is used for a group of lights, it will toggle the individual state of each light.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of strings that point at entity_ids of lights. Else targets all.
transitionyesInteger that represents the time the light should take to transition to the new state in seconds.
+
+
+ +
+
+ + + + + + + diff --git a/components/linode/index.html b/components/linode/index.html new file mode 100644 index 0000000000..272bb16b5e --- /dev/null +++ b/components/linode/index.html @@ -0,0 +1,475 @@ + + + + + + + + + Linode - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Linode +

+
+
+

The linode component allows you to access the information about your Linode systems from Home Assistant.

+

Obtain your oAuth2 Access Token from Linode account.

+
    +
  • http://cloud.linode.com
  • +
  • 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:

+
# Example configuration.yaml entry
+linode:
+  access_token: YOUR_ACCESS_TOKEN
+
+
+
+

Configuration Variables

+
+
access_token
+
+

(string)(Required)The Linode access token.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/lirc/index.html b/components/lirc/index.html new file mode 100644 index 0000000000..1f621407f7 --- /dev/null +++ b/components/lirc/index.html @@ -0,0 +1,274 @@ + + + + + + + + + LIRC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LIRC +

+
+
+

LIRC integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other automation.

+

Sending IR commands is not supported in this component (yet), but can be accomplished using the shell_command component in conjunction with the irsend command.

+

Installation

+

To allow Home Assistant to talk to your IR receiver, you need to first make sure you have the correct dependencies installed:

+
$ sudo apt-get install lirc liblircclient-dev
+
+
+

+If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations here. Take notice, the instructions in this blog are valid for Raspian Jesse where lirc 0.9.0 was included in the debian package. In Raspian Stretch lirc 0.9.4 is included in the Debian package. +The configuration is slightly different : + - The hardware.conf file is not supported, obsoleted by a new lirc_options.conf file and systemd unit definitions. + - The former single lirc service is replaced with the three systemd services lircd.service, lircmd.service and irexec.service. There is no counterpart to the 0.9.0 lirc service which covered all of these. Using a separate transmitter device requires yet another service. + - 0.9.4 defaults to using systemd for controlling the services. This is not just start/stop functionality, systemd is used to implement new features and to address shortcomings in 0.9.0. However, traditional systemV scripts are also installed and could be used although this is less tested and not really documented.
+
+For more information have a look at /usr/share/doc/lirc/README.Debian.gz where the update process is explained when you have updated from jessie to stretch. +

+

Configuring LIRC

+

Now teach LIRC about your particular remote control by preparing a lircd configuration file (/etc/lirc/lircd.conf). Search the LIRC remote database for your model. If you can’t find it, then you can always use the irrecord program to learn your remote. This will create a valid configuration file. Add as many remotes as you want by pasting them into the file. If irrecord doesn’t work (e.g. for some air conditioner remotes), then the mode2 program is capable of reading the codes in raw mode, followed by irrecord -a to extract hex codes.

+

Next, you have to make a ~/.lircrc file that maps keypresses to system actions. The configuration is a bit tedious but it must be done. Use the prog = home-assistant for all keys you want to be recognized by Home Assistant. The values you set for button must be the same as in the lircd.conf file and the values you put for config entry will be the sensor value in Home Assistant when you press the button. An example may look like this:

+
begin
+    remote = SONY
+    button = KEY_1
+    prog   = home-assistant
+    config = KEY_1
+end
+begin
+    remote = SONY
+    button = KEY_2
+    prog   = home-assistant
+    config = KEY_2
+end
+begin
+    remote = SONY
+    button = KEY_3
+    prog   = home-assistant
+    config = KEY_3
+end
+
+
+

Test your LIRC installation before proceeding by running:

+
$ ircat home-assistant
+
+
+

and pressing some buttons on the remote. You should see them register on the screen if LIRC is properly configured.

+

Configuration Home Assistant

+
# Example configuration.yaml entry
+lirc:
+
+
+

Events

+

The LIRC component fires ir_command_received events on the bus. You can capture the events and respond to them in automation scripts like this:

+
# Example configuration.yaml automation entry
+automation:
+  - alias: Off on Remote
+    trigger:
+      platform: event
+      event_type: ir_command_received
+      event_data:
+        button_name: KEY_0
+    action:
+      service: homeassistant.turn_off
+      entity_id: group.a_lights
+
+
+

The button_name data values (e.g. KEY_0) are set by you in the .lircrc file.

+
+
+ +
+
+ + + + + + + diff --git a/components/litejet/index.html b/components/litejet/index.html new file mode 100644 index 0000000000..2691295d97 --- /dev/null +++ b/components/litejet/index.html @@ -0,0 +1,501 @@ + + + + + + + + + LiteJet - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LiteJet +

+
+
+

LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet’s third party protocol.

+

Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights.

+

After connecting the LiteJet’s RS232-2 port to your computer, add the following to your configuration.yaml:

+
litejet:
+  port: /dev/serial/by-id/THE-PATH-OF-YOUR-SERIAL-PORT
+
+
+

Your LiteJet MCP should be configured for 19.2 K baud, 8 data bits, 1 stop bit, no parity, and to transmit a ‘CR’ after each response. These settings can be configured using the LiteJet programming software.

+

You can also configure the Home Assistant to ignore lights, scenes, and switches via their name. This is highly recommended since LiteJet has a fixed number of each of these and with most systems many will be unused.

+

Configuration variables:

+
    +
  • port (Required): The path to the serial port connected to the LiteJet.
  • +
  • exclude_names (Optional): A list of light or switch names that should be ignored.
  • +
  • include_switches (Optional): Cause entities to be created for all the LiteJet switches. Default is false. This can be useful when debugging your lighting as you can press/release switches remotely.
  • +
+
litejet:
+  exclude_names:
+  - 'Button #'
+  - 'Scene #'
+  - 'Timed Scene #'
+  - 'Timed Scene#'
+  - 'LV Rel #'
+  - 'Fan #'
+
+
+

Trigger

+

LiteJet switches can be used as triggers too to allow those buttons to behave differently based on hold time. For example, automation can distinguish quick tap versus long hold.

+
    +
  • platform (Required): Must be ‘litejet’.
  • +
  • number (Required): The switch number to be monitored.
  • +
  • held_more_than (Optional): The minimum time the switch must be held before the trigger can activate.
  • +
  • held_less_than (Optional): The maximum time the switch can be held for the trigger to activate.
  • +
+

The trigger will activate at the earliest moment both held_more_than and held_less_than are known to be satisfied. If neither are specified, the trigger activates the moment the switch is pressed. If only held_more_than is specified, the trigger will activate the moment the switch has been held down at least that time. If held_less_than specified, the trigger can only activate when the switch is released.

+
automation:
+- trigger:
+    platform: litejet
+    number: 55
+    held_more_than:
+      milliseconds: 1000
+    held_less_than:
+      milliseconds: 2000
+  ...
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/lock.abode/index.html b/components/lock.abode/index.html new file mode 100644 index 0000000000..7a2f90d571 --- /dev/null +++ b/components/lock.abode/index.html @@ -0,0 +1,228 @@ + + + + + + + + + Abode Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Lock +

+
+
+

The abode security control panel platform allows you to control your Abode alarms.

+

This component will automatically add Door Locks configured in your Abode account.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/lock.august/index.html b/components/lock.august/index.html new file mode 100644 index 0000000000..997ea2df9d --- /dev/null +++ b/components/lock.august/index.html @@ -0,0 +1,212 @@ + + + + + + + + + August Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ August Lock +

+
+
+

The august lock platform allows you to control your August lock from within Home Assistant.

+

To add august lock to your installation, follow instructions in August component.

+
+
+ +
+
+ + + + + + + diff --git a/components/lock.isy994/index.html b/components/lock.isy994/index.html new file mode 100644 index 0000000000..8532e82492 --- /dev/null +++ b/components/lock.isy994/index.html @@ -0,0 +1,221 @@ + + + + + + + + + ISY994 Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Lock +

+
+
+

The isy994 platform allows you to get data from your ISY994 lock from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/lock.lockitron/index.html b/components/lock.lockitron/index.html new file mode 100644 index 0000000000..ef5ce806f9 --- /dev/null +++ b/components/lock.lockitron/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Lockitron Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lockitron Lock +

+
+
+

The lockitron platform allows you to control your Lockitron lock from within Home Assistant. +In order to get the correct access_token and id, log on to their developer page, create a new app, and get the access_token they give you. +Then, call the retrieve all locks function on the page and get the id of your lock (make sure you get your lock’s id and not the virtual lock they create for you).

+
lock:
+  - platform: lockitron
+    access_token: asdf
+    id: fdsa
+
+
+

Configuration variables:

+
    +
  • access_token (Required): The usernThe security token provided by Lockitron to lock and unlock your lock.
  • +
  • id (Required): The lock id given by Lockitron (should be a GUID).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/lock.mqtt/index.html b/components/lock.mqtt/index.html new file mode 100644 index 0000000000..5fc8085f00 --- /dev/null +++ b/components/lock.mqtt/index.html @@ -0,0 +1,338 @@ + + + + + + + + + MQTT Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Lock +

+
+
+

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

+

Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect lock operation.

+

To enable MQTT locks in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+lock:
+  - platform: mqtt
+    command_topic: "home/frontdoor/set"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the lock.

+

Default value: MQTT Lock

+
+
command_topic
+
+

(string)(Required)The MQTT topic to publish commands to change the lock state.

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive state updates.

+
+
payload_lock
+
+

(string)(Optional)The payload that represents enabled/locked state.

+

Default value: LOCK

+
+
payload_unlock
+
+

(string)(Optional)The payload that represents disabled/unlocked state.

+

Default value: UNLOCK

+
+
optimistic
+
+

(string)(Optional)Flag that defines if lock works in optimistic mode.

+

Default value: true if no state_topic defined, else false.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)If the published message should have the retain flag on or not.

+

Default value: false

+
+
value_template
+
+

(string)(Optional)Defines a template to extract a value from the payload.

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+

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

+

Examples

+

In this section you will find some real life examples of how to use this lock.

+

Full configuration

+

The example below shows a full configuration for a MQTT lock.

+
# Example configuration.yml entry
+lock:
+  - platform: mqtt
+    name: Frontdoor
+    state_topic: "home-assistant/frontdoor/"
+    command_topic: "home-assistant/frontdoor/set"
+    payload_lock: "LOCK"
+    payload_unlock: "UNLOCK"
+    optimistic: false
+    qos: 1
+    retain: true
+    value_template: '{{ value.x }}'
+
+
+

Keep an eye on retaining messages to keep the state as you don’t want to unlock your door by accident when you restart something.

+

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 lock manually:

+
$  mosquitto_pub -h 127.0.0.1 -t home-assistant/frontdoor/set -m "LOCK"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/lock.nello/index.html b/components/lock.nello/index.html new file mode 100644 index 0000000000..4750ce40b9 --- /dev/null +++ b/components/lock.nello/index.html @@ -0,0 +1,247 @@ + + + + + + + + + Nello Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nello Lock +

+
+
+

The nello platform allows you to control Nello 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. +

+

Configuration

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

Events

+

Event nello_bell_ring

+

Every time someone rings the bell, a nello_bell_ring event will be fired.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
addressPostal address of the lock.
dateDate when the event occurred.
descriptionHuman readable string describing the event.
location_idNello ID of the location where the bell has been rung.
short_idShorter Nello ID.
+
+
+ +
+
+ + + + + + + diff --git a/components/lock.nuki/index.html b/components/lock.nuki/index.html new file mode 100644 index 0000000000..5738fb6f8f --- /dev/null +++ b/components/lock.nuki/index.html @@ -0,0 +1,265 @@ + + + + + + + + + Nuki Smart Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nuki Smart Lock +

+
+
+

The nuki platform allows you to control Nuki Smart Locks via either a software bridge or a physical bridge.

+

To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the Android app. Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one. +Then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+lock:
+  - platform: nuki
+    host: 192.168.1.120
+    token: fe2345ef
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP or hostname of the Nuki bridge.
  • +
  • port (Optional): The port on which the Nuki bridge is listening on. Defaults to 8080.
  • +
  • token (Required): The token that was defined when setting up the bridge.
  • +
+

Full configuration

+

Here’s a full configuration example for a Nuki bridge:

+
# Example configuration.yaml entry
+lock:
+  - platform: nuki
+    host: 192.168.1.120
+    port: 8080
+    token: fe2345ef
+
+
+

Services

+

Service nuki_unlatch

+

This will unlatch the door, ie. open it (provided this works with your type of door).

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids Nuki Locks.
+

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 for more details about this feature.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids Nuki Locks.
unlatchyesBoolean - Whether to unlatch the door when first opening it.
+
+
+ +
+
+ + + + + + + diff --git a/components/lock.sesame/index.html b/components/lock.sesame/index.html new file mode 100644 index 0000000000..e99d983bbf --- /dev/null +++ b/components/lock.sesame/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Sesame Smart Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sesame Smart Lock +

+
+
+

The sesame platform allows you to control your Sesame smart locks made by CANDY HOUSE, Inc.

+

Your Sesame needs to be paired with a mobile device running the app in virtual station mode, or a standalone Wi-Fi Access Point.

+

Once you have remote access enabled using one of the above AND the Integration - cloud option enabled on the Sesame app for that lock settings, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+lock:
+  - platform: sesame
+    email: abc@i-lovecandyhouse.co
+    password: super-strong-password
+
+
+

Configuration variables:

+
    +
  • email (Required): The email address for your Sesame account.
  • +
  • password (Required): The password for your Sesame account.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/lock.tesla/index.html b/components/lock.tesla/index.html new file mode 100644 index 0000000000..ea12a8fe70 --- /dev/null +++ b/components/lock.tesla/index.html @@ -0,0 +1,222 @@ + + + + + + + + + Tesla Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla Lock +

+
+
+

The Tesla platform allows you to control your Tesla 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 documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/lock.vera/index.html b/components/lock.vera/index.html new file mode 100644 index 0000000000..f87f09d3d6 --- /dev/null +++ b/components/lock.vera/index.html @@ -0,0 +1,228 @@ + + + + + + + + + Vera Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Lock +

+
+
+

The vera platform allows you to control your Vera locks from within Home Assistant.

+

They will be automatically discovered if the vera component is loaded.

+

For more configuration information see the Vera component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/lock.verisure/index.html b/components/lock.verisure/index.html new file mode 100644 index 0000000000..5ba4304b53 --- /dev/null +++ b/components/lock.verisure/index.html @@ -0,0 +1,221 @@ + + + + + + + + + Verisure Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure Lock +

+
+
+

The Verisure lock platform allows you to control your Verisure locks.

+

The requirement is that you have setup your Verisure hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/lock.wink/index.html b/components/lock.wink/index.html new file mode 100644 index 0000000000..488384dc2f --- /dev/null +++ b/components/lock.wink/index.html @@ -0,0 +1,437 @@ + + + + + + + + + Wink Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Lock +

+
+
+

The Wink lock platform allows you to control your Wink locks.

+

The requirement is that you have setup Wink.

+

Supported lock devices

+
    +
  • Kwikset
  • +
  • Schlage
  • +
  • August (No Wink hub required) (August Connect required)
  • +
  • Generic Z-wave
  • +
+

+The following services have only been confirmed on Schlage locks. +

+

Service wink_set_lock_alarm_mode

+

You can use the service wink/wink_set_lock_alarm_mode to set the alarm mode of your lock.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
modenoString one of tamper, activity, or forced_entry
entity_idyesString or list of strings that point at entity_ids of locks.
+

Example:

+
script:
+  set_locks_to_tamper:
+    sequence:
+      - service: wink.wink_set_lock_alarm_mode
+        data:
+          mode: "tamper"
+
+
+

Service wink_set_lock_alarm_sensitivity

+

You can use the service wink/wink_set_lock_alarm_sensitivity to set the alarm sensitivity of your lock.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
sensitivitynoString one of low, medium_low, medium, medium_high, high
entity_idyesString or list of strings that point at entity_ids of locks.
+

Example:

+
script:
+  set_locks_to_high_sensitivity:
+    sequence:
+      - service: wink.wink_set_lock_alarm_sensitivity
+        data:
+          sensitivity: "high"
+
+
+

Service wink_set_lock_alarm_state

+

You can use the service wink/wink_set_lock_alarm_state to set the alarm state of your lock.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
enablednoBoolean enabled or disabled, true or false
entity_idyesString or list of strings that point at entity_ids of locks.
+

Example:

+
script:
+  disable_all_locks_alarm:
+    sequence:
+      - service: wink.wink_set_lock_alarm_state
+        data:
+          enabled: false
+
+
+

Service wink_set_lock_beeper_state

+

You can use the service wink/wink_set_lock_beeper_state to set the beeper state of your lock.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
enablednoBoolean enabled or disabled, true or false
entity_idyesString or list of strings that point at entity_ids of locks.
+

Example:

+
script:
+  disable_all_locks_beepers:
+    sequence:
+      - service: wink.wink_set_lock_beeper_state
+        data:
+          enabled: false
+
+
+

Service wink_set_lock_vacation_mode

+

You can use the service wink/wink_set_lock_vacation_mode to set the vacation mode of your lock.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
enablednoBoolean enabled or disabled, true or false
entity_idyesString or list of strings that point at entity_ids of locks.
+

Example:

+
script:
+  enabled_vacation_mode_on_all_locks:
+    sequence:
+      - service: wink.wink_set_lock_vacation_mode
+        data:
+          enabled: false
+
+
+

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 attributeOptionalDescription
entity_idnoString or list of strings that point at entity_ids of locks.
namenothe name of the new key code
codenoThe 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/components/lock.zwave/index.html b/components/lock.zwave/index.html new file mode 100644 index 0000000000..42c7fa1114 --- /dev/null +++ b/components/lock.zwave/index.html @@ -0,0 +1,249 @@ + + + + + + + + + Z-Wave Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Lock +

+
+
+

To get your Z-Wave locks working with Home Assistant, follow the instructions for the general Z-Wave component.

+

Z-Wave locks will expose three services under the lock domain to manage usercodes if the lock supports it:

+ + + + + + + + + + + + + + + + + + + + + +
ServiceDescription
clear_usercodeClears a usercode at code_slot X. Valid code_slots are 1-254, but max is defined by the lock.
get_usercodeGet a usercode from the lock at code_slot. Valid code_slots are 1-254, but max is defined by the lock.
set_usercodeSets usercode to X at code_slot Y. Valid usercodes are at least 4 digits, and max defined by the lock.
+
+
+ +
+
+ + + + + + + diff --git a/components/lock/index.html b/components/lock/index.html new file mode 100644 index 0000000000..bee7dfa09c --- /dev/null +++ b/components/lock/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Locks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Locks +

+
+
+

Keeps track which locks are in your environment, their state and allows you to control them.

+
    +
  • Maintains a state per lock and a combined state all_locks.
  • +
  • Registers services lock/lock and lock/unlock to control locks.
  • +
+

Use the services

+

Go to the Developer Tools, then to Call Service in the frontend, and choose lock/lock or lock/unlock from the list of available services (Available services: on the left). Enter something like the sample below into the Service Data field and hit CALL SERVICE.

+
{"entity_id":"lock.front_door"}
+
+
+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific lock. Else targets all.
+
+
+ +
+
+ + + + + + + diff --git a/components/logbook/index.html b/components/logbook/index.html new file mode 100644 index 0000000000..85640a3a81 --- /dev/null +++ b/components/logbook/index.html @@ -0,0 +1,265 @@ + + + + + + + + + Logbook - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Logbook +

+
+
+

The logbook component provides a different perspective on the history of your house by showing all the changes that happened to your house in reverse chronological order. See the demo for a live example. It depends on the recorder component for storing the data. This means that if the recorder component is set up to use e.g. MySQL or PostgreSQL as data store, the logbook component does not use the default SQLite database to store data.

+

To enable the logbook in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+logbook:
+
+
+

Configuration variables:

+
    +
  • exclude (Optional): Configure which components should not create logbook entries. +
      +
    • entities (Optional): The list of entity ids to be excluded from creating logbook entries.
    • +
    • domains (Optional): The list of domains to be excluded from creating logbook entries.
    • +
    +
  • +
  • include (Optional): Configure which components should create logbook entries. +
      +
    • entities (Optional): The list of entity ids to be included in creating logbook entries.
    • +
    • domains (Optional): The list of domains to be included in creating logbook entries.
    • +
    +
  • +
+

If you want to exclude messages of some entities or domains from the logbook just add the exclude parameter like:

+
# Example of excluding domains and entities from the logbook
+logbook:
+  exclude:
+    entities:
+      - sensor.last_boot
+      - sensor.date
+    domains:
+      - sun
+      - weblink
+
+
+

In case you just want to see messages from some specific entities or domains use the include configuration:

+
# Example to show how to include only the listed domains and entities in the logbook
+logbook:
+  include:
+    domains:
+      - sensor
+      - switch
+      - media_player
+
+
+

You can also use the include list and filter out some entities or domains with an exclude list. Usually this makes sense if you define domains on the include side and filter out some specific entities.

+
# Example of combining include and exclude configurations
+logbook:
+  include:
+    domains:
+      - sensor
+      - switch
+      - media_player
+  exclude:
+    entities:
+      - sensor.last_boot
+      - sensor.date
+
+
+

Exclude Events

+

Entities customized as hidden are excluded from the logbook by default, but sometimes you want to show the entity in the UI and not in the logbook. For instance you use the sensor.dateto show the current date in the UI, but you do not want a logbook entry for that sensor every day. +To exclude these entities just add them to the exclude > entities list in the configuration of the logbook.

+

To exclude all events from a whole domain add it to the exclude > domain list. For instance you use the sun domain only to trigger automations on the `azimuth attribute, then you possible are not interested in the logbook entries for sun rise and sun set.

+

Custom Entries

+

It is possible to add custom entries to the logbook by using the script component to fire an event.

+
# Example configuration.yaml entry
+script:
+  add_logbook_entry:
+    alias: Add Logbook
+    sequence:
+      - service: logbook.log
+        data_template:
+          name: Kitchen
+          message: is being used
+          # Optional
+          entity_id: light.kitchen
+          domain: light
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/logentries/index.html b/components/logentries/index.html new file mode 100644 index 0000000000..777f2653b8 --- /dev/null +++ b/components/logentries/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Logentries - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Logentries +

+
+
+

The logentries component makes it possible to log all state changes to Logentries using Logentries Webhook endpoint.

+

Open the Add a Log page and choose Manual. Enter a name for your log in Log Name, add a group in Select Log Set, set Token TCP - logs are identified by a token. and press Create Log Token. The generated token is required for the Home Assistant configuration.

+

To use the logentries component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+logentries:
+  token: TOKEN
+
+
+
+

Configuration Variables

+
+
token
+
+

(string)(Required)The token for the log to use.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/logger/index.html b/components/logger/index.html new file mode 100644 index 0000000000..b0ecc6291c --- /dev/null +++ b/components/logger/index.html @@ -0,0 +1,220 @@ + + + + + + + + + Logger - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Logger +

+
+
+

The logger component lets you define the level of logging activities in Home Assistant.

+

To enable the logger in your installation, add the following to your configuration.yaml file:

+

To have a full log and log everything only this entry is needed (without any qualifier):

+
logger:
+
+
+

To log all messages and ignore events lower than critical for specified components.

+
# Example configuration.yaml entry
+logger:
+  default: info
+  logs:
+    homeassistant.components.device_tracker: critical
+    homeassistant.components.camera: critical
+
+
+

To ignore all messages lower than critical and log event for specified components.

+
# Example configuration.yaml entry
+logger:
+  default: critical
+  logs:
+    homeassistant.components: info
+    homeassistant.components.rfxtrx: debug
+    homeassistant.components.device_tracker: critical
+    homeassistant.components.camera: critical
+
+
+

Possible log severities are:

+
    +
  • critical
  • +
  • fatal
  • +
  • error
  • +
  • warning
  • +
  • warn
  • +
  • info
  • +
  • debug
  • +
  • notset
  • +
+

Service set_level

+

You can alter log level for one or several components using the service +logger.set_level. It accepts the same format as logs in the configuration.

+

An example call might look like this:

+
service: logger.set_level
+data:
+  homeassistant.components: warning
+  homeassistant.components.media_player.yamaha: debug
+
+
+

The log information are stored in the configuration directory 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:

+
$ 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:

+
$ tail -f /config/home-assistant.log
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/lutron/index.html b/components/lutron/index.html new file mode 100644 index 0000000000..edaab36e5a --- /dev/null +++ b/components/lutron/index.html @@ -0,0 +1,474 @@ + + + + + + + + + Lutron - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron +

+
+
+

Lutron 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 component in Home Assistant is responsible for communicating with the main hub for these systems.

+

Presently, there’s only support for communicating with the RadioRA 2 Main Repeater and only handle light switches and dimmers.

+

When configured, the lutron component will automatically discover the rooms and their associated switches/dimmers as configured by the RadioRA 2 software from Lutron. Each room will be treated as a separate group.

+

To use Lutron RadioRA 2 devices in your installation, add the following to your configuration.yaml file using the IP address of your RadioRA 2 main repeater:

+
# Example configuration.yaml entry
+lutron:
+  host: IP_ADDRESS
+  username: lutron
+  password: integration
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the Main Repeater.
  • +
  • username (Required): The login name of the user. The user lutron always exists, but other users can be added via RadioRA 2 software.
  • +
  • password (Required): The password for the user specified above. integration is the password for the always-present lutron user.
  • +
+

+It is recommended to assign a static IP address to your main repeater. This ensures that it won’t change IP addresses, so you won’t have to change the host if it reboots and comes up with a different IP address. +

+
+
+ +
+
+ + + + + + + diff --git a/components/lutron_caseta/index.html b/components/lutron_caseta/index.html new file mode 100644 index 0000000000..9ea438b0de --- /dev/null +++ b/components/lutron_caseta/index.html @@ -0,0 +1,492 @@ + + + + + + + + + Lutron Caseta - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Caseta +

+
+
+

Lutron 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 product line of dimmers, switches and shades.

+

This component only supports the Caseta 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.

+

The currently supported Caseta devices are:

+
    +
  • Wall and plug-in dimmers as Home Assistant lights
  • +
  • Wall switches as Home Assistant switches
  • +
  • Scenes as Home Assistant scenes
  • +
  • Lutron shades as Home Assistant covers
  • +
+

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, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing this script, which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information.

+

Once you have the three necessary files, place them in your configuration directory and add the following to your configuration.yaml:

+
# Example configuration.yaml entry
+lutron_caseta:
+    host: IP_ADDRESS
+    keyfile: caseta.key
+    certfile: caseta.crt
+    ca_certs: caseta-bridge.crt
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the Lutron Smart Bridge.
  • +
  • keyfile (Required): The private key that Home Assistant will use to authenticate to the bridge.
  • +
  • certfile (Required): The certificate chain that Home Assistant will use to authenticate to the bridge.
  • +
  • ca_certs (Required): The list of certificate authorities (usually only one) that Home Assistant will expect when connecting to the bridge.
  • +
+

+It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won’t change IP address, so you won’t have to change the host if it reboots and comes up with a different IP address. +
+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/components/mailbox.asterisk_mbox/index.html b/components/mailbox.asterisk_mbox/index.html new file mode 100644 index 0000000000..202a36f130 --- /dev/null +++ b/components/mailbox.asterisk_mbox/index.html @@ -0,0 +1,162 @@ + + + + + + + + + Asterisk Voicemail Mailbox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Asterisk Voicemail Mailbox +

+
+
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/mailbox/index.html b/components/mailbox/index.html new file mode 100644 index 0000000000..473aa6acd5 --- /dev/null +++ b/components/mailbox/index.html @@ -0,0 +1,146 @@ + + + + + + + + + Mailbox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mailbox +

+
+
+

Mailboxes provide a 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 mailbox.

+

Each mailbox also provides an entity to indicate the number of messages available on the main page.

+
+
+ +
+
+ + + + + + + diff --git a/components/mailgun/index.html b/components/mailgun/index.html new file mode 100644 index 0000000000..ef634a44cf --- /dev/null +++ b/components/mailgun/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Mailgun - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mailgun +

+
+
+

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://<home-assistant-domain>/api/mailgun?api_password=<password>

+

To send messages, use the Mailgun notify platform.

+

Sample configuration

+
# Example configuration.yaml entry
+mailgun:
+  domain: mg.example.com
+  api_key: token-XXXXXXXXX
+
+
+

Configuration variables:

+
    +
  • domain (Required): This is the domain name to be used when sending out mail. Defaults to the first custom domain you have set up.
  • +
  • api_key (Required): This is the API token that has been generated in your Mailgun account.
  • +
  • sandbox (Optional): Whether to use the sandboxed domain for outgoing mail. The domain item takes precedence over this. Defaults to False.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/map/index.html b/components/map/index.html new file mode 100644 index 0000000000..585bb01d20 --- /dev/null +++ b/components/map/index.html @@ -0,0 +1,220 @@ + + + + + + + + + Map - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Map +

+
+
+

This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the device tracker documentation.

+
# Example configuration.yaml entry
+map:
+
+
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/maxcube/index.html b/components/maxcube/index.html new file mode 100644 index 0000000000..526f0f5ac7 --- /dev/null +++ b/components/maxcube/index.html @@ -0,0 +1,283 @@ + + + + + + + + + eQ-3 MAX! Cube - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ eQ-3 MAX! Cube +

+
+
+

eQ-3 MAX! integration for Home Assistant allows you to connect eQ-3 MAX! components via the eQ-3 MAX! Cube. The components connects to the eQ-3 MAX! Cube via TCP and automatically makes all supported components available in Home Assistant. The name for each device is created by concatenating the MAX! room and device names.

+

Limitations:

+
    +
  • Configuring weekly schedules is not possible.
  • +
  • Implementation is based on the reverse engineered MAX! protocol.
  • +
+

Supported Devices:

+
    +
  • MAX! Radiator Thermostat (tested)
  • +
  • MAX! Radiator Thermostat+
  • +
  • MAX! Window Sensor (tested)
  • +
  • MAX! Wall Thermostat (tested)
  • +
+

A maxcube section must be present in the configuration.yaml file and contain the following options as required:

+
# Example configuration.yaml entry
+maxcube:
+  host: 192.168.0.20
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the eQ-3 MAX! Cube to use.
  • +
  • port (Optional): The UDP port number. Defaults to 62910.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_extractor/index.html b/components/media_extractor/index.html new file mode 100644 index 0000000000..c2afeaa8b2 --- /dev/null +++ b/components/media_extractor/index.html @@ -0,0 +1,386 @@ + + + + + + + + + Media Extractor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Media Extractor +

+
+
+

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:

+
# 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:
  • +
+
# 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:

+
{
+  "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

+

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 attributeOptionalDescription
entity_idyesName(s) of entities to seek media on, e.g., media_player.living_room_chromecast. Defaults to all.
media_content_idnoThe ID of the content to play. Platform dependent.
media_content_typenoThe type of the content to play. Must be one of MUSIC, TVSHOW, VIDEO, EPISODE, CHANNEL or PLAYLIST MUSIC.
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.anthemav/index.html b/components/media_player.anthemav/index.html new file mode 100644 index 0000000000..ec569d0f14 --- /dev/null +++ b/components/media_player.anthemav/index.html @@ -0,0 +1,360 @@ + + + + + + + + + Anthem A/V Receivers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Anthem A/V Receivers +

+
+
+

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.

+

Supported Models

+
    +
  • MRX 520, MRX 720, MRX 1120, and AVM 60
  • +
  • MRX 310, MRX 510, MRX 710
  • +
+

Support is provided through the Python anthemav module. Older, RS-232 serial-based units like the D2v use a different protocol entirely and are not currently supported.

+

To use your Anthem A/V Receiver in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: anthemav
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): The host name or the IP address of the device.
  • +
  • port (Optional): The port number. Defaults to 14999.
  • +
  • name (Optional): The name of the device used in the frontend.
  • +
+

Notes and Limitations

+
    +
  • The tuner is currently unsupported as are the media_player play, pays, prev, and next controls.
  • +
  • Enabling this platform will set and enforce “Standby IP Control On” in your Anthem device. You almost certainly want this. If you disable it on the device, it will just get re-enabled by Home Assistant.
  • +
  • Only Zone 1 is currently supported.
  • +
+

+ This platform will maintain a persistent connection to the network control port which will prevent any other application from communicating with the receiver. This includes the Anthem iOS and Android remote control apps as well as the ARC-2 Anthem Room Calibration software. You will need to disable this platform and restart Home Assistant if you want to use another + application that makes use of the network control port. +

+ The underlying Python module has hooks for halting and resuming the network connection but those functions are currently unsupported by the Home Assistant platform. +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.apple_tv/index.html b/components/media_player.apple_tv/index.html new file mode 100644 index 0000000000..bb0550fc1f --- /dev/null +++ b/components/media_player.apple_tv/index.html @@ -0,0 +1,340 @@ + + + + + + + + + Apple TV Media Player - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Apple TV Media Player +

+
+
+

To setup the apple_tv media player platform, please follow the instructions on the Apple TV Component page.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.aquostv/index.html b/components/media_player.aquostv/index.html new file mode 100644 index 0000000000..8b7e6ad230 --- /dev/null +++ b/components/media_player.aquostv/index.html @@ -0,0 +1,364 @@ + + + + + + + + + Sharp Aquos TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sharp Aquos TV +

+
+
+

The aquostv platform allows you to control a Sharp Aquos TV.

+

When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication.

+

To add a TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: aquostv
+    host: 192.168.0.10
+
+
+

Configuration variables:

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

+When you set power_on_enabled as True, you have to turn on your TV on the first time with the remote. +Then you will be able to turn on with Home-Assistant. +Also, with power_on_enabled as True, the Aquos logo on your TV will stay on when you turn off the TV and your TV could consumes more power. +

+

Currently known supported models:

+
    +
  • LC-40LE830U
  • +
  • LC-46LE830U
  • +
  • LC-52LE830U
  • +
  • LC-60LE830U
  • +
  • LC-52LE925UN
  • +
  • LC-60LE925UN
  • +
  • LC-60LE857U
  • +
  • LC-60EQ10U
  • +
  • LC-60SQ15U
  • +
+

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.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.bluesound/index.html b/components/media_player.bluesound/index.html new file mode 100644 index 0000000000..24db93544a --- /dev/null +++ b/components/media_player.bluesound/index.html @@ -0,0 +1,436 @@ + + + + + + + + + Bluesound - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bluesound +

+
+
+

The bluesound platform allows you to control your Bluesound 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:

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

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

Service bluesound_join

+

Group players together under a single master speaker. That will make a new group or join to exists group.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
masternoA single entity_id that will become/hold the master speaker.
entity_idnoString or list of a single entity_id that will group to master speaker.
+

Service bluesound_unjoin

+

Remove one or more speakers from a group of speakers. If no entity_id is provided, all speakers are unjoined.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of entity_ids that will be separated from their master speaker.
+

Service bluesound_set_sleep_timer

+

Sets a timer that will turn off the speaker. For each time you call this it will increase the time by one step. The steps are (in minutes): 15, 30, 45, 60, 90, 0. +If you increase an ongoing timer of for example 13 minutes, it will increase it to 15. If the timer is set to 90, it will remove the time (hence the 0).

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will have their timers set.
+

Service bluesound_clear_sleep_timer

+

Clear the sleep timer on a speaker, if one is set.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will have their timers cleared.
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.braviatv/index.html b/components/media_player.braviatv/index.html new file mode 100644 index 0000000000..7834cdb7a1 --- /dev/null +++ b/components/media_player.braviatv/index.html @@ -0,0 +1,370 @@ + + + + + + + + + Sony Bravia TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sony Bravia TV +

+
+
+

The braviatv platform allows you to control a Sony Bravia TV.

+

Almost all Sony Bravia TV 2013 and newer 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.

+

To add a TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: braviatv
+    host: 192.168.0.10
+
+
+

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 configuration directory with the following information - please update the details to match your setup:

+
{"192.168.0.10": {"pin": "7745", "mac": "ac:1e:0a:e1:0c:01"}}
+
+
+

For TVs older than 2013

+

Users of TVs older than 2013 have another option for controlling their TV via Home Assistant.

+

Using HDMI-CEC

+

If you have a Raspberry Pi connected to your TV:

+
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: '{{ value == "power status: on" }}'
+
+
+

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.

+
command_on: ssh root@[IP] "systemctl restart kodi"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.cast/index.html b/components/media_player.cast/index.html new file mode 100644 index 0000000000..d256a52197 --- /dev/null +++ b/components/media_player.cast/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Google Cast - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Cast +

+
+
+

Google Cast devices like Android TVs and Chromecasts will be automatically discovered if you enable the discovery component. There is an issue where Chromecasts can only be discovered if your device is connected to the same subnet as your Chromecast.

+

The Chromecast platform can also be forced to load by adding the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+media_player:
+  - platform: cast
+
+
+

Configuration variables:

+ +

Example

+

By setting host: you can specify the Chromecast to use.

+
# Example configuration.yaml entry
+media_player:
+  - platform: cast
+    host: 192.168.1.10
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.channels/index.html b/components/media_player.channels/index.html new file mode 100644 index 0000000000..86ed806f63 --- /dev/null +++ b/components/media_player.channels/index.html @@ -0,0 +1,403 @@ + + + + + + + + + Channels - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Channels +

+
+
+

The Channels platform allows you to control Channels from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network.

+

Your favorite channels will appear as sources in the Source List in Home Assistant.

+

To add Channels to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: channels
+    name: Family Room Channels
+    host: 192.168.1.50
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the device running Channels, e.g., 192.168.1.50
  • +
  • port (Optional): The port where Channels is accessible, defaults to 57000.
  • +
  • name (Optional): The name of the Channels instance in Home Assistant, eg. Family Room Channels. Defaults to Channels.
  • +
+

Service channels_seek_forward

+

Seek forward by the number of seconds currently set in settings on the instance of Channels.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString that points at entity_id of Channels app.
+

Service channels_seek_backward

+

Seek backward by the number of seconds currently set in settings on the instance of Channels.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString that points at entity_id of Channels app.
+

Service channels_seek_by

+

Seek forward or backward by a provided number of seconds.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString that points at entity_id of Channels app.
secondsnoNumber of seconds to seek in the timeline by. Negative seconds seeks backwards.
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.clementine/index.html b/components/media_player.clementine/index.html new file mode 100644 index 0000000000..bc1b5b3028 --- /dev/null +++ b/components/media_player.clementine/index.html @@ -0,0 +1,346 @@ + + + + + + + + + Clementine Music Player - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Clementine Music Player +

+
+
+

The clementine platform allows you to control a Clementine Music Player.

+

To add a Clementine Player to your Home Assistant installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: clementine
+    host: 192.168.0.20
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the Clementine Player (eg. 192.168.0.20).
  • +
  • port (Optional): The remote control port (default is: 5500).
  • +
  • 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.

+

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/components/media_player.cmus/index.html b/components/media_player.cmus/index.html new file mode 100644 index 0000000000..81950accac --- /dev/null +++ b/components/media_player.cmus/index.html @@ -0,0 +1,346 @@ + + + + + + + + + cmus - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ cmus +

+
+
+

The cmus platform allows you to control a cmus music player on a remote or local machine from Home Assistant.

+

To add cmus to your installation, add the following to your configuration.yaml file if running locally it will look like:

+
# Example configuration.yaml entry
+media_player:
+  - platform: cmus
+
+
+

if cmus is running on a remote server:

+
# Example configuration.yaml entry
+media_player:
+  - platform: cmus
+    host: IP_ADDRESS
+    password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Optional): Hostname or IP address of the machine running cmus. Note if a remote cmus is configured that instance must be configured to listen to remote connections, which also requires a password to be set.
  • +
  • password (Required if host is set): Password for your cmus player.
  • +
  • port (Optional): Port of the cmus socket, defaults to 3000.
  • +
  • name (Optional): The name you’d like to give the cmus player in Home Assistant
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.denon/index.html b/components/media_player.denon/index.html new file mode 100644 index 0000000000..8cc0b072d7 --- /dev/null +++ b/components/media_player.denon/index.html @@ -0,0 +1,357 @@ + + + + + + + + + Denon Network Receivers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Denon Network Receivers +

+
+
+

The denon platform allows you to control a Denon Network Receivers from Home Assistant. It might be that your device is supported by the Denon AVR platform.

+

Supported devices:

+
    +
  • Denon DRA-N5
  • +
  • Denon RCD-N8 (untested)
  • +
  • Denon RCD-N9 (partial support)
  • +
  • Denon AVR receivers with integrated Network support (partial support)
  • +
+

To add a Denon Network Receiver to your installation, add the following to your configuration.yaml file:

+

Telnet platform

+
# Example configuration.yaml entry
+media_player:
+  - platform: denon
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address of the device. Example: 192.168.1.32
  • +
  • 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.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.denonavr/index.html b/components/media_player.denonavr/index.html new file mode 100644 index 0000000000..2bef5c9b65 --- /dev/null +++ b/components/media_player.denonavr/index.html @@ -0,0 +1,381 @@ + + + + + + + + + Denon AVR Network Receivers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Denon AVR Network Receivers +

+
+
+

The denonavr platform allows you to control a Denon Network Receivers from Home Assistant. It might be that your device is supported by the Denon platform.

+

Supported devices:

+
    +
  • Denon AVR-X1300W
  • +
  • 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:

+
# 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 similar interface. Thus if you own one, give it a try.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.directv/index.html b/components/media_player.directv/index.html new file mode 100644 index 0000000000..b4a8e74583 --- /dev/null +++ b/components/media_player.directv/index.html @@ -0,0 +1,380 @@ + + + + + + + + + DirecTV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DirecTV +

+
+
+

Master DirecTV receivers (ie: those that have tuners) will be automatically discovered if you enable the discovery component 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.

+

To ensure that your DirecTV boxes are always found and configured, they should be added into your configuration.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://<IP Address of Genie Server>: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:

+
{
+  "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:

+
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/components/media_player.dunehd/index.html b/components/media_player.dunehd/index.html new file mode 100644 index 0000000000..264e87b3e6 --- /dev/null +++ b/components/media_player.dunehd/index.html @@ -0,0 +1,343 @@ + + + + + + + + + DuneHD media players - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DuneHD media players +

+
+
+

The dunehd platform allows you to control a Dune HD media player from Home Assistant. Support is based on the official IP protocol published by Dune.

+

Devices with firmware 110127_2105_beta or above are supported. Some functions may depend on the version of the protocol (volume / mute control is only available with version 2 onwards).

+

To add a Dune HD player to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: dunehd
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address or hostname of the device. Example: 192.168.1.32
  • +
  • name (Optional): Name of the device.
  • +
  • sources (Optional): A name-value dictionary of sources that HA component can request to play.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.emby/index.html b/components/media_player.emby/index.html new file mode 100644 index 0000000000..cbf638c593 --- /dev/null +++ b/components/media_player.emby/index.html @@ -0,0 +1,345 @@ + + + + + + + + + Emby - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Emby +

+
+
+

The emby platform allows you to control a Emby multimedia system from Home Assistant.

+

To add Emby to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: emby
+    host: 192.168.11.5
+    api_key: "emby_api_key"
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host name or address of the device that is running Emby. Defaults to localhost.
  • +
  • api_key (Required): The api-key you would like home-assistant to use to authenticate.
  • +
  • ssl (Optional): True if you want to connect with https/wss. Your SSL certificate must be valid. Default is False.
  • +
  • port (Optional): The port number. Defaults to 8096 with SSL set to False and 8920 with SSL set to True.
  • +
  • auto_hide (Optional): True if you want to automatically hide devices that are unavailable from the Home Assistant Interface. Defaults to False.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.firetv/index.html b/components/media_player.firetv/index.html new file mode 100644 index 0000000000..d7e9c4da1e --- /dev/null +++ b/components/media_player.firetv/index.html @@ -0,0 +1,389 @@ + + + + + + + + + FireTV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FireTV +

+
+
+

The firetv platform allows you to control a Amazon Fire TV/stick.

+

The python-firetv Python 2.x module with its helper script that exposes a HTTP server to fetch state and perform actions is used.

+

Steps to configure your Amazon Fire TV stick with Home Assistant:

+
    +
  • Turn on ADB Debugging on your Amazon Fire TV: +
      +
    • From the main (Launcher) screen, select Settings.
    • +
    • Select System > Developer Options.
    • +
    • Select ADB Debugging.
    • +
    +
  • +
  • Find Amazon Fire TV device IP: +
      +
    • From the main (Launcher) screen, select Settings.
    • +
    • Select System > About > Network.
    • +
    +
  • +
  • The following commands must be run in a Python 2.x environment. They will allow the component to function in an Ubuntu 16.04/Hassbian environment. +
      +
    • apt-get install swig libssl-dev python-dev libusb-1.0-0 python-yaml
    • +
    • pip install flask
    • +
    • pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz
    • +
    • pip install firetv[firetv-server]
    • +
    +
  • +
  • firetv-server -d <fire tv device IP>:5555, background the process
  • +
  • Navigate to http://localhost:5556/devices/list +
      +
    • You will get an output similar to below: +
      {
      +"devices": {
      +"default": {
      +  "host": "192.168.1.153:5555", 
      +  "state": "play"
      +}
      +}
      +}
      +
      +
      +
    • +
    +
  • +
  • The "default" above is the device name you will need to use for your configuration.yaml
  • +
  • Configure Home Assistant as follows:
  • +
+

To add FireTV to your installation, Note your device name, and add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: firetv
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host where firetv-server is running. Default is localhost.
  • +
  • port (Optional): The port where firetv-server is running. Default is 5556.
  • +
  • device (Optional): The device ID. Defaults to default.
  • +
  • name (Optional): The friendly name of the device, default is ‘Amazon Fire TV’.
  • +
+

+Note that python-firetv has support for multiple Amazon Fire TV devices. If you have more than one configured, be sure to specify the device ID in device. Run firetv-server -h and/or view the source for complete capabilities. +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.frontier_silicon/index.html b/components/media_player.frontier_silicon/index.html new file mode 100644 index 0000000000..fa4ff52e32 --- /dev/null +++ b/components/media_player.frontier_silicon/index.html @@ -0,0 +1,384 @@ + + + + + + + + + Frontier Silicon Internet Radios - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Frontier Silicon Internet Radios +

+
+
+

This component provides support for Internet Radios based on the Frontier Silicon chipset. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the UNDOK app.

+

Supported Models

+ +

This component was developed and tested with a Hama DIR3110 and a Medion MD 87466.

+

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:

+

MENU button > Main Menu > System setting > Network > NetRemote PIN setup

+

If your device was not automatically discovered or you have changed the PIN you can alternatively add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: frontier_silicon
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): The host name or the IP address of the device. Defaults to 192.168.1.11.
  • +
  • port (Optional): The port number. Defaults to 80.
  • +
  • password (Optional): PIN code of the Internet Radio. Defaults to 1234.
  • +
+

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:

+
# Example configuration.yaml automation
+alias: "Bathroom Motion Detected"
+trigger:
+  platform: state
+  entity_id: binary_sensor.motion_sensor_166d0001171111
+  from: 'off'
+  to: 'on'
+action:
+  service: media_player.turn_on
+  data:
+    entity_id: "media_player.badezimmer"
+
+
+

Screenshots:

+

Overview DAB+ (Badezimmer) and Spotify (Küche):

+

+ +

+

Overview of the info dialog:

+

+ +

+

Development

+

Support is provided through the Python fsapi module. The Python module was developed by using the documentation provided by flammy and +is based on tiwillam’s fsapi project. Special thanks to both developers, this component would have not been possible without their work.

+

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 +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.gpmdp/index.html b/components/media_player.gpmdp/index.html new file mode 100644 index 0000000000..5512390854 --- /dev/null +++ b/components/media_player.gpmdp/index.html @@ -0,0 +1,342 @@ + + + + + + + + + Google Play Music Desktop Player - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Play Music Desktop Player +

+
+
+

The gpmdp media player platform allows you to control a GPMDP instance running on a computer from Home Assistant.

+

You will have first have to check “Enable playback API” in GPMDP’s settings and then add an inbound rule to the firewall to allow access to port 5672 on the computer running GPMDP.

+

Then just add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: gpmdp
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address of the computer running GPMDP.
  • +
  • name (Optional): Name of the player.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.gstreamer/index.html b/components/media_player.gstreamer/index.html new file mode 100644 index 0000000000..9552f87df1 --- /dev/null +++ b/components/media_player.gstreamer/index.html @@ -0,0 +1,386 @@ + + + + + + + + + Gstreamer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Gstreamer +

+
+
+

The gstreamer platform allows you to play audio via a gstreamer pipeline. Practically, this means you can play audio directly on the computer running Home Assistant. It is particularly suited for playing TTS. Advanced users can specify a pipeline to transform the audio stream and/or redirect it elsewhere.

+

To add a gstreamer media player to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: gstreamer
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name the player.
  • +
  • pipeline (Optional): gst pipeline description.
  • +
+

Only the music media type is supported.

+

Setup

+

And then install the following system dependencies:

+

Debian/Ubuntu/Rasbian:

+
sudo apt-get install python3-gst-1.0 \
+    gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \
+    gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \
+    gstreamer1.0-tools
+
+
+

Red Hat/Centos/Fedora:

+
sudo yum install -y python-gstreamer1 gstreamer1-plugins-good \
+    gstreamer1-plugins-ugly
+
+
+

For Fedora replace yum with dnf.

+

If you’re running Home Assistant in a virtual environment, you’ll need to symlink the system Python’s gi module into your virtual environment:

+
ln -s /path/to/your/installation/of/gi /path/to/your/venv/lib/python3.4/site-packages
+
+
+

On a Raspberry Pi, you may need to add the Home Assistant user to the audio group:

+
sudo usermod -a -G audio <ha_user>
+
+
+

Example Usage

+

Using with TTS

+

To play TTS on your local computer (for example, if you have speakers attached to your Raspberry Pi:

+
media_player:
+  - platform: gstreamer
+
+script:
+  tts:
+    sequence:
+      - service: tts.google_say # or amazon_polly, voicerss, etc
+        data:
+          entity_id: media_player.gstreamer
+          message: "example text-to-speech message"
+
+
+

Using with Snapcast

+

To play to a named pipe for consumption by Snapcast:

+
media_player:
+  - platform: gstreamer
+    pipeline: "audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/snapcast_gstreamer"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.itunes/index.html b/components/media_player.itunes/index.html new file mode 100644 index 0000000000..f67c7dfbd4 --- /dev/null +++ b/components/media_player.itunes/index.html @@ -0,0 +1,342 @@ + + + + + + + + + iTunes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ iTunes +

+
+
+

The iTunes platform allows you to control iTunes from Home Assistant. It uses a 3rd party server that you run on your Mac called itunes-api. Play, pause, or skip songs remotely on iTunes running on your Mac.

+

In addition to controlling iTunes, your available AirPlay endpoints will be added as media players as well. You can then individually address them append turn them on, turn them off, or adjust their volume.

+

To add iTunes to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: itunes
+    host: 192.168.1.50
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the itunes-api API, eg. 192.168.1.50
  • +
  • port (Optional): The port where itunes-api is accessible, eg. 8181.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.kodi/index.html b/components/media_player.kodi/index.html new file mode 100644 index 0000000000..dad48e8fea --- /dev/null +++ b/components/media_player.kodi/index.html @@ -0,0 +1,587 @@ + + + + + + + + + Kodi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Kodi +

+
+
+

The kodi platform allows you to control a Kodi multimedia system from Home Assistant.

+

To add Kodi to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: kodi
+    host: 192.168.0.123
+
+
+

Configuration variables:

+
    +
  • host (Required): The host name or address of the device that is running XBMC/Kodi.
  • +
  • port (Optional): The HTTP port number. Defaults to 8080.
  • +
  • tcp_port (Optional): The TCP port number. Defaults to 9090. Used for websocket connections to Kodi.
  • +
  • name (Optional): The name of the device used in the frontend.
  • +
  • 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_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.
  • +
+

Service kodi_add_to_playlist

+

Add music to the default playlist (i.e. playlistid=0).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName(s) of the Kodi entities where to add the media.
media_typeyesMedia type identifier. It must be one of SONG or ALBUM.
media_idnoUnique Id of the media entry to add (songid or albumid). If not defined, media_name and artist_name are needed to search the Kodi music library.
media_namenoOptional media name for filtering media. Can be ‘ALL’ when media_type is ‘ALBUM’ and artist_name is specified, to add all songs from one artist.
artist_namenoOptional artist name for filtering media.
+

Service kodi_call_method

+

Call a Kodi JSONRPC API method with optional parameters. Results of the Kodi API call will be redirected in a Home Assistant event: kodi_call_method_result.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName(s) of the Kodi entities where to run the API method.
methodyesName of the Kodi JSONRPC API method to be called.
any other parameternoOptional parameters for the Kodi API call.
+

Event triggering

+

When calling the kodi_call_method service, if the Kodi JSONRPC API returns data, when received by Home Assistant it will fire a kodi_call_method_result event on the event bus with the following event_data:

+
entity_id: "<Kodi media_player entity_id>"
+result_ok: <boolean>
+input: <input parameters of the service call>
+result: <data received from the Kodi API>
+
+
+

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 component in Home Assistant, which is achieved simply by adding wake_on_lan: to your configuration.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)
  • +
+
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)
  • +
+
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)
  • +
+
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)
  • +
+
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)
  • +
+
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:

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

+

Kodi services samples

+

Simple script to turn on the PVR in some channel as a time function

+
script:
+  play_kodi_pvr:
+    alias: Turn on the silly box
+    sequence:
+      - alias: TV on
+        service: media_player.turn_on
+        data:
+          entity_id: media_player.kodi
+
+      - alias: Play TV channel
+        service: media_player.play_media
+        data_template:
+          entity_id: media_player.kodi
+          media_content_type: "CHANNEL"
+          media_content_id: >
+            {% 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 %}
+
+
+

Trigger a Kodi video library update

+
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

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.lg_netcast/index.html b/components/media_player.lg_netcast/index.html new file mode 100644 index 0000000000..91b405345c --- /dev/null +++ b/components/media_player.lg_netcast/index.html @@ -0,0 +1,348 @@ + + + + + + + + + LG Netcast TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LG Netcast TV +

+
+
+

The lg_netcast platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV’s use the webostv platform.

+

To add a LG TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: lg_netcast
+    host: 192.168.0.20
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the LG Smart TV, eg. 192.168.0.20
  • +
  • access_token (Optional): The access token needed to connect.
  • +
  • name (Optional): The name you would like to give to the LG Smart TV. The default is “LG TV Remote”.
  • +
+

To get the access token for your TV configure the lg_netcast platform in Home Assistant without the access_token. +After starting Home Assistant the TV will display the access token on screen. +Just add the token to your configuration and restart Home Assistant and the media player component for your LG TV will show up.

+

+The access token will not change until you factory reset your TV. +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.liveboxplaytv/index.html b/components/media_player.liveboxplaytv/index.html new file mode 100644 index 0000000000..59ed80a351 --- /dev/null +++ b/components/media_player.liveboxplaytv/index.html @@ -0,0 +1,352 @@ + + + + + + + + + Orange Livebox Play TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Orange Livebox Play TV +

+
+
+

The liveboxplaytv platform allows you to control Orange Livebox Play TV appliances.

+

To add an Orange Livebox Play TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: liveboxplaytv
+    host: 192.168.1.3
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP or hostname of the Orange Livebox Play TV appliance.
  • +
  • name (Optional): The name to use in the frontend. Defaults to Livebox Play TV.
  • +
  • port (Optional): The port on which the Livebox is listening on. Defaults to 8080.
  • +
+

Full configuration

+

A full configuration example for an Orange TV appliance can look like this:

+
# Example configuration.yaml entry
+media_player:
+  - platform: liveboxplaytv
+    host: 192.168.1.3
+    port: 8080
+    name: Orange Livebox Play TV
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.mediaroom/index.html b/components/media_player.mediaroom/index.html new file mode 100644 index 0000000000..ad233afae2 --- /dev/null +++ b/components/media_player.mediaroom/index.html @@ -0,0 +1,386 @@ + + + + + + + + + Mediaroom - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mediaroom +

+
+
+

The mediaroom component allows you to control a Mediaroom Set-Top Box (STB) from Home Assistant.

+

To add a Mediaroom STB to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: mediaroom
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Optional)The hostname or IP address of the device.

+

Default value: Tries to discovery your device.

+
+
name
+
+

(string)(Optional)The name of the device used in the frontend.

+

Default value: Mediaroom STB

+
+
optimistic
+
+

(boolean)(Optional)In case the component cannot determine the status of the box, consider the box always ON.

+

Default value: false

+
+
+
+

Notice that all parameters are optional, and discovery should configure everything for you.

+

Using the Mediaroom component

+

The component has been developed for Portuguese TV operators currently using the Mediaroom platform, but should also work in other deployments in which the STB can be controlled remotely through a socket on port 8082.

+

In most cases (single STB) you just need to setup the platform and discovery will do the rest. In case you have more than one STB you are required to set the host in each one of the entries.

+

If the STB is on the same network segment as Home Assistant, it can determine whether the device is turned on or off. Without this, the component will fail to determine the Set-top box status, and you are required to add the optimistic configuration variable.

+

Examples

+

Example press_button script

+

The play_media function can be used in scripts to change channels.

+
# Example play_media script
+#
+press_button:
+  sequence:
+    service: media_player.play_media
+    data_template:
+      entity_id: media_player.mediaroom_stb
+      media_content_id: ""
+      media_content_type: "channel"
+
+### <a class='title-link' name='example-configuration-with-2-stb' href='#example-configuration-with-2-stb'></a> Example configuration with 2 STB 
+
+```yaml
+# Example configuration.yaml entry for 2 STB
+media_player:
+  - platform: mediaroom
+    host: 192.168.1.64
+    name: Living Room STB
+  - platform: mediaroom
+    host: 192.168.1.65
+    name: Bedroom STB
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.monoprice/index.html b/components/media_player.monoprice/index.html new file mode 100644 index 0000000000..7d0cf6c7fc --- /dev/null +++ b/components/media_player.monoprice/index.html @@ -0,0 +1,403 @@ + + + + + + + + + Monoprice 6-Zone Amplifier - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Monoprice 6-Zone Amplifier +

+
+
+

The monoprice platform allows you to control Monoprice 6-Zone Amplifier using a serial connection.

+

To add a Monoprice device to your installation, add the following to your configuration.yaml file:

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

Service snapshot

+

Take a snapshot of one or more zones’ states. This service, and the following one are useful if you want to play a doorbell or notification sound and resume playback afterward. If no entity_id is provided, all zones are snapshotted.

+

The following attributes are stored in a snapshot:

+
    +
  • Power status (On/Off)
  • +
  • Mute status (On/Off)
  • +
  • Volume level
  • +
  • Source
  • +
+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of zones.
+

Service restore

+

Restore a previously taken snapshot of one or more speakers. If no entity_id is provided, all zones are restored.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of zones.
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.mpchc/index.html b/components/media_player.mpchc/index.html new file mode 100644 index 0000000000..d04f7bb373 --- /dev/null +++ b/components/media_player.mpchc/index.html @@ -0,0 +1,350 @@ + + + + + + + + + MPC-HC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MPC-HC +

+
+
+

The mpchc platform allows you to connect a Media Player Classic Home Cinema to Home Assistant. It will allow you to see the current playing item, and respond to changes in the player’s state.

+

For this component to function, you will need to enable the Web Interface in the MPC-HC options dialog.

+

+ +

+

If the server running Home Assistant is not the same device that is running MPC-HC, you will need to ensure that the allow access from localhost only option is not set.

+

+The MPC-HC web interface is highly insecure, and allows remote clients full player control file-system access without authentication. Never allow access to the Web UI from outside of your trusted network, and if possible use a proxy script to restrict control or redact sensitive information. +

+

To add MPC-HC to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: mpchc
+    host: http://192.168.0.123
+
+
+

Configuration variables:

+
    +
  • host (Required): The host name or address of the device that is running MPC-HC.
  • +
  • port (Optional): The port number. Defaults to 13579.
  • +
  • name (Optional): The name of the device used in the frontend.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.mpd/index.html b/components/media_player.mpd/index.html new file mode 100644 index 0000000000..c4006aa9ac --- /dev/null +++ b/components/media_player.mpd/index.html @@ -0,0 +1,360 @@ + + + + + + + + + Music Player Daemon (MPD) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Music Player Daemon (MPD) +

+
+
+

The mpd platform allows you to control a Music Player Daemon from Home Assistant. Unfortunately you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs.

+

Even though no playlist manipulation is possible, it is possible to use the play_media service to load an existing saved playlist as part of an automation or scene.

+

To add MPD to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: mpd
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address of the Host where Music Player Daemon is running.
  • +
  • port (Optional): Port of the Music Player Daemon. Defaults to 6600.
  • +
  • name (Optional): Name of your Music Player Daemon. Defaults to “MPD”.
  • +
  • password (Optional): Password for your Music Player Daemon.
  • +
+

Example script to load a saved playlist called “DeckMusic” and set the volume:

+
relaxdeck:
+    sequence:
+    - service: media_player.play_media
+      data:
+        entity_id: media_player.main
+        media_content_type: playlist
+        media_content_id: DeckMusic
+
+    - service: media_player.volume_set
+      data:
+        entity_id: media_player.main
+        volume_level: 0.60
+
+
+

This platform works with Music Player Daemon and mopidy with Mopidy-MPD as used by Pi MusicBox.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.nad/index.html b/components/media_player.nad/index.html new file mode 100644 index 0000000000..f560bc211f --- /dev/null +++ b/components/media_player.nad/index.html @@ -0,0 +1,363 @@ + + + + + + + + + NAD - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NAD +

+
+
+

The nad platform allows you to control a NAD receiver through RS232 from Home Assistant.

+

To add an NAD receiver to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: nad
+    serial_port: /dev/ttyUSB0
+
+
+

Configuration variables:

+
    +
  • serial_port (Required): The serial port . Default is /dev/ttyUSB0
  • +
  • name (Optional): Name of the device. Default is NAD Receiver.
  • +
  • min_volume (optional): Minimum volume in dB to use with the slider. Default is -92
  • +
  • max_volume (optional): Maximum volume in dB to use with the slider. Default is -20
  • +
  • sources (Optional): A list of mappings from source to source name. Valid sources are 1 to 10.
  • +
+

The min_volume and max_volume are there to protect you against misclicks on the slider so you will not blow up your speakers when you go from -92dB to +20dB. You can still force it to go higher or lower than the values set with the plus and minus buttons.

+

+On linux the user running home-assistant needs dialout permissions to access the serial port. +This can be added to the user by doing sudo usermod -a -G dialout <username>. +Be aware that the user might need to logout and logon again to activate these permissions. +

+

A full configuration example could look like this:

+
# Example configuration.yaml entry
+media_player:
+  - platform: nad
+    serial_port: /dev/ttyUSB0
+    name: NAD Receiver
+    min_volume: -60
+    max_volume: -20
+    sources:
+      1: 'Kodi'
+      2: 'TV'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.nadtcp/index.html b/components/media_player.nadtcp/index.html new file mode 100644 index 0000000000..06c501bed9 --- /dev/null +++ b/components/media_player.nadtcp/index.html @@ -0,0 +1,345 @@ + + + + + + + + + NAD tcp - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NAD tcp +

+
+
+

The nadtcp platform allows you to control the D7050 and C338 from Home Assistant via WiFi. Note that it has only been tested with the D 7050.

+

To add a NAD amplifier to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+    platform: nadtcp
+    host: 192.168.0.112
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your amplifier.
  • +
  • name (Optional): Name of the device. Default is NAD amplifier.
  • +
  • min_volume (optional): Minimum volume in dB to use with the slider. Default is -60
  • +
  • max_volume (optional): Maximum volume in dB to use with the slider. Default is -10
  • +
  • volume_step (Optional): The amount in dB you want to increase the volume with when pressing volume up/down. Default is 4 dB.
  • +
+

The maximum volume level of the D 7050 amplifier is +10 db, minimum is -90.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.onkyo/index.html b/components/media_player.onkyo/index.html new file mode 100644 index 0000000000..a84474dd8f --- /dev/null +++ b/components/media_player.onkyo/index.html @@ -0,0 +1,374 @@ + + + + + + + + + Onkyo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Onkyo +

+
+
+

The onkyo platform allows you to control a Onkyo and some recent Pioneer 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 or Pioneer receiver to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: onkyo
+    host: 192.168.1.2
+    name: receiver
+    sources:
+      pc: 'HTPC'
+
+
+

Configuration variables:

+
    +
  • host (Optional): IP address of the device. Example:192.168.1.2. If not specified, the platform will load any discovered receivers.
  • +
  • name (Required if host is specified): Name of the device.
  • +
  • sources (Optional): A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified.
  • +
+

List of source names:

+
    +
  • video1
  • +
  • video2
  • +
  • video3
  • +
  • video4
  • +
  • video5
  • +
  • video6
  • +
  • video7
  • +
  • dvd
  • +
  • bd-dvd
  • +
  • tape1
  • +
  • tv-tape
  • +
  • tape2
  • +
  • phono
  • +
  • cd
  • +
  • tv-cd
  • +
  • fm
  • +
  • am
  • +
  • tuner
  • +
  • dlna
  • +
  • internet-radio
  • +
  • usb
  • +
  • network
  • +
  • universal-port
  • +
  • multi-ch
  • +
  • xm
  • +
  • sirius
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.openhome/index.html b/components/media_player.openhome/index.html new file mode 100644 index 0000000000..90fc97d343 --- /dev/null +++ b/components/media_player.openhome/index.html @@ -0,0 +1,335 @@ + + + + + + + + + Linn / Openhome - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Linn / Openhome +

+
+
+

The openhome platform allows you to connect an Openhome Compliant Renderer to Home Assistant such as a Linn Products Ltd HiFi streamer. It will allow you to control media playback, volume, source and see the current playing item. Openhome devices should be discovered by using the the discovery component, their device names are taken from the name of the room configured on the device.

+
# Example configuration.yaml entry
+discovery:
+media_player:
+  - platform: openhome
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.panasonic_viera/index.html b/components/media_player.panasonic_viera/index.html new file mode 100644 index 0000000000..c7e2b2a360 --- /dev/null +++ b/components/media_player.panasonic_viera/index.html @@ -0,0 +1,381 @@ + + + + + + + + + Panasonic Viera TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Panasonic Viera TV +

+
+
+

The panasonic_viera platform allows you to control a Panasonic Viera TV.

+

Currently known supported models:

+
    +
  • TC-P65VT30
  • +
  • TX-32AS520E
  • +
  • TX-49DX650B
  • +
  • TX-50DX700B
  • +
  • TX-55CX700E
  • +
  • TX-65EXW784
  • +
  • TX-L42ET50
  • +
  • TX-P42STW50
  • +
  • TX-P50GT30Y
  • +
  • TX-P50GT60E
  • +
+

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.

+

Some Panasonic Viera TVs allow Home Assistant to turn them on, if you specify the MAC address with mac:.

+

To add a TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: panasonic_viera
+    host: 192.168.0.10
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the Panasonic Viera TV, e.g. 192.168.0.10.
  • +
  • port (Optional): The port number of your Panasonic Viera TV. Defaults to 55000.
  • +
  • mac (Optional): The MAC address of your Panasonic Viera TV, e.g. AA:BB:CC:DD:99:1A.
  • +
  • name (Optional): The name you would like to give to the Panasonic Viera TV.
  • +
+

Example play_media script

+

The play_media function can be used to open web pages and other media types (images, movies) in the TV web browser.

+
# Example play_media script that can be triggered when someone is detected at the door
+#
+script:
+  front_door_camera:
+    alias: "Show who's at the door"
+    sequence:
+      - service: media_player.turn_on
+        data:
+          entity_id: media_player.living_room_tv
+      - service: media_player.play_media
+        data:
+          entity_id: media_player.living_room_tv
+          media_content_type: "url"
+          media_content_id: "http://google.com"
+      - delay:
+        seconds: 5
+      - service: media_player.media_stop
+        data:
+          entity_id: media_player.living_room_tv
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.pandora/index.html b/components/media_player.pandora/index.html new file mode 100644 index 0000000000..eef4204c84 --- /dev/null +++ b/components/media_player.pandora/index.html @@ -0,0 +1,363 @@ + + + + + + + + + Pandora - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pandora +

+
+
+

If you have a Pandora account, you can control it from Home Assistant with this media player.

+

Installation of Pianobar

+

This media player uses the Pianobar command-line Pandora client, 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)

+

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 before doing this. Install the following basic dependencies:

+
$ 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):

+
$ 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:

+
$ git clone https://github.com/PromyLOPh/pianobar.git
+$ cd pianobar
+$ make clean && make
+$ sudo make install
+
+
+

Configure Pianobar to auto-login and start playing a station (optional, see man pianobar) by creating and editing the ~/.config/pianobar/config file:

+
password = Password
+user = you@youraccount.com
+
+
+

Test it out by running pianobar in the command line. You should be able to listen to your Pandora stations.

+

Configuration in Home Assistant

+

The Pandora player can be loaded by adding the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+media_player:
+  - platform: pandora
+
+
+

That’s it! Now you will find a media player. If you click it you will find all your stations listed as different sources. If you switch to one, the station will begin playing.

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.philips_js/index.html b/components/media_player.philips_js/index.html new file mode 100644 index 0000000000..c72e203435 --- /dev/null +++ b/components/media_player.philips_js/index.html @@ -0,0 +1,342 @@ + + + + + + + + + Philips TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Philips TV +

+
+
+

The philips_js platform allows you to control Philips TVs which expose the jointSPACE API. Instructions on how to activate the API and if your model is supported can be found here.

+

To add your TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: philips_js
+    host: 192.168.1.99
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address of TV.
  • +
  • name (Optional): The name you would like to give to the Philips TV.
  • +
  • turn_on_action (Optional): A script that will be executed to turn on the TV (can be used with wol).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.pioneer/index.html b/components/media_player.pioneer/index.html new file mode 100644 index 0000000000..3b69de071a --- /dev/null +++ b/components/media_player.pioneer/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Pioneer Network Receivers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

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

+

To add a Pioneer receiver to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: pioneer
+    host: 192.168.0.10
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the Pioneer device, eg. 192.168.0.10
  • +
  • name (Optional): The name you would like to give to the receiver.
  • +
  • port (Optional): The port on which the Pioneer device listens, e.g. 23 (default) or 8102
  • +
  • timeout (Optional): Number of seconds (float) to wait for blocking operations like connect, write, and read.
  • +
+

Notes:

+
    +
  • Some Pioneer AVRs use the port 23 default and some are reported to use 8102.
  • +
  • timeout is a socket level option and should only be configured if you know what you are doing.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.plex/index.html b/components/media_player.plex/index.html new file mode 100644 index 0000000000..909452eb94 --- /dev/null +++ b/components/media_player.plex/index.html @@ -0,0 +1,567 @@ + + + + + + + + + Plex - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Plex +

+
+
+

The plex platform allows you to connect a Plex Media Server to Home Assistant. It will allow you to control media playback and see the current playing item.

+

Setup

+

The preferred way to setup the Plex platform is by enabling the discovery component which requires GDM enabled on your Plex server.

+

If your Plex server has local authentication enabled or multiple users defined, Home Assistant requires an authentication token to be entered in the frontend. Press “CONFIGURE” to do it.

+

+ +

+

If you don’t know your token, see Finding your account token / X-Plex-Token.

+

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.

+

+ +

+

You can also enable the plex platform directly by adding the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+media_player:
+  - platform: plex
+
+
+

In case discovery does not work (GDM disabled or non-local plex server), you can create ~/.homeassistant/plex.conf manually.

+
{"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.
  • +
  • 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.
  • +
+

Customization

+

You can customize the Plex component by adding any of the variables below to your configuration:

+
# Example configuration.yaml entry
+media_player:
+  - platform: plex
+    entity_namespace: 'plex'
+    include_non_clients: true
+    scan_interval: 5
+    show_all_controls: false
+    use_custom_entity_ids: true
+    use_episode_art: true
+
+
+
    +
  • entity_namespace (Optional): Prefix for entity ID’s. Defaults to null. Useful when using overlapping components (ex. Apple TV and Plex components when you have Apple TV’s you use as Plex clients). Go from media_player.playroom2 to media_player.plex_playroom
  • +
  • include_non_clients (Optional): Display non-recontrollable clients (ex. remote clients, PlexConnect Apple TV’s). Defaults to false.
  • +
  • scan_interval (Optional): Amount in seconds in between polling for device’s current activity. Defaults to 10 seconds.
  • +
  • show_all_controls (Optional): Forces all controls to display. Defaults to false. Ignores dynamic controls (ex. show volume controls for client A but not for client B) based on detected client capabilities. This option allows you to override this detection if you suspect it to be incorrect.
  • +
  • use_custom_entity_ids (Optional): Name Entity ID’s by client ID’s instead of friendly names. Defaults to false. HA assigns entity ID’s on a first come first serve basis. When you have identically named devices connecting (ex. media_player.plex_web_safari, media_player.plex_web_safari2), you can’t reliably distinguish and or predict which device is which. This option avoids this issue by using unique client ID’s (ex. media_player.dy4hdna2drhn).
  • +
  • use_episode_art (Optional): Display TV episode art instead of TV show art. Defaults to false.
  • +
+

Service play_media

+

Plays a song, playlist, TV episode, or video on a connected client.

+

Music

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescriptionExample
entity_idnoentity_id of the clientmedia_player.theater_plex
media_content_idnoQuote escaped JSON with library_name, artist_name, album_name, track_name, shuffle (0 or 1).{ \“library_name\” : \“My Music\”, \“artist_name\” : \“Adele\”, \“album_name\” : \“25\”, \“track_name\” : \“hello\”, \“shuffle\”: \“0\” }
media_content_typenoType of media to play, in this case MUSICMUSIC
+

Playlist

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescriptionExample
entity_idnoentity_id of the clientmedia_player.theater_plex
media_content_idnoQuote escaped JSON with playlist_name, shuffle (0 or 1).{ \“playlist_name\” : \“The Best of Disco\” \“shuffle\”: \“0\” }
media_content_typenoType of media to play, in this case PLAYLISTPLAYLIST
+

TV Episode

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescriptionExample
entity_idnoentity_id of the clientmedia_player.theater_plex
media_content_idnoQuote escaped JSON with library_name, show_name, season_number, episode_number, shuffle (0 or 1).{ \“library_name\” : \“Adult TV\”, \“show_name\” : \“Rick and Morty\”, \“season_number\” : 2, \“episode_number\” : 5, \“shuffle\”: \“0\” }
media_content_typenoType of media to play, in this case EPISODEEPISODE
+

Video

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescriptionExample
entity_idnoentity_id of the clientmedia_player.theater_plex
media_content_idnoQuote escaped JSON with library_name, video_name, shuffle (0 or 1).{ \“library_name\” : \“Adult Movies\”, \“video_name\” : \“Blade\”, \“shuffle\”: \“0\” }
media_content_typenoType of media to play, in this case VIDEOVIDEO
+

Compatibility

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClientLimitations
Any (when all controls disabled)A stop button will appear but is not functional.
Any (when casting)Controlling playback will work but with error logging.
Any (remote client)Controls disabled.
Apple TV (PlexConnect)Controls disabled. Music does not work.
iOSNone
NVidia ShieldMute disabled. Volume set below 2 will cause error logging. Controlling playback when the Shield is both a client and a server will work but with error logging
Plex WebNone
Tivo Plex AppOnly play, pause, stop/off controls enabled
+

Notes

+
    +
  • At this moment, the Plex platform only supports one Plex Media Server.
  • +
  • +

    It is possible to get errors that look like the following.

    +
    ERROR:plexapi:http://192.168.1.10:32400: ('Connection aborted.', BadStatusLine("''",))
    +INFO:homeassistant.components.media_player.plex:No server found at: http://192.168.1.10:32400
    +
    +
    +

    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/components/media_player.roku/index.html b/components/media_player.roku/index.html new file mode 100644 index 0000000000..6d9b34c9f4 --- /dev/null +++ b/components/media_player.roku/index.html @@ -0,0 +1,339 @@ + + + + + + + + + Roku - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Roku +

+
+
+

The Roku media players will be automatically discovered if you enable the discovery component.

+

The roku media player platform can also be forced to load by adding the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+media_player:
+  - platform: roku
+
+
+

Configuration variables:

+
    +
  • host (Optional): Use only if you don’t want to scan for devices.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.russound_rio/index.html b/components/media_player.russound_rio/index.html new file mode 100644 index 0000000000..c9e780f866 --- /dev/null +++ b/components/media_player.russound_rio/index.html @@ -0,0 +1,344 @@ + + + + + + + + + Russound RIO - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Russound RIO +

+
+
+

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:

+
# 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/components/media_player.russound_rnet/index.html b/components/media_player.russound_rnet/index.html new file mode 100644 index 0000000000..ecd2704697 --- /dev/null +++ b/components/media_player.russound_rnet/index.html @@ -0,0 +1,364 @@ + + + + + + + + + Russound RNET - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Russound RNET +

+
+
+

The russound_rnet platform allows you to control Russound devices that make use of the RNET protocol.

+

This has initially been tested against a Russound CAV6.6 unit with six zones and six sources.

+

Connecting to the Russound device is only possible by TCP, you can make use of a TCP to Serial gateway such as tcp_serial_redirect

+

To add a device to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: russound_rnet
+    host: 192.168.1.10
+    port: 1337
+    name: Russound
+    zones:
+      1:
+        name: Main Bedroom
+      2:
+        name: Living Room
+      3:
+        name: Kitchen
+      4:
+        name: Bathroom
+      5:
+        name: Dining Room
+      6:
+        name: Guest Bedroom
+    sources:
+      - name: Sonos
+      - name: Sky+
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the TCP gateway
  • +
  • port (Required): The port of the TCP gateway
  • +
  • name (Required): The name of the device
  • +
  • zones (Required): This is the list of zones available
  • +
  • sources (Required): The list of sources available, these must be in order as they are connected to the device
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.samsungtv/index.html b/components/media_player.samsungtv/index.html new file mode 100644 index 0000000000..8dc4fe5242 --- /dev/null +++ b/components/media_player.samsungtv/index.html @@ -0,0 +1,392 @@ + + + + + + + + + Samsung Smart TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Samsung Smart TV +

+
+
+

The samsungtv platform allows you to control a Samsung Smart TV.

+

When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication.

+

To add a TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: samsungtv
+    host: 192.168.0.10
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the Samsung Smart TV, eg. 192.168.0.10.
  • +
  • port (Optional): The port of the Samsung Smart TV. Defaults to 55000. If set to 8001, the new websocket connection will be used (required for 2016+ TVs).
  • +
  • name (Optional): The name you would like to give to the Samsung Smart TV.
  • +
  • timeout (Optional): The time-out in seconds for the communication with the TV. Defaults to 0 (no timeout).
  • +
  • mac (Optional): The MAC address of the Samsung Smart TV, eg. 00:11:22:33:44:55:66. Required for power on support via wake on lan.
  • +
+

Currently known supported models:

+
    +
  • C7700
  • +
  • D5500
  • +
  • D6500
  • +
  • D7000
  • +
  • D8000
  • +
  • ES5500
  • +
  • ES6800
  • +
  • F6300
  • +
  • F6500
  • +
  • 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)
  • +
  • K5579 (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button)
  • +
  • K6500AF (port must be set to 8001)
  • +
  • KS8005 (port must be set to 8001, and pip3 install websocket-client must be executed)
  • +
  • KU6020 (port must be set to 8001, and pip3 install websocket-client must be executed)
  • +
  • KU6290 (port must be set to 8001)
  • +
  • KU7000 (port must be set to 8001)
  • +
  • MU6170UXZG (port must be set to 8001, and pip3 install websocket-client must be executed)
  • +
  • KS7502 (port must be set to 8001, and pip3 install websocket-client must be executed, turn on doesn’t work, turn off works fine)
  • +
  • K5600AK (partially supported, turn on works but state is not updated)
  • +
  • UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button)
  • +
  • UE6199UXZG (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button)
  • +
+

Currently tested but not working models:

+
    +
  • J5200 - Unable to see state and unable to control
  • +
  • J5500 - State is always “on” and unable to control (but port 8001 is open)
  • +
  • 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)
  • +
  • MU6300 - Port set to 8001, pip3 install websocket-client must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on)
  • +
+

None of the 2014 (H) and 2015 (J) model series (e.g. J5200) will work, since Samsung have used a different (encrypted) type of interface for these.

+

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. +The first letter (U, P, L, H & K) represent the screen type, e.g. LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. +If you add your model remember to remove these before adding them to the list.

+

Currently the ability to select a source is not implemented.

+

There’s currently a known issue with some TVs receiving a Key press UP that can interrupt certain applications. This should be fixed as of March 2017.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.snapcast/index.html b/components/media_player.snapcast/index.html new file mode 100644 index 0000000000..3eb78e2652 --- /dev/null +++ b/components/media_player.snapcast/index.html @@ -0,0 +1,340 @@ + + + + + + + + + Snapcast - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Snapcast +

+
+
+

The snapcast platform allows you to control Snapcast from Home Assistant.

+

To add Snapcast to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: snapcast
+    host: xxx.xxx.xxx.xxx
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the device, eg. 192.168.0.10.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.songpal/index.html b/components/media_player.songpal/index.html new file mode 100644 index 0000000000..eed0f4f999 --- /dev/null +++ b/components/media_player.songpal/index.html @@ -0,0 +1,390 @@ + + + + + + + + + Sony SongPal compatible devices - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sony SongPal compatible devices +

+
+
+

The songpal platform allows you to control Sony’s Songpal (“Audio Control API”) compatible devices such as soundbars, AV receivers and wireless speakers from Home Assistant.

+

Even when the API officially supports only a few devices (HT-ST5000, HT-MT500, HT-CT800, SRS-ZR5 and STR-DN1080), it has also been confirmed to work on others. The list of supported devices from Sony’s Songpal website lists devices which are likely to be compatible with this platform.

+

If the platform works with your non-listed device, or you encounter bugs, please feel free to report them upstream.

+

A few notes:

+
    +
  • The quick start-up mode has to be enabled in order to turn the device on.
  • +
  • Supports currently only one output terminal, i.e. the volume control works only on the first volume controller as reported by the backend library.
  • +
  • Some devices, e.g. HT-XT3, do not support decreasing the volume step-by-step correctly.
  • +
  • Feel free to improve the available services!
  • +
+

Configuration

+

The platform will be loaded automatically by discovery component. If you want to manually configure it, add the following to your configuration.yaml file:

+
media_player:
+  - platform: songpal
+    name: my soundbar
+    endpoint: http://IP_ADDRESS:10000/sony
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name to display for this device.

+
+
endpoint
+
+

(string)(Required)API endpoint of the device.

+
+
+
+

See python-songpal’s documentation how to get your API endpoint.

+

Services

+

In addition to the general media player services, the following services are provided:

+

Service media_player/songpal_set_sound_setting

+

For a list of available settings and their values use songpal sound command.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget entity, leave unset for all devices
namenoConfiguration variable, e.g. nightmode
valuenoNew configuration value, e.g. on
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.sonos/index.html b/components/media_player.sonos/index.html new file mode 100644 index 0000000000..1b3973c61c --- /dev/null +++ b/components/media_player.sonos/index.html @@ -0,0 +1,559 @@ + + + + + + + + + Sonos - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sonos +

+
+
+

The sonos platform allows you to control your Sonos HiFi wireless speakers and audio components from Home Assistant. By default it supports auto-discovery provided by Home Assistant, and you don’t need to add anything to your configuration.yaml. Alternatively, there are some manual configuration options, listed as follows:

+

To add your Sonos components to your installation, add the following to your configuration.yaml file. It will perform Sonos auto-discovery of your connected speakers.

+
# Example configuration.yaml entry using Sonos discovery
+media_player:
+  - platform: sonos
+
+
+

If you have multiple network devices, you can provide the IP address of the device that should be used for Sonos auto-discovery.

+
# Example configuration.yaml entry using Sonos discovery on a specific interface
+media_player:
+  - platform: sonos
+    interface_addr: 192.0.2.1
+
+
+

You can also specify one or more hosts to connect to if they cannot be found with Sonos auto-discovery.

+
# Example configuration.yaml entry with manually specified addresses
+media_player:
+  - platform: sonos
+    hosts: 192.0.2.25
+
+
+

or, for multiple hosts:

+
# Example configuration.yaml entry with manually specified addresses
+media_player:
+  - platform: sonos
+    hosts:
+      - 192.0.2.25
+      - 192.0.2.26
+      - 192.0.2.27
+
+
+

Service sonos_snapshot

+

Take a snapshot of what is currently playing on one or more speakers. This service, and the following one, are useful if you want to play a doorbell or notification sound and resume playback afterwards. If no entity_id is provided, all speakers are snapshotted.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of coordinator speakers.
with_groupyesShould be also snapshot the group state of the speaker.
+

Service sonos_restore

+

Restore a previously taken snapshot of one or more speakers. If no entity_id is provided, all speakers are restored.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of coordinator speakers.
with_groupyesShould be also restore the group state of the speaker. Only if was snapshot with group.
+

Service sonos_join

+

Do group players together under a single coordinator. That will make a new group or join to exists group.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
masternoA single entity_id that will become/hold the coordinator speaker.
entity_idnoString or list of a single entity_id that will group to master speaker.
+

Service sonos_unjoin

+

Remove one or more speakers from a group of speakers. If no entity_id is provided, all speakers are unjoined.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will be separated from their coordinator speaker.
+

Service sonos_set_sleep_timer

+

Sets a timer that will turn off a speaker by tapering the volume down to 0 after a certain amount of time. Protip: If you set the sleep_time value to 0, then the speaker will immediately start tapering the volume down.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will have their timers set. Must be a coordinator speaker.
sleep_timenoInteger number of seconds that the speaker should wait until it starts tapering. Cannot exceed 86399 (one day).
+

Service sonos_clear_sleep_timer

+

Clear the sleep timer on a speaker, if one is set.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will have their timers cleared. Must be a coordinator speaker.
+

Service sonos_update_alarm

+

Update an existing Sonos alarm.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will have their timers cleared. Must be a coordinator speaker.
alarm_idnoInteger that is used in Sonos to refer to your alarm.
timeyesTime to set the alarm.
volumeyesFloat for volume level.
enabledyesBoolean for whether or not to enable this alarm.
include_linked_zonesyesBoolean that defines if the alarm also plays on grouped players.
+

Service sonos_set_option

+

Set Sonos speaker options.

+

Night Sound and Speech Enhancement modes are only supported on Sonos PLAYBAR and PLAYBASE speakers when playing from the TV source. Other speaker types will ignore these options.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString or list of entity_ids that will have their options set.
night_soundyesBoolean to control Night Sound mode.
speech_enhanceyesBoolean to control Speech Enhancement mode.
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.soundtouch/index.html b/components/media_player.soundtouch/index.html new file mode 100644 index 0000000000..d675b44215 --- /dev/null +++ b/components/media_player.soundtouch/index.html @@ -0,0 +1,469 @@ + + + + + + + + + Soundtouch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Soundtouch +

+
+
+

The soundtouch platform allows you to control your Bose Soundtouch speakers from Home Assistant.

+

By default it supports auto-discovery provided by Home Assistant, and you don’t need to add anything to your configuration.yaml.

+

Alternatively, you can add the following to your configuration.yaml file.

+
# Example configuration.yaml
+media_player:
+  - platform: soundtouch
+    host: 192.168.1.1
+    port: 8090
+    name: Soundtouch Living Room
+
+
+

Or for multiple hosts

+
# Example configuration.yaml with many devices
+media_player:
+  - platform: soundtouch
+    host: 192.168.1.1
+    port: 8090
+    name: Soundtouch Living Room
+  - platform: soundtouch
+    host: 192.168.1.1
+    port: 8090
+    name: Soundtouch kitchen
+
+
+

Configuration variables:

+
    +
  • host (Required): The host name or address of the Soundtouch device.
  • +
  • name (Required): The name of the device used in the frontend.
  • +
  • port (Optional): The port number. Defaults to 8090.
  • +
+

You can switch between one of your 6 pre-configured presets using media_player.play_media

+
# Play media preset
+- service: media_player.play_media
+  data:
+    entity_id: media_player.soundtouch_living_room
+    media_content_id: 1..6
+    media_content_type: PLAYLIST
+
+
+

You can also play HTTP (not HTTPS) URLs:

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

Text-to-Speech services

+

You can use TTS services like Google Text-to-Speech or 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 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.

+

Service soundtouch_play_everywhere

+

Create a multi-room (zone) from a master and play same content on all other + devices (slaves)

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
masternoentity_id of the master device
+

Service soundtouch_create_zone

+

Create a multi-room (zone) from a master and play on selected slaves

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
masternoentity_id of the master device
slavesnoList of slaves entity_id
+

Service soundtouch_add_zone_slave

+

Add slave(s) to an existing zone

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
masternoentity_id of the master device
slavesnoList of slaves entity_id to add
+

Service soundtouch_remove_zone_slave

+

Remove slave(s) from an existing zone.

+

Removing the last slave will destroy the zone. You will need to +create a new zone in order to be able to add slave(s) again

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
masternoentity_id of the master device
slavesnoList of slaves entity_id to remove
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.spotify/index.html b/components/media_player.spotify/index.html new file mode 100644 index 0000000000..a9e3bd94c2 --- /dev/null +++ b/components/media_player.spotify/index.html @@ -0,0 +1,377 @@ + + + + + + + + + Spotify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Spotify +

+
+
+

The spotify media player platform allows you to control Spotify playback from Home Assistant.

+

Prerequisites

+
    +
  • Spotify account.
  • +
  • Spotify Application, properly configured
  • +
+

+Controlling the Spotify component (pause, play, next, etc) requires a Premium account. If you do not have a Premium account, the component in the frontend will not show the controls. +

+

To create the required Spotify Application:

+
    +
  • Login to Spotify Developer
  • +
  • Visit the My Applications page
  • +
  • Select Create An App. Enter any name and description. Once your application is created, view it and copy your Client ID and Client Secret, which are used in the Home Assistant configuration file.
  • +
  • Add a Redirect URI in the following forms:
  • +
+

No SSL: http://<your_home_assistant_url_or_local_ip>:<port>/api/spotify

+

If using SSL: https://<your_home_assistant_url_or_local_ip>:<port>/api/spotify

+

The URL is whatever you use to access Home Assistant from outside your network (including port if applicable).

+
    +
  • Click Save after adding the URI. You may also need to set the base_url attribute of the HTTP Component.
  • +
+

Configuration

+

To add Spotify to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: spotify
+    client_id: <your client id>
+    client_secret: <your client secret>
+    aliases:
+        abc123def456: 'Living Room'
+        9183abas000: 'Bed Room'
+
+
+

Configuration variables:

+
    +
  • client_id (Required): Client ID from your Spotify Application.
  • +
  • client_secret (Required): Client Secret from your Spotify Application.
  • +
  • cache_path (Optional): Path to cache authentication token (defaults to configuration directory).
  • +
  • aliases (Optional): Dictionary of device ids to be aliased, handy for devices that Spotify cannot properly determine the device name of. New devices will be logged to the info channel for ease of aliasing.
  • +
+

Setup

+

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.

+

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.

+

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.

+

In this example this is a URI link to the Reggae Infusions playlist, the link below from Spotify explains how to get this URI value to use for playlists in the Spotify component.

+

https://support.spotify.com/us/using_spotify/share_music/why-do-you-have-two-different-link-formats/

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.squeezebox/index.html b/components/media_player.squeezebox/index.html new file mode 100644 index 0000000000..acaafe1f78 --- /dev/null +++ b/components/media_player.squeezebox/index.html @@ -0,0 +1,382 @@ + + + + + + + + + Logitech Squeezebox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Logitech Squeezebox +

+
+
+

The squeezebox platform allows you to control a Logitech Squeezebox music player from Home Assistant. This lets you control Squeezebox hardware like the Classic, Transporter, Duet, Boom, Radio and Touch and of software players like SoftSqueeze, SqueezePlayer and SqueezeSlave.

+

To add your Squeezebox player to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: squeezebox
+    host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): The host name or address of the Logitech Media Server, eg. 192.168.1.21.
  • +
  • port (Optional): Web interface port to Logitech Media Server. Defaults to 9000.
  • +
  • username (Optional): The username, if password protection is enabled.
  • +
  • password (Optional): The password, if password protection is enabled.
  • +
+

This platform now uses the web interface of the Logitech Media Server to send commands. The default port of the web interface is 9000. It is the same port that you use to access the LMS through your web browser. Originally, this platform used the telnet interface, which defaults to 9090. If you previously specified the port in your configuration file, you will likely need to update it.

+

Service squeezebox_call_method

+

Call a custom Squeezebox JSONRPC API.

+

See documentation for this interface on http://HOST:PORT/html/docs/cli-api.html?player= where HOST and PORT are the host name and port for your Logitech Media Server.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoName(s) of the Squeezebox entities where to run the API method.
commandnoCommand to pass to Logitech Media Server (p0 in the CLI documentation).
parametersyesArray of additional parameters to pass to Logitech Media Server (p1, …, pN in the CLI documentation).
+

This service can be used to integrate any Squeezebox action to an automation.

+

It can also be used to target a Squeezebox from IFTT (or DialogFlow, Alexa…).

+

For example, to play an album from your collection, create an IFTT applet like this:

+
    +
  • Trigger: Google assistant, with sentence: I want to listen to album $
  • +
  • Action: JSON post query with such JSON body:
    +{ "entity_id": "media_player.squeezebox_radio", "command": "playlist", "parameters": ["loadtracks", "album.titlesearch="] }
    +This can work with title search and basically any thing. The same wouldn’t have worked by calling directly Squeezebox server as IFTT cannot escape the text field.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.ue_smart_radio/index.html b/components/media_player.ue_smart_radio/index.html new file mode 100644 index 0000000000..50d7de8707 --- /dev/null +++ b/components/media_player.ue_smart_radio/index.html @@ -0,0 +1,350 @@ + + + + + + + + + Logitech UE Smart Radio - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Logitech UE Smart Radio +

+
+
+

The ue_radio platform allows you to control a Logitech UE Smart Radio from Home Assistant. This lets you control both Logitech UE Smart Radios and Logitech Squeezebox Radios that have been updated with the UE Smart Radio update.

+

To add your UE Smart Radio player to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: ue_smart_radio
+    username: USERNAME
+    password: PASSWORD
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The email you use to log in to uesmartradio.com.

+
+
password
+
+

(string)(Required)The password you use to log in to uesmartradio.com.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.universal/index.html b/components/media_player.universal/index.html new file mode 100644 index 0000000000..f854bf832e --- /dev/null +++ b/components/media_player.universal/index.html @@ -0,0 +1,530 @@ + + + + + + + + + Universal - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Universal +

+
+
+

Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center.

+

Multiple media player entities can be controlled from an universal media player. Additionally, the universal media player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver.

+

A Universal Media Player is created in configuration.yaml as follows.

+
# Example configuration.yaml entry
+media_player:
+  - platform: universal
+    name: MEDIA_PLAYER_NAME
+    children:
+      - media_player.CHILD_1_ID
+      - media_player.CHILD_2_ID
+    commands:
+      turn_on:
+        service: SERVICE
+        data: SERVICE_DATA
+      turn_off:
+        service: SERVICE
+        data: SERVICE_DATA
+      volume_up:
+        service: SERVICE
+        data: SERVICE_DATA
+      volume_down:
+        service: SERVICE
+        data: SERVICE_DATA
+      volume_mute:
+        service: SERVICE
+        data: SERVICE_DATA
+    attributes:
+      is_volume_muted: ENTITY_ID|ATTRIBUTE
+      state: ENTITY_ID|ATTRIBUTE
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Required)The name to assign the player.

+
+
children
+
+

(list)(Required)Ordered list of child media players this entity will control.

+
+
state_template
+
+

(template)(Optional)A template can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like switches or input booleans.

+
+
commands
+
+

(string)(Optional)Commands to be overwritten. Possible entries are turn_on, turn_off, select_source, volume_set, volume_up, volume_down and volume_mute.

+
+
attributes
+
+

(string)(Optional)Attributes that can be overwritten. Possible entries are is_volume_muted, state, source, source_list and volume_level. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID’s state should be used, then only the entity id should be provided.

+
+
+
+

The Universal Media Player will primarily imitate one of its children. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a state_template is not provided. Entities in the children: list must be media players, but the state template can contain any entity.

+

It is recommended that the command turn_on, the command turn_off, and the attribute state all be provided together. The state attribute indicates if the media player is on or off. If state indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and state is on, the Universal Media Player’s state will be on.

+

It is also recommended that the command volume_up, the command volume_down, the command volume_mute, and the attribute is_volume_muted all be provided together. The attribute is_volume_muted should return either True or the on state when the volume is muted. The volume_mute service should toggle the mute setting.

+

When providing select_source as a command, it is recommended to also provide the attributes source, and source_list. The source attribute is the currently select source, while the source_list attribute is a list of all available sources.

+

Usage examples

+

Chromecast & Kodi control with switches

+

In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The turn_on and turn_off commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The select_source command will be passed directly to an A/V receiver.

+

The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status.

+
media_player:
+  platform: universal
+  name: Test Universal
+  children:
+    - media_player.living_room_cast
+    - media_player.living_room_kodi
+  commands:
+    turn_on:
+      service: switch.turn_on
+      data:
+        entity_id: switch.living_room_tv
+    turn_off:
+      service: switch.turn_off
+      data:
+        entity_id: switch.living_room_tv
+    volume_up:
+      service: switch.turn_on
+      data:
+        entity_id: switch.living_room_volume_up
+    volume_down:
+      service: switch.turn_on
+      data:
+        entity_id: switch.living_room_volume_down
+    volume_mute:
+      service: switch.turn_on
+      data:
+        entity_id: switch.living_room_mute
+    select_source:
+      service: media_player.select_source
+      data_template:
+        entity_id: media_player.receiver
+        source: '{{ source }}'
+    volume_set:
+      service: media_player.volume_set
+      data_template:
+        entity_id: media_player.receiver
+        volume_level: '{{ volume_level }}'
+
+  attributes:
+    state: switch.living_room_tv
+    is_volume_muted: switch.living_room_mute
+    volume_level: media_player.receiver|volume_level
+    source: media_player.receiver|source
+    source_list: media_player.receiver|source_list
+
+
+

Kodi CEC-TV control

+

In this example, a Kodi Media Player runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV.

+

We store the state of the attached TV in a hidden input boolean, so we can differentiate the TV being on or off, while Kodi is always ‘idle’, and use the universal media player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the ‘idle’ and the ‘off’ state (being the second when it is idle and the TV is off).

+

Because the input boolean used to store the TV state is only changing when using the Home Assistant turn_on and turn_off actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed.

+

In an Apple HomeKit scene, we can now expose this universal media player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV.

+

The complete configuration is:

+
homeassistant:
+  customize:
+    input_boolean.kodi_tv_state:
+      hidden: true
+      homebridge_hidden: true
+    media_player.kodi:
+      hidden: true
+      homebridge_hidden: true
+    media_player.kodi_tv:
+      friendly_name: Kodi
+      homebridge_name: Kodi
+      homebridge_media_player_switch: on_off
+
+input_boolean:
+  kodi_tv_state:
+
+media_player:
+- platform: universal
+  name: Kodi TV
+  state_template: >
+    {% if is_state('media_player.kodi', 'idle') and is_state('input_boolean.kodi_tv_state', 'off') %}
+    off
+    {% else %}
+    {{ states('media_player.kodi') }}
+    {% endif %}
+  children:
+    - media_player.kodi
+  commands:
+    turn_on:
+      service: media_player.turn_on
+      data:
+        entity_id: media_player.kodi
+    turn_off:
+      service: media_player.turn_off
+      data:
+        entity_id: media_player.kodi
+  attributes:
+    is_volume_muted: media_player.kodi|is_volume_muted
+    volume_level: media_player.kodi|volume_level
+
+- platform: kodi
+  name: Kodi
+  host: 192.168.1.10
+  turn_on_action:
+  - service: input_boolean.turn_on
+    data:
+      entity_id: input_boolean.kodi_tv_state
+  - service: media_player.kodi_call_method
+    data:
+      entity_id: media_player.kodi
+      method: Addons.ExecuteAddon
+      addonid: script.json-cec
+      params:
+        command: activate
+  turn_off_action:
+  - service: input_boolean.turn_off
+    data:
+      entity_id: input_boolean.kodi_tv_state
+  - service: media_player.media_stop
+    data:
+      entity_id: media_player.kodi
+  - service: media_player.kodi_call_method
+    data:
+      entity_id: media_player.kodi
+      method: Addons.ExecuteAddon
+      addonid: script.json-cec
+      params:
+        command: standby
+
+automation:
+- alias: Turn on the TV when Kodi is activated
+  trigger:
+    platform: state
+    entity_id: media_player.kodi_tv
+    from: 'off'
+    to: 'playing'
+  action:
+  - service: media_player.turn_on
+    entity_id: media_player.kodi_tv
+
+- alias: Turn off the TV when Kodi is in idle > 15 min
+  trigger:
+    platform: state
+    entity_id: media_player.kodi_tv
+    to: 'idle'
+    for:
+      minutes: 15
+  action:
+  - service: media_player.turn_off
+    entity_id: media_player.kodi_tv
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.vizio/index.html b/components/media_player.vizio/index.html new file mode 100644 index 0000000000..206ab3f320 --- /dev/null +++ b/components/media_player.vizio/index.html @@ -0,0 +1,400 @@ + + + + + + + + + Vizio SmartCast TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vizio SmartCast TV +

+
+
+

The vizio component will allow you to control SmartCast 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):

+
$ pip3 install git+https://github.com/vkorn/pyvizio.git@master
+
+
+

or

+
$ 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:

+
$ pyvizio --ip=0 --auth=0 discover
+
+
+

Enter the following command to initiate pairing:

+
$ pyvizio --ip={ip} pair
+
+
+

Initiation will show you two different values:

+ + + + + + + + + + + + + + + + + +
ValueDescription
Challenge typeUsually it should be "1". If not, use the additional parameter --ch_type=your_type in the next step
Challenge tokenToken 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:

+
$ 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:

+
# 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 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. +If you want to only ignore only this specific python urllib3 SSL warning, you will need to run Home Assistant with the python flag -W or the environment variable PYTHONWARNINGS set to: +ignore:Unverified HTTPS request is being made +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.vlc/index.html b/components/media_player.vlc/index.html new file mode 100644 index 0000000000..5bc5038a27 --- /dev/null +++ b/components/media_player.vlc/index.html @@ -0,0 +1,363 @@ + + + + + + + + + VLC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ VLC +

+
+
+

The vlc platform allows you to control VLC media player.

+

To add a VLC media player to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: vlc
+
+
+

Configuration variables:

+
    +
  • name (Optional): The name to use in the frontend.
  • +
  • arguments (Optional): Additional arguments to be passed to VLC.
  • +
+

Only the “music” media type is supported for now.

+

This service will control a background VLC instance, therefore you cannot use this to control a VLC instance launched on your desktop, unlike the Kodi media player for example.

+

Full configuration

+

A full configuration for VLC could look like the one below:

+
# Example configuration.yaml entry
+media_player:
+  - platform: vlc
+    name: speaker_1
+    arguments: '--alsa-audio-device=hw:1,0'
+
+
+
Additional configuration on macOS
+

On macOS python-vlc won’t find the VLC plugin directory unless you add this to the user’s .bash_profile that is running Home Assistant:

+
export VLC_PLUGIN_PATH=$VLC_PLUGIN_PATH:/Applications/VLC.app/Contents/MacOS/plugins
+
+
+
Additional configuration for Rasperry Pi
+

You need to add the homeassistant user to the audio group:

+
sudo usermod -a -G audio homeassistant
+
+
+
VLC currently not supported with Hass.io
+

According to the forum topic “How to add VLC into my Hassio”, it is not possible to install packages like VLC on Hass.io.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.volumio/index.html b/components/media_player.volumio/index.html new file mode 100644 index 0000000000..3ff915d165 --- /dev/null +++ b/components/media_player.volumio/index.html @@ -0,0 +1,342 @@ + + + + + + + + + Volumio Media Player - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Volumio Media Player +

+
+
+

The Volumio platform allows you to control a Volumio media player +from Home Assistant.

+

To add a Volumio player to your installation, add the following to +your configuration.yaml file.

+
# Example configuration.yaml entry
+media_player:
+  - platform: volumio
+    host: homeaudio.local
+    port: 3000
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name of the device
  • +
  • host (Required): IP address or hostname of the device
  • +
  • port (Required): Port number of Volumio service
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.webostv/index.html b/components/media_player.webostv/index.html new file mode 100644 index 0000000000..3611db4178 --- /dev/null +++ b/components/media_player.webostv/index.html @@ -0,0 +1,403 @@ + + + + + + + + + LG webOS Smart TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LG webOS Smart TV +

+
+
+

The webostv platform allows you to control a LG webOS Smart TV.

+

Setup

+

To begin with enable LG Connect Apps feature in Network settings of the TV instructions.

+

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.

+

Configuration

+

To add a TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: webostv
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP of the LG webOS Smart TV, e.g. 192.168.0.10.
  • +
  • turn_on_action (Optional): Defines an 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 and webOS App inputs.
    • +
    +
  • +
+

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:

+
# Example configuration.yaml entry
+media_player:
+  - platform: webostv
+    host: 192.168.0.10
+    name: Living Room TV  
+    timeout: 5
+    filename: webostv.conf
+    turn_on_action:
+      service: persistent_notification.create
+      data:
+        message: "Turn on action"
+    customize:
+      sources:
+        - livetv
+        - youtube
+        - 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 (or Mobile App in General settings for older models) (*may vary by version).

+
# 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 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.<name> and use the sources listed in source_list: remembering to split them per line into your sources: configuration.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.xiaomi_tv/index.html b/components/media_player.xiaomi_tv/index.html new file mode 100644 index 0000000000..81a999fb32 --- /dev/null +++ b/components/media_player.xiaomi_tv/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Xiaomi TV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi TV +

+
+
+

The xiaomi_tv platform allows you to control a Xiaomi TV.

+

You need to make sure the TV is connected to the internet, and that your Home Assistant instance is on the same network.

+

To add a TV to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: xiaomi_tv
+
+
+

+When starting or restarting Home Assistant make sure your TV is off. This is a flaw in the TV itself. +

+

Configuration variables:

+
    +
  • host (Optional): The IP of the Xiaomi TV, eg. 192.168.0.10
  • +
  • name (Optional): The name to use on the frontend. Default is ‘Xiaomi TV’.
  • +
+

If you do not set a host in the configuration file, local TVs will automatically be discovered.

+

To manually add a TV you can use the following configuration:

+
# Example configuration.yaml entry
+media_player:
+  - platform: xiaomi_tv
+    host: YOUR_TV_IP
+    name: YOUR_TV_NAME
+
+
+

+The platform will never turn your TV off. Instead, it will be put to sleep and woken up. This can be useful, because the selected source of the TV will remain the same. It will essentially turn your TV into a dumb TV. +

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.yamaha/index.html b/components/media_player.yamaha/index.html new file mode 100644 index 0000000000..d45751d7d2 --- /dev/null +++ b/components/media_player.yamaha/index.html @@ -0,0 +1,448 @@ + + + + + + + + + Yamaha Network Receivers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yamaha Network Receivers +

+
+
+

The yamaha platform allows you to control Yamaha Network Receivers from Home Assistant.

+

Supported devices:

+
    +
  • HTR-4065
  • +
  • RX-V473
  • +
  • RX-V573
  • +
  • RX-V673
  • +
  • RX-V773
  • +
  • And more
  • +
+

To add a Yamaha Network Receiver to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: yamaha
+
+
+

Configuration variables:

+
    +
  • 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 one to rename e.g. HDMI1 to ChromeCast
  • +
  • zone_ignore (Optional): List of zones to hide in the front-end
  • +
  • zone_names (Optional): Mapping of zone names to custom ones, allowing one to rename e.g. Main_Zone to Family Room
  • +
+

Discovery notes

+
    +
  • 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 its hostname (if it is discoverable by +your DNS) then.
  • +
+

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 > separated string of the menu path on +the vtuner service. For instance Bookmarks>Internet>WAMC 90.3 FM.
  • +
+

Example configuration

+

A full configuration example will look like the sample below:

+
# Example configuration.yaml entry
+media_player:
+  - platform: yamaha
+    host: 192.168.0.10
+    source_ignore:
+      - "AUX"
+      - "HDMI6"
+    source_names:
+      HDMI1: "ChromeCast"
+      AV4: "Vinyl"
+    zone_ignore:
+      - "Zone_2"
+    zone_names:
+      Main_Zone: "Family Room"
+
+
+

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.

+
# 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"
+
+
+
+

Service yamaha_enable_output

+

Enable or disable an output port (HDMI) on the receiver.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesString or list of strings that point at entity_ids of Yamaha receivers.
portnoPort to enable or disable, e.g. hdmi1.
enablednoTo enable set true, otherwise set to false.
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.yamaha_musiccast/index.html b/components/media_player.yamaha_musiccast/index.html new file mode 100644 index 0000000000..edb1fee332 --- /dev/null +++ b/components/media_player.yamaha_musiccast/index.html @@ -0,0 +1,352 @@ + + + + + + + + + Yamaha MusicCast Receivers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yamaha MusicCast Receivers +

+
+
+

The yamaha_musiccast platform allows you to control Yamaha MusicCast Receivers from Home Assistant.

+

Supported devices are listed on their German site.

+

To add a Yamaha MusicCast Receiver to your installation, add the following to your configuration.yaml file:

+
# 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 source port. If multiple devices are present, specify a different port per device
  • +
  • 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:

+
# Example configuration.yaml entry
+media_player:
+  - platform: yamaha_musiccast
+    host: 192.168.178.97
+    port: 5005
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/media_player.ziggo_mediabox_xl/index.html b/components/media_player.ziggo_mediabox_xl/index.html new file mode 100644 index 0000000000..b2dd70b98e --- /dev/null +++ b/components/media_player.ziggo_mediabox_xl/index.html @@ -0,0 +1,353 @@ + + + + + + + + + Ziggo Mediabox XL - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ziggo Mediabox XL +

+
+
+

The ziggo_mediabox_xl component allows you to control a Ziggo Mediabox XL from Home Assistant.

+

To add a Ziggo Mediabox XL to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+media_player:
+  - platform: ziggo_mediabox_xl
+    host: 192.168.0.123
+    name: Ziggo Mediabox
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The hostname or address of the device.

+
+
name
+
+

(string)(Optional)The name of the device used in the frontend.

+
+
+
+

The channel information (numbers and names) are downloaded from ziggo.nl on startup.

+

Preparation of the Mediabox

+

Makes sure to enable the Home Network (“mijn thuisnetwerk”) service in the settings menu of the media box. Once you have set up the Media Library (“mediabiblotheek”), we can determine whether the device is turned on or off. Without this, the component will fail to start.

+
+
+ +
+
+ + + + + + + diff --git a/components/media_player/index.html b/components/media_player/index.html new file mode 100644 index 0000000000..5bc89517de --- /dev/null +++ b/components/media_player/index.html @@ -0,0 +1,463 @@ + + + + + + + + + Media Player - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Media Player +

+
+
+

Interacts with media players on your network. Please check the sidebar for a full list of supported devices.

+

Services

+

Media control services

+

Available services: turn_on, turn_off, toggle, volume_up, volume_down, volume_set, media_play_pause, media_play, media_pause, media_stop, media_next_track, media_previous_track, clear_playlist, shuffle_set

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
+

Service media_player.volume_mute

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
is_volume_mutednoTrue/false for mute/unmute
+

Service media_player/volume_set

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
volume_levelnoFloat for volume level
+

Service media_player.media_seek

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
seek_positionnoPosition to seek to. The format is platform dependent.
+

Service media_player.play_media

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
media_content_idnoA media identifier. The format of this is component dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes.
media_content_typenoA media type. Must be one of music, tvshow, video, episode, channel or playlist. For example, to play music you would set media_content_type to music.
+

Service media_player.select_source

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
sourcenoName of the source to switch to. Platform dependent.
+

Service media_player.shuffle_set

+

Currently only supported on Spotify, MPD, Kodi, Squeezebox and Universal.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoTarget a specific media player. For example media_player.spotify
shufflenotrue/false for enabling/disabling shuffle
+
+
+ +
+
+ + + + + + + diff --git a/components/melissa/index.html b/components/melissa/index.html new file mode 100644 index 0000000000..184fe8e081 --- /dev/null +++ b/components/melissa/index.html @@ -0,0 +1,475 @@ + + + + + + + + + Melissa Climate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melissa Climate +

+
+
+

The Melissa component is the main component to connect to a Melissa Climate A/C control.

+

To set the Melissa component up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+melissa:
+  username: <email adress>
+  password: ********
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The username for accessing your Melissa account.

+
+
password
+
+

(string)(Required)The password for accessing your Melissa account.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/mercedesme/index.html b/components/mercedesme/index.html new file mode 100644 index 0000000000..7c7cc04b26 --- /dev/null +++ b/components/mercedesme/index.html @@ -0,0 +1,495 @@ + + + + + + + + + Mercedes me - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mercedes me +

+
+
+

The Mercedes me component offers integration with the Mercedes me cloud service and provides presence detection as well as sensors such as doors, tires, windows, and service interval.

+

This component provides the following platforms:

+
    +
  • Binary Sensors - such as windows, tires, doors, lock
  • +
  • Sensors - such as fuel status, service interval, remaining km…
  • +
  • Device tracker - to track location of your car
  • +
+

+ The component can integrate cars from European and African markets only. +

+

To use Mercedes me in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+mercedesme:
+  username: email
+  password: password
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The email address associated with your Mercedes me account.

+
+
password
+
+

(string)(Required)The password for your given Mercedes me account.

+
+
scan_interval
+
+

(int)(Required)API polling interval. The minimal value can’t be less then 30 seconds.

+

Default value: 30

+
+
+
+

+The requirement lxml has to be installed manually pip install lxml on some devices. +

+
+
+ +
+
+ + + + + + + diff --git a/components/microsoft_face/index.html b/components/microsoft_face/index.html new file mode 100644 index 0000000000..14e93b722d --- /dev/null +++ b/components/microsoft_face/index.html @@ -0,0 +1,503 @@ + + + + + + + + + Microsoft Face - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Microsoft Face +

+
+
+

The microsoft_face component platform is the main component for Microsoft Azure Cognitive service Face. All data are stored in your own private instance in the Azure cloud.

+

You need an API key, which is free, but requires an Azure registration 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. Please note that all keys on cognitive services must be recreated every 90 days.

+

To enable the Microsoft Face component, add the following to your configuration.yaml:

+
# Example configuration.yaml entry
+microsoft_face:
+  api_key: YOUR_API_KEY
+  azure_region: eastus2
+
+
+

Configuration variables:

+
    +
  • api_key (Required): The API key for your Cognitive resource.
  • +
  • azure_region (Optional): The region where you instantiated your Microsoft Cognitive services endpoint
  • +
  • timeout (Optional): Set timeout for the API connection. Defaults to 10s.
  • +
+

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 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 and can be called via the Frontend, a script, or the REST API.

+
    +
  • microsoft_face.create_group
  • +
  • microsoft_face.delete_group
  • +
+
service: microsoft_face.create_group
+data:
+  name: 'Family'
+
+
+
    +
  • microsoft_face.create_person
  • +
  • microsoft_face.delete_person
  • +
+
service: microsoft_face.create_person
+data:
+  group: family
+  name: 'Hans Maier'
+
+
+

You need to add an image of a person. You can add multiple images for every person to make the detection better. You can take a picture from a camera or send a local image to your Azure resource.

+
    +
  • microsoft_face.face_person
  • +
+
service: microsoft_face.face_person
+data:
+  group: family
+  name: 'Hans Maier'
+  camera_entity: camera.door
+
+
+

For the local image we need curl. The {personId} is present in group entity as attribute.

+
$ curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/persongroups/{GroupName}/persons/{personId}/persistedFaces" \
+  -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
+  -H "Content-Type: application/octet-stream" --data-binary "@/tmp/image.jpg"
+
+
+

After we’re done with changes on a group, we need train this group to teach the AI how to handle the new data.

+
    +
  • microsoft_face.train_group
  • +
+
service: microsoft_face.train_group
+data:
+  group: family
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/mochad/index.html b/components/mochad/index.html new file mode 100644 index 0000000000..42e8f08210 --- /dev/null +++ b/components/mochad/index.html @@ -0,0 +1,468 @@ + + + + + + + + + Mochad - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mochad +

+
+
+

The mochad component is the main component to integrate all X10 platforms being controlled by mochad. Besides this component you will have to setup your X10 devices separately.

+

To integrate your Mochad units with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+mochad:
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host that mochad is running on. Defaults to localhost.
  • +
  • port (Optional): The port that mochad is running on. Defaults to 1099.
  • +
+

A full configuration sample could look like the one below:

+
# Example configuration.yaml entry
+mochad:
+  host: localhost
+  port: 1099
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/modbus/index.html b/components/modbus/index.html new file mode 100644 index 0000000000..44834e1831 --- /dev/null +++ b/components/modbus/index.html @@ -0,0 +1,524 @@ + + + + + + + + + Modbus - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Modbus +

+
+
+

Modbus is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections.

+

To add modbus to your installation, add the following to your configuration.yaml file:

+

For a network connection:

+
# Example configuration.yaml entry for a TCP connection
+modbus:
+  type: tcp
+  host: IP_ADDRESS
+  port: 2020
+
+
+

Configuration variables:

+
    +
  • type (Required): Type of the connection to Modbus. Possible values are: +
      +
    • tcp: Modbus TCP protocol according to “MODBUS Messaging Implementation Guide version 1.0b” provided by Schneider Automation,
    • +
    • udp: Modbus TCP form, but using UDP for transport (removes the overheads required for TCP),
    • +
    • rtuovertcp: Modbus RTU message transmitted with a TCP/IP wrapper and sent over a network instead of serial lines.
    • +
    +
  • +
  • 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:

+
# Example configuration.yaml entry for a serial connection
+modbus:
+  type: serial
+  method: rtu
+  port: /dev/ttyUSB0
+  baudrate: 9600
+  stopbits: 1
+  bytesize: 8
+  parity: N
+
+
+

Configuration variables:

+
    +
  • type (Required): Type of the connection to Modbus.
  • +
  • method (Required): Method of the connection to Modbus.
  • +
  • port (Required): The port where your Modbus device is connected to your Home Assistant host.
  • +
  • baudrate (Required): The speed for the serial connection.
  • +
  • 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)
  • +
+

Services

+ + + + + + + + + + + + + +
ServiceDescription
write_registerWrite register. Requires unit, address and value fields. value can be either single value or an array
+

Building on top of Modbus

+ +
+
+ +
+
+ + + + + + + diff --git a/components/mqtt/index.html b/components/mqtt/index.html new file mode 100644 index 0000000000..7610c85f7f --- /dev/null +++ b/components/mqtt/index.html @@ -0,0 +1,510 @@ + + + + + + + + + MQTT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT +

+
+
+

MQTT (aka MQ Telemetry Transport) is a machine-to-machine or “Internet of Things” connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport.

+

Your first step to get MQTT and Home Assistant working is to choose a broker.

+

To integrate MQTT into Home Assistant, add the following section to your configuration.yaml file. Keep in mind that the minimal setup will run with an embedded MQTT broker:

+
# Example configuration.yaml entry
+mqtt:
+
+
+

To connect to your own MQTT broker:

+
# Example configuration.yaml entry
+mqtt:
+  broker: IP_ADDRESS_BROKER
+
+
+

Additional features

+ +
+
+ +
+
+ + + + + + + diff --git a/components/mqtt_eventstream/index.html b/components/mqtt_eventstream/index.html new file mode 100644 index 0000000000..ab4897383d --- /dev/null +++ b/components/mqtt_eventstream/index.html @@ -0,0 +1,267 @@ + + + + + + + + + MQTT Eventstream - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Eventstream +

+
+
+

The mqtt_eventstream component connects two Home Assistant instances via MQTT.

+

To integrate MQTT Eventstream into Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+mqtt_eventstream:
+  publish_topic: MyServerName
+  subscribe_topic: OtherHaServerName
+
+
+
+

Configuration Variables

+
+
publish_topic
+
+

(string)(Optional)Topic for publishing local events.

+
+
subscribe_topic
+
+

(string)(Optional)Topic to receive events from the remote server.

+
+
ignore_event
+
+

(list)(Optional)Ignore sending these events over mqtt.

+
+
+
+

Multiple Instances

+

Events from multiple instances can be aggregated to a single master instance by subscribing to a wildcard topic from the master instance.

+
# Example master instance configuration.yaml entry
+mqtt_eventstream:
+  publish_topic: master/topic
+  subscribe_topic: slaves/#
+  ignore_event:
+    - call_service
+    - state_changed
+
+
+

For a multiple instance setup, each slave would publish to their own topic.

+
# Example slave instance configuration.yaml entry
+mqtt_eventstream:
+  publish_topic: slaves/upstairs
+  subscribe_topic: master/topic
+
+
+
# Example slave instance configuration.yaml entry
+mqtt_eventstream:
+  publish_topic: slaves/downstairs
+  subscribe_topic: master/topic
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/mqtt_statestream/index.html b/components/mqtt_statestream/index.html new file mode 100644 index 0000000000..9be2dd6350 --- /dev/null +++ b/components/mqtt_statestream/index.html @@ -0,0 +1,296 @@ + + + + + + + + + MQTT Statestream - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Statestream +

+
+
+

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:

+
# 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.
  • +
  • exclude (Optional): Configure which components should be excluded from recordings. See Include/Exclude section below for details. +
      +
    • entities (Optional): The list of entity ids to be excluded from recordings.
    • +
    • domains (Optional): The list of domains to be excluded from recordings.
    • +
    +
  • +
  • include (Optional): Configure which components should be included in recordings. If set, all other entities will not be recorded. +
      +
    • entities (Optional): The list of entity ids to be included from recordings.
    • +
    • domains (Optional): The list of domains to be included from recordings.
    • +
    +
  • +
+

Operation

+

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.

+

Include/exclude

+

The exclude and include configuration variables can be used to filter the items that are published to MQTT.

+

1. If neither exclude or include are specified, all entities are published.

+

2. If only exclude is specified, then all entities except the ones listed are published.

+
# Example of excluding entities
+mqtt_statestream:
+  base_topic: homeassistant
+  exclude:
+    domains:
+      - switch
+    entities:
+      - sensor.nopublish
+
+
+

In the above example, all entities except for switch.x and sensor.nopublish will be published to MQTT.

+

3. If only include is specified, then only the specified entries are published.

+
# Example of excluding entities
+mqtt_statestream:
+  base_topic: homeassistant
+  include:
+    domains:
+      - sensor
+    entities:
+      - lock.important
+
+
+

In this example, only sensor.x and lock.important will be published.

+

4. If both include and exclude are specified then all entities specified by include are published except for the ones +specified by exclude.

+
# Example of excluding entities
+mqtt_statestream:
+  base_topic: homeassistant
+  include:
+    domains:
+      - sensor
+  exclude:
+    entities:
+      - sensor.noshow
+
+
+

In this example, all sensors except for sensor.noshow will be published.

+
+
+ +
+
+ + + + + + + diff --git a/components/mychevy/index.html b/components/mychevy/index.html new file mode 100644 index 0000000000..05228ebe39 --- /dev/null +++ b/components/mychevy/index.html @@ -0,0 +1,494 @@ + + + + + + + + + MyChevy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MyChevy +

+
+
+

The MyChevy component communicates with the +my.chevrolet website using selenium to log +in as your user, and screen scrape the data provided. GM does not +make it easy to sign up for any official development program, so this +provides a workaround to get access to your data.

+

This component provides the following platforms:

+
    +
  • Binary sensors - if the car is plugged in
  • +
  • Sensors - such as Battery Level, Charge Mode, EST Range, Total +Distance Traveled
  • +
+

To use MyChevy in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+mychevy:
+  username: email
+  password: password
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The email address associated with your my.chevrolet account

+
+
password
+
+

(string)(Required)The password for your given my.chevrolet account

+
+
+
+

Installation

+

Because this uses selenium behind the scenes, installation is more +complicated than merely pip install. See the installation instructions +at https://github.com/sdague/mychevy.

+

Limitations

+

The architecture of the GM automotive networking imposes some +limitations on the functionality of the component.

+

The OnStar network link is very slow, and takes 1 - 3 minutes to get +information back from the car. As such the mychevy component only +polls every 30 minutes to not overwhelms that connection.

+

The OnStar network (or more specifically the gateway used by the +my.chevrolet website) appears to suffer more than most networks when +the car is a) in a garage, and b) it’s cold outside (like < 15 degrees +F). One of the provided sensors is a status sensor which indicates if +we got connectivity with the car on the last polling cycle or not.

+

The “API” for this is written by web scraping. As such, it only +currently is known to work if you have a Chevy Bolt EV, and only 1 +Chevy car connected to OnStar. Patches for extended support should go +to the https://github.com/sdague/mychevy project first, then +Home Assistant can be extended.

+
+
+ +
+
+ + + + + + + diff --git a/components/mycroft/index.html b/components/mycroft/index.html new file mode 100644 index 0000000000..e7a0028ae8 --- /dev/null +++ b/components/mycroft/index.html @@ -0,0 +1,188 @@ + + + + + + + + + Mycroft - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mycroft +

+
+
+

Mycroft is an open source voice assistant that allows you to send notifications and more to Mycroft from Home Assistant.

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

+

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.

+
+
+ +
+
+ + + + + + + diff --git a/components/mysensors/index.html b/components/mysensors/index.html new file mode 100644 index 0000000000..8e8e065fd9 --- /dev/null +++ b/components/mysensors/index.html @@ -0,0 +1,701 @@ + + + + + + + + + MySensors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors +

+
+
+

The MySensors project combines Arduino boards with NRF24L01 radio boards to build sensor networks. The component will automatically add all available devices to Home Assistant, after presentation is done.

+

Configuration

+

Integrate your Serial, Ethernet or MQTT Client MySensors Gateway by adding the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+mysensors:
+  gateways:
+    - 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
+    - device: '192.168.1.18'
+      persistence_file: 'path/mysensors3.json'
+      tcp_port: 5003
+    - device: mqtt
+      persistence_file: 'path/mysensors4.json'
+      topic_in_prefix: 'mygateway1-out'
+      topic_out_prefix: 'mygateway1-in'
+  optimistic: false
+  persistence: true
+  retain: true
+  version: '2.0'
+
+
+
+

Configuration Variables

+
+
gateways
+
+

(map)(Required)A list of gateways to set up.

+
+
+
+
device
+
+

(string)(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
+
+

(int)(Optional)Specifies the baud rate of the connected serial gateway.

+

Default value: 115200

+
+
tcp_port
+
+

(int)(Optional)Specifies the port of the connected TCP Ethernet gateway.

+

Default value: 5003

+
+
topic_in_prefix
+
+

(string)(Optional)Set the prefix of the MQTT topic for messages coming from the MySensors gateway in to Home Assistant.

+

Default value:

+
+
topic_out_prefix
+
+

(string)(Optional)Set the prefix of the MQTT topic for messages going from Home Assistant out to the MySensors gateway.

+

Default value:

+
+
nodes
+
+

(map)(Optional)A mapping of node ids to node settings, eg custom name.

+
+
+
+
name
+
+

(string)(Required)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].

+
+
+
+
+
+
debug
+
+

(int)(Optional)This option has been deprecated. Please remove this from your config if you have it included. Use the logger component to filter log messages on log level.

+
+
persistence
+
+

(int)(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 value: true

+
+
persistence_file
+
+

(string)(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’.

+

Default value: path/to/config/directory/mysensors.pickle

+
+
version
+
+

(string)(Optional)Specifies the MySensors protocol version to use. Supports 1.4, 1.5 and 2.0.

+

Default value: 1.4

+
+
optimistic
+
+

(int)(Optional)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.

+

Default value: false

+
+
retain
+
+

(int)(Optional)Enable or disable retain flag for published messages from Home Assistant when using the MQTT gateway.

+

Default value: true

+
+
+
+

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

+

If you are using an original Arduino as a serial gateway, the port will be named ttyACM*. The exact number can be determined with the command shown below.

+
$ ls /dev/ttyACM*
+
+
+

If using the MQTT gateway, you also need to have the MQTT component configured in Home Assistant. See below for a minimum MQTT configuration:

+
mqtt:
+  client_id: home-assistant-1
+
+
+

+The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway is supported. +

+

Presentation

+

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.
  2. +
  3. Configure the MySensors component in configuration.yaml.
  4. +
  5. Start hass.
  6. +
  7. Write and upload your MySensors sketch to the sensor. Make sure you: +
      +
    • Send sketch name.
    • +
    • Present the sensor’s S_TYPE.
    • +
    • Send at least one initial value per V_TYPE. In version 2.0 of MySensors this has to be done in the loop function. See below for an example in 2.0 of how to make sure the initial value has been received by the controller.
    • +
    +
  8. +
  9. Start the sensor.
  10. +
+
/*
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/relay
+ */
+
+#define MY_DEBUG
+#define MY_RADIO_NRF24
+#define MY_REPEATER_FEATURE
+#define MY_NODE_ID 1
+#include <SPI.h>
+#include <MySensors.h>
+#include <Bounce2.h>
+
+#define RELAY_PIN  5
+#define BUTTON_PIN  3
+#define CHILD_ID 1
+#define RELAY_ON 1
+#define RELAY_OFF 0
+
+Bounce debouncer = Bounce();
+bool state = false;
+bool initialValueSent = false;
+
+MyMessage msg(CHILD_ID, V_STATUS);
+
+void setup()
+{
+  pinMode(BUTTON_PIN, INPUT_PULLUP);
+  debouncer.attach(BUTTON_PIN);
+  debouncer.interval(10);
+
+  // Make sure relays are off when starting up
+  digitalWrite(RELAY_PIN, RELAY_OFF);
+  pinMode(RELAY_PIN, OUTPUT);
+}
+
+void presentation()  {
+  sendSketchInfo("Relay+button", "1.0");
+  present(CHILD_ID, S_BINARY);
+}
+
+void loop()
+{
+  if (!initialValueSent) {
+    Serial.println("Sending initial value");
+    send(msg.set(state?RELAY_ON:RELAY_OFF));
+    Serial.println("Requesting initial value from controller");
+    request(CHILD_ID, V_STATUS);
+    wait(2000, C_SET, V_STATUS);
+  }
+  if (debouncer.update()) {
+    if (debouncer.read()==LOW) {
+      state = !state;
+      // Send new state and request ack back
+      send(msg.set(state?RELAY_ON:RELAY_OFF), true);
+    }
+  }
+}
+
+void receive(const MyMessage &message) {
+  if (message.isAck()) {
+     Serial.println("This is an ack from gateway");
+  }
+
+  if (message.type == V_STATUS) {
+    if (!initialValueSent) {
+      Serial.println("Receiving initial value from controller");
+      initialValueSent = true;
+    }
+    // Change relay state
+    state = (bool)message.getInt();
+    digitalWrite(RELAY_PIN, state?RELAY_ON:RELAY_OFF);
+    send(msg.set(state?RELAY_ON:RELAY_OFF));
+  }
+}
+
+
+

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.

+

Message validation

+

Messages sent to or from Home Assistant from or to a MySensors device will be validated according to the MySensors serial API. 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.

+
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 of MySensors for more information.

+
+
+ +
+
+ + + + + + + diff --git a/components/namecheapdns/index.html b/components/namecheapdns/index.html new file mode 100644 index 0000000000..6dc9d0c35c --- /dev/null +++ b/components/namecheapdns/index.html @@ -0,0 +1,196 @@ + + + + + + + + + NamecheapDNS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NamecheapDNS +

+
+
+

With the namecheapdns component you can automatically update your dynamic DNS entry at namecheapdns.

+

+Namecheap only supports IPv4 addresses to update. +

+

To use the component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+namecheapdns:
+  domain: example.com
+  password: YOUR_PASSWORD
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Optional)The host part or “subdomain” part you want to update.

+
+
domain
+
+

(string)(Required)Your namecheap TLD (example.com).

+
+
password
+
+

(string)(Required)The namecheap “Dynamic DNS Password” you can find under the “Advanced DNS” tab.

+
+
+
+

See the How do I set up a Host for Dynamic DNS? for further instructions

+
+
+ +
+
+ + + + + + + diff --git a/components/neato/index.html b/components/neato/index.html new file mode 100644 index 0000000000..c554317c20 --- /dev/null +++ b/components/neato/index.html @@ -0,0 +1,470 @@ + + + + + + + + + Neato Robotics - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Neato Robotics +

+
+
+

The neato component allows you to control your Neato Botvac Connected.

+

To enable neato in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+neato:
+  username: USERNAME
+  password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): Username for the Neato account.
  • +
  • password (Required): Password for the Neato account.
  • +
+

+After the update to firmware 4.0 (which adds cleaning maps) there is also support for displaying the maps of the Botvac D3 Connected and Botvac D5 Connected robots. The start/stop functionality does not work. More information on how to update here: https://support.neatorobotics.com/hc/en-us/articles/115004320694-Software-Update-4-0-for-Neato-Botvac-Connected-D3-D5- +

+
+
+ +
+
+ + + + + + + diff --git a/components/nest/index.html b/components/nest/index.html new file mode 100644 index 0000000000..92c8f100c6 --- /dev/null +++ b/components/nest/index.html @@ -0,0 +1,533 @@ + + + + + + + + + Nest - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest +

+
+
+

The Nest component is the main component to integrate all Nest related platforms. To connect Nest, you will have to sign up for a developer account and get a client_id and client_secret.

+

Setting up developer account

+
    +
  1. Visit Nest Developers, and sign in. Create an account if you don’t have one already.
  2. +
  3. Fill in account details: +
      +
    • The “Company Information” can be anything. We recommend using your name.
    • +
    +
  4. +
  5. Submit changes
  6. +
  7. Click “Products” at top of page.
  8. +
  9. Click “Create New Product
  10. +
  11. Fill in details: +
      +
    • Product name must be unique. We recommend [email] - Home Assistant.
    • +
    • The description, users, URLs can all be anything you want.
    • +
    • Leave the “Redirect URI” Field blank
    • +
    +
  12. +
  13. 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.
    • +
    +
      +
    • Use “[Home Assistant] [Edit] [For Home Automation]” as the description as it is not super important.
    • +
    +
  14. +
  15. Click “Create Product”
  16. +
  17. 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.
  18. +
  19. 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.
  20. +
+

Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible.

+

Configuration

+
# Example configuration.yaml entry
+nest:
+  client_id: CLIENT_ID
+  client_secret: CLIENT_SECRET
+
+
+
# Example configuration.yaml entry to show only devices at your vacation and primary homes
+nest:
+  client_id: CLIENT_ID
+  client_secret: CLIENT_SECRET
+  structure:
+    - Vacation
+    - Primary
+
+
+

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

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.

+
# 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
+
+
+
# Example script to set home, structure specified
+set_nest_home:
+  sequence:
+    - service: nest.set_mode
+      data:
+        home_mode: home
+        structure:
+          - Building
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/netatmo/index.html b/components/netatmo/index.html new file mode 100644 index 0000000000..f64a427a5c --- /dev/null +++ b/components/netatmo/index.html @@ -0,0 +1,492 @@ + + + + + + + + + Netatmo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netatmo +

+
+
+

The netatmo component platform is the main component to integrate all Netatmo related platforms.

+

To enable the Netatmo component, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+netatmo:
+  api_key: YOUR_CLIENT_ID
+  secret_key: YOUR_CLIENT_SECRET
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Configuration variables:

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

Get API and Secret Key

+

To get your API credentials, you have to declare a new application in the Netatmo Developer Page. Sign in using your username and password from your regular Netatmo account. +Click on ‘Create an App’ at the top of the page.

+

+ +

+

You have to fill the form, but only two fields are required : Name and Description. It doesn’t really matter what you put into those. Just write something that make sense to you. To submit your new app, click on create at the bottom of the form.

+

+ +

+

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.

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/no_ip/index.html b/components/no_ip/index.html new file mode 100644 index 0000000000..bb18c87c4c --- /dev/null +++ b/components/no_ip/index.html @@ -0,0 +1,198 @@ + + + + + + + + + NO-IP.com - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NO-IP.com +

+
+
+

With the no_ip component you can keep your NO-IP.com record up to date.

+

To use the component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+no_ip:
+  domain: subdomain.domain.com
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+
+

Configuration Variables

+
+
domain
+
+

(string)(Required)Your FQDN.

+
+
username
+
+

(string)(Required)The generated username for this DDNS record.

+
+
password
+
+

(string)(Required)The generated password for this DDNS record.

+
+
timeout
+
+

(number)(Optional)Timeout (in seconds) for the API calls.

+

Default value: 10

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.apns/index.html b/components/notify.apns/index.html new file mode 100644 index 0000000000..645074fac6 --- /dev/null +++ b/components/notify.apns/index.html @@ -0,0 +1,367 @@ + + + + + + + + + APNS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ APNS +

+
+
+

The apns platform uses the Apple Push Notification service (APNS) to deliver notifications from Home Assistant.

+

To use the APNS service you will need an Apple developer account and you will need to create an app to receive push notifications. For more information, see the Apple developer documentation.

+
# Example configuration.yaml entry
+notify:
+  name: NOTIFIER_NAME
+  platform: apns
+  cert_file: cert_file.pem
+  topic: topic
+
+
+

Configuration variables:

+
    +
  • name (Required): The name of the notifier. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • cert_file (Required): The certificate to use to authenticate with the APNS service.
  • +
  • topic (Required): The app bundle ID specified in the certificate.
  • +
  • sandbox (Optional): If true notifications will be sent to the sandbox (test) notification service. Default false.
  • +
+

The APNS platform will register two services, notify.NOTIFIER_NAME and notify.apns_NOTIFIER_NAME.

+

notify.apns_NOTIFIER_NAME

+

This service will register device IDs with Home Assistant. In order to receive a notification a device must be registered. The app on the device can use this service to send an ID to Home Assistant during startup, the ID will be stored in [NOTIFIER_NAME]_apns.yaml.

+

See didRegisterForRemoteNotificationsWithDeviceToken in the Apple developer documentation for more information about how to obtain a device ID.

+

notify.NOTIFIER_NAME

+

This service will send messages to a registered device. The following parameters can be used:

+
    +
  • +

    message: The message to send.

    +
  • +
  • +

    target: The desired state of the device, only devices that match the state will receive messages. To enable state tracking a registered device must have a tracking_device_id attribute added to the [NOTIFIER_NAME]_apns.yaml file. If this ID matches a device in known_devices.yaml the device state will be tracked.

    +
  • +
  • +

    data:

    +
      +
    • badge: The number to display as the badge of the app icon.
    • +
    • sound: The name of a sound file in the app bundle or in the Library/Sounds folder.
    • +
    • category: Provide this key with a string value that represents the identifier property of the UIMutableUserNotificationCategory.
    • +
    • content_available: Provide this key with a value of 1 to indicate that new content is available.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.aws_lambda/index.html b/components/notify.aws_lambda/index.html new file mode 100644 index 0000000000..6e430f66f8 --- /dev/null +++ b/components/notify.aws_lambda/index.html @@ -0,0 +1,380 @@ + + + + + + + + + AWS Lambda - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AWS Lambda +

+
+
+

The aws_lambda notification platform enables invoking AWS Lambda functions.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+

Configuration

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: aws_lambda
+    aws_access_key_id: AWS_ACCESS_KEY_ID
+    aws_secret_access_key: AWS_SECRET_ACCESS_KEY
+    region_name: 'us-east-1'
+
+
+

Configuration variables:

+
    +
  • aws_access_key_id (Required if aws_secret_access_key is provided): Your AWS Access Key ID. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_secret_access_key and must not provide a profile_name.
  • +
  • aws_secret_access_key (Required if aws_access_key_id is provided): Your AWS Secret Access Key. For more information, please read the AWS General Reference regarding Security Credentials. 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 documentation section about credentials.
  • +
  • region_name (Required): The region identifier to connect to. The default is us-east-1.
  • +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • context (Optional): An optional dictionary you can provide to pass custom context through to the Lambda function. The context dictionary (if any) is combined with the same data available at the /api/config HTTP API route.
  • +
+

Usage

+

AWS Lambda is a notify platform and thus can be controlled by calling the notify service as described here. It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN (Amazon Resource Name) or a partial ARN. For more information, please see the boto3 docs.

+

The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda:

+
{
+  "title": "Test message!",
+  "target": "arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords",
+  "data": {
+    "test": "okay"
+  },
+  "message": "Hello world!"
+}
+
+
+

The context will look like this:

+
{
+  "hass": {
+    "components": ["recorder", "logger", "http", "logbook", "api", "frontend"],
+    "latitude": 44.1234,
+    "location_name": "Home",
+    "longitude": 5.5678,
+    "unit_system": "metric",
+    "time_zone": "Europe/Zurich",
+    "version": "0.20.0.dev0"
+  },
+  "custom": {
+    "two": "three",
+    "test": "one"
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.aws_sns/index.html b/components/notify.aws_sns/index.html new file mode 100644 index 0000000000..f6991eeddd --- /dev/null +++ b/components/notify.aws_sns/index.html @@ -0,0 +1,370 @@ + + + + + + + + + AWS SNS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AWS SNS +

+
+
+

The aws_sns notification platform enables publishing to an AWS SNS topic or application.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: aws_sns
+    aws_access_key_id: AWS_ACCESS_KEY_ID
+    aws_secret_access_key: AWS_SECRET_ACCESS_KEY
+    region_name: 'us-east-1'
+
+
+

Configuration variables:

+
    +
  • aws_access_key_id (Required if aws_secret_access_key is provided): Your AWS Access Key ID. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_secret_access_key and must not provide a profile_name.
  • +
  • aws_secret_access_key (Required if aws_access_key_id is provided): Your AWS Secret Access Key. For more information, please read the AWS General Reference regarding Security Credentials. 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 documentation section about credentials.
  • +
  • region_name (Required): The region identifier to connect to. The default is us-east-1.
  • +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
+

Usage

+

AWS SNS is a notify platform and thus can be controlled by calling the notify service as described here. It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN (Amazon Resource Name). For more information, please see the boto3 docs.

+

If one exists, the SNS Subject will be set to the title. All attributes from the payload except message will be sent as stringified message attributes.

+

Setting up SNS within AWS

+
    +
  • Log into your AWS console and under “Security and Identity”, select “Identity & Access Management”.
  • +
  • On the left hand side, select “Users” then click “Create New Users”. Enter a name here and then click “Create”.
  • +
  • You can either download the credentials or click the arrow to display them one time.
  • +
+

+ If you do not download them you will lose them and will have to recreate a new user. +

+
    +
  • Copy/Paste the two keys that you are provided here in your configuration.yaml file respectively.
  • +
  • On the left hand side of the screen go back to “Users” and select the user you just created. On the “Permissions” tab click the “Attach Policy” icon. Search for “SNS” and attach the policy “AmazonSNSFUullAccess”.
  • +
  • Back to the AWS Console you now need to find “SNS” and click in to that service. It is under the Mobile Services group.
  • +
  • On the left hand side, select “Topics” then “Create new topic”.
  • +
  • Choose a Topic Name and Display Name.
  • +
  • Now check the box next to the Topic you just created and under Actions, select “Subscribe to topic”.
  • +
  • In the box that pops up, select the Protocol = SMS and enter in the phone number next to “Endpoint” you wish to SMS. Now click “Create”.
  • +
  • Repeat for additional numbers.
  • +
  • Back in the “Users” section you will see a long alphanumeric line that starts with “arn:” and ends with the Topic Name you choose previously. This is what your “target” in Home Assistant will be.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.aws_sqs/index.html b/components/notify.aws_sqs/index.html new file mode 100644 index 0000000000..1468627788 --- /dev/null +++ b/components/notify.aws_sqs/index.html @@ -0,0 +1,360 @@ + + + + + + + + + AWS SQS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AWS SQS +

+
+
+

The aws_sqs notification platform enables publishing to an AWS SQS message queue.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: aws_sqs
+    aws_access_key_id: AWS_ACCESS_KEY_ID
+    aws_secret_access_key: AWS_SECRET_ACCESS_KEY
+    region_name: 'us-east-1'
+
+
+

Configuration variables:

+
    +
  • aws_access_key_id (Required if aws_secret_access_key is provided): Your AWS Access Key ID. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_secret_access_key and must not provide a profile_name.
  • +
  • aws_secret_access_key (Required if aws_access_key_id is provided): Your AWS Secret Access Key. For more information, please read the AWS General Reference regarding Security Credentials. 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 documentation section about credentials.
  • +
  • region_name (Required): The region identifier to connect to. The default is us-east-1.
  • +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
+

Usage

+

AWS SQS is a notify platform and thus can be controlled by calling the notify service as described here. It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the SQS docs.

+

The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload except message will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue:

+
{
+  "title": "Test message!",
+  "target": "http://sqs.us-east-1.amazonaws.com/123456789012/queue2",
+  "data": {
+    "test": "okay"
+  },
+  "message": "Hello world!"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.ciscospark/index.html b/components/notify.ciscospark/index.html new file mode 100644 index 0000000000..05663f2ba8 --- /dev/null +++ b/components/notify.ciscospark/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Cisco Spark - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Cisco Spark +

+
+
+

The ciscospark notification platform allows you to deliver notifications from Home Assistant to Cisco Spark.

+

To use this notification platform you need to get a developer token. To obtain a token visit Spark for Developers

+

At this time you also need to specify the Cisco Spark roomid. The roomid can also be found at Spark for Developers. Just look in the Documentation under Rooms.

+

In order to get notified for all new messages in the room you will need to create a bot. This will post the messages from the bot and mark them as new for you which will alert you. If you use your own personal token the messages are added to the room but no notification is triggered. +Once you have created the bot through the new App menu you will need to add the bot to the room that you are a member of as well. Now use the bot access token in your configuration below.

+

To enable the Cisco Spark notification in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: ciscospark
+    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.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.clickatell/index.html b/components/notify.clickatell/index.html new file mode 100644 index 0000000000..a02cdf07b1 --- /dev/null +++ b/components/notify.clickatell/index.html @@ -0,0 +1,355 @@ + + + + + + + + + Clickatell SMS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Clickatell SMS +

+
+
+

The clickatell platform uses Clickatell to deliver SMS notifications from Home Assistant.

+

Get your Clickatell API Credentials

+

Go to your Clickatell SMS Platform Portal section and create a new SMS integration. There are three screens of information required to create an integration. Please ensure the following:

+
    +
  1. Give the new Integration an identification name.
  2. +
  3. Ensure it is set for ‘production’ use.
  4. +
  5. Select ‘HTTP’ as your API type.
  6. +
  7. Ensure that the you select for the messaging type to be ‘one way messaging’.
  8. +
  9. Be aware of the international number format option as this impacts the structure of the phone numbers you provide.
  10. +
  11. Once you have completed entering your details an API key is generated. Copy the API key.
  12. +
+

To add Clickatell to your installation, add the following to your Home Assistant configuration.yaml file:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.clicksend/index.html b/components/notify.clicksend/index.html new file mode 100644 index 0000000000..91ab04eb76 --- /dev/null +++ b/components/notify.clicksend/index.html @@ -0,0 +1,368 @@ + + + + + + + + + ClickSend SMS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ClickSend SMS +

+
+
+

The clicksend platform uses ClickSend to deliver notifications from Home Assistant.

+

Get your ClickSend API Credentials

+

Go to your ClickSend Dashboard 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:

+
# Example configuration.yaml entry
+notify:
+  - platform: clicksend
+    name: ClickSend
+    username: CLICKSEND_USERNAME
+    api_key: CLICKSEND_API_KEY
+    recipient: PHONE_NO
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(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
+
+

(string)(Required)Your Clicksend username.

+
+
api_key
+
+

(string)(Required)Your Clicksend API Key.

+
+
recipient
+
+

(string)(Required)Your phone number. This is where you want to send your notification SMS messages, e.g., 09171234567.

+
+
sender
+
+

(string)(Optional)The name or number of the sender.

+

Default value: recipient

+
+
+
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.clicksend_tts/index.html b/components/notify.clicksend_tts/index.html new file mode 100644 index 0000000000..4ff2020dfc --- /dev/null +++ b/components/notify.clicksend_tts/index.html @@ -0,0 +1,349 @@ + + + + + + + + + ClickSend text-to-speech - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ClickSend text-to-speech +

+
+
+

The clicksend_tts platform uses ClickSend to deliver text-to-speech (TTS) notifications from Home Assistant.

+

Go to your ClickSend Dashboard 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:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.clicksendaudio/index.html b/components/notify.clicksendaudio/index.html new file mode 100644 index 0000000000..30c61608f7 --- /dev/null +++ b/components/notify.clicksendaudio/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/notify.command_line/index.html b/components/notify.command_line/index.html new file mode 100644 index 0000000000..3a20538b9d --- /dev/null +++ b/components/notify.command_line/index.html @@ -0,0 +1,360 @@ + + + + + + + + + Command line Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Command line Notify +

+
+
+

The command_line platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN.

+

To enable those notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: command_line
+    command: "espeak -vmb/mb-us1"
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • command (Required): The action to take.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.discord/index.html b/components/notify.discord/index.html new file mode 100644 index 0000000000..81c7dfdebb --- /dev/null +++ b/components/notify.discord/index.html @@ -0,0 +1,374 @@ + + + + + + + + + Discord - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Discord +

+
+
+

The Discord service 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 and create a new application. Once the application is ready, create a bot 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.

+

To use Discord notifications, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: discord
+    token: A1aB2b.C3cD4d-E5eF6f
+
+
+

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

Setting up the bot

+

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.

+

+ +

+

Now use the Discord Authorization page with the Client ID of your bot.

+

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.

+

Example service payload

+
{
+  "message": "A message from Home Assistant",
+  "target": [
+    "1234567890",
+    "0987654321"
+  ]
+}
+
+
+

Notes

+

For more information about creating and authorizing bots, visit the OAuth2 information page

+

To use notifications effectively, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.ecobee/index.html b/components/notify.ecobee/index.html new file mode 100644 index 0000000000..582f9a5958 --- /dev/null +++ b/components/notify.ecobee/index.html @@ -0,0 +1,361 @@ + + + + + + + + + Ecobee Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ecobee Notify +

+
+
+

To get your Ecobee notifications working with Home Assistant, you must first have the main Ecobee component loaded and running. Once you have that configured, you can setup this component to send messages to your Ecobee device.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: ecobee
+
+
+

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

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.facebook/index.html b/components/notify.facebook/index.html new file mode 100644 index 0000000000..e1c6983dd9 --- /dev/null +++ b/components/notify.facebook/index.html @@ -0,0 +1,424 @@ + + + + + + + + + Facebook Messenger - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Facebook Messenger +

+
+
+

The facebook notification platform enables sending notifications via Facebook Messenger, powered by Facebook.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: facebook
+    page_access_token: FACEBOOK_PAGE_ACCESS_TOKEN
+
+
+

Configuration variables:

+
    +
  • page_access_token (Required): Access token for your Facebook page. Checkout Facebook Messenger Platform 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.
  • +
+

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 for this service. You can control it by calling the notify service as described here. It will send a message on messenger to user specified by target on behalf of your page. See the 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 about the phone number.

+
# Example automation notification entry
+automation:
+  - alias: Evening Greeting
+    trigger:
+      platform: sun
+      event: sunset
+    action:
+      service: notify.facebook
+      data:
+        message: 'Good Evening'
+        target:
+          - '+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 specific 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
+
+$access_token = "";
+$verify_token = "";
+
+if (isset($_REQUEST['hub_challenge'])) {
+    $challenge        = $_REQUEST['hub_challenge'];
+    $hub_verify_token = $_REQUEST['hub_verify_token'];
+
+    if ($hub_verify_token === $verify_token) {
+        echo $challenge;
+    }
+}
+
+$input   = json_decode(file_get_contents('php://input'), true);
+$sender  = $input['entry'][0]['messaging'][0]['sender']['id'];
+$message = $input['entry'][0]['messaging'][0]['message']['text'];
+
+if (preg_match('/get my id/', strtolower($message))) {
+    $url      = 'https://graph.facebook.com/v2.10/me/messages?access_token=' . $access_token;
+    $ch       = curl_init($url);
+    $jsonData = '{
+        "recipient":{
+            "id":"' . $sender . '"
+        },
+        "message":{
+            "text":"Your ID: ' . $sender . '"
+        }
+      }';
+
+    $jsonDataEncoded = $jsonData;
+    curl_setopt($ch, CURLOPT_POST, 1);
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
+    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
+
+    if (!empty($input['entry'][0]['messaging'][0]['message'])) {
+        $result = curl_exec($ch);
+    }
+}
+
+
+
+

Rich messages

+

You could also send rich messing (cards, buttons, images, videos, etc). Info to which types or messages and how to build them.

+
# Example script with a notification entry with rich message
+
+script:
+  test_fb_notification:
+    sequence:
+      - service: notify.facebook
+        data:
+          message: Some text before the quick replies
+          target: 0034643123212
+          data:
+            quick_replies:
+              - content_type: text
+                title: Red
+                payload: DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED
+              - content_type: text
+                title: Blue
+                payload: DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_BLUE
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.file/index.html b/components/notify.file/index.html new file mode 100644 index 0000000000..f0c1ff8ea1 --- /dev/null +++ b/components/notify.file/index.html @@ -0,0 +1,352 @@ + + + + + + + + + File - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ File +

+
+
+

The file platform allows you to store notifications from Home Assistant as a file.

+

To enable file notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: file
+    filename: FILENAME
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • filename (Required): Name of the file to use. The file will be created if it doesn’t exist and saved in your configuration folder.
  • +
  • timestamp (Optional): Setting timestamp to True adds a timestamp to every entry.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.free_mobile/index.html b/components/notify.free_mobile/index.html new file mode 100644 index 0000000000..9f0c34d360 --- /dev/null +++ b/components/notify.free_mobile/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Free Mobile - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Free Mobile +

+
+
+

The free_mobile platform is using the French mobile operator Free Mobile to send SMS to your own cell phone.

+

Before doing anything, you have to activate the SMS API option in your Free Mobile account (In “Gérer mon compte -> Mes Options”). Activating this option will automatically generate a token which is required in your configuration.

+

+ +

+

This API only send classic SMS and only on the cell phone of the account owner. So you only have to provide a text message in your payload.

+

+If you disable and re-enable the SMS API option, please be sure to update your token in your configuration. +

+

To enable SMS notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: free_mobile
+    username: YOUR_ACCOUNT_ID
+    access_token: TOKEN
+
+
+

Configuration variables:

+
    +
  • username (Required): This is the id given by FreeMobile to access to your online account.
  • +
  • access_token (Required): You can get this token by activating the SMS API in your online account.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.gntp/index.html b/components/notify.gntp/index.html new file mode 100644 index 0000000000..9ef37b9747 --- /dev/null +++ b/components/notify.gntp/index.html @@ -0,0 +1,347 @@ + + + + + + + + + GNTP (Growl) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ GNTP (Growl) +

+
+
+

GNTP is a specification for sending and receiving notifications between computers. The most well known server implementations are Growl for Mac and Growl for Windows.

+

To use GNTP notifications, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFER_NAME
+    platform: gntp
+
+
+

GNTP will attempt to connect to a local server running on port 23053 if no hostname is provided.

+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • app_name (Optional): The application name that will be displayed on every notification and will be registered with the server.
  • +
  • app_icon (Optional): The icon that will be displayed on every notification. You can provide a HTTP URL or a file:// URL. File URLs only work if Home Assistant and the GNTP server are running on the same machine. If no app_icon is set a local copy of the Home Assistant logo will be used. If you choose to use a HTTP URL please make the maximum image size 150 px by 150 px as Growl for Mac will sometimes timeout when registering.
  • +
  • hostname (Optional): The hostname or IP address of the GNTP server to contact.
  • +
  • password (Optional): The password to authenticate to the GNTP server with.
  • +
  • port (Optional): The port that the GNTP server runs on. The specification states that servers should not allow users to use any port other than 23053 but port is provided here just in case.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.group/index.html b/components/notify.group/index.html new file mode 100644 index 0000000000..2f09f5b365 --- /dev/null +++ b/components/notify.group/index.html @@ -0,0 +1,362 @@ + + + + + + + + + Notify Group - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Notify Group +

+
+
+

The group notification platform allows you to combine multiple notify platforms into a single service.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: group
+    services:
+      - service: html5
+        data:
+          target: "macbook"
+      - service: html5_nexus
+
+
+

Configuration variables:

+
    +
  • name (Required): Setting the parameter name sets the name of the group.
  • +
  • services (Required): A list of all the services to be included in the group. +
      +
    • service (Required): The service part of an entity ID, i.e. if you use notify.html5 normally, just put html5. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification services!
    • +
    • data (Optional): A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as data, message, target, title.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.hipchat/index.html b/components/notify.hipchat/index.html new file mode 100644 index 0000000000..013e55779e --- /dev/null +++ b/components/notify.hipchat/index.html @@ -0,0 +1,383 @@ + + + + + + + + + HipChat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HipChat +

+
+
+

The hipchat platform allows you to send notifications from Home Assistant to HipChat.

+

You need to obtain a HipChat API token to be able to send notifications.

+

To enable the HipChat notification in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: hipchat
+    token: ABCDEFGHJKLMNOPQRSTUVXYZ
+    room: 1234567
+
+
+

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): The HipChat API token to use for sending HipChat notifications.
  • +
  • room (Required): The default room to post to if no room is explicitly specified when sending the notification.
  • +
  • color (Optional): Setting color will override the default color for the notification. By default not setting this will post to HipChat using the default color yellow. Valid options are ‘yellow’, ‘green’, ‘red’, ‘purple’, ‘gray’, ‘random’.
  • +
  • notify (Optional): Setting notify will override the default notify (blink application icon, chime, or otherwise call attention) setting for the notification. By default this is ‘false’. Valid options are ‘true’ and ‘false’.
  • +
  • format (Optional): Setting format will override the default message format. Default is ‘text’. Valid options are ‘text’ and ‘html’.
  • +
  • host (Optional): Setting the host will override the default HipChat server host. Default is ‘https://api.hipchat.com/’.
  • +
+

HipChat service data

+

The following attributes can be placed data for extended functionality.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
roomyes(int) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml.
coloryes(str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml.
notifyyes(bool) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml.
formatyes(str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml.
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.html5/index.html b/components/notify.html5/index.html new file mode 100644 index 0000000000..fa8be2a4ba --- /dev/null +++ b/components/notify.html5/index.html @@ -0,0 +1,562 @@ + + + + + + + + + Push Notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Push Notifications +

+
+
+

The html5 notification platform enables you to receive push notifications to Chrome or Firefox, no matter where you are in the world. html5 also supports Chrome and Firefox on Android, which enables native-app-like integrations without actually needing a native app.

+

+HTML5 push notifications do not work on iOS. +

+

To enable this platform, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: html5
+    gcm_api_key: 'gcm-server-key'
+    gcm_sender_id: 'gcm-sender-id'
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • gcm_api_key (Required if pushing to Chrome): The API Server key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome.
  • +
  • gcm_sender_id (Required if pushing to Chrome): The sender ID provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome.
  • +
+

Getting ready for Chrome

+
    +
  1. Make sure you can access your Home Assistant installation from outside your network over https (see docs).
  2. +
  3. Create a new project at https://console.cloud.google.com/home/dashboard.
  4. +
  5. Go to https://console.cloud.google.com/apis/credentials/domainverification and verify your domain via Google Webmaster Central / Search Console - instructions.
  6. +
  7. With the domain verified, go to https://console.firebase.google.com, select import Google project, and select the project you created.
  8. +
  9. Then, click the cogwheel on top left and select “Project settings”.
  10. +
  11. Select ‘Cloud Messaging’ tab, listed beneath Project Credentials will be your 152 character ‘Server Key’ and 12 digit ID ‘Sender ID’ you need for configuring this component.
  12. +
+

Verify your domain

+

Follow these steps to verify domain ownership with Google Webmaster Central / Search Console:

+
    +
  1. Enter your domain and add ‘/local’ at the end, ie. https://example.com:8123/local
  2. +
  3. Select HTML file verification and download the google*.html file.
  4. +
  5. Create a directory named “www” in your Home Assistant configuration directory (/config share from Samba add-on).
  6. +
  7. Place the downloaded google*.html file in the “www” directory.
  8. +
  9. RESTART Home Assistant - this is important!
  10. +
  11. Verify the file can be accessed in the browser, ie. https://example.com:8123/local/google123456789.html (change filename) - you should a plain text message saying “google-site-verification: …” - if you see “404: Not Found” or something else, retry the above steps.
  12. +
  13. Go back to Google Webmaster Central / Search Console and proceed with the verification.
  14. +
+

Requirements

+

The html5 platform can only function if all of the following requirements are met:

+
    +
  • You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android.
  • +
  • Your Home Assistant instance is exposed to the world.
  • +
  • If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards.
  • +
  • If you don’t run Hass.io: pywebpush must be installed. libffi-dev, libpython-dev, and libssl-dev must be installed prior to pywebpush (i.e. pywebpush probably won’t automatically install).
  • +
  • You have configured SSL for your Home Assistant. It doesn’t need to be configured in Home Assistant though, i.e. you can be running NGINX in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed).
  • +
  • You are willing to accept the notification permission in your browser.
  • +
+

Setting up

+

Assuming you have already added the platform to your configuration:

+
    +
  1. Open Home Assistant in Chrome or Firefox.
  2. +
  3. Assuming you have met all the requirements above, you should see a new slider for Push Notifications through the sidebar Configuration > General.
  4. +
  5. Slide it to the on position.
  6. +
  7. Within a few seconds you should be prompted to allow notifications from Home Assistant.
  8. +
  9. Assuming you accept, that’s all there is to it!
  10. +
  11. (Optional, but highly recommended!) Open the html5_push_registrations.conf file in your configuration directory. You will see a new entry for the browser you just added. Rename it from unnamed device to a name of your choice, which will make it easier to identify later. Do not change anything else in this file! You need to restart Home Assistant after making any changes to the file.
  12. +
+

Usage

+

The html5 platform accepts a standard notify payload. However, there are also some special features built in which you can control in the payload.

+

Any JSON examples below can be converted to YAML for automations.

+

Actions

+

Chrome supports notification actions, which are configurable buttons that arrive with the notification and can cause actions on Home Assistant to happen when pressed. You can send up to 2 actions.

+
{
+  "message": "Anne has arrived home",
+  "data": {
+    "actions": [
+      {
+        "action": "open",
+        "icon": "/static/icons/favicon-192x192.png",
+        "title": "Open Home Assistant"
+      },
+      {
+        "action": "open_door",
+        "title": "Open door"
+      }
+    ]
+  }
+}
+
+
+

Data

+

Any parameters that you pass in the notify payload that aren’t valid for use in the HTML5 notification (actions, badge, body, dir, icon, image, lang, renotify, requireInteraction, tag, timestamp, vibrate) will be sent back to you in the callback events.

+
{
+  "title": "Front door",
+  "message": "The front door is open",
+  "data": {
+    "my-custom-parameter": "front-door-open"
+  }
+}
+
+
+

Tag

+

By default, every notification sent has a randomly generated UUID (v4) set as its tag or unique identifier. The tag is unique to the notification, not to a specific target. If you pass your own tag in the notify payload you can replace the notification by sending another notification with the same tag. You can provide a tag like so:

+
{
+  "title": "Front door",
+  "message": "The front door is open",
+  "data": {
+    "tag": "front-door-notification"
+  }
+}
+
+
+

Example of adding a tag to your notification. This won’t create new notification if there already exists one with the same tag.

+
  - alias: Push/update notification of sensor state with tag
+    trigger:
+      - platform: state
+        entity_id: sensor.sensor
+    action:
+      service: notify.html5
+      data_template:
+        message: "Last known sensor state is {{ states('sensor.sensor') }}."
+      data:
+        data:
+          tag: 'notification-about-sensor'
+
+
+

Targets

+

If you do not provide a target parameter in the notify payload a notification will be sent to all registered targets as listed in html5_push_registrations.conf. You can provide a target parameter like so:

+
{
+  "title": "Front door",
+  "message": "The front door is open",
+  "target": "unnamed device"
+}
+
+
+

target can also be a string array of targets like so:

+
{
+  "title": "Front door",
+  "message": "The front door is open",
+  "target": ["unnamed device", "unnamed device 2"]
+}
+
+
+

Overrides

+

You can pass any of the parameters listed here in the data dictionary. Please note, Chrome specifies that the maximum size for an icon is 320px by 320px, the maximum badge size is 96px by 96px and the maximum icon size for an action button is 128px by 128px.

+

URL

+

You can provide a URL to open when the notification is clicked by putting url in the data dictionary like so:

+
{
+  "title": "Front door",
+  "message": "The front door is open",
+  "data": {
+    "url": "https://google.com"
+  }
+}
+
+
+

If no URL or actions are provided, interacting with a notification will open your Home Assistant in the browser. You can use relative URLs to refer to Home Assistant, i.e. /map would turn into https://192.168.1.2:8123/map.

+

Automating notification events

+

During the lifespan of a single push notification, Home Assistant will emit a few different events to the event bus which you can use to write automations against.

+

Common event payload parameters are:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription
actionThe action key that you set when sending the notification of the action clicked. Only appears in the clicked event.
dataThe data dictionary you originally passed in the notify payload, minus any parameters that were added to the HTML5 notification (actions, badge, body, dir, icon, image, lang, renotify, requireInteraction, tag, timestamp, vibrate).
tagThe unique identifier of the notification. Can be overridden when sending a notification to allow for replacing existing notifications.
targetThe target that this notification callback describes.
typeThe type of event callback received. Can be received, clicked or closed.
+

You can use the target parameter to write automations against a single target. For more granularity, use action and target together to write automations which will do specific things based on what target clicked an action.

+

received event

+

You will receive an event named html5_notification.received when the notification is received on the device.

+
- alias: HTML5 push notification received and displayed on device
+  trigger:
+    platform: event
+    event_type: html5_notification.received
+
+
+

clicked event

+

You will receive an event named html5_notification.clicked when the notification or a notification action button is clicked. The action button clicked is available as action in the event_data.

+
- alias: HTML5 push notification clicked
+  trigger:
+    platform: event
+    event_type: html5_notification.clicked
+
+
+

or

+
- alias: HTML5 push notification action button clicked
+  trigger:
+    platform: event
+    event_type: html5_notification.clicked
+    event_data:
+      action: open_door
+
+
+

closed event

+

You will receive an event named html5_notification.closed when the notification is closed.

+
- alias: HTML5 push notification clicked
+  trigger:
+    platform: event
+    event_type: html5_notification.closed
+
+
+

Making notifications work with NGINX proxy

+

If you use NGINX as a proxy with authentication in front of your Home Assistant instance, you may have trouble with receiving events back to Home Assistant. It’s because of authentication token that cannot be passed through the proxy.

+

To solve the issue put additional location into your nginx site’s configuration:

+
location /api/notify.html5/callback {
+    if ($http_authorization = "") { return 403; }
+    allow all;
+    proxy_pass http://localhost:8123;
+    proxy_set_header Host $host;
+    proxy_redirect http:// https://;
+}
+
+
+

This rule check if request have Authorization HTTP header and bypass the htpasswd (if you use one).

+

If you still have the problem, even with mentioned rule, try to add this code:

+
    proxy_set_header Authorization $http_authorization;
+    proxy_pass_header Authorization;
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.instapush/index.html b/components/notify.instapush/index.html new file mode 100644 index 0000000000..f2bdaac357 --- /dev/null +++ b/components/notify.instapush/index.html @@ -0,0 +1,373 @@ + + + + + + + + + Instapush - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Instapush +

+
+
+

The instapush platform uses Instapush to delivery notifications from Home Assistant to your Android or iOS device.

+

The Instapush Getting Started page will guide through the process of creating the required items.

+

To add Instapush to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: instapush
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    app_secret: ABCDEFGHJKLMNOPQRSTUVXYZ
+    event: ABCDEFGHJKLMNOPQRSTUVXYZ
+    tracker: 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): Your API key for Instapush.
  • +
  • app_secret (Required): The secret for your created application.
  • +
  • event (Required): The event to push to.
  • +
  • tracker (Required): The name of tracker inside Instapush.
  • +
+

To retrieve the needed values for existing settings, log into your account at https://instapush.im and go to your Dashboard. Then click the APPS tab, choose an app, and check the Basic Info section. The Application ID is the api_key and app_secret is the Application Secret.

+

Assuming that your setup looks look in the image below…

+

+ +

+

…then your entry for the configuration.yaml file needs to be like this sample.

+
notify:
+  platform: instapush
+  [...]
+  event: msg
+  tracker: state
+
+
+

It’s easy to test your Instapush setup outside of Home Assistant. Assuming you have an event notification and a tracker home-assistant, just fire a request and check the Instapush dashboard for a new entry.

+
curl -X POST \
+    -H "x-instapush-appid: YOUR_APP_KEY" \
+    -H "x-instapush-appsecret: YOUR_APP_SECRET" \
+    -H "Content-Type: application/json" \
+      -d '{"event":"notification","trackers":{"home-assistant":"Switch 1"}}' \
+    https://api.instapush.im/v1/post
+
+
+

For further details, please check the API.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.joaoapps_join/index.html b/components/notify.joaoapps_join/index.html new file mode 100644 index 0000000000..31adba2216 --- /dev/null +++ b/components/notify.joaoapps_join/index.html @@ -0,0 +1,337 @@ + + + + + + + + + Join Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/components/notify.knx/index.html b/components/notify.knx/index.html new file mode 100644 index 0000000000..7f51b8bdf4 --- /dev/null +++ b/components/notify.knx/index.html @@ -0,0 +1,373 @@ + + + + + + + + + KNX Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Notify +

+
+
+

The knx notify platform allows you to send notifications to KNX devices.

+

The knx component must be configured correctly, see KNX Component.

+

To use your KNX switch in your installation, add the following lines to your configuration.yaml file:

+
notify:
+  - platform: knx
+    name: Alarm
+    address: '5/1/10'
+
+
+
    +
  • name (Optional): A name for this device used within Home Assistant.
  • +
  • address: KNX group address of the notification
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.kodi/index.html b/components/notify.kodi/index.html new file mode 100644 index 0000000000..09d7b65d4f --- /dev/null +++ b/components/notify.kodi/index.html @@ -0,0 +1,456 @@ + + + + + + + + + Kodi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Kodi +

+
+
+

The Kodi platform allows you to send messages to your Kodi multimedia system from Home Assistant.

+

To add Kodi to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - platform: kodi
+    name: NOTIFIER_NAME
+    host: 192.168.0.123
+
+
+
    +
  • name (Optional): Name displayed in the frontend. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • host (Required): The host name or address of the device that is running Kodi.
  • +
  • port (Optional): The HTTP port number. Defaults to 8080.
  • +
  • proxy_ssl (Optional): Connect to kodi with HTTPS. 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.
  • +
+

script.yaml example

+
kodi_notification:
+  sequence:
+  - service: notify.NOTIFIER_NAME
+    data:
+      title: "Home Assistant"
+      message: "Message to KODI from Home Assistant!"
+      data:
+        displaytime: 20000
+        icon: "warning"
+
+
+

Message variables

+
    +
  • title (Optional): Title that is displayed on the message.
  • +
  • message (Required): Message to be displayed.
  • +
  • data (Optional) +
      +
    • icon (Optional): Kodi comes with 3 default icons: info, warning and error, an URL to an image is also valid. Defaults to info
    • +
    • displaytime (Optional): Length in milliseconds the message stays on screen. Defaults to 10000 ms
    • +
    +
  • +
+

To use notifications, please see the getting started with automation page.

+

Services

+

Media control services

+

Available services: kodi_add_to_playlist, kodi_set_shuffle

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. Defaults to all.
+

Service media_player/kodi_set_shuffle

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. It must be of type kodi.
shuffle_on noTrue/false for shuffle on/off
+

Service media_player/kodi_add_to_playlist

+

Add a song or an entire album to the default playlist (i.e. playlist id 0).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesTarget a specific media player. It must be of type kodi.
media_type noeither SONG or ALBUM
media_idyesid of the media as defined in kodi
media_nameyesname of the media, HA will search for the media with name closer to this. If ALL add all albums, if artist_name is provided adds all albums of that artist.
artist_nameyesname of the artist, HA will search for the artist with name closer to this.
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.lametric/index.html b/components/notify.lametric/index.html new file mode 100644 index 0000000000..364c2da74b --- /dev/null +++ b/components/notify.lametric/index.html @@ -0,0 +1,397 @@ + + + + + + + + + LaMetric Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LaMetric Notify +

+
+
+

The lametric notification platform allows to send notification to a LaMetric device. It needs the LaMetric platform to be configured first.

+

To enable LaMetric notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  name: NOTIFIER_NAME
+  platform: lametric
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME.

+

Default value: notify

+
+
lifetime
+
+

(int)(Optional)Defines how long the message remains in LaMetric notification queue (in seconds).

+

Default value: 10

+
+
icon
+
+

(string)(Optional)An icon or animation.

+
+
cycles
+
+

(int)(Optional)Defines how often the notification is displayed.

+

Default value: 1

+
+
+
+

Check out the list of all icons at https://developer.lametric.com/icons. Note that icons always begin with “i” while animations begin with “a”. This is part of the name, you can’t just use the number!

+

Examples

+

Full configuration example

+
# Example configuration.yaml entry
+notify:
+  name: NOTIFIER_NAME
+  platform: lametric
+  lifetime: 20
+  icon: a7956
+  cycles: 3
+
+
+

Changing sounds and icons

+

To add a notification sound or an icon override, it has to be done via service data.

+
- alias: "Send notification on arrival at school"
+  trigger:
+    platform: state
+    entity_id: device_tracker.son_mobile
+    from: 'not_home'
+    to: 'school'
+  action:
+    service: notify.lametric
+    data:
+      message: "Son has arrived at school!"
+      data:
+        sound: 'notification'
+        icon: 'i51'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.lannouncer/index.html b/components/notify.lannouncer/index.html new file mode 100644 index 0000000000..805aca572a --- /dev/null +++ b/components/notify.lannouncer/index.html @@ -0,0 +1,377 @@ + + + + + + + + + Lannouncer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lannouncer +

+
+
+

The lannouncer notification platform allows you to play spoken messages (TTS) or sounds on an Android device running Lannouncer. This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications.

+

To enable Lannouncer notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: lannouncer
+    host: HOSTNAME_OR_IP
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • host (Required): The hostname or IP-address of the Android device that is running Lannouncer.
  • +
  • port (Optional): The port on which Lannouncer is running. By default this is 1035.
  • +
+

Installation

+

You need to install the Lannouncer app and enable the Network (TCP) Listener and Auto-Start Network Listener. You can disable the GCM (Google Cloud) and WAN Messaging and SMS Listener since this component doesn’t use them.

+

Lannouncer uses the default Android TTS voice. You can tweak that in the Android configuration, or you can install a different TTS engine from the Play Store. You might want to raise the volume in the app settings since that depends on the actual hardware device.

+

More information can be found here.

+

Sending messages

+

Lannouncer supports two types of messages.

+

Spoken messages is the default method (speak). You just invoke the notify service with the following json and the device will speak out the specified message.

+
{
+  "message": "I'm sorry, I cannot do that Dave."
+}
+
+
+

The second method is to play notifications (alarm). There are 4 build-in sounds (chime, doorbell, alarm and siren).

+
{
+  "message": "chime",
+  "data": {
+    "method": "alarm"
+  }
+}
+
+
+

You can also request to play a configured additional soundfiles (FILE1, FILE2, FILE3, FILE4 or FILE5). You can configure this file in the app settings.

+
{
+  "message": "FILE1",
+  "data": {
+    "method": "alarm"
+  }
+}
+
+
+

+ The free version only supports one additional soundfile. +

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.llamalab_automate/index.html b/components/notify.llamalab_automate/index.html new file mode 100644 index 0000000000..6fe1820e2c --- /dev/null +++ b/components/notify.llamalab_automate/index.html @@ -0,0 +1,359 @@ + + + + + + + + + LlamaLab Automate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LlamaLab Automate +

+
+
+

The llamalab_automate platform uses Googles Cloud Messaging Services to push messages from Home Assistant to your Android device running the LlamaLab Automate app. This can serve as an alternative to Tasker + AutoRemote.

+

Go to https://llamalab.com/automate/cloud/ and create a new API key/secret.

+

To add Automate to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: llamalab_automate
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    to: example@gmail.com
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • api_key (Required): Enter the API key for Automate.
  • +
  • to (Required): E-Mail address the Automate-Fiber is configured for.
  • +
  • device (Optional): Name of the target device to receive the messages.
  • +
+

Receiving cloud messages in Automate:

+
    +
  1. Add a new flow
  2. +
  3. Insert block “Messaging -> Cloud message receive”
  4. +
  5. Insert block “Interface -> Toast show”
  6. +
  7. Connect OK from Flow beginning to IN of Cloud receive
  8. +
  9. Connect OK from Cloud receive to Toast show
  10. +
  11. Connect OK form Toast show to IN of Cloud receive
  12. +
  13. Tap Cloud receive and select the E-Mail account as setup in your configuration
  14. +
  15. Assign a variable name for the Payload
  16. +
  17. Tap Toast show and set the message value to the variable you’ve specified
  18. +
+

If you have multiple devices paired to one Google Mail account and want to control each instance of Automate individually, you can set the notifier to target a specific device. To determine your devices name, add a Cloud Message send block to your flow, tap it and scroll all the way to the bottom. Device names are case sensitive.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.mailgun/index.html b/components/notify.mailgun/index.html new file mode 100644 index 0000000000..5b757ff6d6 --- /dev/null +++ b/components/notify.mailgun/index.html @@ -0,0 +1,376 @@ + + + + + + + + + Mailgun Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mailgun Notify +

+
+
+

The Mailgun notification service allows you to send emails via Mailgun’s REST API. It requires the Mailgun component to be set up.

+

Sample configuration

+
# Example configuration.yaml entry
+mailgun:
+  domain: mg.example.com
+  api_key: token-XXXXXXXXX
+  sandbox: False
+
+notify:
+  - name: mailgun
+    platform: mailgun
+    recipient: me@example.com
+
+
+

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.
  • +
  • token (Required): This is the API token that has been generated in your Mailgun account.
  • +
  • recipient (Required): The email address of the recipient.
  • +
  • sender (Optional): The sender’s email address. Defaults to hass@DOMAIN, where DOMAIN is outgoint mail domain, as defined by the domain and sanbox configuration entries.
  • +
+

Example automation

+

The following automation reacts to an event by sending out an email with two attachments.

+
# Example automation using Mailgun notifications
+automation:
+  trigger:
+    platform: event
+    event_type: SPECIAL_EVENT
+  action:
+    service: notify.mailgun
+    data:
+      title: "Something special has happened"
+      message: "This a test message from Home Assistant"
+      data:
+        images:
+          - /home/pi/pic_test1.png
+          - /home/pi/pic_test2.png
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.matrix/index.html b/components/notify.matrix/index.html new file mode 100644 index 0000000000..aeaa617abf --- /dev/null +++ b/components/notify.matrix/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Matrix - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Matrix +

+
+
+

The matrix platform allows you to deliver notifications from Home Assistant to a Matrix room. Rooms can be both direct as well as group chats.

+

To enable Matrix notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: matrix
+    homeserver: HOMESERVER
+    username: USERNAME
+    password: PASSWORD
+    default_room: ROOM_ID_OR_ALIAS
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • homeserver (Required): The base URL of the homeserver, where the notifier account is registered (e.g. https://matrix.org).
  • +
  • username (Required): The username of the notifying Matrix account.
  • +
  • password (Required): The password for the given Matrix account.
  • +
  • default_room (Required): The room all messages will be sent to, when no other target is given.
  • +
  • verify_ssl (Optional): Verify the homeservers certificate. Defaults to true.
  • +
+

The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form "!<randomid>:homeserver.tld", but can also be allocated aliases like "#roomname:homeserver.tld". Make sure to use quotes around the room id or alias to escape special characters (!, and #) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.message_bird/index.html b/components/notify.message_bird/index.html new file mode 100644 index 0000000000..2ec0a10b1f --- /dev/null +++ b/components/notify.message_bird/index.html @@ -0,0 +1,352 @@ + + + + + + + + + MessageBird - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MessageBird +

+
+
+

The MessageBird notification platform sends notifications as SMS messages using MessageBird to your mobile phone.

+

To enable MessageBird notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: message_bird
+    api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Enter the API key for MessageBird. Go to https://www.messagebird.com/ to retrieve your API key.
  • +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • sender (Optional): Setting the optional parameter sender. This will be the sender of the SMS. It may be either a telephone number (e.g. +4915112345678) or a text with a maximum length of 11 characters. Defaults to HA.
  • +
+

Usage

+

MessageBird is a notify platform and thus can be controlled by calling the notify service as described here. It will send a notification to the specified mobile phone number(s).

+

Example service payload

+
{
+  "message": "A message for many people",
+  "target": [ "+49123456789", "+43123456789" ]
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.mqtt/index.html b/components/notify.mqtt/index.html new file mode 100644 index 0000000000..6dec538852 --- /dev/null +++ b/components/notify.mqtt/index.html @@ -0,0 +1,387 @@ + + + + + + + + + MQTT Notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Notifications +

+
+
+

The MQTT notification support is different than the other notification 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.

+
{"payload": "Test message from HA", "topic": "home/notification", "qos": 0, "retain": 0}
+
+
+

+ +

+

Using the REST API to send a message to a given topic.

+
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       -d '{"payload": "Test message from HA", "topic": "home/notification"}' \
+       http://IP_ADDRESS:8123/api/services/mqtt/publish
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.mycroft/index.html b/components/notify.mycroft/index.html new file mode 100644 index 0000000000..2ab16d326b --- /dev/null +++ b/components/notify.mycroft/index.html @@ -0,0 +1,337 @@ + + + + + + + + + Mycroft AI - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/components/notify.mysensors/index.html b/components/notify.mysensors/index.html new file mode 100644 index 0000000000..da6e63bf05 --- /dev/null +++ b/components/notify.mysensors/index.html @@ -0,0 +1,444 @@ + + + + + + + + + MySensors Notify - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Notify +

+
+
+

Integrates MySensors notifications into Home Assistant. See the main component for configuration instructions.

+

Setting the target key in the service call will target the name of the MySensors device in Home Assistant. MySensors device names follow the notation: “[Sketch name] [Node id] [Child id]”.

+

Automation example

+
...
+action:
+  service: notify.mysensors
+  data:
+    message: Welcome home!
+    target: 'TextSensor 254 1'
+
+
+

The following sensor types are supported:

+
MySensors version 2.0 and higher
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_INFOV_TEXT
+

For more information, visit the api page of MySensors.

+

Example sketch

+
/*
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ */
+
+ #define MY_DEBUG
+ #define MY_RADIO_NRF24
+ #define MY_REPEATER_FEATURE
+
+ #include <SPI.h>
+ #include <MySensors.h>
+
+ #define SN "TextSensor"
+ #define SV "1.0"
+ #define CHILD_ID 1
+
+ MyMessage textMsg(CHILD_ID, V_TEXT);
+ bool initialValueSent = false;
+
+ void setup(void) {
+ }
+
+ void presentation() {
+   sendSketchInfo(SN, SV);
+   present(CHILD_ID, S_INFO, "TextSensor1");
+ }
+
+ void loop() {
+   if (!initialValueSent) {
+     Serial.println("Sending initial value");
+     // Send initial values.
+     send(textMsg.set("-"));
+     Serial.println("Requesting initial value from controller");
+     request(CHILD_ID, V_TEXT);
+     wait(2000, C_SET, V_TEXT);
+   }
+ }
+
+ void receive(const MyMessage &message) {
+   if (message.type == V_TEXT) {
+     if (!initialValueSent) {
+       Serial.println("Receiving initial value from controller");
+       initialValueSent = true;
+     }
+     // Dummy print
+     Serial.print("Message: ");
+     Serial.print(message.sensor);
+     Serial.print(", Message: ");
+     Serial.println(message.getString());
+     // Send message to controller
+     send(textMsg.set(message.getString()));
+   }
+ }
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.nfandroidtv/index.html b/components/notify.nfandroidtv/index.html new file mode 100644 index 0000000000..bee2e3d6cc --- /dev/null +++ b/components/notify.nfandroidtv/index.html @@ -0,0 +1,367 @@ + + + + + + + + + Notifications for Android TV / FireTV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Notifications for Android TV / FireTV +

+
+
+

Notification platform for Notifications for Android TV and Notifications for FireTV.

+

The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running.

+

When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your target device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn’t any limit when pushing notifications from Home Assistant.

+

To enable the notification platform, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - platform: nfandroidtv
+    name: Kitchen
+    host: 192.168.1.12
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • host (Required): IP address of the Android TV / FireTV device.
  • +
  • duration (Optional): The duration in seconds for which the notification will be displayed. Default is 5 seconds.
  • +
  • position (Optional): Has to be one of: bottom-right (default), bottom-left, top-right, top-left, center
  • +
  • color (Optional): Has to be one of: grey (default), black, indigo, green, red, cyan, teal, amber, pink
  • +
  • transparency (Optional): Has to be one of: 0%, 25% (default), 50%, 75%, 100%
  • +
  • interrupt (Optional): If set to true, 1, on etc., the notification is interactive and can be dismissed or selected to display more details. Depending on the running app (e.g. Netflix), this may stop playback.
  • +
+

The configuration will be used to configure the default values for the notification for the host specified by the IP. However, you can override most of the settings by passing them with the data-attribute when calling the service. +This is a fully customized JSON you can use to test how the final notification will look like:

+
{
+"message": "Messagetext",
+"title": "My Notification",
+"data":{
+    "position":"center",
+    "duration":2,
+    "transparency":"0%",
+    "color": "red",
+    "interrupt": 1
+    }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.nma/index.html b/components/notify.nma/index.html new file mode 100644 index 0000000000..d535c3732d --- /dev/null +++ b/components/notify.nma/index.html @@ -0,0 +1,345 @@ + + + + + + + + + Notify My Android - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Notify My Android +

+
+
+

The nma platform uses Notify My Android (NMA) to delivery notifications from Home Assistant to your Android device.

+

Go to the NMA website and create a new API key. If you are using the trial offer then keep in mind that your limit is five messages per day.

+

To add NMA to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: nma
+    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 API key for NMA.
  • +
+

Details for the API.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.prowl/index.html b/components/notify.prowl/index.html new file mode 100644 index 0000000000..102a7cd85e --- /dev/null +++ b/components/notify.prowl/index.html @@ -0,0 +1,362 @@ + + + + + + + + + Prowl - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Prowl +

+
+
+

The prowl platform uses Prowl to deliver push notifications from Home Assistant to your iOS device.

+

Go to the Prowl website and create a new API key.

+

To add Prowl notifications to your installation, add the following to your configuration.yaml file:

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

Prowl service data

+

The following attributes can be placed data for extended functionality.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
priorityyesPriority level, for more info refer to the Prowl API documentation.
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.pushbullet/index.html b/components/notify.pushbullet/index.html new file mode 100644 index 0000000000..81a033fddc --- /dev/null +++ b/components/notify.pushbullet/index.html @@ -0,0 +1,434 @@ + + + + + + + + + Pushbullet - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pushbullet +

+
+
+

The pushbullet notification platform sends messages to Pushbullet, a free service to send information between your phones, browsers, and friends.

+

To enable Pushbullet notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: pushbullet
+    api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Enter the API key for Pushbullet. Go to https://www.pushbullet.com/#settings/account to retrieve your API key/access token.
  • +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
+

Usage

+

Pushbullet is a notify platform and thus can be controlled by calling the notify service as described here. It will send a notification to all devices registered in the Pushbullet account. An optional target parameter can be given to Pushbullet to specify specific account’s devices, contacts or channels.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypePrefixSuffixExample
Devicedevice/Device nicknamedevice/iphone
Channelchannel/Channel tagchannel/my_home
Emailemail/Contact’s email addressemail/email@example.com
+

If using targets, your own account’s email address functions as ‘send to all devices’. All targets are verified (if exists) before sending, except email.

+

Example service payload

+
{
+  "message": "A message for many people",
+  "target": [
+    "device/telephone",
+    "email/hello@example.com",
+    "channel/my_home"
+  ]
+}
+
+
+

To use notifications, please see the getting started with automation page.

+

URL support

+
action:
+  service: notify.NOTIFIER_NAME
+  data:
+    title: Send URL
+    message: This is an url
+    data:
+      url: google.com
+
+
+
    +
  • url (Required): Page URL to send with Pushbullet.
  • +
+

File support

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

File URL support

+
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, so Home Assistant has access to them. +

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.pushetta/index.html b/components/notify.pushetta/index.html new file mode 100644 index 0000000000..bd8d1dc6a3 --- /dev/null +++ b/components/notify.pushetta/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Pushetta - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pushetta +

+
+
+

The pushetta notify platform uses Pushetta to delivery notifications from Home Assistant to your devices.

+

To retrieve the API token, log into your account at http://www.pushetta.com and go to your Dashboard. Create a new channel by clicking on Channels and then Add a Channel.

+

To enable Pushetta notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: pushetta
+    api_key: YOUR_API_KEY
+    channel_name: YOUR_CHANNEL_NAME
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • api_key (Required): Your API key for Pushetta.
  • +
  • channel_name (Required): The name of your channel.
  • +
  • send_test_msg (Optional): Disable/enable the test message send on Home Assistant’s startup to test the API key and the existence of the channel. Default to False.
  • +
+

It’s easy to test your Pushetta setup outside of Home Assistant. Assuming you have a channel home-assistant, just fire a request and check the channel page in the dashboard for a new message.

+
curl -X POST \
+    -H "Authorization: Token YOUR_API_KEY" \
+    -H "Content-Type: application/json" \
+    -d "{ \"body\" : \"Hello World\", \"message_type\" : \"text/plain\" }" \
+    http://api.pushetta.com/api/pushes/home-assistant/
+
+
+

For further details, please check the API.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.pushover/index.html b/components/notify.pushover/index.html new file mode 100644 index 0000000000..58a8de5c2f --- /dev/null +++ b/components/notify.pushover/index.html @@ -0,0 +1,381 @@ + + + + + + + + + Pushover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pushover +

+
+
+

The Pushover service is a platform for the notify component. This allows components to send messages to the user using Pushover.

+

In order to get an API key you need to go to the Pushover website and register a new application. From the website you can also retrieve your user key.

+

To use Pushover notifications, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: pushover
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    user_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): Your API key.
  • +
  • user_key (Required): Your user key for Pushover.
  • +
+

Example Automation:

+
- service: notify.entity_id
+      data:
+        message: "This is the message"
+        title: "Title of message"
+        data:
+          url: "https://home-assistant.io/"
+          sound: pianobar
+          priority: 0
+
+
+

Component specific values in the nested data section are optional.

+

This is a quote from the Pushover website regarding free/open source apps:

+
+

If you are creating a client-side library, application, or open source project that will be redistributed and installed by end-users, you may want to require each of your users to register their own application rather than including your own API token with the software.

+
+

When setting up the application you can use this icon.

+

To use notifications, please see the getting started with automation page.

+

When sending a notification, optional parameters can also be set as per the pushover API documentation.

+

Example notification triggered from the Alexa component for an intents is shown below which also uses Automation Templating for the message:

+
# Example configuration.yaml entries
+alexa:
+  intents:
+    LocateIntent:
+      action:
+        service: notify.notify
+        data_template:
+          message: "The location of {{ User }} has been queried via Alexa."
+        data:
+          title: "Home Assistant"
+          data:
+            sound: falling
+            device: pixel
+            url: "https://home-assistant.io/"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.pushsafer/index.html b/components/notify.pushsafer/index.html new file mode 100644 index 0000000000..dfa14df4fb --- /dev/null +++ b/components/notify.pushsafer/index.html @@ -0,0 +1,404 @@ + + + + + + + + + Pushsafer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pushsafer +

+
+
+

The Pushsafer service is a platform for the notify component. This allows you to send messages to the user using Pushsafer.

+

In order to get a private or alias key you need to go to the Pushsafer website and register.

+

To use Pushsafer notifications, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: pushsafer
+    private_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.
  • +
  • private_key (Required): Your private or alias key. Private key = send the notification to all devices with standard params, alias key send the notification to the devices stored in the alias with predefined params.
  • +
+

Examples

+

Message to two devices with formatted text.

+
{
+  "title": "Test to 2 devices",
+  "message": "Attention [b]bold[/b] text[br][url=https://www.pushsafer.com]Link to Pushsafer[/url]",
+  "target": ["1111", "2222"],
+  "data": {
+    "icon": "2", 
+    "iconcolor": "#FF0000",
+    "sound": "2",
+    "vibration": "1",
+    "url": "https://home-assistant.io/",
+    "urltitle": "Open Home Assistant",
+    "time2live": "0"
+  }
+}
+
+
+

Message to one device with formatted text and image from an external URL.

+
{
+  "title": "Test to 1 device with image from an url",
+  "message": "Attention [i]italic[/i] Text[br][url=https://home-assistant.io/]Testlink[/url]",
+  "target": ["1111"],
+  "data": {
+    "icon": "14", 
+    "iconcolor": "#FFFF00",
+    "sound": "22",
+    "vibration": "3",
+    "url": "https://home-assistant.io/",
+    "urltitle": "Open Home Assistant",
+    "time2live": "60",
+    "picture1": {
+       "url":"https://home-assistant.io/images/components/alexa/alexa-512x512.png"
+     }
+  }
+}
+
+
+

Message to two devices and one device group with formatted text and local image.

+
{
+  "title": "Test to 3 devices with local image",
+  "message": "Attention [i]italic[/i] Text[br][url=https://home-assistant.io/]Testlink[/url]",
+  "target": ["1111","2222","gs3333"],
+  "data": {
+    "icon": "20", 
+    "iconcolor": "#FF00FF",
+    "sound": "33",
+    "vibration": "0",
+    "url": "https://home-assistant.io/",
+    "urltitle": "Open Home Assistant",
+    "time2live": "10",
+    "picture1": {
+       "path":"C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg"
+     }
+  }
+}
+
+
+

To customize your push-notification you can take a look at the Pushsafer API description.

+

When setting up the application you can use this icon.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.rest/index.html b/components/notify.rest/index.html new file mode 100644 index 0000000000..115e393f24 --- /dev/null +++ b/components/notify.rest/index.html @@ -0,0 +1,363 @@ + + + + + + + + + REST - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ REST +

+
+
+

The rest notification platform allows you to deliver RESTful notifications from Home Assistant to another party.

+

To enable the REST notification in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • resource (Required): The resource or endpoint that will receive the value.
  • +
  • method (Optional): The method of the request. Default is GET.
  • +
  • message_param_name (Optional): Parameter name for the message. Defaults to message.
  • +
  • title_param_name (Optional): Parameter name for the title. Defaults to none.
  • +
  • target_param_name (Optional): Parameter name for the target. Defaults to none.
  • +
  • data (Optional): Dictionary of extra parameters to send to the resource.
  • +
  • data_template (Optional): Template dictionary of extra parameters to send to the resource.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.rocketchat/index.html b/components/notify.rocketchat/index.html new file mode 100644 index 0000000000..db01a40bdc --- /dev/null +++ b/components/notify.rocketchat/index.html @@ -0,0 +1,364 @@ + + + + + + + + + Rocket.Chat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Rocket.Chat +

+
+
+

The rocketchat platform allows you to send messages to your Rocket.Chat instance from Home Assistant.

+

To add Rocket.Chat to your installation, add the following to your configuration.yaml file:

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

script.yaml example

+
rocketchat_notification:
+  sequence:
+  - service: notify.NOTIFIER_NAME
+    data:
+      message: "Message to Rocket.Chat from Home Assistant!"
+      data:
+        emoji: ":smirk:"
+
+
+

Message variables

+
    +
  • message (Required): Message to be displayed.
  • +
  • data (Optional): Dictionary containing any of the variables defined in the + Rocket.Chat docs
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.sendgrid/index.html b/components/notify.sendgrid/index.html new file mode 100644 index 0000000000..c2c1fe20fa --- /dev/null +++ b/components/notify.sendgrid/index.html @@ -0,0 +1,344 @@ + + + + + + + + + SendGrid - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SendGrid +

+
+
+

The sendgrid notification platform sends email notifications via SendGrid, a proven cloud-based email platform.

+

To enable notification emails via SendGrid in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: sendgrid
+    api_key: API_KEY
+    sender: SENDER_EMAIL_ADDRESS
+    recipient: YOUR_RECIPIENT
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • api_key (Required): SendGrid API key - https://app.sendgrid.com/settings/api_keys
  • +
  • sender (Required): E-mail address of the sender.
  • +
  • recipient (Required): Recipient of the notification.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.simplepush/index.html b/components/notify.simplepush/index.html new file mode 100644 index 0000000000..013590962d --- /dev/null +++ b/components/notify.simplepush/index.html @@ -0,0 +1,367 @@ + + + + + + + + + Simplepush - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Simplepush +

+
+
+

The simplepush platform uses Simplepush to delivery notifications from Home Assistant to your Android device. Unlike similar apps the Simplepush app requires no registration.

+

To add Simplepush to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: simplepush
+    device_key: ABCDE
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(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
+
+

(string)(Required)The device key of your device.

+
+
event
+
+

(string)(Optional)The event for the events.

+
+
password
+
+

(string)(Inclusive)The password of the encryption used by your device.

+
+
salt
+
+

(string)(Inclusive)The salt used by your device.

+
+
+
+

To test if the service works, just send a message with curl from the command-line.

+
$ curl 'https://api.simplepush.io/send/device_key/title/message'
+
+
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.slack/index.html b/components/notify.slack/index.html new file mode 100644 index 0000000000..72b0197180 --- /dev/null +++ b/components/notify.slack/index.html @@ -0,0 +1,442 @@ + + + + + + + + + Slack - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Slack +

+
+
+

The slack platform allows you to deliver notifications from Home Assistant to Slack.

+

If you are planning to use Slack as yourself then you need to obtain a Slack API token to be able to send notifications.

+

It is also possible to use Slack bots as users. Just create a new bot at https://[YOUR_TEAM].slack.com/apps/build/custom-integration and use the provided token for that. You can add an icon from the frontend for Home Assistant and give the bot a meaningful name.

+

Don’t forget to invite the bot to the room where you want to get the notifications.

+

To enable the Slack notification in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: slack
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    default_channel: '#general'
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • api_key (Required): The Slack API token to use for sending Slack messages.
  • +
  • default_channel (Required): The default channel to post to if no channel is explicitly specified when sending the notification message. A channel can be specified adding a target attribute to the json at the same level as “message”
  • +
  • username (Optional): Setting username will allow Home Assistant to post to Slack using the username specified. By default not setting this will post to Slack using the user account or botname that you generated the api_key as.
  • +
  • icon (Optional): Use one of the Slack emojis as an Icon for the supplied username. Slack uses the standard emoji sets used here.
  • +
+

Slack service data

+

The following attributes can be placed inside data for extended functionality.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
fileyesGroups the attributes for file upload. If present, either url or path have to be provided.
path yesLocal path of file, photo etc to post to slack. Is placed inside file.
urlyesURL of file, photo etc to post to slack. Is placed inside file.
usernameyesUsername if the url requires authentication. Is placed inside file.
passwordyesPassword if the url requires authentication. Is placed inside file.
authyesIf set to digest HTTP-Digest-Authentication is used. If missing HTTP-BASIC-Authentication is used. Is placed inside file.
attachmentsyesArray of Slack attachments. See the attachment documentation for how to format. NOTE: if using attachments, they are shown in addition to message
+

Example for posting file from URL:

+
{
+  "message":"Message that will be added as a comment to the file.",
+  "title":"Title of the file.",
+  "target": ["#channelname"], 
+  "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:

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

+

Example for posting formatted attachment:

+
{
+  "message": "",
+  "data": {
+    "attachments": [
+      {
+        "title": "WHAT A HORRIBLE NIGHT TO HAVE A CURSE.",
+        "image_url": "http://i.imgur.com/JEExnsI.gif"
+      }
+    ]
+  }
+}
+
+
+

Please note that both message is a required key, but is always shown, so use an empty ("") string for message if you don’t want the extra text.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.smtp/index.html b/components/notify.smtp/index.html new file mode 100644 index 0000000000..3be88ca52f --- /dev/null +++ b/components/notify.smtp/index.html @@ -0,0 +1,460 @@ + + + + + + + + + SMTP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SMTP +

+
+
+

The smtp platform allows you to deliver notifications from Home Assistant to an e-mail recipient.

+

To enable notification by e-mail in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: smtp
+    sender: YOUR_SENDER
+    recipient: YOUR_RECIPIENT
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • sender (Required): E-mail address of the sender.
  • +
  • recipient (Required): E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients.
  • +
  • server (Optional): SMTP server which is used to end the notifications. Defaults to localhost.
  • +
  • port (Optional): The port that the SMTP server is using. Defaults to 587.
  • +
  • timeout (Optional): The timeout in seconds that the SMTP server is using. Defaults to 5.
  • +
  • username (Optional): Username for the SMTP account.
  • +
  • password (Optional): Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes.
  • +
  • encryption (Optional): Set mode for encryption, starttls, tls or none. Defaults to starttls.
  • +
  • sender_name (Optional): Sets a custom ‘sender name’ in the emails headers (From: Custom name example@mail.com).
  • +
  • debug (Optional): Enables Debug, eg. True or False. Defaults to False.
  • +
+

A sample configuration entry for Google Mail.

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: smtp
+    server: smtp.gmail.com
+    port: 587
+    timeout: 15
+    sender: john@gmail.com
+    encryption: starttls
+    username: john@gmail.com
+    password: thePassword
+    recipient:
+      - james@gmail.com
+      - bob@gmail.com
+    sender_name: My Home Assistant
+
+
+

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.

+

To use the SMTP notification, refer to it in an automation or script like in this example:

+
  burglar:
+    alias: Burglar Alarm
+    sequence:
+      - service: shell_command.snapshot
+      - delay:
+            seconds: 1
+      - service: notify.NOTIFIER_NAME
+        data:
+            title: 'Intruder alert'
+            message: 'Intruder alert at apartment!!'
+            data:
+                images:
+                    - /home/pi/snapshot1.jpg
+                    - /home/pi/snapshot2.jpg
+
+
+

The optional images field adds in-line image attachments to the email. This sends a text/HTML multi-part message instead of the plain text default.

+

The optional html field makes a custom text/HTML multi-part message, allowing total freedom for sending rich html emails. In them, if you need to attach images, you can pass both arguments (html and images), the attachments will be joined with the basename of the images, so they can be included in the html page with src="cid:image_name.ext".

+
  burglar:
+    alias: Burglar Alarm
+    sequence:
+      - service: shell_command.snapshot
+      - delay:
+            seconds: 1
+      - service: notify.NOTIFIER_NAME
+        data_template:
+            message: 'Intruder alert at apartment!!'
+            data:
+              images:
+                - /home/pi/snapshot1.jpg
+                - /home/pi/snapshot2.jpg
+              html: >
+                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+                <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
+                    <head>
+                        <meta charset="UTF-8">
+                        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+                        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+                        <title>Intruder alert</title>
+                        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css">
+                        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
+                        <style type="text/css">
+                            @font-face {
+                              font-family: 'Open Sans';
+                              font-style: normal;
+                              font-weight: 300;
+                              src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTZS3E-kSBmtLoNJPDtbj2Pk.ttf) format('truetype');
+                            }
+                            h1,h2,h3,h4,h5,h6 {
+                                font-family:'Open Sans',Arial,sans-serif;
+                                font-weight:400;
+                                margin:10px 0
+                            }
+                        </style>
+                    </head>
+                    <body>
+                      <div class="jumbotron jumbotron-fluid" style="background-color: #f00a2d; color: white;">
+                          <div class="container py-0">
+                              <h1>Intruder alert at apartment!!</h1>
+                          </div>
+                      </div>
+                      <div class="container-fluid">
+                        <div class="row">
+                          <div class="col-xs-12 col-md-6 px-0">
+                            <img class="rounded" style="width: 100%;"
+                                alt="snapshot1" src="cid:snapshot1.jpg" />
+                          </div>
+                          <div class="col-xs-12 col-md-6 px-0">
+                            <img class="rounded" style="width: 100%;"
+                                alt="snapshot2" src="cid:snapshot2.jpg" />
+                          </div>
+                        </div>
+                        <br>
+                      </div>
+                    </body>
+                    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
+                    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"></script>
+                </html>
+
+
+
+

Obviously, this kind of complex html email reporting is done much more conveniently using Jinja2 templating from an AppDaemon app, for example.

+

This platform is fragile and not able to catch all exceptions in a smart way because of the large number of possible configuration combinations.

+

A combination that will work properly is port 587 and STARTTLS. It’s recommended to enable STARTTLS, if possible.

+

Keep in mind that if the password contains a colon, it needs to be wrapped in apostrophes in the configuration.yaml file.

+

For Google Mail (smtp.gmail.com) an additional step in the setup process is needed. Google has some extra layers of protection +which need special attention. By default, the usage by external applications, especially scripts, is limited. Visit the Less secure apps page and enable it.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.synology_chat/index.html b/components/notify.synology_chat/index.html new file mode 100644 index 0000000000..ac2248594f --- /dev/null +++ b/components/notify.synology_chat/index.html @@ -0,0 +1,344 @@ + + + + + + + + + Synology Chat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Synology Chat +

+
+
+

The synology_chat notification platform allows you to deliver notifications to your Synology Chat install as a Synology Chat bot.

+

To configure a Synology Chat bot, first you must create a Synology Chat Integration Incoming Webhook. After this is complete, you will have a Webhook URL. This is what will be required in the Home Assistant configuration.

+

To enable the Synology Chat notification in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - platform: synology_chat
+    name: hass_synchat
+    resource: https://example.your.synology.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=1&token=ABCDEFG
+
+
+

Configuration variables:

+
    +
  • name (Required): Setting the parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • resource (Required): The incoming webhook URL.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.syslog/index.html b/components/notify.syslog/index.html new file mode 100644 index 0000000000..2ed3cdb128 --- /dev/null +++ b/components/notify.syslog/index.html @@ -0,0 +1,447 @@ + + + + + + + + + Syslog - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Syslog +

+
+
+

The syslog platform allows you to deliver notifications from Home Assistant to the local syslog.

+

To enable syslog notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: syslog
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • facility (Optional): Facility according to RFC 3164 (http://tools.ietf.org/html/rfc3164). Default is ‘syslog’ if no value is given. Check the table below for entries.
  • +
  • option (Optional): Log option. Default is ‘pid’ if no value is given. Check the table below for entries.
  • +
  • priority (Optional): Priority of the messages. Default is ‘info’ if no value is given. Check the table below for entries.
  • +
+

The table contains values to use in your configuration.yaml file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
facilityoptionpriority
kernelpid5
usercons4
mailndelay3
daemonnowait2
authperror1
LPR 0
news -1
uucp -2
cron  
syslog  
local0  
local1  
local2  
local3  
local4  
local5  
local6  
local7  
+

For details about facility, option, and priority please consult the wikipedia article and RFC 3164.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.telegram/index.html b/components/notify.telegram/index.html new file mode 100644 index 0000000000..b707aec54c --- /dev/null +++ b/components/notify.telegram/index.html @@ -0,0 +1,530 @@ + + + + + + + + + Telegram - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telegram +

+
+
+

The telegram platform uses Telegram to deliver notifications from Home Assistant to your Android device, your Windows phone, or your iOS device.

+

The requirements are:

+
    +
  • You need a Telegram bot. Please follow those instructions to create one and get the token for your bot. Keep in mind that bots are not allowed to contact users. You need to make the first contact with your user. Meaning that you need to send a message to the bot from your user.
  • +
  • You need to configure a Telegram bot in Home Assistant and define there your API key and the allowed chat ids to interact with.
  • +
  • The chat_id of an allowed user.
  • +
+

To retrieve your chat_id, contact any of the Telegram bots created for this purpose (@myidbot, @get_id_bot)

+

The quickest way to retrieve your chat_id is visiting https://api.telegram.org/botYOUR_API_TOKEN/getUpdates or to use $ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates. Replace YOUR_API_TOKEN with your actual token.

+

The result set will include your chat ID as id in the from section:

+
{
+	"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:

+
$ python3
+>>> import telegram
+>>> bot = telegram.Bot(token='YOUR_API_TOKEN')
+>>> chat_id = bot.getUpdates()[-1].message.chat_id
+>>> print(chat_id)
+123456789
+
+
+

To enable Telegram notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry for the Telegram Bot
+telegram_bot:
+  - platform: polling
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    allowed_chat_ids:
+      - CHAT_ID_1
+      - CHAT_ID_2
+      - CHAT_ID_3
+
+# Example configuration.yaml entry for the notifier
+notify:
+  - name: NOTIFIER_NAME
+    platform: telegram
+    chat_id: CHAT_ID_2
+
+
+

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.
  • +
  • chat_id (Required): The chat ID of your user.
  • +
+

To use notifications, please see the getting started with automation page.

+

Text message

+
...
+action:
+  service: notify.NOTIFIER_NAME
+  data:
+    title: '*Send a message*'
+    message: 'That's an example that _sends_ a *formatted* message with a custom inline keyboard.'
+    data:
+      inline_keyboard:
+        - 'Task 1:/command1, Task 2:/command2'
+        - 'Task 3:/command3, Task 4:/command4'
+
+
+

Configuration variables:

+
    +
  • message (Required): Message text.
  • +
  • title (Optional): Will be composed as ‘%title\n%message’.
  • +
  • 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.
  • +
+

Photo support

+
...
+action:
+  service: notify.NOTIFIER_NAME
+  data:
+    title: Send an images
+    message: That's an example that sends an image.
+    data:
+      photo:
+        - url: http://192.168.1.28/camera.jpg
+          username: admin
+          password: secrete
+        - file: /tmp/picture.jpg
+          caption: Picture Title xy
+        - url: http://somebla.ie/video.png
+          caption: I.e. for a Title
+
+
+

Configuration variables:

+
    +
  • url or file (Required): For local or remote path to an image.
  • +
  • caption (Optional): The title of the image.
  • +
  • username (Optional): Username for a URL which require HTTP authentication.
  • +
  • password (Optional): Username for a URL which require HTTP authentication.
  • +
  • authentication (Optional): Set to ‘digest’ to use HTTP digest authentication, defaults to ‘basic’.
  • +
  • keyboard (Optional): List of rows of commands, comma-separated, to make a custom keyboard.
  • +
  • inline_keyboard (Optional): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
  • +
+

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

+

Video support

+
...
+action:
+  service: notify.NOTIFIER_NAME
+  data:
+    title: Send a video
+    message: That's an example that sends a video.
+    data:
+      video:
+        - url: http://192.168.1.28/camera.mp4
+          username: admin
+          password: secrete
+        - file: /tmp/video.mp4
+          caption: Video Title xy
+        - url: http://somebla.ie/video.mp4
+          caption: I.e. for a Title
+
+
+

Configuration variables:

+
    +
  • url or file (Required): For local or remote path to a video.
  • +
  • caption (Optional): The title of the video.
  • +
  • username (Optional): Username for a URL which require HTTP authentication.
  • +
  • password (Optional): Username for a URL which require HTTP authentication.
  • +
  • authentication (Optional): Set to ‘digest’ to use HTTP digest authentication, defaults to ‘basic’.
  • +
  • keyboard (Optional): List of rows of commands, comma-separated, to make a custom keyboard.
  • +
  • inline_keyboard (Optional): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
  • +
+

Document support

+
...
+action:
+  service: notify.NOTIFIER_NAME
+  data:
+    title: Send a document
+    message: That's an example that sends a document and a custom keyboard.
+    data:
+      document:
+        file: /tmp/whatever.odf
+        caption: Document Title xy
+    keyboard:
+      - '/command1, /command2'
+      - '/command3, /command4'
+
+
+

Configuration variables:

+
    +
  • url or file (Required): For local or remote path to a document.
  • +
  • caption (Optional): The title of the document.
  • +
  • username (Optional): Username for a URL which require HTTP authentication.
  • +
  • password (Optional): Username for a URL which require HTTP authentication.
  • +
  • authentication (Optional): Set to ‘digest’ to use HTTP digest authentication, defaults to ‘basic’.
  • +
  • keyboard (Optional): List of rows of commands, comma-separated, to make a custom keyboard.
  • +
  • inline_keyboard (Optional): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data.
  • +
+

Location support

+
...
+
+action:
+  service: notify.NOTIFIER_NAME
+  data:
+    title: Send location
+    message: Location updated.
+    data:
+      location:
+        latitude: 32.87336
+        longitude: 117.22743
+
+
+

Configuration variables:

+
    +
  • latitude (Required): The latitude to send.
  • +
  • longitude (Required): The longitude to send.
  • +
  • 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.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.telstra/index.html b/components/notify.telstra/index.html new file mode 100644 index 0000000000..67d181ea07 --- /dev/null +++ b/components/notify.telstra/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Telstra - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telstra +

+
+
+

The telstra notification platform allows you to deliver Home Assistant notifications to Australian phone numbers over the Telstra SMS API.

+

To enable the Telstra notifications in your installation, you must first create an account and API app over at dev.telstra.com. The free tier allows for a maximum of 1000 free messages.

+

After your API app is approved, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  name: NOTIFIER_NAME
+  platform: telstra
+  consumer_key: TELSTRA_API_CONSUMER_KEY_HERE
+  consumer_secret: TELSTRA_API_CONSUMER_SECRET_HERE
+  phone_number: SMS_RECIPIENT_PHONE_NUMBER_HERE
+
+
+

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.
  • +
  • consumer_key (Required): The consumer key of your Telstra API app.
  • +
  • consumer_secret (Required): The consumer secret of your Telstra API app.
  • +
  • phone_number (Required): The phone number of where the notifications will be sent.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.twilio_call/index.html b/components/notify.twilio_call/index.html new file mode 100644 index 0000000000..9ff73f13b3 --- /dev/null +++ b/components/notify.twilio_call/index.html @@ -0,0 +1,361 @@ + + + + + + + + + Twilio Call - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Twilio Call +

+
+
+

The twilio_call notification platform enables sending notifications via Voice, powered by Twilio. +Passed message will be read by Text-To-Speech service.

+

The requirement is that you have setup Twilio.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: twilio_call
+    from_number: E164_PHONE_NUMBER
+
+
+

Configuration variables:

+
    +
  • from_number (Required): An E.164 formatted phone number, like +14151234567. See Twilio’s guide to formatting phone numbers 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.
  • +
+

Usage

+

Twilio is a notify platform and thus can be controlled by calling the notify service as described here. It will send a notification to all E.164 phone numbers in the notification target. See the notes above regarding the from_number configuration variable for information about formatting phone numbers.

+
# Example automation notification entry
+automation:
+  - alias: The sun has set
+    trigger:
+      platform: sun
+      event: sunset
+    action:
+      service: notify.twilio_sms
+      data:
+        message: 'The sun has set'
+        target:
+          - +14151234567
+          - +15105555555
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.twilio_sms/index.html b/components/notify.twilio_sms/index.html new file mode 100644 index 0000000000..cbbc1dfc02 --- /dev/null +++ b/components/notify.twilio_sms/index.html @@ -0,0 +1,360 @@ + + + + + + + + + Twilio SMS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Twilio SMS +

+
+
+

The twilio notification platform enables sending notifications via SMS, powered by Twilio.

+

The requirement is that you have setup Twilio.

+

To use this notification platform in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: twilio_sms
+    from_number: E164_PHONE_NUMBER
+
+
+

Configuration variables:

+
    +
  • from_number (Required): An E.164 formatted phone number, like +14151234567. See Twilio’s guide to formatting phone numbers 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.
  • +
+

Usage

+

Twilio is a notify platform and thus can be controlled by calling the notify service as described here. It will send a notification to all E.164 phone numbers in the notification target. See the notes above regarding the from_number configuration variable for information about formatting phone numbers.

+
# Example automation notification entry
+automation:
+  - alias: The sun has set
+    trigger:
+      platform: sun
+      event: sunset
+    action:
+      service: notify.twilio_sms
+      data:
+        message: 'The sun has set'
+        target:
+          - '+14151234567'
+          - '+15105555555'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.twitter/index.html b/components/notify.twitter/index.html new file mode 100644 index 0000000000..d72cb5f335 --- /dev/null +++ b/components/notify.twitter/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Twitter - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Twitter +

+
+
+

The twitter platform uses Twitter to deliver notifications from Home Assistant.

+

Go to Twitter Apps 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).

+

To add Twitter to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: twitter
+    consumer_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    consumer_secret: ABCDEFGHJKLMNOPQRSTUVXYZ
+    access_token: ABCDEFGHJKLMNOPQRSTUVXYZ
+    access_token_secret: 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.
  • +
  • consumer_key (Required): Your “Consumer Key” (API Key) for the application.
  • +
  • consumer_secret (Required): Your “Consumer Secret” (API Secret) for the application.
  • +
  • access_token (Required): Your “Access Token” for the application.
  • +
  • access_token_secret (Required): Your “Access Token Secret” for the application.
  • +
  • username (Optional): Twitter handle without @ or with @ and quoting for direct messaging.
  • +
+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.webostv/index.html b/components/notify.webostv/index.html new file mode 100644 index 0000000000..4233091a9f --- /dev/null +++ b/components/notify.webostv/index.html @@ -0,0 +1,386 @@ + + + + + + + + + LG WebOS TV notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LG WebOS TV notifications +

+
+
+

The webostv platform allows you to send notifications to a LG WebOS Smart TV.

+

When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication.

+

To add a TV to your installation, add the following to your configuration.yaml file and follow the configurator instructions:

+
# Example configuration.yaml entry
+notify:
+  - platform: webostv
+    host: 192.168.0.112
+    name: livingroom_tv
+    filename: webostv.conf
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of the LG WebOS Smart TV, e.g. 192.168.0.10
  • +
  • name (Required): The name you would like to give to the LG WebOS Smart TV.
  • +
  • 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.
  • +
  • icon (Optional): The path to an image file to use as the icon in notifications.
  • +
+

A possible automation could be:

+
# Example configuration.yaml entry
+automation:
+  - alias: Open a window
+    trigger:
+      platform: numeric_state
+      entity_id: sensor.netatmo_livingroom_co2
+      above: 999
+    action:
+      service: notify.livingroom_tv
+      data:
+        message: "You should open a window! (Livingroom Co2: ppm)"
+
+
+

The icon can be overridden for individual notifications by providing a path to an alternative icon image to use:

+
automation:
+  - alias: Front door motion
+    trigger:
+      platform: state
+      entity_id: binary_sensor.front_door_motion
+      to: 'on'
+    action:
+      service: notify.livingroom_tv
+      data:
+        message: "Movement detected: Front Door"
+        data:
+          icon: "/home/homeassistant/images/doorbell.png"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/notify.xmpp/index.html b/components/notify.xmpp/index.html new file mode 100644 index 0000000000..74a8902e95 --- /dev/null +++ b/components/notify.xmpp/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Jabber (XMPP) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Jabber (XMPP) +

+
+
+

The xmpp platform allows you to deliver notifications from Home Assistant to a Jabber (XMPP) account.

+

To enable Jabber notifications in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+notify:
+  - name: NOTIFIER_NAME
+    platform: xmpp
+    sender: YOUR_JID
+    password: YOUR_JABBER_ACCOUNT_PASSWORD
+    recipient: YOUR_RECIPIENT
+
+
+

Configuration variables:

+
    +
  • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
  • +
  • sender (Required): The Jabber ID (JID) that will act as origin of the messages. Add your JID including the domain, eg. your_name@jabber.org.
  • +
  • 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.

+

To use notifications, please see the getting started with automation page.

+
+
+ +
+
+ + + + + + + diff --git a/components/notify.yessssms/index.html b/components/notify.yessssms/index.html new file mode 100644 index 0000000000..317f872856 --- /dev/null +++ b/components/notify.yessssms/index.html @@ -0,0 +1,355 @@ + + + + + + + + + Yesss SMS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yesss SMS +

+
+
+

The yessssms platform is using the Austrian mobile operator 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:

+
# 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. Using the wrong credentials three times in a row will get you blocked for one hour. +

+
+
+ +
+
+ + + + + + + diff --git a/components/notify/index.html b/components/notify/index.html new file mode 100644 index 0000000000..534d7b77ae --- /dev/null +++ b/components/notify/index.html @@ -0,0 +1,382 @@ + + + + + + + + + Notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Notifications +

+
+
+

The notify component makes it possible to send notifications to a wide variety of platforms. Please check the sidebar for a full list of platforms that are supported.

+

Configuration

+
# Example configuration.yaml entry
+notify:
+  - platform: pushbullet
+    name: paulus
+    api_key: ABCDEFG
+
+
+

The name parameter is optional but needed if you want to use multiple platforms. The platform will be exposed as service notify/<name>. The name will default to notify if not supplied.

+

Service

+

Once loaded, the notify platform will expose a service that can be called to send notifications.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
messagenoBody of the notification.
titleyesTitle of the notification. Default is Home Assistant.
targetyesSome platforms will allow specifying a recipient that will receive the notification. See your platform page if it is supported.
datayesOn platforms who have extended functionality. See your platform page if it is supported.
+

The notification component supports specifying templates with data_template. This will allow you to use the current state of Home Assistant in your notifications.

+

In an action of your automation setup it could look like this with a customized subject.

+
action:
+  service: notify.notify
+  data:
+    message: "Your message goes here"
+    title: "Custom subject"
+
+
+

Test if it works

+

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.

+
{
+  "message": "The sun is {% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}!"
+}
+
+
+

For services which have support for sending images.

+
{ "message": "Test plugin",
+  "data": { 
+    "photo": { 
+        "url": "http://www.gbsun.de/gbpics/berge/berge106.jpg"
+    }
+  }
+}
+
+
+

If the service support sending the location, the data from this sample can be used.

+
{ "message": "Test plugin",
+  "data": {
+    "location": {
+      "latitude": 7.3284,
+      "longitude": 46.38234
+    }
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/nuheat/index.html b/components/nuheat/index.html new file mode 100644 index 0000000000..7f49ea8abf --- /dev/null +++ b/components/nuheat/index.html @@ -0,0 +1,486 @@ + + + + + + + + + NuHeat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NuHeat +

+
+
+

The nuheat component lets you control connected floor heating thermostats from NuHeat.

+

First, you will need to obtain your thermostat’s numeric serial number or ID by logging into MyNuHeat.com and selecting your thermostat(s).

+

Once you have the Thermostat ID(s), add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+nuheat:
+  username: you@example.com
+  password: very-secure-password
+  devices: 12345
+
+# Example configuration.yaml entry with multiple thermostats
+nuheat:
+  username: you@example.com
+  password: very-secure-password
+  devices:
+    - 12345
+    - 67890
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The username for accessing your MyNuHeat account.

+
+
password
+
+

(string)(Required)The password for accessing your MyNuHeat account.

+
+
devices
+
+

(string | int)(Required)The serial number/ID of each thermostat you would like to integrate.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/nuimo_controller/index.html b/components/nuimo_controller/index.html new file mode 100644 index 0000000000..5ddd2ddafc --- /dev/null +++ b/components/nuimo_controller/index.html @@ -0,0 +1,494 @@ + + + + + + + + + Nuimo controller - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nuimo controller +

+
+
+

The nuimo_controller component allows you to connect to a Nuimo device for receiving input events and displaying on the LED matrix via the Nuimo SDK for Python on Linux.

+

To connect to a Nuimo device add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+nuimo_controller: 
+
+
+

Configuration variables:

+
    +
  • mac (Optional): Skip discovery and connect to this device address.
  • +
  • name (Optional): To handle more than one device by names, add the name of the device.
  • +
+

Example for testing rotation value and sending to the LED matrix:

+
automation Nuimo_rotate_right:
+  trigger:
+    platform: event
+    event_type: nuimo_input
+    event_data:
+      type: ROTATE
+  condition:
+    condition: template
+    value_template: '{{ trigger.event.data.value > 100 }}'
+  action:
+    service: nuimo_controller.led_matrix
+    data: 
+      matrix:
+            '........
+             0000000.
+             .000000.
+             ..00000.
+             .0.0000.
+             .00.000.
+             .000000.
+             .000000.
+             ........ '
+      interval: 0.5
+
+
+

Troubleshooting:

+
    +
  • +

    use hcitool lescan to see the mac address of your device

    +
  • +
  • +

    allow non-root user access to Bluetooth LE with sudo setcap cap_net_raw+eip $(eval readlink -f $(which python))

    +
  • +
  • +

    install the newest version of pygattlib from the repository, either because there is no binary package for your system or the pip version contains errors, with pip install hg+https://bitbucket.org/OscarAcena/pygattlib --target $HOME/.homeassistant/deps. +(Dependencies of pygattlib: sudo apt-get install pkg-config libboost-python-dev libboost-thread-dev libbluetooth-dev libglib2.0-dev python-dev) +Then invoke home-assistant with hass --skip-pip.

    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/octoprint/index.html b/components/octoprint/index.html new file mode 100644 index 0000000000..503b9c730a --- /dev/null +++ b/components/octoprint/index.html @@ -0,0 +1,470 @@ + + + + + + + + + OctoPrint - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OctoPrint +

+
+
+

OctoPrint is a web interface for your 3D printer. This is the main component to integrate OctoPrint sensors, you will have to setup sensors and binary sensors separately.

+

To get started with the OctoPrint API, please follow the directions on their site. Once OctoPrint is configured you will need to add your API key and host to your configuration.yaml.

+
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.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/openalpr/index.html b/components/openalpr/index.html new file mode 100644 index 0000000000..a893228993 --- /dev/null +++ b/components/openalpr/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/panel_custom/index.html b/components/panel_custom/index.html new file mode 100644 index 0000000000..ef01ef0e02 --- /dev/null +++ b/components/panel_custom/index.html @@ -0,0 +1,183 @@ + + + + + + + + + Panel Custom - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Panel Custom +

+
+
+

The panel_custom support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized.

+

To enable customized panels in your installation, add the following to your configuration.yaml file:

+
# 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
+    sidebar_icon: mdi:work
+    url_path: my-todomvc
+    webcomponent_path: /home/hass/hello.html
+    config:
+      who: world
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name of the panel.
  • +
  • sidebar_title (Optional): Friendly title for the panel in the sidebar. Omitting it means no sidebar entry (but still accessible through the URL).
  • +
  • sidebar_icon (Optional): Icon for entry. Pick an icon that you can find on materialdesignicons.com to use for your input and prefix the name with mdi:. For example mdi:car, mdi:ambulance, or mdi:motorbike.
  • +
  • url_path (Optional): The URL your panel will be available on. If omitted will default to the panel name.
  • +
  • webcomponent_path (Optional): The path to your component. If omitted will default to <config dir>/panels/<component name>.html
  • +
  • config (Optional): Configuration to be passed into your web component when being instantiated.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/panel_iframe/index.html b/components/panel_iframe/index.html new file mode 100644 index 0000000000..f1f4eb8701 --- /dev/null +++ b/components/panel_iframe/index.html @@ -0,0 +1,210 @@ + + + + + + + + + Panel iFrame - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Panel iFrame +

+
+
+

The panel_iframe support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server.

+

If you are accessing Home Assistant over HTTPS using SSL, you cannot access HTTP sites through an iframe panel.

+

To enable Panel iFrames in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+panel_iframe:
+  router:
+    title: 'Router'
+    url: 'http://192.168.1.1'
+  fridge:
+    title: 'Fridge'
+    url: 'http://192.168.1.5'
+  otherapp:
+    title: 'Other App'
+    url: '/otherapp'
+
+
+
+

Configuration Variables

+
+
panel_iframe
+
+

(map)(Required)Enables the panel_iframe component. Only allowed once.

+
+
+
+
panel_name
+
+

(map)(Required)Name of the panel. Only allowed once.

+
+
+
+
title
+
+

(string)(Required)Friendly title for the panel. Will be used in the sidebar.

+
+
url
+
+

(string)(Required)The absolute URL or relative URL with an absolute path to open.

+
+
icon
+
+

(string)(Optional)Icon for entry. Pick an icon that you can find on 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/components/persistent_notification/index.html b/components/persistent_notification/index.html new file mode 100644 index 0000000000..df08ab05af --- /dev/null +++ b/components/persistent_notification/index.html @@ -0,0 +1,290 @@ + + + + + + + + + Persistent notification - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Persistent notification +

+
+
+

The persistent_notification can be used to show a message on the frontend that has to be dismissed by the user.

+

+ +

+

Service

+

The service persistent_notification/create takes in message, title, and notification_id.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
messagenoBody of the notification.
titleyesTitle of the notification.
notification_idyesIf notification_id is given, it will overwrite the notification if there already was a notification with that ID.
+

The persistent_notification component supports specifying templates for both the message and the title. This will allow you to use the current state of Home Assistant in your notifications.

+

In an action of your automation setup it could look like this with a customized subject.

+
action:
+  service: persistent_notification.create
+  data:
+    message: "Your message goes here"
+    title: "Custom subject"
+
+
+

The service persistent_notification/dismiss requires a notification_id.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
notification_idnothe notification_id is required to identify the notification that should be removed.
+

This service allows you to remove a notifications by script or automation.

+
action:
+  service: persistent_notification.dismiss
+  data:
+    notification_id: "1234"
+
+
+

Create a persistent notification

+

Choose service developer tool icon Services from the Developer Tools to call the persistent_notification service. Select persistent_notification/create from the list of Available services: and enter something like the sample below into the Service Data field and hit CALL SERVICE.

+
{
+  "notification_id": "1234",
+  "title": "Sample notification",
+  "message": "This is a sample text"
+}
+
+
+

This will create the notification entry shown above.

+
+
+ +
+
+ + + + + + + diff --git a/components/pilight/index.html b/components/pilight/index.html new file mode 100644 index 0000000000..598e1d28d4 --- /dev/null +++ b/components/pilight/index.html @@ -0,0 +1,499 @@ + + + + + + + + + Pilight - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pilight +

+
+
+

Pilight 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 are already available.

+

This pilight hub connects to the pilight-daemon 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.

+

To integrate pilight into Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+pilight:
+  host: 127.0.0.1
+  port: 5000
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the computer running the pilight-daemon, e.g. 192.168.1.32.
  • +
  • port (Required): The network port to connect to. The usual port is 5000.
  • +
  • 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 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 neighbors 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.

+

A full configuration sample could look like the sample below:

+
# Example configuration.yaml entry
+pilight:
+  host: 127.0.0.1
+  port: 5000
+  send_delay: 0.4
+  whitelist:  # optional
+    protocol:
+      - daycom
+      - intertechno
+    id:
+      - 42
+
+
+

Troubleshooting

+
    +
  • A list of tested RF transceiver hardware is available here. This might be useful before buying.
  • +
  • Sending commands is simple when the protocol is known by pilight, but receiving commands can be rather difficult. It can happen that the code is not correctly recognized due to different timings in the sending hardware or the RF receiver. If this happens follow these steps:
  • +
+
    +
  1. Install pilight from source (do not worry that is very easy) and only activate the protocols you are expecting in the pop up menu. This reduces false positives.
  2. +
  3. Check the real timings of your device + RF receiver by running pilight-debug. Remember the pulslen parameter.
  4. +
  5. Go to the libs/pilight/protocols/433.92 subfolder of the pilight source code and open the .c file of your protocol. Search for MIN_PULSE_LENGTH, MAX_PULSE_LENGTH and AVG_PULSE_LENGTH. Change the pulse lengths to match your measured one. Recompile and install pilight by re-running $ sudo ./setup.sh.
  6. +
+
+
+ +
+
+ + + + + + + diff --git a/components/plant/index.html b/components/plant/index.html new file mode 100644 index 0000000000..94c9e3f315 --- /dev/null +++ b/components/plant/index.html @@ -0,0 +1,302 @@ + + + + + + + + + Plant monitor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Plant monitor +

+
+
+

Thisplantcomponent lets you merge moisture, conductivity, light intensity, temperature and battery level for a plant into a single UI element. It also supports setting minimum and maximum values for each measurement and will change its state to “problem” if it is not within those limits.

+

To use your plant sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+plant:
+  name_of_your_plant:
+    sensors:
+      moisture: sensor.my_sensor_moisture
+      battery: sensor.my_sensor_battery
+      temperature: sensor.my_sensor_temperature
+      conductivity: sensor.my_sensor_conductivity
+      brightness: sensor.my_sensor_brightness
+    min_moisture: 20
+
+
+

Configuration variables:

+
    +
  • entity_id (Required): Set by you and is used by the component as the entity_id. +
      +
    • sensors (Required): +
        +
      • moisture (Optional): Moisture of the plant. Measured in %. Can have a min and max value set optionally.
      • +
      • battery (Optional): Battery level of the plant sensor. Measured in %. Can only have a min level set optionally.
      • +
      • temperature: (Optional): Temperature of the plant. Measured in degrees Celsius. Can have a min and max value set optionally.
      • +
      • conductivity: (Optional): Conductivity of the plant. Measured in µS/cm. Can have a min and max value set optionally.
      • +
      • brightness: (Optional): Light exposure of the plant. Measured in Lux. Can have a min and max value set optionally.
      • +
      +
    • +
    • min_moisture (Optional): Minimum moisture level before triggering a problem. Typical value: 20
    • +
    • max_moisture (Optional): Maximum moisture level before triggering a problem. Typical value: 60
    • +
    • min_battery (Optional): Minimum battery level before triggering a problem. Typical value: 20
    • +
    • min_conductivity (Optional): Minimum conductivity level before triggering a problem. Typical value: 500
    • +
    • max_conductivity (Optional): Maximum conductivity level before triggering a problem. Typical value: 3000
    • +
    • min_temperature (Optional): Minimum temperature before triggering a problem.
    • +
    • max_temperature (Optional): Maximum temperature before triggering a problem.
    • +
    • min_brightness (Optional): Minimum brightness before triggering a problem. In contrast to the other values, this check is not looking at the current situation, but rather at the last days. A problem is only reported if the maximum brightness over the last days was lower than min_brightness. You can use this to check if the plant gets enough light during the course of the day.
    • +
    • max_brightness (Optional): Maximum brightness before triggering a problem.
    • +
    • check_days (Optional): time interval (in days) used when checking min_brightness, if not set, the default value is 3
    • +
    +
  • +
+

Examples

+

Using plain MQTT sensor to get the data

+

This is a practical example that uses a multiple of MQTT sensors to supply the readings used by the plant sensor. +Another good source of this data would be the Mi Flora component.

+

If the sensor data is within the min/max values the status will be ok, if not the status will be problem. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data.

+

Data Source

+

The main sources of the data will usually be a MiFlora sensor or a MQTT sensor receiving the data from a PlantGateway.

+

If you want to get the date via a PlantGateway, this is a typical configuration for the MQTT sensors:

+
# Example configuration.yaml entry
+plant:
+  simulated_plant:
+    sensors:
+      moisture: sensor.mqtt_plant_moisture
+      battery: sensor.mqtt_plant_battery
+      temperature: sensor.mqtt_plant_temperature
+      conductivity: sensor.mqtt_plant_conductivity
+      brightness: sensor.mqtt_plant_brightness
+    min_moisture: 20
+    max_moisture: 60
+    min_battery: 17
+    min_conductivity: 500
+    min_temperature: 15
+    
+sensor:
+  - platform: mqtt
+    name: my_plant_moisture
+    state_topic: my_plant_topic
+    value_template: '{{ value_json.moisture }}'
+  - platform: mqtt
+    name: my_plant_battery
+    state_topic: my_plant_topic
+    value_template: '{{ value_json.battery }}'
+  - platform: mqtt
+    name: my_plant_temperature
+    state_topic: my_plant_topic
+    value_template: '{{ value_json.temperature }}'
+  - platform: mqtt
+    name: my_plant_conductivity
+    state_topic: my_plant_topic
+    value_template: '{{ value_json.conductivity }}'
+  - platform: mqtt
+    name: my_plant_brightness
+    state_topic: my_plant_topic
+    value_template: '{{ value_json.brightness }}'
+
+
+

You have to replace the state_topic with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server.

+
+
+ +
+
+ + + + + + + diff --git a/components/prometheus/index.html b/components/prometheus/index.html new file mode 100644 index 0000000000..02e5c02cd9 --- /dev/null +++ b/components/prometheus/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Prometheus - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Prometheus +

+
+
+

The prometheus component exposes metrics in a format which Prometheus can read.

+

To use the prometheus component in your installation, add the following to your configuration.yaml file:

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

+
# 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/components/proximity/index.html b/components/proximity/index.html new file mode 100644 index 0000000000..5ef72679be --- /dev/null +++ b/components/proximity/index.html @@ -0,0 +1,271 @@ + + + + + + + + + Proximity - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Proximity +

+
+
+

The proximity component allows you to monitor the proximity of devices to a particular zone and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data.

+

This component is useful to reduce the number of automation rules required when wanting to perform automations based on locations outside a particular zone. The zone and state based triggers allow similar control but the number of rules grows exponentially when factors such as direction of travel need to be taken into account.

+

Some examples of its use include:

+
    +
  • Increase thermostat temperature as you near home
  • +
  • Decrease temperature the further away from home you travel
  • +
+

The Proximity entity which is created has the following values:

+
    +
  • state: Distance from the monitored zone (in km)
  • +
  • dir_of_travel: Direction of the closest device to the monitored zone. Values are: +
      +
    • ‘not set’
    • +
    • ‘arrived’
    • +
    • ‘towards’
    • +
    • ‘away_from’
    • +
    • ‘unknown’
    • +
    • ‘stationary’
    • +
    +
  • +
  • dist_to_zone: Distance from the monitored zone (in km)
  • +
+

To enable this component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+proximity:
+  home: 
+    ignored_zones:
+      - twork
+    devices:
+      - device_tracker.nwaring_nickmobile
+    tolerance: 50
+    unit_of_measurement: mi
+
+
+

Configuration variables:

+
    +
  • zone (Optional): The zone to which this component is measuring the distance to. Default is the home zone.
  • +
  • ignored_zones array (Optional): Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g. work or school).
  • +
  • devices array (Optional): A list of devices to compare location against to check closeness to the configured zone.
  • +
  • tolerance (Optional): The tolerance used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes.
  • +
  • unit_of_measurement (Optional): The unit of measurement for distance. Valid values are (km, m, mi, ft) [kilometers, meters, miles and feet respectively]. The default value is kilometers.
  • +
+

To add multiple proximity components, simply use a list in your configuration.yaml file:

+
# Example configuration.yaml entry
+proximity:
+  home:
+    ignored_zones:
+      - twork
+      - elschool
+    devices:
+      - device_tracker.nwaring_nickmobile
+      - device_tracker.eleanorsiphone
+      - device_tracker.tsiphone
+    tolerance: 50
+    unit_of_measurement: mi
+  home3:
+    devices:
+      - device_tracker.tsiphone
+    tolerance: 50
+  work:
+    devices:
+      - device_tracker.elanorsiphone
+    tolerance: 10
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/python_script/index.html b/components/python_script/index.html new file mode 100644 index 0000000000..11a32d429c --- /dev/null +++ b/components/python_script/index.html @@ -0,0 +1,263 @@ + + + + + + + + + Python Scripts - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Python Scripts +

+
+
+

This component allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the <config>/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:

+ + + + + + + + + + + + + + + + + + + + + +
NameDescription
hassThe Home Assistant object. Access is only allowed to call services, set/remove states and fire events. API reference
dataThe data passed to the Python Script service call.
loggerA logger to allow you to log messages: logger.info(), logger.warning(), logger.error(). API reference
+

Writing your first script

+
    +
  • Add to configuration.yaml: python_script:
  • +
  • Create folder <config>/python_scripts
  • +
  • Create a file hello_world.py in the folder and give it this content:
  • +
+
name = data.get('name', 'world')
+logger.info("Hello {}".format(name))
+hass.bus.fire(name, { "wow": "from a Python script!" })
+
+
+
    +
  • Start Home Assistant
  • +
  • Call service python_script/hello_world with parameters
  • +
+
{
+  "name": "you"
+}
+
+
+

Calling Services

+

The following example shows how to call a service from python_script. This script takes two parameters: entity_id (required), rgb_color (optional) and calls light.turn_on service by setting the brightness value to 255.

+
entity_id = data.get('entity_id')
+rgb_color = data.get('rgb_color', [255, 255, 255])
+if entity_id is not None:
+    service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 }
+    hass.services.call('light', 'turn_on', service_data, False)
+
+
+

The above python_script can be called using the following JSON as an input.

+
{"entity_id": "light.bedroom", "rgb_color": [255, 0, 0] }
+
+
+

For more examples, visit the Scripts section in our forum.

+
+
+ +
+
+ + + + + + + diff --git a/components/qwikswitch/index.html b/components/qwikswitch/index.html new file mode 100644 index 0000000000..b6f7643f30 --- /dev/null +++ b/components/qwikswitch/index.html @@ -0,0 +1,484 @@ + + + + + + + + + QwikSwitch QSUSB Hub - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ QwikSwitch QSUSB Hub +

+
+
+

The qwikswitch component is the main component to integrate various QwikSwitch devices with Home Assistant.

+

Loading the qwikswitch component automatically adds all devices from the QS Mobile application. QS Mobile controls the QSUSB Modem device.

+

Currently QwikSwitch relays and LED dimmers are supported (tested). QwikSwitch relay devices can be switches or lights in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a switch, otherwise as a light.

+

Example configuration:

+
# Example configuration.yaml entry
+qwikswitch:
+   url: http://127.0.0.1:2020
+
+
+

Configuration variables:

+
    +
  • url (Required): The URL including the port of your QwikSwitch hub.
  • +
  • dimmer_adjust (Optional): A decimal value to adjust the brightness of the dimmer exponentially. Increasing this value allows dimmers that reaches full brightness with low values in QS Mobile to appear more linear in Home Assistant. Recommended values between 1 and 2 and the default is 1.
  • +
  • button_events (Optional): A comma separated list of button types that will generate events. Details below.
  • +
+

QwikSwitch Buttons

+

QwikSwitch devices (i.e. transmitter buttons) will fire events on the Home Assistant bus. These events can then be used as triggers for any automation action, as follows:

+
automation:
+  - alias: Action - Respond to button press
+    trigger:
+      platform: event
+      event_type: qwikswitch.button.@12df34
+
+
+

event_type names should be in the format qwikswitch.button.@__ID__. where @__ID__ will be captured in the Home Assistant log when pressing the button. Alternatively, you can also get the device ID from the QS Mobile application or using the listen API call by browsing to http://127.0.0.1:2020/&listen and then pressing the button.

+

By default events will be fired if the value in the command (cmd) field of the listen packet equals:

+
    +
  • TOGGLE - Normal QwikSwitch Transmitter button
  • +
  • SCENE EXE - QwikSwitch Scene Transmitter buttons
  • +
  • LEVEL - QwikSwitch OFF Transmitter buttons
  • +
+

The list of recognized commands can be extended for Keyfobs, door sensors, and PIR transmitters with the button_events configuration option. button_events contain a comma separated list of commands that will fire Home Assistant events. By default it is: TOGGLE,SCENE EXE,LEVEL.

+

On some QS Mobile servers button events are only generated for switches added to the QS Mobile application, so it might be best to test button presses through the /&listen API

+
+
+ +
+
+ + + + + + + diff --git a/components/rainbird/index.html b/components/rainbird/index.html new file mode 100644 index 0000000000..e677a540f7 --- /dev/null +++ b/components/rainbird/index.html @@ -0,0 +1,468 @@ + + + + + + + + + Rain Bird - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Rain Bird +

+
+
+

This rainbird component allows interacting with LNK WiFi module of the Rain Bird Irrigation system in Home Assistant.

+

To enable it, add the following to your configuration.yaml file:

+
rainbird:
+  host: '1.1.1.1'
+  password: 'XXXXXXX'
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your LNK WiFi Module.
  • +
  • password (Required): The password for accessing the module.
  • +
+

Finish its configuration by visiting the Rain Bird sensor and Rain Bird switch documentation.

+

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/components/raincloud/index.html b/components/raincloud/index.html new file mode 100644 index 0000000000..8b5b969e0a --- /dev/null +++ b/components/raincloud/index.html @@ -0,0 +1,470 @@ + + + + + + + + + Melnor Raincloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melnor Raincloud +

+
+
+

The raincloud component allows you to integrate your Melnor RainCloud sprinkler system in Home Assistant.

+

To enable it, add the following to your configuration.yaml file:

+
# 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, Raincloud sensor and Raincloud switch documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/raspihats/index.html b/components/raspihats/index.html new file mode 100644 index 0000000000..3a68ac392f --- /dev/null +++ b/components/raspihats/index.html @@ -0,0 +1,206 @@ + + + + + + + + + Raspihats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspihats +

+
+
+

The raspihats component is the base for all related Raspihats platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages.

+
+
+ +
+
+ + + + + + + diff --git a/components/recorder/index.html b/components/recorder/index.html new file mode 100644 index 0000000000..36ba91830e --- /dev/null +++ b/components/recorder/index.html @@ -0,0 +1,439 @@ + + + + + + + + + Recorder - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Recorder +

+
+
+

The recorder component is storing details in a database which then are handled by the history component.

+

Home Assistant uses SQLAlchemy 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, MariaDB, PostgreSQL, or MS SQL Server.

+

The default database engine is SQLite which doesn’t require any configuration. The database is stored in your Home Assistant configuration directory (.homeassistant) and called home-assistant_v2.db.

+

To setup the recorder component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+recorder:
+
+
+
+

Configuration Variables

+
+
recorder
+
+

(map)(Required)Enables the recorder component. Only allowed once.

+
+
+
+
db_url
+
+

(URL)(Optional)The URL which points to your database.

+
+
purge_keep_days
+
+

(int)(Optional)Specify the number of history days to keep in recorder database after a purge.

+

Default value: 10

+
+
purge_interval
+
+

(int)(Optional)How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the service call purge when required without impacting the purge schedule. If this is set to 0 (zero), automatic purging is disabled.

+

Default value: 1

+
+
exclude
+
+

(map)(Optional)Configure which components should be excluded

+
+
+
+
domains
+
+

(List)(Optional)The list of domains to be excluded from recordings.

+
+
entities
+
+

(List)(Optional)The list of entity ids to be excluded from recordings.

+
+
+
+
include
+
+

(map)(Optional)Configure which components should be included in recordings. If set, all other entities will not be recorded.

+
+
+
+
domains
+
+

(List)(Optional)The list of domains to be included in the recordings.

+
+
entities
+
+

(List)(Optional)The list of entity ids to be included in the recordings.

+
+
+
+
+
+
+
+

Define domains and entities to exclude (aka. blacklist). This is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually these are entities/domains which do not change (like weblink) or rarely change (updater or automation).

+
# Example configuration.yaml entry with exclude
+recorder:
+  purge_keep_days: 5
+  db_url: sqlite:///home/user/.homeassistant/test
+  exclude:
+    domains:
+      - automation
+      - weblink
+      - updater
+    entities:
+      - sun.sun # Don't record sun data
+      - sensor.last_boot # Comes from 'systemmonitor' sensor platform
+      - sensor.date
+
+
+

Define domains and entities to record by using the include configuration (aka. whitelist). If you have a lot of entities in your system and your exclude lists possibly get very large, it might be better just to define the entities or domains to record.

+
# Example configuration.yaml entry with include
+recorder:
+  include:
+    domains:
+      - sensor
+      - switch
+      - media_player
+
+
+

Use the include list to define the domains/entities to record, and exclude some of them with in the exclude list. This makes sense if you for instance include the sensor domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the include entities list just include the sensor domain and exclude the sensor entities you are not interested in.

+
# Example configuration.yaml entry with include and exclude
+recorder:
+  include:
+    domains:
+      - sensor
+      - switch
+      - media_player
+  exclude:
+    entities:
+     - sensor.last_boot
+     - sensor.date
+
+
+

If you only want to hide events from e.g. your history, take a look at the history component. 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).

+

Service purge

+

Call the service recorder.purge to start a purge task which deletes events and states older than x days, according to keep_days service data.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
keep_daysyesThe number of history days to keep in recorder database (defaults to the component purge_keep_days configuration)
repackyesRewrite the entire database, possibly saving some disk space (only supported for SQLite)
+

Restore State

+

If the recorder component is activated then some components support restore_state which will restore the state of the entity after Home Assistant is started to the state before Home Assistant was stopped. Please make sure that you do not exclude the entities for which you want the state to be restored from your recordings. An incomplete list of components that currently support restore_state:

+ +

Custom database engines

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Database enginedb_url
SQLitesqlite:///PATH/TO/DB_NAME
MariaDBmysql://SERVER_IP/DB_NAME?charset=utf8
MariaDB        mysql://user:password@SERVER_IP/DB_NAME?charset=utf8
MySQLmysql://SERVER_IP/DB_NAME?charset=utf8
MySQL          mysql://user:password@SERVER_IP/DB_NAME?charset=utf8
MySQL (pymysql)mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8
MySQL (pymysql)mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8
PostgreSQLpostgresql://SERVER_IP/DB_NAME
PostgreSQLpostgresql://scott:tiger@SERVER_IP/DB_NAME
MS SQL Servermssql+pymssql://user:pass@SERVER_IP/DB_NAME?charset=utf8
+

+If you use MariaDB 10 you need to add port 3307 to the SERVER_IP, e.g., mysql://user:password@SERVER_IP:3307/DB_NAME?charset=utf8. ++If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the service file. +bash +$ sudo nano /etc/systemd/system/home-assistant@homeassistant.service + +and add the service for PostgreSQL: + +[Unit] +Description=Home Assistant +After=network.target postgresql.service + +Save the file then reload systemctl: +bash +$ sudo systemctl daemon-reload + +

+

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.

+

MariaDB and MySQL

+

If you are in a virtual environment, don’t forget to activate it before installing the mysqlclient Python package described below.

+
pi@homeassistant:~ $ sudo su homeassistant -s /bin/bash  
+homeassistant@homeassistant:~$ source /srv/homeassistant/bin/activate
+(homeassistant) homeassistant@homeassistant:~$ pip3 install mysqlclient
+
+
+

For MariaDB you may have to install a few dependencies. If you’re using MariaDB version 10.2, libmariadbclient-dev was renamed to libmariadb-dev, please install the correct package based on your MariaDB version.

+

On the Python side we use the mysqlclient:

+
$ 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:

+
$ sudo apt-get install default-libmysqlclient-dev libssl-dev
+$ 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.

+

PostgreSQL

+

For PostgreSQL you may have to install a few dependencies:

+
$ sudo apt-get install postgresql-server-dev-X.Y
+$ pip3 install psycopg2
+
+
+

MS SQL Server

+

For MS SQL Server you may have to install a few dependencies:

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

+
$ sudo su -s /bin/bash homeassistant
+$ source /srv/homeassistant/bin/activate
+$ pip3 install pymssql
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/remember_the_milk/index.html b/components/remember_the_milk/index.html new file mode 100644 index 0000000000..1e1460179c --- /dev/null +++ b/components/remember_the_milk/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Remember The Milk - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Remember The Milk +

+
+
+

The Remember The Milk (RTM) component allows you to create tasks in remember_the_milk 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.

+

Setup

+

The setup consists of two steps: getting an API key and registering your account

+

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. With the API key you will also receive your personal shared secret. Both of them need to be stored in your Home Assistant configuration:

+
# Example configuration.yaml entry
+
+remember_the_milk:
+  - name: your_rtm_account
+    api_key: <your secret api key goes here>
+    shared_secret: <your secret shared secret goes here>
+
+
+
+

Configuration variables:

+
+

Configuration Variables

+
+
name
+
+

(string)(Required)Name of the RTM account, as you can have several accounts in RTM. The name must be unique.

+
+
api_key
+
+

(string)(Required)Put the API key you’ve received in here.

+
+
shared_secret
+
+

(string)(Required)Put the shared secret you’ve received in here.

+
+
+
+

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.

+

Creating/updating tasks with service create_task

+

This component offers a new service domain remember_the_milk with the services <account>_create_task. You can call this service with the argument name and the optional parameter id to create a new task in your Remember The Milk account. You can call this service from your usual automations.

+

If you set an id and a task with that id exists already, the existing task is updated, rather than creating a new task. This way you can change the name of the task. If you do not set an id, a new task is created with every call. If you’re using this from an automation, you could use the name of your automation as id or the entity that triggered the task to be created. This way you can later on update or complete this task.

+

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.

+

Note: +At the moment, smart syntax is not supported when updating tasks. All smart syntax commands are ignored during the update and will end up as normal text in the name of the task.

+ + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescriptionExample
namenoName of the new task, you can use the smart syntax here.“do this ^today #from_hass”
idyesIdentifier for the task you’re creating, can be used to update or complete the task later on“myid”
+

Completing tasks with service complete_task

+

Complete a tasks that was privously created from Home Assistant. You can not complete tasks that were created outside of Home Assistant.

+

If you have created your task with an id, calling <account>_complete_task with the parameter id will then complete your task.

+ + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescriptionExample
idnoIdentifier that was defined when creating the task“myid”
+

Automation example

+

Here’s an example for an automation that creates a new task whenever sensor.mysensor is on and completes it when the sensor reports off. This way it reminds you to switch it off. By using the entity_id as id for the task, you can use the same rule also for multiple sensors.

+
- id: mysensor_on
+  trigger:
+    platform: state
+    entity_id: sensor.mysensor
+    to: on
+  action:
+    - service: remember_the_milk.myaccount_create_task
+      data_template:
+        name: "Please switch of "
+        id: ""
+- id: mysensor_off
+  trigger:
+    platform: state
+    entity_id: sensor.mysensor
+    to: off
+  action:
+    - service: remember_the_milk.myaccount_complete_task
+      data_template:
+        id: ""
+
+
+
+

Disclaimer

+

This product uses the Remember The Milk API but is not endorsed or certified by Remember The Milk.

+
+
+ +
+
+ + + + + + + diff --git a/components/remote.apple_tv/index.html b/components/remote.apple_tv/index.html new file mode 100644 index 0000000000..73ff52a4c7 --- /dev/null +++ b/components/remote.apple_tv/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Apple TV Remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Apple TV Remote +

+
+
+

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

+
service: remote.send_command
+data:
+  entity_id: remote.apple_tv
+  command:
+    - left
+    - left
+    - menu
+    - select
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/remote.harmony/index.html b/components/remote.harmony/index.html new file mode 100644 index 0000000000..885daeef41 --- /dev/null +++ b/components/remote.harmony/index.html @@ -0,0 +1,357 @@ + + + + + + + + + Harmony Hub Remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Harmony Hub Remote +

+
+
+

The harmony remote platform allows you to control the state of your Harmony Hub Device.

+

Supported units:

+
    +
  • Harmony Hub
  • +
  • Harmony Companion
  • +
  • Harmony Pro
  • +
  • Harmony Elite
  • +
+

The preferred way to setup the Harmony remote is by enabling the discovery component.

+

However, if you want to manually configure the device, you will need to add its settings to your configuration.yaml file:

+
# Example configuration.yaml entry
+remote:
+  - platform: harmony
+    name: Bedroom
+    host: 10.168.1.13
+
+
+

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.

+
# Example configuration.yaml entry with discovery
+  - platform: harmony
+    name: Living Room 
+    activity: Watch TV
+
+
+

Configuration variables:

+
    +
  • name (Required): The hub’s name to display in the frontend. This name must match the name you have set on the Hub.
  • +
  • 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 turn_on service is called without any data. Overrides the activity setting for this discovered hub.
  • +
  • delay_secs (Optional): Default duration in seconds between sending commands to a device.
  • +
+

Configuration file:

+

Upon startup one file will be written to your Home Assistant configuration directory per device in the following format: harmony_REMOTENAME.conf. The file will contain:

+
    +
  • List of all programmed activity names and ID numbers
  • +
  • List of all programmed device names and ID numbers
  • +
  • List of all available commands per programmed device
  • +
+

Service remote.turn_off

+

Turn off all devices that were switched on from the start of the current activity.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific remote, else target all.
+

Service remote.turn_on

+

Start an activity. Will start the default activity from configuration.yaml if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your Home Assistant configuration directory.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific remote, else target all.
activityyesActivity ID or Activity Name to start.
+

Service remote.send_command

+

Send a single command or a set of commands to one device, device ID and available commands are written to the configuration file at startup. You can optionally specify the number of times you wish to repeat the command(s) and delay you want between repeated command(s).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific remote, else target all.
devicenoDevice ID to send the command to.
commandnoA single command or a list of commands to send.
num_repeatsyesThe number of times to repeat the command(s).
delay_secsyesThe number of seconds between sending each command.
+

A typical service call for sending several button presses looks like this:

+
service: remote.send_command
+data:
+  entity_id: remote.tv_room
+  command:
+    - home
+    - 1
+    - 2
+  device: 4576546
+  delay_secs: 0.6
+
+
+

Service remote.harmony_sync

+

Synchronize the Harmony device with the Harmony web service if any changes are made from the web portal or app.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific remote, else target all.
+

Examples

+

Template sensors can be utilized to display current activity in the frontend.

+
sensor:
+  - platform: template
+    sensors:
+      family_room:
+        value_template: '{{ states.remote.family_room.attributes.current_activity }}'
+        friendly_name: 'Family Room'
+      bedroom:
+        value_template: '{{ states.remote.bedroom.attributes.current_activity }}'
+        friendly_name: 'bedroom'
+
+
+

The example below shows how to control an input_boolean switch using the Harmony remote’s current activity. The switch will turn on when the remote’s state changes and the Kodi activity is started and off when the remote’s state changes and the current activity is “PowerOff”.

+
automation:
+  - alias: "Watch TV started from harmony hub"
+    trigger:
+      platform: state
+      entity_id: remote.family_room
+    condition:
+      condition: template
+      value_template: '{{ trigger.to_state.attributes.current_activity == "Kodi" }}'
+    action:
+      service: input_boolean.turn_on
+      entity_id: input_boolean.notify
+  - alias: "PowerOff started from harmony hub"
+    trigger:
+      platform: state
+      entity_id: remote.family_room
+    condition:
+      condition: template
+      value_template: '{{ trigger.to_state.attributes.current_activity == "PowerOff" }}'
+    action:
+      service: input_boolean.turn_off
+      entity_id: input_boolean.notify
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/remote.itach/index.html b/components/remote.itach/index.html new file mode 100644 index 0000000000..3065bc7c20 --- /dev/null +++ b/components/remote.itach/index.html @@ -0,0 +1,216 @@ + + + + + + + + + iTach Remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ iTach Remote +

+
+
+

The itach remote platform allows you to control IR devices with a Global Caché iTach Device 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 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:

+
# Example configuration.yaml entry
+remote:
+  - platform: itach
+    name: Living Room
+    host: itach023fdc
+    devices:
+      - name: TV
+        connaddr: 2
+        commands:
+          - name: "ON"
+            data: "0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689"
+          - name: "OFF"
+            data: "0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689"
+
+
+

Configuration variables:

+
    +
  • name (Optional): The iTach’s name to display in the front end.
  • +
  • host (Required): The iTach’s IP address.
  • +
  • port (Optional): The iTach’s port. 4998 is default.
  • +
  • devices array (Required): Devices controlled by the iTach. +
      +
    • name (Required): Name of the device.
    • +
    • modaddr (Optional): iTach module address for the IR emitter. 1 is default.
    • +
    • connaddr (Required): iTach connection location for the IR emitter. (Note connaddr is a misleading label. Do not put the connection address here. Technically the connection address is the combination of the module address plus the connection location).
    • +
    • commands array (Required): Commands available to send to the device. +
        +
      • name (Required): Command name.
      • +
      • data (Required): Hex command data.
      • +
      +
    • +
    +
  • +
+

An example to call the component from developer tools using the remote.send_command service: { "entity_id":"remote.tv", "command":"menu" }

+

Note: Global Cache devices expect data in their own format of “sendir…”. This component converts hex code to Global Cache IR form.

+

API Docs:

+ +
+
+ +
+
+ + + + + + + diff --git a/components/remote.kira/index.html b/components/remote.kira/index.html new file mode 100644 index 0000000000..cfb4770368 --- /dev/null +++ b/components/remote.kira/index.html @@ -0,0 +1,185 @@ + + + + + + + + + Kira Remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Kira Remote +

+
+
+

The kira platform allows you to send IR commands via Kira modules from within Home Assistant.

+

For configuration information see the Kira component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/remote.xiaomi_miio/index.html b/components/remote.xiaomi_miio/index.html new file mode 100644 index 0000000000..a1e76d8759 --- /dev/null +++ b/components/remote.xiaomi_miio/index.html @@ -0,0 +1,303 @@ + + + + + + + + + Xiaomi IR Remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi IR Remote +

+
+
+

The xiaomi miio remote platform allows you to send IR commands from your Xiaomi IR Remote (ChuangmiIr).

+

Please follow the instructions on Retrieving the Access Token to get the API token to use in the configuration.yaml file.

+

Configuring the Platform

+

To add a Xiaomi IR Remote to your installation, add the following to your configuration.yaml file:

+
remote:
+  - platform: xiaomi_miio
+    host: 192.168.42.42
+    token: YOUR_TOKEN
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP of your remote.

+
+
token
+
+

(string)(Required)The API token of your remote.

+
+
name
+
+

(string)(Optional)The name of your remote.

+
+
slot
+
+

(int)(Optional)The slot used to save learned command.

+

Default value: 1

+
+
timeout
+
+

(int)(Optional)Timeout for learning a new command.

+

Default value: 30

+
+
hidden
+
+

(boolean)(Optional)Hide the entity from UI. There is currently no reason to show the entity in UI as turning it off or on does nothing.

+

Default value: true

+
+
commands
+
+

(map)(Optional)

+
+
+
+
command
+
+

(list)(Required)A list of commands as raw (learned command) or pronto hex code.

+
+
+
+
+
+

Full Configuration

+
remote:
+  - platform: xiaomi_miio
+    name: "bathroom remote"
+    host: 192.168.42.42
+    token: YOUR_TOKEN
+    slot: 1
+    timeout: 30
+    hidden: false
+    commands:
+      activate_towel_heater:
+        command:
+          - raw:base64:[optional_frequency]
+      read_bad_poem:
+        command:
+          - raw:base64:[optional_frequency]
+          - pronto:pronto_hex:[optional_repeat]
+
+
+

Use named commands to create UI buttons

+
script:
+  towel_heater:
+    sequence:
+      - service: remote.send_command
+        entity_id: 'remote.bathroom_remote'
+        data:
+          command:
+            - 'activate_towel_heater'
+  please_cover_your_ears:
+    sequence:
+      - service: remote.send_command
+        entity_id: 'remote.bathroom_remote'
+        data:
+          command:
+            - 'read_bad_poem'
+
+
+

Command Types

+

The Xiaomi IR Remote Platform currently supports two different formats for IR codes.

+

Raw

+

A raw command is a command learned from remote.xiaomi_miio_learn_command.

+

A raw command is defined as in the following example: +raw:Z6UFANEAAAAjAQAAAwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAE= +with an optional last parameter of frequency: +raw:Z6UFANEAAAAjAQAAAwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAE=:38400

+

Pronto Hex Code

+

A pronto hex code is a hex code often supplied by the device manufacturer.

+

A pronto hex code is defined as in the following example: +pronto:0000 006C 0022 0002 015B 00AD 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0623 015B 0057 0016 0E6E +with an optional last parameter of repeats (required by some devices): +pronto:0000 006C 0022 0002 015B 00AD 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0623 015B 0057 0016 0E6E:2

+

Platform Services

+

The Xiaomi IR Remote Platform registers two services.

+

remote.send_command

+

Allows sending either named commands using an identifier or sending commands as one of the two types defined in Command Types.

+

remote.xiaomi_miio_learn_command

+

Used to learn new commands.

+

Use the entity_id of the Xiaomi IR Remote to start a learning process.

+

slot and timeout can be specified, but multiple commands learned to the same slot can still be sent using remote.send_command even if they are overwritten.

+

After learning the command the base64 string can be found as a notification in Overview, the string can be copied by left clicking on the string and choose the copy option.

+
+
+ +
+
+ + + + + + + diff --git a/components/remote/index.html b/components/remote/index.html new file mode 100644 index 0000000000..112836419c --- /dev/null +++ b/components/remote/index.html @@ -0,0 +1,185 @@ + + + + + + + + + Remotes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Remotes +

+
+
+

Keeps track which remotes are in your environment, their state and allows you to control them.

+
    +
  • Maintains a state per remote and a combined state all_remotes.
  • +
  • Registers services remote/turn_on, remote/turn_off, remote/toggle, and remote/send_command to control remotes.
  • +
+

Use the services

+

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.

+
{"entity_id":"remote.family_room"}
+
+
+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on a specific remote, else target all.
+

See the platform documentation for each type of remote for more detailed examples.

+
+
+ +
+
+ + + + + + + diff --git a/components/rest_command/index.html b/components/rest_command/index.html new file mode 100644 index 0000000000..3be59225a0 --- /dev/null +++ b/components/rest_command/index.html @@ -0,0 +1,233 @@ + + + + + + + + + RESTful Command - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RESTful Command +

+
+
+

This component can expose regular REST commands as services. Services can be called from a script or in automation.

+

To enable this switch, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+rest_command:
+  example_request:
+    url: 'http://example.com/'
+
+
+

Configuration variables:

+
    +
  • [service_name] (Required): The name used to expose the service. E.g., in the above example, it would be rest_command.example_request. +
      +
    • url (Required): The URL (support template) for sending request.
    • +
    • method (Optional): HTTP method to use (get, post, put, or delete). Defaults to get.
    • +
    • headers (Optional): The headers for the requests.
    • +
    • payload (Optional): A string/template to send with request.
    • +
    • username (Optional): The username for HTTP authentication.
    • +
    • password (Optional): The password for HTTP authentication.
    • +
    • timeout (Optional): Timeout for requests. Defaults to 10 seconds.
    • +
    • content_type (Optional): Content type for the request.
    • +
    +
  • +
+

The commands can be dynamic, using templates to insert values of other entities. Service call support variables for template stuff.

+
+
+ +
+
+ + + + + + + diff --git a/components/rflink/index.html b/components/rflink/index.html new file mode 100644 index 0000000000..a7e22904cb --- /dev/null +++ b/components/rflink/index.html @@ -0,0 +1,574 @@ + + + + + + + + + RFLink - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFLink +

+
+
+

The rflink component supports devices that use RFLink gateway firmware, for example the Nodo RFLink Gateway. RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver).

+

The 433 MHz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors.

+

RFLink Gateway supports a number of RF frequencies, using a wide range of low-cost hardware. Their website provides details for various RF transmitters, receivers and transceiver modules for 433MHz, 868MHz and 2.4 GHz.

+

+ Note: Versions later than R44 add support for Ikea Ansluta, Philips Living Colors Gen1 and MySensors devices. +

+

A complete list of devices supported by RFLink can be found here.

+

This component is tested with the following hardware/software:

+
    +
  • Nodo RFLink Gateway V1.4/RFLink R46
  • +
+

To enable RFLink in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+rflink:
+  port: /dev/serial/by-id/usb-id01234
+
+
+

Configuration variables:

+
    +
  • port (Required): The path to RFLink USB/serial device or TCP port in TCP mode.
  • +
  • host (Optional): Switches to TCP mode, connects to host instead of to USB/serial.
  • +
  • wait_for_ack (Optional): Wait for RFLink to acknowledge commands sent before sending new command (slower but more reliable). Defaults to True
  • +
  • ignore_devices (Optional): List of device id’s to ignore. Supports wildcards (*) at the end.
  • +
  • reconnect_interval (Optional): Time in seconds between reconnect attempts.
  • +
+

Complete example:

+
# Example configuration.yaml entry
+rflink:
+  port: /dev/serial/by-id/usb-id01234
+  wait_for_ack: False
+  ignore_devices:
+    - newkaku_000001_01
+    - digitech_*
+
+
+

TCP mode

+

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:

+
$ socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr
+
+
+

Other methods of exposing the serial interface over TCP are possible (eg: ESP8266 or using Arduino Wifi shield). Essentially the serial stream should be directly mapped to the TCP stream.

+

Tested with Wifi serial bridge esp-link 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 is recommended for the CC2500 transceiver (used for Ikea Ansluta and Philips Living Colors) +

+

+When re-flashing the Arduino MEGA, disconnect the ESP8266 to avoid programming difficulties. +

+
# Example configuration.yaml entry
+rflink:
+  host: 192.168.0.10
+  port: 1234
+
+
+

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.

+
light:
+  - platform: rflink
+    automatic_add: true
+switch:
+  - platform: rflink
+    automatic_add: true
+sensor:
+  - platform: rflink
+    automatic_add: true
+
+
+

Ignoring devices

+

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:

+
# Example configuration.yaml entry
+rflink:
+  port: /dev/serial/by-id/usb-id01234
+  wait_for_ack: False
+  ignore_devices:
+    - newkaku_000001_01
+    - digitech_*
+    - kaku_1_*
+
+
+

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 or front! +

+

Device support

+

Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this component please consider testing and adding support yourself or create an issue and mention @aequitas in the description.

+

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.

+

Technical Overview

+
    +
  • Therflink Python module is an 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 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.
  • +
+

Debug Logging

+

For debugging purposes or context when investigating issues you can enable debug logging for Rflink with the following config snippet:

+
logger:
+  default: error
+  logs:
+    rflink: debug
+    homeassistant.components.rflink: debug
+
+
+

This will give you output looking like this:

+
17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: 20;00;Nod
+17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: o RadioFrequencyLink - R
+17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: FLink Gateway V1.1 - R45
+17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: ;
+17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] got packet: 20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R45;
+17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] decoded packet: {'firmware': 'RFLink Gateway', 'revision': '45', 'node': 'gateway', 'protocol': 'unknown', 'hardware': 'Nodo RadioFrequencyLink', 'version': '1.1'}
+17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] got event: {'version': '1.1', 'firmware': 'RFLink Gateway', 'revision': '45', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'}
+17-03-07 20:12:05 DEBUG (MainThread) [homeassistant.components.rflink] event of type unknown: {'version': '1.1', 'firmware': 'RFLink Gateway', 'revision': '45', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/rfxtrx/index.html b/components/rfxtrx/index.html new file mode 100644 index 0000000000..99919ded1a --- /dev/null +++ b/components/rfxtrx/index.html @@ -0,0 +1,475 @@ + + + + + + + + + RFXtrx - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFXtrx +

+
+
+

The rfxtrx component supports RFXtrx devices by RFXCOM which communicate in the frequency range of 433.92 MHz.

+

To enable RFXtrx in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+rfxtrx:
+  device: PATH_TO_DEVICE
+
+
+

Configuration variables:

+
    +
  • device (Required): The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0
  • +
  • debug (Optional): If you want to receive debug output.
  • +
  • dummy (Optional): Then you have need a connected drive to test your settings. Can be useful for debugging and testing.
  • +
+

Supported protocols

+

Not all protocols as advertised are enabled on initial setup of your transceiver. Enabling all protocols is not recommended either. Your 433.92 product not showing in the logs? Visit the RFXtrx website to download RFXmgmr and enable the required protocol.

+
+
+ +
+
+ + + + + + + diff --git a/components/ring/index.html b/components/ring/index.html new file mode 100644 index 0000000000..11aa327c3a --- /dev/null +++ b/components/ring/index.html @@ -0,0 +1,469 @@ + + + + + + + + + Ring - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ring +

+
+
+

The ring implementation allows you to integrate your Ring.com devices in Home Assistant.

+

Currently only doorbells are supported by this sensor.

+

To enable device linked in your Ring.com account, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+ring:
+  username: you@example.com
+  password: secret
+
+
+

Configuration variables:

+
    +
  • username (Required): The username for accessing your Ring account.
  • +
  • password (Required): The password for accessing your Ring account.
  • +
+

Finish its configuration by visiting the Ring binary sensor or Ring sensor documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/rpi_gpio/index.html b/components/rpi_gpio/index.html new file mode 100644 index 0000000000..e0c183d398 --- /dev/null +++ b/components/rpi_gpio/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Raspberry Pi GPIO - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspberry Pi GPIO +

+
+
+

The rpi_gpio component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages.

+
+
+ +
+
+ + + + + + + diff --git a/components/rpi_pfio/index.html b/components/rpi_pfio/index.html new file mode 100644 index 0000000000..1a6c11f43a --- /dev/null +++ b/components/rpi_pfio/index.html @@ -0,0 +1,207 @@ + + + + + + + + + PiFace Digital I/O - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PiFace Digital I/O +

+
+
+

The rpi_pfio component is the base for all related PiFace Digital I/O (PFIO) 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/components/rss_feed_template/index.html b/components/rss_feed_template/index.html new file mode 100644 index 0000000000..2fe1192b03 --- /dev/null +++ b/components/rss_feed_template/index.html @@ -0,0 +1,184 @@ + + + + + + + + + RSS feed template - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RSS feed template +

+
+
+

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.

+
# Example configuration.yaml entry
+rss_feed_template:
+  # Accessible on <home assistant url>/api/rss_template/garden
+  # Example: https://localhost:8123/api/rss_template/garden
+  garden:
+    requires_api_password: False
+    title: "Garden {{ as_timestamp(now())|timestamp_custom('%H:%M', True) }}"
+    items:
+    - title: "Outside temperature"
+      description: "{% if is_state('sensor.temp_outside','unknown') %}---{% else %}{{states.sensor.temp_outside.state}} °C{% endif %}"
+
+
+

Configuration variables:

+
    +
  • requires_api_password: (Optional): If true and an API password is set, the password must be passed via ‘?api_password=…’ parameter (Default: True)
  • +
  • feed_id (Required): The key is used as the ID of the feed. The feed can be accessed at /api/rss_template/feed_id (example: ‘garden’)
  • +
  • title (Optional): The title of the feed, which is parsed as template.
  • +
  • items (Required): A list of feed items.
  • +
  • items/title (Optional): The title of the item, which is parsed as template.
  • +
  • items/description (Optional): The description of the item, which is parsed as template.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/satel_integra/index.html b/components/satel_integra/index.html new file mode 100644 index 0000000000..d4f41a93e8 --- /dev/null +++ b/components/satel_integra/index.html @@ -0,0 +1,510 @@ + + + + + + + + + Satel Integra Alarm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Satel Integra Alarm +

+
+
+

The satel_integra component will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. Compatible with ETHM-1 Plus module with firmware version > 2.00 (version 2.04 confirmed).

+

There is currently support for the following device types within Home Assistant:

+ +

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:

+
# 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 its name (does not need to match the one specified in Satel Integra alarm). For more information on the available zone types, take a look at the Binary Sensor 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:

+
  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/components/scene.deconz/index.html b/components/scene.deconz/index.html new file mode 100644 index 0000000000..99f464f0c0 --- /dev/null +++ b/components/scene.deconz/index.html @@ -0,0 +1,206 @@ + + + + + + + + + deCONZ scenes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ deCONZ scenes +

+
+
+

See the deCONZ main component for configuration instructions.

+

Entity Ids will be scene.group_scene_name, where group is which group the scene belongs to and the name of the scene, both group and name are defined in deCONZ.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene.hunterdouglas_powerview/index.html b/components/scene.hunterdouglas_powerview/index.html new file mode 100644 index 0000000000..2b7d0ac9cd --- /dev/null +++ b/components/scene.hunterdouglas_powerview/index.html @@ -0,0 +1,196 @@ + + + + + + + + + PowerView Scenes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PowerView Scenes +

+
+
+

Implements the Hunter Douglas PowerView platform scene control. It queries the PowerView Hub and Home Assistant displays them as scenes.

+

Scenes can be activated using the service scene.turn_on.

+
# Example configuration.yaml entry
+scene:
+  platform: hunterdouglas_powerview
+  address: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • address (Required): IP address of the PowerView Hub, eg. 192.168.1.10.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/scene.knx/index.html b/components/scene.knx/index.html new file mode 100644 index 0000000000..63561ab3ae --- /dev/null +++ b/components/scene.knx/index.html @@ -0,0 +1,229 @@ + + + + + + + + + KNX Scene - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Scene +

+
+
+

The knx scenes platform allows you to trigger KNX scenes.

+

The knx component must be configured correctly, see KNX Component.

+
# Example configuration.yaml entry
+scene:
+  - name: Romantic
+    platform: knx
+    address: 8/8/8
+    scene_number: 23
+
+
+

Configuration variables:

+
    +
  • name (Optional): A name for this device used within Home Assistant.
  • +
  • address: KNX group address of the binary sensor.
  • +
  • scene_number KNX scene number to be activated.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/scene.lifx_cloud/index.html b/components/scene.lifx_cloud/index.html new file mode 100644 index 0000000000..69c13a3768 --- /dev/null +++ b/components/scene.lifx_cloud/index.html @@ -0,0 +1,207 @@ + + + + + + + + + LIFX Cloud Scenes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LIFX Cloud Scenes +

+
+
+

The lifx_cloud scene platform allows you to activate the scenes that LIFX smartphone apps store in the LIFX cloud.

+
# Example configuration.yaml entry
+scene:
+  - platform: lifx_cloud
+    token: YOUR_LIFX_TOKEN
+
+
+

Configuration variables:

+
    +
  • token (Required): The API token for your LIFX Cloud account.
  • +
  • timeout (Optional): Network timeout in seconds (defaults to 10).
  • +
+

Getting an API token

+

You create your API token on the LIFX website:

+
    +
  1. Sign in to the LIFX Cloud
  2. +
  3. Click on your e-mail address and select Settings
  4. +
  5. Now click Generate New Token
  6. +
  7. Enter a meaningful label, such as ‘Home Assistant’
  8. +
  9. Click Generate
  10. +
  11. Copy the token that now appears
  12. +
  13. Paste the token into the Home Assistant configuration file
  14. +
+
+
+ +
+
+ + + + + + + diff --git a/components/scene.litejet/index.html b/components/scene.litejet/index.html new file mode 100644 index 0000000000..d58f1aca29 --- /dev/null +++ b/components/scene.litejet/index.html @@ -0,0 +1,198 @@ + + + + + + + + + LiteJet Scenes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LiteJet Scenes +

+
+
+

To get your LiteJet scenes working with Home Assistant, follow the instructions for the general LiteJet component.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene.lutron_caseta/index.html b/components/scene.lutron_caseta/index.html new file mode 100644 index 0000000000..b3d7a0c9d6 --- /dev/null +++ b/components/scene.lutron_caseta/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Lutron Caseta Scene - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Caseta Scene +

+
+
+

To get Lutron Caseta Scenes working with Home Assistant, follow the instructions for the general Lutron Caseta component.

+

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.

+

Available services: scene.turn_on.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene.tahoma/index.html b/components/scene.tahoma/index.html new file mode 100644 index 0000000000..27db460dc3 --- /dev/null +++ b/components/scene.tahoma/index.html @@ -0,0 +1,200 @@ + + + + + + + + + Tahoma Scene - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tahoma Scene +

+
+
+

The tahoma scene platform lets you trigger scenes added to your Tahoma Box in Home Assistant.

+

Scenes will be added automatically. Please refer to the component configuration on how to setup Tahoma.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene.velux/index.html b/components/scene.velux/index.html new file mode 100644 index 0000000000..ac267a8ef1 --- /dev/null +++ b/components/scene.velux/index.html @@ -0,0 +1,197 @@ + + + + + + + + + Velux Scene - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velux Scene +

+
+
+

The velux scene platform allows you to control your VELUX windows.

+

The requirement is that you have setup the VELUX component.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene.vera/index.html b/components/scene.vera/index.html new file mode 100644 index 0000000000..a237fd085d --- /dev/null +++ b/components/scene.vera/index.html @@ -0,0 +1,219 @@ + + + + + + + + + Vera Scene - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Scene +

+
+
+

The vera platform allows you to control your Vera scenes from within Home Assistant.

+

They will be automatically discovered if the vera component is loaded.

+

For more configuration information see the Vera component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene.wink/index.html b/components/scene.wink/index.html new file mode 100644 index 0000000000..e5494e4e02 --- /dev/null +++ b/components/scene.wink/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Wink Scene - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Scene +

+
+
+

The Wink scene platform allows you to control your Wink shortcuts.

+

The requirement is that you have setup Wink.

+
+
+ +
+
+ + + + + + + diff --git a/components/scene/index.html b/components/scene/index.html new file mode 100644 index 0000000000..e42607da71 --- /dev/null +++ b/components/scene/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Scenes - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Scenes +

+
+
+

You can create scenes that 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.

+
# Example configuration.yaml entry
+scene:
+  - name: Romantic
+    entities:
+      light.tv_back_light: on
+      light.ceiling:
+        state: on
+        xy_color: [0.33, 0.66]
+        brightness: 200
+  - name: Movies
+    entities:
+      light.tv_back_light:
+        state: on
+        brightness: 100
+      light.ceiling: off
+      media_player.sony_bravia_tv:
+        source: HDMI 1
+
+
+

Configuration variables:

+
    +
  • name (Required): Friendly name of scene.
  • +
  • entities (Required): Entities to control.
  • +
+

As you can see, there are two ways to define the states of each entity_id:

+
    +
  • Define the state directly with the entity.
  • +
  • Define a complex state with its attributes.
  • +
+

The mapping from states to services is done with the state helper. So, please have a look there for available states for your scenes.

+

Scenes can be activated using the service scene.turn_on (there is no ‘scene.turn_off’ service).

+
# Example automation
+...
+automation:
+  trigger:
+    platform: state
+    entity_id: device_tracker.sweetheart
+    from: 'not_home'
+    to: 'home'
+  action:
+    service: scene.turn_on
+    entity_id: scene.romantic
+
+
+

+Please note that the scene component currently only supports one service call per entity to achieve the state. Due to this limitation, you cannot set states belonging to different services. A workaround for this limitation is to write a script, which you then turn on in your scene. +

+
+
+ +
+
+ + + + + + + diff --git a/components/script/index.html b/components/script/index.html new file mode 100644 index 0000000000..cd81854fc6 --- /dev/null +++ b/components/script/index.html @@ -0,0 +1,296 @@ + + + + + + + + + Scripts - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Scripts +

+
+
+

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.

+
# Example configuration.yaml entry
+script:
+  message_temperature:
+    sequence:
+      # This is Home Assistant Script Syntax
+      - service: notify.notify
+        data_template:
+          message: Current temperature is {{ states.sensor.temperature.state }}
+
+
+

+Script names (e.g. message_temperature in the example above) are not allowed to contain dash (minus) characters, i.e. -. +The preferred way to separate words for better readability is to use underscore (_) characters. +

+
script: 
+  # Turns on the bedroom lights and then the living room lights 1 minute later
+  wakeup:
+    alias: Wake Up
+    sequence:
+      # This is Home Assistant Script Syntax
+      - event: LOGBOOK_ENTRY
+        event_data:
+          name: Paulus
+          message: is waking up
+          entity_id: device_tracker.paulus
+          domain: light
+      - alias: Bedroom lights on
+        service: light.turn_on
+        data:
+          entity_id: group.bedroom
+          brightness: 100
+      - delay:
+          # supports seconds, milliseconds, minutes, hours
+          minutes: 1
+      - alias: Living room lights on
+        service: light.turn_on
+        data:
+          entity_id: group.living_room
+
+
+

Passing variables to scripts

+

As part of the service, variables can be passed along to a script so they become available within templates in that script.

+

There are two ways to achieve this. One way is using the generic script.turn_on service. To pass variables to the script with this service, call it with the desired variables:

+
# Example configuration.yaml entry
+automation:
+  trigger:
+    platform: state
+    entity_id: light.bedroom
+    from: 'off'
+    to: 'on'
+  action:
+    service: script.turn_on
+    entity_id: script.notify_pushover
+    data:
+      variables:
+        title: 'State change'
+        message: 'The light is on!'
+
+
+

The other way is calling the script as a service directly. In this case, all service data will be made available as variables. If we apply this approach on the script above, it would look like this:

+
# Example configuration.yaml entry
+automation:
+  trigger:
+    platform: state
+    entity_id: light.bedroom
+    from: 'off'
+    to: 'on'
+  action:
+    service: script.notify_pushover
+    data:
+      title: 'State change'
+      message: 'The light is on!'
+
+
+

Using the variables in the script requires the use of data_template:

+
# Example configuration.yaml entry
+script:
+  notify_pushover:
+    sequence:
+      - condition: state
+        entity_id: switch.pushover_notifications
+        state: 'on'
+      - service: notify.pushover
+        data_template:
+          title: "{{ title }}"
+          message: "{{ message }}"
+
+
+

In the Overview

+

Scripts in the Overview panel will be displayed with an ACTIVATE button if the device has no delay: or wait: statement, and as a toggle switch if it has either of those.

+

This is to enable you to stop a running script.

+
+
+ +
+
+ + + + + + + diff --git a/components/scsgate/index.html b/components/scsgate/index.html new file mode 100644 index 0000000000..a6e5e36444 --- /dev/null +++ b/components/scsgate/index.html @@ -0,0 +1,472 @@ + + + + + + + + + SCSGate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SCSGate +

+
+
+

The SCSGate component support the SCSGate 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:

+
# Example configuration.yaml entry
+scsgate:
+  device: PATH_TO_DEVICE
+
+
+

Configuration variables:

+
    +
  • device (Required): The path to your device, e.g. /dev/ttyACM0
  • +
+

How to find the scs_id for your devices

+

The SCSGate component relies on the scsgate Python module.

+

This module provides also a command line tool called scs-monitor. This program can be used to find the IDs of your lights, switches and roller shutters and produce the YAML snippet to insert into your configuration.yaml file.

+

For more information checkout this section of scsgate’s documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.abode/index.html b/components/sensor.abode/index.html new file mode 100644 index 0000000000..5483b18385 --- /dev/null +++ b/components/sensor.abode/index.html @@ -0,0 +1,596 @@ + + + + + + + + + Abode Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Sensor +

+
+
+

The abode sensor platform allows you to monitor your Abode sensors.

+

This platform supports Abode Temperature, Humidity, and Light sensors.

+

The requirement is that you have setup your Abode hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ads/index.html b/components/sensor.ads/index.html new file mode 100644 index 0000000000..d45f7d5ef5 --- /dev/null +++ b/components/sensor.ads/index.html @@ -0,0 +1,616 @@ + + + + + + + + + ADS Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ADS Sensor +

+
+
+

The ads sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type INT, UINT or BYTE.

+

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml +file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: ads
+    adsvar: GVL.temperature
+    unit_of_measurement: '°C'
+    adstype: int
+
+
+
+

Configuration Variables

+
+
adsvar
+
+

(string)(Required)The name of the variable which you want to access.

+
+
adstype
+
+

(string)(Optional)The datatype of the ADS variable, possible values are int, uint, byte.

+

Default value: int

+
+
name
+
+

(string)(Optional)An identifier for the sensor.

+
+
factor
+
+

(integer)(Optional)A factor that divides the stored value before displaying in Home Assistant.

+

Default value: 1

+
+
+
+

The factor can be used to implement fixed decimals. E.g., set factor to 100 if you want to display a fixed decimal value with two decimals. A variable value of 123 will be displayed as 1.23.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.airvisual/index.html b/components/sensor.airvisual/index.html new file mode 100644 index 0000000000..34ab88d46a --- /dev/null +++ b/components/sensor.airvisual/index.html @@ -0,0 +1,356 @@ + + + + + + + + + AirVisual - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AirVisual +

+
+
+

The airvisual sensor platform queries the AirVisual 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 can be +created.

+

This platform requires an AirVisual API key, which can be obtained here. 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. +

+

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:

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

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:

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

+
sensor:
+  - platform: airvisual
+    api_key: abc123
+    monitored_conditions:
+      - us
+      - cn
+    city: sao-paulo
+    state: sao-paulo
+    country: brazil
+
+
+

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AQIStatusDescription
0 - 50GoodAir quality is considered satisfactory, and air pollution poses little or no risk
51 - 100ModerateAir 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 - 150Unhealthy for Sensitive GroupsMembers of sensitive groups may experience health effects. The general public is not likely to be affected
151 - 200UnhealthyEveryone may begin to experience health effects; members of sensitive groups may experience more serious health effects
201 - 300Very unhealthyHealth warnings of emergency conditions. The entire population is more likely to be affected
301+HazardousHealth 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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PollutantSymbolMore Info
Particulate (<= 2.5 μm)PM2.5EPA: Particulate Matter (PM) Pollution
Particulate (<= 10 μm)PM10EPA: Particulate Matter (PM) Pollution
OzoneOEPA: Ozone Pollution
Sulpher DioxideSO2EPA: Sulfur Dioxide (SO2) Pollution
Carbon MonoxideCOEPA: Carbon Monoxide (CO) Pollution in Outdoor Air
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.alarmdecoder/index.html b/components/sensor.alarmdecoder/index.html new file mode 100644 index 0000000000..611ab3b1b1 --- /dev/null +++ b/components/sensor.alarmdecoder/index.html @@ -0,0 +1,580 @@ + + + + + + + + + AlarmDecoder Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AlarmDecoder Sensor +

+
+
+

The alarmdecoder alarm control panel platform allows you to control your AlarmDecoder alarms.

+

The requirement is that you have setup your AlarmDecoder hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.alpha_vantage/index.html b/components/sensor.alpha_vantage/index.html new file mode 100644 index 0000000000..552dbce3ef --- /dev/null +++ b/components/sensor.alpha_vantage/index.html @@ -0,0 +1,274 @@ + + + + + + + + + Alpha Vantage - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Alpha Vantage +

+
+
+

The alpha_vantage sensor platform uses Alpha Vantage to monitor the stock market. This platform also provides detail about exchange rates.

+

To enable the alpha_vantage platform, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: alpha_vantage
+    api_key: YOUR_API_KEY
+    symbols:
+    - symbol: GOOGL
+      name: Google
+    foreign_exchange:
+    - name: USD_EUR
+      from: USD
+      to: EUR
+
+
+

Either a symbol or a foreign exchange must be configured, otherwise you will not get any data.

+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)The API Key from Alpha Vantage.

+
+
symbols
+
+

(map)(Optional)List of stock market symbols for given companies.

+
+
+
+
name
+
+

(string)(Optional)The name of the sensor to use for the frontend.

+
+
currency
+
+

(string)(Optional)The name of the sensor to use for the frontend.

+

Default value: USD

+
+
symbol
+
+

(string)(Required)The stock market symbol for the given company.

+
+
+
+
foreign_exchange
+
+

(map)(Optional)List of currencies.

+
+
+
+
name
+
+

(string)(Optional)The name of the sensor to use for the frontend.

+
+
from
+
+

(string)(Required)The source currency.

+
+
to
+
+

(string)(Required)The target currency.

+
+
+
+
+
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Google and the exchange rate for Bitcoin

+
sensor:
+  - platform: alpha_vantage
+    api_key: YOUR_API_KEY
+    symbols:
+      - name: Google
+        currency: USD
+        symbol: GOOGL
+    foreign_exchange:
+      - from: BTC
+        to: USD
+        name: Bitcoin
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.amcrest/index.html b/components/sensor.amcrest/index.html new file mode 100644 index 0000000000..2d539e744b --- /dev/null +++ b/components/sensor.amcrest/index.html @@ -0,0 +1,583 @@ + + + + + + + + + Amcrest IP Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Amcrest IP Camera +

+
+
+

To get your Amcrest cameras working within Home Assistant, please follow the instructions for the general Amcrest component.

+

Once you have enabled the Amcrest component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: amcrest
+
+
+

To check if your Amcrest camera is supported/tested, visit the supportability matrix link from the python-amcrest project.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.android_ip_webcam/index.html b/components/sensor.android_ip_webcam/index.html new file mode 100644 index 0000000000..c4ecc7204b --- /dev/null +++ b/components/sensor.android_ip_webcam/index.html @@ -0,0 +1,584 @@ + + + + + + + + + Android IP Webcam Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Android IP Webcam Sensor +

+
+
+

The android_ip_webcam sensor platform lets you observe states of Android IP webcam sensors through Home Assistant.

+

Devices will be configured automatically. Please refer to the component 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/components/sensor.apcupsd/index.html b/components/sensor.apcupsd/index.html new file mode 100644 index 0000000000..fbcb2b16aa --- /dev/null +++ b/components/sensor.apcupsd/index.html @@ -0,0 +1,341 @@ + + + + + + + + + APCUPSd Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ APCUPSd Sensor +

+
+
+

The apcupsd sensor platform allows you to monitor a UPS (battery backup) by using data from the apcaccess command.

+

To use this sensor platform, you first have to set up apcupsd, and add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: apcupsd
+    resources:
+      - bcharge
+      - linev
+      - loadpct
+      - nominv
+      - nompower
+      - numxfers
+      - outputv
+      - status
+      - timeleft
+      - tonbatt
+
+
+

Configuration variables:

+
    +
  • resources array (Required): Contains all entries to display.
  • +
+

Example

+

Given the following output from apcaccess:

+
APC      : 001,051,1149
+DATE     : 2016-02-09 17:13:31 +0000
+HOSTNAME : localhost
+VERSION  : 3.14.12 (29 March 2014) redhat
+UPSNAME  : netrack
+CABLE    : Custom Cable Smart
+DRIVER   : APC Smart UPS (any)
+UPSMODE  : Stand Alone
+STARTTIME: 2016-02-09 16:06:47 +0000
+MODEL    : SMART-UPS 1400
+STATUS   : TRIM ONLINE
+LINEV    : 247.0 Volts
+LOADPCT  : 13.0 Percent
+BCHARGE  : 100.0 Percent
+TIMELEFT : 104.0 Minutes
+MBATTCHG : 5 Percent
+MINTIMEL : 3 Minutes
+MAXTIME  : 0 Seconds
+MAXLINEV : 249.6 Volts
+MINLINEV : 244.4 Volts
+OUTPUTV  : 218.4 Volts
+SENSE    : High
+DWAKE    : 0 Seconds
+DSHUTD   : 180 Seconds
+DLOWBATT : 2 Minutes
+LOTRANS  : 196.0 Volts
+HITRANS  : 253.0 Volts
+RETPCT   : 15.0 Percent
+ITEMP    : 30.6 C
+ALARMDEL : Low Battery
+BATTV    : 27.6 Volts
+LINEFREQ : 50.0 Hz
+LASTXFER : High line voltage
+NUMXFERS : 0
+TONBATT  : 0 Seconds
+CUMONBATT: 0 Seconds
+XOFFBATT : N/A
+SELFTEST : NO
+STESTI   : 336
+STATFLAG : 0x0500000A
+DIPSW    : 0x00
+REG1     : 0x00
+REG2     : 0x00
+REG3     : 0x00
+MANDATE  : 07/13/99
+SERIALNO : GS9888761008
+BATTDATE : 13/11/15
+NOMOUTV  : 230 Volts
+NOMBATTV : 24.0 Volts
+EXTBATTS : 0
+FIRMWARE : 70.11.I
+END APC  : 2016-02-09 17:13:46 +0000
+
+
+

Use the (case insensitive) values from the left hand column:

+
sensor:
+  - platform: apcupsd
+    resources:
+      - linev
+      - loadpct
+      - itemp
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.api_stream/index.html b/components/sensor.api_stream/index.html new file mode 100644 index 0000000000..76e9d957a9 --- /dev/null +++ b/components/sensor.api_stream/index.html @@ -0,0 +1,571 @@ + + + + + + + + + API Stream Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ API Stream Sensor +

+
+
+

The api_stream sensor platform shows how many clients are connected to the stream API

+

To add the connected clients to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: api_streams
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.arduino/index.html b/components/sensor.arduino/index.html new file mode 100644 index 0000000000..98b9db6257 --- /dev/null +++ b/components/sensor.arduino/index.html @@ -0,0 +1,248 @@ + + + + + + + + + Arduino Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arduino Sensor +

+
+
+

The arduino sensor platform allows you to get numerical values from an analog input pin of an Arduino board. Usually the value is between 0 and 1024.

+

To enable an Arduino sensor with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: arduino
+  pins:
+    1:
+      name: Door switch
+    0:
+      name: Brightness
+
+
+
+

Configuration Variables

+
+
pins
+
+

(map)(Required)List of pins to use.

+
+
+
+
pin_number
+
+

(map)(Required)The pin number that corresponds with the pin numbering schema of your board.

+
+
+
+
name
+
+

(string)

+

Default value: Name that will be used in the frontend for the pin.

+
+
+
+
+
+
+
+

The 6 analog pins of an Arduino UNO are numbered from A0 to A5.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.arest/index.html b/components/sensor.arest/index.html new file mode 100644 index 0000000000..2fdf3b5e38 --- /dev/null +++ b/components/sensor.arest/index.html @@ -0,0 +1,637 @@ + + + + + + + + + aREST Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ aREST Sensor +

+
+
+

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

+

To use your aREST enabled device in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: arest
+    resource: http://IP_ADDRESS
+    monitored_variables:
+      temperature:
+        name: temperature
+    pins:
+      A0:
+        name: Pin 0 analog
+
+
+

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 name of the device. By default name from the device is used.
  • +
  • monitored_variables array (Optional): List of exposed variables. +
      +
    • [variable] (Required): Name of the variable to monitor. +
        +
      • name (Optional): The name to use for the frontend.
      • +
      • unit_of_measurement (Optional): Defines the units of measurement of the sensor, if any.
      • +
      • value_template (Optional): Defines a template to extract a value from the payload.
      • +
      +
    • +
    +
  • +
  • pins array (Optional): List of pins to monitor. Analog pins need a leading A for the pin number. +
      +
    • [pin] (Required): Pin number to use. +
        +
      • name (Required): The name of the variable you wish to monitor.
      • +
      • unit_of_measurement (Optional): Defines the unit of measurement of the sensor, if any.
      • +
      • value_template (Optional): Defines a template to extract a value from the payload.
      • +
      +
    • +
    +
  • +
+

The variables in the monitored_variables array must be available in the response of the device. As a starting point you could use the one of the example sketches (eg. Ethernet for an Arduino with Ethernet shield). In those sketches are two variables (temperature and humidity) available which will act as endpoints.

+

Accessing one of the endpoints (eg. http://192.168.1.10/temperature) will give you the value inside a JSON response.

+
{"temperature": 23, "id": "sensor01", "name": "livingroom", "connected": true}
+
+
+

The root will give you a JSON response that contains all variables and their current values along with some device details.

+
{
+   "variables" : {
+      "temperature" : 23,
+      "humidity" : 82
+   },
+   "id" : "sensor01",
+   "name" : "livingroom",
+   "connected" : true
+}
+
+
+

return_value contains the sensor’s data in a JSON response for a given pin (eg. http://192.168.1.10/analog/2/ or http://192.168.1.10/digital/7/).

+
{"return_value": 34, "id": "sensor02", "name": "livingroom", "connected": true}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.arlo/index.html b/components/sensor.arlo/index.html new file mode 100644 index 0000000000..4026a3082c --- /dev/null +++ b/components/sensor.arlo/index.html @@ -0,0 +1,604 @@ + + + + + + + + + Arlo Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arlo Sensor +

+
+
+

To get your Arlo sensors working within Home Assistant, please follow the instructions for the general Arlo component.

+

Once you have enabled the Arlo component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: arlo
+    monitored_conditions:
+      - captured_today
+      - last_capture
+      - total_cameras
+      - battery_level
+      - signal_strength
+
+
+

Configuration variables:

+
    +
  • monitored_conditions array (Required): Conditions to display in the frontend. The following conditions can be monitored. +
      +
    • captured_today: Return the number of videos captured on the current day.
    • +
    • last_capture: Return the timestamp from the last video captured by your Arlo camera.
    • +
    • total_cameras: Return the number of recognized and active cameras linked on your Arlo account.
    • +
    • battery_level: Return the battery level of your Arlo camera.
    • +
    • signal_strength: Return the wireless signal strength of your Arlo camera.
    • +
    +
  • +
+

If no monitored_conditions are specified, all of above will be enabled by default.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.arwn/index.html b/components/sensor.arwn/index.html new file mode 100644 index 0000000000..ba08b03f58 --- /dev/null +++ b/components/sensor.arwn/index.html @@ -0,0 +1,571 @@ + + + + + + + + + ARWN Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ARWN Sensor +

+
+
+

The arwn sensor platform is a client for the Ambient Radio Weather Network project. This collects weather station data and makes it available in an MQTT subtree.

+

To use your ARWN setup, you must already have configured the MQTT platform. Then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: arwn
+
+
+

Currently all temperatures, barometers, moisture, rain, and wind sensors will be displayed.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.bbox/index.html b/components/sensor.bbox/index.html new file mode 100644 index 0000000000..6144ca6434 --- /dev/null +++ b/components/sensor.bbox/index.html @@ -0,0 +1,598 @@ + + + + + + + + + Bbox Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bbox Sensor +

+
+
+

The bbox platform uses the Bbox Modem Router from the French Internet provider Bouygues Telecom. Sensors are mainly bandwidth measures.

+

+Due to third party limitation, the sensors will only be available if Home Assistant and the Bbox are on the same local area network. You can check this by going to 192.168.1.254 with your web browser. +

+

To add Bbox sensors to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: bbox
+    monitored_variables:
+      - down_max_bandwidth
+      - up_max_bandwidth
+      - current_down_bandwidth
+      - current_up_bandwidth
+
+
+

Configuration variables:

+
    +
  • monitored_variables array (Required): Sensors to display in the frontend. +
      +
    • down_max_bandwidth: Maximum bandwidth available for download.
    • +
    • up_max_bandwidth: Maximum bandwidth available for upload.
    • +
    • current_down_bandwidth: Instant measure of the current used bandwidth for download.
    • +
    • current_up_bandwidth: Instant measure of the current used bandwidth for upload.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.bh1750/index.html b/components/sensor.bh1750/index.html new file mode 100644 index 0000000000..cd03674994 --- /dev/null +++ b/components/sensor.bh1750/index.html @@ -0,0 +1,633 @@ + + + + + + + + + BH1750 Light sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BH1750 Light sensor +

+
+
+

The bh1750 sensor platform allows you to read the ambient light level in Lux from a BH1750FVI sensor connected via I2c bus (SDA, SCL pins). It allows you to use all the resolution modes of the sensor described in its datasheet.

+

Tested devices:

+ +

To use your BH1750 sensor in your installation, add the following to your configuration.yaml file:

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

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.

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

Directions for installing smbus support on Raspberry Pi

+

Enable I2c interface with the Raspberry Pi configuration utility:

+
# pi user environment: Enable i2c interface
+$ sudo raspi-config
+
+
+

Select Interfacing options->I2C choose <Yes> 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:

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

Check the i2c address of the sensor

+

After installing i2c-tools, a new utility is available to scan the addresses of the connected sensors:

+
$ /usr/sbin/i2cdetect -y 1
+
+
+

It will output a table like this:

+
     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/components/sensor.bitcoin/index.html b/components/sensor.bitcoin/index.html new file mode 100644 index 0000000000..0ee5594f19 --- /dev/null +++ b/components/sensor.bitcoin/index.html @@ -0,0 +1,304 @@ + + + + + + + + + Bitcoin - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Bitcoin +

+
+
+

The bitcoin sensor platform displays various details about the Bitcoin network.

+

To add the Bitcoin sensor to your installation, add a selection of the available display options to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: bitcoin
+    display_options:
+      - exchangerate
+      - trade_volume_btc
+
+
+
+

Configuration Variables

+
+
currency
+
+

(string)(Optional)The currency to exchange to, eg. CHF, USD, EUR, etc.

+

Default value: USD

+
+
display_options
+
+

(map)(Required)Options to display in the frontend.

+
+
+
+
exchangerate
+
+

Exchange rate of 1 BTC

+
+
trade_volume_btc
+
+

Trade volume

+
+
miners_revenue_usd
+
+

Miners revenue

+
+
btc_mined
+
+

BTC mined

+
+
trade_volume_usd
+
+

Trade volume in USD

+
+
difficulty
+
+

Difficulty

+
+
minutes_between_blocks
+
+

Time between blocks in minutes

+
+
number_of_transactions
+
+

Number of transactions

+
+
hash_rate
+
+

Hash rate in PH/s

+
+
timestamp
+
+

Timestamp

+
+
mined_blocks
+
+

Minded Blocks

+
+
blocks_size
+
+

Block size

+
+
total_fees_btc
+
+

Total fees in BTC

+
+
total_btc_sent
+
+

Total sent in BTC

+
+
estimated_btc_sent
+
+

Estimated sent in BTC

+
+
total_btc
+
+

Total of BTC

+
+
total_blocks
+
+

Total Blocks

+
+
next_retarget
+
+

Next retarget

+
+
estimated_transaction_volume_usd
+
+

Estimated transaction volume in BTC

+
+
miners_revenue_btc
+
+

Miners revenue in BTC

+
+
market_price_usd
+
+

Market price in USD

+
+
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.blink/index.html b/components/sensor.blink/index.html new file mode 100644 index 0000000000..1d23d8ac6f --- /dev/null +++ b/components/sensor.blink/index.html @@ -0,0 +1,581 @@ + + + + + + + + + Blink Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blink Sensor +

+
+
+

+To get your Blink sensors working with Home Assistant, follow the instructions for the general Blink component. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.blockchain/index.html b/components/sensor.blockchain/index.html new file mode 100644 index 0000000000..a011a51448 --- /dev/null +++ b/components/sensor.blockchain/index.html @@ -0,0 +1,211 @@ + + + + + + + + + Blockchain.info - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Blockchain.info +

+
+
+

The Blockchain sensor platform displays Bitcoin wallet balances from blockchain.info.

+

To add the Blockchain sensor to your installation, specify a list of bitcoin addresses to watch in the configuration.yaml file. The sensor state will be the sum of the balances of all addresses listed.

+
# Example configuration.yaml entry
+sensor:
+  - platform: blockchain
+    addresses:
+      - '1BMsHFczb2vY1BMDvFGWgGU8mkWVm5fupp'
+      - '183J5pXWqYYsxZ7inTVw9tEpejDXyMFroe'
+
+
+
+

Configuration Variables

+
+
addresses
+
+

(string | list)(Required)List of bitcoin wallet addresses to watch.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.bloomsky/index.html b/components/sensor.bloomsky/index.html new file mode 100644 index 0000000000..e359883d5e --- /dev/null +++ b/components/sensor.bloomsky/index.html @@ -0,0 +1,606 @@ + + + + + + + + + BloomSky Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BloomSky Sensor +

+
+
+

The bloomsky sensor component allows you to view the measurements made by sensors in the BloomSky weather station. This can work in concert with the BloomSky camera.

+

To enable these sensors in your installation, set up the BloomSky component with your API key add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: bloomsky
+  monitored_conditions:
+    - Temperature
+    - Humidity
+    - Pressure
+    - UVIndex
+    - Luminance
+    - Voltage
+
+
+

Configuration variables:

+
    +
  • monitored_conditions array (Required): The sensors that you wish to monitor on all of your devices. Select from these options: +
      +
    • Humidity
    • +
    • Luminance
    • +
    • Pressure
    • +
    • Temperature
    • +
    • UVIndex
    • +
    • Voltage
    • +
    +
  • +
+

More conditions are available using the BloomSky binary sensor component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.bme280/index.html b/components/sensor.bme280/index.html new file mode 100644 index 0000000000..b4fb307780 --- /dev/null +++ b/components/sensor.bme280/index.html @@ -0,0 +1,672 @@ + + + + + + + + + BME280 Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BME280 Sensor +

+
+
+

The bme280 sensor platform allows you to read temperature, humidity and pressure values of a Bosch BME280 Environmental sensor connected via I2c bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet.

+

Tested devices:

+ +

To use your BME280 sensor in your installation, add the following to your configuration.yaml file:

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

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:

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

+

Customizing the sensor data

+

Give the values friendly names and icons, add the following to your customize: section.

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

+
# Example configuration.yaml entry
+group:
+  ambient_sensor:
+    name: BME280 Environment sensor
+    entities:
+      - sensor.ambient_temperature
+      - sensor.ambient_humidity
+      - sensor.ambient_pressure
+
+
+

Directions for installing smbus support on Raspberry Pi

+

Enable I2c interface with the Raspberry Pi configuration utility:

+
# pi user environment: Enable i2c interface
+$ sudo raspi-config
+
+
+

Select Interfacing options->I2C choose <Yes> 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:

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

Check the i2c address of the sensor

+

After installing i2c-tools, a new utility is available to scan the addresses of the connected sensors:

+
$ /usr/sbin/i2cdetect -y 1
+
+
+

It will output a table like this:

+
     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/components/sensor.bme680/index.html b/components/sensor.bme680/index.html new file mode 100644 index 0000000000..3b97834581 --- /dev/null +++ b/components/sensor.bme680/index.html @@ -0,0 +1,760 @@ + + + + + + + + + BME680 Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BME680 Sensor +

+
+
+

The bme680 sensor platform allows you to read temperature, humidity, pressure and gas resistance values of a Bosch BME680 Environmental sensor connected via an I2C bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. In addition, it includes a basic air quality calculation that uses gas resistance and humidity measurements to calculate a percentage based air quality measurement.

+

Tested devices:

+ +

To use your BME680 sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: bme680
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the sensor

+

Default value: BME680 Sensor

+
+
i2c_bus
+
+

(int)(Optional)I2C bus that the sensor is connected to.

+

Default value: 1

+
+
i2c_address
+
+

(int)(Optional)I2C address of the sensor. It is 0x76 or 0x77.

+

Default value: 119

+
+
monitored_conditions
+
+

(list)(Optional)Conditions to monitor.

+

Default value: [“temperature”, “humidity”, “pressure”, “airquality”]

+
+
+
+
temperature
+
+

Monitor temperature.

+
+
humidity
+
+

Monitor relative humidity.

+
+
pressure
+
+

Monitor pressure.

+
+
gas
+
+

Monitor gas resistance values on the VOC sensor.

+
+
airquality
+
+

Monitor air quality using the values of humidity and gas resistance and calculate a percentage based air quality measurement.

+
+
+
+
oversampling_temperature
+
+

(int)(Optional)Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16.

+

Default value: 8

+
+
oversampling_pressure
+
+

(int)(Optional)Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16.

+

Default value: 2

+
+
oversampling_humidity
+
+

(int)(Optional)Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16.

+

Default value: 4

+
+
filter_size
+
+

(int)(Optional)IIR filter size as described in the sensor datasheet. Can be 0 (off), 1, 3, 7, 15, 31, 63 or 127.

+

Default value: 3

+
+
gas_heater_temperature
+
+

(int)(Optional)The temperature to heat the hotplate to for gas resistance measurements as described in the sensor datasheet. Can be between 200-400°C.

+

Default value: 320

+
+
gas_heater_duration
+
+

(int)(Optional)The duration to heat the hotplate in milliseconds for gas resistance measurements as described in the sensor datasheet. Can be between 1-4032 ms. In reality, you will likely need between 80-100ms to reach a stable temperature. Using a duration greater than 1000ms is inadvisable as it will essentially result in the heater being continually on due to the 1-second update interval.

+

Default value: 150

+
+
aq_burn_in_time
+
+

(int)(Optional)The duration to perform gas resistance measurements to establish a stable baseline measurements for Air Quality calculations in seconds. The burn in time is only performed when the sensor component is first initialized.

+

Default value: 300

+
+
aq_humidity_baseline
+
+

(int)(Optional)The baseline ideal relative humidity value for the air quality calculations.

+

Default value: 40

+
+
aq_humidity_bias
+
+

(int)(Optional)The bias for humidity to the gas resistance measurement in the air quality calculations expressed as a percentage of the total calculation e.g. 25% hudidtity to 75% gas.

+

Default value: 25

+
+
+
+

Full Examples

+

If you want to specify the working mode of the digital sensor or need to change the default I2C address (which is 0x77), add more details to the configuration.yaml file:

+
# Example of customized configuration.yaml entry
+sensor:
+  - platform: bme680
+    name: BME680 Sensor
+    i2c_bus: 1
+    i2c_address: 0x77
+    monitored_conditions:
+      - temperature
+      - humidity
+      - pressure
+      - gas
+      - airquality
+    oversampling_temperature: 8
+    oversampling_humidity: 2
+    oversampling_pressure: 4
+    filter_size: 3
+    gas_heater_temperature: 320
+    gas_heater_duration: 150
+    aq_burn_in_time: 300
+    aq_humidity_baseline: 40
+    aq_humidity_bias: 25
+
+
+

Customizing the sensor data

+

Give the values friendly names and icons, add the following to your customize: section.

+
# Example configuration.yaml entry
+customize:
+  sensor.bme680_sensor_temperature:
+    icon: mdi:thermometer
+    friendly_name: Temperature
+  sensor.bme680_sensor_humidity:
+    icon: mdi:water
+    friendly_name: Humidity
+  sensor.bme680_sensor_pressure:
+    icon: mdi:gauge
+    friendly_name: Pressure
+  sensor.bme680_sensor_air_quality:
+    icon: mdi:blur
+    friendly_name: Air Quality
+
+
+

To create a group, add the following to your group section.

+
# Example configuration.yaml entry
+group:
+  climate:
+    name: Climate
+    entities:
+      - sensor.bme680_sensor_temperature
+      - sensor.bme680_sensor_humidity
+      - sensor.bme680_sensor_pressure
+      - sensor.bme680_sensor_air_quality
+
+
+

Directions for installing SMBus support on Raspberry Pi

+

Enable I2C interface with the Raspberry Pi configuration utility:

+
# pi user environment: Enable I2C interface
+$ sudo raspi-config
+
+
+

Select Interfacing options->I2C choose <Yes> and hit Enter, then go to Finish and you’ll be prompted to reboot.

+

Install dependencies to use the smbus-cffi module and add your homeassistant user to the i2c group:

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

Check the I2C address of the sensor

+

After installing i2c-tools, a new utility is available to scan the addresses of the connected sensors:

+
$ /usr/sbin/i2cdetect -y 1
+
+
+

It will output a table like this:

+
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- --
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+70: -- -- -- -- -- -- -- 76
+
+
+

So you can see the sensor address that you are looking for is 0x76 (there is another I2C device on that Raspberry Pi).

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.bmw_connected_drive/index.html b/components/sensor.bmw_connected_drive/index.html new file mode 100644 index 0000000000..38dbcec2a3 --- /dev/null +++ b/components/sensor.bmw_connected_drive/index.html @@ -0,0 +1,575 @@ + + + + + + + + + BMW connected drive - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BMW connected drive +

+
+
+

The bmw_connected_drive platform allows you to import data on your BMW into Home Assistant.

+

The sensors will be automatically configured if the bmw_connected_drive component is configured.

+

For more configuration information see the bmw_connected_drive component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.bom/index.html b/components/sensor.bom/index.html new file mode 100644 index 0000000000..731205578d --- /dev/null +++ b/components/sensor.bom/index.html @@ -0,0 +1,294 @@ + + + + + + + + + BOM Australia Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BOM Australia Sensor +

+
+
+

The bom sensor platform uses the Australian Bureau of Meteorology (BOM) as a source for current (half-hourly) meteorological data.

+
    +
  • Each sensor will be given the device_id of “bom [optionalname] friendlyname units”
  • +
  • A name is optional but if multiple BOM weather stations are used a name will be required.
  • +
  • The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half-hour.
  • +
+

To add the BOM weather observation to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: bom
+    station: IDS60801.94675
+    name: Adelaide
+    monitored_conditions:
+      - apparent_t
+      - cloud
+      - cloud_base_m
+      - cloud_oktas
+      - cloud_type_id
+      - cloud_type
+      - delta_t
+      - gust_kmh
+      - gust_kt
+      - air_temp
+      - dewpt
+      - press
+      - press_qnh
+      - press_msl
+      - press_tend
+      - rain_trace
+      - rel_hum
+      - sea_state
+      - swell_dir_worded
+      - swell_height
+      - swell_period
+      - vis_km
+      - weather
+      - wind_dir
+      - wind_spd_kmh
+      - wind_spd_kt
+
+
+

To get the station ID for any BOM station:

+
    +
  • Find your station on these maps: NSW, QLD, VIC, WA, SA, TAS, ACT, NT.
  • +
  • alternatively, from the BOM website, navigate to State -> Observations -> Latest Observations -> Choose the station.
  • +
  • The URL will look like: http://www.bom.gov.au/products/IDx60801/[station].shtml
  • +
  • For Adelaide, the URL will look like http://www.bom.gov.au/products/IDS60801/IDS60801.94675.shtml; the station ID is IDS60801.94675.
  • +
+

Configuration variables:

+
    +
  • station (Optional): The station ID string as identified from the BOM website. If not given, defaults to the closest station.
  • +
  • name (Optional): The name you would like to give to the weather station.
  • +
  • monitored_conditions (Required): A list of the conditions to monitor.
  • +
+

+This sensor is an alternative to the bom weather platform. +The weather platform is easier to configure but less customisable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.broadlink/index.html b/components/sensor.broadlink/index.html new file mode 100644 index 0000000000..043121cdd7 --- /dev/null +++ b/components/sensor.broadlink/index.html @@ -0,0 +1,634 @@ + + + + + + + + + Broadlink RM2 and A1 sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Broadlink RM2 and A1 sensor +

+
+
+

The broadlink sensor platform let you monitor data from an RM2 and A1 E-air. There is currently no support for the cloud API.

+

To enable it, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: broadlink
+    host: IP_ADDRESS
+    mac: 'MAC_ADDRESS'
+    monitored_conditions:
+      - 'temperature'
+
+
+

Configuration options:

+
    +
  • host (Required): The hostname/IP address to connect to.
  • +
  • mac (Required): Device mac address.
  • +
  • name (Optional): Default BL. Sensor name
  • +
  • update_interval (Optional): Time in seconds to fetch data from sensors. Default 300.
  • +
  • timeout (Optional): Timeout in seconds for the connection to the device.
  • +
  • monitored_conditions array (Required): States to monitor. +
      +
    • ‘temperature’
    • +
    • ‘humidity’
    • +
    • ‘air_quality’
    • +
    • ‘light’
    • +
    • ‘noise’
    • +
    +
  • +
+

To set it up, add the following information to your configuration.yaml file:

+

Obtain sensor data from an A1:

+
sensor:
+  - platform: broadlink
+    update_interval: 60
+    host: IP_ADDRESS
+    mac: 'MAC_ADDRESS'
+    monitored_conditions:
+      - temperature
+      - humidity
+      - air_quality
+      - light
+      - noise
+
+
+

Obtain temperature data from an RM2:

+
sensor:
+  - platform: broadlink
+    update_interval: 60
+    host: IP_ADDRESS
+    mac: 'MAC_ADDRESS'
+    monitored_conditions:
+      - temperature
+
+
+

Microsoft Windows installation

+

+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

+

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:

+
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/components/sensor.buienradar/index.html b/components/sensor.buienradar/index.html new file mode 100644 index 0000000000..f3f77a312f --- /dev/null +++ b/components/sensor.buienradar/index.html @@ -0,0 +1,380 @@ + + + + + + + + + Buienradar Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Buienradar Sensor +

+
+
+

The buienradar platform uses 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.

+

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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: buienradar
+    monitored_conditions:
+      - symbol
+      - humidity
+      - temperature
+      - windspeed
+      - pressure
+
+
+

Configuration variables:

+
    +
  • 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: N (North),Z (south), NO (North-East), etc.
    • +
    • windazimuth: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise.
    • +
    • pressure: The sea-level air pressure in hPa.
    • +
    • visibility: Visibility in meters (m).
    • +
    • windgust: The wind speed of wind gusts (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).
    • +
    • temperature_1d [1d]: The forecasted temperature (in C).
    • +
    • mintemp_1d [1d]: The forecasted minimum temperature (in C).
    • +
    • rainchance_1d [1d]: The forecasted chance for rain (%).
    • +
    • sunchance_1d [1d]: The forecasted chance for sun (%).
    • +
    • rain_1d [1d]: The forecasted amount of rain in mm.
    • +
    • snow_1d [1d]: The forecasted amount of snow in cm.
    • +
    • windforce_1d [1d]: The expected windforce in Bft.
    • +
    • conditioncode_1d [1d]: Symbol and condition code of the expected condition.
    • +
    • condition_1d [1d]: Symbol and expected condition.
    • +
    • conditiondetailed_1d [1d]: Symbol and detailed expected condition.
    • +
    • conditionexact_1d [1d]: Symbol and full expected condition (in English).
    • +
    • symbol_1d [1d]: Symbol and full expected condition (in Dutch).
    • +
    +
  • +
+

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:

+
# 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
+      - groundtemperature
+      - windspeed
+      - windforce
+      - winddirection
+      - windazimuth
+      - pressure
+      - visibility
+      - windgust
+      - precipitation
+      - irradiance
+      - precipitation_forecast_average
+      - precipitation_forecast_total
+
+
+

Configuration example with current condition and (some) forecasted values:

+
# 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:

+
+

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/components/sensor.canary/index.html b/components/sensor.canary/index.html new file mode 100644 index 0000000000..16d91f077c --- /dev/null +++ b/components/sensor.canary/index.html @@ -0,0 +1,586 @@ + + + + + + + + + Canary Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Canary Sensor +

+
+
+

The canary sensor platform allows you to integrate the sensors of your Canary devices in Home Assistant.

+

To add canary sensors to your installation, follow instructions in Canary component.

+

Once loaded, you will see following sensors:

+
    +
  • A sensor per camera that reports temperature.
  • +
  • A sensor per camera that reports humidity.
  • +
  • A sensor per camera that reports air quality.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.cert_expiry/index.html b/components/sensor.cert_expiry/index.html new file mode 100644 index 0000000000..21f82e2b89 --- /dev/null +++ b/components/sensor.cert_expiry/index.html @@ -0,0 +1,260 @@ + + + + + + + + + Certificate Expiry - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Certificate Expiry +

+
+
+

The cert_expiry sensor fetches information from a configured URL and displays the certificate expiry in days.

+

To add the Certificate Expiry sensor to your installation, add these options to configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: cert_expiry
+    host: home-assistant.io
+
+
+

Configuration variables:

+
    +
  • host (Required): The host FQDN (or IP) to retrieve certificate from.
  • +
  • port (Optional): The port number where the server is running. Defaults to 443.
  • +
  • name (Optional): The friendly name for the certificate.
  • +
+

+Make sure that the URL exactly matches your endpoint or resource. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.citybikes/index.html b/components/sensor.citybikes/index.html new file mode 100644 index 0000000000..4b08674d87 --- /dev/null +++ b/components/sensor.citybikes/index.html @@ -0,0 +1,589 @@ + + + + + + + + + CityBikes API sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CityBikes API sensor +

+
+
+

The citybikes sensor platform monitors bike availability at bike sharing stations in a chosen area. The data is provided by CityBikes, which supports bike sharing systems all around the world.

+

To enable it, add the following lines to your configuration.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 IDs or UIDs, which can be obtained from the CityBikes API.
  • +
+

Additional configuration samples:

+
# Example configuration.yaml entry (using a list of stations)
+sensor:
+  - platform: citybikes
+    name: Work Stations
+    stations:
+      - 123
+      - 145
+      - 436
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.coinbase/index.html b/components/sensor.coinbase/index.html new file mode 100644 index 0000000000..eea900a7e3 --- /dev/null +++ b/components/sensor.coinbase/index.html @@ -0,0 +1,570 @@ + + + + + + + + + Coinbase Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Coinbase Sensor +

+
+
+

To get your coinbase sensors working with Home Assistant, follow the instructions for the general Coinbase component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.coinmarketcap/index.html b/components/sensor.coinmarketcap/index.html new file mode 100644 index 0000000000..5284b117a5 --- /dev/null +++ b/components/sensor.coinmarketcap/index.html @@ -0,0 +1,215 @@ + + + + + + + + + CoinMarketCap - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CoinMarketCap +

+
+
+

The coinmarketcap sensor platform displays various details about a cryptocurrency provided by CoinMarketCap.

+

To add the CoinMarketCap sensor to your installation, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: coinmarketcap
+
+
+
+

Configuration Variables

+
+
currency
+
+

(string)(Optional)The cryptocurrency to use.

+

Default value: Bitcoin

+
+
display_currency
+
+

(string)(Optional)The currency to display.

+

Default value: USD

+
+
+
+

All supported currencies can be found here.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.comed_hourly_pricing/index.html b/components/sensor.comed_hourly_pricing/index.html new file mode 100644 index 0000000000..6c7c3c9829 --- /dev/null +++ b/components/sensor.comed_hourly_pricing/index.html @@ -0,0 +1,215 @@ + + + + + + + + + ComEd Hourly Pricing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ComEd Hourly Pricing +

+
+
+

The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published here and also via an API which we can integrate as a sensor in Home Assistant.

+

There are two price feeds available: the 5-minute price and current hour average price.

+

To use this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: comed_hourly_pricing
+    monitored_feeds:
+      - type: five_minute
+      - type: current_hour_average
+
+
+

Configuration variables:

+
    +
  • monitored_feeds array (Required): Feeds to monitor. +
      +
    • type (Required): Name of the feed. +
        +
      • five_minute: The latest 5-minute price in cents.
      • +
      • current_hour_average: The latest current hour average price in cents.
      • +
      +
    • +
    • name (Optional): Custom name for the sensor.
    • +
    • offset (Optional): The pricing feeds provide only the supply cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.comfoconnect/index.html b/components/sensor.comfoconnect/index.html new file mode 100644 index 0000000000..dfd161db85 --- /dev/null +++ b/components/sensor.comfoconnect/index.html @@ -0,0 +1,573 @@ + + + + + + + + + Zehnder ComfoAir Q Ventilation sensors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zehnder ComfoAir Q Ventilation sensors +

+
+
+

Please see the main component for information how to set it up.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.command_line/index.html b/components/sensor.command_line/index.html new file mode 100644 index 0000000000..3e9fd8eb96 --- /dev/null +++ b/components/sensor.command_line/index.html @@ -0,0 +1,690 @@ + + + + + + + + + Command line Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Command line Sensor +

+
+
+

The command_line sensor platform that issues specific commands to get data. This might become our most powerful platform as it allows anyone to integrate any type of sensor into Home Assistant that can get data from the command line.

+

To enable it, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: command_line
+    command: SENSOR_COMMAND
+
+
+

Configuration variables:

+
    +
  • command (Required): The action to take to get the value.
  • +
  • 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 to extract a value from the payload.
  • +
  • scan_interval (Optional): Defines number of seconds for polling interval (defaults to 60 seconds).
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Hard drive temperature

+

There are several ways to get the temperature of your hard drive. A simple solution is to use hddtemp.

+
$ hddtemp -n /dev/sda
+
+
+

To use this information, the entry for a command-line sensor in the configuration.yaml file will look like this.

+
# Example configuration.yaml entry
+sensor:
+  - platform: command_line
+    name: HD Temperature
+    command: "hddtemp -n /dev/sda"
+    # If errors occur, remove degree symbol below
+    unit_of_measurement: "°C"
+
+
+

CPU temperature

+

Thanks to the proc file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your configuration.yaml file:

+
# 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: '{{ value | multiply(0.001) }}'
+
+
+

Monitoring failed login attempts on Home Assistant

+

If you’d like to know how many failed login attempts are made to Home Assistant, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: command_line
+    name: badlogin
+    command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log"
+
+
+

Make sure to configure the logger component to monitor the http component at least the warning level.

+
# Example working logger settings that works
+logger:
+  default: critical
+  logs:
+    homeassistant.components.http: warning
+
+
+

Details about the upstream Home Assistant release

+

You can see directly in the frontend (Developer tools -> About) what release of Home Assistant you are running. The Home Assistant releases are available on the Python Package Index. This makes it possible to get the current release.

+
sensor:
+  - platform: command_line
+    command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"
+    name: HA release
+
+
+

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.

+
sensor:
+  - platform: command_line
+    command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)"
+    name: File value
+
+
+

Use an external script

+

The example is doing the same as the aREST sensor but with an external Python script. It should give you an idea about interfacing with devices which are exposing a RESTful API.

+

The one-line script to retrieve a value is shown below. Of course would it be possible to use this directly in the configuration.yaml file but need extra care about the quotation marks.

+
$ python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"
+
+
+

The script (saved as arest-value.py) that is used looks like the example below.

+
#!/usr/bin/python3
+from requests import get
+response = get('http://10.0.0.48/analog/2')
+print(response.json()['return_value'])
+
+
+

To use the script you need to add something like the following to your configuration.yaml file.

+
# Example configuration.yaml entry
+sensor:
+  - platform: command_line
+    name: Brightness
+    command: "python3 /path/to/script/arest-value.py"
+
+
+

Usage of templating in command:

+

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

+
# 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/components/sensor.cpuspeed/index.html b/components/sensor.cpuspeed/index.html new file mode 100644 index 0000000000..68d15f13bb --- /dev/null +++ b/components/sensor.cpuspeed/index.html @@ -0,0 +1,254 @@ + + + + + + + + + CPU speed - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CPU speed +

+
+
+

The cpuspeed sensor platform to allow you to monitor the current CPU speed.

+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: cpuspeed
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name of the sensor.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.crimereports/index.html b/components/sensor.crimereports/index.html new file mode 100644 index 0000000000..bdf26ff4a6 --- /dev/null +++ b/components/sensor.crimereports/index.html @@ -0,0 +1,626 @@ + + + + + + + + + Crime Reports - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Crime Reports +

+
+
+

The crimereports sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to Crime Reports. Your regional emergency services may or may not report data. The sensor only counts incidents from the current day.

+

Configuration

+

To enable this sensor, add the following lines to your configuration.yaml. Your radius should be of sufficient size to capture incidents in your area.

+
sensor:
+  - platform: crimereports
+    name: <any name>
+    radius: <your radius>
+
+
+

Configuration options for the Crime Reports Sensor:

+
    +
  • name (Required): Name the sensor whatever you want.
  • +
  • radius (Required): Radius in meters.
  • +
  • latitude (Optional): Defaults to your home zone latitude.
  • +
  • longitude (Optional): Defaults to your home zone longitude.
  • +
  • include (Optional): List of incident types to include.
  • +
  • exclude (Optional): List of incident types to exclude.
  • +
+

Notes

+

Area

+

Crime Reports captures all incidents in a region defined by a square shape. Home Assistant zones are circular. Therefore, the region defined by a Home Assistant zone in a Crime Reports context is a square that is big enough to fit the zone circle. Practically, this means some incidents may be captured that are outside your zone.

+

Incident Types

+

You can explicitly include or exclude incident types. Specifying includes restricts the incidents to those types. Specifying excludes will return all incident types except those specified.

+

These incident types are available:

+
    +
  • Alarm
  • +
  • Arson
  • +
  • Assault
  • +
  • Assault with Deadly Weapon
  • +
  • Breaking & Entering
  • +
  • Community Policing
  • +
  • Death
  • +
  • Disorder
  • +
  • Drugs
  • +
  • Emergency
  • +
  • Family Offense
  • +
  • Fire
  • +
  • Homicide
  • +
  • Kidnapping
  • +
  • Liquor
  • +
  • Missing Person
  • +
  • Other
  • +
  • Other Sexual Offense
  • +
  • Pedestrian Stop
  • +
  • Proactive Policing
  • +
  • Property Crime
  • +
  • Property Crime Commercial
  • +
  • Property Crime Residential
  • +
  • Quality of Life
  • +
  • Robbery
  • +
  • Sexual Assault
  • +
  • Sexual Offense
  • +
  • Theft
  • +
  • Theft from Vehicle
  • +
  • Theft of Vehicle
  • +
  • Traffic
  • +
  • Vehicle Recovery
  • +
  • Vehicle Stop
  • +
  • Weapons Offense
  • +
+

Events

+

The crimealerts sensor fires a crimealerts_incident event when a new incident is detected, including the type, description, time, location, and coordinates of the incident.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.cups/index.html b/components/sensor.cups/index.html new file mode 100644 index 0000000000..e82a97d2ad --- /dev/null +++ b/components/sensor.cups/index.html @@ -0,0 +1,279 @@ + + + + + + + + + CUPS Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CUPS Sensor +

+
+
+

The cups sensor platform is using the open source printing system CUPS 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 web interface at “http://[IP ADDRESS PRINT SERVER]:631” and go to “Printers”.

+

+ +

+

To enable the CUPS sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: cups
+    printers:
+      - C410
+      - C430
+
+
+
+

Configuration Variables

+
+
printers
+
+

(list)(Required)List of printers to add.

+
+
host
+
+

(string)(Optional)IP address of the CUPS print server.

+

Default value: 127.0.0.1

+
+
port
+
+

(int)(Optional)Port of the CUPS print server.

+

Default value: 631

+
+
+
+

+You will need to install the python3-dev or python3-devel and the development files for CUPS (libcups2-dev orcups-devel) package on your system manually (eg. sudo apt-get install python3-dev libcups2-dev or sudo dnf -y install python3-devel cups-devel) along with a compiler (gcc). +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.currencylayer/index.html b/components/sensor.currencylayer/index.html new file mode 100644 index 0000000000..93b8aa243d --- /dev/null +++ b/components/sensor.currencylayer/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Currencylayer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Currencylayer +

+
+
+

The currencylayer sensor will show you the current exchange rate from Currencylayer that provides real-time exchange rates for 170 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

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: currencylayer
+    api_key: YOUR_API_KEY
+    base: USD
+    quote:
+      - EUR
+      - INR
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)The API Key from Currencylayer.

+
+
quote
+
+

(string | list)(Optional)The symbol(s) of the quote or target currencies.

+

Default value: Exchange rate

+
+
base
+
+

(string)(Optional)The symbol of the base currency.

+

Default value: USD

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.daikin/index.html b/components/sensor.daikin/index.html new file mode 100644 index 0000000000..9cb51aa9f3 --- /dev/null +++ b/components/sensor.daikin/index.html @@ -0,0 +1,622 @@ + + + + + + + + + Daikin AC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Daikin AC +

+
+
+

The daikin sensor platform integrates Daikin air conditioning systems into Home Assistant, enabling displaying the following parameters:

+
    +
  • inside temperature
  • +
  • outside temperature
  • +
+

+Please note, the daikin platform integrates ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45) into Home Assistant. +

+

To enable the platform manually, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: daikin
+    host: 10.0.0.1
+    monitored_conditions:
+      - inside_temperature
+      - outside_temperature
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)IP or hostname of the device.

+
+
monitored_conditions
+
+

(list)(Optional)List of items you want to monitor for each device.

+

Default value: All conditions

+
+
+
+
inside_temperature
+
+

The current temperature measured inside the house.

+
+
outside_temperature
+
+

The current temperature measured outside the house.

+
+
+
+
+
+

+ Please note that some AC devices may report outside temperature only when they are turned on. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.darksky/index.html b/components/sensor.darksky/index.html new file mode 100644 index 0000000000..ca4ff44dda --- /dev/null +++ b/components/sensor.darksky/index.html @@ -0,0 +1,310 @@ + + + + + + + + + Dark Sky Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dark Sky Sensor +

+
+
+

The darksky platform uses the Dark Sky web service as a source for meteorological data for your location. The location is based on the longitude and latitude coordinates configured in your configuration.yaml file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using Google Maps and clicking on your home or Openstreetmap.

+

You need an API key which is free but requires registration. You can make up to 1000 calls per day for free which means that you could make one approximately every 86 seconds.

+

+Dark Sky will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day. +

+

To add Dark Sky to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: darksky
+    api_key: YOUR_API_KEY
+    monitored_conditions:
+      - summary
+      - icon
+      - nearest_storm_distance
+
+
+

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 _<day>.
  • +
  • latitude (Optional): Latitude coordinate to monitor weather of (required if longitude is specified), defaults to coordinates defined in your configuration.yaml
  • +
  • longitude (Optional): Longitude coordinate to monitor weather of (required if latitude is specified), defaults to coordinates defined in your configuration.yaml
  • +
  • monitored_conditions array (Required): Conditions to display in the frontend. +
      +
    • summary: A human-readable text summary of the current conditions.
    • +
    • precip_type: The type of precipitation occurring.
    • +
    • precip_intensity: The average expected intensity of precipitation occurring.
    • +
    • precip_probability: A value between 0 and 1 which is representing the probability of precipitation.
    • +
    • precip_accumulation: Daily snow accumulation. Returns unknown if no snow accumulation available.
    • +
    • temperature: The current temperature.
    • +
    • apparent_temperature: A numerical value representing the apparent (or “feels like”) temperature.
    • +
    • dew_point: The dew point.
    • +
    • wind_speed: The wind speed.
    • +
    • wind_bearing: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise.
    • +
    • cloud_cover: The percentage of sky occluded by clouds.
    • +
    • humidity: The relative humidity.
    • +
    • pressure: The sea-level air pressure in millibars.
    • +
    • visibility: The average visibility.
    • +
    • ozone: The columnar density of total atmospheric ozone in Dobson.
    • +
    • minutely_summary: A human-readable text summary for the next hour.
    • +
    • hourly_summary: A human-readable text summary for the next 24 hours.
    • +
    • daily_summary: A human-readable text summary for the next 7 days.
    • +
    • temperature_max: Today’s expected high temperature.
    • +
    • temperature_min: Today’s expected low temperature.
    • +
    • 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, uk and uk2. +auto will let Dark Sky decide the unit system based on location.
  • +
  • update_interval (Optional): Minimum time interval between updates. Default is 2 minutes. Supported formats: +
      +
    • update_interval: 'HH:MM:SS'
    • +
    • update_interval: 'HH:MM'
    • +
    • Time period dictionary, e.g.: +
      update_interval:
      +    # At least one of these must be specified:
      +    days: 0
      +    hours: 0
      +    minutes: 3
      +    seconds: 30
      +    milliseconds: 0
      +
      +
    • +
    +
  • +
+

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

+

Details about the API are available in the Dark Sky documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.deconz/index.html b/components/sensor.deconz/index.html new file mode 100644 index 0000000000..8d839d5b2d --- /dev/null +++ b/components/sensor.deconz/index.html @@ -0,0 +1,619 @@ + + + + + + + + + deCONZ Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ deCONZ Sensor +

+
+
+

See the deCONZ main component for configuration instructions.

+

The following sensor types are supported:

+
    +
  • Humidity sensor
  • +
  • Light level sensor
  • +
  • Pressure sensor
  • +
  • Switches
  • +
  • Temperature sensor
  • +
+

Entity ids will be sensor.device_name, where device_name is defined in deCONZ. Switches aren’t exposed as ordinary entities, see the deCONZ main component for more details.

+

Verified to be supported sensors

+
    +
  • Humidity Sensor +
      +
    • Xiaomi Aqara Humidity/Temperature Sensor
    • +
    • Xiaomi MiJia Smart Temperature & Humidity Sensor
    • +
    +
  • +
  • Light Level Sensor
  • +
  • Pressure Sensor
  • +
  • Switches +
      +
    • IKEA Trådfri Wireless Dimmer
    • +
    • Philips Hue Motion Sensor
    • +
    • IKEA Trådfri Remote
    • +
    • Philips Hue Dimmer Switch
    • +
    • Xiaomi Cube
    • +
    • Xiaomi Aqara Smart Light Switch
    • +
    • Xiaomi Aqara Smart Wireless Switch
    • +
    • Xiaomi Smart Home Wireless Switch
    • +
    +
  • +
  • Temperature Sensor +
      +
    • Xiaomi Temperature/Humidity Sensor
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.deluge/index.html b/components/sensor.deluge/index.html new file mode 100644 index 0000000000..d54ba77352 --- /dev/null +++ b/components/sensor.deluge/index.html @@ -0,0 +1,212 @@ + + + + + + + + + Deluge Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Deluge Sensor +

+
+
+

The deluge platform allows you to monitor your downloads with Deluge from within Home Assistant and setup automation based on the information.

+

To enable this sensor, add the following lines to your configuration.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/components/sensor.deutsche_bahn/index.html b/components/sensor.deutsche_bahn/index.html new file mode 100644 index 0000000000..e700376ac3 --- /dev/null +++ b/components/sensor.deutsche_bahn/index.html @@ -0,0 +1,239 @@ + + + + + + + + + Deutsche Bahn - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Deutsche Bahn +

+
+
+

The deutsche_bahn sensor will give you the departure time of the next train for the given connection. In case of a delay, the delay is also shown. Additional details are used to inform about eg. the type of the train, price, and if it is on time.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: deutsche_bahn
+    from: NAME_OF_START_STATION
+    to: NAME_OF_FINAL_STATION
+
+
+
+

Configuration Variables

+
+
from
+
+

(string)(Required)The name of the start station.

+
+
to
+
+

(string)(Required)The name of the end/destination station.

+
+
only_direct
+
+

(boolean)(Optional)Only show direct connections.

+

Default value: false

+
+
+
+

This sensor stores a lot of attributes which can be accessed by other sensors eg. a template sensor.

+
# Example configuration.yaml entry
+sensor:
+  platform: template
+  sensors:
+    next_departure:
+      value_template: '{{ states.sensor.munich_to_ulm.attributes.next }}'
+      friendly_name: 'Next departure'
+
+
+

The data is coming from the bahn.de website.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dht/index.html b/components/sensor.dht/index.html new file mode 100644 index 0000000000..1f31f93661 --- /dev/null +++ b/components/sensor.dht/index.html @@ -0,0 +1,233 @@ + + + + + + + + + DHT Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DHT Sensor +

+
+
+

The dht sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device.

+

To use your DHTxx sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: dht
+  sensor: DHT22
+  pin: 23
+  monitored_conditions:
+    - temperature
+    - humidity
+
+
+

Configuration variables:

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

+

Example

+

An example for a Raspberry Pi 3 with a DHT22 sensor connected to GPIO4 (pin 7):

+
sensor:
+  - platform: dht
+    sensor: DHT22
+    pin: 4
+    temperature_offset: 2.1
+    humidity_offset: -3.2
+    monitored_conditions:
+      - temperature
+      - humidity
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.discogs/index.html b/components/sensor.discogs/index.html new file mode 100644 index 0000000000..197ae5b2c8 --- /dev/null +++ b/components/sensor.discogs/index.html @@ -0,0 +1,587 @@ + + + + + + + + + Discogs Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Discogs Sensor +

+
+
+

The discogs platform allows you to see the current amount of records in your Discogs collection.

+

First, you’ll need to get a personal access token from your Discogs account. +You can generate a token from your profile’s Developer settings.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: discogs
+    token: YOUR_TOKEN
+
+
+
+

Configuration Variables

+
+
token
+
+

(string)(Required)The Discogs API token to use as identification to get your collection.

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dnsip/index.html b/components/sensor.dnsip/index.html new file mode 100644 index 0000000000..0b11861e11 --- /dev/null +++ b/components/sensor.dnsip/index.html @@ -0,0 +1,595 @@ + + + + + + + + + DNS IP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DNS IP +

+
+
+

The dnsip sensor will expose an IP address, fetched via DNS resolution, as its value. There are two operational modes:

+
    +
  1. When you enable the sensor with minimal configuration, it will query the OpenDNS nameservers with the hostname myip.opendns.com, which will resolve to your external/public IP address.
  2. +
  3. If you specify a hostname, a regular DNS lookup will be performed, providing you the IP the hostname resolves to.
  4. +
+

You may also override the nameserver that is being used by setting the resolver parameter to any nameserver you like.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: dnsip
+
+
+

Configuration variables:

+
    +
  • hostname (Optional): The hostname for which to perform the DNS query. Default: myip.opendns.com (special hostname that resolves to your public IP)
  • +
  • resolver (Optional): The DNS server to target the query at. Default: 208.67.222.222 (OpenDNS)
  • +
  • ipv6 (Optional): Set this to true or false if IPv6 should be used. When resolving the public IP, this will be the IP of the machine where Home Assistant is running on.
  • +
  • resolver_ipv6 (Optional): The IPv6 DNS server to target the query at. Default: 2620:0:ccc::2 (OpenDNS)
  • +
  • scan_interval (Optional): Defines number of seconds for polling interval. Default: 120 seconds.
  • +
+

Extended example

+
# Example configuration.yaml entry
+sensor:
+  # Own public IPv4 address
+  - platform: dnsip
+  # Resolve IP address of home-assistant.io via Google DNS
+  - platform: dnsip
+    hostname: home-assistant.io
+    resolver: 8.8.8.8
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dovado/index.html b/components/sensor.dovado/index.html new file mode 100644 index 0000000000..547b7b0f2b --- /dev/null +++ b/components/sensor.dovado/index.html @@ -0,0 +1,273 @@ + + + + + + + + + Dovado - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dovado +

+
+
+

The dovado platform let you monitor your router from Dovado

+

To add a Dovado sensor to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: dovado
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+    host: IP_ADDRESS
+    port: PORT
+    sensors:
+      - network
+
+
+

Configuration variables:

+
    +
  • username (Required): Your username.
  • +
  • password (Required): Your password.
  • +
  • host (Optional): The IP address of your router, e.g. 192.168.1.1. If no host is provided, the gateway for the same network as Home Assistant will automatically be used.
  • +
  • port (Optional): The port number of your router, e.g. 999. If no port is provided, the default API port (6435) will be used.
  • +
  • sensors array (Required): Conditions to display in the frontend. +
      +
    • network: Network state (3G, 4G, etc).
    • +
    • signal: The signal strength (%).
    • +
    • download: The download speed.
    • +
    • upload: The upload speed.
    • +
    • sms: Number of unread text messages
    • +
    +
  • +
+

If the router provides SMS functionality, a service for sending SMS will also be registered in Home Assistant.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dsmr/index.html b/components/sensor.dsmr/index.html new file mode 100644 index 0000000000..d242d0dfe1 --- /dev/null +++ b/components/sensor.dsmr/index.html @@ -0,0 +1,297 @@ + + + + + + + + + DSMR or Slimme meter - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DSMR or Slimme meter +

+
+
+

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 module by Nigel Dokter.
  • +
  • For official information about DSMR refer to: DSMR Document
  • +
  • For unofficial hardware connection examples refer to: Domoticx
  • +
+

+ +

+

This component is known to work for:

+
    +
  • Iskra ME382 / MT382 (DSMR 2.2)
  • +
  • Landis+Gyr E350 (DMSR 4)
  • +
  • Landis+Gyr ZCF110 / ZM F110 (DSMR 4.2)
  • +
  • Kaifa E0026
  • +
  • Kamstrup 382JxC (DSMR 2.2)
  • +
+

USB serial converters:

+
    +
  • Cheap (Banggood/ebay) Generic PL2303
  • +
  • https://sites.google.com/site/nta8130p1smartmeter/webshop
  • +
  • https://www.sossolutions.nl/slimme-meter-kabel
  • +
+

Serial to network proxies:

+
    +
  • ser2net - http://ser2net.sourceforge.net/
  • +
+
# Example configuration.yaml entry
+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).

+
+
name
+
+

(string)(Optional)Version of DSMR used by meter. Choices: 2.2, 4, 5. Defaults to 2.2.

+
+
+
+

Full configuration examples can be found below:

+
# Example configuration.yaml entry for USB/serial connected Smartmeter
+sensor:
+  - platform: dsmr
+    port: /dev/ttyUSB1
+    dsmr_version: 4
+
+group:
+  meter_readings:
+    name: Meter readings
+    entities:
+      - sensor.power_consumption_low
+      - sensor.power_consumption_normal
+      - sensor.power_production_low
+      - sensor.power_production_normal
+      - sensor.gas_consumption
+
+
+
# Example configuration.yaml entry for remote (TCP/IP, i.e. via ser2net) connection to host which is connected to Smartmeter
+sensor:
+  - platform: dsmr
+    host: 192.168.1.13
+    port: 2001
+    dsmr_version: 4
+
+group:
+  meter_readings:
+    name: Meter readings
+    entities:
+      - sensor.power_consumption_low
+      - sensor.power_consumption_normal
+      - sensor.power_production_low
+      - sensor.power_production_normal
+      - sensor.gas_consumption
+
+
+

Optional configuration example for ser2net:

+
# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv4 smart meters
+2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
+
+
+

or

+
# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv2.2 smart meters
+2001:raw:600:/dev/ttyUSB0:9600 EVEN 1STOPBIT 7DATABITS XONXOFF LOCAL -RTSCTS
+
+
+

HASSbian users have to give dialout permission to the user homeassistant:

+
$ sudo usermod -a -G dialout homeassistant
+
+
+

and after that you need to reboot!

+
$ sudo reboot
+
+
+

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 an asynchronous reading loop using the dsmr_parser module which waits for a complete telegram, parser it and puts it on an async queue as a dictionary of obis/object mapping. The numeric value and unit of each value can be read from the objects attributes. Because the obis are know for each DSMR version the Entities for this component are create during bootstrap.

+

Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dte_energy_bridge/index.html b/components/sensor.dte_energy_bridge/index.html new file mode 100644 index 0000000000..bcd5fb48be --- /dev/null +++ b/components/sensor.dte_energy_bridge/index.html @@ -0,0 +1,207 @@ + + + + + + + + + DTE Energy Bridge - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DTE Energy Bridge +

+
+
+

A sensor platform for the DTE 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: dte_energy_bridge
+    ip: 192.168.1.11
+
+
+

Configuration variables:

+
    +
  • ip (Required): The IP address of your bridge.
  • +
  • name (Optional): Name to use in the frontend.
  • +
  • version (Optional): Hardware version of the sensor. Defaults to 1.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dublin_bus_transport/index.html b/components/sensor.dublin_bus_transport/index.html new file mode 100644 index 0000000000..42e9cb69b1 --- /dev/null +++ b/components/sensor.dublin_bus_transport/index.html @@ -0,0 +1,218 @@ + + + + + + + + + Dublin Bus Transport - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dublin Bus Transport +

+
+
+

The dublin_bus_transport sensor will give you the time until the next two departures from a Dublin bus stop using the RTPI information.

+

The Dublin Bus website can help to determine the id of your bus stop. You can check if this is correct by going to

+

https://data.dublinked.ie/cgi-bin/rtpi/realtimebusinformation?stopid=[Stop ID]

+

Then add the data to your configuration.yaml file as shown in the example:

+
# Example configuration.yaml entry
+sensor:
+  - platform: dublin_bus_transport
+    stopid: STOP_ID
+
+
+

Configuration variables:

+
    +
  • stopid (Required): The ID of the bus stop to get the information for.
  • +
  • route (Optional): Only show a single bus route at the stop. This is the same as the bus number, e.g. 83.
  • +
  • name (Optional): A friendly name for this sensor.
  • +
+

The public RTPI information is coming from Dub Linked.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dwd_weather_warnings/index.html b/components/sensor.dwd_weather_warnings/index.html new file mode 100644 index 0000000000..85a826df58 --- /dev/null +++ b/components/sensor.dwd_weather_warnings/index.html @@ -0,0 +1,256 @@ + + + + + + + + + DWD Weather warnings - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DWD Weather warnings +

+
+
+

The dwd_weather_warnings sensor platform uses the Deutsche Wetter Dienst (DWD) 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:

+
# 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/components/sensor.dweet/index.html b/components/sensor.dweet/index.html new file mode 100644 index 0000000000..8575cd2e2a --- /dev/null +++ b/components/sensor.dweet/index.html @@ -0,0 +1,621 @@ + + + + + + + + + Dweet.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dweet.io +

+
+
+

The dweet sensor platform allows you to get details from your devices which are publishing their values to Dweet.io.

+

To use Dweet.io in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: dweet
+    device: THING_NAME
+    value_template: '{{ value_json.VARIABLE }}'
+
+
+

Configuration variables:

+
    +
  • device (Required): Identification of the device (also known as thing).
  • +
  • value_template (Required): The variable to extract a value from the content.
  • +
  • name (Optional): Let you overwrite the name of the device in the frontend.
  • +
  • unit_of_measurement (Optional): Defines the unit of measurement of the sensor, if any.
  • +
+

Full configuration sample

+

A full configuration entry could look like the sample below.

+
# Example configuration.yaml entry
+sensor:
+  - platform: dweet
+    name: Temperature
+    device: THING_NAME
+    value_template: '{{ value_json.VARIABLE }}'
+    unit_of_measurement: "°C"
+
+
+

Interacting with Dweet.io

+

You can easily send dweets from the command-line to test your sensor with curl.

+
$ curl -H 'Content-Type: application/json' -d '{"temperature": 40, "humidity": 65}' https://dweet.io/dweet/for/ha-sensor
+
+
+

will give you a response like the one below:

+
{"this":"succeeded","by":"dweeting","the":"dweet","with":{"thing":"ha-sensor","created":"2015-12-10T09:43:31.133Z","content":{"temperature":40,"humidity":65}}}
+
+
+

The dweepy module gives you another option to work with Dweet.io.

+

Send a dweet.

+
$ python3
+>>> import dweepy
+>>> dweepy.dweet_for('ha-sensor', {'temperature': '23', 'humiditiy':'81'})
+{'thing': 'ha-sensor', 'created': '2015-12-10T09:46:08.559Z', 'content': {'humiditiy': 81, 'temperature': 23}}
+
+
+

Receive the latest dweet.

+
>>> dweepy.get_latest_dweet_for('ha-sensor')
+[{'thing': 'ha-sensor'', 'created': '2015-12-10T09:43:31.133Z', 'content': {'humidity': 65, 'temperature': 40}}]
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.dyson/index.html b/components/sensor.dyson/index.html new file mode 100644 index 0000000000..92e58e1321 --- /dev/null +++ b/components/sensor.dyson/index.html @@ -0,0 +1,585 @@ + + + + + + + + + Dyson Purifier Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dyson Purifier Sensor +

+
+
+

The dyson sensor platform allows you to control your Dyson Purifier’s filter life time.

+

You have first to setup the Dyson component

+

Supported fan devices

+
    +
  • Pure Cool link (desk and tower)
  • +
  • Pure Hot+cool link (but heating is not yet supported)
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ebox/index.html b/components/sensor.ebox/index.html new file mode 100644 index 0000000000..0728eed593 --- /dev/null +++ b/components/sensor.ebox/index.html @@ -0,0 +1,598 @@ + + + + + + + + + EBox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EBox +

+
+
+

Integrate your EBox account information into Home Assistant.

+

To use your EBox sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: ebox
+    username: MYUSERNAME
+    password: MYPASSWORD
+    monitored_variables:
+     - before_offpeak_download
+     - before_offpeak_upload
+     - before_offpeak_total
+
+
+

Configuration variables:

+
    +
  • username (Required): Your EBox username.
  • +
  • password (Required): Your EBox password.
  • +
  • monitored_variables array (Required): Variables to monitor. +
      +
    • before_offpeak_download: Download before offpeak usage
    • +
    • before_offpeak_upload: Upload before offpeak usage
    • +
    • before_offpeak_total: Total before offpeak usage
    • +
    • offpeak_download: Download offpeak usage
    • +
    • offpeak_upload: Upload offpeak usage
    • +
    • offpeak_total: Total offpeak usage
    • +
    • download: Download usage
    • +
    • upload: Upload usage
    • +
    • total: Total usage
    • +
    • balance: Account balance
    • +
    • limit: Limit usage
    • +
    • usage: Percent usage
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ecobee/index.html b/components/sensor.ecobee/index.html new file mode 100644 index 0000000000..5ce6d7f998 --- /dev/null +++ b/components/sensor.ecobee/index.html @@ -0,0 +1,387 @@ + + + + + + + + + Ecobee Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ecobee Sensor +

+
+
+

To get your Ecobee sensors working with Home Assistant, follow the instructions for the general Ecobee component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.eddystone_temperature/index.html b/components/sensor.eddystone_temperature/index.html new file mode 100644 index 0000000000..5a797ebab2 --- /dev/null +++ b/components/sensor.eddystone_temperature/index.html @@ -0,0 +1,239 @@ + + + + + + + + + Eddystone Beacon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Eddystone Beacon +

+
+
+

The eddystone_temperature sensor platform reads temperature information from Bluetooth LE advertisements transmitted by Eddystone beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). +All beacons that support the Eddystone protocol, have a temperature sensor and can transmit TLM frames are compatible with this platform. For example Gimbal, Estimote or kontakt.io. For more manufacturers see this overview by Google.

+

Requirements

+

As this platform uses bluez to scan for Bluetooth LE devices a Linux OS with bluez installed is required. In addition to that, the libbluetooth headers need to be installed:

+
$ sudo apt-get install libbluetooth-dev 
+
+
+

Scanning for Bluetooth LE devices also requires special permissions. To grant these to the python executable execute the following:

+
$ sudo apt-get install libcap2-bin
+$ sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which python3))
+
+
+

To use your Eddystone beacon in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: eddystone_temperature
+    bt_device_id: 0  # optional
+    beacons:
+      living_room:
+        namespace: "112233445566778899AA"
+        instance: "000000000001"
+      kitchen:
+        namespace: "112233445566778899AA"
+        instance: "000000000002"
+
+
+

Configuration variables:

+
    +
  • bt_device_id (Optional): The id of the Bluetooth device that should be used for scanning (hciX). You can find the correct one using hcitool dev (default: 0).
  • +
  • beacons array (Required): The beacons that should be monitored. +
      +
    • [entry] (Required): Name of the beacon. +
        +
      • namespace (Required): Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long.
      • +
      • instance (Required): Instance ID of the beacon in hexadecimal notation. Must be exactly 12 characters (6 bytes) long.
      • +
      • name (Optional): Friendly name of the beacon.
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.efergy/index.html b/components/sensor.efergy/index.html new file mode 100644 index 0000000000..d0c4164233 --- /dev/null +++ b/components/sensor.efergy/index.html @@ -0,0 +1,241 @@ + + + + + + + + + Efergy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Efergy +

+
+
+

Integrate your Efergy meter information into Home Assistant. To get an app token:

+
    +
  1. +

    Log in to your efergy account

    +
  2. +
  3. +

    Go to the Settings page

    +
  4. +
  5. +

    Click on App tokens

    +
  6. +
  7. +

    Click “Add token”

    +
  8. +
+
# Example configuration.yaml entry
+sensor:
+  - platform: efergy
+    app_token: APP_TOKEN
+    utc_offset: UTC_OFFSET
+    monitored_variables:
+      - type: instant_readings
+      - type: budget
+      - type: cost
+        period: day
+        currency: $
+      - type: amount
+        period: day
+      - type: current_values
+
+
+

Configuration variables:

+
    +
  • app_token (Required): The App Token for your account.
  • +
  • utc_offset (Required): Some variables (currently only the daily_cost) require that the +negative number of minutes your timezone is ahead/behind UTC time.
  • +
  • monitored_variables array (Required): Variables to monitor. +
      +
    • type (Required): Name of the variable. +
        +
      • instant_readings: Instant energy consumption.
      • +
      • budget: Monthly budget.
      • +
      • cost: The cost for energy consumption (with the tariff that has been set in Efergy) over a given period.
      • +
      • amount: The amount of energy consumed over a given period.
      • +
      • current_values: This returns the current energy usage of each device on your account, as efergy_<sid of device>. If you only have one device in your account, this is effectively the same as instant_readings.
      • +
      +
    • +
    • period (Optional): Some variables take a period argument. Valid options are “day”, “week”, “month”, and “year”.
    • +
    • currency (Optional): This is used to display the cost/period as the unit when monitoring the cost. It should correspond to the actual currency used in your dashboard.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.eight_sleep/index.html b/components/sensor.eight_sleep/index.html new file mode 100644 index 0000000000..59a5480711 --- /dev/null +++ b/components/sensor.eight_sleep/index.html @@ -0,0 +1,577 @@ + + + + + + + + + Eight Sleep Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Eight Sleep Sensor +

+
+
+

The eight_sleep sensor platform lets you observe states of Eight Sleep sensors through Home Assistant. This includes bed state and results of the current and previous sleep sessions.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.eliqonline/index.html b/components/sensor.eliqonline/index.html new file mode 100644 index 0000000000..63d2c843ae --- /dev/null +++ b/components/sensor.eliqonline/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Eliqonline - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Eliqonline +

+
+
+

Integrate your ELIQ Online smart meter information into Home Assistant. To get an access token and the Channel ID, log in to your account.

+

To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: eliqonline
+    access_token: ACCESS_TOKEN
+    channel_id: CHANNEL_ID
+
+
+

Configuration variables:

+
    +
  • access_token (Required): The Access Token for your account.
  • +
  • channel_id (Required): Channel ID (as integer) of your device.
  • +
  • name (Optional): The name of the sensor, eg. the city.
  • +
+

For details please check the API documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.emoncms/index.html b/components/sensor.emoncms/index.html new file mode 100644 index 0000000000..bd43c2e545 --- /dev/null +++ b/components/sensor.emoncms/index.html @@ -0,0 +1,674 @@ + + + + + + + + + Emoncms Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Emoncms Sensor +

+
+
+

The emoncms sensor platform creates sensors for the feeds available in your local or cloud based version of Emoncms.

+

To enable this sensor, add the following lines to your configuration.yaml, it will list all feeds as a sensor:

+
# Example configuration.yaml entry using cloud based Emoncms
+sensor:
+  platform: emoncms
+  api_key: API_KEY
+  url: https://emoncms.org
+  id: 1
+
+
+

Configuration variables

+
    +
  • api_key (Required): The read API key for your Emoncms user.
  • +
  • url (Required): The base URL of Emoncms, use “https://emoncms.org” for the cloud based version.
  • +
  • id (Required): Positive integer identifier for the sensor. Must be unique if you specify multiple Emoncms sensors.
  • +
  • include_only_feed_id (Optional): Positive integer list of Emoncms feed IDs. Only the feeds with feed IDs specified here will be displayed. Can not be specified if exclude_feed_id is specified.
  • +
  • exclude_feed_id (Optional): Positive integer list of Emoncms feed IDs. All the feeds will be displayed as sensors except the ones listed here. Can not be specified if include_only_feed_id is specified.
  • +
  • sensor_names (Optional): Dictionary of names for the sensors created that are created based on feed ID. The dictionary consists of feedid: name pairs. Sensors for feeds with their feed ID mentioned here will get the chosen name instead of the default name
  • +
  • value_template (Optional): Defines a template to alter the feed value.
  • +
  • scan_interval (Optional): Defines the update interval of the sensor in seconds.
  • +
  • unit_of_measurement (Optional): Defines the unit of measurement of for all the sensors. default is “W”.
  • +
+

Default naming scheme

+

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.

+

Examples

+

In this section you find some more examples of how this sensor can be used.

+

Display only feeds with their feed IDs specified in include_only_feed_id.

+
# Example configuration.yaml entry
+sensor:
+  - platform: emoncms
+    api_key: API_KEY
+    url: https://emoncms.org
+    id: 1
+    unit_of_measurement: "W"
+    include_only_feed_id:
+      - 107
+      - 105
+
+
+

Display all feeds except feeds with their feed id specified in exclude_feed_id.

+
# Example configuration.yaml entry
+sensor:
+  - platform: emoncms
+    api_key: API_KEY
+    url: https://emoncms.org
+    id: 1
+    unit_of_measurement: "KWH" 
+    exclude_feed_id:
+      - 107
+      - 105
+
+
+

Display only feeds with their feed id’s specified in include_only_feed_id and give the feed sensors a name using “sensor_names”. You don’t have to specify all feeds names in “sensor_names”, the remaining sensor names will be chosen based on “id” and the Emoncms feedid.

+
# Example configuration.yaml entry
+sensor:
+  - platform: emoncms
+    api_key: API_KEY
+    url: https://emoncms.org
+    id: 1
+    unit_of_measurement: "KW" 
+    include_only_feed_id:
+      - 5
+      - 120
+    sensor_names:
+      5: "feed 1"
+      48: "kWh feed"
+      61: "amp feed"
+      110: "watt feed"
+
+
+

Use a value_template to add 1500 to the feed value for all specified feed IDs in include_feed_id.

+
# Example configuration.yaml entry
+sensor:
+  - platform: emoncms
+    api_key: API_KEY
+    url: https://emoncms.org
+    scan_interval: 15
+    id: 1
+    value_template: "{{ value | float + 1500 }}"
+    include_only_feed_id:
+      - 107
+      - 106
+
+
+

Display feeds from the same Emoncms instance with 2 groups of feeds, different scan_interval and a different unit_of_measurement.

+
# Example configuration.yaml entry
+sensor:
+  - platform: emoncms
+    api_key: API_KEY
+    url: https://emoncms.org
+    scan_interval: 30
+    id: 1
+    unit_of_measurement: "W" 
+    include_only_feed_id:
+      - 107
+      - 106
+  - platform: emoncms
+    api_key:  put your emoncms read api key here
+    url: https://emoncms.org
+    id: 2
+    scan_interval: 60
+    unit_of_measurement: "A" 
+    include_only_feed_id:
+      - 108
+      - 61
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.enocean/index.html b/components/sensor.enocean/index.html new file mode 100644 index 0000000000..17498cbbac --- /dev/null +++ b/components/sensor.enocean/index.html @@ -0,0 +1,596 @@ + + + + + + + + + EnOcean Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EnOcean Sensor +

+
+
+

The enocean sensor platform currently only allows reading out the power measured in a Permundo PSC234 switch.

+

To use your EnOcean device, you first have to set up your EnOcean hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - name: Television
+    platform: enocean
+    id: [0x01,0x90,0x84,0x3C]
+
+
+

Configuration variables:

+
    +
  • id (Required): The ID of the device. This is a 4 bytes long number.
  • +
  • platform (Required): Set to enocean.
  • +
  • name (Required): An identifier for the switch
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.envirophat/index.html b/components/sensor.envirophat/index.html new file mode 100644 index 0000000000..f449d150fc --- /dev/null +++ b/components/sensor.envirophat/index.html @@ -0,0 +1,667 @@ + + + + + + + + + Enviro pHAT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Enviro pHAT +

+
+
+

The envirophat sensor platform allows you to display information collected by an 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 color sensor with two LEDs for illumination
  • +
  • LSM303D accelerometer/magnetometer sensor
  • +
  • ADS1015 4-channel 3.3v, analog to digital sensor (ADC)
  • +
+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry,
+# which is equivalent to the default setup
+sensor:
+  - platform: envirophat
+    use_led: false
+    display_options:
+      - temperature
+      - pressure
+      - light
+      - light_red
+      - light_green
+      - light_blue
+      - accelerometer_x
+      - accelerometer_y
+      - accelerometer_z
+      - magnetometer_x
+      - magnetometer_y
+      - magnetometer_z
+      - voltage_0
+      - voltage_1
+      - voltage_2
+      - voltage_3
+
+
+

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 might affect the accuracy of the reading (ie. the Pi might heat up the sensor)
    • +
    • pressure: atmospheric pressure in hPa.
    • +
    • light: ambient light, as an integer in the 0-65535 range
    • +
    • light_red: red color reading scaled to the ambient light, as an integer in the 0-255 range
    • +
    • light_green: green color reading scaled to the ambient light, as an integer in the 0-255 range
    • +
    • light_blue: blue color reading scaled to the ambient light, as an integer in the 0-255 range
    • +
    • accelerometer_x: accelerometer reading in units of G, along the X axis
    • +
    • accelerometer_y: accelerometer reading in units of G, along the Y axis
    • +
    • accelerometer_z: accelerometer reading in units of G, along the Z axis
    • +
    • magnetometer_x: magnetometer reading, the X component of the raw vector
    • +
    • magnetometer_y: magnetometer reading, the Y component of the raw vector
    • +
    • magnetometer_z: magnetometer reading, the X component of the raw vector
    • +
    • voltage_0: voltage reading on Analog In 0 in units of V
    • +
    • voltage_1: voltage reading on Analog In 1 in units of V
    • +
    • voltage_2: voltage reading on Analog In 2 in units of V
    • +
    • voltage_3: voltage reading on Analog In 3 in units of V
    • +
    +
  • +
  • use_led (Optional) True / False boolean; Default value is False, declaring that the on-board LEDs are not used for the color measurements thus these readings are based on the ambient light. If the value is set to True, the on-board LEDs will blink whenever a reading is taken.
  • +
+

Notes

+
    +
  • X, Y, Z axes +
      +
    • X is parallel with the long edge of the board
    • +
    • Y is parallel with the short edge of the board
    • +
    • Z is perpendicular to the board
    • +
    +
  • +
  • Voltages +
      +
    • voltage readings are done in the 0-3.3V range, please do not connect higher voltages than that! See the Enviro pHAT’s getting started guide regarding how to make a voltage divider
    • +
    +
  • +
+

Give the values friendly names & icons

+

Add something like the following to your customize section:

+
# Example configuration.yaml entry
+  customize:
+    sensor.accelerometer_z:
+      icon: mdi:airplane-landing
+      friendly_name: "Acc Z"
+    sensor.magnetometer_x:
+      icon: mdi:arrow-up-bold-hexagon-outline
+      friendly_name: "Magnetic X"
+    sensor.pressure:
+      icon: mdi:weight
+      friendly_name: "Pressure"
+
+
+

Create groups

+
# Example configuration.yaml entry
+group:
+  enviro_phat_voltages:
+    name: Enviro pHAT Voltages`
+    entities:
+      - sensor.voltage_0
+      - sensor.voltage_1
+      - sensor.voltage_2
+      - sensor.voltage_3
+
+
+

Enabling the required i2c-1 device

+

Since the Enviro pHAT communicates over I2C, you might also need to make sure that the I2C devices are enabled, by adding or uncommenting the following line in /boot/config.txt (see the DT Parameters section in the Raspberry Pi documentation):

+
dtparam=i2c_arm=on
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.envisalink/index.html b/components/sensor.envisalink/index.html new file mode 100644 index 0000000000..8100716976 --- /dev/null +++ b/components/sensor.envisalink/index.html @@ -0,0 +1,580 @@ + + + + + + + + + Envisalink Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Envisalink Sensor +

+
+
+

The envisalink platform allows you to get data from your Envisalink sensors from within Home Assistant.

+

The requirement is that you have setup your Envisalink hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.etherscan/index.html b/components/sensor.etherscan/index.html new file mode 100644 index 0000000000..71b83f6f56 --- /dev/null +++ b/components/sensor.etherscan/index.html @@ -0,0 +1,229 @@ + + + + + + + + + Etherscan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Etherscan +

+
+
+

The Etherscan sensor platform displays Ether and ERC-20 token balances from Etherscan.io.

+

To add the Etherscan sensor to your installation, specify an Ethereum address to watch in the configuration.yaml file. You can also optionally provide a token name to retrieve and ERC-20 token balance. If no token is provided then the balance retrieved will be in ETH. You can also optionally provide the token contract address in case the token name is not found.

+
# Example configuration.yaml entry
+sensor:
+  - platform: etherscan
+    address: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359'
+  - platform: etherscan
+    address: "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359"
+    token: OMG
+  - platform: etherscan
+    address: "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359"
+    token_address: "0xef68e7c694f40c8202821edf525de3782458639f"
+    token: LRC
+
+
+
+

Configuration Variables

+
+
address
+
+

(string)(Required)Ethereum wallet address to watch.

+
+
name
+
+

(string)(Optional)The name of the sensor used in the frontend.

+

Default value: ETH Balance

+
+
token
+
+

(string)(Optional)The ERC20 token symbol. i.e., OMG.

+
+
token_address
+
+

(string)(Optional)The ERC20 token contract address.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fail2ban/index.html b/components/sensor.fail2ban/index.html new file mode 100644 index 0000000000..b78086b692 --- /dev/null +++ b/components/sensor.fail2ban/index.html @@ -0,0 +1,706 @@ + + + + + + + + + Fail2Ban Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fail2Ban Sensor +

+
+
+

The fail2ban sensor allows for IPs banned by fail2ban to be displayed in the Home Assistant frontend.

+

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

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: fail2ban
+    jails:
+      - ssh
+      - hass-iptables
+
+
+
+

Configuration Variables

+
+
jails
+
+

(list)(Required)List of configured jails you want to display.

+
+
name
+
+

(string)(Optional)Name of the sensor.

+

Default value: fail2ban

+
+
file_path
+
+

(string)(Optional)Path to the fail2ban log.

+

Default value: /var/log/fail2ban.log

+
+
+
+

Set up Fail2Ban

+

For most setups, you can follow this tutorial to set up fail2ban on your system. It will walk you through creating jails and filters, allowing you to monitor IP addresses that have been banned for too many failed SSH login attempts, as well as too many failed Home Assistant login attempts.

+

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

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

+

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 <HOST>.*$
+
+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:

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

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

+

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 +
      [Init]
    +  datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S
    +
    +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fastdotcom/index.html b/components/sensor.fastdotcom/index.html new file mode 100644 index 0000000000..30030e8626 --- /dev/null +++ b/components/sensor.fastdotcom/index.html @@ -0,0 +1,271 @@ + + + + + + + + + Fast.com - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fast.com +

+
+
+

The fastdotcom sensor component uses the Fast.com web service to measure network bandwidth performance.

+

+Currently fast.com only supports measuring download bandwidth. If you want to measure bandwidth metrics other then download such as ping and upload, utilize the speedtest component. +

+

By default, it will run every hour. The user can change the update frequency in the config by defining the minute, hour, and day for a speedtest to run.

+

To add a Fast.com sensor to your installation, add the following to your configuration.yaml file:

+

Once per hour, on the hour (default):

+
sensor:
+  - platform: fastdotcom 
+
+
+

More examples:

+

Every half hour of every day:

+
sensor:
+  - platform: fastdotcom
+    minute:
+      - 0
+      - 30
+
+
+

Configuration variables:

+
    +
  • minute (Optional): Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. Default is 0.
  • +
  • hour (Optional): Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. Default is None.
  • +
  • day (Optional): Specify the day(s) of the month to schedule the speedtest. Use a list for multiple entries. Default is None.
  • +
  • manual (Optional): True or False to turn manual mode on or off. Manual mode will disable scheduled speedtests.
  • +
+

There is also a service named sensor.update_fastdotcom that you can use to run a fast.com speedtest on demand. You can turn on manual mode to disable the scheduled speedtests.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fedex/index.html b/components/sensor.fedex/index.html new file mode 100644 index 0000000000..fb53e8b561 --- /dev/null +++ b/components/sensor.fedex/index.html @@ -0,0 +1,598 @@ + + + + + + + + + Fedex Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fedex Sensor +

+
+
+

The fedex platform allows one to track deliveries by FedEx. To use this sensor, you need a FedEx Delivery Manager account.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: fedex
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+

Configuration options for the FedEx Sensor:

+
    +
  • username (Required): The username to access the FedEx Delivery Manager service.
  • +
  • password (Required): The password for the given username.
  • +
  • name (Optional): Name the sensor.
  • +
  • update_inverval (Optional): Minimum time interval between updates. Default is 1 hour. Supported formats: +
      +
    • update_interval: 'HH:MM:SS'
    • +
    • update_interval: 'HH:MM'
    • +
    • Time period dictionary, e.g.: +
      update_interval:
      +    # At least one of these must be specified:
      +    days: 0
      +    hours: 0
      +    minutes: 3
      +    seconds: 30
      +    milliseconds: 0
      +
      +
    • +
    +
  • +
+

+The FedEx sensor logs into the FedEx Delivery Manager website to scrape package data. It does not use an API. Use at your own risk. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fido/index.html b/components/sensor.fido/index.html new file mode 100644 index 0000000000..23e36b8e36 --- /dev/null +++ b/components/sensor.fido/index.html @@ -0,0 +1,607 @@ + + + + + + + + + Fido - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fido +

+
+
+

Integrate your Fido account information into Home Assistant.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: fido
+    username: MYUSERNAME
+    password: MYPASSWORD
+    monitored_variables:
+     - fido_dollar
+     - balance
+     - data_used
+
+
+

Configuration variables:

+
    +
  • username (Required): You Fido username (your Fido phone number or your email).
  • +
  • password (Required): Your Fido password.
  • +
  • number (Optional): Your Fido phone number (it will use your username if empty).
  • +
  • monitored_variables array (Required): Variables to monitor. +
      +
    • fido_dollar: Your Fido dollar balance
    • +
    • balance: Your account balance
    • +
    • data_used: Current data used
    • +
    • data_limit: Current data limit
    • +
    • data_remaining: Current data remaining
    • +
    • text_used: SMS sent
    • +
    • text_limit: SMS limit
    • +
    • text_remaining: SMS remaining
    • +
    • mms_used: MMS sent
    • +
    • mms_limit: MMS limit
    • +
    • mms_remaining: MMS remaining
    • +
    • text_int_used: International SMS sent
    • +
    • text_int_limit: International SMS limit
    • +
    • text_int_remaining: International SMS remaining
    • +
    • 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 international calls)
    • +
    • other_talk_limit: Other talk time limit
    • +
    • other_talt_remaining: Other talk time remaining
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.file/index.html b/components/sensor.file/index.html new file mode 100644 index 0000000000..3f29e892dd --- /dev/null +++ b/components/sensor.file/index.html @@ -0,0 +1,606 @@ + + + + + + + + + File Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ File Sensor +

+
+
+

The file sensor platform reads the entries from a plain-text file and shows the found value. Only the last line of the file is used. This is similar to do $ tail -n 1 sensor.txt on the command-line.

+

To enable the file sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: file
+    file_path: /home/user/.homeassistant/sensor-data.txt
+
+
+

Configuration variables:

+
    +
  • file_path (Required): path to file that stores the sensor data.
  • +
  • name (Optional): Name of the sensor to use in the frontend. Defaults to File.
  • +
  • unit_of_measurement (Optional): Defines the units of measurement of the sensor, if any.
  • +
  • value_template (Optional): Defines a template to extract a value from the payload.
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Entries as JSON

+

Assuming that the log file contains multiple values formatted as JSON like shown below:

+
[...]
+{"temperature": 21, "humidity": 39}
+{"temperature": 22, "humidity": 36}
+
+
+

This would require the following entry in the configuration.yaml file to extract the temperature:

+
# Example configuration.yaml entry
+sensor:
+  - platform: file
+    name: Temperature
+    file_path: /home/user/.homeassistant/sensor.json
+    value_template: '{{ value_json.temperature }}'
+    unit_of_measurement: '°C'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.filesize/index.html b/components/sensor.filesize/index.html new file mode 100644 index 0000000000..fed4dc75f0 --- /dev/null +++ b/components/sensor.filesize/index.html @@ -0,0 +1,581 @@ + + + + + + + + + File size sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ File size sensor +

+
+
+

Component for displaying the size in MB of a file. Note that paths must be added to whitelist_external_dirs. +Add to your config:

+
sensor:
+  - platform: filesize
+    file_paths:
+      - /config/home-assistant_v2.db
+
+
+
+

Configuration Variables

+
+
file_paths
+
+

(list of strings)(Required)The absolute path to the file.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.filter/index.html b/components/sensor.filter/index.html new file mode 100644 index 0000000000..04f8b0f55b --- /dev/null +++ b/components/sensor.filter/index.html @@ -0,0 +1,655 @@ + + + + + + + + + Filter Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Filter Sensor +

+
+
+

The filter platform enables sensors that process the states of other entities.

+

filter applies a signal processing algorithm to a sensor, previous and current states, and generates a new state given the chosen algorithm.

+

+ +

+

To enable Filter Sensors in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: filter
+    name: "filtered realistic humidity"
+    entity_id: sensor.realistic_humidity
+    filters:
+      - filter: outlier
+        window_size: 4
+        radius: 4.0
+      - filter: lowpass
+        time_constant: 10
+        precision: 2
+
+
+

Filters can be chained and are applied according to the order present in the configuration file.

+
+

Configuration Variables

+
+
entity_id
+
+

(string)(Required)The entity ID of the sensor to be filtered.

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+
+
filters
+
+

(map)(Required)Filters to be used.

+
+
+
+
filter
+
+

(string)(Required)Algorithm to be used to filter data. Available filters are lowpass, outlier and throttle.

+
+
window_size
+
+

(int)(Optional)Size of the window of previous states.

+

Default value: 5

+
+
precision
+
+

(int)(Optional)See lowpass filter. Defines the precision of the filtered state, through the argument of round().

+

Default value: None

+
+
time_constant
+
+

(int)(Optional)See lowpass filter. Loosely relates to the amount of time it takes for a state to influence the output.

+

Default value: 10

+
+
radius
+
+

(float)(Optional)See outlier filter. Band radius from median of previous states.

+

Default value: 2.0

+
+
+
+
+
+

Filters

+

Low-pass

+

The Low-pass filter (lowpass) is one of signal processing most common filters, as it smooths data by shortcuting peaks and valleys.

+

The included Low-pass filter is very basic and is based on a moving average, in which the previous data point is weighted with the new data point.

+
B = 1.0 / time_constant
+A = 1.0 - B
+LowPass(state) = A * previous_state + B * state
+
+
+

The returned value is rounded to the number of decimals defined in (precision).

+

Outlier

+

The Outlier filter (outlier) is a basic Band-stop filter, as it cuts out any value outside a specific range.

+

The included Outlier filter will discard any value beyond a band centered on the median of the previous values, replacing it with the median value of the previous values. If inside the band, the

+
distance = abs(state - median(previous_states))
+
+if distance > radius:
+    median(previous_states)
+else:
+    state
+
+
+

Throttle

+

The Throttle filter (throttle) will only update the state of the sensor for the first state in the window. This means the filter will skip all other values.

+

To adjust the rate you need to set the window_size. To throttle a sensor down to 10%, the window_size should be set to 10, for 50% should be set to 2.

+

This filter is relevant when you have a sensor which produces states at a very high-rate, which you might want to throttle down for storing or visualization purposes.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fitbit/index.html b/components/sensor.fitbit/index.html new file mode 100644 index 0000000000..dd4c054bd1 --- /dev/null +++ b/components/sensor.fitbit/index.html @@ -0,0 +1,227 @@ + + + + + + + + + Fitbit - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fitbit +

+
+
+

The Fitbit sensor allows you to expose data from Fitbit to Home Assistant.

+

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

Restart Home Assistant once this is complete. Go to the frontend. You will see a new entry for configuring Fitbit. Follow the instructions there to complete the setup process.

+

Please be aware that Fitbit has very low rate limits, 150 per user per hour. The clock resets at the top of the hour (meaning it is not a rolling 60 minutes). There is no way around the limits. Due to the rate limits, the sensor only updates every 30 minutes. You can manually trigger an update by restarting Home Assistant. Keep in mind that 1 request is used for every entry in monitored_resources.

+

The unit system that the sensor will use is based on the country you set in your Fitbit profile.

+

Configuration variables:

+
    +
  • monitored_resources (Optional): Resource to monitor. Defaults to activities/steps.
  • +
  • clock_format (Optional): Format to use for sleep/startTime resource. Accepts 12H or 24H. Defaults to 24H.
  • +
  • unit_system (Optional): Unit system to use for measurements. Accepts default, metric, en_US or en_GB. Defaults to default.
  • +
+

Below is the list of resources that you can add to monitored_resources. One sensor is exposed for every resource.

+
activities/activityCalories
+activities/calories
+activities/caloriesBMR
+activities/distance
+activities/elevation
+activities/floors
+activities/heart
+activities/minutesFairlyActive
+activities/minutesLightlyActive
+activities/minutesSedentary
+activities/minutesVeryActive
+activities/steps
+activities/tracker/activityCalories
+activities/tracker/calories
+activities/tracker/distance
+activities/tracker/elevation
+activities/tracker/floors
+activities/tracker/minutesFairlyActive
+activities/tracker/minutesLightlyActive
+activities/tracker/minutesSedentary
+activities/tracker/minutesVeryActive
+activities/tracker/steps
+body/bmi
+body/fat
+body/weight
+devices/battery
+sleep/awakeningsCount
+sleep/efficiency
+sleep/minutesAfterWakeup
+sleep/minutesAsleep
+sleep/minutesAwake
+sleep/minutesToFallAsleep
+sleep/startTime
+sleep/timeInBed
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fixer/index.html b/components/sensor.fixer/index.html new file mode 100644 index 0000000000..74f6ecbac3 --- /dev/null +++ b/components/sensor.fixer/index.html @@ -0,0 +1,220 @@ + + + + + + + + + Fixer.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Fixer.io +

+
+
+

The fixer sensor will show you the current exchange rate from Fixer.io which is using data from the European Central Bank (ECB).

+

To get an overview about the available currencies.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: fixer
+    target: CHF
+
+
+
+

Configuration Variables

+
+
target
+
+

(string)(Required)The symbol of the target currency.

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+

Default value: Exchange rate

+
+
base
+
+

(string)(Optional)The symbol of the base currency.

+

Default value: USD

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.folder/index.html b/components/sensor.folder/index.html new file mode 100644 index 0000000000..4c468d06e3 --- /dev/null +++ b/components/sensor.folder/index.html @@ -0,0 +1,585 @@ + + + + + + + + + Folder sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Folder sensor +

+
+
+

Sensor for monitoring the contents of a folder. Note that folder paths must be added to whitelist_external_dirs. Optionally a wildcard filter can be applied to the files considered within the folder. The state of the sensor is the size in MB of files within the folder that meet the filter criteria. The number of filtered files in the folder and total size in bytes of those files are exposed as attributes.

+

To enable the folder sensor in your installation, add the following to your configuration.yaml file:

+
sensor:
+  - platform: folder
+    folder: /config
+
+
+
+

Configuration Variables

+
+
folder
+
+

(string)(Required)The folder path

+
+
filter
+
+

(string)(Optional)Filter to apply

+

Default value: *

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.forecast/index.html b/components/sensor.forecast/index.html new file mode 100644 index 0000000000..6d244c6c8e --- /dev/null +++ b/components/sensor.forecast/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/sensor.fritzbox_callmonitor/index.html b/components/sensor.fritzbox_callmonitor/index.html new file mode 100644 index 0000000000..b60fd4e8be --- /dev/null +++ b/components/sensor.fritzbox_callmonitor/index.html @@ -0,0 +1,302 @@ + + + + + + + + + FRITZ!Box Call Monitor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FRITZ!Box Call Monitor +

+
+
+

The fritzbox_callmonitor sensor monitors the call monitor exposed by AVM Fritz!Box routers +on TCP port 1012. It will assume the values idle, ringing, dialing, or talking with the phone numbers involved contained in the state attributes. +It can also access the internal phone book of the router to look up the names corresponding to the phone numbers and store them in the state attributes.

+

To activate the call monitor on your Fritz!Box, dial #96*5* from any phone connected to it.

+

To use the Fritz!Box call monitor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: fritzbox_callmonitor
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1.
  • +
  • port (Optional): The TCP port of the call monitor. There is usually no reason to change this.
  • +
  • username (Optional): Fritz!Box user’s user name. This is required to use the phone book lookup feature. The user needs to have the “voice message, fax message, Fritz!App Fon and call list” permission.
  • +
  • password (Optional): Fritz!Box user’s user password. This is required to use the phone book lookup feature.
  • +
  • phonebook (Optional): Numerical ID identifying the phonebook to be used. If there is just one phonebook, this is usually 0.
  • +
  • prefixes (Optional): In case of a local call, the phone number seen by the router might differ from the one stored in the phone book by an area code, similarly for the international prefix. To remedy this, a list of prefixes, that can be appended to the phone number in case it is not found in the phone book, can be given.
  • +
+

Examples

+

Full configuration

+

The example below shows a full configuration for a call monitor with phone book support.

+
# Example configuration.yml entry
+sensor:
+  - platform: fritzbox_callmonitor
+    name: Phone
+    username: my_username
+    password: my_password
+    phonebook: 0
+    prefixes:
+      - '+49'
+      - '+4989'
+      - '089'
+
+
+

Send notifications on state change

+

This example shows how to send notifications whenever the sensor’s state changes. You will get notified both when you receive a call and also when a call is placed.

+
# Example configuration.yml entry.
+automation:
+  - alias: "Notify about phone state"
+    trigger:
+      - platform: state
+        entity_id: sensor.phone
+    action:
+      - service: notify.notify
+        data:
+          title: "Phone"
+          message: >-
+            {% if is_state("sensor.phone", "idle") %}
+              Phone is idle
+            {% elif is_state("sensor.phone", "dialing") %}
+              Calling {{ states.sensor.phone.attributes.to_name }} ({{ states.sensor.phone.attributes.to }})
+            {% elif is_state("sensor.phone", "ringing") %}
+              Incoming call from {{ states.sensor.phone.attributes.from_name }} ({{ states.sensor.phone.attributes.from }})
+            {% else %}
+              Talking to {{ states.sensor.phone.attributes.with_name }} ({{ states.sensor.phone.attributes.with }})
+            {% endif %}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.fritzbox_netmonitor/index.html b/components/sensor.fritzbox_netmonitor/index.html new file mode 100644 index 0000000000..9fb896d66d --- /dev/null +++ b/components/sensor.fritzbox_netmonitor/index.html @@ -0,0 +1,313 @@ + + + + + + + + + FRITZ!Box Net Monitor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FRITZ!Box Net Monitor +

+
+
+

The fritzbox_netmonitor sensor monitors the network statistics exposed by AVM Fritz!Box routers.

+

+It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml +If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml; be patient this will take a while.

+

To use the Fritz!Box network monitor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: fritzbox_netmonitor
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1.
  • +
+

The following statistics will be exposed as attributes.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
is_linkedTrue if the FritzBox is physically linked to the provider
is_connectedTrue if the FritzBox has established an internet-connection
wan_access_typeConnection-type, can be DSL or Cable
external_ipExternal ip address
uptimeUptime in seconds
bytes_sentBytes sent
bytes_receivedBytes received
transmission_rate_upCurrent upstream speed in bytes/s
transmission_rate_downCurrent downstream speed in bytes/s
max_byte_rate_upMaximum upstream-rate in bytes/s
max_byte_rate_downMaximum downstream-rate in bytes/s
+

The sensor’s state corresponds to the is_linked attribute and is either online, offline, or unavailable (in case connection to the router is lost).

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.gearbest/index.html b/components/sensor.gearbest/index.html new file mode 100644 index 0000000000..df436a8db0 --- /dev/null +++ b/components/sensor.gearbest/index.html @@ -0,0 +1,621 @@ + + + + + + + + + Gearbest - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Gearbest +

+
+
+

The gearbest sensor will track the price of a product from Gearbest. This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: gearbest
+    currency: EUR
+    items:
+      - url: https://www.gearbest.com/....
+
+
+
+

Configuration Variables

+
+
currency
+
+

(string)(Required)The currency in which the products should be tracked. Currently supported: USD, EUR, GBP, AUD, CAD, CHF, HKD, CNY, NZD, JPY, RUB, BRL, CLP, NOK, DKK, SEK, KRW, ILS, COP, MXN, PEN, THB, IDR, UAH, PLN, INR, BGN, HUF, RON, TRY, CZK, HRK, MAD, AED, SAR, ZAR, SGD, MYR, TWD, RSD, NGN - if the currency could not be found in the conversion rate list, USD will be used as default. Either an ID or an URL must be present.

+
+
items
+
+

(map)(Required)List of products that should be tracked.

+
+
+
+
id
+
+

(int)(Optional)The ID of the product.

+
+
url
+
+

(string)(Optional)The URL of the product.

+
+
name
+
+

(string)(Optional)The name of the item. If not set, it is parsed from the website.

+
+
currency
+
+

(string)(Optional)Overwrite the currency for the current item.

+
+
+
+
+
+

Extended example

+
# Example configuration.yaml entry
+sensor:
+  - platform: gearbest
+    currency: EUR
+    items:
+      - url: https://www.gearbest.com/3d-printers-3d-printer-kits/pp_779174.html?wid=21
+        name: Creality CR-10 upgraded
+        currency: USD
+      - id: 779174
+        name: Creality CR-10 upgraded #2
+        currency: EUR
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.geizhals/index.html b/components/sensor.geizhals/index.html new file mode 100644 index 0000000000..d03edea069 --- /dev/null +++ b/components/sensor.geizhals/index.html @@ -0,0 +1,592 @@ + + + + + + + + + Geizhals - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Geizhals +

+
+
+

The geizhals sensor will give you the best price of a product from Geizhals 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:

+
# 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. The URL of this site reveals the ID, e.g. https://geizhals.de/?phist=1453021 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*).
  • +
+

Extended example

+
# 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/components/sensor.geo_rss_events/index.html b/components/sensor.geo_rss_events/index.html new file mode 100644 index 0000000000..8b54e45ae4 --- /dev/null +++ b/components/sensor.geo_rss_events/index.html @@ -0,0 +1,639 @@ + + + + + + + + + GeoRSS Events Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ GeoRSS Events Sensor +

+
+
+

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.

+

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.

+
# 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 kilometers 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’.
  • +
+

Example Feeds

+

Bush Fire Alerts

+
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

+
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/components/sensor.gitter/index.html b/components/sensor.gitter/index.html new file mode 100644 index 0000000000..e6840ef6d3 --- /dev/null +++ b/components/sensor.gitter/index.html @@ -0,0 +1,575 @@ + + + + + + + + + Gitter Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Gitter Sensor +

+
+
+

This gitter sensor allows one to monitor a Gitter.im chatroom for unread messages.

+

Visit Gitter Developer Apps to retrieve your “Personal Access Token”.

+

To use a Gitter sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: gitter
+    api_key: YOUR_API_TOKEN
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your Gitter.im API token.
  • +
  • room (Optional): Gitter room to monitor. Defaults to home-assistant/home-assistant
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.glances/index.html b/components/sensor.glances/index.html new file mode 100644 index 0000000000..1d35c83fdc --- /dev/null +++ b/components/sensor.glances/index.html @@ -0,0 +1,306 @@ + + + + + + + + + Glances - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Glances +

+
+
+

The glances sensor platform is consuming the system information provided by the 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. +To start a Glances RESTful API server on its default port 61208, the a test the following command can be used:

+
$ sudo glances -w
+Glances web server started on http://0.0.0.0:61208/
+
+
+

Check if you are able to access the API located at http://IP_ADRRESS:61208/api/2. Don’t use -s as this will start the XMLRPC server on port 61209. Home Assistant only supports the REST API of GLANCES.

+

The details about your memory usage is provided as a JSON response. If so, you are good to proceed.

+
$ curl -X GET http://IP_ADDRESS:61208/api/2/mem/free
+{"free": 203943936}
+
+
+

For details about auto-starting glances, please refer to Start Glances through Systemd.

+

To enable the Glances sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: glances
+    host: IP_ADDRESS
+    resources:
+      - 'disk_use_percent'
+      - 'disk_use'
+      - 'disk_free'
+      - 'memory_use_percent'
+      - 'memory_use'
+      - 'memory_free'
+      - 'swap_use_percent'
+      - 'swap_use'
+      - 'swap_free'
+      - 'processor_load'
+      - 'process_running'
+      - 'process_total'
+      - 'process_thread'
+      - 'process_sleeping'
+      - 'cpu_temp'
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your host, eg. 192.168.1.32.
  • +
  • port (Option): The network port to connect to. Default is 61208.
  • +
  • name (Optional): Name of the Glances sensor.
  • +
  • resources (Required): Entries to monitor. +
      +
    • disk_use_percent: Used disk space in percent
    • +
    • disk_use: Used disk space
    • +
    • disk_free: Free disk space
    • +
    • memory_use_percent: Used memory in percent
    • +
    • memory_use: Used memory
    • +
    • memory_free: Free memory
    • +
    • swap_use_percent: Used swap space in percent
    • +
    • swap_use: Used swap space
    • +
    • swap_free: Free swap space
    • +
    • processor_load: Load
    • +
    • process_running: Number of running processes
    • +
    • 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/components/sensor.google_travel_time/index.html b/components/sensor.google_travel_time/index.html new file mode 100644 index 0000000000..eb7fddff2a --- /dev/null +++ b/components/sensor.google_travel_time/index.html @@ -0,0 +1,279 @@ + + + + + + + + + Google Maps Travel Time - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Maps Travel Time +

+
+
+

Sensor to provide travel time from the Google Distance Matrix API.

+

You need to register for an API key by following the instructions here. You only need to turn on the Distance Matrix API.

+

A free API Key allows 2500 requests per day. The sensor will update the travel time every 5 minutes.

+
# Example entry for configuration.yaml
+sensor:
+  - platform: google_travel_time
+    api_key: XXXX_XXXXX_XXXXX
+    origin: Trondheim, Norway
+    destination: Paris, France
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your application’s API key (get one by following the instructions above). This key identifies your application for purposes of quota management.
  • +
  • origin (Required): The starting point for calculating travel distance and time. You can supply one or more locations separated by the pipe character, in the form of an address, latitude/longitude coordinates, or a Google place ID. When specifying the location using a Google place ID, the ID must be prefixed with place_id:.
  • +
  • destination (Required): One or more locations to use as the finishing point for calculating travel distance and time. The options for the destinations parameter are the same as for the origins parameter, described above.
  • +
  • name (Optional): A name to display on the sensor. The default is “Google Travel Time - [Travel Mode]” where [Travel Mode] is the mode set in options for the sensor (see option “mode” below).
  • +
  • options (Optional): A dictionary containing parameters to add to all requests to the Distance Matrix API. A full listing of available options can be found here. +
      +
    • mode (Optional): The travel mode used to calculate the directions / time. Can be driving (Default), bicycling, transit or walking.
    • +
    • departure_time (Optional): Can be now, a Unix timestamp, or a 24 hour time string like 08:00:00. If you provide a time string, it will be combined with the current date to get travel time for that moment.
    • +
    • arrival_time (Optional): See notes above for departure_time. arrival_time can not be now, only a Unix timestamp or time string. You can not provide both departure_time and arrival_time. If you do provide both, arrival_time will be removed from the request.
    • +
    • units (Optional): Set the unit for the sensor in metric or imperial, otherwise the default unit the same as the unit set in unit_system:.
    • +
    +
  • +
+
Dynamic Configuration
+

Tracking can be setup to track entities of type device_tracker, zone, and sensor. If an entity is placed in the origin or destination then every 5 minutes when the component updates it will use the latest location of that entity.

+
# Example entry for configuration.yaml
+sensor:
+  # Tracking entity to entity
+  - platform: google_travel_time
+    name: Phone To Home
+    api_key: XXXX_XXXXX_XXXXX
+    origin: device_tracker.mobile_phone
+    destination: zone.home
+
+  # Tracking entity to zone friendly name
+  - platform: google_travel_time
+    name: Home To Eddie's House
+    api_key: XXXX_XXXXX_XXXXX
+    origin: zone.home
+    destination: Eddies House    # Friendly name of a zone
+    
+  # Tracking entity in imperial unit
+  - platform: google_travel_time
+    api_key: XXXX_XXXXX_XXXXX
+    destination: zone.home
+    options:
+      units: imperial    # 'metric' for Metric, 'imperial' for Imperial
+    
+
+
+

Entity Tracking

+
    +
  • device_tracker +
      +
    • If state is a zone then the zone location will be used
    • +
    • If state is not a zone it will look for the longitude and latitude attributes
    • +
    +
  • +
  • zone +
      +
    • Uses the longitude and latitude attributes
    • +
    • Can also be referenced by just the zone’s friendly name found in the attributes.
    • +
    +
  • +
  • sensor +
      +
    • If state is a zone or zone friendly name then will use the zone location
    • +
    • All other states will be passed directly into the google API +
        +
      • This includes all valid locations listed in the Configuration Variables
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.google_wifi/index.html b/components/sensor.google_wifi/index.html new file mode 100644 index 0000000000..78d89659de --- /dev/null +++ b/components/sensor.google_wifi/index.html @@ -0,0 +1,266 @@ + + + + + + + + + Google Wifi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Wifi +

+
+
+

The google_wifi sensor platform is displaying the exposed status of a Google 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:

+
# 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/components/sensor.gpsd/index.html b/components/sensor.gpsd/index.html new file mode 100644 index 0000000000..9d7d161e01 --- /dev/null +++ b/components/sensor.gpsd/index.html @@ -0,0 +1,598 @@ + + + + + + + + + GPSD - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ GPSD +

+
+
+

The gpsd component is using the GPS information collected by gpsd and a GPS receiver.

+

A requirement is that gpsd is installed ($ sudo apt-get install gpsd or $ sudo dnf -y install gpsd). gpsd uses the socket activation feature of systemd on recent Linux distributions for USB receivers. This means that if you plug your GPS receiver in, gpsd is started. Other GPS device may work too, but this was not tested.

+
$ sudo systemctl status gpsdctl@ttyUSB0.service 
+● gpsdctl@ttyUSB0.service - Manage ttyUSB0 for GPS daemon
+   Loaded: loaded (/usr/lib/systemd/system/gpsdctl@.service; static; vendor preset: disabled)
+   Active: active (exited) since Sat 2016-07-16 09:30:33 CEST; 1 day 23h ago
+  Process: 5303 ExecStart=/bin/sh -c [ "$USBAUTO" = true ] && /usr/sbin/gpsdctl add /dev/%I || : (code=exited, status=0/SUCCESS)
+ Main PID: 5303 (code=exited, status=0/SUCCESS)
+
+Jul 16 09:30:33 laptop019 systemd[1]: Starting Manage ttyUSB0 for GPS daemon...
+Jul 16 09:30:33 laptop019 gpsdctl[5305]: gpsd_control(action=add, arg=/dev/ttyUSB0)
+Jul 16 09:30:33 laptop019 gpsdctl[5305]: reached a running gpsd
+
+
+

To check if your setup is working, connect to port 2947 on the host where gpsd is running with telnet. This may need adjustments to your firewall.

+
$ telnet localhost 2947
+Trying 127.0.0.1...
+Connected to localhost.
+Escape character is '^]'.
+{"class":"VERSION","release":"3.15","rev":"3.15-2.fc23","proto_major":3,"proto_minor":11}
+
+
+

To setup a GPSD sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: gpsd
+
+
+

Configuration variables:

+
    +
  • host (Optional): The host where GPSD is running. Defaults to localhost.
  • +
  • port (Optional): The port which GPSD is using. Defaults to 2947.
  • +
  • name (Optional): Friendly name to use for the frontend. Default to GPS.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.gtfs/index.html b/components/sensor.gtfs/index.html new file mode 100644 index 0000000000..928f4570db --- /dev/null +++ b/components/sensor.gtfs/index.html @@ -0,0 +1,234 @@ + + + + + + + + + Public Transit (GTFS) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Public Transit (GTFS) +

+
+
+

The gtfs sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as General Transit Feed Specification data, commonly known as GTFS.

+

You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. You may also be able to find data at either TransitFeeds or GTFS Data Exchange.

+

Here are some examples:

+ +

You need to download a GTFS ZIP file and put it into a folder named gtfs in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e. bart.zip instead of google_transit_20160328_v1.zip). You can also unzip and place a folder in the gtfs folder.

+

The data will be converted into a queryable format and saved as a SQLite3 database alongside the source data. The sensor will check for the existence of this SQLite3 data at every startup and will re-import the ZIP/Folder if none is found.

+

To update the data, delete the SQLite3 file and restart Home Assistant.

+

To find your stop ID, open the stops.txt file inside the ZIP file/unzipped folder. The format of the ID is different for every transit agency but will be the first “column” (meaning the string before the first comma) in a row.

+

The sensor attributes will contain all related information for the specific trip, such as agency information, origin and destination stop information, origin and destination stop time and the route information.

+

Your mileage may vary depending on the transit agency used. Most agencies respect the GTFS format but some will do weird things like adding extra columns or using different data formatting. If you have any data specific issues, please report them to the PyGTFS project, which is what the GTFS sensor uses to parse data.

+

Please note: This is a static data source. Currently, there is no GTFS Realtime support in this sensor due to issues surrounding parsing the protocol buffer format in Python 3. Once those issues have been fixed Realtime support will be added. Once added, the sensor will check for any delays and advisories and report them in the sensor as needed.

+
# Example configuration.yaml entry
+sensor:
+  - platform: gtfs
+    origin: STOP_ID
+    destination: STOP_ID
+    data: DATA_SOURCE
+
+
+

Configuration variables:

+
    +
  • origin (Required): The stop ID of your origin station.
  • +
  • destination (Required): The stop ID of your destination station.
  • +
  • data (Required): The name of the ZIP file or folder containing the GTFS data. It must be located inside the gtfs folder of your configuration directory.
  • +
  • name (Optional): Name to use in the frontend.
  • +
  • offset (Optional): A minimum delay to look for. If a departure is in less time than offset, it will be ignored. Defaults to 0.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.haveibeenpwned/index.html b/components/sensor.haveibeenpwned/index.html new file mode 100644 index 0000000000..f365eac107 --- /dev/null +++ b/components/sensor.haveibeenpwned/index.html @@ -0,0 +1,591 @@ + + + + + + + + + HaveIBeenPwned Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HaveIBeenPwned Sensor +

+
+
+

The haveibeenpwned sensor platform creates sensors that check for breached email accounts on haveibeenpwned. +To enable this sensor, add the following lines to your configuration.yaml, it will list every specified email address as a sensor showing +the number of breaches on that email account:

+
# Example configuration.yaml entry using cloud based emoncms
+sensor:
+  platform: haveibeenpwned
+  email: 
+    - your_email1@domain.com
+    - your_email2@domain.com
+
+
+

Breach meta data

+

If one of your email accounts is breached the sensor will display breach meta data. It will list the title of the site where your email +account has been breached as well as the added date of the breach data. This data is displayed in descending order so that the state attribute +breach 1 will always contain the last known breach for the specific email account, if there are any breaches detected.

+

+ +

+

Configuration variables

+
    +
  • email (Required): List of email addresses.
  • +
+

+ The sensor will scan all email addresses specified with a 5 second delay between all breach data requests on Home Assistant startup. + After this initial startup scanning, the sensor will only scan one email account per 15 minutes to prevent abuse, and not hammer “the + Have I been Pwned” service, as this breach data almost never changes. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.hddtemp/index.html b/components/sensor.hddtemp/index.html new file mode 100644 index 0000000000..4832a9d0ce --- /dev/null +++ b/components/sensor.hddtemp/index.html @@ -0,0 +1,262 @@ + + + + + + + + + HDDTemp - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HDDTemp +

+
+
+

The hddtemp sensor platform is using the data provided by HDDTemp.

+

It required that hddtemp is started or running in daemon mode on a local or remote system.

+
$ hddtemp -dF
+
+
+

To setup a HDDTemp to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: hddtemp
+    disks:
+      - /dev/sda1
+
+
+

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/components/sensor.history_stats/index.html b/components/sensor.history_stats/index.html new file mode 100644 index 0000000000..ee82d5b4ac --- /dev/null +++ b/components/sensor.history_stats/index.html @@ -0,0 +1,671 @@ + + + + + + + + + History Statistics Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ History Statistics Sensor +

+
+
+

The history_stats sensor platform provides quick statistics about another component or platforms, using data from the history.

+

It can track how long the component has been in a specific state, in a custom time period.

+

Examples of what you can track:

+
    +
  • How long you were at home this week
  • +
  • How long the lights were ON yesterday
  • +
  • How long you watched TV today
  • +
+

Configuration

+

To enable the history statistics sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: history_stats
+    name: Lamp ON today
+    entity_id: light.my_lamp
+    state: 'on'
+    type: time
+    start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
+    end: '{{ now() }}'
+
+
+

Configuration variables:

+
    +
  • entity_id (Required): The entity you want to track
  • +
  • state (Required): The state you want to track
  • +
  • name (Optional): Name displayed on the frontend
  • +
  • type (Optional): The type of sensor: time, ratio, or count. Defaults to time
  • +
  • start: When to start the measure (timestamp or datetime).
  • +
  • end: When to stop the measure (timestamp or datetime)
  • +
  • duration: Duration of the measure
  • +
+

+ You have to provide exactly 2 of start, end and duration. +
+ You can use template extensions such as now() or as_timestamp() to handle dynamic dates, as shown in the examples below. +

+

Sensor type

+

Depending on the sensor type you choose, the history_stats component can show different values:

+
    +
  • time: The default value, which is the tracked time, in hours
  • +
  • ratio: The tracked time divided by the length of your period, as a percentage
  • +
  • count: How many times the component you track was changed to the state you track
  • +
+

Time periods

+

The history_stats component will execute a measure within a precise time period. You should always provide 2 of the following :

+
    +
  • When the period starts (start variable)
  • +
  • When the period ends (end variable)
  • +
  • How long is the period (duration variable)
  • +
+

As start and end variables can be either datetimes or timestamps, you can configure almost any period you want.

+

Duration

+

The duration variable is used when the time period is fixed. Different syntaxes for the duration are supported, as shown below.

+
# 6 hours
+duration: 06:00
+
+
+
# 1 minute, 30 seconds
+duration: 00:01:30
+
+
+
# 2 hours and 30 minutes
+duration:
+  # supports seconds, minutes, hours, days
+  hours: 2
+  minutes: 30
+
+
+

Examples

+

Here are some examples of periods you could work with, and what to write in your configuration.yaml:

+

Today: starts at 00:00 of the current day and ends right now.

+
    start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
+    end: '{{ now() }}'
+
+
+

Yesterday: ends today at 00:00, lasts 24 hours.

+
    end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
+    duration:
+      hours: 24
+
+
+

This morning (6AM - 11AM): starts today at 6, lasts 5 hours.

+
    start: '{{ now().replace(hour=6).replace(minute=0).replace(second=0) }}'
+    duration:
+      hours: 5
+
+
+

Current week: starts last Monday at 00:00, ends right now.

+

Here, last Monday is today as a timestamp, minus 86400 times the current weekday (86400 is the number of seconds in one day, the weekday is 0 on Monday, 6 on Sunday).

+
    start: '{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}'
+    end: '{{ now() }}'
+
+
+

Last 30 days: ends today at 00:00, lasts 30 days. Easy one.

+
    end: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
+    duration:
+      days: 30
+
+
+

All your history starts at timestamp = 0, and ends right now.

+
    start: '{{ 0 }}'
+    end: '{{ now() }}'
+
+
+

+ The /dev-template page of your home-assistant UI can help you check if the values for start, end or duration are correct. If you want to check if your period is right, just click on your component, the from and to attributes will show the start and end of the period, nicely formatted. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.hive/index.html b/components/sensor.hive/index.html new file mode 100644 index 0000000000..b8f7decb52 --- /dev/null +++ b/components/sensor.hive/index.html @@ -0,0 +1,588 @@ + + + + + + + + + Hive Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hive Sensor +

+
+
+

The ‘hive’ sensor component can expose as a sensor the current online status of your Hive Hub.

+

+Full configuration details can be found on the main Hive component page. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.homematic/index.html b/components/sensor.homematic/index.html new file mode 100644 index 0000000000..65238ed635 --- /dev/null +++ b/components/sensor.homematic/index.html @@ -0,0 +1,589 @@ + + + + + + + + + Homematic Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic Sensor +

+
+
+

The homematic sensor platform lets you observe the state of Homematic sensors through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup Homematic.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.hp_ilo/index.html b/components/sensor.hp_ilo/index.html new file mode 100644 index 0000000000..98bfd3356e --- /dev/null +++ b/components/sensor.hp_ilo/index.html @@ -0,0 +1,325 @@ + + + + + + + + + HP ILO - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HP ILO +

+
+
+

The hp_ilo platform allows you to do an API call to the HP ILO (Integrated Lights-Out) sensor of your server, and use this data in Home Assistant sensors.

+

If the ILO or specified jsonpath query returns only a single value (e.g. a temperature or state), it will be put in the state field. If a data structure is returned, it will be placed in the ilo_data attribute.

+

Some more details about what can be retrieved from these sensors is available in the python-hpilo documentation.

+

+ +

+

To use this component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: hp_ilo
+    host: IP_ADDRESS or HOSTNAME
+    username: USERNAME
+    password: PASSWORD
+    monitored_variables:
+      - name: SENSOR NAME
+        sensor_type: SENSOR TYPE
+
+
+

Configuration variables:

+
    +
  • host (Required): The hostname or IP address on which the ILO can be reached.
  • +
  • port (Optional): The port on which the ILO can be reached, defaults to port 443.
  • +
  • username (Required): The username used to connect to the ILO.
  • +
  • password (Required): The password used to connect to the ILO.
  • +
  • monitored_variables array (Optional): Sensors created from the ILO data. Defaults to an empty list (no sensors are created). +
      +
    • name (Required): The sensor name.
    • +
    • sensor_type (Required): The sensor type, has to be one of the specified valid sensor types.
    • +
    • unit_of_measurement (Optional): The sensors’ unit of measurement.
    • +
    • value_template (Optional): When a Jinja2 template is specified here, the created sensor will output the template result. The ILO response can be referenced with the ilo_data variable.
    • +
    +
  • +
+

Valid sensor_types:

+
    +
  • server_name: Get the name of the server this iLO is managing.
  • +
  • server_fqdn: Get the fqdn of the server this iLO is managing.
  • +
  • server_host_data: Get SMBIOS records that describe the host.
  • +
  • server_oa_info: Get information about the Onboard Administrator of the enclosing chassis.
  • +
  • server_power_status: Whether the server is powered on or not.
  • +
  • server_power_readings: Get current, min, max and average power readings.
  • +
  • server_power_on_time: How many minutes ago has the server been powered on.
  • +
  • server_asset_tag: Gets the server asset tag.
  • +
  • server_uid_status: Get the status of the UID light.
  • +
  • server_health: Get server health information.
  • +
  • network_settings: Get the iLO network settings.
  • +
+

Example

+

In order to get two sensors reporting CPU fan speed and Ambient Inlet Temperature, as well as a dump of server_health on a HP Microserver Gen8, you could use the following in your configuration.yaml file

+
sensor:
+  - platform: hp_ilo
+    host: IP_ADDRESS or HOSTNAME
+    username: USERNAME
+    password: PASSWORD
+    monitored_variables:
+      - name: CPU fanspeed
+        sensor_type: server_health
+        unit_of_measurement: '%'
+        value_template: '{{ ilo_data.fans["Fan 1"].speed[0] }}'
+      - name: Inlet temperature
+        sensor_type: server_health
+        unit_of_measurement: '°C'
+        value_template: '{{ ilo_data.temperature["01-Inlet Ambient"].currentreading[0] }}'
+      - name: Server Health
+        sensor_type: server_health
+
+
+
+

+ +

+

Hardware specifics

+

+Not every hardware supports all values. +

+

HP Microserver Gen8

+

On this hardware you should avoid using the following sensor_types as monitored_variables: to prevent errors.

+
    +
  • server_oa_info
  • +
  • server_power_readings
  • +
  • server_power_on_time
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.http/index.html b/components/sensor.http/index.html new file mode 100644 index 0000000000..e870233c26 --- /dev/null +++ b/components/sensor.http/index.html @@ -0,0 +1,612 @@ + + + + + + + + + HTTP Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HTTP Sensor +

+
+
+

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:

+
http://IP_ADDRESS:8123/api/states/sensor.DEVICE_NAME
+
+
+

+You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices. +

+

The JSON payload must contain the new state and should include the unit of measurement and a friendly name. The friendly name is used in the frontend to name the sensor.

+
{"state": "20", "attributes": {"unit_of_measurement": "°C", "friendly_name": "Bathroom Temperature"}}
+
+
+

For a quick test, curl can be useful to “simulate” a device.

+
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       -d '{"state": "20", "attributes": {"unit_of_measurement": "°C", "friendly_name": "Bathroom Temp"}}' \
+       http://localhost:8123/api/states/sensor.bathroom_temperature
+
+
+

You can then use curl again to retrieve the current sensor state and verify the sensor is working.

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       http://localhost:8123/api/states/sensor.bathroom_temperature
+{
+    "attributes": {
+        "friendly_name": "Bathroom Temp",
+        "unit_of_measurement": "\u00b0C"
+    },
+    "entity_id": "sensor.bathroom_temperature",
+    "last_changed": "09:46:17 06-02-2016",
+    "last_updated": "09:48:46 06-02-2016",
+    "state": "20"
+}
+
+
+

For more examples please visit the HTTP Binary Sensor page.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.htu21d/index.html b/components/sensor.htu21d/index.html new file mode 100644 index 0000000000..12797e42af --- /dev/null +++ b/components/sensor.htu21d/index.html @@ -0,0 +1,638 @@ + + + + + + + + + HTU21D Temperature and humidity sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ HTU21D Temperature and humidity sensor +

+
+
+

The htu21d sensor platform allows you to read the temperature and humidity from a HTU21D sensor connected via I2c bus (SDA, SCL pins).

+

Tested devices:

+ +

To use your HTU21D sensor in your installation, add the following to your configuration.yaml file:

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

Customizing the sensor data

+

Give the values friendly names and icons, add the following to your customize: section.

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

+
# Example configuration.yaml entry
+group:
+  ambient_sensor:
+    name: HTU21D Environment sensor
+    entities:
+      - sensor.htu21d_sensor_temperature
+      - sensor.htu21d_sensor_humidity
+
+
+

Directions for installing smbus support on Raspberry Pi

+

Enable I2c interface with the Raspberry Pi configuration utility:

+
# pi user environment: Enable i2c interface
+$ sudo raspi-config
+
+
+

Select Interfacing options->I2C choose <Yes> 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:

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

Check the i2c address of the sensor

+

After installing i2c-tools, a new utility is available to scan the addresses of the connected sensors:

+
$ /usr/sbin/i2cdetect -y 1
+
+
+

It will output a table like this:

+
     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/components/sensor.hydroquebec/index.html b/components/sensor.hydroquebec/index.html new file mode 100644 index 0000000000..405ee368e9 --- /dev/null +++ b/components/sensor.hydroquebec/index.html @@ -0,0 +1,238 @@ + + + + + + + + + Hydro-Québec - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hydro-Québec +

+
+
+

Integrate your Hydro-Québec consumption profile information into Home Assistant.

+

+Breaking change: Since Home Assistant v0.40, +contract attribute is required. +

+
# Example configuration.yaml entry
+sensor:
+  - platform: hydroquebec
+    username: MYUSERNAME
+    password: MYPASSWORD
+    contract: '123456789'
+    monitored_variables:
+     - period_total_bill
+     - period_length
+     - period_total_days
+
+
+

Configuration variables:

+
    +
  • username (Required): Username used to log into the Hydro-Québec site.
  • +
  • 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
    • +
    • period_mean_daily_bill: Period daily average bill
    • +
    • period_mean_daily_consumption: Period daily average consumption
    • +
    • period_total_consumption: Total Consumption
    • +
    • period_lower_price_consumption: Period Lower price consumption
    • +
    • period_higher_price_consumption: Period Higher price consumption
    • +
    • period_average_temperature: Period Average temperature
    • +
    • yesterday_total_consumption: Yesterday total consumption
    • +
    • yesterday_lower_price_consumption: Yesterday lower price consumption
    • +
    • yesterday_higher_price_consumption: Yesterday higher price consumption
    • +
    • yesterday_average_temperature: Yesterday Average temperature
    • +
    +
  • +
+

To find your contract id, go to the Hydro-Québec website +and connect to your account. +On the main page your can see your contract IDs. +It should be something like: “Contract 1234 56789”. +You just have to keep numbers and remove the space.

+

+Multi contracts accounts are supported only from Home Assistant v0.40. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ihc/index.html b/components/sensor.ihc/index.html new file mode 100644 index 0000000000..f1ddd9a985 --- /dev/null +++ b/components/sensor.ihc/index.html @@ -0,0 +1,626 @@ + + + + + + + + + IHC Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IHC Sensor +

+
+
+

Before you can use the IHC Sensor platform, you must setup the IHC Component

+

When auto setup is enabled the following products will be found in the IHC project and setup as sensors:

+
    +
  • Dataline temperature sensor - Will insert 2 temperature sensors
  • +
  • Dataline Humidity - Will insert 1 humidity and 2 temperature sensors (calculated dewpoint)
  • +
  • Dataline Lux - will insert 1 light and 1 temperature sensor
  • +
+

To manually configure IHC sensors insert this section:

+
sensor:
+  - platform: ihc
+    sensors:
+      - id: 12345
+        name: 'mysensor'
+        unit_of_measurement: '°C'
+      - id: 12346
+        ...
+
+
+
+

Configuration Variables

+
+
sensors
+
+

(map)(Optional)List of sensors to setup manually

+
+
+
+
id
+
+

(int)(Required)The IHC resource id.

+
+
name
+
+

(string)(Optional)The name of the component

+
+
unit_of_measurement
+
+

(string)(Optional)Defines the unit of measurement of the sensor, if any.

+
+
+
+
+
+

The resource id should be a IHC float resource. +For more information about IHC resource ids see Manual Setup

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.imap/index.html b/components/sensor.imap/index.html new file mode 100644 index 0000000000..adae253965 --- /dev/null +++ b/components/sensor.imap/index.html @@ -0,0 +1,584 @@ + + + + + + + + + IMAP Unread E-mail - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IMAP Unread E-mail +

+
+
+

The imap sensor platform is observing your IMAP server and reporting the amount of unread emails.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: imap
+    server: imap.gmail.com
+    port: 993
+    username: USERNAME
+    password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • server (Required): The IP address or hostname of the IMAP server.
  • +
  • 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/components/sensor.imap_email_content/index.html b/components/sensor.imap_email_content/index.html new file mode 100644 index 0000000000..56742a3656 --- /dev/null +++ b/components/sensor.imap_email_content/index.html @@ -0,0 +1,595 @@ + + + + + + + + + IMAP Email Content - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IMAP Email Content +

+
+
+

The imap_email_content sensor platform will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: imap_email_content
+    server: imap.gmail.com
+    port: 993
+    username: USERNAME
+    password: PASSWORD
+    senders:
+      - example@gmail.com
+
+
+

Configuration variables:

+
    +
  • server (Required): The IP address or hostname of the IMAP server.
  • +
  • port (Required): The port where the server is accessible.
  • +
  • name (Optional): Name of the IMAP sensor to use in the frontend.
  • +
  • username (Required): Username for the IMAP server.
  • +
  • password (Required): Password for the IMAP server.
  • +
  • senders (Required): A list of sender email addresses that are allowed to report state via email. Only emails received from these addresses will be processed.
  • +
  • +

    value_template (Optional): If specified this template will be used to render the state of the sensor. If a template is not supplied the message subject will be used for the sensor value. The following attributes will be supplied to the template:

    +
      +
    • from: The from address of the email
    • +
    • body: The body of the email
    • +
    • subject: The subject of the email
    • +
    • date: The date and time the email was sent
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.influxdb/index.html b/components/sensor.influxdb/index.html new file mode 100644 index 0000000000..1b8813955e --- /dev/null +++ b/components/sensor.influxdb/index.html @@ -0,0 +1,635 @@ + + + + + + + + + InfluxDB Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ InfluxDB Sensor +

+
+
+

The influxdb sensor allows you to use values from an InfluxDB database to populate a sensor state. This can be use to present statistic about home_assistant sensors if used with the influxdb history component. It can also be used with an external data source.

+

To configure this sensor, you need to define the sensor connection variables and a list of queries to your configuration.yaml file. A sensor will be created for each query:

+
# Example configuration.yaml entry
+sensor:
+  - platform: influxdb
+    queries:
+      - name: mean value of foo
+        where: '"name" = ''foo'''
+        measurement: '"°C"'
+
+
+

Configuration variables for the server:

+
    +
  • host (Optional): IP address of your database host, eg. 192.168.1.10. Defaults to localhost.
  • +
  • port (Optional): Port to use. Defaults to 8086.
  • +
  • username (Optional): The username of the database user.
  • +
  • password (Optional): The password for the database user account.
  • +
  • ssl (Optional): Use https instead of http to connect. Defaults to false.
  • +
  • verify_ssl (Optional): Verify SSL certificate for https request. Defaults to false.
  • +
  • queries array (Required): List of queries +
      +
    • name (Required): The name of the sensor.
    • +
    • unit_of_measurement (Optional): Defines the units of measurement of the sensor, if any.
    • +
    • measurement (Required): Defines the measurement name in InfluxDB (the from clause of the query).
    • +
    • where (Required): Defines the data selection clause (the where clause of the query).
    • +
    • value_template (Optional): Defines a template to extract a value from the payload.
    • +
    • database (Optional): Name of the database to use. Defaults to home_assistant.
    • +
    • group_function (Optional): The group function to be used. Defaults to mean.
    • +
    • field (Optional): The field name to select. Defaults to value.
    • +
    +
  • +
+

Examples

+

Full configuration

+

The example configuration entry below create two request to your local InfluxDB instance, one to the database db1, the other to db2:

+
    +
  • select last(value) as value from "°C" where "name" = "foo"
  • +
  • select min(tmp) as value from "%" where "entity_id" = ''salon'' and time > now() - 1h
  • +
+
sensor:
+  platform: influxdb
+  host: localhost
+  username: home-assistant
+  password: password
+  queries:
+    - name: last value of foo
+      unit_of_measurement: °C
+      value_template: '{{ value | round(1) }}'
+      group_function: last
+      where: '"name" = ''foo'''
+      measurement: '"°C"'
+      field: value
+      database: db1
+    -  name: Min for last hour
+      unit_of_measurement: '%'
+      value_template: '{{ value | round(1) }}'
+      group_function: min
+      where: '"entity_id" = ''salon'' and time > now() - 1h'
+      measurement: '"%"'
+      field: tmp
+      database: db2
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.insteon_plm/index.html b/components/sensor.insteon_plm/index.html new file mode 100644 index 0000000000..653509b3d5 --- /dev/null +++ b/components/sensor.insteon_plm/index.html @@ -0,0 +1,585 @@ + + + + + + + + + Insteon PLM Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon PLM Sensor +

+
+
+

The insteon_plm sensor platform lets you control your sensors through +an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a +USB or serial port. To add support, set up the primary insteon_plm +component.

+
+
+ +
+
+ + + + + + + diff --git a/source/_components/sensor.ios.markdown b/components/sensor.ios.markdown similarity index 100% rename from source/_components/sensor.ios.markdown rename to components/sensor.ios.markdown diff --git a/components/sensor.iota/index.html b/components/sensor.iota/index.html new file mode 100644 index 0000000000..af0dbdd6f2 --- /dev/null +++ b/components/sensor.iota/index.html @@ -0,0 +1,206 @@ + + + + + + + + + IOTA sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IOTA sensor +

+
+
+

The sensors are automatically created if the IOTA hub is present.

+

Available sensors:

+
    +
  • Wallet balance
  • +
  • Node information
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.irish_rail_transport/index.html b/components/sensor.irish_rail_transport/index.html new file mode 100644 index 0000000000..f95ce312cc --- /dev/null +++ b/components/sensor.irish_rail_transport/index.html @@ -0,0 +1,231 @@ + + + + + + + + + Irish Rail Transport - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Irish Rail Transport +

+
+
+

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:

+
# 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:

+
# 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/components/sensor.iss/index.html b/components/sensor.iss/index.html new file mode 100644 index 0000000000..7b6437d8d8 --- /dev/null +++ b/components/sensor.iss/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/sensor.isy994/index.html b/components/sensor.isy994/index.html new file mode 100644 index 0000000000..3df2ee7d41 --- /dev/null +++ b/components/sensor.isy994/index.html @@ -0,0 +1,589 @@ + + + + + + + + + ISY994 Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Sensor +

+
+
+

The isy994 platform allows you to get data from your ISY994 sensor from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.juicenet/index.html b/components/sensor.juicenet/index.html new file mode 100644 index 0000000000..56a384e07e --- /dev/null +++ b/components/sensor.juicenet/index.html @@ -0,0 +1,582 @@ + + + + + + + + + Juicenet Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Juicenet Sensor +

+
+
+

The juicenet sensor platform allows you to get data from your JuiceNet sensors.

+

The requirement is that you have setup Juicenet.

+

Added sensors

+

These sensors will be added for each juicenet device in your account:

+
    +
  • Status
  • +
  • Temperature (inside the device)
  • +
  • Voltage
  • +
  • Amps
  • +
  • Watts
  • +
  • Charge time of session
  • +
  • Energy added this session
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.kira/index.html b/components/sensor.kira/index.html new file mode 100644 index 0000000000..5c27882001 --- /dev/null +++ b/components/sensor.kira/index.html @@ -0,0 +1,577 @@ + + + + + + + + + Kira Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Kira Sensor +

+
+
+

The kira platform allows you to respond to your Kira modules from within Home Assistant. This enables Home Assistant to respond to infrared inputs from a standard remote control.

+

For configuration information see the Kira component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.knx/index.html b/components/sensor.knx/index.html new file mode 100644 index 0000000000..864c995cea --- /dev/null +++ b/components/sensor.knx/index.html @@ -0,0 +1,613 @@ + + + + + + + + + KNX Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Sensor +

+
+
+

The knx sensor platform allows you to monitor KNX sensors.

+

The knx component must be configured correctly, see KNX Component.

+

To use your KNX sensor in your installation, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: knx
+    name: Heating.Valve1
+    address: '2/0/0'
+    type: 'percent'
+  - platform: knx
+    name: Kitchen.Temperature
+    address: '6/2/1'
+    type: 'temperature'
+
+
+
    +
  • name (Optional): A name for this device used within Home Assistant.
  • +
  • address: KNX group address of the sensor.
  • +
  • type (Optional): “percent”, “temperature”, “humidity”, “illuminance”, “brightness”, “speed_ms”, “current”, “power”, “electric_current”, “electric_potential”, “energy”, “frequency”, “heatflowrate”, “phaseanglerad”, “phaseangledeg”, “powerfactor” or “speed”.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.kwb/index.html b/components/sensor.kwb/index.html new file mode 100644 index 0000000000..07cfa6bc88 --- /dev/null +++ b/components/sensor.kwb/index.html @@ -0,0 +1,603 @@ + + + + + + + + + KWB Easyfire Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KWB Easyfire Sensor +

+
+
+

The kwb component integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (http://www.kwbheizung.de/de/produkte/kwb-comfort-3.html) into Home Assistant.

+

Direct connection via serial (RS485) or via telnet terminal server is supported. The serial cable has to be attached to the control unit port 25 (which is normally used for detached control terminals).

+

Since this serial protocol is proprietary and closed, only most temperature sensors and a few control relays are supported, the rest is still WIP (see https://www.mikrocontroller.net/topic/274137).

+

Direct connection via serial port:

+
# Example configuration.yaml entry
+- platform: kwb
+    name: kwb
+    device: "/dev/ttyUSB0"
+    type: serial
+    raw: False
+
+
+

Telnet terminal server with a serial-ethernet converter:

+
# Example configuration.yaml entry
+  - platform: kwb
+    name: kwb
+    host: <ip>
+    port: 23
+    type: tcp
+    raw: False
+
+
+

Configuration variables:

+

Required if used with a serial-ethernet converter

+
    +
  • host: The IP-address of the serial server
  • +
  • port: The TCP-port of the serial server
  • +
  • type: tcp
  • +
+

Required if used directly with a serial port

+
    +
  • device: The serial device of the machine
  • +
  • type: serial
  • +
+

Optional for both cases

+
    +
  • name: The name of the device used in the frontend
  • +
  • raw: Should the raw serial output be shown as a sensor
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.lacrosse/index.html b/components/sensor.lacrosse/index.html new file mode 100644 index 0000000000..4440993b2b --- /dev/null +++ b/components/sensor.lacrosse/index.html @@ -0,0 +1,662 @@ + + + + + + + + + LaCrosse Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LaCrosse Sensor +

+
+
+

The lacrosse sensor platform is using the data provided by a Jeelink USB dongle or this Arduino sketch.

+

Tested Devices

+
    +
  • Technoline TX 29 IT (temperature only)
  • +
  • Technoline TX 29 DTH-IT (including humidity)
  • +
+

Setup

+

Since the sensor change their ID after each powercycle/battery change you can check what sensor IDs are available by using the command-line tool pylacrosse from the pylacrosse package.

+
$ sudo pylacrosse -d /dev/ttyUSB0 scan
+
+
+

To use your lacrosse compatible sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: lacrosse
+    sensors:
+      sensor_identifier:
+        type: SENSOR_TYPE
+        id: SENSOR_ID
+
+
+
+

Configuration Variables

+
+
device
+
+

(string)(Required)The serial device.

+

Default value: /dev/ttyUSB0

+
+
baud
+
+

(int)(Required)The serial baudrate.

+

Default value: 57600

+
+
led
+
+

(boolean)(Optional)Activate or deactivate the Jeelink LED.

+
+
frequency
+
+

(int)(Optional)Initial frequency in 5kHz steps.

+
+
datarate
+
+

(int)(Optional)Set the data rate in kbps. Special values for well-known settings are: 0: 17.241 kbps, 1: 9.579 kbps, 2: 8.842 kbps.

+
+
toggle_mask
+
+

(int)(Optional)The following values can be combined bitwise: 1 = 17.241 kbps, 2 = 9.579 kbps, 4 = 8.842 kbps

+
+
toggle_interval
+
+

(int)(Optional)Enable the toggle mode and set the interval in seconds.

+
+
sensors
+
+

(map)(Required)A list of your sensors.

+
+
+
+
name
+
+

(string)(Optional)The name of the sensor.

+
+
type
+
+

(string)(Required)The type of the sensor. Options: battery, humidity, temperature

+
+
id
+
+

(int)(Required)The LaCrosse Id of the sensor.

+
+
+
+
+
+

Examples

+

To setup a lacrosse sensor with multiple sensors, add the following to your configuration.yaml file:

+
# 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
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.lastfm/index.html b/components/sensor.lastfm/index.html new file mode 100644 index 0000000000..ac92ee2520 --- /dev/null +++ b/components/sensor.lastfm/index.html @@ -0,0 +1,189 @@ + + + + + + + + + Last.fm - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Last.fm +

+
+
+

The lastfm sensor platform will allow you to see whenever a user starts scrobbling, their play count, last song played, and top song played on Last.fm.

+

To get an API key you need to create an API account.

+

To use Last.fm with your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: lastfm
+    api_key: YOUR_API_KEY
+    users:
+      - user1
+      - user2
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your API key.
  • +
  • users array (Required): Array of users. +
      +
    • username (Required): Username of the user.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.linux_battery/index.html b/components/sensor.linux_battery/index.html new file mode 100644 index 0000000000..3f40b6d9b2 --- /dev/null +++ b/components/sensor.linux_battery/index.html @@ -0,0 +1,270 @@ + + + + + + + + + Linux Battery - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Linux Battery +

+
+
+

The linux_battery sensor platform is using the information stored in /sys/class/power_supply/ on your local Linux system to display details about the current state of your battery.

+

To setup a battery sensor to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: linux_battery
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)Friendly name to use for the frontend.

+

Default value: Battery

+
+
battery
+
+

(integer)(Optional)Number of the battery.

+

Default value: 1

+
+
system
+
+

(string)(Optional)The local system type. Support linux and android.

+

Default value: linux

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.london_air/index.html b/components/sensor.london_air/index.html new file mode 100644 index 0000000000..ce9faf6419 --- /dev/null +++ b/components/sensor.london_air/index.html @@ -0,0 +1,226 @@ + + + + + + + + + London Air Quality - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ London Air Quality +

+
+
+

The london_air component queries the London air quality data feed provided by Kings College London. A single sensor will be added for each location (local authority district or borough) 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 and are Carbon Monoxide (CO2), Nitrogen Dioxide (NO2), Ozone (O3), Sulfur Dioxide (SO2), PM2.5 & PM10 particulates. 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:

+
# 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
+      - 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 can then be added to display these attributes, for example:

+
# Example template sensors
+- platform: template
+  sensors:
+    updated:
+      friendly_name: 'Updated'
+      value_template: '{{states.sensor.merton.attributes.updated}}'
+    merton_pm10:
+      friendly_name: 'Merton PM10'
+      value_template: '{{states.sensor.merton.attributes.data[0].pollutants[0].summary}}'
+    westminster_s02:
+      friendly_name: 'Westminster S02'
+      value_template: '{{states.sensor.westminster.attributes.data[0].pollutants[3].summary}}'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.london_underground/index.html b/components/sensor.london_underground/index.html new file mode 100644 index 0000000000..f5da1a3e75 --- /dev/null +++ b/components/sensor.london_underground/index.html @@ -0,0 +1,227 @@ + + + + + + + + + London Underground - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ London Underground +

+
+
+

The london_underground sensor will display the status of London underground lines, as well as the Overground, DLR and Tfl rail.

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

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.loop_energy/index.html b/components/sensor.loop_energy/index.html new file mode 100644 index 0000000000..95546fc346 --- /dev/null +++ b/components/sensor.loop_energy/index.html @@ -0,0 +1,228 @@ + + + + + + + + + Loop Energy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Loop Energy +

+
+
+

Integrate your Loop Energy 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. 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:

+

Drupal.settings.navetas_realtime.

+

This should show something like

+
client_ip: "127.0.0.1"
+gas_secret: "GAS_SECRET"
+gas_serial: "GAS_SERIAL"
+host: "www.your-loop.com"
+...
+secret: "ELECTRICAL_SECRET"
+serial: "ELECTRICAL_SERIAL"
+
+
+

The serial and secret tokens are the ones you need. If you just have an electricity monitor then you won’t see the gas keys.

+

Now you have the keys, add the following lines to your configuration.yaml, replacing the *_SERIAL and *_SECRET keys with the ones you found in the console:

+
# Example configuration.yaml entry
+sensor:
+  - platform: loopenergy
+    electricity:
+      electricity_serial: 'ELECTRICAL_SERIAL'
+      electricity_secret: 'ELECTRICAL_SECRET'
+    gas:
+      gas_serial: 'GAS_SERIAL'
+      gas_secret: 'GAS_SECRET'
+
+
+

Configuration variables:

+
    +
  • electricity_serial (Required): Serial number of your electricity sensor
  • +
  • electricity_secret (Required): Secret key for your electricity sensor
  • +
  • gas_serial (Optional): Serial number for your gas sensor.
  • +
  • gas_secret (Optional): Secret key for your gas sensor.
  • +
  • gas_type (Optional): Type of meter imperial or metric. Defaults to metric.
  • +
  • gas_calorific (Optional): Calorific value of your gas supply (usually on your gas bill). Defaults to 39.11.
  • +
+

The electricity readings are updated every 10 seconds and the gas readings every 15 minutes.

+

The gas readings are experimental and not all gas meters are properly supported. So if the data you see doesn’t agree with the readings you see via loop energy please report an issue.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.luftdaten/index.html b/components/sensor.luftdaten/index.html new file mode 100644 index 0000000000..3664ba0a00 --- /dev/null +++ b/components/sensor.luftdaten/index.html @@ -0,0 +1,245 @@ + + + + + + + + + Luftdaten Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Luftdaten Sensor +

+
+
+

The luftdaten sensor platform will query the open data API of 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 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.
  • +
+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: luftdaten
+    sensorid: 3123
+    monitored_conditions:
+      - P1
+      - P2
+  - platform: luftdaten
+    sensorid: 155
+    monitored_conditions:
+      - temperature
+      - humidity
+
+
+
+

Configuration Variables

+
+
sensorid
+
+

(string)(Required)The ID of the sensor.

+
+
name
+
+

(string)(Optional)Name of the sensor to use in the frontend.

+

Default value: Luftdaten Sensor

+
+
monitored_conditions
+
+

(list)(Required)A list of conditions you want to monitor.

+
+
+
+
P1
+
+

Show the particle sensors (particles 10 microns and below).

+
+
P2
+
+

Show the particle sensors (particles 2.5 microns and below).

+
+
temperature
+
+

Display the temperature from the sensor.

+
+
humidity
+
+

Display the humidity from the sensor.

+
+
pressure
+
+

Display the pressure from the sensor.

+
+
+
+
show_on_map
+
+

(boolean)(Optional)Option to show the position of the sensor on the map.

+

Default value: false

+
+
+
+

+If you set show_on_map to True then the location attributes are named latitude and longitude. The default name of the location attributes is lat and long to avoid showing them on the map. +

+

Not all sensors provide all conditions. Also, it’s possible that the sensor values are not available all the time. To check what a sensor is publishing use curl:

+
$ curl https://api.luftdaten.info/v1/sensor/[sensorid]/
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.lyft/index.html b/components/sensor.lyft/index.html new file mode 100644 index 0000000000..09bf10fc0d --- /dev/null +++ b/components/sensor.lyft/index.html @@ -0,0 +1,237 @@ + + + + + + + + + Lyft Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lyft Sensor +

+
+
+

The lyft sensor will give you time and price estimates for all available Lyft products at the given start_latitude and start_longitude.The ATTRIBUTES are used to provide extra information about products, such as vehicle capacity and fare rates. If an end_latitude and end_longitude are specified, a price estimate will also be provided. One sensor will be created for each product at the given start location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft API.

+

You must create an application here to obtain a client_id and client_secret.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: lyft
+    client_id: CLIENT_ID
+    client_secret: CLIENT_SECRET
+    start_latitude: 37.8116380 
+
+
+

Configuration variables:

+
    +
  • client_id (Required): A client id obtained from developer.lyft.com after creating an app.
  • +
  • client_secret (Required) A client secret obtained from developer.lyft.com after creating an app.
  • +
  • start_latitude (Required): The starting latitude for a trip.
  • +
  • start_longitude (Required): The starting longitude for a trip.
  • +
  • end_latitude (Optional): The ending latitude for a trip. While end_latitude is optional, providing an end_latitude/end_longitude allows price estimates as well as time.
  • +
  • end_longitude (Optional): The ending longitude for a trip. While end_longitude is optional, providing an end_latitude/end_longitude allows price estimates as well as time.
  • +
  • product_ids (Optional): A list of Lyft product IDs.
  • +
+

A full configuration entry could look like the sample below:

+
# Example configuration.yaml entry
+sensor:
+  - platform: lyft
+    client_id: CLIENT_ID
+    client_secret: CLIENT_SECRET
+    start_latitude: 37.8116380 
+    start_longitude: -122.2648050
+    end_latitude: 37.615223
+    end_longitude: -122.389977
+    product_ids:
+      - 'lyft'
+      - 'lyft_plus'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.melissa/index.html b/components/sensor.melissa/index.html new file mode 100644 index 0000000000..a4bd38a95a --- /dev/null +++ b/components/sensor.melissa/index.html @@ -0,0 +1,578 @@ + + + + + + + + + Melissa Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melissa Sensor +

+
+
+

The Melissa platform allows you to get data from your Melissa sensors from within Home Assistant.

+

The sensor platform will be automatically configured if Melissa component is configured.

+

For more configuration information see the Melissa component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mercedesme/index.html b/components/sensor.mercedesme/index.html new file mode 100644 index 0000000000..763e09845f --- /dev/null +++ b/components/sensor.mercedesme/index.html @@ -0,0 +1,581 @@ + + + + + + + + + Mercedes me Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mercedes me Sensor +

+
+
+

The Mercedes me platform allows you to get data from your Mercedes me connected car sensors from within Home Assistant.

+

The sensor platform will be automatically configured if Mercedes me component is configured.

+

For more configuration information see the Mercedes me component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.metoffice/index.html b/components/sensor.metoffice/index.html new file mode 100644 index 0000000000..ff3d251766 --- /dev/null +++ b/components/sensor.metoffice/index.html @@ -0,0 +1,287 @@ + + + + + + + + + Met Office Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Met Office Sensor +

+
+
+

The metoffice sensor platform uses the Met Office’s [DataPoint API][datapoint] for weather data.

+
    +
  • Each sensor will be given the device_id of “Met Office [condition]” if name: is not set.
  • +
  • The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half hour.
  • +
+

To add the Met Office weather 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: metoffice
+    api_key: YOUR_API_KEY
+    monitored_conditions:
+      - weather
+      - temperature
+      - feels_like_temperature
+      - wind_speed
+      - wind_direction
+      - wind_gust
+      - visibility
+      - visibility_distance
+      - uv
+      - precipitation
+      - humidity
+
+
+

Your location will be detected from your home latitude and longitude settings.

+

Configuration variables:

+
    +
  • api_key (Required): Your personal API key from the Datapoint website.
  • +
  • name (Optional): Additional name for the sensors. Default to platform name.
  • +
  • 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. +
      +
    • weather: A human-readable text summary of the current conditions.
    • +
    • temperature: The current temperature.
    • +
    • feels_like_temperature: A numerical value representing the apparent (or “feels like”) temperature.
    • +
    • wind_speed: The wind speed.
    • +
    • wind_direction: Where the wind is coming from.
    • +
    • wind_gust: If there are wind gusts.
    • +
    • visibility: The average visibility.
    • +
    • visibility_distance: The visibility distance.
    • +
    • uv: The UV index.
    • +
    • precipitation: The average expected intensity of precipitation occurring.
    • +
    • humidity: The relative humidity.
    • +
    +
  • +
+

+This sensor is an alternative to the metoffice weather platform. +The weather platform is easier to configure but less customizable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mfi/index.html b/components/sensor.mfi/index.html new file mode 100644 index 0000000000..ff8e74b2a4 --- /dev/null +++ b/components/sensor.mfi/index.html @@ -0,0 +1,591 @@ + + + + + + + + + mFi Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ mFi Sensor +

+
+
+

The mfi sensor platform to allow you to monitor mFi mPort interface and sensors.

+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: mfi
+    host: IP_ADDRESS
+    username: USERNAME
+    password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or hostname of your mFi controller.
  • +
  • port (Optional): The port of your mFi controller. Defaults to 6443 for TLS, otherwise 6080.
  • +
  • username (Required): The mFi admin username.
  • +
  • password (Required): The mFi admin user’s password.
  • +
  • ssl (Optional): If True, use SSL/TLS to contact the mFi controller. Defaults to True.
  • +
  • verify_ssl (Optional): Set this to False if your mFi controller has a self-signed certificate. Defaults to True.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mhz19/index.html b/components/sensor.mhz19/index.html new file mode 100644 index 0000000000..d8f49ab6c3 --- /dev/null +++ b/components/sensor.mhz19/index.html @@ -0,0 +1,593 @@ + + + + + + + + + MH-Z19 CO2 Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MH-Z19 CO2 Sensor +

+
+
+

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 for a quick guide how to connect the sensor to your PC or Raspberry Pi.

+

To use this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: mhz19
+    serial_device: /dev/tty.SLAB_USBtoUART
+
+
+
    +
  • serial_device (Required): The serial port to use. On *nix systems, it can often be identified by $ ls /dev/tty*
  • +
  • name (Optional): The name displayed in the frontend.
  • +
  • monitored_conditions (Optional, starting from version 0.40): Conditions to monitor. Supported conditions: +
      +
    • co2 (default)
    • +
    • temperature
    • +
    +
  • +
+

Full example:

+
sensor:
+  - platform: mhz19
+    serial_device: /dev/tty.SLAB_USBtoUART
+    name: My MHZ19
+    monitored_conditions:
+      - co2
+      - temperature
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.miflora/index.html b/components/sensor.miflora/index.html new file mode 100644 index 0000000000..f87b2be699 --- /dev/null +++ b/components/sensor.miflora/index.html @@ -0,0 +1,275 @@ + + + + + + + + + Mi Flora plant sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mi Flora plant sensor +

+
+
+

The miflora sensor platform allows one to monitor plants. The Mi Flora plant sensor is a small Bluetooth Low Energy device that monitors not only the moisture but also light, temperature, and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case.

+

Installation

+

Depending on the operating system you’re running, you have to configure the proper Bluetooth backend on your system:

+
    +
  • On Hass.io: Miflora will work out of the box.
  • +
  • On other Linux systems: +
      +
    • Preferred solution: Install the bluepy library (via pip). When using a virtual environment, make sure to use install the library in the right one. +    - Fallback solution: Install gatttool via your package manager. Depending on the distribution, the package name might be: bluez, bluetooth, bluez-deprecated
    • +
    +
  • +
  • Windows and MacOS are currently not supported by the miflora library.
  • +
+

Configuration

+

Start a scan to determine the MAC addresses of the sensor:

+
$ sudo hcitool lescan
+LE Scan ...
+F8:04:33:AF:AB:A2 [TV] UE48JU6580
+C4:D3:8C:12:4C:57 Flower mate
+[...]
+
+
+

Or if your distribution is using bluetoothctl:

+
$ bluetoothctl 
+[bluetooth]# scan on
+[NEW] Controller <your Bluetooth adapter> [default]
+[NEW] F8:04:33:AF:AB:A2 [TV] UE48JU6580
+[NEW] C4:D3:8C:12:4C:57 Flower mate
+
+
+

Check for Flower care or Flower mate entries, those are your sensor.

+

To use your Mi Flora plant sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: miflora
+    mac: 'xx:xx:xx:xx:xx:xx'
+    monitored_conditions:
+      - temperature
+
+
+
    +
  • mac (Required): The MAC address of your sensor.
  • +
  • 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.
    • +
    • conductivity: Conductivity in the soil.
    • +
    • battery: Battery details.
    • +
    +
  • +
  • name (Optional): The name displayed in the frontend.
  • +
  • force_update (Optional): Sends update events even if the value hasn’t changed.
  • +
  • median (Optional): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, median: 1 will work fine.
  • +
  • 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.
  • +
+

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.

+

A full configuration example could look like the one below:

+
# Example configuration.yaml entry
+sensor:
+  - platform: miflora
+    mac: 'xx:xx:xx:xx:xx:xx'
+    name: Flower 1
+    force_update: false
+    median: 3
+    monitored_conditions:
+      - moisture
+      - light
+      - temperature
+      - conductivity
+      - battery
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.min_max/index.html b/components/sensor.min_max/index.html new file mode 100644 index 0000000000..33ba21544a --- /dev/null +++ b/components/sensor.min_max/index.html @@ -0,0 +1,590 @@ + + + + + + + + + Min/max Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Min/max Sensor +

+
+
+

The min_max sensor platform consumes the state from other sensors to determine the minimum, maximum, latest (last) and the mean of the collected states. The sensor will always show you the lowest/highest/latest 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 first.

+

This sensor is an alternative to the template sensor’s value_template: to get the average of multiple sensors.

+
{{ ((float(states.sensor.kitchen_temperature.state) + 
+     float(states.sensor.living_room_temperature.state) +
+     float(states.sensor.office_temperature.state)) / 3) | round(2)
+}}
+
+
+

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 min_max sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: min_max
+    entity_ids:
+      - sensor.kitchen_temperature
+      - sensor.living_room_temperature
+      - sensor.office_temperature
+
+
+

Configuration variables:

+
    +
  • entity_ids (Required): At least two entities to monitor. The unit of measurement of the first entry will be the one that’s used. All entities must use the same unit of measurement.
  • +
  • type (Optional): The type of sensor: min, max, last or mean. Defaults to max.
  • +
  • name (Optional): Name of the sensor to use in the frontend.
  • +
  • round_digits (Optional): Round mean value to specified number of digits. Defaults to 2.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.modbus/index.html b/components/sensor.modbus/index.html new file mode 100644 index 0000000000..940b76eac4 --- /dev/null +++ b/components/sensor.modbus/index.html @@ -0,0 +1,642 @@ + + + + + + + + + Modbus Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Modbus Sensor +

+
+
+

The modbus sensor allows you to gather data from Modbus registers.

+

To use your Modbus sensors in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  platform: modbus
+  registers:
+    - name: Sensor1
+      unit_of_measurement: °C
+      slave: 1
+      register: 100
+    - name: Sensor2
+      unit_of_measurement: mg
+      slave: 1
+      register: 110
+      count: 2
+    - name: Sensor3
+      unit_of_measurement: °C
+      slave: 1
+      register: 120
+      register_type: input
+      data_type: float
+      scale: 0.01
+      offset: -273.16
+      precision: 2
+
+
+

Configuration variables:

+
    +
  • registers array (Required): The array contains a list of relevant registers to read from. +
      +
    • name (Required): Name of the sensor.
    • +
    • slave (Required): The number of the slave (Optional for tcp and upd Modbus).
    • +
    • register (Required): Register number.
    • +
    • register_type (Optional): Modbus register type (holding, input), default holding.
    • +
    • unit_of_measurement (Optional): Unit to attach to value.
    • +
    • count (Optional): Number of registers to read.
    • +
    • reverse_order (Optional): Reverse the order of registers when count >1, default False.
    • +
    • scale (Optional): Scale factor (output = scale * value + offset), default 1.
    • +
    • offset (Optional): Final offset (output = scale * value + offset), default 0.
    • +
    • precision (Optional): Number of valid decimals, default 0.
    • +
    • data_type (Optional): Response representation (int, uint, float, custom). If float selected, value will be converted to IEEE 754 floating point format. Default int.
    • +
    • structure (Optional): If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: “>i”.
    • +
    +
  • +
+

It’s possible to change the default 30 seconds scan interval for the sensor updates as shown in the Platform options documentation.

+

Full example

+

Example a temperature sensor with a 10 seconds scan interval:

+
sensor:
+- platform: modbus
+  scan_interval: 10
+  registers:
+    - name: Room_1
+      slave: 10
+      register: 0
+      register_type: holding
+      unit_of_measurement: °C
+      count: 1
+      scale: 0.1
+      offset: 0
+      precision: 1
+      data_type: int
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.modem_callerid/index.html b/components/sensor.modem_callerid/index.html new file mode 100644 index 0000000000..64da3e1d77 --- /dev/null +++ b/components/sensor.modem_callerid/index.html @@ -0,0 +1,613 @@ + + + + + + + + + Caller ID Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Caller ID Sensor +

+
+
+

The modem_callerid sensor platform uses an available modem for collecting caller ID information. It requires a Hayes AT compatible modem that supports caller ID detection (via AT+VCID=1).

+

To enable the sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: modem_callerid
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name of the sensor to use in the frontend. Defaults to modem_callerid.
  • +
  • device (Optional): Device port name. Defaults to /dev/ttyACM0.
  • +
+

To find the path of your USB modem, run:

+

$ 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

+

Depending on what’s plugged into your USB ports, the name found above may change. You can lock in a name, such as /dev/modem, by following these instructions.

+

When the sensor detects a new call, its state changes to ‘ring’ for each ring and ‘callerid’ when caller id information is received. It returns to ‘idle’ once ringing stops. The state event includes an attribute payload that includes the time of the call, name and number.

+

Some example automations:

+
automation:
+  - alias: Notify CallerID
+    trigger: 
+      platform: state
+      entity_id: sensor.modem_callerid
+      to: "callerid"
+    action:
+      service: notify.notify
+      data:
+        message: 'Call from {{ states.sensor.modem_callerid.attributes.cid_name }} at {{ states.sensor.modem_callerid.attributes.cid_number }} '
+  - alias: Notify CallerID webui
+    trigger: 
+      platform: state
+      entity_id: sensor.modem_callerid
+      to: "callerid"
+    action:
+      service: persistent_notification.create
+      data:
+        title: "Call from"
+        message: '{{ states.sensor.modem_callerid.attributes.cid_time.strftime("%I:%M %p") }} {{ states.sensor.modem_callerid.attributes.cid_name }}  {{ states.sensor.modem_callerid.attributes.cid_number }} '
+  - alias: Say CallerID
+    trigger: 
+      platform: state
+      entity_id: sensor.modem_callerid
+      to: "callerid"
+    action:
+      service: tts.google_say
+      data_template:
+        message: 'Call from {{ states.sensor.modem_callerid.attributes.cid_name }} '
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mold_indicator/index.html b/components/sensor.mold_indicator/index.html new file mode 100644 index 0000000000..00e828bfad --- /dev/null +++ b/components/sensor.mold_indicator/index.html @@ -0,0 +1,589 @@ + + + + + + + + + Mold Indicator - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mold Indicator +

+
+
+

The Mold Indicator sensor component consumes information of two temperature sensors and a humidity sensor to give an indication for possible mold growth in your home. In case of bad ventilation and insulation, the indoor humidity may lead to condensation on cold surfaces as the windows or even walls. Condensation or a high relative humidity near those cold surfaces leads to a higher risk for mold growth. This sensor component estimates the temperature at a pre-calibrated critical point in the room (the coldest surface) and calculates the relative humidity of the air at that point. If the sensor value rises above approximately 70 percent, mold growth might occur and the room should be ventilated. At 100%, the air humidity condensates at the critical point.

+

The sensor data may be used e.g. to signal bad air quality (too high air humidity) or to automate operation of indoor air humidifiers to keep the indoor humidity at an optimum. To use the Mold Indicator sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: mold_indicator
+    indoor_temp_sensor: sensor.temp
+    indoor_humidity_sensor: sensor.humidity
+    outdoor_temp_sensor: sensor.weather_temperature
+    calibration_factor: 2.0
+
+
+

Configuration variables:

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

+

Calibration

+

The Mold Indicator sensor component needs to be calibrated in order to estimate the temperature at the critical point from the outdoor and indoor temperature. First find the coldest surface in the room (critical point), which is typically near the window frames, but depends on the insulation of your home. For calibration you need to measure the temperature at this critical point and simultaneously write down the values for the indoor- and outdoor temperature sensors used for the Mold Indicator. Be sure that there is a significant indoor to outdoor temperature difference to get the best calibration results. +With the three measured temperatures (in Celsius or Fahrenheit), the calibration_factor for your configuration file is given by:

+
calibration_factor = (temp_indoor - temp_outdoor) / (temp_criticalpoint - temp_outdoor)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.moon/index.html b/components/sensor.moon/index.html new file mode 100644 index 0000000000..457315e8ae --- /dev/null +++ b/components/sensor.moon/index.html @@ -0,0 +1,237 @@ + + + + + + + + + Moon Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Moon Sensor +

+
+
+

The moon sensor platform is tracking the moon phases.

+

To enable the moon sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: moon
+
+
+

This sensor will return one of the following values: +New moon, Waxing crescent, First quarter, Waxing gibbous, Full moon, Waning gibbous, Last quarter or Waning crescent .

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mopar/index.html b/components/sensor.mopar/index.html new file mode 100644 index 0000000000..6654372682 --- /dev/null +++ b/components/sensor.mopar/index.html @@ -0,0 +1,597 @@ + + + + + + + + + Mopar - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mopar +

+
+
+

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

+
sensor:
+  - platform: mopar
+    username: <mopar.com username>
+    password: <mopar.com password>
+    pin: <uconnect pin>
+
+
+

Configuration options for the Mopar sensor:

+
    +
  • username (Required): Your mopar.com username.
  • +
  • password (Required): Your mopar.com password.
  • +
  • pin (Required): Your uConnect pin.
  • +
+

Service

+

Call the sensor.mopar_remote_command service to perform a remote command on your vehicle.

+
    +
  • vehicle_index (Required): vehicle_index attribute found on sensor.
  • +
  • command (Required): One of lock/unlock/engineon/engineoff/horn.
  • +
+

Example data:

+
{
+  "vehicle_index": 0,
+  "command": "unlock"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mqtt/index.html b/components/sensor.mqtt/index.html new file mode 100644 index 0000000000..53f43ef682 --- /dev/null +++ b/components/sensor.mqtt/index.html @@ -0,0 +1,749 @@ + + + + + + + + + MQTT Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Sensor +

+
+
+

This mqtt 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 last known value. Otherwise, the initial state will be undefined.

+

To use your MQTT sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: mqtt
+    state_topic: "home/bedroom/temperature"
+
+
+
+

Configuration Variables

+
+
state_topic
+
+

(string)(Required)The MQTT topic subscribed to receive sensor values.

+
+
name
+
+

(string)(Optional)Name of the MQTT sensor.

+

Default value: MQTT Sensor

+
+
qos
+
+

(int)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
unit_of_measurement
+
+

(string)(Optional)Defines the units of measurement of the sensor, if any.

+
+
expire_after
+
+

(int)(Optional)Defines the number of seconds after the value expires if it’s not updated.

+

Default value: 0

+
+
value_template
+
+

(template)(Optional)Defines a template to extract the value.

+
+
force_update
+
+

(boolean)Sends update events even if the value hasn’t changed. Useful if you want to have meaningful value graphs in history.

+

Default value: false

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
json_attributes
+
+

(list | string)A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes.

+
+
+
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

JSON attributes configuration

+

The example sensor below shows a configuration example which uses JSON in the state topic to add extra attributes. It also makes use of the availability topic. Attributes can then be extracted in Templates; Example to extract data from the sensor below ‘{{ states.sensor.bs_client_name.attributes.ClientName }}’.

+
# Example configuration.yml entry
+sensor:
+  - platform: mqtt
+    state_topic: "HUISHS/BunnyShed/NodeHealthJSON"
+    name: "BS RSSI"
+    unit_of_measurement: "dBm"
+    value_template: '{{ value_json.RSSI }}'
+    availability_topic: "HUISHS/BunnyShed/status"
+    payload_available: "online"
+    payload_not_available: "offline"
+    json_attributes:
+      - ClientName
+      - IP
+      - MAC
+      - RSSI
+      - HostName
+      - ConnectedSSID  
+
+
+

Get battery level

+

If you are using the Owntracks and enable the reporting of the battery level then you can use a MQTT sensor to keep track of your battery. A regular MQTT message from Owntracks looks like this:

+
owntracks/tablet/tablet {"_type":"location","lon":7.21,"t":"u","batt":92,"tst":144995643,"tid":"ta","acc":27,"lat":46.12}
+
+
+

Thus the trick is extracting the battery level from the payload.

+
# Example configuration.yml entry
+sensor:
+  - platform: mqtt
+    state_topic: "owntracks/tablet/tablet"
+    name: "Battery Tablet"
+    unit_of_measurement: "%"
+    value_template: '{{ value_json.batt }}'
+
+
+

Get temperature and humidity

+

If you are using a DHT sensor and a NodeMCU board (esp8266), you can retrieve temperature and humidity with a MQTT sensor. A code example can be found here. A regular MQTT message from this example looks like this:

+
office/sensor1
+  {
+    "temperature": 23.20,
+    "humidity": 43.70
+  }
+
+
+

Then use this configuration example to extract the data from the payload:

+
# Example configuration.yml entry
+sensor:
+  - platform: mqtt
+    state_topic: 'office/sensor1'
+    name: 'Temperature'
+    unit_of_measurement: '°C'
+    value_template: '{{ value_json.temperature }}'
+  - platform: mqtt
+    state_topic: 'office/sensor1'
+    name: 'Humidity'
+    unit_of_measurement: '%'
+    value_template: '{{ value_json.humidity }}'
+
+
+

Get sensor value from a device with ESPEasy

+

Assuming that you have flashed your ESP8266 unit with ESPEasy. Under “Config” set a name (“Unit Name:”) for your device (here it’s “bathroom”). A “Controller” for MQTT with the protocol “OpenHAB MQTT” is present and the entries (“Controller Subscribe:” and “Controller Publish:”) are adjusted to match your needs. In this example the topics are prefixed with “home”. Also, add a sensor in the “Devices” tap with the name “analog” and “brightness” as value.

+

As soon as the unit is online, you will get the state of the sensor.

+
home/bathroom/status Connected
+...
+home/bathroom/analog/brightness 290.00
+
+
+

The configuration will look like the example below:

+
# Example configuration.yml entry
+sensor:
+  - platform: mqtt
+    state_topic: 'home/bathroom/analog/brightness'
+    name: Brightness
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mqtt_room/index.html b/components/sensor.mqtt_room/index.html new file mode 100644 index 0000000000..4143164e14 --- /dev/null +++ b/components/sensor.mqtt_room/index.html @@ -0,0 +1,342 @@ + + + + + + + + + MQTT Room Presence - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Room Presence +

+
+
+

The mqtt_room sensor platform allows you to detect the indoor location of devices using MQTT clients.

+

To use this device tracker in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: mqtt_room
+  device_id: 123testid
+  name: 'Cool device'
+  state_topic: 'room_presence'
+  timeout: 5
+  away_timeout: 60
+
+
+

Configuration variables:

+
    +
  • device_id (Required): The device id to track for this sensor.
  • +
  • name (Optional): The name of the sensor.
  • +
  • state_topic (Optional): The topic that contains all subtopics for the rooms.
  • +
  • timeout (Optional): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 seconds scanner2 reports device1 with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed.
  • +
  • away_timeout (Optional): The time in seconds after which the state should be set to not_home if there were no updates. 0 disables the check and is the default.
  • +
+

Example JSON that should be published to the room topics:

+
{
+  "id": "123testid",
+  "name": "Test Device",
+  "distance": 5.678
+}
+
+
+

Setting up clients

+

This component works with any software that is sending data in the given format. +Each client should post the discovered devices in its own subtopic of the configured topic. +Instead of developing your own application, you can also use any of these already existing clients:

+ +
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mvglive/index.html b/components/sensor.mvglive/index.html new file mode 100644 index 0000000000..e1ac356e89 --- /dev/null +++ b/components/sensor.mvglive/index.html @@ -0,0 +1,241 @@ + + + + + + + + + MVG - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MVG +

+
+
+

The mvglive sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: mvglive
+    nextdeparture:
+     - station: STATION_OR_STOP_NAME
+
+
+

Configuration variables:

+
    +
  • station (Required): Name of the stop or station. Visit the MVG live web site to find valid names.
  • +
  • destinations (Optional): One or multiple final stop names, e.g. ‘Feldmoching’ or [‘Feldmoching’,’Harthof’]. This can be used to only consider a particular direction of travel
  • +
  • directions (Optional): Filter by direction of the departure. For Tram, Bus, SEV, and S-Bahn, direction = direction. For U-Bahn trains, directions are more general. For U1, U2, U3 and U6, direction=’1’ indicates south-bound trains, direction=’2’ indicates northbound trains. For U4 and U5, direction=’1’ indicates east-bound trains, direction=’2’ indicates west-bound trains. For example, setting directions: ‘1’ can be used to get all south-bound trains at Scheidplatz.
  • +
  • lines (Optional): One or more line numbers, e.g. ‘U2’ or [‘U2’,’U8’,’N41’]
  • +
  • products (Optional): One or more modes of transport, defaults to all 4 modes [‘U-Bahn’, ‘Tram’, ‘Bus’, ‘S-Bahn’].
  • +
  • timeoffset (Optional): Do not display departures leaving sooner than this number of minutes (defaults to 0). Useful if you are a couple of minutes away from the stop.
  • +
  • name (Optional): You can customize the name of the sensor, which defaults to the station name. +

    Examples

    +
  • +
+

Full configuration

+

The example below shows a full configuration with three sensors that showcase the various configuration options.

+
# Example configuration.yml entry
+sensor:
+  - platform: mvglive
+    nextdeparture:
+     - station: Hauptbahnhof
+       name: Hbf
+       destinations: ['München Flughafen Terminal','Markt Schwaben']
+       products: 'S-Bahn'
+       timeoffset: 2
+     - station: Sendlinger Tor
+       lines: ['U2','U8']
+     - station: Scheidplatz
+       products: ['U-Bahn']
+       directions: '1'
+
+
+

The first sensor will return S-Bahn departures to Munich Airport or Markt Schwaben that are at least 2 minutes away. The second sensor returns U2 and U8 departures from Sendlinger Tor while the third sensor returns all south-bound U-Bahn trains from Scheidplatz.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.mysensors/index.html b/components/sensor.mysensors/index.html new file mode 100644 index 0000000000..28119ec29f --- /dev/null +++ b/components/sensor.mysensors/index.html @@ -0,0 +1,849 @@ + + + + + + + + + MySensors Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Sensor +

+
+
+

Integrates MySensors sensors into Home Assistant. See the main component for configuration instructions.

+

The following sensor types are supported:

+
MySensors version 1.4 and higher
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_TEMPV_TEMP
S_HUMV_HUM
S_BAROV_PRESSURE, V_FORECAST
S_WINDV_WIND, V_GUST, V_DIRECTION
S_RAINV_RAIN, V_RAINRATE
S_UVV_UV
S_WEIGHTV_WEIGHT, V_IMPEDANCE
S_POWERV_WATT, V_KWH
S_DISTANCEV_DISTANCE
S_LIGHT_LEVELV_LIGHT_LEVEL
S_IRV_IR_RECEIVE
S_WATERV_FLOW, V_VOLUME
S_AIR_QUALITYV_DUST_LEVEL
S_CUSTOMV_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5
S_DUSTV_DUST_LEVEL
S_SCENE_CONTROLLERV_SCENE_ON, V_SCENE_OFF
+
MySensors version 1.5 and higher
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_COLOR_SENSORV_RGB
S_MULTIMETERV_VOLTAGE, V_CURRENT, V_IMPEDANCE
S_SOUNDV_LEVEL
S_VIBRATIONV_LEVEL
S_MOISTUREV_LEVEL
S_LIGHT_LEVELV_LEVEL
S_AIR_QUALITYV_LEVEL (replaces V_DUST_LEVEL)
S_DUSTV_LEVEL (replaces V_DUST_LEVEL)
+
MySensors version 2.0 and higher
+ + + + + + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_INFOV_TEXT
S_GASV_FLOW, V_VOLUME
S_GPSV_POSITION
S_WATER_QUALITYV_TEMP, V_PH, V_ORP, V_EC
+

Custom unit of measurement

+

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

+

MySensors 1.5 example sketch

+
/**
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/light
+ */
+
+#include <SPI.h>
+#include <MySensor.h>  
+#include <BH1750.h>
+#include <Wire.h>
+
+#define SN "LightLuxSensor"
+#define SV "1.0"
+#define CHILD_ID 1
+unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
+
+BH1750 lightSensor;
+MySensor gw;
+MyMessage msg(CHILD_ID, V_LEVEL);
+MyMessage msgPrefix(CHILD_ID, V_UNIT_PREFIX);  // Custom unit message.
+uint16_t lastlux = 0;
+
+void setup()  
+{
+  gw.begin();
+  gw.sendSketchInfo(SN, SV);
+  gw.present(CHILD_ID, S_LIGHT_LEVEL);
+  lightSensor.begin();
+  gw.send(msg.set(lastlux));
+  gw.send(msgPrefix.set("lux"));  // Set custom unit.
+}
+
+void loop()      
+{     
+  uint16_t lux = lightSensor.readLightLevel();  // Get Lux value
+  if (lux != lastlux) {
+      gw.send(msg.set(lux));
+      lastlux = lux;
+  }
+
+  gw.sleep(SLEEP_TIME);
+}
+
+
+

MySensors 2.x example sketch

+
/**
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/light
+ */
+
+#define MY_DEBUG
+#define MY_RADIO_NRF24
+
+#include <BH1750.h>
+#include <Wire.h>
+#include <MySensors.h>
+
+#define SN "LightLuxSensor"
+#define SV "1.0"
+#define CHILD_ID 1
+unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)
+
+BH1750 lightSensor;
+MyMessage msg(CHILD_ID, V_LEVEL);
+MyMessage msgPrefix(CHILD_ID, V_UNIT_PREFIX);  // Custom unit message.
+uint16_t lastlux = 0;
+bool initialValueSent = false;
+
+void setup()
+{
+  sendSketchInfo(SN, SV);
+  present(CHILD_ID, S_LIGHT_LEVEL);
+  lightSensor.begin();
+}
+
+void loop()
+{
+  if (!initialValueSent) {
+    Serial.println("Sending initial value");
+    send(msgPrefix.set("custom_lux"));  // Set custom unit.
+    send(msg.set(lastlux));
+    Serial.println("Requesting initial value from controller");
+    request(CHILD_ID, V_LEVEL);
+    wait(2000, C_SET, V_LEVEL);
+  }
+  uint16_t lux = lightSensor.readLightLevel();  // Get Lux value
+  if (lux != lastlux) {
+      send(msg.set(lux));
+      lastlux = lux;
+  }
+
+  sleep(SLEEP_TIME);
+}
+
+void receive(const MyMessage &message) {
+  if (message.type == V_LEVEL) {
+    if (!initialValueSent) {
+      Serial.println("Receiving initial value from controller");
+      initialValueSent = true;
+    }
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.neato/index.html b/components/sensor.neato/index.html new file mode 100644 index 0000000000..2176de1831 --- /dev/null +++ b/components/sensor.neato/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/sensor.nederlandse_spoorwegen/index.html b/components/sensor.nederlandse_spoorwegen/index.html new file mode 100644 index 0000000000..bdc3343a21 --- /dev/null +++ b/components/sensor.nederlandse_spoorwegen/index.html @@ -0,0 +1,234 @@ + + + + + + + + + Nederlandse Spoorwegen - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nederlandse Spoorwegen +

+
+
+

This sensor will provide you with time table information of the Nederlandse Spoorwegen train service in the Netherlands.

+

You must create an application here to obtain a password.

+

Add the data to your configuration.yaml file as shown in the example:

+
# 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 traveling routes. +
      +
    • name (Required): Name of the route.
    • +
    • from (Required): The start station.
    • +
    • to (Required): Direction of the traveling.
    • +
    • via (Optional): Optional other station you wish to visit in between.
    • +
    +
  • +
+

The data are coming from Nederlandse Spoorwegen.

+

Station codes must be used and can be looked up here.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.nest/index.html b/components/sensor.nest/index.html new file mode 100644 index 0000000000..c52355f44f --- /dev/null +++ b/components/sensor.nest/index.html @@ -0,0 +1,619 @@ + + + + + + + + + Nest Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest Sensor +

+
+
+

The nest sensor platform lets you monitor sensors connected to your Nest devices.

+

+You must have the Nest component configured to use these sensors. The sensors will be setup if the nest component is configured and the required configuration for the nest sensor is set. +

+

To enable sensors and customize which sensors are setup, you can extend the Nest component configuration in your configuration.yaml file with the following settings:

+
# Example configuration.yaml entry
+nest:
+  sensors:
+    monitored_conditions:
+      - 'temperature'
+      - 'target'
+
+
+

By default all sensors for your available Nest devices will be monitored. Leave monitored_conditions blank to disable all sensors for the Nest component.

+

Configuration variables:

+
    +
  • monitored_conditions array (Optional): States to monitor.
  • +
+

The following conditions are available by device:

+
    +
  • Nest Thermostat: +
      +
    • humidity
    • +
    • operation_mode
    • +
    • temperature
    • +
    • target
    • +
    • hvac_state: The currently active state of the HVAC system, heating, cooling, or off.
    • +
    +
  • +
  • Nest Protect: +
      +
    • co_status
    • +
    • smoke_status
    • +
    • battery_health
    • +
    +
  • +
  • Nest Camera: none
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.nest_weather/index.html b/components/sensor.nest_weather/index.html new file mode 100644 index 0000000000..faf3b9ae8e --- /dev/null +++ b/components/sensor.nest_weather/index.html @@ -0,0 +1,251 @@ + + + + + + + + + Nest Weather Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Nest Weather Sensor +

+
+
+

+This platform is currently not available. It’s possible that nest_weather will be removed in the future. +

+

The nest weather sensor platform let you monitor current weather conditions based on the location of your Nest thermostat.

+

+You must have the Nest component configured to use those sensors. +

+

To set it up, add the following information to your configuration.yaml file:

+
sensor:
+  - platform: nest
+    monitored_conditions:
+      - 'weather_temperature'
+
+
+

Configuration variables:

+
    +
  • monitored_conditions array (Required): States to monitor. +
      +
    • ‘weather_temperature’
    • +
    • ‘weather_humidity’
    • +
    • ‘weather_condition’
    • +
    • ‘wind_speed’
    • +
    • ‘wind_direction’
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.netatmo/index.html b/components/sensor.netatmo/index.html new file mode 100644 index 0000000000..c5c7e89724 --- /dev/null +++ b/components/sensor.netatmo/index.html @@ -0,0 +1,295 @@ + + + + + + + + + Netatmo Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netatmo Sensor +

+
+
+

Basic Configuration

+

The netatmo sensor platform is consuming the information provided by a Netatmo device.

+

To enable the Netatmo sensor, you have to set up netatmo, this will use discovery to add your sensor.

+

Advanced configuration

+

If you want to select a specific sensor, set discovery to False for netatmo and add the following lines to your configuration.yaml:

+

The netatmo sensor platform is consuming the information provided by a Netatmo device.

+

To enable the Netatmo sensor, you first have to set up netatmo, and add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: netatmo
+    station: STATION_NAME
+    modules:
+      module_name1:
+        - temperature
+      module_name2:
+        - temperature
+        - battery_vp
+
+
+

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 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.
      • +
      • pressure: Pressure in mbar.
      • +
      • noise: Noise level in dB.
      • +
      • humidity: Humidity in %.
      • +
      • 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
      • +
      • min_temp: Min temperature for today
      • +
      • max_temp: Max temperature for today
      • +
      • rf_status: Current radio status per module. (90=low, 60=highest)
      • +
      • wifi_status: Wifi status per Base station
      • +
      • battery_vp: Current battery status per module.
      • +
      +
    • +
    +
  • +
+

Find your modules name

+

You can find your modules name in your online NetAtmo account. These names can be found and changed in parameters. You have to provide these name in your Home Assistant configuration.yaml file.

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.netdata/index.html b/components/sensor.netdata/index.html new file mode 100644 index 0000000000..31235abf28 --- /dev/null +++ b/components/sensor.netdata/index.html @@ -0,0 +1,283 @@ + + + + + + + + + Netdata - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netdata +

+
+
+

The netdata sensor platform allows you to display information collected by Netdata.

+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: netdata
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address or hostname of your Netdata instance. Defaults to localhost.
  • +
  • port (Optional): The port that the Netdata instance is running on. Defaults to 19999.
  • +
  • name (Optional): Name of the sensor. Defaults to “Netdata”.
  • +
  • resources (Optional) array: List of details to monitor. Defaults is memory_free. +
      +
    • ‘memory_free’: Free memory
    • +
    • ‘memory_used’: Used memory
    • +
    • ‘memory_cached’: Cached memory
    • +
    • ‘memory_buffers’: Buffered memory
    • +
    • ‘swap_free’: Free swap
    • +
    • ‘swap_used’: Used swap
    • +
    • ‘processes_running’: Processes Running
    • +
    • ‘processes_blocked’: Processes Blocked
    • +
    • ‘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/components/sensor.neurio_energy/index.html b/components/sensor.neurio_energy/index.html new file mode 100644 index 0000000000..342f65d44c --- /dev/null +++ b/components/sensor.neurio_energy/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Neurio - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Neurio +

+
+
+

Integrate your Neurio meter information into Home Assistant. To get an API key and secret, login to your Neurio account and register an application. Note the Homepage URL and Callback URL are optional.

+

To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: neurio_energy
+  api_key: CLIENT_ID
+  api_secret: CLIENT_SECRET
+
+
+

Two sensors will be created with the following names:

+
    +
  • Energy Usage: Current active power usage in Watts. Updated every 10 seconds.
  • +
  • Daily Energy Usage: Daily power usage in kWh. Updated every 2.5 minutes.
  • +
+

Configuration variables:

+
    +
  • api_key (Required): The API key for your account/application.
  • +
  • api_secret (Required): The API secret for your account/application.
  • +
  • sensor_id (Optional): The sensor ID will be auto-detected but can be set if you have more then one sensor.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.nut/index.html b/components/sensor.nut/index.html new file mode 100644 index 0000000000..56d6d30af4 --- /dev/null +++ b/components/sensor.nut/index.html @@ -0,0 +1,314 @@ + + + + + + + + + NUT Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NUT Sensor +

+
+
+

The nut sensor platform allows you to monitor a UPS (battery backup) by using data from a NUT (Network UPS Tools) server.

+

To use this sensor platform, you need to add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: nut
+    resources:
+      - ups.load
+      - ups.realpower.nominal
+      - input.voltage
+      - battery.runtime
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name prefix for defined sensors. Defaults to ‘NUT UPS’.
  • +
  • host (Optional): The host name or address of the device that is running NUT. Defaults to localhost.
  • +
  • port (Optional): The port number. Defaults to 3493.
  • +
  • alias (Optional): Name of the ups on the NUT server. Will default to the first UPS name listed.
  • +
  • username (Optional): Username to login to the NUT server. Default is none.
  • +
  • password (Optional): Password to login to the NUT server. Default is none.
  • +
  • resources array (Required): Contains all entries to display.
  • +
+

Example

+

Given the following example output from NUT (Your variables may differ):

+
'ups.timer.reboot': '0', 
+'battery.voltage': '27.0', 
+'ups.firmware.aux': 'L3 -P ', 
+'ups.mfr': 'American Power Conversion', 
+'battery.runtime.low': '120', 
+'ups.delay.shutdown': '20', 
+'ups.load': '19', 
+'ups.realpower.nominal': '600', 
+'battery.charge.warning': '50', 
+'battery.charge.low': '10', 
+'ups.vendorid': '051d', 
+'ups.timer.shutdown': '-1', 
+'ups.test.result': 'No test initiated', 
+'ups.firmware': '868.L3 -P.D', 
+'battery.mfr.date': '2015/05/08', 
+'ups.serial': '3B1519X19994  ', 
+'ups.productid': '0002', 
+'battery.runtime': '2552', 
+'battery.date': '2001/09/25', 
+'battery.voltage.nominal': '24.0', 
+'battery.type': 'PbAc', 
+'ups.mfr.date': '2015/05/08', 
+'ups.status': 'OL', 
+'ups.model': 'Back-UPS RS1000G', 
+'ups.beeper.status': 'disabled', 
+'battery.charge': '100', 
+'input.sensitivity': 'medium', 
+'input.transfer.low': '88'
+'input.transfer.high': '147', 
+'input.voltage': '121.0', 
+'input.voltage.nominal': '120', 
+'input.transfer.reason': 'input voltage out of range', 
+
+
+

Use the values from the left hand column. Support is included for most values with ‘ups’, ‘battery’, and ‘input’ prefixes.

+
sensor:
+  - platform: nut
+    name: UPS Name
+    host: 192.168.11.5
+    port: 3493
+    alias: ups_name
+    username: user
+    password: pass
+    resources:
+      - ups.load
+      - ups.realpower.nominal
+      - input.voltage
+      - battery.runtime
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.nzbget/index.html b/components/sensor.nzbget/index.html new file mode 100644 index 0000000000..5b1570a87d --- /dev/null +++ b/components/sensor.nzbget/index.html @@ -0,0 +1,211 @@ + + + + + + + + + NZBGet - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ NZBGet +

+
+
+

The nzbget platform will allow you to monitor your downloads with NZBGet from within Home Assistant and setup automation based on the information.

+

To use NZBGet with your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: nzbget
+  host: YOUR_NZBGET_HOST
+  monitored_variables:
+    - article_cache
+    - download_rate
+    - download_paused
+
+
+

Configuration variables:

+
    +
  • host (Required): IP address where your NZBGet installation is running.
  • +
  • port (Optional): The port of your NZBGet installation. Defaults to 6789.
  • +
  • ssl (Optional): Whether or not to use SSL to access NZBGet. Defaults to false.
  • +
  • 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 array (Required): List of monitored details. +
      +
    • article_cache: Number of cached articles.
    • +
    • average_download_rate: Average download rate
    • +
    • download_paused: Paused downloads
    • +
    • download_rate: Current download rate
    • +
    • download_size: The size to download
    • +
    • free_disk_space: Free disk space at the storage location of NZBGet
    • +
    • post_paused: Paused posts
    • +
    • remaining_size: Remaining size to download
    • +
    • uptime: Uptime of NZBGet
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.octoprint/index.html b/components/sensor.octoprint/index.html new file mode 100644 index 0000000000..ab1b00681b --- /dev/null +++ b/components/sensor.octoprint/index.html @@ -0,0 +1,604 @@ + + + + + + + + + OctoPrint Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OctoPrint Sensor +

+
+
+

The octoprint sensor platform let you monitor various states of your 3D printer and its print jobs.

+

+You must have the OctoPrint component configured to use this sensor. +

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: octoprint
+    name: OctoPrint
+    monitored_conditions:
+      - Current State
+      - Temperatures
+      - Job Percentage
+
+
+

Configuration variables:

+
    +
  • name (Optional): The name of the sensor. Default is ‘OctoPrint’.
  • +
  • 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: 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/components/sensor.ohmconnect/index.html b/components/sensor.ohmconnect/index.html new file mode 100644 index 0000000000..05471b5714 --- /dev/null +++ b/components/sensor.ohmconnect/index.html @@ -0,0 +1,205 @@ + + + + + + + + + OhmConnect - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OhmConnect +

+
+
+

The ohmconnect sensor will show you the current OhmConnect status for the given OhmConnect ID.

+
+

OhmConnect monitors real-time conditions on the electricity grid. When dirty and unsustainable power plants turn on, our users receive a notification to save energy. By saving energy at that time, California does not have to turn on additional power plants and California’s energy authorities pay you for that.

+
+

You can find your OhmConnect ID under “Open Source Projects” on the settings page. It’s the string after the last / in the URL, i.e. for the URL https://login.ohmconnect.com/verify-ohm-hour/AbCd1e your ID is AbCd1e.

+
# Example configuration.yaml entry
+sensor:
+  - platform: ohmconnect
+    id: AbCd1e
+
+
+

Configuration variables:

+
    +
  • id (Required): Your OhmConnect ID which can be found on the settings page.
  • +
  • name (Optional): A name to display on the sensor. The default is “OhmConnect Status”.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.onewire/index.html b/components/sensor.onewire/index.html new file mode 100644 index 0000000000..8e9cbb74d9 --- /dev/null +++ b/components/sensor.onewire/index.html @@ -0,0 +1,243 @@ + + + + + + + + + One wire Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ One wire Sensor +

+
+
+

The onewire platform supports sensors which are using the One wire (1-wire) bus for communication.

+

Supported devices:

+ +

The 1-Wire bus can be connected directly to the IO pins of Raspberry Pi or using dedicated interface adapter (e.g DS9490R).

+

Raspberry Pi setup

+

In order to setup 1-Wire support on Raspberry Pi, you’ll need to edit /boot/config.txt following this documentation. 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. 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/. 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.<sensor_name>_temperature' WHERE entity_id LIKE 'sensor.<sensor_name>%' AND attributes LIKE '%\u00b0C%'; +UPDATE states SET entity_id='sensor.<sensor_name>_pressure' WHERE entity_id LIKE 'sensor.<sensor_name>%' AND attributes LIKE '%mb%'; +UPDATE states SET entity_id='sensor.<sensor_name>_humidity' WHERE entity_id LIKE 'sensor.<sensor_name>%' AND attributes LIKE '%%%' ESCAPE ''; + +Remember to replace <sensor_name> 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: onewire
+    names:
+      some_id: your name
+
+
+

Configuration variables:

+
    +
  • names array (Optional): ID and friendly name of your sensors.
  • +
  • mount_dir (Optional): Location of device tree if owfs driver used.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.openevse/index.html b/components/sensor.openevse/index.html new file mode 100644 index 0000000000..bf3b3da535 --- /dev/null +++ b/components/sensor.openevse/index.html @@ -0,0 +1,589 @@ + + + + + + + + + OpenEVSE Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenEVSE Sensor +

+
+
+

This openevse sensor platform pulls data from an OpenEVSE Charging station equipped with an ESP8266-based wifi connection.

+

To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: openevse
+    host: IP_ADDRESS
+    monitored_variables:
+      - status
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or hostname of your charger
  • +
  • monitored_variables array (Required): Conditions to display on the frontend. +
      +
    • status: The status of the charger (i.e., “Connected”, “Charging”, etc.)
    • +
    • charge_time: The number of minutes the charging has been charging, or 0 if it is not charging.
    • +
    • rtc_temp: The temperature reported by the real time clock sensor, or 0 if the sensor is not installed.
    • +
    • ir_temp: The temperature reported by the IR remote sensor, or 0 if the sensor is not installed.
    • +
    • ambient_temp: The temperature reported by the ambient sensor, or 0 if the sensor is not installed.
    • +
    • usage_session: The energy usage for the current charging session.
    • +
    • usage_total: The total energy usage for the device.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.openexchangerates/index.html b/components/sensor.openexchangerates/index.html new file mode 100644 index 0000000000..7763065622 --- /dev/null +++ b/components/sensor.openexchangerates/index.html @@ -0,0 +1,225 @@ + + + + + + + + + Open Exchange Rates - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Open Exchange Rates +

+
+
+

The openexchangerates sensor will show you the current exchange rate from Open Exchange Rates that provides realtime exchange rates for 170 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

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: openexchangerates
+    api_key: YOUR_API_KEY
+    quote: EUR
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the sensor.

+

Default value: Exchange Rate Sensor

+
+
api_key
+
+

(string)(Required)The API Key for Open Exchange Rates.

+
+
quote
+
+

(string)(Required)The symbol of the quote or target currency.

+
+
base
+
+

(string)(Optional)The symbol of the base currency.

+

Default value: USD

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.openhardwaremonitor/index.html b/components/sensor.openhardwaremonitor/index.html new file mode 100644 index 0000000000..16927b23aa --- /dev/null +++ b/components/sensor.openhardwaremonitor/index.html @@ -0,0 +1,268 @@ + + + + + + + + + Open Hardware Monitor Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Open Hardware Monitor Sensor +

+
+
+

The openhardwaremonitor platform uses your Open Hardware Monitor 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: openhardwaremonitor
+    host: IP_ADDRESS
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address or hostname of the system where Open Hardware Monitor is running.

+
+
port
+
+

(int)(Optional)The port of your Open Hardware Monitor API. Defaults to 8085.

+
+
+
+

+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/components/sensor.opensky/index.html b/components/sensor.opensky/index.html new file mode 100644 index 0000000000..a7c3365145 --- /dev/null +++ b/components/sensor.opensky/index.html @@ -0,0 +1,589 @@ + + + + + + + + + OpenSky Network - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenSky Network +

+
+
+

The opensky sensor allows one to track overhead flights in a given region. It uses crowd-sourced data from the OpenSky Network public API. It will also fire Home Assistant events when flights enter and exit the defined region.

+

Configuration

+

To enable this sensor, add the following lines to your configuration.yaml.

+
sensor:
+  - platform: opensky
+    radius: 10
+
+
+

Configuration options for the OpenSky Network sensor:

+
    +
  • radius (Required): Radius of region to monitor, in kilometers
  • +
  • latitude (Optional): Region latitude (defaults to home zone latitude)
  • +
  • longitude (Optional): Region longitude (defaults to home zone longitude)
  • +
  • name (Optional): Sensor name (defaults to opensky)
  • +
+

Events

+
    +
  • opensky_entry: Fired when a flight enters the region
  • +
  • opensky_exit: Fired when a flight exits the region
  • +
+

Both events have two attributes:

+
    +
  • sensor: Name of opensky sensor that fired the event
  • +
  • callsign: Callsign of the flight
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.openweathermap/index.html b/components/sensor.openweathermap/index.html new file mode 100644 index 0000000000..ea29526edf --- /dev/null +++ b/components/sensor.openweathermap/index.html @@ -0,0 +1,316 @@ + + + + + + + + + OpenWeatherMap Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenWeatherMap Sensor +

+
+
+

The openweathermap platform uses OpenWeatherMap as a source for current meteorological data for your location. The forecast will show you the condition in 3 h.

+

You need an API key which is free but requires a registration.

+

To add OpenWeatherMap to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: openweathermap
+    api_key: YOUR_API_KEY
+    monitored_conditions:
+      - weather
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)Your API key for OpenWeatherMap.

+
+
name
+
+

(string)(Optional)Additional name for the sensors. Default to platform name.

+

Default value: OWM

+
+
forecast
+
+

(string)(Optional)Enables the forecast. The default is to display the current conditions.

+

Default value: false

+
+
language
+
+

(string)(Optional)The language in which you want text results to be returned. It’s a two-characters string, eg. en, es, ru, it, etc.

+

Default value: en

+
+
monitored_conditions
+
+

(list)(Required)Conditions to display in the frontend.

+
+
+
+
weather
+
+

A human-readable text summary.

+
+
temperature
+
+

The current temperature.

+
+
wind_speed
+
+

The wind speed.

+
+
wind_bearing
+
+

The wind bearing.

+
+
humidity
+
+

The relative humidity.

+
+
pressure
+
+

The sea-level air pressure in millibars.

+
+
clouds
+
+

Description about cloud coverage.

+
+
rain
+
+

The rain volume.

+
+
snow
+
+

The snow volume.

+
+
+
+
+
+

Details about the API are available in the OpenWeatherMap documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.otp/index.html b/components/sensor.otp/index.html new file mode 100644 index 0000000000..696242b00f --- /dev/null +++ b/components/sensor.otp/index.html @@ -0,0 +1,593 @@ + + + + + + + + + OTP Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OTP Sensor +

+
+
+

The otp sensor generates One-Time Passwords according to 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:

+
# 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:

+
$ pip3 install pyotp
+$ python3 -c 'import pyotp; print("Token:", pyotp.random_base32())'
+Token: IHEDPEBEVA2WVHB7
+
+
+

To run in a Docker container:

+
$ 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/components/sensor.pi_hole/index.html b/components/sensor.pi_hole/index.html new file mode 100644 index 0000000000..c4b849419b --- /dev/null +++ b/components/sensor.pi_hole/index.html @@ -0,0 +1,269 @@ + + + + + + + + + Pi-Hole Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pi-Hole Sensor +

+
+
+

The pi_hole sensor platform is displaying the statistical summary of a Pi-Hole system.

+

To enable this sensor, add the following lines to your configuration.yaml file for a GET request:

+
# Example configuration.yaml entry
+sensor:
+  - platform: pi_hole
+
+
+

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. +
      +
    • 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/components/sensor.pilight/index.html b/components/sensor.pilight/index.html new file mode 100644 index 0000000000..b23f3e696b --- /dev/null +++ b/components/sensor.pilight/index.html @@ -0,0 +1,619 @@ + + + + + + + + + Pilight Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pilight Sensor +

+
+
+

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 and add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: pilight
+    variable: temperature
+    payload:
+      uuid: '0000-b8-27-eb-f447d3'
+
+
+

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.
  • +
  • unit_of_measurement (Optional): Defines the units of measurement of the sensor, if any.
  • +
+

Example: Weather station

+

This section shows a real life example how to use values of a weather station.

+
# Example configuration.yml entry
+sensor:
+  - platform: pilight
+    name: 'Temperature'
+    variable: 'temperature'
+    payload:
+      uuid: 0000-b8-27-eb-f1f72e
+    unit_of_measurement: '°C'
+  - platform: pilight
+    name: 'Humidity'
+    variable: 'humidity'
+    payload:
+      uuid: 0000-b8-27-eb-f1f72e
+    unit_of_measurement: '%'
+  - platform: pilight
+    name: 'Battery'
+    variable: 'battery'
+    payload:
+      uuid: 0000-b8-27-eb-f1f72e
+    unit_of_measurement: '%'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.plex/index.html b/components/sensor.plex/index.html new file mode 100644 index 0000000000..995f579c2f --- /dev/null +++ b/components/sensor.plex/index.html @@ -0,0 +1,352 @@ + + + + + + + + + Plex Activity Monitor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Plex Activity Monitor +

+
+
+

The plex sensor platform will monitor activity on a given Plex Media Server. 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 you don’t know your token, see Finding your account token / X-Plex-Token.

+

If you want to enable the plex sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: plex
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address of your Plex server. Defaults to localhost.
  • +
  • port (Optional): The port of your Plex Server. Defaults to 32400.
  • +
  • name (Optional): Name of the Plex server. Defaults to “Plex”.
  • +
  • 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.
  • +
  • ssl (Optional): Use HTTPS to connect to Plex server, NOTE host must not be an IP when this option is enabled. Defaults to “False”
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.pocketcasts/index.html b/components/sensor.pocketcasts/index.html new file mode 100644 index 0000000000..44829cd213 --- /dev/null +++ b/components/sensor.pocketcasts/index.html @@ -0,0 +1,578 @@ + + + + + + + + + PocketCasts - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PocketCasts +

+
+
+

The pocketcasts sensor platform let one monitor the podcasts at Pocket Casts.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: pocketcasts
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): The username to access the PocketCasts service.
  • +
  • password (Required): The password for the given username.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.pollen/index.html b/components/sensor.pollen/index.html new file mode 100644 index 0000000000..35cd53c888 --- /dev/null +++ b/components/sensor.pollen/index.html @@ -0,0 +1,260 @@ + + + + + + + + + Pollen.com - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pollen.com +

+
+
+

The pollen sensor platform collects and displays allergy and disease +information (based on a U.S. ZIP code) from Pollen.com. Data measured includes:

+
    +
  • Indicies for allergies and cold/flu measurements
  • +
  • Trends
  • +
  • Current outlook
  • +
  • more!
  • +
+

Configuring the Platform

+

To integrate pollen into Home Assistant, add the following section to your +configuration.yaml file (adjusting the monitored_conditions list to your +liking):

+
sensor:
+  platform: pollen
+  zip_code: "00544"
+  monitored_conditions:
+    - allergy_average_forecasted
+    - allergy_average_historical
+    - allergy_index_today
+    - allergy_index_tomorrow
+    - allergy_index_yesterday
+    - disease_average_forecasted
+
+
+
+

Configuration Variables

+
+
zip_code
+
+

(string)(Required)the U.S. ZIP code to gather data for (as a quoted string)

+
+
monitored_conditions
+
+

(list)(Required)the metric types to monitor; valid values are specified below

+
+
+
+

+It is important to ensure the ZIP code is quoted if it starts with a 0. Unquoted +ZIP codes that start with 0 will cause errors. +

+

Available Metrics

+

The following metrics can be monitored:

+
    +
  • Allergy Index: Forecasted Average (allergy_average_forecasted): the average +forecasted allergy index over the next 5 days
  • +
  • Allergy Index: Historical Average (allergy_average_historical): the average +historical allergy index over the past 30 days
  • +
  • Allergy Index: Today (allergy_index_today): the allergy index for today
  • +
  • Allergy Index: Tomorrow (allergy_index_tomorrow): the allergy index for +tomorrow
  • +
  • Allergy Index: Yesterday (allergy_index_yesterday): the allergy index for +yesterday
  • +
  • Cold & Flu: Forecasted Average (disease_average_forecasted): the average +forecasted cold/flu index over the next 5 days
  • +
+

Understanding the Indices

+

Any index-related sensor will have a value between 0.0 and 12.0. The values +map to the following human-friendly ratings:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RangeRating
0.0 - 2.4Low
2.5 - 4.8Low/Medium
4.9 - 7.2Medium
7.3 - 9.6Medium/High
9.7 - 12.0High
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.pushbullet/index.html b/components/sensor.pushbullet/index.html new file mode 100644 index 0000000000..7669980e5f --- /dev/null +++ b/components/sensor.pushbullet/index.html @@ -0,0 +1,606 @@ + + + + + + + + + Pushbullet Mirrors - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pushbullet Mirrors +

+
+
+

The pushbullet sensor platform reads messages from Pushbullet, a free service to send information between your phones, browsers, and friends. +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 on the Pushbullet Blog.

+

To enable the Pushbullet sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: pushbullet
+    api_key: YOUR_API_KEY
+    monitored_conditions:
+      - body
+
+
+

Configuration variables:

+
    +
  • +

    api_key (Required): Enter the API key for Pushbullet. Go to https://www.pushbullet.com/#settings/account to retrieve your API key/access token.

    +
  • +
  • +

    monitored_conditions array (Optional): Properties of the push to monitor. Defaults to body and title.

    +
      +
    • application_name: The application sending the push.
    • +
    • body: Body of the message.
    • +
    • notification_id: ID of the notification.
    • +
    • notification_tag: Tag (if the application sending supports it).
    • +
    • package_name: Name of the sender’s package.
    • +
    • receiver_email: The email of the push’s target.
    • +
    • sender_email: The sender of the push.
    • +
    • source_device_iden: ID of the sender’s device.
    • +
    • title: Title of the push.
    • +
    • type: Type of push.
    • +
    +
  • +
+

All properties will be displayed as attributes. The properties array are just for logging the sensor readings for multiple properties.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.pvoutput/index.html b/components/sensor.pvoutput/index.html new file mode 100644 index 0000000000..7e46dac272 --- /dev/null +++ b/components/sensor.pvoutput/index.html @@ -0,0 +1,233 @@ + + + + + + + + + PVOutput Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PVOutput Sensor +

+
+
+

The pvoutput sensor platform consumes information from PVOutput which were uploaded by your solar photovoltaic (PV) system.

+

To add PVOutput details to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: pvoutput
+    system_id: YOUR_SYSTEM_ID
+    api_key: YOUR_API_KEY
+    scan_interval: 120
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your API key. A read-only key is fine.
  • +
  • system_id (Required): The ID of your station.
  • +
+

+It’s recommended to set scan_interval: according to a value greater than 60 seconds. The service only allows 60 requests per hour but the sensor’s default is 30 seconds. +

+

To format the PVoutput sensor it’s recommended to use the template component. For example:

+
sensor:
+  - platform: pvoutput
+    system_id: YOUR_SYSTEM_ID
+    api_key: YOUR_API_KEY
+    scan_interval: 150
+  - platform: template
+    sensors:
+      power_consumption:
+        value_template: '{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ states.sensor.pvoutput.attributes.power_consumption }}{% endif %}'
+        friendly_name: 'Using'
+        unit_of_measurement: 'Watt'
+      energy_consumption:
+        value_template: '{{ "%0.1f"|format(states.sensor.pvoutput.attributes.energy_consumption|float/1000) }}'
+        friendly_name: 'Used'
+        unit_of_measurement: 'kWh'
+      power_generation:
+        value_template: '{% if is_state_attr("sensor.pvoutput", "power_generation", "NaN") %}0{% else %}{{ states.sensor.pvoutput.attributes.power_generation }}{% endif %}'
+        friendly_name: 'Generating'
+        unit_of_measurement: 'Watt'
+      energy_generation:
+        value_template: '{% if is_state_attr("sensor.pvoutput", "energy_generation", "NaN") %}0{% else %}{{ "%0.2f"|format(states.sensor.pvoutput.attributes.energy_generation|float/1000) }}{% endif %}'
+        friendly_name: 'Generated'
+        unit_of_measurement: 'kWh'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.pyload/index.html b/components/sensor.pyload/index.html new file mode 100644 index 0000000000..37cec7fcde --- /dev/null +++ b/components/sensor.pyload/index.html @@ -0,0 +1,221 @@ + + + + + + + + + pyLoad Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ pyLoad Sensor +

+
+
+

The pyload platform allows you to monitor your downloads with pyLoad from within Home Assistant and setup automation based on the information.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: pyload
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Optional)This is the IP address of your pyLoad download manager.

+

Default value: localhost

+
+
port
+
+

(int)(Optional)The port your pyLoad interface uses.

+

Default value: 8000

+
+
name
+
+

(string)(Optional)The name to use when displaying this pyLoad instance.

+

Default value: 20

+
+
username
+
+

(string)(Optional)Your pyLoad username.

+
+
password
+
+

(string)(Optional)Your pyLoad password.

+
+
ssl
+
+

(boolean)(Optional)Enable SSL/TLS for the host.

+

Default value: false

+
+
+
+

If everything is setup correctly, the download speed will show up in the frontend.

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.qnap/index.html b/components/sensor.qnap/index.html new file mode 100644 index 0000000000..3a00f6acda --- /dev/null +++ b/components/sensor.qnap/index.html @@ -0,0 +1,625 @@ + + + + + + + + + QNAP Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ QNAP Sensor +

+
+
+

This qnap sensor allows getting various statistics from your QNAP NAS.

+

To use the qnap sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: qnap
+    host: IP_ADDRESS_OF_QNAP_NAS
+    username: USERNAME
+    password: PASSWORD
+    monitored_conditions:
+      - status
+      - cpu_usage
+      - memory_percent_used
+      - network_tx
+      - volume_percentage_used
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the QNAP NAS to monitor
  • +
  • port (Optional): The port number on which the QNAP NAS web interface is reachable. Defaults to 8080.
  • +
  • ssl (Optional): Whether to connect via https. Defaults to false.
  • +
  • verify_ssl (Optional): Whether SSL certificates should be validated. Defaults to true.
  • +
  • timeout (Optional): How long (in seconds) to wait for a response from the QNAP device before giving up. Defaults to 10.
  • +
  • username (Required): An user to connect to the QNAP NAS.
  • +
  • password (Required): The password of the user to connect to the QNAP NAS.
  • +
  • drives (Optional): Array of drives to monitor (ex: 0:1). Defaults to all drives.
  • +
  • volumes (Optional): Array of volumes to monitor (ex: DataVol1). Defaults to all volumes.
  • +
  • nics (Optional): Array of network interfaces to monitor (ex: eth0). Defaults to all NICs.
  • +
  • monitored_conditions (Required): Defines the stats to monitor as sensors. +
      +
    • status: Displays overall system health.
    • +
    • system_temp: Displays the overall system temperature.
    • +
    • cpu_temp: Displays the CPU’s temperature.
    • +
    • cpu_usage: Displays the CPU’s utilization as a percentage.
    • +
    • memory_free: Displays the size of available RAM in GB.
    • +
    • memory_used: Displays the size of used RAM in GB.
    • +
    • memory_percent_used: Displays the size of used RAM as a percentage of total RAM.
    • +
    • network_link_status: Displays whether the network interfaces is up (creates a new entry for each interface).
    • +
    • network_tx: Displays the upload speed of a network interface in MB/s (creates a new entry for each interface).
    • +
    • network_rx: Displays the download speed of a network interface in MB/s (creates a new entry for each interface).
    • +
    • drive_smart_status: Displays the S.M.A.R.T. status of the drive (creates a new entry for each drive).
    • +
    • drive_temp: Displays the temperature of the drive (creates a new entry for each drive).
    • +
    • volume_size_free: Displays the available space of the volume in GB (creates a new entry for each volume).
    • +
    • volume_size_used: Displays the used space of the volume in GB (creates a new entry for each volume).
    • +
    • volume_percentage_used: Displays the used space of the volume as a percentage (creates a new entry for each volume).
    • +
    +
  • +
+

Self-signed certificates

+

If your QNAP device uses self-signed certificates, set the verify_ssl option to false.

+

QNAP device support:

+

This component has been tested on the following devices:

+
    +
  • TS-259 Pro+ (QTS 4.2.6)
  • +
  • TS-410 (QTS 4.2.3)
  • +
  • TS-419 (QTS 4.2.3)
  • +
  • TS-451 (QTS 4.2.2)
  • +
  • TS-470 (QTS 4.2.2)
  • +
  • TS-639 (QTS 4.2.3)
  • +
+

Other QNAP NAS devices using similar firmware should work fine. For more information about supported devices, or to report issues with your device, please visit the qnapstats project.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.radarr/index.html b/components/sensor.radarr/index.html new file mode 100644 index 0000000000..31fa352a5d --- /dev/null +++ b/components/sensor.radarr/index.html @@ -0,0 +1,652 @@ + + + + + + + + + Radarr Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Radarr Sensor +

+
+
+

This radarr sensor platform pulls data from a given Radarr instance.

+

To use your Radarr sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: radarr
+    api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your Radarr API key, found in Settings > General in the Radarr Web UI.
  • +
  • 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: 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.
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Get Episodes airing in next 2 days

+
# Example configuration.yml entry
+sensor:
+  - platform: radarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - upcoming
+    days: 2
+
+
+

Enable SSL

+

SSL may run on a different port than the default (7878). The SSL port can be bound to any port in Radarr, so it should be set in the config here (unless it is changed to 7878).

+
# Example configuration.yml entry
+sensor:
+  - platform: radarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    port: 9898
+    monitored_conditions:
+      - upcoming
+    days: 2
+    ssl: true
+
+
+

Get disk space for all storage locations

+
# Example configuration.yml entry
+sensor:
+  - platform: radarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - diskspace
+
+
+

Get disk space for listed storage locations

+

The storage locations Radarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor.

+
# Example configuration.yml entry
+sensor:
+  - platform: radarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - diskspace
+    include_paths:
+      - /tank/plex
+
+
+

Get disk space in different unit

+

The Radarr API returns available space in bytes, but this sensor will default to reporting it in GB to make the number more manageable. This can be overridden if your storage needs require a different unit. All units from bytes (B) to yottabytes (YB) are supported.

+

This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.

+
# Example configuration.yml entry
+sensor:
+  - platform: radarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - diskspace
+    unit: TB
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.rainbird/index.html b/components/sensor.rainbird/index.html new file mode 100644 index 0000000000..c51651a4f8 --- /dev/null +++ b/components/sensor.rainbird/index.html @@ -0,0 +1,472 @@ + + + + + + + + + Rain Bird Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Rain Bird Sensor +

+
+
+

This rainbird sensor allows interacting with LNK WiFi module of the Rain Bird Irrigation system in Home Assistant.

+

Once you have enabled the Rain Bird component, add the following to your configuration.yaml file to enable the rain sensor:

+
# Example configuration.yaml entry
+sensor:
+  - platform: rainbird
+    monitored_conditions:
+      - rainsensor
+
+
+

Configuration variables:

+
    +
  • monitored_conditions: Currently only rainsensor is supported. Returns the sensor level.
  • +
+

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/components/sensor.raincloud/index.html b/components/sensor.raincloud/index.html new file mode 100644 index 0000000000..657ae05420 --- /dev/null +++ b/components/sensor.raincloud/index.html @@ -0,0 +1,596 @@ + + + + + + + + + Melnor Raincloud Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melnor Raincloud Sensor +

+
+
+

To get your Melnor RainCloud sensors working within Home Assistant, please follow the instructions for the general Raincloud component.

+

Once you have enabled the Raincloud component, add the following to your configuration.yaml file:

+
# 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/components/sensor.random/index.html b/components/sensor.random/index.html new file mode 100644 index 0000000000..4a3a8b9335 --- /dev/null +++ b/components/sensor.random/index.html @@ -0,0 +1,604 @@ + + + + + + + + + Random Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Random Sensor +

+
+
+

The random sensor platform is creating random sensor values (integers) out of a given range. Returned values form a discrete uniform distribution, meaning that each integer value in the range configured is equally likely to be drawn. 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: random
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+

Default value: Random Sensor

+
+
minimum
+
+

(string)(Optional)Lower limit for the values.

+

Default value: 0

+
+
maximum
+
+

(int)(Optional)Upper limit for the values.

+

Default value: 20

+
+
unit_of_measurement
+
+

(string)(Optional)Defines the units of measurement of the sensor, if any.

+
+
+
+

See the entity component options to control how often the main component polls the random sensor. The default is 30 seconds.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.rest/index.html b/components/sensor.rest/index.html new file mode 100644 index 0000000000..5ca03e7089 --- /dev/null +++ b/components/sensor.rest/index.html @@ -0,0 +1,786 @@ + + + + + + + + + RESTful Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RESTful Sensor +

+
+
+

The rest sensor platform is consuming a given endpoint which is exposed by a RESTful API of a device, an application, or a web service. The sensor has support for GET and POST requests.

+

To enable this sensor, add the following lines to your configuration.yaml file for a GET request:

+
# Example configuration.yaml entry
+sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+
+
+

or for a POST request:

+
# Example configuration.yaml entry
+sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+    method: POST
+    payload: '{ "device" : "heater" }'
+
+
+
+

Configuration Variables

+
+
resource
+
+

(string)(Required)The resource or endpoint that contains the value.

+

Default value: string

+
+
method
+
+

(string)(Optional)The method of the request.

+

Default value: GET

+
+
name
+
+

(string)(Optional)Name of the REST sensor.

+

Default value: REST Sensor

+
+
value_template
+
+

(template)(Optional)Defines a template to extract the value.

+
+
payload
+
+

(string)(Optional)The payload to send with a POST request. Depends on the service, but usually formed as JSON.

+
+
verify_ssl
+
+

(boolean)(Optional)Verify the certification of the endpoint.

+

Default value: true

+
+
unit_of_measurement
+
+

(string)(Optional)Defines the units of measurement of the sensor, if any.

+
+
authentication
+
+

(string)(Optional)Type of the HTTP authentication. basic or digest.

+
+
username
+
+

(string)(Optional)The username for accessing the REST endpoint.

+
+
password
+
+

(string)(Optional)The password for accessing the REST endpoint.

+
+
headers
+
+

(list | string)(Optional)The headers for the requests.

+
+
json_attributes
+
+

(list | string)A list of keys to extract values from a JSON dictionary result and then set as sensor attributes.

+
+
force_update
+
+

(boolean)Sends update events even if the value hasn’t changed. Useful if you want to have meaningful value graphs in history.

+

Default value: false

+
+
+
+

+Make sure that the URL exactly matches your endpoint or resource. +

+

curl can help you identify the variable you want to display in your Home Assistant frontend. The example below shows the JSON response of a device that is running with aREST.

+
$ curl -X GET http://192.168.1.31/temperature/
+{"temperature": 77, "id": "sensor02", "name": "livingroom", "connected": true}
+
+
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

External IP address

+

You can find your external IP address using the service JSON Test at their http://ip.jsontest.com/ URL.

+
sensor:
+  - platform: rest
+    resource: http://ip.jsontest.com
+    name: External IP
+    value_template: '{{ value_json.ip }}'
+
+
+

Single value from a local Glances instance

+

The glances sensor is doing the exact same thing for all exposed values.

+
sensor:
+  - platform: rest
+    resource: http://IP_ADRRESS:61208/api/2/mem/used
+    name: Used mem
+    value_template: '{{ value_json.used| multiply(0.000000954) | round(0) }}'
+    unit_of_measurement: MB
+
+
+

Value from another Home Assistant instance

+

The Home Assistant API exposes the data from your attached sensors. If you are running multiple Home Assistant instances which are not connected you can still get information from them.

+

If the Home Assistant instance in the resource variable is protected by an API password, you can append ?api_password=YOUR_PASSWORD to the resource URL to authenticate or use headers:.

+
sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS:8123/api/states/sensor.weather_temperature
+    name: Temperature
+    value_template: '{{ value_json.state }}'
+    unit_of_measurement: "°C"
+
+
+

Accessing a HTTP authentication protected endpoint

+

The REST sensor supports HTTP authentication and customized headers.

+
sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS:5000/sensor
+    username: ha1
+    password: test1
+    authentication: basic
+    headers:
+      User-Agent: Home Assistant
+      Content-Type: application/json
+
+
+

The headers will contain all relevant details. This will also give you the ability to access endpoints that are protected by tokens.

+
Content-Length: 1024
+Host: IP_ADDRESS1:5000
+Authorization: Basic aGExOnRlc3Qx
+Accept-Encoding: identity
+Content-Type: application/json
+User-Agent: Home Assistant
+
+
+

Use GitHub to get the latest release of Home Assistant

+

This sample is very similar to the updater component but the information is received from GitHub.

+
sensor:
+  - platform: rest
+    resource: https://api.github.com/repos/home-assistant/home-assistant/releases/latest
+    username: YOUR_GITHUB_USERNAME
+    password: YOUR_GITHUB_ACCESS_TOKEN
+    authentication: basic
+    value_template: '{{ value_json.tag_name }}'
+    headers:
+      Accept: application/vnd.github.v3+json
+      Content-Type: application/json
+      User-Agent: Home Assistant REST sensor
+
+
+

Fetch multiple JSON values and present them as attributes

+

JSON Test returns the current time, date and milliseconds since epoch from http://date.jsontest.com/.

+
sensor:
+  - platform: rest
+    name: JSON time
+    json_attributes:
+      - date
+      - milliseconds_since_epoch
+    resource: http://date.jsontest.com/
+    value_template: '{{ value_json.time }}'
+  - platform: template
+    sensors:
+      date:
+        friendly_name: 'Date'
+        value_template: '{{ states.sensor.json_time.attributes["date"] }}'
+      milliseconds:
+        friendly_name: 'milliseconds'
+        value_template: '{{ states.sensor.json_time.attributes["milliseconds_since_epoch"] }}'
+
+
+

This sample fetches a weather report from OpenWeatherMap, maps the resulting data into attributes of the RESTful sensor and then creates a set of template sensors that monitor the attributes and present the values in a usable form.

+
sensor:
+  - platform: rest
+    name: OWM_report
+    json_attributes: 
+      - main
+      - weather
+    value_template: '{{ value_json["weather"][0]["description"].title() }}'
+    resource: http://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY
+  - platform: template
+    sensors:
+      owm_weather:
+        value_template: '{{ states.sensor.owm_report.attributes.weather[0]["description"].title() }}'
+        icon_template: '{{ "http://openweathermap.org/img/w/"+states.sensor.owm_report.attributes.weather[0]["icon"]+".png" }}'
+        entity_id: sensor.owm_report
+      owm_temp:
+        friendly_name: 'Outside temp'
+        value_template: '{{ states.sensor.owm_report.attributes.main["temp"]-273.15 }}'
+        unit_of_measurement: "°C"
+        entity_id: sensor.owm_report
+      owm_pressure:
+        friendly_name: 'Outside pressure'
+        value_template: '{{ states.sensor.owm_report.attributes.main["pressure"] }}'
+        unit_of_measurement: "hP"
+        entity_id: sensor.owm_report
+      owm_humidity:
+        friendly_name: 'Outside humidity'
+        value_template: '{{ states.sensor.owm_report.attributes.main["humidity"] }}'
+        unit_of_measurement: "%"
+        entity_id: sensor.owm_report
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.rflink/index.html b/components/sensor.rflink/index.html new file mode 100644 index 0000000000..eb3b5ec381 --- /dev/null +++ b/components/sensor.rflink/index.html @@ -0,0 +1,652 @@ + + + + + + + + + RFLink Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFLink Sensor +

+
+
+

The rflink component support devices that use RFLink gateway firmware, for example the Nodo 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.

+

After configuring the RFLink hub sensors will be automatically discovered and added.

+

RFLink sensor ID’s are composed of: protocol, id and type (optional). For example: alectov1_0334_temp. Some sensors emit multiple types of data. Each will be created as its own

+

Once the ID of a sensor is known it can be used to configure the sensor in HA, for example to add it to a different group, hide it or configure a nice name.

+

Assigning name to a sensor:

+
# Example configuration.yaml entry
+sensor:
+  - platform: rflink
+    devices:
+      alectov1_0334_temp:
+        name: Temperature Outside
+
+
+

Configuration variables:

+
    +
  • automatic_add (Optional): Automatically add new/unconfigured devices to HA if detected (default: True).
  • +
  • devices (Optional): A list of devices with their name to use in the frontend.
  • +
+

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.
  • +
  • aliases (Optional): Alternative RFLink ID’s this device is known by.
  • +
+

Sensor type values:

+
    +
  • average_windspeed
  • +
  • barometric_pressure
  • +
  • battery
  • +
  • weather_forecast
  • +
  • doorbell_melody
  • +
  • command
  • +
  • co2_air_quality
  • +
  • current_phase_1
  • +
  • current_phase_2
  • +
  • current_phase_3
  • +
  • distance
  • +
  • firmware
  • +
  • humidity_status
  • +
  • humidity
  • +
  • hardware
  • +
  • kilowatt
  • +
  • light_intensity
  • +
  • meter_value
  • +
  • total_rain
  • +
  • rain_rate
  • +
  • total_rain
  • +
  • revision
  • +
  • noise_level
  • +
  • temperature
  • +
  • uv_intensity
  • +
  • version
  • +
  • voltage
  • +
  • watt
  • +
  • windchill
  • +
  • winddirection
  • +
  • windgusts
  • +
  • windspeed
  • +
  • windtemp
  • +
+

Hiding/ignoring sensors

+

Sensors are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods:

+ +

Device support

+

See device support

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.rfxtrx/index.html b/components/sensor.rfxtrx/index.html new file mode 100644 index 0000000000..2b47fafd90 --- /dev/null +++ b/components/sensor.rfxtrx/index.html @@ -0,0 +1,653 @@ + + + + + + + + + RFXtrx Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFXtrx Sensor +

+
+
+

The rfxtrx platform support sensors that communicate in the frequency range of 433.92 MHz.

+

First you have to set up your rfxtrx hub. +The easiest way to find your sensors is to add this to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  platform: rfxtrx
+  automatic_add: True
+
+
+

Then when the sensor emits a signal it will be automatically added:

+

+ +

+

Here the name is 0a52080000301004d240259 or 0a52080000301004d240259_temperature and you can verify that it works from the frontend. +Then you should update your configuration to (_temperature is not needed):

+
# Example configuration.yaml entry
+sensor:
+  platform: rfxtrx
+  devices:
+    0a52080000301004d240259:
+      name: device_name
+
+
+

If you want to display several data types from one sensor:

+
# Example configuration.yaml entry
+sensor:
+  platform: rfxtrx
+  devices:
+    0a520802060100ff0e0269:
+      name: Bath
+      data_type:
+       - Humidity
+       - Temperature
+
+
+

Only these data_type are valid :

+
    +
  • Temperature
  • +
  • Humidity
  • +
  • Barometer
  • +
  • Wind direction
  • +
  • Rain rate
  • +
  • Energy usage
  • +
  • Total usage
  • +
  • Sound
  • +
  • Sensor Status
  • +
  • Counter value
  • +
  • UV
  • +
+

Example configuration:

+
# Example configuration.yaml entry
+sensor:
+  platform: rfxtrx
+  automatic_add: True
+  devices:
+    0a52080705020095220269:
+      name: Lving
+      fire_event: True
+    0a520802060100ff0e0269:
+      name: Bath
+      data_type:
+       - Humidity
+       - Temperature
+
+
+

Configuration variables:

+
    +
  • devices (Optional): A list of devices with their name to use in the frontend.
  • +
  • automatic_add (Optional): To enable the automatic addition of new lights.
  • +
  • data_type (Optional): Which data type the sensor should show
  • +
  • fire_event (Optional): Fires an event even if the state is the same as before. Can be used for automations.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ring/index.html b/components/sensor.ring/index.html new file mode 100644 index 0000000000..87d4485674 --- /dev/null +++ b/components/sensor.ring/index.html @@ -0,0 +1,600 @@ + + + + + + + + + Ring Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ring Sensor +

+
+
+

To get your Ring.com binary sensors working within Home Assistant, please follow the instructions for the general Ring component.

+

Once you have enabled the Ring component, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: ring
+
+
+

Configuration variables:

+
    +
  • 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_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.
    • +
    • 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 doorbell, external chimes and stickup cameras.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ripple/index.html b/components/sensor.ripple/index.html new file mode 100644 index 0000000000..ca42ec61fe --- /dev/null +++ b/components/sensor.ripple/index.html @@ -0,0 +1,214 @@ + + + + + + + + + Ripple - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ripple +

+
+
+

The ripple sensor platform displays Ripple wallet balances from Ripple.com.

+

To add the Ripple sensor to your installation, specify a ripple address to watch in the configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: ripple
+    address: 'r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV'
+
+
+
+

Configuration Variables

+
+
address
+
+

(string)(Required)Ripple wallet address to watch.

+
+
name
+
+

(string)(Optional)Name for the sensor to use in the frontend.

+

Default value: Ripple Balance

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.sabnzbd/index.html b/components/sensor.sabnzbd/index.html new file mode 100644 index 0000000000..56d6fb7be8 --- /dev/null +++ b/components/sensor.sabnzbd/index.html @@ -0,0 +1,229 @@ + + + + + + + + + SABnzbd - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SABnzbd +

+
+
+

The sabnzbd platform will allow you to monitor your downloads with SABnzbd from within Home Assistant and setup automation based on the information.

+

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:

+
# Example configuration.yaml entry
+sensor:
+  platform: sabnzbd
+  host: YOUR_SABNZBD_HOST
+  api_key: YOUR_API_KEY
+  monitored_variables:
+    - 'current_status'
+    - 'speed'
+    - 'queue_size'
+    - 'queue_remaining'
+    - 'disk_size'
+    - 'disk_free'
+    - 'queue_count'
+
+
+

Configuration variables:

+
    +
  • host (Required): The host where your SABnzbd instance is running, eg. 192.168.1.32
  • +
  • port (Optional): The port to use with SABnzbd instance. Defaults to 8080.
  • +
  • api_key (Required): Name that will be used in the frontend for the pin.
  • +
  • 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.
    • +
    • queue_size: Size of the queue
    • +
    • queue_remaining: Remaining elements in the queue
    • +
    • disk_size: Disk size of the storage location
    • +
    • disk_free: Free disk space at the storage location
    • +
    • queue_count: Number of items in the queue
    • +
    +
  • +
+

Note that this will create the following sensors:

+
 - sensor.sabnzbd_status
+ - sensor.sabnzbd_speed
+ - sensor.sabnzbd_queue
+ - sensor.sabnzbd_left
+ - sensor.sabnzbd_disk
+ - sensor.sabnzbd_disk_free
+ - sensor.sabnzdb_queue_count
+
+
+

As always, you can determine the names of sensors by looking at the dev-state page < > in the web interface.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.scrape/index.html b/components/sensor.scrape/index.html new file mode 100644 index 0000000000..157ce87aad --- /dev/null +++ b/components/sensor.scrape/index.html @@ -0,0 +1,652 @@ + + + + + + + + + Scrape Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Scrape Sensor +

+
+
+

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

+
# Example configuration.yaml entry
+sensor:
+  - platform: scrape
+    resource: https://home-assistant.io
+    select: ".current-version h1"
+
+
+

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

Examples

+

In this section you find some real life examples of how to use this sensor. There is also a Jupyter notebook available for this example to give you a bit more insight.

+

Home Assistant

+

The current release Home Assistant is published on https://home-assistant.io/

+
sensor:
+# Example configuration.yaml entry
+  - platform: scrape
+    resource: https://home-assistant.io
+    name: Release
+    select: ".current-version h1"
+    value_template: '{{ value.split(":")[1] }}'
+
+
+

Available implementations

+

Get the counter for all our implementations from the Component overview page.

+
# Example configuration.yaml entry
+sensor:
+  - platform: scrape
+    resource: https://home-assistant.io/components/
+    name: Home Assistant impl.
+    select: 'a[href="#all"]'
+    value_template: '{{ value.split("(")[1].split(")")[0] }}'
+
+
+

Get a value out of a tag

+

The German Federal Office for Radiation protection (Bundesamt für Strahlenschutz) is publishing various details about optical radiation including an UV index. This example is getting the index for a region in Germany.

+
# 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
+    select: 'p:nth-of-type(19)'
+    unit_of_measurement: 'UV Index'
+
+
+

IFTTT status

+

If you make heavy use of the IFTTT web service for your automations and are curious about the status of IFTTT then you can display the current state of IFTTT in your frontend.

+
# Example configuration.yaml entry
+sensor:
+  - platform: scrape
+    resource: http://status.ifttt.com/
+    name: IFTTT status
+    select: '.component-status'
+
+
+

Get the latest podcast episode file URL

+

If you want to get the file URL for the latest episode of your favorite podcast, so you can pass it on to a compatible media player.

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

Energy price

+

This example tries to retrieve the price for electricity.

+
# Example configuration.yaml entry
+sensor:
+  - platform: scrape
+    resource: https://elen.nu/timpriser-pa-el-for-elomrade-se3-stockholm/
+    name: Electricity price
+    select: ".elspot-content"
+    value_template: '{{ ((value.split(" ")[0]) | replace (",", ".")) }}'
+    unit_of_measurement: "öre/kWh"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.season/index.html b/components/sensor.season/index.html new file mode 100644 index 0000000000..7de0eae8a0 --- /dev/null +++ b/components/sensor.season/index.html @@ -0,0 +1,581 @@ + + + + + + + + + Season Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Season Sensor +

+
+
+

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:

+ +
# 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/components/sensor.sense/index.html b/components/sensor.sense/index.html new file mode 100644 index 0000000000..b992358608 --- /dev/null +++ b/components/sensor.sense/index.html @@ -0,0 +1,271 @@ + + + + + + + + + Sense - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sense +

+
+
+

Integrate your Sense meter information into Home Assistant. +To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: sense
+  email: CLIENT_ID
+  password: CLIENT_SECRET
+  monitored_conditions:
+    - active_usage
+    - active_production
+    - daily_usage
+    - daily_production
+
+
+

Two types of sensors can be monitored and will be created with the following names:

+
    +
  • Active Usage/Production: Current active power usage/production in Watts. Updated every 30 seconds.
  • +
  • Daily Usage/Production: Daily power usage/production in kWh. Updated every 5 minutes.
  • +
  • +
+

Weekly, Monthly and Yearly variants are also available.

+
+

Configuration Variables

+
+
email
+
+

(string)(Required)The email associated with your Sense account/application.

+
+
password
+
+

(string)(Required)The password for your Sense account/application.

+
+
monitored_conditions
+
+

(list)(Required)List of sensors to display in the front end.

+
+
+
+
active_usage
+
+

The current power usage in W

+
+
active_production
+
+

The current solar production in W

+
+
daily_usage
+
+

Total power used for current day in kWh

+
+
daily_production
+
+

Total power produced for current day in kWh

+
+
weekly_usage
+
+

Total power used for current week in kWh

+
+
weekly_production
+
+

Total power produced for current week in kWh

+
+
monthly_usage
+
+

Total power used for current month in kWh

+
+
monthly_production
+
+

Total power produced for current month in kWh

+
+
yearly_usage
+
+

Total power used for current year in kWh

+
+
yearly_production
+
+

Total power produced for current year in kWh

+
+
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.sensehat/index.html b/components/sensor.sensehat/index.html new file mode 100644 index 0000000000..5dff6193dc --- /dev/null +++ b/components/sensor.sensehat/index.html @@ -0,0 +1,695 @@ + + + + + + + + + Sense HAT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sense HAT +

+
+
+

The sensehat sensor platform allows you to display information collected by a Sense HAT add-on board for Raspberry Pi.

+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: sensehat
+    display_options:
+        - temperature
+        - humidity
+        - pressure
+
+
+

Configuration variables:

+
    +
  • display_options (Requires) array: List of details to monitor. Defaults is memory_free. +
      +
    • ‘temperature’
    • +
    • ‘humidity’
    • +
    • ‘pressure’ +is_hat_attached (Optional): True|False boolean; Default value is True declaring that the SenseHAT is physically on the Raspberry Pi
    • +
    +
  • +
+

Customizing the Sense HAT data

+

Format the sensor values +Add the following to your sensor

+
# Example configuration.yaml entry
+sensor:
+  - platform: sensehat
+    display_options:
+        - temperature
+        - humidity
+        - pressure
+
+  - platform: template
+    sensors:
+      sensehat_temperature:
+        value_template: '{{ states.sensor.temperature.state | round(1) }}'
+        unit_of_measurement: '°C'
+      sensehat_pressure:
+        value_template: '{{ states.sensor.pressure.state | round(1) }}'
+        unit_of_measurement: 'mb'
+      sensehat_humidity:
+        value_template: '{{ states.sensor.humidity.state | round(1) }}'
+        unit_of_measurement: '%'
+
+
+

Give the values friendly names & icons +Add the following to your customize

+
# Example configuration.yaml entry
+customize:
+  sensor.sensehat_temperature:
+    icon: mdi:thermometer
+    friendly_name: "Temperature"
+  sensor.sensehat_humidity:
+    icon: mdi:weather-rainy
+    friendly_name: "Humidity"
+  sensor.sensehat_pressure:
+    icon: mdi:gauge
+    friendly_name: "Pressure"
+
+
+

Create a group +Add the following to your groups

+
# Example configuration.yaml entry
+group:
+  sense_hat:
+    name: Sense HAT
+    entities:
+      - sensor.sensehat_temperature
+      - sensor.sensehat_humidity
+      - sensor.sensehat_pressure
+
+
+

Add the sense_hat group a group (Kitchen for example)

+
# Example configuration.yaml entry
+group:
+  kitchen:
+    - group.sense_hat
+
+
+

Directions for installing on Raspberry Pi All-In-One installer and HASSbian:

+

Here are the steps to make the SenseHAT sensor work successfully with the virtual environment versions.

+

Install SenseHAT package to homeassistant_venv

+
# switch to the homeassistant_venv environment
+sudo su -s /bin/bash homeassistant
+source /srv/homeassistant/homeassistant_venv/bin/activate
+
+# install the sense-hat lib
+pip3 install sense-hat
+# be patient, this will take a long while
+
+
+

Return to pi

+

Type exit to quit out of the homeassistant_venv back to your pi environment.

+

As all of the following steps should be under the pi user environment.

+
Install RTIMU
+
# pi user environment: Install RTIMU
+pip3 install rtimulib
+
+# pi user environment: Add _homeassistant_ user to the _input_, _video_ and the _i2c_ groups
+sudo addgroup homeassistant input
+sudo addgroup homeassistant i2c
+sudo addgroup homeassistant video
+
+# HA environment: Add symlink to RTIMU
+ln -s /usr/lib/python3/dist-packages/RTIMU.cpython-35m-arm-linux-gnueabihf.so /srv/homeassistant/lib/python3.5/site-packages/
+
+# pi user environment: Reboot Raspberry Pi to apply changes
+sudo reboot
+
+
+

Unfortunately enabling the SenseHAT Sensor component for a Virtual Environment install of Home-Assistant fails with errors. +(The Raspberry Pi All-In-One installer and HASSbian both run Home-Assistant in an virtual environment). +These issues have been discussed in the repository issue (#5093)[https://github.com/home-assistant/home-assistant/issues/5093)

+

This fix has been tested with a clean install of:

+ +

and

+ +

For setting up the Sense HAT’s RGB LED matrix as lights within Home Assistant, please see the Sense HAT light component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.serial/index.html b/components/sensor.serial/index.html new file mode 100644 index 0000000000..360c0799e0 --- /dev/null +++ b/components/sensor.serial/index.html @@ -0,0 +1,630 @@ + + + + + + + + + Serial Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Serial Sensor +

+
+
+

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

+
$ sudo minicom -D /dev/ttyACM0
+
+
+

To setup a serial sensor to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: serial
+    serial_port: /dev/ttyACM0
+
+
+
+

Configuration Variables

+
+
serial_port
+
+

(string)(Required)Local serial port where the sensor is connected and access is granted.

+
+
name
+
+

(string)(Optional)Friendly name to use for the frontend. Default to “Serial sensor”.

+
+
baudrate
+
+

(int)(Optional)Baudrate of the serial port.

+

Default value: 9600 Bps

+
+
value_template
+
+

(template)(Optional)Defines a template to extract a value from the serial line.

+
+
+
+

value_template for Template sensor

+

TMP36

+
"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}"
+
+
+

Examples

+

Arduino

+

For controllers of the Arduino family a possible sketch to read the temperature and the humidity could look like the sample below.

+
#include <ArduinoJson.h>
+
+void setup() {
+  Serial.begin(115200);
+}
+
+void loop() {
+  StaticJsonBuffer<100> jsonBuffer;
+  JsonObject& json = prepareResponse(jsonBuffer);
+  json.printTo(Serial);
+  Serial.println();
+  delay(2000);
+}
+
+JsonObject& prepareResponse(JsonBuffer& jsonBuffer) {
+  JsonObject& root = jsonBuffer.createObject();
+  root["temperature"] = analogRead(A0);
+  root["humidity"] = analogRead(A1);
+  return root;
+}
+
+
+

Digispark USB Development Board

+

This blog post describes the setup with a Digispark USB Development Board.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.serial_pm/index.html b/components/sensor.serial_pm/index.html new file mode 100644 index 0000000000..1fcaf1b9b7 --- /dev/null +++ b/components/sensor.serial_pm/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Particulate matter Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Particulate matter Sensor +

+
+
+

Particulate matter sensors measure the amount of very small particles in the air. A short introduction how these sensors work can be found on Open Home Automation.

+

Cheap LED based sensors usually use a GPIO interface that is hard to attach to computers. However, there are a lot of laser LED based sensors on the market that use a serial interface and can be connected to your Home Assistant system easily with an USB to serial converter.

+

At this time, the following sensors are supported:

+
    +
  • oneair,s3
  • +
  • novafitness,sds021
  • +
  • novafitness,sds011
  • +
  • plantower,pms1003
  • +
  • plantower,pms5003
  • +
  • plantower,pms7003
  • +
  • plantower,pms2003
  • +
  • plantower,pms3003
  • +
+

To use your PM sensor in your installation, add the following to your configuration.yaml file:

+
sensor:
+  - platform: serial_pm
+    serial_device: /dev/tty.SLAB_USBtoUART
+    name: Nova
+    brand: novafitness,sds011
+
+
+
    +
  • serial_device (Required): The serial port to use. On *nix systems, it can often be identified by $ ls /dev/tty*
  • +
  • name (Optional): The name displayed in the frontend.
  • +
  • brand (Required): Manufacturer and type of the sensor.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.shodan/index.html b/components/sensor.shodan/index.html new file mode 100644 index 0000000000..037992bff2 --- /dev/null +++ b/components/sensor.shodan/index.html @@ -0,0 +1,594 @@ + + + + + + + + + Shodan Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Shodan Sensor +

+
+
+

The shodan sensor platform is displaying the total of result of a +Shodan 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: shodan
+    api_key: SHODAN_API_KEY
+    query: 'home-assistant'
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)The API key for Shodan.io.

+
+
query
+
+

(string)(Required)The search string.

+
+
name
+
+

(string)(Optional)Name of the Shodan sensor.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.simulated/index.html b/components/sensor.simulated/index.html new file mode 100644 index 0000000000..47728e2fe9 --- /dev/null +++ b/components/sensor.simulated/index.html @@ -0,0 +1,640 @@ + + + + + + + + + Simulated sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Simulated sensor +

+
+
+

This component provides a simulated sensor that generates a time-varying signal V(t) given by the function:

+
 V(t) = M + A sin((2 pi (t - t_0) / w) + P) + N(s)
+
+
+

where:

+
    +
  • M = the mean value of the sensor
  • +
  • A = the amplitude of the periodic contribution
  • +
  • t = the time when a value is generated
  • +
  • t_0 = the time when the sensor is started
  • +
  • w = the time period in seconds for a single complete cycle of the periodic contribution
  • +
  • P = the phase offset to add to the periodic contribution, in units of degrees
  • +
  • N(s) = the random Gaussian noise with spread s
  • +
+

A simulated sensor with default values can be added to home-assistant using the following config:

+
sensor:
+  - platform: simulated
+
+
+

To give an example of simulating real world data, a simulated relative humidity sensor (in %) can be added using the following config:

+
sensor:
+  - platform: simulated
+    name: 'simulated relative humidity'
+    unit: '%'
+    amplitude: 0 # Turns off the periodic contribution
+    mean: 50
+    spread: 10
+    seed: 999
+
+
+

Configuration variables:

+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the sensor

+

Default value: Defaults to ‘simulated’

+
+
unit
+
+

(string)(Optional)The unit to apply

+

Default value: Defaults to ‘value’

+
+
amplitude
+
+

(float)(Optional)The amplitude of periodic contribution

+

Default value: 1

+
+
mean
+
+

(float)(Optional)The mean level of the sensor

+

Default value: 0

+
+
period
+
+

(seconds)(Optional)The time in seconds for one complete oscillation of the periodic contribution

+

Default value: 0

+
+
phase
+
+

(float)(Optional)The phase offset (in degrees) to apply to the periodic component

+

Default value: 0

+
+
seed
+
+

(int)(Optional)The seed value for the random noise component

+

Default value: 999

+
+
spread
+
+

(float)(Optional)The spread is the range of the randomly distributed values about their mean. This is sometimes referred to as the Full Width at Half Maximum (FWHM) of the random distribution

+

Default value: None

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.skybeacon/index.html b/components/sensor.skybeacon/index.html new file mode 100644 index 0000000000..eb520b83ff --- /dev/null +++ b/components/sensor.skybeacon/index.html @@ -0,0 +1,217 @@ + + + + + + + + + Skybeacon sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybeacon sensor +

+
+
+

The skybeacon sensor platform supports CR2477-powered iBeacon/eddystone sensors that come with temperature/sensor module.

+

To use your Skybeacon sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: skybeacon
+    mac: "xx:xx:xx:xx:xx:xx"
+    monitored_conditions:
+      - temperature
+      - humidity
+
+
+
    +
  • mac (Required): The MAC address of your sensor. You can find this be running hcitool lescan from command line.
  • +
  • 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/components/sensor.skybell/index.html b/components/sensor.skybell/index.html new file mode 100644 index 0000000000..27df288253 --- /dev/null +++ b/components/sensor.skybell/index.html @@ -0,0 +1,601 @@ + + + + + + + + + Skybell Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybell Sensor +

+
+
+

To get your Skybell.com sensors working within Home Assistant, please follow the instructions for the general Skybell component.

+

Once you have enabled the Skybell component, add the following to your configuration.yaml file:

+
# 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/components/sensor.sleepiq/index.html b/components/sensor.sleepiq/index.html new file mode 100644 index 0000000000..610657aed8 --- /dev/null +++ b/components/sensor.sleepiq/index.html @@ -0,0 +1,576 @@ + + + + + + + + + SleepIQ Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SleepIQ Sensor +

+
+
+

To get your SleepIQ sensors working with Home Assistant, follow the instructions for the general SleepIQ component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.sma/index.html b/components/sensor.sma/index.html new file mode 100644 index 0000000000..3421812407 --- /dev/null +++ b/components/sensor.sma/index.html @@ -0,0 +1,233 @@ + + + + + + + + + SMA Solar WebConnect - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SMA Solar WebConnect +

+
+
+

The sma sensor will poll a SMA (US) solar inverter and present the values as sensors (or attributes of sensors) in Home Assistant.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor sma:
+  - platform: sma
+    host: 192.168.88.199
+    password: !secret sma_password
+    sensors:
+      current_consumption: [total_consumption]
+      current_power: 
+      total_yield: 
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the SMA WebConnect module.
  • +
  • password (Required): The password of the SMA WebConnect module.
  • +
  • group (Optional): The user group, which can be either user (the default) or installer.
  • +
  • sensors (Required): A dictionary of sensors that will be added. The value of the dictionary can include sensor names that will be shown as attributes.
  • +
  • custom (Optional): A dictionary of custom sensor key values and units
  • +
+

Sensors configuration:

+

The sensors can be any one of the following:

+
    +
  • current_power
  • +
  • current_consumption
  • +
  • total_power
  • +
  • total_consumption
  • +
+

You can create composite sensors, where the sub-sensors will be attributes of the main sensor, e.g.

+
    sensors:
+      - current_power: [total_power, total_consumption]
+
+
+

The SMA WebConnect module supports a wide variety of sensors, and not all these have been mapped to standard sensors. Custom sensors can be defined by using the custom section of the configuration. You will need: A sensor name (no spaces), the SMA sensor key and the unit

+

Example:

+
   custom:
+      yesterday_consumption: 
+         key: 6400_00543A01
+         unit: kWh
+         factor: 1000
+
+
+

Over time more sensors will be added as standard sensors to the pysma library. Feel free to submit additional sensors on that repository.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.smappee/index.html b/components/sensor.smappee/index.html new file mode 100644 index 0000000000..0d5a69a2b4 --- /dev/null +++ b/components/sensor.smappee/index.html @@ -0,0 +1,575 @@ + + + + + + + + + Smappee Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Smappee Sensor +

+
+
+

Smappee controller for energy monitoring and Comport plug switches.

+

Energy monitor measurements will be automatically added when you connect to the Smappee controller.

+

For more configuration information see the Smappee component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.snmp/index.html b/components/sensor.snmp/index.html new file mode 100644 index 0000000000..8c42585fd4 --- /dev/null +++ b/components/sensor.snmp/index.html @@ -0,0 +1,305 @@ + + + + + + + + + SNMP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SNMP +

+
+
+

The snmp sensor platform displays information available through the Simple Network Management Protocol (SNMP). 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: snmp
+    host: 192.168.1.32
+    baseoid: 1.3.6.1.4.1.2021.10.1.3.1
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your host, eg. 192.168.1.32.
  • +
  • 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.
  • +
  • value_template (Optional): Defines a template 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.
  • +
+

Finding OIDs

+

OIDs may vary on different systems because they are vendor-specific. Beside the device’s manual, the OID Repository 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.

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

Examples

+

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:

+
# 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: '{{((value | int) / 6000) | int}}'
+
+
+

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/components/sensor.sochain/index.html b/components/sensor.sochain/index.html new file mode 100644 index 0000000000..d60a9a7571 --- /dev/null +++ b/components/sensor.sochain/index.html @@ -0,0 +1,226 @@ + + + + + + + + + SoChain - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SoChain +

+
+
+

The SoChain sensor platform displays supported cryptocurrency wallet balances from SoChain.

+

To add the SoChain sensor to your installation, specify a network and address to watch in the configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: sochain
+    network: LTC
+    address: 'M9m37h3dVkLDS13wYK7vcs7ck6MMMX6yhK'
+
+
+
+

Configuration Variables

+
+
network
+
+

(string)(Required)The network or blockchain of the cryptocurrency to watch.

+
+
address
+
+

(string)(Required)Cryptocurrency wallet address to watch.

+
+
name
+
+

(string)(Optional)The name of the sensor used in the frontend. (recommended)

+

Default value: Crypto Balance

+
+
+
+

Supported networks (which can also be found here) are:

+
    +
  • BTC
  • +
  • LTC
  • +
  • DOGE
  • +
  • DASH
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.sonarr/index.html b/components/sensor.sonarr/index.html new file mode 100644 index 0000000000..6d8804ebb1 --- /dev/null +++ b/components/sensor.sonarr/index.html @@ -0,0 +1,656 @@ + + + + + + + + + Sonarr Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sonarr Sensor +

+
+
+

This sonarr sensor platform pulls data from a given Sonarr instance.

+

To use your Sonarr sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: sonarr
+    api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your Sonarr API key, found in Settings > General in the Sonarr Web UI.
  • +
  • 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.
    • +
    +
  • +
  • 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.
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Get Episodes airing in next 2 days

+
# Example configuration.yml entry
+sensor:
+  - platform: sonarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - upcoming
+    days: 2
+
+
+

Enable SSL

+

SSL may run on a different port than the default (8989). The SSL port can be bound to any port in Sonarr, so it should be set in the config here (unless it is changed to 8989). See the Sonarr site for details on SSL in Sonarr.

+
# Example configuration.yml entry
+sensor:
+  - platform: sonarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    port: 9898
+    monitored_conditions:
+      - upcoming
+    days: 2
+    ssl: true
+
+
+

Get disk space for all storage locations

+
# Example configuration.yml entry
+sensor:
+  - platform: sonarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - diskspace
+
+
+

Get disk space for listed storage locations

+

The storage locations Sonarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor.

+
# Example configuration.yml entry
+sensor:
+  - platform: sonarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - diskspace
+    include_paths:
+      - /tank/plex
+
+
+

Get disk space in different unit

+

The Sonarr API returns available space in bytes, but this sensor will default to reporting it in GB to make the number more manageable. This can be overridden if your storage needs require a different unit. All units from bytes (B) to yottabytes (YB) are supported.

+

This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.

+
# Example configuration.yml entry
+sensor:
+  - platform: sonarr
+    api_key: YOUR_API_KEY
+    host: 192.168.1.8
+    monitored_conditions:
+      - diskspace
+    unit: TB
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.speedtest/index.html b/components/sensor.speedtest/index.html new file mode 100644 index 0000000000..9338014d29 --- /dev/null +++ b/components/sensor.speedtest/index.html @@ -0,0 +1,330 @@ + + + + + + + + + Speedtest.net - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Speedtest.net +

+
+
+

The speedtest sensor component uses the Speedtest.net web service to measure network bandwidth performance.

+

By default, it will run every hour. The user can change the update frequency in the configuration by defining the minute, hour, and day for a speedtest to run. For the server_id check the list of available servers.

+

To add a Speedtest.net sensor to your installation, add the following to your configuration.yaml file:

+

Once per hour, on the hour (default):

+
# Example configuration.yaml entry
+sensor:
+  - platform: speedtest
+    monitored_conditions:
+      - ping
+      - download
+      - upload
+
+
+

Configuration variables:

+
    +
  • monitored_conditions array (Required): Sensors to display in the frontend. +
      +
    • ping: Reaction time in ms of your connection (how fast you get a response after you’ve sent out a request).
    • +
    • download: Download speed in Mbps.
    • +
    • upload: Upload speed in Mbps.
    • +
    +
  • +
  • server_id (Optional): Specify the speedtest server to perform test against.
  • +
  • minute (Optional): Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. Default is 0.
  • +
  • hour (Optional): Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. Default is None.
  • +
  • day (Optional): Specify the day(s) of the month to schedule the speedtest. Use a list for multiple entries. Default is None.
  • +
  • manual (Optional): True or False to turn manual mode on or off. Manual mode will disable scheduled speedtests.
  • +
+

This component uses speedtest-cli to gather network performance data from Speedtest.net. Please be aware of the potential inconsistencies that this component may display.

+

When Home Assistant first starts up, the values of the speedtest will show as Unknown. You can use the service sensor.update_speedtest to run a manual speedtest and populate the data or just wait for the next regularly scheduled test. You can turn on manual mode to disable the scheduled speedtests.

+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Run periodically

+

Every half hour of every day:

+
# Example configuration.yaml entry
+sensor:
+  - platform: speedtest
+    minute:
+      - 0
+      - 30
+    monitored_conditions:
+      - ping
+      - download
+      - upload
+
+
+

Run at a specific time

+

Everyday at 12:30AM, 6:30AM, 12:30PM, 6:30PM:

+
# Example configuration.yaml entry
+sensor:
+  - platform: speedtest
+    minute: 30
+    hour:
+      - 0
+      - 6
+      - 12
+      - 18
+    monitored_conditions:
+      - ping
+      - download
+      - upload
+
+
+

Using as a trigger in an automation

+
# Example configuration.yaml entry
+automation:
+ - alias: 'Internet Speed Glow Connect Great' 
+    trigger: 
+      platform: template
+      value_template: '{{ states.sensor.speedtest_download.state|float > 10}}'
+    action:      
+      service: shell_command.green
+  - alias: 'Internet Speed Glow Connect Poor' 
+    trigger: 
+      platform: template
+      value_template: '{{ states.sensor.speedtest_download.state| float < 10 }}' 
+    action:      
+      service: shell_command.red
+
+
+

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.
  • +
  • If ran frequently, this component has the capability of using a very large amount of data. Frequent updates should be avoided on bandwidth capped connections.
  • +
  • While running, network usage is fully utilized. This may have a negative affect on other devices in use the network such as gaming consoles or streaming boxes.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.spotcrime/index.html b/components/sensor.spotcrime/index.html new file mode 100644 index 0000000000..77b77e2f9c --- /dev/null +++ b/components/sensor.spotcrime/index.html @@ -0,0 +1,600 @@ + + + + + + + + + Spot Crime - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Spot Crime +

+
+
+

The spotcrime sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to Spot Crime. Your regional emergency services may or may not report data. The sensor defaults to counting incidents within one day, but can be customized via configuration.yaml.

+

Configuration

+

To enable this sensor, add the following lines to your configuration.yaml. Your radius should be of sufficient size to capture incidents in your area. 0.01 = 1 mile.

+
sensor:
+  - platform: spotcrime
+    name: <any name>
+    radius: <your radius>
+    days: <your days>
+
+
+

Configuration options for the Crime Reports Sensor:

+
    +
  • name (Required): Name the sensor whatever you want.
  • +
  • radius (Required): Radius in miles.
  • +
  • days (Optional): Defaults to 1 day.
  • +
  • latitude (Optional): Defaults to your home zone latitude.
  • +
  • longitude (Optional): Defaults to your home zone longitude.
  • +
  • include (Optional): List of incident types to include.
  • +
  • exclude (Optional): List of incident types to exclude.
  • +
+

Notes

+

Incident Types

+

You can explicitly include or exclude incident types. Specifying includes restricts the incidents to those types. Specifying excludes will return all incident types except those specified.

+

These incident types are available:

+
    +
  • Arrest
  • +
  • Arson
  • +
  • Assault
  • +
  • Burglary
  • +
  • Robbery
  • +
  • Shooting
  • +
  • Theft
  • +
  • Vandalism
  • +
  • Other
  • +
+

Events

+

The crimealerts sensor fires a crimealerts_incident event when a new incident is detected, including the type, time, and location of the incident.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.sql/index.html b/components/sensor.sql/index.html new file mode 100644 index 0000000000..225f728bbc --- /dev/null +++ b/components/sensor.sql/index.html @@ -0,0 +1,637 @@ + + + + + + + + + SQL Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SQL Sensor +

+
+
+

The SQL sensor platform enables you to use values from an SQL database supported by the sqlalchemy library, to populate a sensor state (and attributes). +This can be used to present statistics about Home Assistant sensors if used with the recorder component database. It can also be used with an external data source.

+

To configure this sensor, you need to define the sensor connection variables and a list of queries to your configuration.yaml file. A sensor will be created for each query:

+

To enable it, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry to monitor hass database size in MySQL
+sensor:
+  - platform: sql
+    db_url: mysql://user:password@localhost/hass
+    queries:
+      - name: HASS DB size
+        query: 'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;'
+        column: 'value'
+        unit_of_measurement: kB
+
+
+
+

Configuration Variables

+
+
db_url
+
+

(string)(Optional)The URL which points to your database. See supported engines.

+

Default value: Defaults to the recorder db_url.

+
+
queries
+
+

(map)(Required)List of your queries.

+
+
+
+
name
+
+

(string)(Required)The name of the sensor.

+
+
query
+
+

(string)(Required)An SQL QUERY string, should return 1 result at most.

+
+
column
+
+

(string)(Required)The field name to select.

+
+
unit_of_measurement
+
+

(string)(Optional)Defines the units of measurement of the sensor, if any.

+
+
value_template
+
+

(template)(Optional)Defines a template to extract a value from the payload.

+
+
+
+
+
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Current state of an entity

+

This example shows the previously recorded state of sensor abc123.

+
SELECT * FROM states WHERE entity_id = 'sensor.abc123' ORDER BY id DESC LIMIT 2
+
+
+

Note that the SQL sensor state corresponds to the last row of the SQL resultset.

+

Previous state of an entity

+

This example only works with binary_sensors:

+
SELECT * FROM states WHERE entity_id='binary_sensor.xyz789' GROUP BY state ORDER BY last_changed DESC LIMIT 1
+
+
+

Database size in Postgres

+
- platform: sql
+    db_url: postgresql://user:password@host/dbname
+    queries:
+    - name: db_size
+      query: "SELECT (pg_database_size('dsmrreader')/1024/1024) as db_size;"
+      column: "db_size"
+      unit_of_measurement: MB 
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.startca/index.html b/components/sensor.startca/index.html new file mode 100644 index 0000000000..c439cc8d42 --- /dev/null +++ b/components/sensor.startca/index.html @@ -0,0 +1,653 @@ + + + + + + + + + Start.ca - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Start.ca +

+
+
+

Integrate your Start.ca account information into Home Assistant.

+

You can get your API key from:

+

Start.ca Usage API

+

To use your Start.ca sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: startca
+    api_key: API_KEY
+    total_bandwidth: 400
+    monitored_variables:
+      - usage
+      - usage_gb
+      - limit
+      - used_download
+      - used_upload
+      - used_total
+      - grace_download
+      - grace_upload
+      - grace_total
+      - total_download
+      - total_upload
+      - used_remaining
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)The Start.ca API key to access the service.

+
+
total_bandwidth
+
+

(string)(Required)Your bandwidth limit in gigabytes. Set to 0 for unlimited plans without a cap.

+
+
monitored_conditions
+
+

(list)(Required)Conditions to display in the frontend.

+
+
+
+
usage
+
+

Bandwidth usage (percentage).

+
+
usage_gb
+
+

Bandwidth usage (gigabytes).

+
+
limit
+
+

Monthly bandwidth limit (gigabytes).

+
+
used_download
+
+

Bandwidth used by download outside the grace period (gigabytes).

+
+
used_upload
+
+

Bandwidth used by upload outside the grace period (gigabytes).

+
+
used_total
+
+

Total bandwidth (download and upload sum calculation) used outside the grace period (gigabytes).

+
+
grace_download
+
+

Bandwidth used by download during the grace period (gigabytes).

+
+
grace_upload
+
+

Bandwidth used by upload during the grace period (gigabytes).

+
+
grace_total
+
+

Total bandwidth (download and upload sum calculation) used during the unlimited period (gigabytes).

+
+
total_download
+
+

Total bandwidth upload (Grace + Used) (gigabytes).

+
+
used_remaining
+
+

Remaining bandwidth calucated from used and supplied total bandwidth (gigabytes).

+
+
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.statistics/index.html b/components/sensor.statistics/index.html new file mode 100644 index 0000000000..1255a5c751 --- /dev/null +++ b/components/sensor.statistics/index.html @@ -0,0 +1,591 @@ + + + + + + + + + Statistics Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Statistics Sensor +

+
+
+

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.

+

If you are running the 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 component, this will automatically also start the recorder 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:

+
# 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:

+
    +
  • entity_id (Required): The entity to monitor. Only sensors and 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/components/sensor.steam_online/index.html b/components/sensor.steam_online/index.html new file mode 100644 index 0000000000..1ea2a06b52 --- /dev/null +++ b/components/sensor.steam_online/index.html @@ -0,0 +1,200 @@ + + + + + + + + + Steam - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Steam +

+
+
+

The Steam component will allow you to track the online status of public Steam accounts.

+

You need a free API key to use the component

+

To find an account’s 64-bit SteamID on profiles without a custom URL you can check the URL of the profile page, the long string of numbers at the end is the 64-bit SteamID. If the profile has a custom URL you will have to copy the URL into STEAMID I/O to find the 64-bit SteamID.

+

To use Steam in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: steam_online
+    api_key: YOUR_API_KEY
+    accounts:
+      - account1
+      - account2
+
+
+

Configuration variables:

+ +

If you want to add the accounts to a group for example you will have to use:

+
# Example configuration.yaml entry
+group:
+  steam:
+    name: Steam
+    entities:
+      - sensor.steam_account1
+      - sensor.steam_account2
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.supervisord/index.html b/components/sensor.supervisord/index.html new file mode 100644 index 0000000000..362685aafd --- /dev/null +++ b/components/sensor.supervisord/index.html @@ -0,0 +1,263 @@ + + + + + + + + + Supervisord - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Supervisord +

+
+
+

The supervisord platform allows you to track the states of Supervisord.

+

It required that you enable the HTTP feature in the /etc/supervisord.conf configuration file.

+
[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 an iFrame panel.

+

+ +

+

To use this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: supervisord
+
+
+

Configuration variables:

+
    +
  • url (Optional): The URL to track. Default to http://localhost:9001/RPC2.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.swiss_hydrological_data/index.html b/components/sensor.swiss_hydrological_data/index.html new file mode 100644 index 0000000000..4056d6fd23 --- /dev/null +++ b/components/sensor.swiss_hydrological_data/index.html @@ -0,0 +1,256 @@ + + + + + + + + + Swiss Hydrological Data - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Swiss Hydrological Data +

+
+
+

+ This sensor doesn’t work at the moment due to changed by the Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie) to access the data. +

+

The swiss_hydrological_data sensor will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland.

+

The station overview contains a list of all available measuring points and will help to determine the ID of station which is needed for the configuration.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: swiss_hydrological_data
+  station: STATION_ID
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name to use in the frontend.
  • +
  • station (Required): The ID of the measurement point.
  • +
+

The hydrological measurings are coming from the Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie) and are updated almost in real-time.

+

This sensor contains additional information which an easily accessed by a template sensor.

+
# Example configuration.yaml entry
+sensor:
+  platform: template
+  sensors:
+    discharge:
+      value_template: '{{ states.sensor.aare.attributes.Discharge }}'
+      friendly_name: 'Discharge'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.swiss_public_transport/index.html b/components/sensor.swiss_public_transport/index.html new file mode 100644 index 0000000000..057bbd78c9 --- /dev/null +++ b/components/sensor.swiss_public_transport/index.html @@ -0,0 +1,219 @@ + + + + + + + + + Swiss Public Transport - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Swiss Public Transport +

+
+
+

The swiss_public_transport sensor will give you the next three departure times from a given location to another one in Switzerland.

+

The Swiss public transport API only allows 1000 requests per 24 hours.

+

The Stationboard website can help to determine the exact name of the start and the end station.

+

Then add the data to your configuration.yaml file as shown in the example:

+
# Example configuration.yaml entry
+sensor:
+  - platform: swiss_public_transport
+    from: STATION_ID
+    to: STATION_ID
+
+
+

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.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.synologydsm/index.html b/components/sensor.synologydsm/index.html new file mode 100644 index 0000000000..992b787bea --- /dev/null +++ b/components/sensor.synologydsm/index.html @@ -0,0 +1,309 @@ + + + + + + + + + SynologyDSM Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SynologyDSM Sensor +

+
+
+

This synologydsm sensor allows getting various statistics from your Synology NAS.

+

To use the synologydsm sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+sensor:
+  - platform: synologydsm
+    host: IP_ADDRESS_OF_SYNOLOGY_NAS
+    username: USERNAME
+    password: PASSWORD
+    monitored_conditions:
+      - cpu_total_load
+      - memory_real_usage
+      - network_up
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of the Synology NAS to monitor
  • +
  • port (Optional): The port number on which the Synology NAS is reachable. Defaults to 5000.
  • +
  • username (Required): An user to connect to the Synology NAS (a separate account is advised, see the Separate User Configuration section below for details).
  • +
  • password (Required): The password of the user to connect to the Synology NAS.
  • +
  • volumes (Optional): Array of volumes to monitor. Defaults to all volumes.
  • +
  • disks (Optional): Array of disks to monitor. Defaults to all disks.
  • +
  • monitored_conditions (Required): Defines a template to extract a value from the payload. +
      +
    • cpu_other_load: Displays unspecified load in percentage.
    • +
    • cpu_user_load: Displays user load in percentage.
    • +
    • cpu_system_load: Displays system load in percentage.
    • +
    • cpu_total_load: Displays combined load in percentage.
    • +
    • cpu_1min_load: Displays maximum load in past minute.
    • +
    • cpu_5min_load: Displays maximum load in past 5 minutes.
    • +
    • cpu_15min_load: Displays maximum load in past 15 minutes.
    • +
    • memory_real_usage: Displays percentage of memory used.
    • +
    • memory_size: Displays total size of memory in MB.
    • +
    • memory_cached: Displays total size of cache in MB.
    • +
    • memory_available_swap: Displays total size of available swap in MB.
    • +
    • memory_available_real: Displays total size of memory used (based on real memory) in MB.
    • +
    • memory_total_swap: Displays total size of actual memory in MB.
    • +
    • memory_total_real: Displays total size of real memory in MB.
    • +
    • network_up: Displays total up speed of network interfaces (combines all interfaces).
    • +
    • network_down: Displays total down speed of network interfaces (combines all interfaces).
    • +
    • disk_name: Displays the name of the hard disk (creates a new entry for each disk).
    • +
    • disk_device: Displays the path of the hard disk (creates a new entry for each disk).
    • +
    • disk_smart_status: Displays the S.M.A.R.T status of the hard disk (creates a new entry for each disk).
    • +
    • disk_status: Displays the status of the hard disk (creates a new entry for each disk).
    • +
    • disk_exceed_bad_sector_thr: Displays true / false to indicate if the hard disk exceeded the maximum bad sector threshold (creates a new entry for each disk).
    • +
    • disk_below_remain_life_thr: Displays true / false to indicate if the hard disk dropped below the remain life threshold (creates a new entry for each disk).
    • +
    • disk_temp: Displays the temperature of the hard disk (creates a new entry for each disk, uses the unit_system to display in C or F).
    • +
    • volume_status: Displays the status of the volume (creates a new entry for each volume).
    • +
    • volume_device_type: Displays the volume type (RAID, etc) (creates a new entry for each volume).
    • +
    • volume_size_total: Displays the total size of the volume in GB’s (creates a new entry for each volume).
    • +
    • volume_size_used: Displays the used space on this volume in GB’s (creates a new entry for each volume).
    • +
    • volume_percentage_used: Displays the percentage used for this volume in GB’s (creates a new entry for each volume).
    • +
    • 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).
    • +
    +
  • +
+

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

+

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.

+

When creating the user it is possible to deny access to all locations and applications. By doing this the user will not be able to login to the web interface or view any of the files on the Synology NAS. It is still able to read the utilization and storage information using the API.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.systemmonitor/index.html b/components/sensor.systemmonitor/index.html new file mode 100644 index 0000000000..d6c0fdacd0 --- /dev/null +++ b/components/sensor.systemmonitor/index.html @@ -0,0 +1,384 @@ + + + + + + + + + System Monitor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ System Monitor +

+
+
+

The systemmonitor sensor platform allows you to monitor disk usage, memory usage, CPU usage, and running processes. This platform has superseded the process component which is now considered deprecated.

+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: systemmonitor
+    resources:
+      - type: disk_use_percent
+        arg: /home
+      - type: memory_free
+
+
+

Configuration variables:

+
    +
  • resources array (Required): Contains all entries to display. +
      +
    • type (Required): The type of the information to display, please check the table below for details.
    • +
    • arg (Optional): Argument to use, please check the table below for details.
    • +
    +
  • +
+

The table contains types and their argument to use in your configuration.yaml file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Type (type:)Argument (arg:)
disk_use_percentPath, eg. /
disk_usePath, eg. /
disk_freePath, eg. /
memory_use_percent 
memory_use 
memory_free 
swap_use_percent 
swap_use 
swap_free 
load_1m 
load_5m 
load_15m 
network_inInterface, eg. eth0
network_outInterface, eg. eth0
packets_inInterface, eg. eth0
packets_outInterface, eg. eth0
ipv4_addressInterface, eg. eth0
ipv6_addressInterface, eg. eth0
processor_use 
processBinary, e.g. octave-cli
last_boot 
since_last_boot 
+

Linux specific

+

To retrieve all available network interfaces on a Linux System, execute the ifconfig command.

+
$ ifconfig -a | sed 's/[ \t].*//;/^$/d'
+
+
+

Windows specific

+

When running this platform on Microsoft Windows, Typically, the default interface would be called Local Area Connection, so your configuration might look like:

+
sensor:
+  - platform: systemmonitor
+    resources:
+      - type: network_in
+        arg: 'Local Area Connection'
+
+
+

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:

+
Wireless LAN adapter Wireless Network Connection:
+
+   Media State . . . . . . . . . . . : Media disconnected
+   Connection-specific DNS Suffix  . :
+
+
+

Where the name is Wireless Network Connection

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.sytadin/index.html b/components/sensor.sytadin/index.html new file mode 100644 index 0000000000..10ba390798 --- /dev/null +++ b/components/sensor.sytadin/index.html @@ -0,0 +1,583 @@ + + + + + + + + + Sytadin Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sytadin Sensor +

+
+
+

The sytadin sensor platform allows you to monitor traffic details from Sytadin.

+

To add Sytadin to your installation, add the following to your configuration.yaml file:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tado/index.html b/components/sensor.tado/index.html new file mode 100644 index 0000000000..d8f98d068b --- /dev/null +++ b/components/sensor.tado/index.html @@ -0,0 +1,580 @@ + + + + + + + + + Tado Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tado Sensor +

+
+
+

The tado sensor platform allow you to monitor your tado climate devices.

+

The requirement is that you have set up the tado component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tahoma/index.html b/components/sensor.tahoma/index.html new file mode 100644 index 0000000000..e24575a917 --- /dev/null +++ b/components/sensor.tahoma/index.html @@ -0,0 +1,577 @@ + + + + + + + + + Tahoma Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tahoma Sensor +

+
+
+

The tahoma sensor platform lets you see sensors added to your Tahoma Box in Home Assistant.

+

Sensors will be added automatically. Please refer to the component configuration on how to setup Tahoma.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tank_utility/index.html b/components/sensor.tank_utility/index.html new file mode 100644 index 0000000000..a5f2209d8a --- /dev/null +++ b/components/sensor.tank_utility/index.html @@ -0,0 +1,586 @@ + + + + + + + + + Tank Utility Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tank Utility Sensor +

+
+
+

Add Tank Utility propane tank monitors to Home Assistant.

+
# Example configuration.yaml entry
+sensor:
+  - platform: tank_utility
+    email: EMAIL
+    password: PASSWORD
+    devices:
+      - 000000000000000000000000
+
+
+

Configuration variables:

+ +

Authentication:

+

Authentication for the Tank Utility API is performed with the same email and password credentials used at +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. +The device item value is the last segment of the URL path, e.g., the URL +https://app.tankutility.com/#/reports/000000000000000000000000 +would indicate 000000000000000000000000 as a device value.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tcp/index.html b/components/sensor.tcp/index.html new file mode 100644 index 0000000000..18aabe4ff2 --- /dev/null +++ b/components/sensor.tcp/index.html @@ -0,0 +1,641 @@ + + + + + + + + + TCP Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TCP Sensor +

+
+
+

The TCP component allows the integration of some services for which a specific Home Assistant component does not exist. If the service communicates over a TCP socket with a simple request/reply mechanism then the chances are that this component will allow integration with it.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: tcp
+    host: IP_ADDRESS
+    port: PORT
+    payload: PAYLOAD
+
+
+

Configuration options for the a TCP Sensor:

+
    +
  • name (Required): The name you’d like to give the sensor in Home Assistant.
  • +
  • host (Required): The hostname/IP address to connect to.
  • +
  • port (Required): The port to connect to the host on.
  • +
  • payload (Required): What to send to the host in order to get the response we’re interested in.
  • +
  • timeout (Optional): How long in seconds to wait for a response from the service before giving up and disconnecting. Defaults to 10
  • +
  • value_template (Optional): Defines a template to extract the value. By default it’s assumed that the entire response is the value.
  • +
  • unit_of_measurement (Optional): The unit of measurement to use for the value.
  • +
  • buffer_size (Optional): The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default. Defaults to 1024.
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

EBUSd

+

The EBUSd service enables connection to an EBUS serial bus on some home heating/cooling systems. Using this service it is possible to extract various metrics which may be useful to have within Home Assistant. In order to use EBUSd, you connect to it using a TCP socket and send it a command. The service will respond with the value it has received from EBUS. On the command line, this would look something like:

+
$ echo "r WaterPressure" | nc 10.0.0.127 8888
+0.903;ok
+
+
+

You will notice that the output from the service is not just a single value (it contains “;ok” as well). To grab the value we’re interested in, we can use a Jinja2 template. The response received is injected into the template as the value variable. To use this value within Home Assistant, use the following configuration:

+
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: "{{ value.split(';')[0] }}"
+    unit_of_measurement: Bar
+
+
+

hddtemp

+

The tool hddtemp collects the temperature of your hard disks.

+
$ hddtemp
+/dev/sda: SAMSUNG MZMTE256HMHP-000L1: 39°C
+
+
+

With hddtemp -d you can run the tool in TCP/IP daemon mode on port 7634 which enables you to get the data across the network.

+
$ telnet localhost 7634
+Trying 127.0.0.1...
+Connected to localhost.
+Escape character is '^]'.
+|/dev/sda|SAMSUNG MZMTE256HMHP-000L1|38|C|Connection closed by foreign host.
+
+
+

The entry for the configuration.yaml file for a hddtemp sensor could look like the example below.

+
sensor:
+# Example configuration.yaml entry
+  - platform: tcp
+    name: HDD temperature
+    host: 127.0.0.1
+    port: 7634
+    timeout: 5
+    payload: "\n"
+    value_template: "{{ value.split('|')[3] }}"
+    unit_of_measurement: "°C"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ted5000/index.html b/components/sensor.ted5000/index.html new file mode 100644 index 0000000000..b6829186b0 --- /dev/null +++ b/components/sensor.ted5000/index.html @@ -0,0 +1,583 @@ + + + + + + + + + TED5000 electricity monitoring - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TED5000 electricity monitoring +

+
+
+

The ted 5000 monitors electricity consumption/production by connecting to the TED gateway, itself connected to one or several Measuring Transmitting Units (MTU). The platform creates up to two sensors per MTU, one for Wattage the other for Voltage.

+

If you want to enable the ted5000 sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: ted5000
+    host: 192.168.1.100
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your ted gateway.
  • +
  • port (Optional): The port of your ted gateway. Defaults to 80.
  • +
  • name (Optional): Name of the ted gateway. Defaults to ted.
  • +
+

For each plugged MTU, using an index starting at 1, the platform creates 2 sensors:

+
sensor.<name>_mtu<MTU id>_power
+sensor.<name>_mtu<MTU id>_voltage
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.teksavvy/index.html b/components/sensor.teksavvy/index.html new file mode 100644 index 0000000000..33052457a8 --- /dev/null +++ b/components/sensor.teksavvy/index.html @@ -0,0 +1,646 @@ + + + + + + + + + TekSavvy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TekSavvy +

+
+
+

Integrate your TekSavvy account information into Home Assistant.

+

You can get your API key from TekSavvy My Account.

+

To use your TekSavvy sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: teksavvy
+    api_key: API_KEY
+    total_bandwidth: 400
+    monitored_variables:
+      - usage
+      - usage_gb
+      - limit
+      - onpeak_download
+      - onpeak_upload
+      - onpeak_total
+      - offpeak_download
+      - offpeak_upload
+      - offpeak_total
+      - onpeak_remaining
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)The TekSavvy API key to access the service.

+
+
total_bandwidth
+
+

(string)(Required)Your bandwidth limit in gigabytes. Set to 0 for unlimited plans without a cap.

+
+
monitored_conditions
+
+

(list)(Required)Conditions to display in the frontend.

+
+
+
+
usage
+
+

Bandwidth usage (percentage).

+
+
usage_gb
+
+

Bandwidth usage (gigabytes).

+
+
limit
+
+

Monthly bandwidth limit (gigabytes).

+
+
onpeak_download
+
+

Bandwidth used by download outside the unmetered period (gigabytes).

+
+
onpeak_upload
+
+

Bandwidth used by upload outside the unmetered period (gigabytes).

+
+
onpeak_total
+
+

Total bandwidth used outside the unmetered period (gigabytes).

+
+
offpeak_download
+
+

Bandwidth used by download during the unlimited period (gigabytes).

+
+
offpeak_upload
+
+

Bandwidth used by upload during the unlimited period (gigabytes).

+
+
offpeak_total
+
+

Total bandwidth used during the unlimited period (gigabytes).

+
+
onpeak_remaining
+
+

Remaining bandwidth (gigabytes).

+
+
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tellduslive/index.html b/components/sensor.tellduslive/index.html new file mode 100644 index 0000000000..9049eb7c43 --- /dev/null +++ b/components/sensor.tellduslive/index.html @@ -0,0 +1,576 @@ + + + + + + + + + Telldus Live sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telldus Live sensor +

+
+
+

Integrates Telldus Live sensors into Home Assistant. See the main component for configuration instructions.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tellstick/index.html b/components/sensor.tellstick/index.html new file mode 100644 index 0000000000..ad70117d26 --- /dev/null +++ b/components/sensor.tellstick/index.html @@ -0,0 +1,605 @@ + + + + + + + + + TellStick Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TellStick Sensor +

+
+
+

The tellstick sensor platform allows you to get current meteorological data from a TellStick device.

+

To use your TellStick device, you first have to set up your Tellstick hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: tellstick
+
+
+

Configuration variables:

+
    +
  • ID: Name (Optional): Entry for a sensor with the name for it and its ID.
  • +
  • only_named (Optional): Only show the named sensors. Set to True to hide sensors.
  • +
  • temperature_scale (Optional): The scale of the temperature value.
  • +
  • datatype_mask (Optional): Mask to determine which sensor values to show based on. Please check the TellCore tellcore.constants documentation for details.
  • +
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Full configuration

+
# Example configuration.yaml entry
+sensor:
+  - platform: tellstick
+    135: Outside
+    21: Inside
+    only_named: True
+    temperature_scale: "°C"
+    datatype_mask: 1
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.temper/index.html b/components/sensor.temper/index.html new file mode 100644 index 0000000000..dd4255a7e1 --- /dev/null +++ b/components/sensor.temper/index.html @@ -0,0 +1,597 @@ + + + + + + + + + TEMPer Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TEMPer Sensor +

+
+
+

This temper sensor platform allows you to get the current temperature from a TEMPer device.

+

To use your TEMPer sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: temper
+
+
+
+

Configuration Variables

+
+
offset
+
+

(int)(Optional)The offset to fix reported vales.

+

Default value: o

+
+
scale
+
+

(int)(Optional)The scale for the sensor.

+

Default value: 1

+
+
name
+
+

(string)(Optional)The name to use when displaying this switch.

+

Default value: myStrom Switch

+
+
+
+

Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. +The calculation follows the formula scale * sensor value + offset.

+

The TEMPer sensors can only be accessed as root by default. To fix the USB permissions on your system create the file /etc/udev/rules.d/99-tempsensor.rules and add the following line to it:

+
SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="7401", MODE="666"
+
+
+

After that re-plug the device and restart Home Assistant.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.template/index.html b/components/sensor.template/index.html new file mode 100644 index 0000000000..ca297da65d --- /dev/null +++ b/components/sensor.template/index.html @@ -0,0 +1,811 @@ + + + + + + + + + Template Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Template Sensor +

+
+
+

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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: template
+    sensors:
+      solar_angle:
+        friendly_name: "Sun angle"
+        unit_of_measurement: 'degrees'
+        value_template: "{{ states.sun.sun.attributes.elevation }}"
+
+      sunrise:
+        value_template: "{{ states.sun.sun.attributes.next_rising }}"
+
+
+
+

Configuration Variables

+
+
sensors
+
+

(map)(Required)List of your sensors.

+
+
+
+
friendly_name
+
+

(string)(Optional)Name to use in the frontend.

+
+
friendly_name_template
+
+

(template)(Optional)Defines a template for the name to be used in the frontend (this overrides friendly_name).

+
+
entity_id
+
+

(string | list)(Optional)A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities.

+
+
unit_of_measurement
+
+

(string)(Optional)Defines the units of measurement of the sensor, if any.

+
+
value_template
+
+

(template)(Required)Defines a template to get the state of the sensor.

+
+
icon_template
+
+

(template)(Optional)Defines a template for the icon of the sensor.

+
+
entity_picture_template
+
+

(template)(Optional)Defines a template for the entity picture of the sensor.

+
+
+
+
+
+

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. To avoid this (and the resulting +error messages in your log file), you can use is_state() function in your template. +For example, you would replace +{{ states.switch.source.state == 'on' }} +with this equivalent that returns true/false and never gives an unknown +result: +{{ is_state('switch.source', 'on') }}

+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Sun Angle

+

This example shows the sun angle in the frontend.

+
sensor:
+  - platform: template
+    sensors:
+      solar_angle:
+        friendly_name: "Sun Angle"
+        unit_of_measurement: '°'
+        value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}"
+
+
+

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 as +a simple example:

+
sensor:
+  - platform: template
+    sensors:
+      sun_state:
+        friendly_name: "Sun State"
+        value_template: >-
+          {% if is_state('sun.sun', 'above_horizon') %}
+            up
+          {% else %}
+            down
+          {% endif %}
+
+
+

Processes monitored by the System Monitor sensor +show on or off if they are running or not. This example shows how the +output of a monitored glances process can be renamed.

+
sensor:
+  - platform: template
+    sensors:
+      glances:
+        friendly_name: "Glances"
+        value_template: >-
+          {% if is_state('sensor.process_glances', 'on') %}
+            running
+          {% else %}
+            not running
+          {% endif %}
+
+
+

The Template Binary Sensor is the one in +similar cases if you prefer to see an icon instead of text.

+

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.

+
sensor:
+  - platform: template
+    sensors:
+      kettle:
+        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:
+        ...
+
+
+

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.

+
sensor:
+  - platform: template
+    sensors:
+      transmission_down_speed_kbps:
+        friendly_name: "Transmission Down Speed"
+        unit_of_measurement: 'kB/s'
+        value_template: "{{ states('sensor.transmission_down_speed')|float * 1024 }}"
+
+      transmission_up_speed_kbps:
+        friendly_name: "Transmission Up Speed"
+        unit_of_measurement: 'kB/s'
+        value_template: "{{ states('sensor.transmission_up_speed')|float * 1024 }}"
+
+
+

Change The Icon

+

This example shows how to change the icon based on the day/night cycle.

+
sensor:
+  - platform: template
+    sensors:
+      day_night:
+        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 %}
+
+
+

Change The Entity Picture

+

This example shows how to change the entity picture based on the day/night cycle.

+
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 %}
+
+
+

Change the Friendly Name Used in the Frontend

+

This example shows how to change the friendly_name based on a date. +Explanation: we add a multiple of 86400 seconds (= 1 day) to the current unix timestamp to get a future date.

+
sensor:
+  - platform: template
+    sensors:
+      forecast_1_day_ahead:
+        friendly_name_template: >-
+          {%- set date = as_timestamp(now()) + (1 * 86400 ) -%}
+          {{ date|timestamp_custom("Tomorrow (%-m/%-d)") }}
+        value_template: "{{ sensor.darksky_weather_forecast_1 }}"
+      forecast_2_days_ahead:
+        friendly_name_template: >-
+          {%- set date = as_timestamp(now()) + (2 * 86400 ) -%}
+          {{ date|timestamp_custom("%A (%-m/%-d)") }}
+        value_template: "{{ sensor.darksky_weather_forecast_2 }}"
+
+
+

This example shows how to change the friendly_name based on a state.

+
sensor:
+  - platform: template
+    sensors:
+      net_power:
+        friendly_name_template: >-
+          {% if states('sensor.power_consumption')|float < 0 %}
+            Power Consumption
+          {% else %}
+            Power Production
+          {% end %}
+        value_template: "{{ states('sensor.power_consumption') }}"
+        unit_of_measurement: 'kW'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tesla/index.html b/components/sensor.tesla/index.html new file mode 100644 index 0000000000..59d16086d0 --- /dev/null +++ b/components/sensor.tesla/index.html @@ -0,0 +1,590 @@ + + + + + + + + + Tesla Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla Sensor +

+
+
+

The Tesla platform allows you to get data from your Tesla 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 documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.thethingsnetwork/index.html b/components/sensor.thethingsnetwork/index.html new file mode 100644 index 0000000000..a3bedfa80d --- /dev/null +++ b/components/sensor.thethingsnetwork/index.html @@ -0,0 +1,623 @@ + + + + + + + + + The Things Network Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ The Things Network Sensor +

+
+
+

The thethingsnetwork sensor platform allows you to get data from a The Things Network Storage Integration.

+

This platform requires that the The Things Network component is set up and the The Things Network Storage Integration as well.

+

Visit the The Things Network Console 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: thethingsnetwork
+    device_id: ha-demo
+    values:
+      sensor_value: unit of measurement
+      voltage: V
+
+
+
+

Configuration Variables

+
+
device_id
+
+

(string)(Required)The ID of the device.

+
+
values
+
+

(list)(Required)The sensor values with their unit of measurement

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.thinkingcleaner/index.html b/components/sensor.thinkingcleaner/index.html new file mode 100644 index 0000000000..6e0705de90 --- /dev/null +++ b/components/sensor.thinkingcleaner/index.html @@ -0,0 +1,580 @@ + + + + + + + + + Thinking Cleaner sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Thinking Cleaner sensor +

+
+
+

The thinkingcleaner sensor platform simple displays information about your Thinking Cleaner add-on.

+

To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: thinkingcleaner
+
+
+

This will automatically add sensors for each Thinking Cleaner in your network.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.tibber/index.html b/components/sensor.tibber/index.html new file mode 100644 index 0000000000..5f01ec23c3 --- /dev/null +++ b/components/sensor.tibber/index.html @@ -0,0 +1,581 @@ + + + + + + + + + Tibber - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tibber +

+
+
+

The tibber sensor provides the current electricity price if you are a Tibber customer.

+

To add Tibber to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: tibber
+    access_token: d1007ead2dc84a2b82f0de19451c5fb22112f7ae11d19bf2bedb224a003ff74a
+
+
+
+

Configuration Variables

+
+
access_token
+
+

(string)(Required)Go to developer.tibber.com/ to get your API token.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.time_date/index.html b/components/sensor.time_date/index.html new file mode 100644 index 0000000000..065783fa39 --- /dev/null +++ b/components/sensor.time_date/index.html @@ -0,0 +1,191 @@ + + + + + + + + + Time & Date - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Time & Date +

+
+
+

The time and date (time_date) sensor platform simple displays the time in various formats, the date, or both.

+

To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: time_date
+    display_options:
+      - 'time'
+      - 'date'
+      - 'date_time'
+      - 'time_date'
+      - 'time_utc'
+      - 'beat'
+
+
+
    +
  • display_options array (Required): The option to display. The types date_time and time_date shows the date and the time. The other types just the time or the date. beat shows the Swatch Internet Time.
  • +
+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.toon/index.html b/components/sensor.toon/index.html new file mode 100644 index 0000000000..97054bdfb2 --- /dev/null +++ b/components/sensor.toon/index.html @@ -0,0 +1,580 @@ + + + + + + + + + Toon Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Toon Sensor +

+
+
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.torque/index.html b/components/sensor.torque/index.html new file mode 100644 index 0000000000..bbf2f7322d --- /dev/null +++ b/components/sensor.torque/index.html @@ -0,0 +1,231 @@ + + + + + + + + + Torque (OBD2) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Torque (OBD2) +

+
+
+

The torque platform will allow you to monitor Torque data relayed from a Bluetooth OBD2 stick via the Torque mobile application.

+

Configuration

+

To use Torque sensors with your installation, you must configure both the Torque mobile application and Home Assistant.

+

Torque application

+

In Settings -> Data Logging & Upload:

+

Under the Logging Preferences header:

+
    +
  • Touch Select what to log, activate the menu in the upper right, and select Add PID to log.
  • +
  • Select items of interest.
  • +
+

Under the Realtime Web Upload header:

+
    +
  • 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. It highly recommended that you protect your Home Assistant instance with SSL/TSL.
  • +
  • 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.
  • +
+

Home Assistant

+

Add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: torque
+    email: your_configured@email.com
+
+
+

Configuration variables:

+
    +
  • name (Optional): Vehicle name (your choice).
  • +
  • email (Required): Email address configured in Torque application.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.transmission/index.html b/components/sensor.transmission/index.html new file mode 100644 index 0000000000..5ed8784417 --- /dev/null +++ b/components/sensor.transmission/index.html @@ -0,0 +1,222 @@ + + + + + + + + + Transmission Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Transmission Sensor +

+
+
+

The transmission platform allows you to monitor your downloads with Transmission from within Home Assistant and setup automation based on the information.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: transmission
+    host: IP_ADDRESS
+    monitored_variables:
+      - 'current_status'
+      - 'download_speed'
+      - 'upload_speed'
+      - 'active_torrents'
+
+
+

Configuration variables:

+
    +
  • host (Required): This is the IP address of your Transmission daemon, eg. 192.168.1.32.
  • +
  • port (Optional): The port your Transmission daemon uses, defaults to 9091.
  • +
  • name (Optional): The name to use when displaying this Transmission instance.
  • +
  • username (Optional): Your Transmission username, if you use authentication.
  • +
  • password (Optional): Your Transmission password, if you use authentication.
  • +
  • monitored_variables array (Required): Conditions to display in the frontend. +
      +
    • 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.

+

+ +

+

If everything is setup correctly, the details will show up in the frontend.

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.travisci/index.html b/components/sensor.travisci/index.html new file mode 100644 index 0000000000..4c0d54601d --- /dev/null +++ b/components/sensor.travisci/index.html @@ -0,0 +1,589 @@ + + + + + + + + + Travis-CI Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Travis-CI Sensor +

+
+
+

With this sensor platform, you will be able to integrate the test build results reported by Travis-CI working within Home Assistant.

+

To enable this platform, please add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: travisci
+    api_key: 123456789
+
+
+

Configuration variables:

+
    +
  • api_key (Required): GitHub access token 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/components/sensor.twitch/index.html b/components/sensor.twitch/index.html new file mode 100644 index 0000000000..339dd4e54b --- /dev/null +++ b/components/sensor.twitch/index.html @@ -0,0 +1,186 @@ + + + + + + + + + Twitch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Twitch +

+
+
+

The twitch platform will allow you to monitor Twitch channel status from within Home Assistant and setup automation based on the information.

+

To use Twitch with your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: twitch
+  channels:
+    - channel1
+    - channel2
+
+
+

Configuration variables:

+
    +
  • channels array (Required): Array of channels. +
      +
    • channel_name (Required): Name of the channel.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.uber/index.html b/components/sensor.uber/index.html new file mode 100644 index 0000000000..f29d8ddcf0 --- /dev/null +++ b/components/sensor.uber/index.html @@ -0,0 +1,232 @@ + + + + + + + + + Uber - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Uber +

+
+
+

The uber sensor will give you time and price estimates for all available Uber 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.

+

You must create an application here to obtain a server_token.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: uber
+    server_token: 'BeAPPTDsWZSHLf7fd9OWjZkIezweRw18Q8NltY27'
+
+
+

Configuration variables:

+
    +
  • server_token (Required): A server token obtained from developer.uber.com after creating an app.
  • +
  • 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.
  • +
+

A full configuration entry could look like the sample below:

+
# Example configuration.yaml entry
+sensor:
+  - platform: uber
+    start_latitude: 37.8116380
+    start_longitude: -122.2648050
+    end_latitude: 37.7768520
+    end_longitude: -122.4155500
+    server_token: 'BeAPPTDsWZSHLf7fd9OWjZkIezweRw18Q8NltY27'
+    product_ids:
+      - '04a497f5-380d-47f2-bf1b-ad4cfdcb51f2'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.uk_transport/index.html b/components/sensor.uk_transport/index.html new file mode 100644 index 0000000000..e5fbcbb6c9 --- /dev/null +++ b/components/sensor.uk_transport/index.html @@ -0,0 +1,294 @@ + + + + + + + + + UK transport - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UK transport +

+
+
+

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 to query live departure data and requires a developer application ID and key which can be obtained here. The free tier 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 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.

+

To add a single train departure sensor add the following to your configuration.yaml file:

+
# 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 below, as are the train origin, estimated and scheduled departure times, and the departure platform.

+
# 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: '{{states.sensor.next_train_to_wat.attributes.next_trains[0].status}}'
+    next_trains_origin:
+      friendly_name: 'Next train origin'
+      value_template: '{{states.sensor.next_train_to_wat.attributes.next_trains[0].origin_name}}'
+    next_trains_estimated:
+      friendly_name: 'Next train estimated'
+      value_template: '{{states.sensor.next_train_to_wat.attributes.next_trains[0].estimated}}'
+    next_trains_scheduled:
+      friendly_name: 'Next train scheduled'
+      value_template: '{{states.sensor.next_train_to_wat.attributes.next_trains[0].scheduled}}'
+    next_trains_platform:
+      friendly_name: 'Next train platform'
+      value_template: '{{states.sensor.next_train_to_wat.attributes.next_trains[0].platform}}'
+
+
+
+

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 zoom right in on a bus +stop you’re interested in
  2. +
  3. Click the layers picker button on the right hand side
  4. +
  5. Tick the ‘map data’ layer, and wait for clickable objects to load
  6. +
  7. Click the bus stop node to reveal its tags on the left
  8. +
+

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. A bus sensor is added in the following configuration.yaml file entry:

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

+
# 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: '{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].route}}'
+    next_bus_direction:
+      friendly_name: 'Next bus direction'
+      value_template: '{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].direction}}'
+    next_bus_scheduled:
+      friendly_name: 'Next bus scheduled'
+      value_template: '{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].scheduled}}'
+    next_bus_estimated:
+      friendly_name: 'Next bus estimated'
+      value_template: '{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].estimated}}'
+
+
+
+

Powered by transportAPI

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.upnp/index.html b/components/sensor.upnp/index.html new file mode 100644 index 0000000000..1c58625bd6 --- /dev/null +++ b/components/sensor.upnp/index.html @@ -0,0 +1,232 @@ + + + + + + + + + UPNP Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UPNP Sensor +

+
+
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.ups/index.html b/components/sensor.ups/index.html new file mode 100644 index 0000000000..908480035c --- /dev/null +++ b/components/sensor.ups/index.html @@ -0,0 +1,598 @@ + + + + + + + + + UPS Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UPS Sensor +

+
+
+

The ups platform allows one to track deliveries by the UPS. To use this sensor, you need a My UPS Account.

+

To enable this sensor, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+sensor:
+  - platform: ups
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+

Configuration options for the UPS Sensor:

+
    +
  • username (Required): The username to access the UPS My Choice service.
  • +
  • password (Required): The password for the given username.
  • +
  • name (Optional): Name the sensor.
  • +
  • update_inverval (Optional): Minimum time interval between updates. Default is 1 hour. Supported formats: +
      +
    • update_interval: 'HH:MM:SS'
    • +
    • update_interval: 'HH:MM'
    • +
    • Time period dictionary, e.g.: +
      update_interval:
      +    # At least one of these must be specified:
      +    days: 0
      +    hours: 0
      +    minutes: 3
      +    seconds: 30
      +    milliseconds: 0
      +
      +
    • +
    +
  • +
+

+The UPS sensor logs into the UPS My Choice website to scrape package data. It does not use an API. Use at your own risk. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.uptime/index.html b/components/sensor.uptime/index.html new file mode 100644 index 0000000000..2d421438d0 --- /dev/null +++ b/components/sensor.uptime/index.html @@ -0,0 +1,583 @@ + + + + + + + + + Uptime Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Uptime Sensor +

+
+
+

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:

+
# 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.
  • +
+
# Example with configuration variables
+sensor:
+  - platform: uptime
+    name: Time Online
+    unit_of_measurement: hours
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.usps/index.html b/components/sensor.usps/index.html new file mode 100644 index 0000000000..39066aa856 --- /dev/null +++ b/components/sensor.usps/index.html @@ -0,0 +1,577 @@ + + + + + + + + + USPS Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ USPS Sensor +

+
+
+

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 to see mail images. This works in concert with USPS camera.

+

To enable this sensor in your installation, set up the USPS component with your username and password.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.vasttrafik/index.html b/components/sensor.vasttrafik/index.html new file mode 100644 index 0000000000..1fec0e9c62 --- /dev/null +++ b/components/sensor.vasttrafik/index.html @@ -0,0 +1,240 @@ + + + + + + + + + Västtrafik Public Transport - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Västtrafik Public Transport +

+
+
+

The vasttrafik sensor will provide you traveling details for the larger Göteborg area in Sweden from the Västtrafik public transportation service.

+

You must create an application here to obtain a key and a secret.

+

Add the data to your configuration.yaml file as shown in the example:

+
# Example configuration.yaml entry
+sensor:
+  - platform: vasttrafik
+    key: XXXXXXXXXXXXXXXXXXX
+    secret: YYYYYYYYYYYYYYYYY
+    departures:
+      - from: Musikvägen
+
+
+

Configuration variables:

+
    +
  • key (Required): The API key to access your Västtrafik account.
  • +
  • secret (Required): The API secret to access your Västtrafik account.
  • +
  • departures array (Required): List of traveling routes. +
      +
    • name (Optional): Name of the route.
    • +
    • from (Required): The start station.
    • +
    • heading (Optional): Direction of the traveling.
    • +
    • delay (Optional): Delay in minutes. Defaults to 0.
    • +
    +
  • +
+

The data are coming from Västtrafik.

+

A full configuration example could look like this:

+
# 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/components/sensor.vera/index.html b/components/sensor.vera/index.html new file mode 100644 index 0000000000..b932c49a9d --- /dev/null +++ b/components/sensor.vera/index.html @@ -0,0 +1,598 @@ + + + + + + + + + Vera Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Sensor +

+
+
+

The vera platform allows you to get data from your Vera sensors from within Home Assistant.

+

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 to txts) when they are armed and change state.

+

Home Assistant will display the state of these sensors regardless of the armed state.

+

To allow you to change the armed state - Home Assistant will create a switch as well as a sensor for each Armable sensor. You can hide these switches using customization if you wish.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.verisure/index.html b/components/sensor.verisure/index.html new file mode 100644 index 0000000000..2d76f1fb9a --- /dev/null +++ b/components/sensor.verisure/index.html @@ -0,0 +1,591 @@ + + + + + + + + + Verisure Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure Sensor +

+
+
+

Integrates Verisure sensors into Home Assistant. See the main component for configuration instructions.

+

The following sensor types are supported:

+
    +
  • Thermometers
  • +
  • Hygrometers
  • +
  • Mouse detectors
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.version/index.html b/components/sensor.version/index.html new file mode 100644 index 0000000000..82aad0c89b --- /dev/null +++ b/components/sensor.version/index.html @@ -0,0 +1,603 @@ + + + + + + + + + Version Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Version Sensor +

+
+
+

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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: version
+
+
+

Configuration variables:

+
    +
  • name (Optional): Name of the sensor. Defaults to Current Version.
  • +
+

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.

+
$ hass --version
+
+
+

Or go to the service developer tool icon Info section of the Developer Tools.

+

A command_line with hass to display your current version.

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

+
sensor:
+  - platform: command_line
+    name: Version
+    command: "cat /home/homeassistant/.homeassistant/.HA_VERSION"
+
+
+

You might think that a rest sensor could work, too, but it will not as Home Assistant is not ready when the sensor get initialized.

+
sensor:
+  - platform: rest
+    resource: http://IP_ADDRESS:8123/api/config
+    name: Current Version
+    value_template: ''
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.viaggiatreno/index.html b/components/sensor.viaggiatreno/index.html new file mode 100644 index 0000000000..b60762e467 --- /dev/null +++ b/components/sensor.viaggiatreno/index.html @@ -0,0 +1,242 @@ + + + + + + + + + ViaggiaTreno Italian Railroads - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ViaggiaTreno Italian Railroads +

+
+
+

The viaggiatreno sensor will give you information about configured train ids and stations using the public ViaggiaTreno API.

+

To activate the sensor you need at least two parameters: the train_id and the station_id.

+

The first is available just looking at the ViaggiaTreno timetable, the latter can be obtained using the dedicated API endpoint: +http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/<Station name> +(e.g., http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/ROMA will list all station names (with ids) that starts with ROMA).

+

+Note that the station_id is referred to the train’s departing station. If a train number does not match with the station id, no data will be returned to the sensor. +

+

Then add the data to your configuration.yaml file as shown in the example:

+
# Example configuration.yaml entry
+sensor:
+  - platform: viaggiatreno
+    train_id: 12279
+    station_id: S08409
+
+
+
+

Configuration Variables

+
+
train_id
+
+

(int)(Required)The ID of the train.

+
+
station_id
+
+

(int)(Required)The ID of the starting station.

+
+
train_name
+
+

(string)(Optional)The name of the sensor. Defaults to ‘Train from '.</span>

+
+
+
+

+In a future implementation, the station name could be used to automatically search best-matching station id, without the need to specify it. +

+

The public timetables are coming from ViaggiaTreno.

+

+Instructions (in Italian) for the API are available at: +https://github.com/bluviolin/TrainMonitor/wiki/API-del-sistema-Viaggiatreno +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.vultr/index.html b/components/sensor.vultr/index.html new file mode 100644 index 0000000000..c53a77a1c8 --- /dev/null +++ b/components/sensor.vultr/index.html @@ -0,0 +1,317 @@ + + + + + + + + + Vultr Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vultr Sensor +

+
+
+

The vultr sensor platform will allow you to view current bandwidth usage and pending charges against your Vultr subscription.

+

To use this sensor, you must set up your Vultr hub.

+

+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):

+
sensor:
+  - platform: vultr
+    subscription: 123456
+
+
+
+

Configuration Variables

+
+
subscription
+
+

(string)(Required)The Vultr subscription to monitor, this can be found in the URL when viewing a subscription.

+
+
name
+
+

(string)(Optional)The name to give this sensor.

+

Default value: Vultr {Vultr subscription label} {monitored condition name}

+
+
monitored_conditions
+
+

(list)(Optional)List of items you want to monitor for each subscription.

+
+
+
+
current_bandwidth_used
+
+

The current (invoice period) bandwidth usage in Gigabytes (GB).

+
+
temperature
+
+

+
+
+
+
+
+

Full configuration.yaml using {} to format condition name (produces sensor.server_current_bandwidth_used and sensor.server_pending_charges):

+
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):

+
sensor:
+  - platform: vultr
+    name: Web Server Bandwidth
+    subscription: 123456
+    monitored_conditions:
+      - current_bandwidth_used
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.waqi/index.html b/components/sensor.waqi/index.html new file mode 100644 index 0000000000..e2ebecfd01 --- /dev/null +++ b/components/sensor.waqi/index.html @@ -0,0 +1,232 @@ + + + + + + + + + World Air Quality Index - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ World Air Quality Index +

+
+
+

The waqi sensor platform will query World Air Quality Index service to check AQI value for a specific set of locations. The resulting indexes will be added to the Home Assistant as sensor outputs.

+

This sensor requires an API token. Please obtain one at AQICN API token.

+

To enable this sensor, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: waqi
+    token: AQICN_API_TOKEN
+    locations:
+      - beijing
+    stations:
+      - Beijing US Embassy
+
+
+

Configuration variables:

+
    +
  • locations (Required): A list of location names to look for air quality data. In case a specific location has multiple registered stations all of them will be added to Home Assistant.
  • +
  • token (Required): The token for the AQICN public API.
  • +
  • stations (Optional): A list of station names to look for air quality data. Station should be within locations specified above.
  • +
+

The value reported is an overall AQ index for the location. The values of the index can be interpreted as following:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AQIStatusDescription
0 - 50GoodAir quality is considered satisfactory, and air pollution poses little or no risk
51 - 100ModerateAir 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 - 150Unhealthy for Sensitive GroupsMembers of sensitive groups may experience health effects. The general public is not likely to be affected
151 - 200UnhealthyEveryone may begin to experience health effects; members of sensitive groups may experience more serious health effects
201 - 300Very unhealthyHealth warnings of emergency conditions. The entire population is more likely to be affected
301+HazardousHealth alert: everyone may experience more serious health effects
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.whois/index.html b/components/sensor.whois/index.html new file mode 100644 index 0000000000..7b747fba85 --- /dev/null +++ b/components/sensor.whois/index.html @@ -0,0 +1,586 @@ + + + + + + + + + Whois Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Whois Sensor +

+
+
+

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.

+
# Example configuration.yaml entry
+sensor:
+  - platform: whois
+    domain: example.net
+    name: primary
+
+
+
+

Configuration Variables

+
+
domain
+
+

(string)(Required)The domain you want to perform WHOIS lookups against.

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+

Default value: Whois

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.wink/index.html b/components/sensor.wink/index.html new file mode 100644 index 0000000000..e8602e25ef --- /dev/null +++ b/components/sensor.wink/index.html @@ -0,0 +1,614 @@ + + + + + + + + + Wink Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Sensor +

+
+
+

The Wink sensor platform allows you to get data from your Wink sensors.

+

The requirement is that you have setup Wink.

+

Supported sensor devices

+
    +
  • Wink Relay temperature, proximity, and humidity
  • +
  • Wink Spotter temperature, humidity, and brightness (No Wink hub required)
  • +
  • Wink Porkfolio balance (No Wink hub required)
  • +
  • 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 (No Wink hub required)
  • +
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.worldclock/index.html b/components/sensor.worldclock/index.html new file mode 100644 index 0000000000..f1d3ae859d --- /dev/null +++ b/components/sensor.worldclock/index.html @@ -0,0 +1,188 @@ + + + + + + + + + Worldclock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Worldclock +

+
+
+

The worldclock sensor platform simply displays the current time in a different time zone

+

To enable this sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: worldclock
+    time_zone: America/New_York
+
+
+

Configuration variables:

+
    +
  • time_zone (Required): The resource or endpoint that contains the value.
  • +
  • name (Optional): The name of the sensor, eg. the city. Defaults to ‘Worldclock Sensor’.
  • +
+

For valid time zones check the TZ column in the Wikipedia overview. Or get the full list from the pytz module.

+
python3 -c "import pytz;print(pytz.all_timezones)"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.worldtidesinfo/index.html b/components/sensor.worldtidesinfo/index.html new file mode 100644 index 0000000000..9617a10e26 --- /dev/null +++ b/components/sensor.worldtidesinfo/index.html @@ -0,0 +1,240 @@ + + + + + + + + + World Tides - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ World Tides +

+
+
+

The worldtidesinfo sensor platform uses details from World Tides 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:

+
# 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/components/sensor.worxlandroid/index.html b/components/sensor.worxlandroid/index.html new file mode 100644 index 0000000000..c8d4837438 --- /dev/null +++ b/components/sensor.worxlandroid/index.html @@ -0,0 +1,213 @@ + + + + + + + + + Worx Landroid - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Worx Landroid +

+
+
+

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:

+
# 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/components/sensor.wsdot/index.html b/components/sensor.wsdot/index.html new file mode 100644 index 0000000000..c483440628 --- /dev/null +++ b/components/sensor.wsdot/index.html @@ -0,0 +1,259 @@ + + + + + + + + + Washington State DOT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Washington State DOT +

+
+
+

The wsdot sensor will give you travel time information from the Washington State Department of Transportation (WSDOT).

+

First, you need to get a free Traveler Information api_key from the WSDOT API webpage. Just enter your email address to instantly get the key.

+

Once you have the code, create wsdot sensors by editing your configuration.yaml file as follows:

+
# Example configuration.yaml entry
+sensor:
+  - platform: wsdot
+    api_key: XXXXXXXXXXXXXXXXXXXXXXX
+    travel_time:
+     - id: 95
+       name: I-90 Eastbound HOV
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your api_key from WSDOT.
  • +
  • scan_interval (Optional): How frequently to query for new data. Default: 3 minutes.
  • +
  • travel_time array (Required): List of routes. +
      +
    • id (Required): Name of the route.
    • +
    • name (Optional): Name of the route. Default just uses id.
    • +
    +
  • +
+

Figuring out which Travel Time ID (id) is associated with your routes is a bit of a challenge. If you visit http://wsdot.com/Traffic/api/TravelTimes/TravelTimesREST.svc/GetTravelTimesAsJson?AccessCode=[your_api_key_here] substituting your api_key, you will get a list of all available routes. Search through it and then find the key TravelTimeID. That tells you the number you need.

+

Some common examples include:

+
 73 Issaquah-Seattle (WB PM)
+ 74 Seattle-Issaquah (EB AM)
+ 75 HOV Issaquah-Seattle (WB REV) 
+ 76 Issaquah-Seattle (WB REV)
+ 77 HOV Redmond-Seattle (WB PM)
+ 78 HOV Seattle-Redmond (EB AM)
+ 79 Redmond-Seattle (WB PM)
+ 80 Seattle-Redmond (EB AM)
+ 81 HOV Redmond-Seattle via I-90 (WB PM)
+ 82 HOV Seattle-Redmond via I-90 (EB AM)
+ 83 Redmond-Seattle via I-90 (WB PM)
+ 84 Seattle-Redmond via I-90 (EB AM)
+ 85 HOV Redmond-Seattle via I-90 (WB REV)
+ 86 Redmond-Seattle via I-90 (WB REV)
+ 89 Bellevue-Seattle via 520 (WB PM)
+ 90 HOV Bellevue-Seattle via 520 (WB PM)
+ 91 HOV Seattle-Bellevue via 520 (EB AM)
+ 92 Seattle-Bellevue via 520 (EB AM)
+ 93 Bellevue-Seattle via I-90 (WB PM)
+ 94 HOV Bellevue-Seattle via I-90 (WB PM)
+ 95 HOV Seattle-Bellevue via I-90 (EB AM)
+ 96 Seattle-Bellevue via I-90 (EB AM)
+ 97 Bellevue-Seattle via I-90 (WB REV)
+ 98 HOV Bellevue-Seattle via I-90 (WB REV)
+
+
+

+WSDOT does provide information about ferry schedules, mountain passes, tolls, etc. but so far only Travel Time data is available in this platform. +

+

Here’s an example of the sensor in use:

+

+ +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.wunderground/index.html b/components/sensor.wunderground/index.html new file mode 100644 index 0000000000..8dd2363b7e --- /dev/null +++ b/components/sensor.wunderground/index.html @@ -0,0 +1,390 @@ + + + + + + + + + Weather Underground (WUnderground) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Weather Underground (WUnderground) +

+
+
+

The wunderground platform uses Weather Underground as a source for current weather information.

+

+Obtain a WUnderground API key here. A free account allows 500 requests per day and also a maximum of 10 per minute. See details here. +

+

To add Wunderground to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: wunderground
+    api_key: your_api_key
+    monitored_conditions:
+      - alerts
+      - dewpoint_c
+
+
+

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. 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. 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
    • +
    • dewpoint_c: Temperature in Celsius below which water droplets begin to condense and dew can form
    • +
    • dewpoint_f: Temperature in Fahrenheit below which water droplets begin to condense and dew can form
    • +
    • dewpoint_string: Text summary of dew point
    • +
    • feelslike_c: Feels like (or apparent) temperature in Celsius
    • +
    • feelslike_f: Feels like (or apparent) temperature in Fahrenheit
    • +
    • feelslike_string: Text summary of how the current temperature feels like
    • +
    • heat_index_c: Heat index (combined effects of the temperature and humidity of the air) in Celsius
    • +
    • heat_index_f: Heat index (combined effects of the temperature and humidity of the air) in Fahrenheit
    • +
    • heat_index_string: Text summary of current heat index
    • +
    • elevation: Elevation in feet
    • +
    • location: City and State
    • +
    • observation_time: Text summary of observation time
    • +
    • 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]: Forecasted precipitation intensity in millimeters
    • +
    • precip_1d_in [1d]: Forecasted precipitation intensity in inches
    • +
    • precip_1d [1d]: Forecasted precipitation probability in %
    • +
    • pressure_in: Atmospheric air pressure in inches
    • +
    • pressure_mb: Atmospheric air pressure in millibars
    • +
    • 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 combining Fahrenheit and Celsius
    • +
    • temp_c: Current temperature in Celsius
    • +
    • temp_f: Current temperature 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
    • +
    • temp_low_avg_f: Average low for today in Fahrenheit
    • +
    • temp_high_1d_c [1d]: Forecasted high temperature in Celsius
    • +
    • temp_high_1d_f [1d]: Forecasted high temperature in Fahrenheit
    • +
    • temp_low_1d_c [1d]: Forecasted low temperature in Celsius
    • +
    • temp_low_1d_f [1d]: Forecasted low temperature in Fahrenheit
    • +
    • UV: Current levels of UV radiation. See here for explanation.
    • +
    • visibility_km: Average visibility in km
    • +
    • visibility_mi: Average visibility in miles
    • +
    • weather: A human-readable text summary with picture from Wunderground.
    • +
    • weather_1d [12h]: A human-readable weather forecast using imperial units.
    • +
    • weather_1d_metric [12h]: A human-readable weather forecast using metric units.
    • +
    • weather_1h [1h]: Weather conditions in 1 hour. (e.g. “Thunderstorm” etc.)
    • +
    • wind_degrees: Wind degrees
    • +
    • wind_dir: Wind direction
    • +
    • wind_gust_kph: Wind gusts speed in kph
    • +
    • wind_gust_mph: Wind gusts speed in mph
    • +
    • wind_gust_1d_kph [1d]: Max. forecasted Wind in kph
    • +
    • wind_gust_1d_mph [1d]: Max. forecasted Wind in mph
    • +
    • wind_kph: Current wind speed in kph
    • +
    • wind_mph: Current wind speed in mph
    • +
    • wind_1d_kph [1d]: Forecasted wind speed in kph
    • +
    • wind_1d_mph [1d]: Forecasted wind speed in mph
    • +
    • wind_string: Text summary of current wind conditions
    • +
    +
  • +
+

All the conditions listed above will be updated every 5 minutes.

+

Forecasts

+

12 hour forecasts

+

Monitored conditions marked above with [12h] are 12 hour forecasts. To get a forecast for different period/daytime replace the _1d_ part of the sensor name. e.g. weather_2n will give you forecast for tomorrow night. Valid values for day are 1 to 4 and valid values for daytime are d or n.

+

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

+

Hourly forecasts

+

Conditions marked with [1h] are hourly forecasts. To get forecast for different hour, replace the number +in the _1h_ part of the sensor name with 1 to 36. E.g. weather_24h will give you weather in 24 hours.

+

Additional examples

+

Daily forecast

+
sensor:
+  - platform: wunderground
+    api_key: your_api_key
+    monitored_conditions:
+      - weather_1d_metric
+      - weather_1n_metric
+      - weather_2d_metric
+      - weather_2n_metric
+      - weather_3d_metric
+      - weather_3n_metric
+      - weather_4d_metric
+      - weather_4n_metric
+
+group:
+  daily_forecast:
+    name: Daily Forecast
+    entities:
+      - sensor.pws_weather_1d_metric
+      - sensor.pws_weather_1n_metric
+      - sensor.pws_weather_2d_metric
+      - sensor.pws_weather_2n_metric
+      - sensor.pws_weather_3d_metric
+      - sensor.pws_weather_3n_metric
+      - sensor.pws_weather_4d_metric
+      - sensor.pws_weather_4n_metric
+
+
+

Daily Forecast

+

Weather overview

+
sensor:
+  - platform: wunderground
+    api_key: your_api_key
+    monitored_conditions:
+      - temp_high_record_c
+      - temp_high_1d_c
+      - temp_c
+      - temp_low_1d_c
+      - temp_low_record_c
+      - precip_1d
+      - precip_1d_mm
+      - wind_kph
+      - wind_1d_kph
+      - alerts
+
+group:
+  weather_overview:
+    name: Weather overview
+    entities:
+      - sensor.pws_weather_1d_metric
+      - sensor.pws_temp_high_record_c
+      - sensor.pws_temp_high_1d_c
+      - sensor.pws_temp_c
+      - sensor.pws_temp_low_1d_c
+      - sensor.pws_temp_low_record_c
+      - sensor.pws_precip_1d
+      - sensor.pws_precip_1d_mm
+      - sensor.pws_wind_kph
+      - sensor.pws_wind_1d_kph
+      - sensor.pws_alerts
+
+
+

Weather overview

+

+Note: While the platform is called “wunderground” the sensors will show up in Home Assistant as “PWS” (eg: sensor.pws_weather). +

+

Additional details about the API are available here.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.xbox_live/index.html b/components/sensor.xbox_live/index.html new file mode 100644 index 0000000000..4bbd39ecbe --- /dev/null +++ b/components/sensor.xbox_live/index.html @@ -0,0 +1,186 @@ + + + + + + + + + Xbox Live - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xbox Live +

+
+
+

The Xbox Live component is able to track Xbox profiles.

+

To use this sensor you need a free API key from XboxAPI.com. Please also make sure to connect your Xbox account on that site.

+

The configuration requires you to specify XUIDs which are the unique identifiers for profiles. These can be determined on XboxAPI.com by either looking at your own profile page or using their interactive documentation to search for gamertags.

+

To use the Xbox Live sensor in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: xbox_live
+    api_key: YOUR_API_KEY
+    xuid:
+      - account1
+      - account2
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your API key from XboxAPI.com.
  • +
  • xuid (Required): Array of profile XUIDs to be tracked.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.xiaomi_aqara/index.html b/components/sensor.xiaomi_aqara/index.html new file mode 100644 index 0000000000..f47fd18736 --- /dev/null +++ b/components/sensor.xiaomi_aqara/index.html @@ -0,0 +1,586 @@ + + + + + + + + + Xiaomi Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Sensor +

+
+
+

The xiaomi aqara sensor platform allows you to get data from your Xiaomi sensors.

+

The requirement is that you have setup Xiaomi aqara.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.yahoo_finance/index.html b/components/sensor.yahoo_finance/index.html new file mode 100644 index 0000000000..a47275d9d9 --- /dev/null +++ b/components/sensor.yahoo_finance/index.html @@ -0,0 +1,227 @@ + + + + + + + + + Yahoo Finance - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yahoo Finance +

+
+
+

+ This sensor doesn’t work anymore as Yahoo! decommissioned the service in early November 2017. A repleacement is the alpha_vantage sensor. +

+

The yahoo_finance platform uses Yahoo Finance to monitor the stock market.

+

To enable the yahoo_finance platform, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: yahoo_finance
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the sensor.

+

Default value: Yahoo Stock

+
+
symbols
+
+

(string | list)(Optional)List of stock market symbols for given companies.

+

Default value: YHOO

+
+
+
+

Examples

+

In this section you find some real life examples of how to use this sensor.

+

Red Hat and Google

+
sensor:
+  - platform: yahoo_finance
+    symbols:
+      - RHT
+      - GOOGL
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.yr/index.html b/components/sensor.yr/index.html new file mode 100644 index 0000000000..c13de6d9dc --- /dev/null +++ b/components/sensor.yr/index.html @@ -0,0 +1,280 @@ + + + + + + + + + YR - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ YR +

+
+
+

The yr platform uses YR.no as a 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:

+
# Example configuration.yaml entry
+sensor:
+  - platform: yr
+
+
+

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.
    • +
    • humidity: The relative humidity.
    • +
    • fog: Fog.
    • +
    • pressure: The sea-level air pressure in millibars.
    • +
    • precipitation: The precipitation.
    • +
    • dewpointTemperature: The dew point temperature.
    • +
    • windSpeed: The wind speed.
    • +
    • windDirection: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise.
    • +
    • cloudiness: The cloudiness.
    • +
    • lowClouds: Low cloud level.
    • +
    • mediumClouds: Medium cloud level.
    • +
    • highClouds: High cloud level.
    • +
    +
  • +
+

A full configuration example can be found below:

+
# Example configuration.yaml entry
+sensor:
+  - platform: yr
+    name: Weather
+    forecast: 24
+    monitored_conditions:
+      - temperature
+      - symbol
+      - precipitation
+      - windSpeed
+      - pressure
+      - windDirection
+      - humidity
+      - fog
+      - cloudiness
+      - lowClouds
+      - mediumClouds
+      - highClouds
+      - dewpointTemperature
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.yweather/index.html b/components/sensor.yweather/index.html new file mode 100644 index 0000000000..e42793d670 --- /dev/null +++ b/components/sensor.yweather/index.html @@ -0,0 +1,303 @@ + + + + + + + + + Yahoo Weather Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yahoo Weather Sensor +

+
+
+

The yweather platform uses Yahoo Weather as a source for current meteorological data. The forecast will show you the condition for 5 days, 0 is the current day. You can use only weather, temp_min, and temp_max with forecast. It’s important to note that a yweather sensor will only show ONE days forecast at a time so to show multiple days forecasts, you will need to use the ‘name:’ option and give each sensor a unique name.

+

+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. If you don’t add a WOEID it generate it from Home Assistant’s latitude and longitude.

+

To add Yahoo Weather to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: yweather
+    monitored_conditions:
+      - weather
+      - weather_current
+      - temp_min
+      - temp_max
+      - wind_speed
+      - pressure
+      - visibility
+      - humidity
+      - temperature
+
+
+

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.
  • +
  • monitored_conditions array (Required): Conditions to display in the frontend. +
      +
    • weather: A human-readable text summary with picture from yahoo.
    • +
    • weather_current: A human-readable text summary with picture from yahoo from current condition.
    • +
    • temperature: The current temperature.
    • +
    • temp_min: The minimal temperature of this day.
    • +
    • temp_max: The maximum temperature of this day.
    • +
    • wind_speed: The wind speed.
    • +
    • humidity: The relative humidity.
    • +
    • pressure: The sea-level air pressure in millibars.
    • +
    • visibility: The average visibility.
    • +
    +
  • +
+

Example of forecast using multiple days. In example, first sensor shows tomorrow’s forecast, second sensor shows the next day and so on:

+
# Example configuration.yaml entry
+sensor:
+  - platform: yweather
+    forecast: 1
+    name: yw_day1
+    monitored_conditions:
+      - weather
+      - temp_min
+      - temp_max
+  - platform: yweather
+    forecast: 2
+    name: yw_day2
+    monitored_conditions:
+      - weather
+      - temp_min
+      - temp_max
+  - platform: yweather
+    forecast: 3
+    name: yw_day3
+    monitored_conditions:
+      - weather
+      - temp_min
+      - temp_max
+
+
+

Details about the API are available in the Yahoo! Developer Network.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.zabbix/index.html b/components/sensor.zabbix/index.html new file mode 100644 index 0000000000..212577befa --- /dev/null +++ b/components/sensor.zabbix/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Zabbix Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zabbix Sensor +

+
+
+

The zabbix sensor platform let you monitor the current count of active triggers for your Zabbix monitoring instance.

+

+You must have the Zabbix component configured to use those sensors. +

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: zabbix
+    triggers:
+      name: Important Hosts Trigger Count
+      hostids: [10051,10081,10084]
+      individual: true
+
+
+

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 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/components/sensor.zamg/index.html b/components/sensor.zamg/index.html new file mode 100644 index 0000000000..ef152b77e9 --- /dev/null +++ b/components/sensor.zamg/index.html @@ -0,0 +1,280 @@ + + + + + + + + + ZAMG Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZAMG Sensor +

+
+
+

The zamg platform uses meteorological details published by the Austrian weather service Zentralanstalt für Meteorologie und Geodynamik (ZAMG).

+

Only observations for capital cities are publicly available. You can check the list of stations in CSV format.

+

To add ZAMG to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: zamg
+
+
+

Configuration variables:

+
    +
  • station_id (Optional): The ID number for a supported ZAMG station.
  • +
  • name (Optional): Additional name for the sensors. Defaults to platform name.
  • +
  • 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
    • +
    • wind_speed: Wind speed
    • +
    • wind_bearing: Wind bearing
    • +
    • wind_max_speed: Top wind speed
    • +
    • wind_max_bearing: Top wind bearing
    • +
    • sun_last_hour: Sun last hour percentage
    • +
    • temperature: Temperature
    • +
    • precipitation: Precipitation
    • +
    • dewpoint: Dew point
    • +
    +
  • +
+

A full configuration example:

+
# Example configuration.yaml entry
+sensor:
+  - platform: zamg
+    station_id: 11035
+    name: Wien
+    monitored_conditions:
+      - temperature
+      - humidity
+
+
+

+This sensor is an alternative to the zamg weather platform. The zamg weather platform is easier to configure but less customizable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.zestimate/index.html b/components/sensor.zestimate/index.html new file mode 100644 index 0000000000..d1f40bb7e4 --- /dev/null +++ b/components/sensor.zestimate/index.html @@ -0,0 +1,600 @@ + + + + + + + + + Zestimate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zestimate +

+
+
+

The zestimate sensor allows one to track the Zestimate value of properties using the Zillow API.

+

You will need to sign up for the Zillow API at the following link Zillow API. You will also need the Zillow property ID for each property you’d like to track. This information is available from the URL of a property you are interested in.

+

For example, the White House zpid is 84074482 and can be found in it’s Zillow URL: https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/

+

To enable this sensor, add the following lines to your configuration.yaml.

+
sensor:
+  - platform: zestimate
+    api_key: API_KEY
+    zpid:
+      - <your zpid 1>
+      - <your zpid 2>
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)The API key to access the service.

+
+
zpid
+
+

(list)(Required)Property IDs to track in the front end.

+
+
+
+

Additional Attributes

+

The following additional attributes are also available via the sensor.

+

These attributes are available:

+
    +
  • Last update
  • +
  • 30 Day change in value
  • +
  • Valuation Range High
  • +
  • Valuation Range Low
  • +
  • Address
  • +
  • Currency
  • +
  • Amount
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.zha/index.html b/components/sensor.zha/index.html new file mode 100644 index 0000000000..fbd49faa7c --- /dev/null +++ b/components/sensor.zha/index.html @@ -0,0 +1,579 @@ + + + + + + + + + ZigBee Home Automation Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Home Automation Sensor +

+
+
+

To get your ZigBee sensors working with Home Assistant, follow the instructions for the general ZigBee Home Automation Component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.zigbee/index.html b/components/sensor.zigbee/index.html new file mode 100644 index 0000000000..e046368d38 --- /dev/null +++ b/components/sensor.zigbee/index.html @@ -0,0 +1,629 @@ + + + + + + + + + ZigBee Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Sensor +

+
+
+

There are two types of ZigBee sensor available to Home Assistant:

+ +

To configure an analog input pin sensor, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: zigbee
+    name: My Analog ZigBee Input
+    type: analog
+    pin: 0
+    address: 0013A2004233D138
+
+
+

Configuration variables:

+
    +
  • name (Required): The name you would like to give the sensor in Home Assistant.
  • +
  • type (Required): Set to analog or temperature.
  • +
  • pin (Optional): The number identifying which pin to sample.
  • +
  • address (Optional): The long 64 bit address of the remote ZigBee device whose pin you would like to sample. Do not include this variable if you want to sample the local ZigBee device’s pins.
  • +
  • max_volts (Optional): The maximum voltage which the input pin is able to read. Defaults to 1.2.
  • +
+

Examples

+

Analog Input Pin

+

The analog input pins on an XBee (non-Pro) will read 0V to 1.2 V. This is translated by the xbee-helper library into a percentage. The maximum voltage your ZigBee device will read is configurable using the max_volts configuration variable.

+

To configure an analog input pin sensor, add the following to your configuration.yaml file:

+
## Example configuration.yaml entry
+sensor:
+  - platform: zigbee
+    name: My Analog ZigBee Input
+    type: analog
+    pin: 0
+    address: 0013A2004233D138
+
+
+

See the Digi knowledge base for more XBee sampling details.

+

Temperature Sensor

+

The XBee Pro (and perhaps other third party modules) contains a thermometer device which can be read by using the TP AT command.

+

To configure a temperature sensor device, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: zigbee
+    name: Living Room Temperature ZigBee
+    type: temperature
+    address: 0013A20050E752C5
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.zoneminder/index.html b/components/sensor.zoneminder/index.html new file mode 100644 index 0000000000..1fab80cbe8 --- /dev/null +++ b/components/sensor.zoneminder/index.html @@ -0,0 +1,602 @@ + + + + + + + + + ZoneMinder Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZoneMinder Sensor +

+
+
+

The zoneminder sensor platform lets you monitor the current state of your ZoneMinder install including the number of events and the current state of the cameras.

+

+You must have the ZoneMinder component configured to use this sensor. +

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  - platform: zoneminder
+    include_archived: false
+
+
+

Configuration variables:

+
    +
  • include_archived (Optional): Whether to include archived ZoneMinder events in event counts. Default is false.
  • +
  • monitored_conditions array (Optional): Event count sensors to display in the frontend. Default is ‘all’. +
      +
    • all: All events.
    • +
    • month: Events in the last month.
    • +
    • week: Events in the last week.
    • +
    • day: Events in the last day.
    • +
    • hour: Events in the last hour.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/sensor.zwave/index.html b/components/sensor.zwave/index.html new file mode 100644 index 0000000000..1b75818e2e --- /dev/null +++ b/components/sensor.zwave/index.html @@ -0,0 +1,594 @@ + + + + + + + + + Z-Wave Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Sensor +

+
+
+

To get your Z-Wave sensors working with Home Assistant, follow the instructions for the general Z-Wave component.

+
+
+ +
+
+ + + + + + + diff --git a/components/sensor/index.html b/components/sensor/index.html new file mode 100644 index 0000000000..67ce22cd64 --- /dev/null +++ b/components/sensor/index.html @@ -0,0 +1,877 @@ + + + + + + + + + Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sensor +

+
+
+

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 web services, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms.

+
+
+ +
+
+ + + + + + + diff --git a/components/shell_command/index.html b/components/shell_command/index.html new file mode 100644 index 0000000000..129b5c6834 --- /dev/null +++ b/components/shell_command/index.html @@ -0,0 +1,242 @@ + + + + + + + + + Shell command - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Shell command +

+
+
+

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.

+
# Example configuration.yaml entry
+# Exposes service shell_command.restart_pow
+shell_command:
+  restart_pow: touch ~/.pow/restart.txt
+
+
+

Configuration variables:

+
    +
  • Alias for the command
  • +
  • Command itself.
  • +
+

The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn’t allow any shell helpers like automatically expanding the home dir ~ or using pipe symbols to run multiple commands.

+

Any service data passed into the service call to activate the shell command will be available as a variable within the template.

+

+# Apply value of a GUI slider to the shell_command
+automation:
+  - alias: run_set_ac
+    trigger:
+      platform: state
+      entity_id: input_number.ac_temperature
+    action:
+      service: shell_command.set_ac_to_slider
+
+input_number:
+  ac_temperature:
+    name: A/C Setting
+    initial: 24
+    min: 18
+    max: 32
+    step: 1
+    
+
+shell_command:
+  set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_number.ac_temperature.state }}_AUTO'
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/shiftr/index.html b/components/shiftr/index.html new file mode 100644 index 0000000000..09bc7d98a3 --- /dev/null +++ b/components/shiftr/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Shiftr.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Shiftr.io +

+
+
+

The shiftr component makes it possible to transfer details collected with Home Assistant to Shiftr.io and visualize the flow of the information. Keep in mind that your details will be public!

+

Create a new namespace and generate a new token. You will need to use Key (Username) and Secret (Password) to setup the component.

+

To use the shiftr component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+shiftr:
+  username: 63d8187f
+  password: 32fd92de6a59c3e2
+
+
+

Configuration variables:

+
    +
  • username (Required): Username for the namespace.
  • +
  • password (Required): Password for the namespace.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/shopping_list/index.html b/components/shopping_list/index.html new file mode 100644 index 0000000000..3da3478538 --- /dev/null +++ b/components/shopping_list/index.html @@ -0,0 +1,157 @@ + + + + + + + + + Shopping List - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Shopping List +

+
+
+

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

+
# Example configuration.yaml entry
+shopping_list:
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/skybell/index.html b/components/skybell/index.html new file mode 100644 index 0000000000..e652428339 --- /dev/null +++ b/components/skybell/index.html @@ -0,0 +1,486 @@ + + + + + + + + + Skybell - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybell +

+
+
+

The skybell implementation allows you to integrate your 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 account, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+skybell:
+  username: you@example.com
+  password: secret
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The username for accessing your Skybell account.

+
+
password
+
+

(string)(Required)The password for accessing your Skybell account.

+
+
+
+

Finish your configuration by visiting the Skybell binary sensor, Skybell camera, Skybell light, Skybell sensor, or Skybell switch documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/sleepiq/index.html b/components/sleepiq/index.html new file mode 100644 index 0000000000..9779a41808 --- /dev/null +++ b/components/sleepiq/index.html @@ -0,0 +1,468 @@ + + + + + + + + + SleepIQ - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SleepIQ +

+
+
+

The SleepIQ implementation lets you view sensor data from SleepIQ by SleepNumber. In particular, it lets you see the occupancy and current SleepNumber (ie current firmness) of each side of a SleepNumber bed.

+

You will need an account on SleepIQ to use this component.

+

To set it up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+sleepiq:
+  username: you@example.com
+  password: omgsecure
+
+
+

Configuration variables:

+
    +
  • username (Required): Your SleepIQ username (usually an email address).
  • +
  • password (Required): Your SleepIQ password.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/smappee/index.html b/components/smappee/index.html new file mode 100644 index 0000000000..7083a27fa1 --- /dev/null +++ b/components/smappee/index.html @@ -0,0 +1,489 @@ + + + + + + + + + Smappee - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Smappee +

+
+
+

Smappee controller for energy monitoring and Comport plug switches.

+

Switches and Sensors are supported - and will be automatically added when you connect to the Smappee controller.

+

The smappee component gets information from Smappee API using the smappy pypy module

+

+Info on how to get api access is described in the smappy wiki +

+

Configuration

+
# Example configuration.yaml entry
+smappee:
+    host: 10.0.0.5
+    client_id: YOUR_CLIENT_ID
+    client_secret: YOUR_CLIENT_SECRET
+    username: YOUR_MYSMAPPEE_USERNAME
+    password: YOUR_MYSMAPPEE_PASSWORD
+
+
+
# Minimal example configuration.yaml entry
+smappee:
+    host: 10.0.0.5
+
+
+
# Cloud only example configuration.yaml entry
+smappee:
+    client_id: YOUR_CLIENT_ID
+    client_secret: YOUR_CLIENT_SECRET
+    username: YOUR_MYSMAPPEE_USERNAME
+    password: YOUR_MYSMAPPEE_PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Optional): Your Local Smappee unit IP.
  • +
  • host_password (Optional): Your Local Smappee password.
  • +
  • client_id (Optional): Your Smappee API client_id.
  • +
  • client_secret (Optional): Your Smappee API client_secret.
  • +
  • username (Optional): Your My Smappee username.
  • +
  • password (Optional): Your My Smappee password.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/snips/index.html b/components/snips/index.html new file mode 100644 index 0000000000..8cb52bfb20 --- /dev/null +++ b/components/snips/index.html @@ -0,0 +1,376 @@ + + + + + + + + + Snips - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Snips +

+
+
+

The Snips Voice Platform 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.

+

The latest documentation can be found here: Snips Platform Documentation.

+

Snips Modules

+

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

+

The Snips Voice Platform

+

Installation

+

The Snips platform can be installed via the Snips APT/Debian repository. If you prefer to install the platform using the Docker distribution, check out our Docker Installation Guide.

+
$ sudo apt-get update
+$ sudo apt-get install -y dirmngr
+$ sudo bash -c  'echo "deb https://raspbian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list'
+$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys D4F50CDCA10A2849
+$ sudo apt-get update
+$ sudo apt-get install -y snips-platform-voice
+
+
+

Note: if the keyserver pgp.mit.edu is down try to use another one in the 4th line , like pgp.surfnet.nl:

+
sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849
+
+
+

Creating an assistant

+
+ +
+

Head over to the Snips Console to create your assistant. Launch the training and download by clicking on the “Download Assistant” button.

+

The next step is to get the assistant to work on your device. Unzip and copy the assistant folder that you downloaded from the web console to the path. Assuming your downloaded assistant folder is on your desktop, just run:

+
$ scp -r ~/Desktop/assistant pi@<raspi_hostname.local_or_IP>:/home/pi/.
+
+
+

Now ssh into your Raspberry Pi:

+
$ ssh pi@<raspi_hostname.local_or_IP>
+
+
+

By default, this command is ssh pi@raspberrypi.local, if you are using the default Raspberry Pi hostname.

+

Then, move the assistant to the right folder:

+
(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant
+
+
+

Note: if you already have an assistant installed and wish to replace it, start by removing the previous one, and then move the new one in its place:

+
(pi) $ sudo rm -r /usr/share/snips/assistant
+(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant
+
+
+

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.

+

Start the Snips Voice Platform by starting the snips-* services:

+
$ sudo systemctl start "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

+
+

As the Snips Platform parses this query into an intent, it will be published on MQTT, on the hermes/intent/<intentName> 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, we need to specify this in the /etc/snips.toml configuration file. For more information on configuring this, see the Using an external MQTT broker article.

+

Home Assistant configuration

+

Specifying the MQTT broker

+

Messages between Snips and Home Assistant are passed via MQTT. We can either point Snips to the MQTT broker used by Home Assistant, as explained above, or tell Home Assistant which MQTT broker to use by adding the following entry to the configuration.yaml file:

+
mqtt:
+  broker: MQTT_BROKER_IP
+  port: MQTT_BROKER_PORT
+
+
+

By default, Snips runs an MQTT broker on port 9898. So if we wish to use this broker, and if Snips and Home Assistant run on the same device, the entry will look as follows:

+
mqtt:
+  broker: 127.0.0.1
+  port: 9898
+
+
+

Alternatively, MQTT can be configured to bridge messages between servers if using a custom MQTT broker such as mosquitto.

+

Triggering actions

+

In Home Assistant, we trigger actions based on intents produced by Snips using the intent_script component. For instance, the following block handles a ActivateLightColor intent to change light colors:

+
snips:
+
+intent_script:
+  ActivateLightColor:
+    action:
+      - service: light.turn_on
+        data_template:
+          entity_id: light.{{ objectLocation | replace(" ","_") }}
+          color_name: {{ objectColor }}
+
+
+

In the data_template block, we have access to special variables, corresponding to the slot names for the intent. In the present case, the ActivateLightColor has two slots, objectLocation and objectColor.

+

Special slots

+

In the above example, the slots are plain strings. However, when more complex types are used, such as dates or time ranges, they will be transformed to rich Python objects, for example:

+
SetTimer:
+  speech:
+    type: plain
+    text: weather
+  action:
+    service: script.set_timer
+    data_template:
+      name: "{{ timer_name }}"
+      duration: "{{ timer_duration }}"
+      seconds: "{{ slots.timer_duration.value.seconds }}"
+      minutes: "{{ slots.timer_duration.value.minutes }}"
+      hours: "{{ slots.timer_duration.value.hours }}"
+
+
+

Sending TTS Notifications

+

You can send TTS notifications to Snips using the snips.say and snips.say_action services. Say_action starts a session and waits for user response, “Would you like me to close the garage door?”, “Yes, close the garage door”.

+

Service snips/say

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
textnoText to say.
site_idyesSite to use to start session.
custom_datayescustom data that will be included with all messages in this session.
+

Service snips/say_action

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
textnoText to say.
site_idyesSite to use to start session.
custom_datayescustom data that will be included with all messages in this session.
can_be_enqueuedyesIf True, session waits for an open session to end, if False session is dropped if one is running.
intent_filteryesArray of Strings - A list of intents names to restrict the NLU resolution to on the first query.
+

Configuration Examples

+
script:
+  turn_on_light:
+    sequence:
+      service: script.turn_on_light
+      service: snips.say
+        data:
+          text: 'OK, the light is now on'
+
+automation:
+  query_garage_door:
+    trigger:
+     - platform: state
+        entity_id: binary_sensor.my_garage_door_sensor
+        from: 'off'
+        to: 'on'
+        for:
+          minutes: 10
+    sequence:
+      service: snips.say_action
+        data:
+          text: 'Garage door has been open 10 minutes, would you like me to close it?'
+          intentFilter:
+            - closeGarageDoor
+
+# This intent is fired if the user responds with the appropriate intent after the above notification
+intent_script:
+  closeGarageDoor:
+    speech:
+      type: plain
+      text: 'OK, closing the garage door'
+    action:
+      - service: script.garage_door_close
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/spc/index.html b/components/spc/index.html new file mode 100644 index 0000000000..6e5c59b312 --- /dev/null +++ b/components/spc/index.html @@ -0,0 +1,466 @@ + + + + + + + + + SPC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SPC +

+
+
+

Home Assistant has support to integrate your Vanderbilt SPC alarm panel and any connected motion, door and smoke sensors.

+

Integration with SPC is done through a third-party API gateway called SPC Web Gateway which must be installed and configured somewhere on your network.

+

Home Assistant needs to know where to find the SPC Web Gateway API endpoints, to configure this add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+spc:
+  api_url: API_URL
+  ws_url: WS_URL
+
+
+

Configuration variables:

+
    +
  • api_url (Required): URL of the SPC Web Gateway command REST API, e.g. http://<ip>:8088.
  • +
  • ws_url (Required): URL of the SPC Web Gateway websocket, e.g. ws://<ip>:8088.
  • +
+

Supported sensors will be automatically discovered and added, however they will be hidden by default.

+
+
+ +
+
+ + + + + + + diff --git a/components/splunk/index.html b/components/splunk/index.html new file mode 100644 index 0000000000..adfe9fd410 --- /dev/null +++ b/components/splunk/index.html @@ -0,0 +1,206 @@ + + + + + + + + + Splunk - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Splunk +

+
+
+

The splunk component makes it possible to log all state changes to an external Splunk database using Splunk’s HTTP Event Collector (HEC) feature. You can either use this alone, or with the Home Assistant for Splunk app. Since the HEC feature is new to Splunk, you will need to use at least version 6.3.

+

To use the splunk component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+splunk:
+  token: B4415DFF-683C-5C6C-3994-4F6D4A5DB03A
+
+
+

Configuration variables:

+
    +
  • token (Required): The HTTP Event Collector Token already created in your Splunk instance.
  • +
  • host (Optional): IP address or host name of your Splunk host, eg. 192.168.1.10. Will default to localhost if not supplied.
  • +
  • port (Optional): Port to use. Defaults to 8088.
  • +
  • ssl (Optional): Use https instead of http to connect. Defaults to False.
  • +
  • name (Optional): This parameter allows you to specify a friendly to send to Splunk as the host, instead of using the name of the HEC. Defaults to HASS
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/statsd/index.html b/components/statsd/index.html new file mode 100644 index 0000000000..30dab4824e --- /dev/null +++ b/components/statsd/index.html @@ -0,0 +1,217 @@ + + + + + + + + + StatsD - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ StatsD +

+
+
+

The statsd component makes it possible to transfer all state changes to an external StatsD instance.

+

To use the statsd component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+statsd:
+
+
+

Configuration variables:

+
    +
  • host (Optional): IP address of your StatsD host, eg. 192.168.1.10. Defaults to localhost.
  • +
  • port (Optional): Port to use. Defaults to 8125.
  • +
  • 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:

+
# Example configuration.yaml entry
+statsd:
+  prefix: home
+  rate: 5
+  value_mapping:
+    cooling: 1
+    heating: 10
+
+
+

StatsD supports various backends.

+
+
+ +
+
+ + + + + + + diff --git a/components/sun/index.html b/components/sun/index.html new file mode 100644 index 0000000000..d1a52ddd86 --- /dev/null +++ b/components/sun/index.html @@ -0,0 +1,302 @@ + + + + + + + + + Sun - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sun +

+
+
+

The sun component will use your current location to track if the sun is above or below the horizon. The sun can be used within automation as a trigger with an optional offset to simulate dawn/dusk.

+
# Example configuration.yaml entry
+sun:
+
+
+

Configuration variables:

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

+ +

+

Implementation Details

+

The sun’s event listener will call the service when the sun rises or sets with an offset.

+

The sun event need to have the type ‘sun’, which service to call, which event (sunset or sunrise) and the offset.

+
{
+    "type": "sun",
+    "service": "switch.turn_on",
+    "event": "sunset",
+    "offset": "-01:00:00"
+}
+
+
+

Maintains entity sun.sun

+ + + + + + + + + + + + + + + + + +
Possible stateDescription
above_horizonWhen the sun is above the horizon.
below_horizonWhen the sun is below the horizon.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
State AttributesDescription
next_risingDate and time of the next sun rising (in UTC).
next_settingDate and time of the next sun setting (in UTC).
next_dawnDate and time of the next dawn (in UTC).
next_duskDate and time of the next dusk (in UTC).
next_noonDate and time of the next solar noon (in UTC).
next_midnightDate and time of the next solar midnight (in UTC).
elevationSolar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon.
azimuthSolar azimuth. The angle is shown clockwise from north.
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.abode/index.html b/components/switch.abode/index.html new file mode 100644 index 0000000000..7b0090dfc6 --- /dev/null +++ b/components/switch.abode/index.html @@ -0,0 +1,421 @@ + + + + + + + + + Abode Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Abode Switch +

+
+
+

The abode security control panel platform allows you to control your Abode 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.

+

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.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.acer_projector/index.html b/components/switch.acer_projector/index.html new file mode 100644 index 0000000000..6f84ff2c83 --- /dev/null +++ b/components/switch.acer_projector/index.html @@ -0,0 +1,403 @@ + + + + + + + + + Acer Projector Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Acer Projector Switch +

+
+
+

The acer_projector switch platform allows you to control the state of RS232 connected projectors from Acer.

+

To use your Acer Projector in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: acer_projector
+    filename: /dev/ttyUSB0
+
+
+

Configuration variables:

+
    +
  • filename (Required): The pipe where the projector is connected to.
  • +
  • name (Optional): The name to use when displaying this switch.
  • +
  • timeout (Optional): Timeout for the connection in seconds.
  • +
  • write_timeout (Optional): Write timeout in seconds.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.ads/index.html b/components/switch.ads/index.html new file mode 100644 index 0000000000..16872201bb --- /dev/null +++ b/components/switch.ads/index.html @@ -0,0 +1,427 @@ + + + + + + + + + ADS Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ADS Switch +

+
+
+

The ads switch platform accesses a boolean variable on the connected ADS device. The variable is identified by its name.

+

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml +file:

+
# Example configuration.yaml entry
+switch:
+  - platform: ads
+    adsvar: .global_bool
+
+
+
+

Configuration Variables

+
+
adsvar
+
+

(string)(Required)The name of the variable which you want to access on the ADS device.

+
+
name
+
+

(string)(Optional)An identifier for the switch in the frontend.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.android_ip_webcam/index.html b/components/switch.android_ip_webcam/index.html new file mode 100644 index 0000000000..8757e2b1a8 --- /dev/null +++ b/components/switch.android_ip_webcam/index.html @@ -0,0 +1,407 @@ + + + + + + + + + Android IP Webcam Settings - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Android IP Webcam Settings +

+
+
+

The android_ip_webcam switch platform lets you control settings of Android IP webcam through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.anel_pwrctrl/index.html b/components/switch.anel_pwrctrl/index.html new file mode 100644 index 0000000000..a089622c73 --- /dev/null +++ b/components/switch.anel_pwrctrl/index.html @@ -0,0 +1,413 @@ + + + + + + + + + ANEL PwrCtrl Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ANEL PwrCtrl Switch +

+
+
+

The anel_pwrctrl switch platform allows you to control ANEL PwrCtrl devices.

+

Supported devices (tested):

+
    +
  • PwrCtrl HUT
  • +
+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  platform: anel_pwrctrl
+  host: IP_ADDRESS
+  port_recv: PORT
+  port_send: PORT
+  username: USERNAME
+  password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Optional): The IP address or hostname of your PwrCtrl device.
  • +
  • port_recv (Required): The port to receive data from the device.
  • +
  • port_send (Required): The port to send data to the device.
  • +
  • username (Required): The username for your device.
  • +
  • password (Required): The password for your device.
  • +
+

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/components/switch.arduino/index.html b/components/switch.arduino/index.html new file mode 100644 index 0000000000..92cd69b5c4 --- /dev/null +++ b/components/switch.arduino/index.html @@ -0,0 +1,264 @@ + + + + + + + + + Arduino Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Arduino Switch +

+
+
+

The arduino switch platform allows you to control the digital pins of your Arduino board. Support for switching pins is limited to high/on and low/off of the digital pins. PWM (pin 3, 5, 6, 9, 10, and 11 on an Arduino Uno) is not supported yet.

+

To enable the Arduino pins with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  platform: arduino
+  pins:
+    11:
+      name: Fan Office
+    12:
+      name: Light Desk
+      initial: true
+      negate: true
+
+
+
+

Configuration Variables

+
+
pins
+
+

(map)(Required)List of of pins to use.

+
+
+
+
pin_number
+
+

(map)(Required)The pin number that corresponds with the pin numbering schema of your board.

+
+
+
+
name
+
+

(string)(Optional)

+

Default value: Name that will be used in the frontend for the pin.

+
+
initial
+
+

(boolean)(Optional)

+

Default value: false

+
+
negate
+
+

(boolean)(Optional)

+

Default value: false

+
+
+
+
+
+
+
+

The digital pins are numbered from 0 to 13 on a Arduino UNO. The available pins are 2 till 13. For testing purposes you can use pin 13 because with that pin you can control the internal LED.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.arest/index.html b/components/switch.arest/index.html new file mode 100644 index 0000000000..224a06578e --- /dev/null +++ b/components/switch.arest/index.html @@ -0,0 +1,443 @@ + + + + + + + + + aREST Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ aREST Switch +

+
+
+

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

+

To use your aREST enabled device with pins in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: arest
+    resource: http://IP_ADDRESS
+    pins:
+      11:
+        name: Fan
+
+
+

If you want to use custom functions, then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: arest
+    resource: http://IP_ADDRESS
+    name: Office
+    functions:
+      function1:
+        name: Light Desk
+
+
+

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

or

+
    +
  • functions array (Optional): An array with all used functions. +
      +
    • name (Required): The name to use in the frontend.
    • +
    +
  • +
+

You can still switch your pins with a web browser or a command line tool. Use the URL http://192.168.1.10/digital/8/1 to set pin 8 to high/on, the JSON response will give you the feedback.

+
{"message": "Pin D8 set to 1", "id": "sensor02", "name": "livingroom", "connected": true}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.bbb_gpio/index.html b/components/switch.bbb_gpio/index.html new file mode 100644 index 0000000000..ced2a0d01e --- /dev/null +++ b/components/switch.bbb_gpio/index.html @@ -0,0 +1,426 @@ + + + + + + + + + BeagleBone Black GPIO Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BeagleBone Black GPIO Switch +

+
+
+

The bbb_gpio switch platform allows you to control the GPIOs of your BeagleBone Black.

+

To use yourBeagleBone Black’s GPIO in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: bbb_gpio
+    pins:
+      GPIO0_7:
+        name: LED Red
+      P9_12:
+        name: LED Green
+
+
+

Configuration variables:

+
    +
  • pins array (Required): Array of used ports. +
      +
    • pin_name (Required): Port numbers and corresponding names. +
        +
      • name (Optional): Friendly name to use for the frontend.
      • +
      • initial (Optional): Initial state of the pin. Defaults to False.
      • +
      • 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 article about the BeagleBone Black.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.broadlink/index.html b/components/switch.broadlink/index.html new file mode 100644 index 0000000000..d5d7b3616d --- /dev/null +++ b/components/switch.broadlink/index.html @@ -0,0 +1,580 @@ + + + + + + + + + Broadlink RM Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Broadlink RM Switch +

+
+
+

This Broadlink switch platform allow to you control Broadlink devices.

+

To enable it, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+switch:
+  - platform: broadlink
+    host: IP_ADDRESS
+    mac: 'MAC_ADDRESS'
+
+
+

Configuration variables:

+
    +
  • host (Required): The hostname/IP address to connect to.
  • +
  • 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 (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

+

How to obtain IR/RF packets?

+

Choose Call Service from the Developer Tools. Choose the service switch.broadlink_learn_command from the list of Available services: and hit CALL SERVICE. Press the button on your remote with in 20 seconds. The packet will be printed as a persistent notification in the States page of the web interface.

+

Example config for rm, rm2, rm_mini, rm_pro_phicomm, rm2_home_plus, rm2_home_plus_gdt, rm2_pro_plus, rm2_pro_plus2, rm2_pro_plus_bl and rm_mini_shate devices:

+
switch:
+  - platform: broadlink
+    host: 192.168.1.2
+    mac: 'B4:43:0D:CC:0F:58'
+    timeout: 15
+    switches:
+      # Will work on most Phillips TVs:
+      tv_phillips:
+        friendly_name: "Phillips Tv Power"
+        command_on: 'JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA='
+        command_off: 'JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA='
+      # Will work on most LG TVs
+      tv_lg:
+        friendly_name: "LG Tv Power"
+        command_on: 'JgBYAAABIJISExETETcSEhISEhQQFBETETcROBESEjcRNhM1EjcTNRMTERISNxEUERMSExE2EjYSNhM2EhIROBE3ETcREhITEgAFGwABH0oSAAwzAAEfShEADQU='
+        command_off: 'JgBYAAABIJISExETETcSEhISEhQQFBETETcROBESEjcRNhM1EjcTNRMTERISNxEUERMSExE2EjYSNhM2EhIROBE3ETcREhITEgAFGwABH0oSAAwzAAEfShEADQU='
+      tv_lg_hdmi1_hdmi2:
+        friendly_name: "LG Tv HDMI12"
+        command_on: 'JgBIAAABIZMRExITEjYSExMRERURExEUEDkRNxEUEjYSNhM3ETcSNxITETgSNhI2ExMQExE4ETYSNxIUERMSExE4ETcRFBETEQANBQ=='
+        command_off: 'JgBQAAABJJMSEhISETgSEhITEBMSEhMSETcSNxMREjcSNxI3EjcSOBETERITNhM2EhITERM2EzcRNxI3ExISEhI3EjcRExETEgAFLQABJEoRAA0FAAAAAAAAAAA='
+      tv_lg_hdmi3:
+        friendly_name: "LG Tv HDMI3"
+        command_on: 'JgBIAAABIZMSFBISETgRExEUERQQFBETEjcTNhMSETgRNxE3EjcROBM2ERMSFBE4ERMSNxM2EjUSFBE2ETgRExM2ExITEhATEwANBQ=='
+      tv_lg_av1_av2:
+        friendly_name: "LG Tv AV12"
+        command_on: 'JgBIAAABIpQPFBITETgSEw8UEhQSEhEVDzgSOBAUETgQOQ84EjgRNxITETgSExA5EDgREhI3EhMROBMSEDkQFBETEjYTEhE4EQANBQ=='
+        command_off: 'JgBIAAABH5YPFBETETgUERAUEBURFBATETgROBEUETcSNxE4ETcSOBISEBUQFREUEjUSFBA5ETcRNxE4ETkQOBAUEjcRFRAUEQANBQ=='
+  - platform: broadlink
+    host: 192.168.1.2
+    mac: 'B4:43:0D:CC:0F:58'
+    timeout: 15
+    switches:
+    # Will work on most Phillips TVs:
+      tv:
+        friendly_name: "Phillips Tv"
+        command_on: 'JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA='
+        command_off: 'JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA='
+
+
+

Example config for sp1, sp2, honeywell_sp2, sp3, spmini2 and spminiplus devices:

+
switch:
+  - platform: broadlink
+    host: IP_ADDRESS
+    mac: 'MAC_ADDRESS'
+    type:  sp1
+    friendly_name: 'Humidifier'
+  - platform: broadlink
+    host: IP_ADDRESS
+    mac: 'MAC_ADDRESS'
+    type:  sp2
+    friendly_name: 'Humidifier'
+
+
+

Example config for mp1 device:

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

Service broadlink_send_packet

+

You can use the service switch.broadlink_send_packet to directly send IR packets without the need to assign a switch entity for each command.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
packetnoString or list of strings that contain the packet data.
+

Example:

+
script:
+  tv_select_source:
+    sequence:
+      - service: switch.broadlink_send_packet_192_168_0_107
+        data:
+          packet: 
+            - "JgCMAJSSFDYUNhQ2FBEUERQRFBEUERQ2FDYUNhQRFBEUERQRFBEUERQRFDYUERQRFBEUERQRFDYUNhQRFDYUNhQ2FDYUNhQABfWUkhQ2FDYUNhQRFBEUERQRFBEUNhQ2FDYUERQRFBEUERQRFBEUERQ2FBEUERQRFBEUERQ2FDYUERQ2FDYUNhQ2FDYUAA0FAAAAAAAAAAAAAAAA"
+            - "JgBGAJSTFDUUNhM2ExITEhMSExITEhM2EzYTNhQRFBEUERQRFBEUNRQ2ExITNhMSExITNhMSExITEhM2ExITNhQ1FBEUNhMADQUAAA=="
+
+
+

Using E-Control Remotes

+

If you already have your remotes learned on E-Control app you can use this method to “copy” them to Home Assistant.

+

First get or learn all the remotes you want to add to Home Assistant in E-Control

+
    +
  1. +

    Download

    +

    Get the script from here.

    +
  2. +
  3. +

    Dump the data from the app

    +

    Open the E-Control app on your mobile device. On the left side menu choose “Share” and then “Share to other phones in WLAN”. It will generate the files you will need for the script.

    +
  4. +
  5. +

    Get data from your Android device

    +

    Connect your Android device to your computer and browse the SD card/External Storage folder “/broadlink/newremote/SharedData/”. You need to get the following files and put them in the same folder as this script:

    +

    jsonSubIr + jsonButton + jsonIrCode

    +
  6. +
  7. +

    Install Requirements

    +

    Run pip install simplejson. You must install simplejson in the same python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see “Requirement already satisfied”.

    +
  8. +
  9. +

    Get the data from the device

    +

    Navigate to the folder you downloaded and run python getBroadlinkSharedData.py. Follow the steps on screen. NOTE: These scripts were only tested with Python 2.7.

    +
  10. +
  11. +

    Install python-broadlink library:

    +
  12. +
  13. git clone https://github.com/mjg59/python-broadlink.git
  14. +
  15. cd python-broadlink
  16. +
  17. +

    sudo python setup.py install

    +
  18. +
  19. +

    Test the codes +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… +Not every code works.

    +
  20. +
  21. Convert the HEX codes to base64 +Use this tool to convert the hex codes to base64 for use with Home Assistant.
  22. +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.command_line/index.html b/components/switch.command_line/index.html new file mode 100644 index 0000000000..106b33cc51 --- /dev/null +++ b/components/switch.command_line/index.html @@ -0,0 +1,492 @@ + + + + + + + + + Command line Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Command line Switch +

+
+
+

The command_line switch platform issues specific commands when it is turned on and off. This might very well become our most powerful platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

+

To enable it, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+switch:
+  - platform: command_line
+    switches:
+      kitchen_light:
+        command_on: switch_command on kitchen
+        command_off: switch_command off kitchen
+
+
+

Configuration variables:

+
    +
  • switches (Required): The array that contains all command switches. +
      +
    • identifier (Required): Name of the command switch as slug. Multiple entries are possible. +
        +
      • command_on (Required): The action to take for on.
      • +
      • command_off (Required): The action to take for off.
      • +
      • command_state (Optional): If given, this command will be run. Returning a result code 0 will indicate that the switch is on.
      • +
      • value_template (Optional): If specified, command_state will ignore the result code of the command but the template evaluating to true will indicate the switch is on.
      • +
      • friendly_name (Optional): The name used to display the switch in the frontend.
      • +
      +
    • +
    +
  • +
+

A note on friendly_name:

+

When set, the friendly_name had been previously used for API calls and backend configuration instead of the object_id (“identifier”), but this behavior is changing to make the friendly_name for display purposes only. This allows users to set an identifier that emphasizes uniqueness and predictability for API and config purposes but have a prettier friendly_name still show up in the UI. As an additional benefit, if a user wanted to change the friendly_name / display name (e.g. from “Kitchen Lightswitch” to “Kitchen Switch” or “Living Room Light”, or remove the friendly_name altogether), he or she could do so without needing to change existing automations or API calls. See aREST device below for an example.

+

Examples

+

In this section you find some real life examples of how to use this switch.

+

aREST device

+

The example below is doing the same as the aREST switch. The command line tool curl is used to toggle a pin which is controllable through REST.

+
# Example configuration.yaml entry
+switch:
+  platform: command_line
+  switches:
+    arest_pin_four:
+      command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1"
+      command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0"
+      command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4"
+      value_template: '{{ value == "1" }}'
+      friendly_name: Kitchen Lightswitch
+
+
+

Given this example, in the UI one would see the friendly_name of “Kitchen Light”. However, the identifier is arest_pin_four, making the entity_id switch.arest_pin_four, which is what one would use in automation or in API calls.

+

Shutdown your local host

+

This switch will shutdown your system that is hosting Home Assistant.

+

+This switch will shutdown your host immediately, there will be no confirmation. +

+
# Example configuration.yaml entry
+switch:
+  platform: command_line
+  switches:
+    home_assistant_system_shutdown:
+      command_off: "/usr/sbin/poweroff"
+
+
+

Control your VLC player

+

This switch will control a local VLC media player (Source).

+
# Example configuration.yaml entry
+switch:
+  platform: command_line
+  switches:
+    vlc:
+      command_on: "cvlc 1.mp3 vlc://quit &"
+      command_off: "pkill vlc"
+
+
+

Control Foscam Motion Sensor

+

This switch will control the motion sensor of Foscam Webcams which Support CGI Commands (Source). This switch supports statecmd, which checks the current state of motion detection.

+
# Example configuration.yaml entry
+switch:
+  platform: command_line
+  switches:
+    foscam_motion:
+      command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'
+      command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'
+      command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=</isEnable>)"'
+      value_template: '{{ value == "1" }}'
+
+
+
    +
  • Replace admin and password with an “Admin” privileged Foscam user
  • +
  • Replace ipaddress with the local IP address of your Foscam
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.deluge/index.html b/components/switch.deluge/index.html new file mode 100644 index 0000000000..4a5b48a00d --- /dev/null +++ b/components/switch.deluge/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Deluge Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Deluge Switch +

+
+
+

The deluge switch platform allows you to control your Deluge 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:

+
# 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/components/switch.digital_ocean/index.html b/components/switch.digital_ocean/index.html new file mode 100644 index 0000000000..10495651aa --- /dev/null +++ b/components/switch.digital_ocean/index.html @@ -0,0 +1,418 @@ + + + + + + + + + Digital Ocean Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Digital Ocean Switch +

+
+
+

The digital_ocean switch platform allows you to control (start/stop) your Digital Ocean droplets.

+

To use your Digital Ocean droplets, you first have to set up your Digital Ocean hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: digital_ocean
+    droplets:
+      - 'fedora-512mb-nyc3-01'
+      - 'coreos-512mb-nyc3-01'
+
+
+
+

Configuration Variables

+
+
droplets
+
+

(list)(Required)List of droplets you want to control.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.digitalloggers/index.html b/components/switch.digitalloggers/index.html new file mode 100644 index 0000000000..9a642fd28b --- /dev/null +++ b/components/switch.digitalloggers/index.html @@ -0,0 +1,411 @@ + + + + + + + + + Digital Loggers Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Digital Loggers Switch +

+
+
+

The digitalloggers switch platform allows you to control the state of your Digital Loggers switches.

+

To use your digitalloggers switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: digitalloggers
+    host: 192.168.1.43
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or FQDN of your DIN III relay, eg. 192.168.1.32 or myrelay.example.com.
  • +
  • name (Optional): The name to use when controlling this relay. Default: DINRelay.
  • +
  • username (Optional): Credentials for controlling this relay. Default: admin.
  • +
  • password (Optional): Credentials for controlling this relay. Default: admin.
  • +
  • timeout (Optional): Default timeout as set by the underlying python-dlipower library is 20 seconds. Override it if you need to. Valid range is 1 to 600.
  • +
  • cycletime (Optional): This is the delay enforced by the library when you send multiple commands to the same device. The default relay cycle time is 2 seconds. Override it if you need to. Valid range is 1 to 600. A delay is a recommendation of Digital Loggers: +
    +

    Many loads draw more power when they are initially switched on. Sequencing prevents circuit overloads when loads devices are attached to a single circuit.

    +
    +
  • +
+

Your relays will be available in the form switch.fantasticrelaydevice_individualrelayname

+

Note: There is currently a limitation of the dlipower library used by the digitalloggers component that communication is only available over port 80.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.dlink/index.html b/components/switch.dlink/index.html new file mode 100644 index 0000000000..36f0ead4d0 --- /dev/null +++ b/components/switch.dlink/index.html @@ -0,0 +1,411 @@ + + + + + + + + + D-Link Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ D-Link Switch +

+
+
+

The dlink switch platform allows you to control the state of your D-Link Wi-Fi Smart Plugs.

+

Supported devices (tested):

+
    +
  • DSP-W215
  • +
  • DSP-W110
  • +
+

To use your D-Link smart plugs in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  platform: dlink
+  host: IP_ADRRESS
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your D-Link plug, eg. http://192.168.1.32
  • +
  • name (Optional): The name to use when displaying this switch.
  • +
  • username (Required): The username for your plug. Defaults to admin.
  • +
  • password (Required): The password for your plug. Default password is the PIN included on the configuration card.
  • +
  • use_legacy_protocol (Optional): Enable limited support for legacy firmware protocols (Tested with v1.24).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.doorbird/index.html b/components/switch.doorbird/index.html new file mode 100644 index 0000000000..55f2c69966 --- /dev/null +++ b/components/switch.doorbird/index.html @@ -0,0 +1,416 @@ + + + + + + + + + DoorBird Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ DoorBird Switch +

+
+
+

The doorbird switch platform allows you to power relays in your DoorBird video doorbell device.

+

+ You must have the DoorBird component configured to use this switch. +

+

To enable this switch, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: doorbird
+    switches:
+      - light_on
+      - open_door
+
+
+

Configuration 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/components/switch.edimax/index.html b/components/switch.edimax/index.html new file mode 100644 index 0000000000..e9b31ee174 --- /dev/null +++ b/components/switch.edimax/index.html @@ -0,0 +1,400 @@ + + + + + + + + + Edimax Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Edimax Switch +

+
+
+

This edimax switch platform allows you to control the state of your Edimax switches.

+

To use your Edimax switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: edimax
+    host: 192.168.1.32
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your Edimax switch, eg. 192.168.1.32.
  • +
  • username (Optional): Your username for the Edimax switch. Defaults to admin.
  • +
  • password (Optional): Your password for the Edimax switch. Defaults to 1234.
  • +
  • name (Optional): The name to use when displaying this switch.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.enocean/index.html b/components/switch.enocean/index.html new file mode 100644 index 0000000000..bea62bbb04 --- /dev/null +++ b/components/switch.enocean/index.html @@ -0,0 +1,418 @@ + + + + + + + + + EnOcean Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ EnOcean Switch +

+
+
+

An EnOcean switch can take many forms. Currently only one type has been tested: Permundo PSC234

+

To use your EnOcean device, you first have to set up your EnOcean hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: enocean
+    id: [0x01,0x90,0x84,0x3C]
+
+
+

Configuration variables:

+
    +
  • id (Required): The ID of the device. This is a 4 bytes long number.
  • +
  • name (Optional): An identifier for the switch. Default to EnOcean Switch.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.flux/index.html b/components/switch.flux/index.html new file mode 100644 index 0000000000..ae546e1497 --- /dev/null +++ b/components/switch.flux/index.html @@ -0,0 +1,263 @@ + + + + + + + + + Flux Light Adjustment - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Flux Light Adjustment +

+
+
+

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 time of day. It will only affect lights that are turned on and listed in the flux configuration.

+

During the day (in between start time and sunset time), it will fade the lights from the start_colortemp to the sunset_colortemp. After sunset (between sunset_time and stop_time), the lights will fade from the sunset_colortemp to the stop_colortemp. If the lights are still on after the stop_time it will continue to change the light to the stop_colortemp until the light is turned off. The fade effect is created by updating the lights periodically.

+

The color temperature is specified kelvin, and accepted values are between 1000 and 40000 kelvin. Lower values will seem more red, while higher will look more white.

+

If you want to update at variable intervals, you can leave the switch turned off and use automation rules that call the service switch.<name>_update whenever you want the lights updated, where <name> equals the name: property in the switch configuration.

+

To use the Flux switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: flux
+    lights:
+      - light.desk
+      - light.lamp
+
+
+

Configuration variables:

+
    +
  • lights (Required) array: List of light entities.
  • +
  • name (Optional): The name to use when displaying this switch.
  • +
  • start_time (Optional): The start time. Default to sunrise.
  • +
  • stop_time (Optional): The stop time. Defaults to dusk.
  • +
  • start_colortemp (Optional): The color temperature at the start. Defaults to 4000.
  • +
  • sunset_colortemp (Optional): The sun set color temperature. Defaults to 3000.
  • +
  • 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, mired and rgb. Defaults to xy.
  • +
  • transition (Optional): Transition time for the light changes (high values may not be supported by all light models). Defaults to 30.
  • +
  • interval (Optional): Frequency at which the lights should be updated. Defaults to 30.
  • +
+

Full example:

+
# 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
+    transition: 30
+    interval: 60
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.fritzdect/index.html b/components/switch.fritzdect/index.html new file mode 100644 index 0000000000..e6ba157c79 --- /dev/null +++ b/components/switch.fritzdect/index.html @@ -0,0 +1,416 @@ + + + + + + + + + AVM FRITZ!DECT Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ AVM FRITZ!DECT Switch +

+
+
+

The fritzdect switch platform allows you to control the state of your AVM FRITZ!DECT DECT-based wireless switches. The AVM FRITZ!DECT switches need to be paired to your Fritz!Box and then can be monitored and controlled via Home Assistant.

+

Supported devices (tested):

+
    +
  • FRITZ!DECT 200
  • +
+

Supported Firmwares (tested):

+
    +
  • FRITZ!OS: 06.80 / FRITZ!DECT: 03.83
  • +
  • FRITZ!OS: 06.98-51288 (Beta) / FRITZ!DECT: 03.87
  • +
+

To use your AVM FRITZ!DECT switch(es) in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: fritzdect
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): The username for your Fritz!Box.
  • +
  • password (Required): The password for your Fritz!Box.
  • +
  • host (Optional): The IP address/hostname of your Fritz!Box. Defaults to fritz.box.
  • +
+

It is recommened to create a dedicated user for Home Assistant and only allow access to “Smart Home”.

+

+If this component throws an error when starting home-assistant you should check if all actors are plugged in and connected to the FritzBox. Inactive actors that are not deleted from FritzBox configuration might lead to errors. +

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.gc100/index.html b/components/switch.gc100/index.html new file mode 100644 index 0000000000..923fe3d11e --- /dev/null +++ b/components/switch.gc100/index.html @@ -0,0 +1,412 @@ + + + + + + + + + gc100 Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ gc100 Switch +

+
+
+

This allows you to control and monitor the relay state on your GC100.

+

To enable this switch, you first have to set up gc100, and add the following lines to your configuration.yaml file:

+
# 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/components/switch.hikvisioncam/index.html b/components/switch.hikvisioncam/index.html new file mode 100644 index 0000000000..cc579f95e0 --- /dev/null +++ b/components/switch.hikvisioncam/index.html @@ -0,0 +1,404 @@ + + + + + + + + + Hikvision Camera Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hikvision Camera Switch +

+
+
+

This hikvisioncam switch platform allows you to control your motion detection setting on your Hikvision camera.

+

+Currently works using default https port only. +

+

To use your Hikvision cam in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: hikvisioncam
+    host: 192.168.1.32
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your Hikvision camera, eg. 192.168.1.32.
  • +
  • port (Optional): The port to connect to your Hikvision camera. Defaults to 80.
  • +
  • name (Optional): This parameter allows you to override the name of your camera.
  • +
  • username (Optional): The username for accessing your Hikvision camera. Defaults to admin.
  • +
  • password (Optional): The password to access your Hikvision camera. Defaults to 12345.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.hive/index.html b/components/switch.hive/index.html new file mode 100644 index 0000000000..76fac6c891 --- /dev/null +++ b/components/switch.hive/index.html @@ -0,0 +1,416 @@ + + + + + + + + + Hive Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hive Switch +

+
+
+

The ‘hive’ switch component integrates your Hive plugs into Home Assistant, enabling control of your devices.

+

The Hive switch component supports the following Hive products:

+
    +
  • Hive Active Plug
  • +
+

+Full configuration details can be found on the main Hive component page. +

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.homematic/index.html b/components/switch.homematic/index.html new file mode 100644 index 0000000000..2f597eee41 --- /dev/null +++ b/components/switch.homematic/index.html @@ -0,0 +1,413 @@ + + + + + + + + + Homematic Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Homematic Switch +

+
+
+

The homematic switch platform lets you control Homematic switches through Home Assistant.

+

Devices will be configured automatically. Please refer to the component configuration on how to setup Homematic.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.hook/index.html b/components/switch.hook/index.html new file mode 100644 index 0000000000..c40f696e45 --- /dev/null +++ b/components/switch.hook/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Hook Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hook Switch +

+
+
+

The hook component allows you to control the Hook Smart Home Hub from within Home Assistant.

+

Hook allows you to control cheap mains electrical outlets, like these ones at Amazon.

+

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. This Home Assistant component reads in devices that have been set up in the official app.

+

Configure with either your username/password or your API token for the official app.

+
# Example configuration.yaml entry
+switch: 
+  -  platform: hook
+     username: <email address>
+     password: !secret hook
+
+
+

Or

+
# Example configuration.yaml entry
+switch:
+  -  platform: hook
+     token: <your API token>
+
+
+

Extra debug logging is available, if you need it.

+
# Example configuration.yaml entry
+logger:
+  default: error
+  logs:
+    homeassistant.components.switch.hook: debug
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.ihc/index.html b/components/switch.ihc/index.html new file mode 100644 index 0000000000..1989df048a --- /dev/null +++ b/components/switch.ihc/index.html @@ -0,0 +1,447 @@ + + + + + + + + + IHC Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IHC Switch +

+
+
+

Before you can use the IHC Switch platform, you must setup the IHC Component

+

When auto setup is enabled the following products will be found in the ihc project and setup as switch devices:

+
    +
  • Wireless plug outlet
  • +
  • Wireless relay
  • +
  • Mobile wireless relay
  • +
  • Dataline plug outlet
  • +
+

To manually configure IHC switches insert this section in your configuration:

+
switch:
+    - platform: ihc
+    auto_setup: True
+    switches:
+        - id: 12345
+          name: myswitch
+        - id: 12346
+        ....
+
+
+
+

Configuration Variables

+
+
switches
+
+

(map)(Optional)List of switches to setup manually

+
+
+
+
id
+
+

(int)(Required)The IHC resource id.

+
+
name
+
+

(string)(Optional)The name of the component

+
+
+
+
+
+

The resource id should be a boolean resource. (On/Off) +For more information about IHC resource ids see Manual Setup

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.insteon_local/index.html b/components/switch.insteon_local/index.html new file mode 100644 index 0000000000..98ccd6fc3b --- /dev/null +++ b/components/switch.insteon_local/index.html @@ -0,0 +1,398 @@ + + + + + + + + + Insteon (Local) Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon (Local) Switch +

+
+
+

The insteon_local switch component lets you control your switches connected to an Insteon Hub with Home Assistant.

+

To get your insteon switches working with Home Assistant, follow the instructions for the general Insteon local component. The switches will be automatically disovered and added to Home Assistant. The device names will be the Insteon address of the switch.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.insteon_plm/index.html b/components/switch.insteon_plm/index.html new file mode 100644 index 0000000000..cfed8eddf2 --- /dev/null +++ b/components/switch.insteon_plm/index.html @@ -0,0 +1,409 @@ + + + + + + + + + Insteon PLM Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Insteon PLM Switch +

+
+
+

The insteon_plm switch platform lets you control your on/off switches through +an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a +USB or serial port. To add support, set up the primary insteon_plm +component.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.isy994/index.html b/components/switch.isy994/index.html new file mode 100644 index 0000000000..bb71aafd5d --- /dev/null +++ b/components/switch.isy994/index.html @@ -0,0 +1,413 @@ + + + + + + + + + ISY994 Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ISY994 Switch +

+
+
+

The isy994 platform allows you to get data from your ISY994 switch from within Home Assistant.

+

They will be automatically discovered if the isy994 component is loaded.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.kankun/index.html b/components/switch.kankun/index.html new file mode 100644 index 0000000000..ab617ff5be --- /dev/null +++ b/components/switch.kankun/index.html @@ -0,0 +1,418 @@ + + + + + + + + + Kankun SP3 Wifi Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Kankun SP3 Wifi Switch +

+
+
+

The kankun switch platform allows you to toggle customized Kankun SP3 Wifi switches. Switches are +modified to include the json.cgi +script to provide a HTTP API. Details of the necessary modifications can be found +here (be sure to install the JSON version +of the script as linked above).

+

To enable it, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+switch:
+  platform: kankun
+  switches:
+    bedroom_heating:
+      host: hostname_or_ipaddr
+
+
+

Configuration variables:

+
    +
  • switches (Required): The array that contains all Kankun switches. +
      +
    • identifier (Required): Name of the Kankun switch as slug. Multiple entries are possible. +
        +
      • host (Required): Hostname or IP address of the switch on the local network.
      • +
      • name (Optional): Friendly name of the switch.
      • +
      • port (Optional): HTTP connection port, defaults to 80.
      • +
      • path (Optional): Path of CGI script, defaults to /cgi-bin/json.cgi.
      • +
      • username (Optional): Username for basic authentication.
      • +
      • password (Optional): Password for basic authentication.
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.knx/index.html b/components/switch.knx/index.html new file mode 100644 index 0000000000..b7efcdb687 --- /dev/null +++ b/components/switch.knx/index.html @@ -0,0 +1,433 @@ + + + + + + + + + KNX Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ KNX Switch +

+
+
+

The knx switch component is used as in interface to switching actuators.

+

The knx component must be configured correctly, see KNX Component.

+

To use your KNX switch in your installation, add the following to your configuration.yaml file:

+
switch:
+  - platform: knx
+    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.
  • +
+

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/components/switch.litejet/index.html b/components/switch.litejet/index.html new file mode 100644 index 0000000000..59603c69e2 --- /dev/null +++ b/components/switch.litejet/index.html @@ -0,0 +1,402 @@ + + + + + + + + + LiteJet Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ LiteJet Switch +

+
+
+

To get your LiteJet switches working with Home Assistant, follow the instructions for the general LiteJet component.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.lutron_caseta/index.html b/components/switch.lutron_caseta/index.html new file mode 100644 index 0000000000..97a3e7b5c6 --- /dev/null +++ b/components/switch.lutron_caseta/index.html @@ -0,0 +1,407 @@ + + + + + + + + + Lutron Caseta Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Lutron Caseta Switch +

+
+
+

To get Lutron Caseta switches working with Home Assistant, follow the instructions for the general Lutron Caseta component.

+

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.

+

For more information on working with switches in Home Assistant, see the Switches component.

+

Available services: switch.turn_on and switch.turn_off.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.mfi/index.html b/components/switch.mfi/index.html new file mode 100644 index 0000000000..bad6a898d3 --- /dev/null +++ b/components/switch.mfi/index.html @@ -0,0 +1,412 @@ + + + + + + + + + mFi Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ mFi Switch +

+
+
+

The mfi switch platform to allow you to control mFi Controllable Power Outlets.

+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: mfi
+    host: IP_ADDRESS
+    username: USERNAME
+    password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or hostname of your mFi controller.
  • +
  • port (Optional): The port of your mFi controller. Defaults to 6443.
  • +
  • username (Required): The mFi admin username.
  • +
  • password (Required): The mFi admin user’s password.
  • +
  • ssl (Optional): If True, use SSL/TLS to contact the mFi controller. Defaults to True.
  • +
  • verify_ssl (Optional): Set this to False if your mFi controller has a self-signed certificate. Defaults to True.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.mochad/index.html b/components/switch.mochad/index.html new file mode 100644 index 0000000000..d14c696e06 --- /dev/null +++ b/components/switch.mochad/index.html @@ -0,0 +1,414 @@ + + + + + + + + + Mochad Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Mochad Switch +

+
+
+

The mochad switch platform lets you control an X10 enabled switch device.

+

To enable this sensor, you first have to set up the mochad component and then add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+switch:
+  - platform: mochad
+    devices:
+      - address: a1
+      - address: a5
+
+
+

Configuration variables:

+
    +
  • address (Required): The X10 address of the switch.
  • +
  • name (Optional): The name of the switch. Default is: x10switch_devaddress.
  • +
  • comm_type (Optional): pl (powerline) or rf (radio frequency). Default is pl.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.modbus/index.html b/components/switch.modbus/index.html new file mode 100644 index 0000000000..18e7e3b102 --- /dev/null +++ b/components/switch.modbus/index.html @@ -0,0 +1,447 @@ + + + + + + + + + Modbus Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Modbus Switch +

+
+
+

The modbus switch platform allows you to control Modbus coils or registers.

+

To use your Modbus switches in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+switch:
+  platform: modbus
+  slave: 1
+  coils:
+    - name: Switch1
+      slave: 1
+      coil: 13
+    - name: Switch2
+      slave: 2
+      coil: 14
+  registers:
+    - name: Register1
+      slave: 1
+      register: 11
+      command_on: 1
+      command_off: 0
+
+
+

Configuration variables:

+
    +
  • coils (Optional): A list of relevant coils to read from/write to. +
      +
    • slave (Required): The number of the slave (can be omitted for tcp and udp Modbus).
    • +
    • name (Required): Name of the switch.
    • +
    • coil (Required): Coil number.
    • +
    +
  • +
  • registers (Optional): A list of relevant registers to read from/write to. +
      +
    • slave (Required): The number of the slave (can be omitted for tcp and udp Modbus).
    • +
    • name (Required): Name of the switch.
    • +
    • register (Required): Register number.
    • +
    • command_on (Required): Value to write to turn on the switch.
    • +
    • command_off (Required): Value to write to turn off the switch.
    • +
    • verify_state (Optional): Define if is possible to readback the status of the switch. (default: True)
    • +
    • verify_register (Optional): Register to readback. (default: same as register)
    • +
    • register_type (Optional): Modbus register type: holding or input. (default: holding)
    • +
    • state_on (Optional): Register value when switch is on. (default: same as command_on)
    • +
    • state_off (Optional): Register value when switch is off. (default: same as command_off)
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.mqtt/index.html b/components/switch.mqtt/index.html new file mode 100644 index 0000000000..d3b68bb6e4 --- /dev/null +++ b/components/switch.mqtt/index.html @@ -0,0 +1,546 @@ + + + + + + + + + MQTT Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT 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 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 the device (message from state_topic).

+

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:

+
# Example configuration.yml entry
+switch:
+  - platform: mqtt
+    command_topic: "home/bedroom/switch1/set"
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name to use when displaying this switch.

+

Default value: MQTT Switch

+
+
state_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive state updates.

+
+
command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to change the switch state.

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_on
+
+

(string)(Optional)The payload that represents enabled state.

+

Default value: true

+
+
payload_off
+
+

(string)(Optional)The payload that represents disabled state.

+

Default value: false

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
optimistic
+
+

(boolean)(Optional)Flag that defines if switch works in optimistic mode.

+

Default value: true if no state_topic defined, else false.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)If the published message should have the retain flag on or not.

+

Default value: false

+
+
value_template
+
+

(string)(Optional)Defines a template to extract a value from the payload.

+
+
+
+

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

+

Examples

+

In this section you will find some real life examples of how to use this sensor.

+

Full configuration

+

The example below shows a full configuration for a switch.

+
# Example configuration.yml entry
+switch:
+  - platform: mqtt
+    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
+    qos: 0
+    retain: true
+
+
+

For a check you can use the command line tools mosquitto_pub shipped with mosquitto to send MQTT messages. This allows you to operate your switch manually:

+
$ mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1 -m "ON"
+
+
+

Set the state of a device with ESPEasy

+

Assuming that you have flashed your ESP8266 unit with ESPEasy. Under “Config” is a name (“Unit Name:”) set for your device (here it’s “bathroom”). A configuration for a “Controller” for MQTT with the protocol “OpenHAB MQTT” is present and the entries (“Controller Subscribe:” and “Controller Publish:”) are adjusted to match your needs. In this example the topics are prefixed with “home”. There is no further configuration needed as the GPIOs can be controlled with MQTT directly.

+

Manually you can set pin 13 to high with mosquitto_pub or another MQTT tool:

+
$ mosquitto_pub -h 127.0.0.1 -t home/bathroom/gpio/13 -m "1"
+
+
+

The configuration will look like the example below:

+
# Example configuration.yml entry
+switch:
+  - platform: mqtt
+    name: bathroom
+    state_topic: "home/bathroom/gpio/13"
+    command_topic: "home/bathroom/gpio/13"
+    payload_on: "1"
+    payload_off: "0"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.mysensors/index.html b/components/switch.mysensors/index.html new file mode 100644 index 0000000000..7192164dc7 --- /dev/null +++ b/components/switch.mysensors/index.html @@ -0,0 +1,662 @@ + + + + + + + + + MySensors Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MySensors Switch +

+
+
+

Integrates MySensors switches into Home Assistant. See the main component for configuration instructions.

+

The following actuator types are supported:

+
MySensors version 1.4 and higher
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_DOORV_ARMED
S_MOTIONV_ARMED
S_SMOKEV_ARMED
S_LIGHTV_LIGHT
S_LOCKV_LOCK_STATUS
S_IRV_IR_SEND, V_LIGHT
+
MySensors version 1.5 and higher
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S_TYPEV_TYPE
S_LIGHTV_STATUS
S_BINARY[V_STATUS or V_LIGHT]
S_SPRINKLERV_STATUS
S_WATER_LEAKV_ARMED
S_SOUNDV_ARMED
S_VIBRATIONV_ARMED
S_MOISTUREV_ARMED
+
MySensors version 2.0 and higher
+ + + + + + + + + + + + + +
S_TYPEV_TYPE
S_WATER_QUALITYV_STATUS
+

All V_TYPES for each S_TYPE above are required to activate the actuator for the platform. Use either V_LIGHT or V_STATUS depending on library version for cases where that V_TYPE is required.

+

For more information, visit the serial api of MySensors.

+

Services

+

The MySensors switch platform exposes a service to change an IR code attribute for an IR switch device and turn the switch on. The IR switch will automatically be turned off after being turned on, if optimistic is set to true in the config for the MySensors component. This will simulate a push button on a remote. If optimistic is false, the MySensors device will have to report its updated state to reset the switch. See the example sketch for the IR switch below.

+ + + + + + + + + + + + + +
ServiceDescription
mysensors_send_ir_codeSet an IR code as a state attribute for a MySensors IR device switch and turn the switch on.
+

The service can be used as part of an automation script. For example:

+
# Example configuration.yaml automation entry
+automation:
+  - alias: turn hvac on
+    trigger:
+      platform: time
+      at: '5:30:00'
+    action:
+      service: switch.mysensors_send_ir_code
+      entity_id: switch.hvac_1_1
+      data:
+        V_IR_SEND: '0xC284'  # the IR code to send
+
+  - alias: turn hvac off
+    trigger:
+      platform: time
+      at: '0:30:00'
+    action:
+      service: switch.mysensors_send_ir_code
+      entity_id: switch.hvac_1_1
+      data:
+        V_IR_SEND: '0xC288'  # the IR code to send
+
+
+

Example sketches

+

Switch sketch

+
/*
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/relay
+ */
+
+#include <MySensor.h>
+#include <SPI.h>
+
+#define SN "Relay"
+#define SV "1.0"
+#define CHILD_ID 1
+#define RELAY_PIN 3
+
+MySensor gw;
+MyMessage msgRelay(CHILD_ID, V_STATUS);
+
+void setup()
+{
+  gw.begin(incomingMessage);
+  gw.sendSketchInfo(SN, SV);
+  // Initialize the digital pin as an output.
+  pinMode(RELAY_PIN, OUTPUT);
+  gw.present(CHILD_ID, S_BINARY);
+  gw.send(msgRelay.set(0));
+}
+
+void loop()
+{
+  gw.process();
+}
+
+void incomingMessage(const MyMessage &message)
+{
+  if (message.type == V_STATUS) {
+     // Change relay state.
+     digitalWrite(RELAY_PIN, message.getBool() ? 1 : 0);
+     gw.send(msgRelay.set(message.getBool() ? 1 : 0));
+  }
+}
+
+
+

IR switch sketch

+
/*
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * http://www.mysensors.org/build/ir
+ */
+
+#include <MySensor.h>
+#include <SPI.h>
+#include <IRLib.h>
+
+#define SN "IR Sensor"
+#define SV "1.0"
+#define CHILD_ID 1
+
+MySensor gw;
+
+char code[10] = "abcd01234";
+char oldCode[10] = "abcd01234";
+MyMessage msgCodeRec(CHILD_ID, V_IR_RECEIVE);
+MyMessage msgCode(CHILD_ID, V_IR_SEND);
+MyMessage msgSendCode(CHILD_ID, V_LIGHT);
+
+void setup()
+{
+  gw.begin(incomingMessage);
+  gw.sendSketchInfo(SN, SV);
+  gw.present(CHILD_ID, S_IR);
+  // Send initial values.
+  gw.send(msgCodeRec.set(code));
+  gw.send(msgCode.set(code));
+  gw.send(msgSendCode.set(0));
+}
+
+void loop()
+{
+  gw.process();
+  // IR receiver not implemented, just a dummy report of code when it changes
+  if (String(code) != String(oldCode)) {
+    Serial.print("Code received ");
+    Serial.println(code);
+    gw.send(msgCodeRec.set(code));
+    strcpy(oldCode, code);
+  }
+}
+
+void incomingMessage(const MyMessage &message) {
+  if (message.type==V_LIGHT) {
+    // IR sender not implemented, just a dummy print.
+    if (message.getBool()) {
+      Serial.print("Sending code ");
+      Serial.println(code);
+    }
+    gw.send(msgSendCode.set(message.getBool() ? 1 : 0));
+    // Always turn off device
+    gw.wait(100);
+    gw.send(msgSendCode.set(0));
+  }
+  if (message.type == V_IR_SEND) {
+    // Retrieve the IR code value from the incoming message.
+    String codestring = message.getString();
+    codestring.toCharArray(code, sizeof(code));
+    Serial.print("Changing code to ");
+    Serial.println(code);
+    gw.send(msgCode.set(code));
+  }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.mystrom/index.html b/components/switch.mystrom/index.html new file mode 100644 index 0000000000..f58a34a34b --- /dev/null +++ b/components/switch.mystrom/index.html @@ -0,0 +1,445 @@ + + + + + + + + + myStrom Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ myStrom Switch +

+
+
+

The mystrom switch platform allows you to control the state of your myStrom switches. The built-in sensor is measuring the power consumption while the switch is on.

+

To use your myStrom switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: mystrom
+    host: IP_ADRRESS
+
+
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of your myStrom switch, e.g., http://192.168.1.32.

+
+
name
+
+

(string)(Optional)The name to use when displaying this switch.

+

Default value: myStrom Switch

+
+
+
+

Check if you are able to access the device located at http://IP_ADRRESS. The details about your switch is provided as a JSON response.

+
$ curl -X GET -H "Content-Type: application/json" http://IP_ADDRESS/report
+{
+	"power":	0,
+	"relay":	false
+}
+
+
+

or change its state:

+
$ curl -G -X GET http://IP_ADDRESS/relay -d 'state=1'
+
+
+

Get the current power consumption

+

The switch is measuring the current power consumption. To expose this as a sensor use a template sensor.

+
# Example configuration.yaml entry
+sensor:
+  - platform: template
+    sensors:
+      power:
+        friendly_name: "Current Power"
+        unit_of_measurement: "W"
+        value_template: "{{ states.switch.office.attributes.current_power_w }}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.neato/index.html b/components/switch.neato/index.html new file mode 100644 index 0000000000..e8d160e8fa --- /dev/null +++ b/components/switch.neato/index.html @@ -0,0 +1,401 @@ + + + + + + + + + Neato Robotics Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Neato Robotics Switch +

+
+
+

The neato switch platform allows you to enable or disable the schedule of your Neato Botvac Connected.

+

To add neato switch to your installation, follow instructions in Neato component.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.netio/index.html b/components/switch.netio/index.html new file mode 100644 index 0000000000..a0d07daba5 --- /dev/null +++ b/components/switch.netio/index.html @@ -0,0 +1,436 @@ + + + + + + + + + Netio Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Netio Switch +

+
+
+

The netio switch platform allows you to control your Netio 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:

+
# Example configuration.yaml entry
+switch:
+  - platform: netio
+    host: 192.168.1.43
+    username: YOUR_USERNAME
+    password: YOUR_PASSWORD
+    outlets:
+      1: Free
+      2: TV
+      4: Lamp
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address of your Netio plug, eg. http://192.168.1.32.
  • +
  • port (Optional): The port to communicate with the switch. Defaults to 1234.
  • +
  • username (Required): The username for your plug.
  • +
  • password (Required): The password for your plug.
  • +
  • outlets (Required) array: List of all outlets. +
      +
    • [No.]: [Name] (Required): Identification of an outlet.
    • +
    +
  • +
+

To get pushed updates from the Netio devices, one can add this Lua code in the device interface as an action triggered on “Netio” “System variables updated” with an ‘Always’ schedule:

+
-- this will send socket and consumption status updates via CGI
+-- to given address. Associate with 'System variables update' event
+-- to get consumption updates when they show up
+
+local address='ha:8123'
+local path = '/api/netio/<host>'
+
+
+local output = {}
+for i = 1, 4 do for _, what in pairs({'state', 'consumption',
+                        'cumulatedConsumption', 'consumptionStart'}) do
+    local varname = string.format('output%d_%s', i, what)
+    table.insert(output,
+        varname..'='..tostring(devices.system[varname]):gsub(" ","|"))
+end end
+
+local qs = table.concat(output, '&')
+local url = string.format('http://%s%s?%s', address, path, qs)
+devices.system.CustomCGI{url=url}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.orvibo/index.html b/components/switch.orvibo/index.html new file mode 100644 index 0000000000..06d2da435b --- /dev/null +++ b/components/switch.orvibo/index.html @@ -0,0 +1,411 @@ + + + + + + + + + Orvibo Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Orvibo Switch +

+
+
+

The orvibo switch platform allows you to toggle your Orvibo S20 Wifi Smart Sockets.

+

To automatically discover Orvibo sockets on your network:

+
# Example configuration.yaml entry
+switch:
+  - platform: orvibo
+
+
+

To specify Orvibo sockets and skip discovery:

+
# Example configuration.yaml entry
+switch:
+  - platform: orvibo
+    discovery: false
+    switches:
+      - host: IP_ADDRESS
+        mac: MA:CA:DD:RE:SS:00
+        name: "My Socket"
+
+
+

Configuration variables:

+
    +
  • discovery (Optional): Whether to discover sockets. Defaults to true.
  • +
  • switches (Optional): +
      +
    • host (Required): IP address of your socket, eg. 192.168.1.10.
    • +
    • mac (Optional): MAC address of the socket, eg “AA:BB:CC:DD:EE:FF”. This is required if the socket is connected to a different subnet to the machine running Home Assistant.
    • +
    • name (Optional): Your name for the socket.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.pilight/index.html b/components/switch.pilight/index.html new file mode 100644 index 0000000000..cefc979c8a --- /dev/null +++ b/components/switch.pilight/index.html @@ -0,0 +1,480 @@ + + + + + + + + + Pilight Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pilight Switch +

+
+
+

The pilight switch platform is issuing 433 MHz commands using pilight to turn a 433 MHz device on or off. The Pilight Home Assistant hub has to be set up.

+

Additionally, RF commands can be defined that trigger this switch to turn on and off. This allows you to also use the remote shipped with your 433 MHz switch without mixing up the Home Assistant states. You can even define several on/off commands, thus several RF remotes to toggle this switch.

+

To be really sure that Home Assistant knows the actual state of your device it is recommended to use the RF remote with codes unknown to any of your 433 MHz devices. Thus you use the remote to trigger this switch to send the correct RF code to the device.

+

To define a Pilight switch, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+switch:
+  - platform: pilight
+    switches:
+      Bed light:
+        on_code:
+          protocol: intertechno_old
+          'on': 1
+        off_code:
+          protocol: intertechno_old
+          'off': 1
+
+
+

Configuration variables:

+
    +
  • switches array (Required): The list that contains all command switches. +
      +
    • [entry] (Required): Name of the command switch. Multiple entries are possible. +
        +
      • on_code (Required): The code to turn the device on.
      • +
      • off_code (Required): The code to turn the device off.
      • +
      • on_code_receive (Optional): If given, this command will turn the switch on if it is received by pilight.
      • +
      • off_code_receive (Optional): If given, this command will turn the switch off if it is received by pilight.
      • +
      +
    • +
    +
  • +
+

Variables for the different codes (on_code and off_code):

+
    +
  • protocol (Required): Protocol to use, eg. intertechno_old or daycom.
  • +
  • systemcode (Optional): The systemcode of the device.
  • +
  • unit (Optional): The unit to use (is equivalent to pilight-send --unit).
  • +
  • unitcode (Optional): The unitcode to use (is equivalent to pilight-send --unitcode).
  • +
  • id (Optional): ID of the device
  • +
  • state (Optional): 'on' or 'off' has to be in apostrophes to be parsed correctly.
  • +
  • ‘off’ (Optional): 1 or 0
  • +
  • ‘on’ (Optional): 1 or 0
  • +
+

For possible code entries, look at the pilight API. All commands allowed by pilight-send 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):

+
    +
  • echo (Optional) Set to true if the on-/off-code should be sent if the given code was received.
  • +
+

This is useful if you have paired your sender directly with the receiver to prevent sending the signal twice.

+

Examples

+
switch:
+  - platform: pilight
+    switches:
+      Bed light:
+        on_code:
+          protocol: intertechno_old
+          unit: 3
+          id: 4
+          'on': 1
+        off_code:
+          protocol: intertechno_old
+          unit: 3
+          id: 4
+          'off': 1
+        on_code_receive:
+          protocol: daycom
+          systemcode: 14462
+          unit: 6
+          id: 34
+          state: 'on'
+        off_code_receive:
+          protocol: daycom
+          systemcode: 14462
+          unit: 6
+          id: 34
+          state: 'off'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.pulseaudio_loopback/index.html b/components/switch.pulseaudio_loopback/index.html new file mode 100644 index 0000000000..1c90134694 --- /dev/null +++ b/components/switch.pulseaudio_loopback/index.html @@ -0,0 +1,411 @@ + + + + + + + + + PulseAudio Loopback Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PulseAudio Loopback Switch +

+
+
+

The goal behind this switch is to allow a very flexible whole home audio system based upon PulseAudio.

+

For example, for a system with a 7.1 surround sound card, and 3 instances of MPD running, it is possible to quickly route the output of any MPD instance to any of the 8 possible (4 stereo) channels on the sound card, by loading/unloading a loopback module. This loading/unloading functionality is provided by this component. When the switch is on, the loopback module is loaded. When the switch is off, the module is not loaded.

+

The benefit of this approach is that this audio routing can occur without modifying the design-time configuration of MPD or PulseAudio.

+

This component uses a TCP connection to control a local or remote PulseAudio server. So there are no local dependencies.

+

To enable this switch, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: pulseaudio_loopback
+
+
+

Configuration variables:

+
    +
  • sink_name (Required): The name of the Pulseaudio sink that will receive the audio.
  • +
  • source_name (Required): The name of the Pulseaudio source that will supply the audio.
  • +
  • name (Optional): Name of the switch.
  • +
  • host (Optional): The IP address or host name of the PulseAudio server. If not specified, 127.0.0.1 is used.
  • +
  • port (Optional): The port that Pulseaudio is listening on. Defaults to 4712.
  • +
  • buffer_size (Optional): How much data to load from Pulseaudio at once. Default is 1KB.
  • +
  • tcp_timeout (Optional): How long to wait for a response from Pulseaudio before giving up. Default is 3 seconds.
  • +
+

+This component relies on raw TCP commands to PulseAudio. In order for PulseAudio to accept commands with this component, module-cli-protocol must be loaded on the PulseAudio server. +

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.qwikswitch/index.html b/components/switch.qwikswitch/index.html new file mode 100644 index 0000000000..0e5a2949bb --- /dev/null +++ b/components/switch.qwikswitch/index.html @@ -0,0 +1,402 @@ + + + + + + + + + QwikSwitch Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ QwikSwitch Switch +

+
+
+

The qwikswitch platform allows you to control your QwikSwitch relays as switches from within Home Assistant.

+

If the device name in the QS Mobile application ends with Switch it will be created as a switch, otherwise as a light.

+

The platform is configured through the QwikSwitch component.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rachio/index.html b/components/switch.rachio/index.html new file mode 100644 index 0000000000..80e9eec20f --- /dev/null +++ b/components/switch.rachio/index.html @@ -0,0 +1,448 @@ + + + + + + + + + Rachio Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Rachio Switch +

+
+
+

The rachio switch platform allows you to control your Rachio irrigation system.

+

Getting your Rachio API Access Token

+
    +
  1. Log in at https://app.rach.io/.
  2. +
  3. Click the user button at the top right.
  4. +
  5. Click API Access Token.
  6. +
  7. Copy the API access token from the dialog that opens.
  8. +
+

To add this platform to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: rachio
+    access_token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+
+
+

Configuration variables:

+
    +
  • access_token (Required): Your Rachio API Access Token.
  • +
  • manual_run_mins (Optional): For how long, in minutes, to turn on a station when the switch is enabled. Defaults to 10 minutes.
  • +
+

Examples

+

In this section you find some real life examples of how to use this switch.

+

groups.yaml example

+
irrigation:
+  name: Irrigation
+  icon: mdi:water-pump
+  view: true
+  entities:
+  - group.zones_front
+  - group.zones_back
+
+zones_front:
+  name: Front Yard
+  view: false
+  entities:
+  - switch.driveway
+  - switch.front_bushes
+  - switch.front_garden
+  - switch.front_yard
+  - switch.side_yard
+
+zones_back:
+  name: Back Yard
+  view: false
+  entities:
+  - switch.back_bushes
+  - switch.back_garden
+  - switch.back_porch
+  - switch.back_trees
+
+
+

iFrame

+

If you would like to see and control more detailed zone information, create an iFrame that renders the Rachio web app.

+
panel_iframe:
+  rachio:
+    title: Rachio
+    url: "https://app.rach.io"
+    icon: mdi:water-pump
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rainbird/index.html b/components/switch.rainbird/index.html new file mode 100644 index 0000000000..d7bf16e9a6 --- /dev/null +++ b/components/switch.rainbird/index.html @@ -0,0 +1,485 @@ + + + + + + + + + Rain Bird Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Rain Bird Switch +

+
+
+

This rainbird switch platform allows interacting with LNK WiFi module of the Rain Bird Irrigation system in Home Assistant.

+

Once you have enabled the Rain Bird component, add the following to your configuration.yaml file:

+
switch:
+    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:

+
    +
  • 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/components/switch.raincloud/index.html b/components/switch.raincloud/index.html new file mode 100644 index 0000000000..95ff6dd1d8 --- /dev/null +++ b/components/switch.raincloud/index.html @@ -0,0 +1,419 @@ + + + + + + + + + Melnor Raincloud Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Melnor Raincloud Switch +

+
+
+

To get your Melnor RainCloud binary sensors working within Home Assistant, please follow the instructions for the general Raincloud component.

+

Once you have enabled the Raincloud component, add the following to your configuration.yaml file:

+
# 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/components/switch.rainmachine/index.html b/components/switch.rainmachine/index.html new file mode 100644 index 0000000000..52465df51a --- /dev/null +++ b/components/switch.rainmachine/index.html @@ -0,0 +1,448 @@ + + + + + + + + + RainMachine Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RainMachine Switch +

+
+
+

The rainmachine switch platform allows you to control programs and zones within +a RainMachine smart Wi-Fi sprinkler controller.

+

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:

+
switch:
+  platform: rainmachine
+  ip_address: 192.168.1.100
+  password: my_password_123
+
+
+

For remote access, specify your RainMachine username/email and password:

+
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)
  • +
+

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

+

Weblink

+

If you would like to see and control more detailed information, create an iFrame that renders the RainMachine web app:

+
panel_iframe:
+  rainmachine:
+    title: RainMachine
+    url: "https://my.rainmachine.com/s/<YOUR_DEVICE_ID>/ui/"
+    icon: mdi:water-pump
+
+
+

You can find <YOUR_DEVICE_ID> by logging into https://my.rainmachine.com and taking note of the URL.

+

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/components/switch.raspihats/index.html b/components/switch.raspihats/index.html new file mode 100644 index 0000000000..85cb61f624 --- /dev/null +++ b/components/switch.raspihats/index.html @@ -0,0 +1,469 @@ + + + + + + + + + Raspihats Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspihats Switch +

+
+
+

The raspihats switch platform allows you to control the digital outputs of your raspihats boards.

+

To use your raspihats boards in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: raspihats
+    i2c_hats:
+      - board: DI6acDQ6rly
+        address: 0x60
+        channels:
+          - index: 0
+            name: Fan Office
+            invert_logic: true
+            initial_state: true
+          - index: 1
+            name: Light Office
+
+
+

Configuration variables:

+
    +
  • i2c_hats (Optional): Array of used I2C-HATs. +
      +
    • board (Required): The board name.
    • +
    • address (Required): The board I2C address, hex value. +
        +
      • channels (Required): Array of used digital output channels. +
          +
        • index (Required): Digital output channel index.
        • +
        • name (Required): Friendly name to use for the frontend.
        • +
        • 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.
        • +
        +
      • +
      +
    • +
    +
  • +
+

Directions for installing smbus support on Raspberry Pi

+

Enable I2c interface with the Raspberry Pi configuration utility:

+
# pi user environment: Enable i2c interface
+$ sudo raspi-config
+
+
+

Select Interfacing options->I2C choose <Yes> 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:

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

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:

+
$ /usr/sbin/i2cdetect -y 1
+
+
+

It will output a table like this:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rest/index.html b/components/switch.rest/index.html new file mode 100644 index 0000000000..26fc7adc19 --- /dev/null +++ b/components/switch.rest/index.html @@ -0,0 +1,475 @@ + + + + + + + + + RESTful Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RESTful Switch +

+
+
+

The rest switch platform allows you to control a given endpoint that supports a RESTful API. The switch can get the state via GET and set the state via POST on a given REST resource.

+

To enable this switch, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+
+
+
+

Configuration Variables

+
+
resource
+
+

(string)(Required)The resource or endpoint that contains the value.

+

Default value: string

+
+
method
+
+

(string)(Optional)The method of the request. Supported post or put.

+

Default value: POST

+
+
name
+
+

(string)(Optional)Name of the REST Switch.

+

Default value: REST Binary Switch

+
+
timeout
+
+

(int)(Optional)Timeout for the request.

+

Default value: 10

+
+
body_on
+
+

(string)(Optional)The body of the POST request that commands the switch to become enabled. This value can be a template.

+

Default value: true

+
+
body_off
+
+

(string)(Optional)The body of the POST request that commands the switch to become disabled. This value can also be a template.

+

Default value: false

+
+
is_on_template
+
+

(string)(Optional)A template 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 '{{ value_json == body_on }}'. This means that by default, the state of the switch is on if and only if the response to the GET request matches.

+
+
username
+
+

(string)(Optional)The username for accessing the REST endpoint.

+
+
password
+
+

(string)(Optional)The password for accessing the REST endpoint.

+
+
+
+

+Make sure that the URL matches exactly your endpoint or resource. +

+

Example

+

Switch with templated value

+

This example shows a switch that uses a template to allow Home Assistant to determine its state. In this example the REST endpoint returns this JSON response with true indicating the switch is on.

+
{"is_active": "true"}
+
+
+
switch:
+  - platform: rest
+    resource: http://IP_ADDRESS/led_endpoint
+    body_on: '{"active": "true"}'
+    body_off: '{"active": "false"}'
+    is_on_template: '{{value_json.is_active}}'
+
+
+

body_on and body_off can also depend on the state of the system. For example, to enable a remote temperature sensor tracking on a radio thermostat, one has to send the current value of the remote temperature sensor. This can be achieved by using the template '{"rem_temp":{{states.sensor.bedroom_temp.state}}}'.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rflink/index.html b/components/switch.rflink/index.html new file mode 100644 index 0000000000..1770bef1fa --- /dev/null +++ b/components/switch.rflink/index.html @@ -0,0 +1,460 @@ + + + + + + + + + RFLink Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFLink Switch +

+
+
+

The rflink component support devices that use RFLink gateway firmware, for example the Nodo 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.

+

The RFLink component does not know the difference between a switch and a light. Therefore all switchable devices are automatically added as light by default.

+

RFLink switch/light ID’s are composed of: protocol, id, switch. For example: newkaku_0000c6c2_1.

+

Once the ID of a switch is known it can be used to configure it as a switch type in HA, for example to add it to a different group, hide it or configure a nice name.

+

Configuring a device as switch with a nice name:

+
# Example configuration.yaml entry
+switch:
+  platform: rflink
+  device_defaults:
+    fire_event: true
+    signal_repetitions: 2
+  devices:
+    newkaku_0000c6c2_1:
+      name: Ceiling fan
+    conrad_00785c_0a:
+      name: Motion sensor kitchen
+
+
+
+

Configuration variables:

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

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

+
# Example configuration.yaml entry
+switch:
+  platform: rflink
+  devices:
+    newkaku_0000c6c2_1:
+      name: Ceiling fan
+      icon: mdi:fan
+      aliases:
+        - newkaku_000000001_2
+        - kaku_000001_a
+
+
+

Any on/off command from any alias ID updates the current state of the switch. However when sending a command through the frontend only the primary ID is used.

+

Device support

+

See device support

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rfxtrx/index.html b/components/switch.rfxtrx/index.html new file mode 100644 index 0000000000..df879f5e65 --- /dev/null +++ b/components/switch.rfxtrx/index.html @@ -0,0 +1,533 @@ + + + + + + + + + RFXtrx Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RFXtrx Switch +

+
+
+

The rfxtrx platform support switches that communicate in the frequency range of 433.92 MHz.

+

First you have to set up your rfxtrx hub. +The easiest way to find your switches is to add this to your configuration.yaml:

+
# Example configuration.yaml entry
+switch:
+  platform: rfxtrx
+  automatic_add: True
+
+
+

Launch your Home Assistant and go the website. +Push your remote and your device should be added:

+

+ +

+

Here the name is 0b11000102ef9f210010f70 and you can verify that it works from the frontend. +Then you should update your configuration to:

+
# Example configuration.yaml entry
+switch:
+  platform: rfxtrx
+  devices:
+    0b11000102ef9f210010f70:
+      name: device_name
+
+
+

Configuration variables:

+
    +
  • devices (Required): A list of devices with their name to use in the frontend.
  • +
  • automatic_add (Optional): To enable the automatic addition of new switches.
  • +
  • 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 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).

+
    +
  • Go to home-assistant-IP:8123/dev-template
  • +
  • Use this code to generate a code:
  • +
+
0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}010f70
+
+
+
    +
  • Use this code to add a new switch in your configuration.yaml
  • +
  • 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
  • +
+

Examples

+

Basic configuration with 3 devices:

+
# Example configuration.yaml entry
+switch:
+  platform: rfxtrx
+  automatic_add: False
+  signal_repetitions: 2
+  devices:
+    0b1100ce3213c7f210010f70:
+      name: Movment1
+    0b11000a02ef2gf210010f50:
+      name: Movment2
+    0b1111e003af16aa10000060:
+      name: Door
+      fire_event: True
+
+
+

Light hallway if doorbell is pressed (when is sun down):

+
# Example configuration.yaml entry
+switch:
+  platform: rfxtrx
+  automatic_add: False
+  devices:
+    0710014c440f0160:
+      name: Hall
+    0710010244080780:
+      name: Door
+      fire_event: true
+      
+automation:
+  - alias: Switch light on when door bell rings if sun is below horizon and light was off
+    trigger:
+      platform: event
+      event_type: button_pressed
+      event_data: {"entity_id": "switch.door"}
+    condition:
+      condition: and
+      conditions:
+        - condition: state
+          entity_id: sun.sun
+          state: "below_horizon"
+        - condition: state
+          entity_id: switch.hall
+          state: 'off'
+    action:
+      - service: switch.turn_on
+        entity_id: switch.hall
+
+
+

Use remote to enable scene (using event_data):

+
# Example configuration.yaml entry
+switch:
+  platform: rfxtrx
+  automatic_add: False
+  devices:
+    0b1100ce3213c7f210010f70:
+      name: Light1
+    0b11000a02ef2gf210010f50:
+      name: Light2
+    0b1111e003af16aa10000060:
+      name: Keychain remote
+      fire_event: true
+scene:
+  name: Livingroom
+  entities:
+    switch.light1: on
+    switch.light2: on
+    
+automation:
+  - alias: Use remote to enable scene
+    trigger:
+      platform: event
+      event_type: button_pressed
+      event_data: {"state": "on", "entity_id": "switch.keychain_remote"}
+    action:
+      service: scene.turn_on
+      entity_id: scene.livingroom
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rpi_gpio/index.html b/components/switch.rpi_gpio/index.html new file mode 100644 index 0000000000..257511e0ab --- /dev/null +++ b/components/switch.rpi_gpio/index.html @@ -0,0 +1,434 @@ + + + + + + + + + Raspberry Pi GPIO Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspberry Pi GPIO Switch +

+
+
+

The rpi_gpio switch platform allows you to control the GPIOs of your Raspberry Pi.

+

To use your Raspberry Pi’s GPIO in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: rpi_gpio
+    ports:
+      11: Fan Office
+      12: Light Desk
+
+
+

Configuration variables:

+
    +
  • ports array (Required): Array of used ports. +
      +
    • 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 about the Raspberry Pi.

+

+Note that a pin managed by HASS is expected to be exclusive to HASS. +

+

A common question is what does Port refer to, this number is the actual GPIO # not the pin #. +For example, if you have a relay connected to pin 11 its GPIO # is 17.

+
# Example configuration.yaml entry
+switch:
+  - platform: rpi_gpio
+    ports:
+      17: Speaker Relay
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rpi_pfio/index.html b/components/switch.rpi_pfio/index.html new file mode 100644 index 0000000000..78dc01282f --- /dev/null +++ b/components/switch.rpi_pfio/index.html @@ -0,0 +1,425 @@ + + + + + + + + + PiFace Digital I/O Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ PiFace Digital I/O Switch +

+
+
+

The rpi_pfio switch platform allows you to control the PiFace Digital I/O module.

+

To use your PiFace Digital I/O module in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: rpi_pfio
+    ports:
+      0:
+        name: Doorlock
+        invert_logic: true
+      1:
+        name: Light Desk
+
+
+

Configuration variables:

+
    +
  • ports array (Required): Array of used ports. +
      +
    • num (Required): Port number. +
        +
      • name (Required): Port name.
      • +
      • invert_logic (Optional): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH).
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.rpi_rf/index.html b/components/switch.rpi_rf/index.html new file mode 100644 index 0000000000..3f898291c5 --- /dev/null +++ b/components/switch.rpi_rf/index.html @@ -0,0 +1,428 @@ + + + + + + + + + Raspberry Pi RF Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Raspberry Pi RF Switch +

+
+
+

The rpi_rf switch platform allows you to control devices over 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a Raspberry Pi.

+

Interoperable with codes sniffed via the rpi-rf module or rc-switch. +For more info see the PyPi module description: rpi-rf.

+

To enable, add the following to your configuration.yaml:

+
# Example configuration.yaml entry
+switch:
+  - platform: rpi_rf
+    gpio: 17
+    switches:
+      bedroom_light:
+        code_on: 1234567
+        code_off: 1234568
+      ambilight:
+        pulselength: 200
+        code_on: 987654
+        code_off: 133742
+      living_room_light:
+        protocol: 5
+        code_on: 654321,565874,233555,149874
+        code_off: 654320,565873,233554,149873
+        signal_repetitions: 15
+
+
+

Configuration variables:

+
    +
  • gpio (Required): GPIO to which the data line of the TX module is connected.
  • +
  • switches: (Required): The array that contains all switches. +
      +
    • [entry] (Required): Name of the switch. Multiple entries are possible. +
        +
      • code_on (Required): Decimal code(s) to switch the device on. To run multiple codes in a sequence, separate the individual codes with commas ‘,’.
      • +
      • code_off (Required): Decimal code(s) to switch the device off. To run multiple codes in a sequence, separate the individual codes with commas ‘,’.
      • +
      • protocol (Optional): RF Protocol (Default is 1).
      • +
      • pulselength (Optional): Pulselength (Default is the protocol default).
      • +
      • signal_repetitions (Optional): Number of times to repeat transmission (default is 10, can increase to try to improve reliability).
      • +
      +
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.scsgate/index.html b/components/switch.scsgate/index.html new file mode 100644 index 0000000000..d26520dd5f --- /dev/null +++ b/components/switch.scsgate/index.html @@ -0,0 +1,416 @@ + + + + + + + + + SCSGate Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SCSGate Switch +

+
+
+

The SCSGate device can control switches of the BTicino MyHome system.

+

To enable SCSGate switches in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: scsgate
+    devices:
+      living_room:
+        scs_id: XXXXX
+
+
+

Configuration variables:

+
    +
  • devices (Required): A list of devices with their name to use in the frontend.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.skybell/index.html b/components/switch.skybell/index.html new file mode 100644 index 0000000000..6faf4e49cd --- /dev/null +++ b/components/switch.skybell/index.html @@ -0,0 +1,427 @@ + + + + + + + + + Skybell Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Skybell Switch +

+
+
+

To get your Skybell.com switches working within Home Assistant, please follow the instructions for the general Skybell component.

+

Once you have enabled the Skybell component, add the following to your configuration.yaml file:

+
# 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/components/switch.smappee/index.html b/components/switch.smappee/index.html new file mode 100644 index 0000000000..4bf85fca6d --- /dev/null +++ b/components/switch.smappee/index.html @@ -0,0 +1,402 @@ + + + + + + + + + Smappee Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Smappee Switch +

+
+
+

Smappee controller for energy monitoring and Comport plug switches.

+

Comport Plugs will be automatically added when you connect to the Smappee controller.

+

For more configuration information see the Smappee component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.snmp/index.html b/components/switch.snmp/index.html new file mode 100644 index 0000000000..c7a8c8f7ee --- /dev/null +++ b/components/switch.snmp/index.html @@ -0,0 +1,434 @@ + + + + + + + + + SNMP Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ SNMP Switch +

+
+
+

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:

+
# 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.
  • +
  • command_oid (Optional): The SNMP OID which to set in order to turn the switch on and off, if different from baseoid.
  • +
  • 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 if command_payload_on is not set. 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 if command_payload_off is not set. Defaults to 0.
  • +
  • command_payload_on (Optional): The value to write to turn on the switch, if different from payload_on.
  • +
  • command_payload_off (Optional): The value to write to turn off the switch, if different from payload_off.
  • +
+

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:

+
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/components/switch.tellduslive/index.html b/components/switch.tellduslive/index.html new file mode 100644 index 0000000000..c361669918 --- /dev/null +++ b/components/switch.tellduslive/index.html @@ -0,0 +1,397 @@ + + + + + + + + + Telldus Live Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telldus Live Switch +

+
+
+

Integrates Telldus Live switches into Home Assistant. See the main component for configuration instructions.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.tellstick/index.html b/components/switch.tellstick/index.html new file mode 100644 index 0000000000..6018309899 --- /dev/null +++ b/components/switch.tellstick/index.html @@ -0,0 +1,409 @@ + + + + + + + + + TellStick Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TellStick Switch +

+
+
+

This tellstick switch platform allows you to control TellStick devices.

+

To use your TellStick device, you first have to set up your Tellstick hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: tellstick
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.telnet/index.html b/components/switch.telnet/index.html new file mode 100644 index 0000000000..738fe69999 --- /dev/null +++ b/components/switch.telnet/index.html @@ -0,0 +1,420 @@ + + + + + + + + + Telnet Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telnet Switch +

+
+
+

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:

+
# 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: '{{ value == "PWR=01" }}'
+
+
+

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/components/switch.template/index.html b/components/switch.template/index.html new file mode 100644 index 0000000000..360da19998 --- /dev/null +++ b/components/switch.template/index.html @@ -0,0 +1,580 @@ + + + + + + + + + Template Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Template Switch +

+
+
+

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.

+

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:

+
# Example configuration.yaml entry
+switch:
+  - platform: template
+    switches:
+      skylight:
+        value_template: "{{ is_state('sensor.skylight', 'on') }}"
+        turn_on:
+          service: switch.turn_on
+          data:
+            entity_id: switch.skylight_open
+        turn_off:
+          service: switch.turn_on
+          data:
+            entity_id: switch.skylight_close
+
+
+
+

Configuration Variables

+
+
switches
+
+

(map)(Required)List of your switches.

+
+
+
+
friendly_name
+
+

(string)(Optional)Name to use in the frontend.

+
+
entity_id
+
+

(string | list)(Optional)A list of entity IDs so the switch only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities.

+
+
value_template
+
+

(template)(Required)Defines a template to set the state of the switch.

+
+
turn_on
+
+

(action)(Required)Defines an action to run when the switch is turned on.

+
+
turn_off
+
+

(action)(Required)Defines an action to run when the switch is turned off.

+
+
icon_template
+
+

(template)(Optional)Defines a template for the icon of the switch.

+
+
+
+
+
+

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 +{{ states.switch.source.state == 'on' }} +with this equivalent that returns true/false and never gives an unknown +result: +{{ is_state('switch.source', 'on') }}

+

Examples

+

In this section you find some real life examples of how to use this switch.

+

Copy Switch

+

This example shows a switch that copies another switch.

+
switch:
+  - platform: template
+    switches:
+      copy:
+        value_template: "{{ is_state('switch.source', 'on') }}"
+        turn_on:
+          service: switch.turn_on
+          data:
+            entity_id: switch.source
+        turn_off:
+          service: switch.turn_off
+          data:
+            entity_id: switch.source
+
+
+

Toggle Switch

+

This example shows a switch that takes its state from a sensor, and toggles +a switch.

+
switch:
+  - platform: template
+    switches:
+      blind:
+        friendly_name: "Blind"
+        value_template: "{{ is_state_attr('switch.blind_toggle', 'sensor_state', 'on') }}"
+        turn_on:
+          service: switch.toggle
+          data:
+            entity_id: switch.blind_toggle
+        turn_off:
+          service: switch.toggle
+          data:
+            entity_id: switch.blind_toggle
+
+
+

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.

+
switch:
+  - platform: template
+    switches:
+      skylight:
+        friendly_name: "Skylight"
+        value_template: "{{ is_state('sensor.skylight.state', 'on') }}"
+        turn_on:
+          service: switch.turn_on
+          data:
+            entity_id: switch.skylight_open
+        turn_off:
+          service: switch.turn_on
+          data:
+            entity_id: switch.skylight_close
+
+
+

Change The Icon

+

This example shows how to change the icon based on the day/night cycle.

+
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
+        icon_template: >-
+          {% if is_state('cover.garage_door', 'open') %}
+            mdi:garage-open
+          {% else %}
+            mdi:garage
+          {% endif %}
+
+
+

Change The Entity Picture

+

This example shows how to change the entity picture based on the day/night cycle.

+
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 %}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.tesla/index.html b/components/switch.tesla/index.html new file mode 100644 index 0000000000..d3726f6fb9 --- /dev/null +++ b/components/switch.tesla/index.html @@ -0,0 +1,414 @@ + + + + + + + + + Tesla Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla Switch +

+
+
+

The Tesla platform allows you to control your Tesla 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 documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.thinkingcleaner/index.html b/components/switch.thinkingcleaner/index.html new file mode 100644 index 0000000000..0241242513 --- /dev/null +++ b/components/switch.thinkingcleaner/index.html @@ -0,0 +1,404 @@ + + + + + + + + + Thinking Cleaner Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Thinking Cleaner Switch +

+
+
+

The thinkingcleaner switch platform allows you to control your Thinking Cleaner add-on.

+

To enable this switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: thinkingcleaner
+
+
+

This will automatically add switches for each Thinking Cleaner in your network.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.toon/index.html b/components/switch.toon/index.html new file mode 100644 index 0000000000..d91f602449 --- /dev/null +++ b/components/switch.toon/index.html @@ -0,0 +1,404 @@ + + + + + + + + + Toon Smart Plugs - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Toon Smart Plugs +

+
+
+

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

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.tplink/index.html b/components/switch.tplink/index.html new file mode 100644 index 0000000000..4af3f3130d --- /dev/null +++ b/components/switch.tplink/index.html @@ -0,0 +1,432 @@ + + + + + + + + + TP-Link Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TP-Link Switch +

+
+
+

The tplink switch platform allows you to control the state of your TP-Link smart switch.

+

Supported units:

+
    +
  • HS100
  • +
  • HS105
  • +
  • HS110
  • +
  • HS200
  • +
+

To use your TP-Link switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: tplink
+    host: IP_ADDRESS
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name to use when displaying this switch.

+

Default value: TP-Link Switch

+
+
host
+
+

(string)(Required)The IP address of your TP-Link switch, eg. 192.168.1.32.

+
+
enable_leds
+
+

(boolean)(Optional)If the LEDs on the switch (WiFi and power) should be lit.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.transmission/index.html b/components/switch.transmission/index.html new file mode 100644 index 0000000000..f107ed71bc --- /dev/null +++ b/components/switch.transmission/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Transmission Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Transmission Switch +

+
+
+

The transmission switch platform allows you to control your Transmission client from within Home Assistant. The platform enables you switch to your ‘Alternative Speed Limits’ (aka ‘Turtle mode’) setting.

+

To add Transmission to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  platform: transmission
+  host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): This is the IP address of your Transmission daemon, eg. 192.168.1.32.
  • +
  • port (Optional): The port your Transmission daemon uses, defaults to 9091.
  • +
  • name (Optional): The name to use when displaying this Transmission instance.
  • +
  • username (Optional): Your Transmission username, if you use authentication.
  • +
  • password (Optional): Your Transmission password, if you use authentication.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.upcloud/index.html b/components/switch.upcloud/index.html new file mode 100644 index 0000000000..dde06672b0 --- /dev/null +++ b/components/switch.upcloud/index.html @@ -0,0 +1,418 @@ + + + + + + + + + UpCloud Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UpCloud Switch +

+
+
+

The upcloud switch platform allows you to control (start/stop) your UpCloud servers.

+

To use your UpCloud servers, you first have to set up your UpCloud hub and then add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: upcloud
+    servers:
+      - 002167b7-4cb1-44b7-869f-e0900ddeeae1
+      - 00886296-6137-4074-afe3-068e16d89d00
+
+
+
+

Configuration Variables

+
+
servers
+
+

(list)(Required)List of servers you want to control.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.velbus/index.html b/components/switch.velbus/index.html new file mode 100644 index 0000000000..5492e12b5a --- /dev/null +++ b/components/switch.velbus/index.html @@ -0,0 +1,435 @@ + + + + + + + + + Velbus Switches - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velbus Switches +

+
+
+

The velbus switch allows you to control Velbus connected switches.

+

To use your Velbus switches in your installation, add the following to your configuration.yaml file:

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

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.vera/index.html b/components/switch.vera/index.html new file mode 100644 index 0000000000..7a92a2155c --- /dev/null +++ b/components/switch.vera/index.html @@ -0,0 +1,420 @@ + + + + + + + + + Vera Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera Switch +

+
+
+

The vera platform allows you to control your Vera switches from within Home Assistant.

+

They will be automatically discovered if the vera component is loaded.

+

For more configuration information see the Vera component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.verisure/index.html b/components/switch.verisure/index.html new file mode 100644 index 0000000000..5e08d7fc7f --- /dev/null +++ b/components/switch.verisure/index.html @@ -0,0 +1,410 @@ + + + + + + + + + Verisure SmartPlug - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure SmartPlug +

+
+
+

The Verisure switch platform allows you to control your Verisure SmartPlugs.

+

The requirement is that you have setup your Verisure hub.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.volvooncall/index.html b/components/switch.volvooncall/index.html new file mode 100644 index 0000000000..f83254a9c9 --- /dev/null +++ b/components/switch.volvooncall/index.html @@ -0,0 +1,319 @@ + + + + + + + + + Volvo On Call - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Volvo On Call +

+
+
+

Integrates Volvo on Call into Home Assistant. See the main component for configuration instructions.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.vultr/index.html b/components/switch.vultr/index.html new file mode 100644 index 0000000000..9bd18b86fe --- /dev/null +++ b/components/switch.vultr/index.html @@ -0,0 +1,435 @@ + + + + + + + + + Vultr Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vultr Switch +

+
+
+

The vultr switch platform allows you to control (start/stop) your Vultr subscription.

+

To control your Vultr subscription, you first have to set up your Vultr hub.

+

+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):

+
# Example configuration.yaml entry
+switch:
+  - platform: vultr
+    subscription: 123456
+
+
+
+

Configuration Variables

+
+
subscription
+
+

(string)(Required)List of droplets you want to control.

+
+
name
+
+

(string)(Optional)The name you want to give this switch.

+

Default value: Vultr {subscription label}

+
+
+
+

Full configuration.yaml (produces switch.amazing_server):

+
switch:
+  - platform: vultr
+    name: Amazing Server
+    subscription: 123456
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.wake_on_lan/index.html b/components/switch.wake_on_lan/index.html new file mode 100644 index 0000000000..a892050802 --- /dev/null +++ b/components/switch.wake_on_lan/index.html @@ -0,0 +1,442 @@ + + + + + + + + + Wake on LAN Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wake on LAN Switch +

+
+
+

The wake_on_lan (WOL) switch platform allows you to turn on a WOL enabled computer.

+

+The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. The turn_off variable is there to help you call a script when you have figured out how to remotely turn off your computer. +See below for suggestions on how to do this. +

+

To enable this switch in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yml entry
+switch:
+  - platform: wake_on_lan
+    mac_address: "00-01-02-03-04-05"
+
+
+

Configuration variables:

+
    +
  • mac_address (Required): MAC address to send the wake up command to.
  • +
  • name (Optional): The name of the switch. Default is ‘Wake on LAN’.
  • +
  • host (Optional): The IP address or hostname to check the state of the device (on/off).
  • +
  • turn_off (Optional): Defines an action to run when the switch is turned off.
  • +
  • broadcast_address (Optional): The IP address of the host to send the magic packet to (default 255.255.255.255).
  • +
+

Examples

+

Here are some real life examples of how to use the turn_off variable.

+

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

+
    +
  1. On the server, log in as the user account Home Assistant is running under. (I’m using hass in this example)
  2. +
  3. On the server, create ssh keys by running ssh-keygen. Just press enter on all questions.
  4. +
  5. On the target, create a new account that Home Assistant can ssh into: sudo adduser hass. Just press enter on all questions except password. I recommend using the same user name as on the server. If you do, you can leave out hass@ in the ssh commands below.
  6. +
  7. On the server, transfer your public ssh key by ssh-copy-id hass@TARGET where TARGET is your target machine’s name or IP address. Enter the password you created in step 3.
  8. +
  9. On the server, verify that you can reach your target machine without password by ssh TARGET.
  10. +
  11. On the target, we need to let the hass user execute the program needed to suspend/shut down the target computer. I’m using pm-suspend, use poweroff to turn off the computer. First, get the full path: which pm-suspend. On my system, this is /usr/sbin/pm-suspend.
  12. +
  13. On the target, using an account with sudo access (typically your main account), sudo visudo. Add this line last in the file: hass ALL=NOPASSWD:/usr/sbin/pm-suspend, where you replace hass with the name of your user on the target, if different, and /usr/sbin/pm-suspend with the command of your choice, if different.
  14. +
  15. On the server, add the following to your configuration, replacing TARGET with the target’s name:
  16. +
+
switch:
+  - platform: wake_on_lan
+    name: "TARGET"
+    ...
+    turn_off:
+      service: shell_command.turn_off_TARGET
+
+shell_command:
+  turn_off_TARGET: 'ssh hass@TARGET sudo pm-suspend'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.wemo/index.html b/components/switch.wemo/index.html new file mode 100644 index 0000000000..5eddcef963 --- /dev/null +++ b/components/switch.wemo/index.html @@ -0,0 +1,399 @@ + + + + + + + + + Belkin WeMo Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Belkin WeMo Switch +

+
+
+

The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant. This includes support for Wemo enabled Mr. Coffee smart coffee makers.

+

They will be automatically discovered if the discovery component is enabled.

+

For more configuration information see the WeMo component documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.wink/index.html b/components/switch.wink/index.html new file mode 100644 index 0000000000..5c9a0eaac0 --- /dev/null +++ b/components/switch.wink/index.html @@ -0,0 +1,434 @@ + + + + + + + + + Wink Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink Switch +

+
+
+

The Wink switch platform allows you to control your Wink switches.

+

The requirement is that you have setup Wink.

+

Supported switch devices

+
    +
  • Wink Pivot power genius (No Wink hub required)
  • +
  • non-dimming Z-wave in wall switches (dimming switches show up as lights)
  • +
  • Wink Relay load controlling switches
  • +
  • Rachio sprinkler controller (No Wink hub required)
  • +
  • iHome smart plug (No Wink hub required)
  • +
  • Wink switch groups (User created groups of switches)
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.xiaomi_aqara/index.html b/components/switch.xiaomi_aqara/index.html new file mode 100644 index 0000000000..3f0d42c9b6 --- /dev/null +++ b/components/switch.xiaomi_aqara/index.html @@ -0,0 +1,410 @@ + + + + + + + + + Xiaomi Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Switch +

+
+
+

The xiaomi aqara switch platform allows you to get data from your Xiaomi aqara switches.

+

The requirement is that you have setup Xiaomi aqara.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.xiaomi_miio/index.html b/components/switch.xiaomi_miio/index.html new file mode 100644 index 0000000000..348f5b6416 --- /dev/null +++ b/components/switch.xiaomi_miio/index.html @@ -0,0 +1,444 @@ + + + + + + + + + Xiaomi Smart WiFi Socket and Smart Power Strip - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Smart WiFi Socket and Smart Power Strip +

+
+
+

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

+
# Example configuration.yaml entries
+switch:
+  - platform: xiaomi_miio
+    name: Original Xiaomi Mi Smart WiFi Socket
+    host: 192.168.130.59
+    token: YOUR_TOKEN
+    model: chuangmi.plug.m1
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP of your miio device.
  • +
  • token (Required): The API token of your miio device.
  • +
  • name (Optional): The name of your miio device.
  • +
  • model (Optional): The model of your miio device. Valid values are chuangmi.plug.v1, qmi.powerstrip.v1, zimi.powerstrip.v2, chuangmi.plug.m1 and chuangmi.plug.v2`. This setting can be used to bypass the device model detection and is recommended if your device isn’t always available.
  • +
+
+

Configuration Variables

+
+
host
+
+

(string)(Required)The IP address of your device.

+
+
token
+
+

(string)(Required)The API token of your device.

+
+
name
+
+

(string)(Optional)The name of your device.

+

Default value: Xiaomi Miio Switch

+
+
model
+
+

(string)(Optional)The model of your device.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.zha/index.html b/components/switch.zha/index.html new file mode 100644 index 0000000000..f842ea14a5 --- /dev/null +++ b/components/switch.zha/index.html @@ -0,0 +1,403 @@ + + + + + + + + + ZigBee Home Automation Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Home Automation Switch +

+
+
+

To get your ZigBee switches working with Home Assistant, follow the instructions for the general ZigBee Home Automation component.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.zigbee/index.html b/components/switch.zigbee/index.html new file mode 100644 index 0000000000..66943e696f --- /dev/null +++ b/components/switch.zigbee/index.html @@ -0,0 +1,422 @@ + + + + + + + + + ZigBee Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee Switch +

+
+
+

A ZigBee switch in this context is a device connected to one of the digital output pins on a ZigBee module. It can simply be switched on and off. By default, a switch is considered on when the ZigBee device’s digital output is held high and considered off when it is held low. This behavior can be inverted by setting the on_state configuration variable to low.

+

To configure a digital output pin as switch, add the following to your configuration.yaml file:

+
switch:
+  - name: Pond Fountain
+    platform: zigbee
+    pin: 0
+    address: 0013A20040791FA2
+    on_state: low
+
+
+

Configuration variables:

+
    +
  • name (Required): The name you would like to give the switch in Home Assistant.
  • +
  • pin (Required): The number identifying which pin to use.
  • +
  • address: The long 6 4bit address of the remote ZigBee device whose digital output pin you would like to switch. Do not include this variable if you want to switch the local ZigBee device’s pins.
  • +
  • on_state: Either high (default) or low, depicting whether the digital output pin is pulled high or low when the switch is turned on.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/switch.zoneminder/index.html b/components/switch.zoneminder/index.html new file mode 100644 index 0000000000..38a07e80f2 --- /dev/null +++ b/components/switch.zoneminder/index.html @@ -0,0 +1,422 @@ + + + + + + + + + ZoneMinder Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZoneMinder Switch +

+
+
+

The zoneminder switch platform allows you to toggle the current function of all cameras attached to your ZoneMinder instance.

+

+You must have the ZoneMinder component configured to use this and if ZoneMinder authentication is enabled the account specified in the component configuration must have “Edit” permission for “System”. +

+

To enable this switch, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+switch:
+  - platform: zoneminder
+    command_on: Modect
+    command_off: Monitor
+
+
+

Configuration variables:

+
    +
  • command_on (Required): The function you want the camera to run when turned on.
  • +
  • command_off (Required): The function you want the camera to run when turned off.
  • +
+

+The default functions installed by ZoneMinder are: None, Monitor, Modect, Record, Mocord, Nodect. +

+
+
+ +
+
+ + + + + + + diff --git a/components/switch.zwave/index.html b/components/switch.zwave/index.html new file mode 100644 index 0000000000..00c6f45847 --- /dev/null +++ b/components/switch.zwave/index.html @@ -0,0 +1,418 @@ + + + + + + + + + Z-Wave Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave Switch +

+
+
+

To get your Z-Wave switches working with Home Assistant, follow the instructions for the general Z-Wave component.

+
+
+ +
+
+ + + + + + + diff --git a/components/switch/index.html b/components/switch/index.html new file mode 100644 index 0000000000..f18904e68a --- /dev/null +++ b/components/switch/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Switches - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Switches +

+
+
+

Keeps track which switches are in your environment, their state and allows you to control them.

+
    +
  • Maintains a state per switch and a combined state all_switches.
  • +
  • Registers services switch/turn_on, switch/turn_off, and switch/toggle to control switches.
  • +
+

Use the services

+

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.

+
{"entity_id":"livingroom_pin2"}
+
+
+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific switch. Else targets all.
+
+
+ +
+
+ + + + + + + diff --git a/components/system_log/index.html b/components/system_log/index.html new file mode 100644 index 0000000000..16839bbf1b --- /dev/null +++ b/components/system_log/index.html @@ -0,0 +1,307 @@ + + + + + + + + + System Log - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ System Log +

+
+
+

The system_log component stores information about all logged errors and warnings in Home Assistant. All collected information is accessible directly in the frontend, just navigate to the Info section under Developer Tools. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the number of stored log entries using the parameter max_entries.

+

This component is automatically loaded by the frontend (so no need to do anything if you are using the frontend). If you are not doing so, or if you wish to change a parameter, add the following section to your configuration.yaml file:

+
system_log:
+  max_entries: MAX_ENTRIES
+
+
+
+

Configuration Variables

+
+
max_entries
+
+

(int)(Optional)Number of entries to store (older entries are discarded).

+

Default value: 50

+
+
+
+

Services

+

Service clear

+

To manually clear the system log, call this service.

+

Events

+

Errors and warnings are posted as the event system_log_event, so it is possible to write automations that trigger whenever a warning or error occurs. The following information is included in each event:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
levelEither WARNING or ERROR depending on severity.
sourceFile that triggered the error, e.g., core.py or media_player/yamaha.py.
exceptionFull stack trace if available, otherwise empty string.
messageDescriptive message of the error, e.g., “Error handling request”.
timestampUnix timestamp with as a double, e.g., 1517241010.237416.
+

Live examples of these events can be found in the Home Assistant log file or by just looking in the system log. An example could, for instance, look like this:

+

+

The message (“Unable to find service…”), source (core.py) and level (WARNING) can easily be extracted from the image. Exact timestamp and stack trace is shown if the entry is selected.

+

Examples

+

Here are some examples using the events posted by system_log.

+

Counting Number of Warnings

+

This will create a counter that increases every time a warning is logged:

+
counter:
+  warning_counter:
+    name: Warnings
+    icon: mdi:alert
+
+automation:
+  - alias: Count warnings
+    trigger:
+      platform: event
+      event_type: system_log_event
+      event_data:
+        level: WARNING
+    action:
+      service: counter.increment
+      entity_id: counter.warning_counter
+
+
+

Conditional Messages

+

This automation will create a persistent notification whenever an error or warning is logged that has the word “service” in the message:

+
automation:
+  - alias: Create notifications for "service" errors
+    trigger:
+      platform: event
+      event_type: system_log_event
+    condition:
+      condition: template
+      value_template: '{{ "service" in trigger.event.data.message }}'
+    action:
+      service: persistent_notification.create
+      data_template:
+        title: Something bad happened
+        message: '{{ trigger.event.data.message }}'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tado/index.html b/components/tado/index.html new file mode 100644 index 0000000000..19cf63b8c6 --- /dev/null +++ b/components/tado/index.html @@ -0,0 +1,472 @@ + + + + + + + + + Tado - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tado +

+
+
+

The tado component platform is used as an interface to the my.tado.com website. It adds climate devices for every tado zone and sensors for some additional information of the zones.

+

To use your tado thermostats in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+tado:
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): Username for my.tado.com.
  • +
  • password (Required): Password for my.tado.com.
  • +
+

The tado thermostats are internet connected thermostats. There exists an unofficial API at my.tado.com, which is used by their website and now by this component.

+

It currently supports presenting the current temperature, the setting temperature and the current operation mode. Switching the mode is also supported. If no user is at home anymore, the devices are showing the away-state. Switching to away-mode is not supported.

+
+
+ +
+
+ + + + + + + diff --git a/components/tahoma/index.html b/components/tahoma/index.html new file mode 100644 index 0000000000..368f7491a6 --- /dev/null +++ b/components/tahoma/index.html @@ -0,0 +1,483 @@ + + + + + + + + + Tahoma - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tahoma +

+
+
+

The Tahoma component platform is used as an interface to the tahomalink.com website. It adds covers, scenes and a sun sensor from the Tahoma platform.

+

To use your Tahoma devices in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+tahoma:
+  username: YOUR_USERNAME
+  password: YOUR_PASSWORD
+  exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent]
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)Username for tahomalink.com

+
+
password
+
+

(string)(Required)Password for tahomalink.com

+
+
exclude
+
+

(list)(Optional)Excludes devices

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/telegram_bot.broadcast/index.html b/components/telegram_bot.broadcast/index.html new file mode 100644 index 0000000000..32f493f268 --- /dev/null +++ b/components/telegram_bot.broadcast/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Telegram broadcast - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telegram broadcast +

+
+
+

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:

+
# Example configuration.yaml entry
+
+telegram_bot:
+  - platform: broadcast
+    api_key: <telegram 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.

+
+
+ +
+
+ + + + + + + diff --git a/components/telegram_bot.polling/index.html b/components/telegram_bot.polling/index.html new file mode 100644 index 0000000000..6c4a103f31 --- /dev/null +++ b/components/telegram_bot.polling/index.html @@ -0,0 +1,350 @@ + + + + + + + + + Telegram polling - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telegram polling +

+
+
+

Telegram chatbot polling implementation.

+

One of two bot implementations supported by Telegram. Your Home Assistant does not have to be exposed to the internet.

+

To integrate this into Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+
+telegram_bot:
+  - platform: polling
+    api_key: <telegram 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.

+
+
+ +
+
+ + + + + + + diff --git a/components/telegram_bot.webhooks/index.html b/components/telegram_bot.webhooks/index.html new file mode 100644 index 0000000000..0a5fb2db49 --- /dev/null +++ b/components/telegram_bot.webhooks/index.html @@ -0,0 +1,376 @@ + + + + + + + + + Telegram webhooks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telegram webhooks +

+
+
+

Telegram chatbot webhooks implementation as described in the Telegram documentation.

+

Using Telegrams setWebhook method your bot’s webhook URL should be set to https://<public_url>:<port>/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:

+
# Example configuration.yaml entry
+http:
+  base_url: <public_url> # the Home Assistant https url which is exposed to the internet.
+
+telegram_bot:
+  - platform: webhooks
+    api_key: telegram api key
+    parse_mode: html
+    allowed_chat_ids:
+      - 12345
+      - 67890
+
+
+

Configuration variables:

+
    +
  • 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’.
  • +
  • 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 component for different configurations (https://<public_url>:<port>).
  • +
+

To get your chat_id and api_key follow the instructions here. 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:

+
# Example configuration.yaml entry
+http:
+  base_url: <public_url>
+
+telegram_bot:
+  - platform: webhooks
+    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
+    trusted_networks:
+      - 149.154.167.197/32
+      - 149.154.167.198/31
+      - 149.154.167.200/29
+      - 149.154.167.208/28
+      - 149.154.167.224/29
+      - 149.154.167.232/31
+    allowed_chat_ids:
+      - 12345
+      - 67890
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/telegram_bot/index.html b/components/telegram_bot/index.html new file mode 100644 index 0000000000..63d421dcf7 --- /dev/null +++ b/components/telegram_bot/index.html @@ -0,0 +1,1183 @@ + + + + + + + + + Telegram chatbot - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telegram chatbot +

+
+
+

Use Telegram on your mobile or desktop device to send and receive messages or commands to/from your Home Assistant.

+

This component creates notification services to send, or edit previously sent, messages from a Telegram Bot account configured either with the polling method or with the webhooks one, and trigger events when receiving messages.

+

If you don’t need to receive messages, you can use the broadcast platform instead.

+

Notification services

+

Available services: send_message, send_photo, send_document, send_location, edit_message, edit_replymarkup, edit_caption, answer_callback_query.

+

Service telegram_bot/send_message

+

Send a notification.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
messagenoMessage body of the notification.
titleyesOptional title for your notification. Will be composed as ‘%title\n%message’.
targetyesAn array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id.
parse_modeyesParser for the message text: html or markdown.
disable_notificationyesTrue/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False.
disable_web_page_previewyesTrue/false for disable link previews for links in the message.
keyboardyesList of rows of commands, comma-separated, to make a custom keyboard. Example: ["/command1, /command2", "/command3"]
inline_keyboardyesList 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"]]]
+

Service telegram_bot/send_photo

+

Send a photo.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
urlnoRemote path to an image.
filenoLocal path to an image.
captionyesThe title of the image.
usernameyesUsername for a URL which require HTTP basic authentication.
passwordyesPassword for a URL which require HTTP basic authentication.
authenticationyesDefine which authentication method to use. Set to digest to use HTTP digest authentication. Defaults to basic.
targetyesAn array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id.
disable_notificationyesTrue/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False.
keyboardyesList of rows of commands, comma-separated, to make a custom keyboard. Example: ["/command1, /command2", "/command3"]
inline_keyboardyesList 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"]]]
+

Service telegram_bot/send_video

+

Send a video.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
urlnoRemote path to a video.
filenoLocal path to a video.
captionyesThe title of the video.
usernameyesUsername for a URL which requires HTTP basic authentication.
passwordyesPassword for a URL which requires HTTP basic authentication.
authenticationyesDefine which authentication method to use. Set to digest to use HTTP digest authentication. Defaults to basic.
targetyesAn array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id.
disable_notificationyesTrue/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False.
keyboardyesList of rows of commands, comma-separated, to make a custom keyboard. Example: ["/command1, /command2", "/command3"]
inline_keyboardyesList 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"]]]
+

Service telegram_bot/send_document

+

Send a document.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
urlnoRemote path to a document.
filenoLocal path to a document.
captionyesThe title of the document.
usernameyesUsername for a URL which require HTTP basic authentication.
passwordyesPassword for a URL which require HTTP basic authentication.
authenticationyesDefine which authentication method to use. Set to digest to use HTTP digest authentication. Defaults to basic.
targetyesAn array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id.
disable_notificationyesTrue/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False.
keyboardyesList of rows of commands, comma-separated, to make a custom keyboard. Example: ["/command1, /command2", "/command3"]
inline_keyboardyesList 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"]]]
+

Service telegram_bot/send_location

+

Send a location.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
latitudenoThe latitude to send.
longitudenoThe longitude to send.
targetyesAn array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id.
disable_notificationyesTrue/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False.
keyboardyesList of rows of commands, comma-separated, to make a custom keyboard. Example: ["/command1, /command2", "/command3"]
inline_keyboardyesList 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"]]]
+

Service telegram_bot/edit_message

+

Edit a previously sent message in a conversation.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
message_idnoId of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: ``. You can use "last" to refer to the last message sent to chat_id.
chat_idnoThe chat_id where to edit the message.
messagenoMessage body of the notification.
titleyesOptional title for your notification. Will be composed as ‘%title\n%message’.
parse_modeyesParser for the message text: html or markdown.
disable_web_page_previewyesTrue/false for disable link previews for links in the message.
inline_keyboardyesList 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"]]]
+

Service telegram_bot/edit_caption

+

Edit the caption of a previously sent message.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
message_idnoId of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: ``. You can use "last" to refer to the last message sent to chat_id.
chat_idnoThe chat_id where to edit the caption.
captionnoMessage body of the notification.
disable_web_page_previewyesTrue/false for disable link previews for links in the message.
inline_keyboardyesList 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"]]]
+

Service telegram_bot/edit_replymarkup

+

Edit the inline keyboard of a previusly sent message.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
message_idnoId of the message to edit. When answering a callback from a pressed button, the id of the origin message is in: ``. You can use "last" to refer to the last message sent to chat_id.
chat_idnoThe chat_id where to edit the reply_markup.
disable_web_page_previewyesTrue/false for disable link previews for links in the message.
inline_keyboardyesList 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"]]]
+

Service telegram_bot/answer_callback_query

+

Respond to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
messagenoUnformatted text message body of the notification.
callback_query_idnoUnique id of the callback response. In the telegram_callback event data: ``
show_alertyesTrue/false for show a permanent notification. Defaults to False.
+

Service telegram_bot/delete_message

+

Delete a previously sent message in a conversation.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
message_idnoId of the message to delete. When answering a callback from a pressed button, the id of the origin message is in: ``. You can use "last" to refer to the last message sent to chat_id.
chat_idnoThe chat_id where to delete the message.
+

Telegram notification platform

+

The Telegram notification platform 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:

+
notify:
+  - name: NOTIFIER_NAME
+    platform: telegram
+    chat_id: USER_CHAT_ID
+
+
+

Event triggering

+

A command looks like /thecommand, or /othercommand with some args.

+

When received by Home Assistant it will fire a telegram_command event on the event bus with the following event_data:

+
command: "/thecommand"
+args: "<any other text following the command>"
+from_first: "<first name of the sender>"
+from_last: "<last name of the sender>"
+user_id: "<id of the sender>"
+chat_id: "<origin chat id>"
+chat: "<chat info>"
+
+
+

Any other message not starting with / will be processed as simple text, firing a telegram_text event on the event bus with the following event_data:

+
text: "some text received"
+from_first: "<first name of the sender>"
+from_last: "<last name of the sender>"
+user_id: "<id of the sender>"
+chat_id: "<origin chat id>"
+chat: "<chat info>"
+
+
+

if the message is sent from a press from an inline button, for example, a callback query is received, and Home Assistant will fire a telegram_callback event with:

+
data: "<data associated to action callback>"
+message: <message origin of the action callback>
+from_first: "<first name of the sender>"
+from_last: "<last name of the sender>"
+user_id: "<id of the sender>"
+id: "<unique id of the callback>"
+chat_instance: "<chat instance>"
+chat_id: "<origin chat id>"
+
+
+

Configuration samples

+

Simple ping pong example.

+
alias: 'Telegram bot that reply pong to ping'
+hide_entity: true
+trigger:
+  platform: event
+  event_type: telegram_command
+  event_data:
+    command: '/ping'
+action:
+  - service: notify.notify
+    data:
+      message: 'pong'
+
+
+

Example that show keyboard interaction with notify.telegram

+
trigger:
+  platform: event
+  event_type: telegram_command
+  event_data:
+    command: '/start'
+action:
+  - service: notify.telegram
+    data:
+      message: 'commands'
+      data:
+        keyboard:
+          - '/ping, /alarm'
+          - '/siren'
+
+
+

and an automation to trigger a related command “/siren”.

+
trigger:
+  platform: event
+  event_type: telegram_command
+  event_data:
+    command: '/siren'
+action:
+  - service: homeassistant.turn_on
+    entity_id: switch.vision_zm1601eu5_battery_operated_siren_switch_9_0
+  - delay:
+      seconds: 10
+  - service: homeassistant.turn_off
+    entity_id: switch.vision_zm1601eu5_battery_operated_siren_switch_9_0
+
+
+

An example to show the use of event_data in the action:

+
- alias: 'Kitchen Telegram Speak'
+  trigger:
+    platform: event
+    event_type: telegram_command
+    event_data:
+      command: '/speak'
+  action:
+    - service: notify.kitchen_echo
+      data_template:
+        message: >
+          Message from {{ trigger.event.data["from_first"] }}. {% for state in trigger.event.data["args"] %} {{ state }} {% endfor %}
+
+
+

Sample automations with callback queries and inline keyboards

+

Quick example to show some of the callback capabilities of inline keyboards with a dumb automation consisting in a simple repeater of normal text that presents an inline keyboard with 3 buttons: ‘EDIT’, ‘NO’ and ‘REMOVE BUTTON’:

+
    +
  • Pressing ‘EDIT’ changes the sent message.
  • +
  • Pressing ‘NO’ only shows a brief notification (answering the callback query).
  • +
  • Pressing ‘REMOVE BUTTON’ changes the inline keyboard removing that button.
  • +
+

Text repeater:

+
- alias: 'Telegram bot that repeats text'
+  hide_entity: true
+  trigger:
+    platform: event
+    event_type: telegram_text
+  action:
+    - service: telegram_bot.send_message
+      data_template:
+        title: '*Dumb automation*'
+        target: '{{ trigger.event.data.user_id }}'
+        message: 'You said: {{ trigger.event.data.text }}'
+        disable_notification: true
+        inline_keyboard:
+          - "Edit message:/edit_msg, Don't:/do_nothing"
+          - "Remove this button:/remove button"
+
+
+

Message editor:

+
- alias: 'Telegram bot that edits the last sent message'
+  hide_entity: true
+  trigger:
+    platform: event
+    event_type: telegram_callback
+    event_data:
+      data: '/edit_msg'
+  action:
+    - service: telegram_bot.answer_callback_query
+      data_template:
+        callback_query_id: ''
+        message: 'Editing the message!'
+        show_alert: true
+    - service: telegram_bot.edit_message
+      data_template:
+        message_id: '{{ trigger.event.data.message.message_id }}'
+        chat_id: '{{ trigger.event.data.chat_id }}'
+        title: '*Message edit*'
+        inline_keyboard:
+          - "Edit message:/edit_msg, Don't:/do_nothing"
+          - "Remove this button:/remove button"
+        message: >
+          Callback received from {% raw %}{{ trigger.event.data.from_first }}.
+          Message id: {{ trigger.event.data.message.message_id }}.
+          Data: {{ trigger.event.data.data }}
+
+
+

Keyboard editor:

+
- alias: 'Telegram bot that edits the keyboard'
+  hide_entity: true
+  trigger:
+    platform: event
+    event_type: telegram_callback
+    event_data:
+      data: '/remove button'
+  action:
+    - service: telegram_bot.answer_callback_query
+      data_template:
+        callback_query_id: '{{ trigger.event.data.id }}'
+        message: 'Callback received for editing the inline keyboard!'
+    - service: telegram_bot.edit_replymarkup
+      data_template:
+        message_id: 'last'
+        chat_id: '{{ trigger.event.data.chat_id }}'
+        inline_keyboard:
+          - "Edit message:/edit_msg, Don't:/do_nothing"
+
+
+

Only acknowledges the ‘NO’ answer:

+
- alias: 'Telegram bot that simply acknowledges'
+  hide_entity: true
+  trigger:
+    platform: event
+    event_type: telegram_callback
+    event_data:
+      data: '/do_nothing'
+  action:
+    - service: telegram_bot.answer_callback_query
+      data_template:
+        callback_query_id: '{{ trigger.event.data.id }}'
+        message: 'OK, you said no!'
+
+
+

For a more complex usage of the telegram_bot capabilities, using AppDaemon is advised.

+

This is how the previous 4 automations would be through a simple AppDaemon app:

+
import appdaemon.appapi as appapi
+
+class TelegramBotEventListener(appapi.AppDaemon):
+    """Event listener for Telegram bot events."""
+
+    def initialize(self):
+        """Listen to Telegram Bot events of interest."""
+        self.listen_event(self.receive_telegram_text, 'telegram_text')
+        self.listen_event(self.receive_telegram_callback, 'telegram_callback')
+
+    def receive_telegram_text(self, event_id, payload_event, *args):
+        """Text repeater."""
+        assert event_id == 'telegram_text'
+        user_id = payload_event['user_id']
+        msg = 'You said: ``` %s ```' % payload_event['text']
+        keyboard = [[("Edit message", "/edit_msg"),
+                     ("Don't", "/do_nothing")],
+                    [("Remove this button", "/remove button")]]
+        self.call_service('telegram_bot/send_message',
+                          title='*Dumb automation*',
+                          target=user_id,
+                          message=msg,
+                          disable_notification=True,
+                          inline_keyboard=keyboard)
+
+    def receive_telegram_callback(self, event_id, payload_event, *args):
+        """Event listener for Telegram callback queries."""
+        assert event_id == 'telegram_callback'
+        data_callback = payload_event['data']
+        callback_id = payload_event['id']
+        chat_id = payload_event['chat_id']
+        # keyboard = ["Edit message:/edit_msg, Don't:/do_nothing",
+        #             "Remove this button:/remove button"]
+        keyboard = [[("Edit message", "/edit_msg"),
+                     ("Don't", "/do_nothing")],
+                    [("Remove this button", "/remove button")]]
+
+        if data_callback == '/edit_msg':  # Message editor:
+            # Answer callback query
+            self.call_service('telegram_bot/answer_callback_query',
+                              message='Editing the message!',
+                              callback_query_id=callback_id,
+                              show_alert=True)
+
+            # Edit the message origin of the callback query
+            msg_id = payload_event['message']['message_id']
+            user = payload_event['from_first']
+            title = '*Message edit*'
+            msg = 'Callback received from %s. Message id: %s. Data: ``` %s ```'
+            self.call_service('telegram_bot/edit_message',
+                              chat_id=chat_id,
+                              message_id=msg_id,
+                              title=title,
+                              message=msg % (user, msg_id, data_callback),
+                              inline_keyboard=keyboard)
+
+        elif data_callback == '/remove button':  # Keyboard editor:
+            # Answer callback query
+            self.call_service('telegram_bot/answer_callback_query',
+                              message='Callback received for editing the '
+                                      'inline keyboard!',
+                              callback_query_id=callback_id)
+
+            # Edit the keyboard
+            new_keyboard = keyboard[:1]
+            self.call_service('telegram_bot/edit_replymarkup',
+                              chat_id=chat_id,
+                              message_id='last',
+                              inline_keyboard=new_keyboard)
+
+        elif data_callback == '/do_nothing':  # Only Answer to callback query
+            self.call_service('telegram_bot/answer_callback_query',
+                              message='OK, you said no!',
+                              callback_query_id=callback_id)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tellduslive/index.html b/components/tellduslive/index.html new file mode 100644 index 0000000000..633c7b0a9f --- /dev/null +++ b/components/tellduslive/index.html @@ -0,0 +1,470 @@ + + + + + + + + + Telldus Live - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Telldus Live +

+
+
+

The tellduslive component let you connect to Telldus Live. It’s cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home.

+

+If you are upgrading from 0.58 or older, you need to remove all Telldus configuration from your configuration.yaml file before continuing. +

+

Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the discovery component is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API.

+

To manually integrate your Telldus Live with Home Assistant, e.g. if your device is on another network or in another location, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+tellduslive:
+
+
+

Configuration variables:

+
    +
  • host (Optional): Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled.
  • +
  • update_interval (Optional): Interval (in seconds) for polling the Telldus Live server (or the local server).
  • +
+

The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account.

+
+
+ +
+
+ + + + + + + diff --git a/components/tellstick/index.html b/components/tellstick/index.html new file mode 100644 index 0000000000..630c312ac2 --- /dev/null +++ b/components/tellstick/index.html @@ -0,0 +1,472 @@ + + + + + + + + + TellStick - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ TellStick +

+
+
+

The tellstick component integrates 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.

+

To get started, add the devices to your configuration.yaml file.

+
# Example configuration.yaml entry
+tellstick:
+
+
+
# Example configuration.yaml entry for hass.io with TellStick add-on
+tellstick:
+  host: core-tellstick
+  port: [50800, 50801]
+
+
+

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. Must be port pair, for example [50800, 50801].
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/tesla/index.html b/components/tesla/index.html new file mode 100644 index 0000000000..575a923049 --- /dev/null +++ b/components/tesla/index.html @@ -0,0 +1,489 @@ + + + + + + + + + Tesla - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tesla +

+
+
+

The Tesla component offers integration with the Tesla cloud service and provides presence detection as well as sensors such as charger state and temperature.

+

This component provides the following platforms:

+
    +
  • Binary sensors - such as parking and charger connection.
  • +
  • Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range.
  • +
  • Device tracker - to track location of your car
  • +
  • Lock - Door lock. Enables you to control Tesla’s door lock
  • +
  • Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla’s HVAC system.
  • +
  • Switch - Charger and max range switch. Allow you to start/stop charging and set max range charging.
  • +
+

To use Tesla in your installation, add the following to your configuration.yaml file:

+
# 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/components/thethingsnetwork/index.html b/components/thethingsnetwork/index.html new file mode 100644 index 0000000000..56923f1178 --- /dev/null +++ b/components/thethingsnetwork/index.html @@ -0,0 +1,507 @@ + + + + + + + + + The Things Network - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ The Things Network +

+
+
+

The thethingsnetwork component allows one to interact with the The Things Network. This community-driven and open network supports LoRaWAN for long range (~5 to 15km) communication with a low bandwidth (51 bytes/message). 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 IntegrationHome Assistant platform
MQTT 
Storagethethingsnetwork
HTTP 
+

Setup

+

Visit the The Things Network Console 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:

+
# Example configuration.yaml entry
+thethingsnetwork:
+  app_id: sensor-123
+  access_key: ttn-account-v2.xxxxxxxxxxx_yyyyyyyyyyy
+
+
+
+

Configuration Variables

+
+
app_id
+
+

(string)(Required)The Application ID.

+
+
access_key
+
+

(string)(Required)The access key.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/thingspeak/index.html b/components/thingspeak/index.html new file mode 100644 index 0000000000..bd4b68197b --- /dev/null +++ b/components/thingspeak/index.html @@ -0,0 +1,208 @@ + + + + + + + + + ThingSpeak - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ThingSpeak +

+
+
+

The thingspeak components makes Home Assistant communicate with the ThingSpeak API. +For now, it records exactly one entity at once, which is great for testing purposes. For long-time storage you should rely on the InfluxDB component.

+

You will have to create a new channel on ThingSpeak and grab your Write API Key from the “API Keys” tab of the channel you want to use.

+

To setup the ThingSpeak component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+thingspeak:
+  api_key: MY_API_KEY
+  id: 1337
+  whitelist: sensor.yr_temperature
+
+
+

Configuration variables:

+
    +
  • api_key (Required): Your ThingSpeak Channel Write API key.
  • +
  • id (Required): The ID of your desired ThingSpeak channel.
  • +
  • whitelist (Required): The name of the entity whose states should be sent to the channel.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/timer/index.html b/components/timer/index.html new file mode 100644 index 0000000000..95f63f6991 --- /dev/null +++ b/components/timer/index.html @@ -0,0 +1,395 @@ + + + + + + + + + Timer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Timer +

+
+
+

The timer component aims to simplify automations based on (dynamic) durations.

+

When a timer finishes or gets canceled the corresponding events are fired. This allows you to differentiate if a timer has switched from active to idle because the given duration has elapsed or it has been canceled. To control timers in your automations you can use the services mentioned below. When calling the start service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering any events. This for example makes it easy to create timed lights that get triggered by motion.

+

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

+
# Example configuration.yaml entry
+timer:
+  laundry:
+    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 to use for your timer and prefix the name with mdi:. For example mdi:car, mdi:ambulance, or mdi:motorbike.

+

Events

+ + + + + + + + + + + + + + + + + +
EventDescription
timer.cancelledFired when a timer has been canceled
timer.finishedFired when a timer has completed
+

Services

+

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 attributeOptionalDescription
entity_idyesName of the entity to take action, e.g., timer.timer0.
durationyesDuration in seconds or 00:00:00 until the timer finishes.
+

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 attributeOptionalDescription
entity_idyesName of the entity to take action, e.g., timer.timer0.
+

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

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesName of the entity to take action, e.g., timer.timer0.
+

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 attributeOptionalDescription
entity_idyesName of the entity to take action, e.g., timer.timer0.
+

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.

+
{
+  "entity_id": "timer.timer0"
+}
+
+
+

Examples

+

Set a timer called test to a duration of 30 seconds.

+
# Example configuration.yaml entry
+timer:
+  test:
+    duration: '00:00:30'
+
+
+

Control a timer from the frontend

+
# Example automations.yaml entry
+- action:
+  - service: timer.start
+    entity_id: timer.test
+  alias: Timerswitch
+  id: 'Timerstart'
+
+# Timer is started when the switch pumprun is set to on. 
+  trigger: 
+    platform: state
+    entity_id: switch.pumprun
+    to: 'on'
+
+# When timer is stopped, the time run out, another message is sent
+- action:
+  - service: notify.nma
+    data:
+      message: "Timer stop"
+  alias: Timerstop
+  id: 'Timerstop'
+  trigger: 
+    platform: event
+    event_type: timer.finished
+    event_data: 
+      entity_id: timer.test
+
+
+

Control a timer from the frontend

+

With the script component you would be able to control a timer (see above for a timer configuration sample) manually.

+
script:
+  start_timer:
+    alias: Start timer
+    sequence:
+      - service: timer.start
+        entity_id: timer.test
+  pause_timer:
+    alias: Pause timer
+    sequence:
+      - service: timer.pause
+        entity_id: timer.test
+  cancel_timer:
+    alias: Cancel timer
+    sequence:
+      - service: timer.cancel
+        entity_id: timer.test
+  finish_timer:
+    alias: Finish timer
+    sequence:
+      - service: timer.finish
+        entity_id: timer.test
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/toon/index.html b/components/toon/index.html new file mode 100644 index 0000000000..55d429de2b --- /dev/null +++ b/components/toon/index.html @@ -0,0 +1,473 @@ + + + + + + + + + Toon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Toon +

+
+
+

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

+

To use your Toon thermostat in your installation, add the following to your configuration.yaml file:

+
# 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 by Costas Tyfoxylos that connects to the unofficial API on 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/components/tradfri/index.html b/components/tradfri/index.html new file mode 100644 index 0000000000..824915a030 --- /dev/null +++ b/components/tradfri/index.html @@ -0,0 +1,476 @@ + + + + + + + + + IKEA Trådfri (Tradfri) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ IKEA Trådfri (Tradfri) +

+
+
+

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.

+

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. Don’t forget to assign a permanent IP to your Trådfri gateway. +

+

+ The Python version 3.4.4 or greater is required for this component. The component will not initialize without this and will report a Could not install all requirements error in the logs. +

+

You can add the following to your configuration.yaml file if you are not using the discovery: component:

+
# Example configuration.yaml entry
+tradfri:
+  host: IP_ADDRESS
+
+
+

Configuration variables:

+
    +
  • host (Required): The IP address or hostname of your Trådfri gateway.
  • +
  • allow_tradfri_groups (Optional): Set this to false 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. +

+

+Please make sure you have autoconf installed (apt-get install autoconf) if you want to use this component. Also, installing some dependencies might take considerable time (>1h) on slow devices. You might have to use sudo when installing autoconf. +

+
+
+ +
+
+ + + + + + + diff --git a/components/tts.amazon_polly/index.html b/components/tts.amazon_polly/index.html new file mode 100644 index 0000000000..d98a00bf55 --- /dev/null +++ b/components/tts.amazon_polly/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Amazon Polly - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Amazon Polly +

+
+
+

The amazon_polly text-to-speech platform that works with Amazon Polly to create the spoken output. +Polly is a paid service via Amazon Web Services. There is a free tier for the first 12 months and then a charge per million characters afterwards.

+

To get started, add the following lines to your configuration.yaml (example for Amazon Polly):

+
# Example configuration.yaml entry
+tts:
+  - platform: amazon_polly
+    aws_access_key_id: AWS_ACCESS_KEY_ID
+    aws_secret_access_key: AWS_SECRET_ACCESS_KEY
+    profile_name: AWS_PROFILE
+    region_name: 'us-east-1'
+    voice: Joanna
+
+
+

Configuration variables:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterValueDescription
aws_access_key_idRequiredYour AWS Access Key ID. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_secret_access_key and must not provide a profile_name
aws_secret_access_keyRequiredYour AWS Secret Access Key. For more information, please read the AWS General Reference regarding Security Credentials. If provided, you must also provide an aws_access_key_id and must not provide a profile_name.
profile_nameOptionalA credentials profile name. For more information, please see the boto3 Documentation for more information.
region_nameOptionalThe region identifier to connect to. The default is us-east-1.
nameOptionalSetting 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_typetext/ssmltext or ssml: Specify wherever to use text (default) or ssml markup by default.
voiceOptionalVoice name to be used. See the Amazon Documentation for available voices.
output_formatmp3/ogg_vorbis/pcmOverride the default output format, defaults to MP3.
sample_rate8000/16000/22050Override the default sample rate, defaults to 22050 for MP3 and Ogg Vorbis, 16000 for pcm.
+

Usage

+

Say to all media_player device entities:

+
- service: tts.amazon_polly_say
+  data_template:
+    message: '<speak>Hello from Amazon Polly</speak>'
+
+
+

or

+
- service: tts.amazon_polly_say
+  data_template:
+    message: >
+      <speak>
+          Hello from Amazon Polly
+      </speak>
+
+
+

Say to the media_player.living_room device entity:

+
- service: tts.amazon_polly_say
+  data_template:
+    entity_id: media_player.living_room
+    message: >
+      <speak>
+          Hello from Amazon Polly
+      </speak>
+
+
+

Say with break:

+
- service: tts.amazon_polly_say
+  data_template:
+    message: >
+      <speak>
+          Hello from
+          <break time=".9s" />
+          Amazon Polly
+      </speak>
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tts.baidu/index.html b/components/tts.baidu/index.html new file mode 100644 index 0000000000..99fc5ad407 --- /dev/null +++ b/components/tts.baidu/index.html @@ -0,0 +1,225 @@ + + + + + + + + + Baidu Text-to-Speech - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Baidu Text-to-Speech +

+
+
+

The baidu text-to-speech platform uses Baidu TTS engine to read a text with natural sounding voices.

+

To get started, add the following lines to your configuration.yaml:

+
#Example configuration.yaml entry
+tts:
+  - platform: baidu
+    app_id: YOUR_APPID
+    api_key: YOUR_APIKEY
+    secret_key: YOUR_SECRETKEY
+
+
+
+

Configuration Variables

+
+
app_id
+
+

(string)(Required)The App ID for the use this service, must be already registered on Baidu.

+
+
api_key
+
+

(string)(Required)The API key from Baidu.

+
+
secret_key
+
+

(string)(Required)The secret key from Baidu.

+
+
speed
+
+

(int)(Optional)Audio speed from 0 to 9.

+

Default value: 5

+
+
pitch
+
+

(int)(Optional)Audio pitch from 0 to 9.

+

Default value: 5

+
+
volume
+
+

(int)(Optional)Audio volume from 0 to 15.

+

Default value: 5

+
+
person
+
+

(int)(Optional)Voice type. You choose one from 0, 1, 3 or 4.

+

Default value: 0

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tts.google/index.html b/components/tts.google/index.html new file mode 100644 index 0000000000..0a421b6547 --- /dev/null +++ b/components/tts.google/index.html @@ -0,0 +1,215 @@ + + + + + + + + + Google Text-to-Speech - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Google Text-to-Speech +

+
+
+

The google text-to-speech platform uses Google Text-to-Speech engine Text-to-Speech engine to read a text with natural sounding voices.

+

To enable text-to-speech with Google, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+tts:
+  - platform: google
+
+
+

Configuration variables:

+ +

A full configuration sample:

+
# Example configuration.yaml entry
+tts:
+  - platform: google
+    language: 'de'
+
+
+

If you are using SSL certificate or Docker, you may need to add the base_url configuration variable to your http component as follows:

+
#Example configuration.yaml entry
+http:
+  base_url: example.duckdns.org
+
+
+

The base_url configuration variable was added in 0.35.1, so make sure your Home Assistant version is 0.35.1 or above.

+
+
+ +
+
+ + + + + + + diff --git a/components/tts.marytts/index.html b/components/tts.marytts/index.html new file mode 100644 index 0000000000..9c6329bbc7 --- /dev/null +++ b/components/tts.marytts/index.html @@ -0,0 +1,207 @@ + + + + + + + + + MaryTTS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MaryTTS +

+
+
+

The marytts text-to-speech platform uses MaryTTS Text-to-Speech engine to read a text with natural sounding voices.

+

To enable text-to-speech with MaryTTS, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+tts:
+  - platform: marytts
+    host: 'localhost'
+    port: 59125
+
+
+

Configuration variables:

+
    +
  • host (Optional): MaryTTS server hostname or IP address. Default is localhost.
  • +
  • port (Optional): MaryTTS server port. Default is 59125.
  • +
  • codec (Optional): Audio codec. Default is wav. Supported are aiff, au, wav.
  • +
  • voice (Optional): Speaker voice. Default is cmu-slt-hsmm.
  • +
  • language (Optional): Language to use. Default is en-US. Supports ‘de’, ‘en-GB’, ‘en-US’, ‘fr’, ‘it’, ‘lb’, ‘ru’, ‘sv’, ‘te’, ‘tr’.
  • +
+

See documentation for details.

+

A full configuration sample:

+
# Example configuration.yaml entry
+tts:
+  - platform: marytts
+    host: 'localhost'
+    port: 59125
+    codec: 'wav'
+    voice: 'cmu-slt-hsmm'
+    language: 'en-US'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tts.microsoft/index.html b/components/tts.microsoft/index.html new file mode 100644 index 0000000000..4f6b53c00f --- /dev/null +++ b/components/tts.microsoft/index.html @@ -0,0 +1,212 @@ + + + + + + + + + Microsoft Text-to-Speech - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Microsoft Text-to-Speech +

+
+
+

The microsoft text-to-speech platform uses Microsoft Text-to-Speech engine 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 or get an API key on the Cognitive Services site.

+

To enable text-to-speech with Microsoft, add the following lines to your configuration.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. Note that if you set the language to anything other than the default of en-us, you will need to specify a matching voice type as well.
  • +
  • gender (Optional): The gender you would like to use for the voice. Accepted values are Female and Male. Defaults to Female.
  • +
  • type (Optional): The voice type you want to use. Accepted values are listed as the service name mapping in the documentation. Defaults to ZiraRUS.
  • +
  • rate (Optional): Change the rate of speaking in percentage. Example values: 25, 50. Defaults to 0 (no change).
  • +
  • volume (Optional): Change the volume of the output in percentage. Example values: -20, 70. Defaults to 0 (no change).
  • +
  • pitch (Optional): Change the pitch of the output. Example values: high. Defaults to default (no change).
  • +
  • contour (Optional): Change the contour of the output in percentages. This overrides the pitch setting. See the W3 SSML specification for what it does. Example value: (0,0) (100,100).
  • +
+

A full configuration sample including optional configuration variables:

+
# Example configuration.yaml entry
+tts:
+  - platform: microsoft
+    api_key: XXXXXXXXX
+    language: en-gb
+    gender: Male
+    type: George, Apollo
+    rate: 20
+    volume: -50
+    pitch: high
+    contour: (0, 0) (100, 100)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tts.picotts/index.html b/components/tts.picotts/index.html new file mode 100644 index 0000000000..86d58b7d99 --- /dev/null +++ b/components/tts.picotts/index.html @@ -0,0 +1,199 @@ + + + + + + + + + Pico Text-to-Speech - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Pico Text-to-Speech +

+
+
+

The picotts text-to-speech platform uses offline pico Text-to-Speech engine to read a text with natural sounding voices. +This requires to install the pico tts library on the system, typically on debian just do sudo apt-get install libttspico-utils +On some raspbian release, this package is missing but you can just copy the arm deb package from debian.

+

To enable text-to-speech with Pico, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+tts:
+  - platform: picotts
+
+
+

Configuration variables:

+
    +
  • language (Optional): The language to use. Defaults to en-US. +Supported languages : ‘en-US’, ‘en-GB’, ‘de-DE’, ‘es-ES’, ‘fr-FR’, ‘it-IT’
  • +
+

A full configuration sample:

+
# Example configuration.yaml entry
+tts:
+  - platform: picotts
+    language: 'fr-FR'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tts.voicerss/index.html b/components/tts.voicerss/index.html new file mode 100644 index 0000000000..e315fc0ad6 --- /dev/null +++ b/components/tts.voicerss/index.html @@ -0,0 +1,205 @@ + + + + + + + + + VoiceRSS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ VoiceRSS +

+
+
+

The voicerss text-to-speech platform uses VoiceRSS Text-to-Speech engine to read a text with natural sounding voices.

+

To enable text-to-speech with VoiceRSS, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+tts:
+  - platform: voicerss
+    api_key: 'XXXXXXXX'
+
+
+

Configuration variables:

+
    +
  • api_key (Required): API Key for use this service.
  • +
  • language (Optional): The language to use. Defaults to en-us.
  • +
  • codec (Optional): Audio codec. Default is ‘mp3’.
  • +
  • format (Optional): Audio sample format. Default is ‘8khz_8bit_mono’
  • +
+

See on api documentation for allow values.

+

A full configuration sample:

+
# Example configuration.yaml entry
+tts:
+  - platform: voicerss
+    api_key: 'XXXXX'
+    language: 'de-de'
+    codec: mp3
+    format: '8khz_8bit_mono'
+
+
+

Please note, some media_players require a certain format. For example the Sonos requires a format of ‘44khz_16bit_stereo’

+
+
+ +
+
+ + + + + + + diff --git a/components/tts.yandextts/index.html b/components/tts.yandextts/index.html new file mode 100644 index 0000000000..5d2779f0a1 --- /dev/null +++ b/components/tts.yandextts/index.html @@ -0,0 +1,208 @@ + + + + + + + + + Yandex TTS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yandex TTS +

+
+
+

The yandextts text-to-speech platform uses Yandex SpeechKit Text-to-Speech engine to read a text with natural sounding voices.

+

To enable text-to-speech with Yandex SpeechKit, add the following lines to your configuration.yaml:

+
# Example configuration.yaml entry
+tts:
+  - platform: yandextts
+    api_key: 'XXXXXXXX'
+
+
+

Configuration variables:

+
    +
  • api_key (Required): API Key for use this service.
  • +
  • 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
  • +
+

Please check the API documentation for details. It seems that the English version of documentation is outdated. You could request an API key by email or online.

+

A full configuration sample:

+
# Example configuration.yaml entry
+tts:
+  - platform: yandextts
+    api_key: 'XXXXX'
+    language: 'ru-RU'
+    codec: mp3
+    voice: oksana
+    emotion: evil
+    speed: 2
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/tts/index.html b/components/tts/index.html new file mode 100644 index 0000000000..8b2da06f76 --- /dev/null +++ b/components/tts/index.html @@ -0,0 +1,247 @@ + + + + + + + + + Text-to-Speech (TTS) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Text-to-Speech (TTS) +

+
+
+

Text-to-speech (TTS) enables Home Assistant to speak to you.

+

Configuring a tts platform

+

To get started, add the following lines to your configuration.yaml (example for google):

+
# Example configuration.yaml entry for google tts service
+tts:
+  - platform: google
+
+
+

The following optional parameters can be used with any platform. However the TTS component will only look for global settings under the configuration of the first configured platform:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ParameterDefaultDescription
cacheTrueAllow TTS to cache voice file to local storage.
cache_dirttsFolder name or path to folder for caching files.
time_memory300Time 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:

+
# Example configuration.yaml entry for google tts service
+tts:
+  - platform: google
+    cache: true
+    cache_dir: /tmp/tts
+    time_memory: 300
+
+
+

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

+

Service say

+

The say service support language and on some platforms also options for set i.e. voice, motion, speed, etc. The text for speech is set with message.

+

Say to all media_player device entities:

+
# Replace google_say with <platform>_say when you use a different platform.
+service: tts.google_say
+data:
+  message: 'May the Force be with you.'
+
+
+

Say to the media_player.floor device entity:

+
service: tts.google_say
+entity_id: media_player.floor
+data:
+  message: 'May the Force be with you.'
+
+
+

Say to the media_player.floor device entity in French:

+
service: tts.google_say
+entity_id: media_player.floor
+data:
+  message: 'Que la force soit avec toi.'
+  language: 'fr'
+
+
+

With a template:

+
service: tts.google_say
+data_template:
+  message: "Temperature is {{states('sensor.temperature')}}."
+  cache: false
+
+
+

Cache

+

The component has two caches. Both caches can be controlled with the cache option in the platform configuration or the service call say. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.

+
+
+ +
+
+ + + + + + + diff --git a/components/twilio/index.html b/components/twilio/index.html new file mode 100644 index 0000000000..2cbe711254 --- /dev/null +++ b/components/twilio/index.html @@ -0,0 +1,457 @@ + + + + + + + + + Twilio - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Twilio +

+
+
+

The twilio component enables the sending of notifications via SMS and the creation of calls with Twilio.

+

Free trial account is available at Twilio website providing free calls to verified phone numbers. +Calls are limited to 10 minutes and will play a short trial message before your message runs. Upgraded accounts have no limitation.

+

To use this notification component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+twilio:
+  account_sid: ACCOUNT_SID_FROM_TWILIO
+  auth_token: AUTH_TOKEN_FROM_TWILIO
+
+
+

Configuration variables:

+
    +
  • account_sid (Required): Your Twilio Account SID which can be found in your console. It starts with the letters AC.
  • +
  • auth_token (Required): Your Twilio AUTH TOKEN which can be found in your console. It should be directly under where you found the account_sid.
  • +
+

Usage

+

After configuring the base Twilio component, add and configure either or both of the twilio SMS and twilio Phone components to utilize the notification functionality.

+
+
+ +
+
+ + + + + + + diff --git a/components/upcloud/index.html b/components/upcloud/index.html new file mode 100644 index 0000000000..4710824ba4 --- /dev/null +++ b/components/upcloud/index.html @@ -0,0 +1,481 @@ + + + + + + + + + UpCloud - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UpCloud +

+
+
+

The upcloud component allows you to access the information about your UpCloud servers from Home Assistant.

+

Set up your API user credentials in your UpCloud control panel.

+

To integrate your UpCloud servers with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+upcloud:
+  username: YOUR_API_USERNAME
+  password: YOUR_API_PASSWORD
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)Your UpCloud API username.

+
+
password
+
+

(string)(Required)Your UpCloud API user password.

+
+
scan_interval
+
+

(int)(Optional)Update interval in seconds.

+

Default value: 60

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/updater/index.html b/components/updater/index.html new file mode 100644 index 0000000000..2b9982dde4 --- /dev/null +++ b/components/updater/index.html @@ -0,0 +1,248 @@ + + + + + + + + + Updater - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Updater +

+
+
+

The updater component will check daily for new releases. It will show a badge in the frontend if a new version is found. As Hass.io has its own schedule for release it doesn’t make sense to use this component on Hass.io.

+

The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python source code. For further information about the Updater’s data, please check the detailed overview.

+

To integrate this into Home Assistant, add the following section to your configuration.yaml file:

+
updater:
+
+
+

If you choose not to share any information when checking for updates, you can add reporting: False.

+

It is possible to report the components that you are using to the Home Assistant developers. This will help them focus on improving the popular ones. To enable this option, you have to add include_used_components: True.

+
"components": [
+    "apcupsd",
+    "api",
+    "automation",
+    "binary_sensor",
+    "binary_sensor.zwave",
+    "camera",
+    "camera.uvc",
+    "config",
+    "config.core",
+    ...
+]
+
+
+

Notification

+

For an added bonus, an automation component can be created to send a message with a notifier when that state of this component’s entity changes.

+
# Example configuration.yaml entry
+automation:
+  alias: 'Update Available Notifications'
+  trigger:
+    platform: state
+    entity_id: updater.updater
+  action:
+    service: notify.notify
+    data:
+      message: 'Update for Home Assistant is available.'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/upnp/index.html b/components/upnp/index.html new file mode 100644 index 0000000000..9c6307f049 --- /dev/null +++ b/components/upnp/index.html @@ -0,0 +1,261 @@ + + + + + + + + + UPnP - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ UPnP +

+
+
+

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.

+

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.

+

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:

+
# Example configuration.yaml entry with custom external portal
+upnp:
+  ports:
+    hass: 8000
+    8080: 8080
+
+
+

If you which to have the statistics without having port mapping done through IGD, add the option port_mapping.

+

Configuration variables:

+
+

Configuration Variables

+
+
ports
+
+

(map)(Optional)Map of ports to map from internal to external. Pass ‘hass’ as internal port to use the port Home Assistant runs on.

+

Default value: open same port on external router as that HASS runs locally and forwards it.

+
+
port_mapping
+
+

(boolean)(Optional)If the component should try to map ports.

+

Default value: false

+
+
units
+
+

(string)(Optional)Define the units used for the UPNP sensor. Possible values are Bytes, KBytes, MBytes, GBytes.

+

Default value: Mbytes

+
+
local_ip
+
+

(string)(Optional)The local IP address of the computer running Home Assistant.

+

Default value: Try to auto-detect IP of host.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/usps/index.html b/components/usps/index.html new file mode 100644 index 0000000000..7f16a9c22f --- /dev/null +++ b/components/usps/index.html @@ -0,0 +1,492 @@ + + + + + + + + + USPS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ USPS +

+
+
+

The usps platform allows one to track deliveries and inbound mail from the US Postal Service (USPS). +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. You must also “Opt-In” to Informed Delivery to see inbound mail.

+

Prerequisites

+

This component requires that a headless-capable web browser is installed on your system - either PhantomJS or Google Chrome. Preferably use Chrome if your operating system supports it, since PhantomJS is deprecated.

+

+ If you are using a Raspberry Pi, you must use PhantomJS. +

+

PhantomJS

+

Install the latest version of PhantomJS. Ensure the executable is on your PATH. phantomjs --version should work and report the correct version. This is the default option and requires no further configuration.

+

+ Don’t use apt-get to install PhantomJS. This version is not compatible. +

+

Chrome

+

Install Chrome 59 or greater (preferably the most recent). Install the latest Chromedriver. Ensure both executables are on your PATH. google-chrome --version and chromedriver --version should work and report the correct version.

+

OS-specific instructions:

+ +

If you use the Chrome option, specify driver: chrome in your usps configuration.

+

Configuration

+

To enable this component, add the following lines to your configuration.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/components/vacuum.dyson/index.html b/components/vacuum.dyson/index.html new file mode 100644 index 0000000000..20b7c02095 --- /dev/null +++ b/components/vacuum.dyson/index.html @@ -0,0 +1,203 @@ + + + + + + + + + Dyson 360 Eye - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/components/vacuum.mqtt/index.html b/components/vacuum.mqtt/index.html new file mode 100644 index 0000000000..cb74789663 --- /dev/null +++ b/components/vacuum.mqtt/index.html @@ -0,0 +1,423 @@ + + + + + + + + + MQTT Vacuum - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ MQTT Vacuum +

+
+
+

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:

+
# 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: ""
+    charging_topic: "vacuum/state"
+    charging_template: ""
+    cleaning_topic: "vacuum/state"
+    cleaning_template: ""
+    docked_topic: "vacuum/state"
+    docked_template: ""
+    fan_speed_topic: "vacuum/state"
+    fan_speed_template: ""
+    set_fan_speed_topic: "vacuum/set_fan_speed"
+    fan_speed_list:
+      - min
+      - medium
+      - high
+      - max
+    send_command_topic: 'vacuum/send_command'
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name of the vacuum.

+

Default value: MQTT Vacuum

+
+
supported_features
+
+

(string list)(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).

+

Default value: turn_on, turn_off, stop, return_home, status, battery, clean_spot

+
+
command_topic
+
+

(string)(Optional)The MQTT topic to publish commands to control the vacuum.

+
+
qos
+
+

(integer)(Optional)The maximum QoS level of the state topic.

+

Default value: 0

+
+
retain
+
+

(boolean)(Optional)If the published message should have the retain flag on or not.

+

Default value: false

+
+
payload_turn_on
+
+

(string)(Optional)The payload to send to the command_topic to begin the cleaning cycle.

+

Default value: turn_on

+
+
payload_turn_off
+
+

(string)(Optional)The payload to send to the command_topic to turn the vacuum off.

+

Default value: turn_off

+
+
payload_return_to_base
+
+

(string)(Optional)The payload to send to the command_topic to tell the vacuum to return to base.

+

Default value: return_to_base

+
+
payload_stop
+
+

(string)(Optional)The payload to send to the command_topic to stop the vacuum.

+

Default value: stop

+
+
payload_clean_spot
+
+

(string)(Optional)The payload to send to the command_topic to begin a spot cleaning cycle.

+

Default value: clean_spot

+
+
payload_locate
+
+

(string)(Optional)The payload to send to the command_topic to locate the vacuum (typically plays a song).

+

Default value: locate

+
+
payload_start_pause
+
+

(string)(Optional)The payload to send to the command_topic to start or pause the vacuum.

+

Default value: start_pause

+
+
battery_level_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive battery level values from the vacuum.

+
+
battery_level_template
+
+

(string)(Optional)Defines a template to define the battery level of the vacuum.

+
+
charging_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive charging state values from the vacuum.

+
+
charging_template
+
+

(string)(Optional)Defines a template to define the charging state of the vacuum.

+
+
cleaning_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive cleaning state values from the vacuum.

+
+
cleaning_template
+
+

(string)(Optional)Defines a template to define the cleaning state of the vacuum.

+
+
docked_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive docked state values from the vacuum.

+
+
docked_template
+
+

(string)(Optional)Defines a template to define the docked state of the vacuum.

+
+
fan_speed_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive fan speed values from the vacuum.

+
+
fan_speed_template
+
+

(string)(Optional)Defines a template to define the fan speed of the vacuum.

+
+
set_fan_speed_topic
+
+

(string)(Optional)The MQTT topic to publish commands to control the vacuum’s fan speed.

+
+
fan_speed_list
+
+

(string list)(Optional)List of possible fan speeds for the vacuum.

+
+
send_command_topic
+
+

(string)(Optional)The MQTT topic to publish custom commands to the vacuum.

+
+
availability_topic
+
+

(string)(Optional)The MQTT topic subscribed to receive availability (online/offline) updates.

+
+
payload_available
+
+

(string)(Optional)The payload that represents the available state.

+

Default value: online

+
+
payload_not_available
+
+

(string)(Optional)The payload that represents the unavailable state.

+

Default value: offline

+
+
+
+

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:

+
{
+    "battery_level": 61,
+    "docked": true,
+    "cleaning": false,
+    "charging": true,
+    "fan_speed": "off"
+}
+
+
+

Retrofitting a non-wifi Roomba with an ESP8266

+
    +
  • This repo has MQTT client firmware for retrofitting your old Roomba.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/vacuum.neato/index.html b/components/vacuum.neato/index.html new file mode 100644 index 0000000000..408000d9b1 --- /dev/null +++ b/components/vacuum.neato/index.html @@ -0,0 +1,192 @@ + + + + + + + + + Neato Robotics Vacuum - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Neato Robotics Vacuum +

+
+
+

+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. +The status will contain attributes on the robots last clean session.

+

To add neato sensors to your installation, follow instructions in Neato component.

+
+
+ +
+
+ + + + + + + diff --git a/components/vacuum.roomba/index.html b/components/vacuum.roomba/index.html new file mode 100644 index 0000000000..a8408eac38 --- /dev/null +++ b/components/vacuum.roomba/index.html @@ -0,0 +1,196 @@ + + + + + + + + + iRobot Roomba - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ iRobot Roomba +

+
+
+

The roomba component allows you to control your iRobot Roomba 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:

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

+

Retrieving your credentials

+

Please refer to here or here to retrieve both the BLID (username) and the password.

+
+
+ +
+
+ + + + + + + diff --git a/components/vacuum.xiaomi_miio/index.html b/components/vacuum.xiaomi_miio/index.html new file mode 100644 index 0000000000..3d431755e6 --- /dev/null +++ b/components/vacuum.xiaomi_miio/index.html @@ -0,0 +1,501 @@ + + + + + + + + + Xiaomi Mi Robot Vacuum - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Mi Robot Vacuum +

+
+
+

The xiaomi miio vacuum platform allows you to control the state of your Xiaomi Mi Robot Vacuum.

+

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 to retrieve the API token used in +configuration.yaml.

+

Configuring the Platform

+

To add a vacuum to your installation, add the following to configuration.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.
  • +
+

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

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 attributeOptionalDescription
entity_idyesOnly act on specific robot; default targets all
+

Service vacuum.xiaomi_remote_control_stop

+

Exit the remote control mode of the robot.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific robot; default targets all
+

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 attributeOptionalDescription
entity_idyesOnly act on specific robot; default targets all
velocitynoSpeed: between -0.29 and 0.29
rotationnoRotation: between -179 degrees and 179 degrees
durationnoThe number of seconds that the robot should move for
+

Service vacuum.xiaomi_remote_control_move_step

+

Enter remote control mode, make one move, stop, and exit remote control mode.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific robot; default targets all
velocitynoSpeed: between -0.29 and 0.29.
rotationnoRotation: between -179 degrees and 179 degrees.
durationnoThe number of seconds that the robot should move for
+

Attributes

+

In addition to all of the attributes provided by the vacuum component, +(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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeUnit of measurementDescription
do_not_disturb DND mode on / off
cleaning_timeminutesLast / actual cleaning time in minutes
cleaned_areasquare meterLast / actual cleaned area in square meters
main_brush_lefthoursHours left until a change of the main brush is needed
side_brush_lefthoursHours left until a change of the side brush is needed
filter_lefthoursHours left until a change of the filter is needed
cleaning_count Number of total cleaning cycles
total_cleaned_areasquare meterTotal cleaned area in square meters
total_cleaning_timeminutesTotal cleaning time in minutes
+

Retrieving the Access Token

+

+As per python-miio issue 185 the Mi-Home app no longer stores the token within the database (it’s retrieved from Xiaomi servers from version 5.0.31+). Currently the only known fix is to uninstall, then install a downgraded version of the apk. Apkmirror is a trusted source for older versions of the app. Mi-Home version 5.0.0 is confirmed as working for the following Android methods. +This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a key (16 alphanumeric chars), which can be obtained +easily via a hidden menu item at the Mi-Home app or using the miio command line tool. +

+

Miio command line tool

+

You can install the command line tool with:

+
$ npm install -g miio
+
+
+

Discovering devices on current network

+
$ miio discover
+
+
+

This will list devices that are connected to the same network as your computer. Let it run for a while so it has a chance to reach all devices, as it might take a minute or two for all devices to answer.

+

The commands outputs each device on this format:

+
Device ID: 48765421
+Model info: zhimi.airpurifier.m1
+Address: 192.168.100.9
+Token: token-as-hex-here via auto-token
+Support: At least basic
+
+
+

The information output is:

+
    +
  • Device ID - the unique identifier of the device, does not change if the device is reset.
  • +
  • Model ID - the model id if it could be determined, this indicates what type of device it is
  • +
  • Address - the IP that the device has on the network
  • +
  • Token - the token of the device or ??? if it could not be automatically determined
  • +
+

Windows and Android

+

To fetch the token follow these instructions depending on your mobile phone platform.

+
    +
  1. Configure the robot with the Mi-Home app.
  2. +
  3. Download and extract the MiToolKit.zip.
  4. +
  5. Enable developer mode and USB debugging on the Android phone and plug it into the computer.
  6. +
  7. Change the MiToolKit language to English if you need to.
  8. +
  9. Click “Extract Token”
  10. +
  11. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup.
  12. +
  13. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly.
  14. +
+

Linux and Android (not rooted)

+

Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone.

+

Before you begin you need to install libffi-dev and libssl-dev by running the command below. This is needed for python-miio to be installed correctly.

+
$ sudo apt-get install libffi-dev libssl-dev
+
+
+

If your Home Assistant installation is running in a Virtualenv, make sure you activate it by running the commands below.

+
$ 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. +
  3. Enable developer mode, USB debugging and plug the Android phone into the computer.
  4. +
  5. Get ADB e.g. apt-get install android-tools-adb or apt-get install adb
  6. +
  7. adb devices should list your device. Consult ADB manual if necessary.
  8. +
  9. Issue a backup command via adb: adb backup -noapk com.xiaomi.smarthome -f backup.ab (set a password if prompted on your phone). Some devices may required single quotes in the command adb backup '-noapk com.xiaomi.smarthome -f backup.ab'
  10. +
  11. Download the ‘ADB Backup Extractor’ from here
  12. +
  13. Extract the data from the backup: java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar (enter the password, if prompted)
  14. +
  15. Untar the unpacked data: tar -xvf unpacked.tar
  16. +
  17. sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name = "Mi Robot Vacuum";' returns the token for your Xiaomi vacuum bot.
  18. +
+

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-miio to be installed correctly.

+
$ sudo apt-get install libffi-dev libssl-dev
+
+
+

If your Home Assistant installation is running in a Virtualenv, make sure you activate it by running the commands below.

+
$ 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. +
  3. Enable developer mode, USB debugging and root permission only for ADB on the Android phone and plug it into the computer.
  4. +
  5. Get ADB f.e. apt-get install android-tools-adb
  6. +
  7. adb devices should list your device
  8. +
  9. adb root (does work for development builds only: ones with ro.debuggable=1)
  10. +
  11. adb shell (for those using Magisk based root the previous command won’t work. After entering a shell, type su to enter the root shell)
  12. +
  13. 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.
  14. +
+

iOS

+
    +
  1. Configure the robot with the Mi-Home app.
  2. +
  3. Using iTunes, create an unencrypted backup of your iPhone.
  4. +
  5. Install iBackup Viewer, open it, and open your backup.
  6. +
  7. Open the “Raw Data” module.
  8. +
  9. Navigate to com.xiaomi.mihome.
  10. +
  11. Search for a file that looks like this: 123456789_mihome.sqlite – note that _mihome.sqlite is not the correct file.
  12. +
  13. Save this file to your filesystem.
  14. +
  15. Install DB Browser for SQLite.
  16. +
  17. Open DB Browser and load the .sqlite file you saved from your backup.
  18. +
  19. Click on the Execute SQL tab.
  20. +
  21. Input and run this query: SELECT ZTOKEN FROM ZDEVICE WHERE ZNAME = "Mi Robot Vacuum"
  22. +
  23. Copy the returned 32-digit hexadecimal string to your clipboard.
  24. +
  25. Open Terminal and execute this command: echo '0: <YOUR HEXADECIMAL STRING>' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000
  26. +
  27. Use the resulting string as your token.
  28. +
+
+
+ +
+
+ + + + + + + diff --git a/components/vacuum/index.html b/components/vacuum/index.html new file mode 100644 index 0000000000..318b7c57da --- /dev/null +++ b/components/vacuum/index.html @@ -0,0 +1,344 @@ + + + + + + + + + Vacuum cleaner robots - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vacuum cleaner robots +

+
+
+

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.

+
# Example configuration.yaml entry
+vacuum:
+  - platform: xiaomi_miio
+    name: Living room
+    host: 192.168.1.2
+
+
+

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.

+

Service vacuum/turn_on

+

Start a new cleaning task.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

Service vacuum/turn_off

+

Stop the current cleaning task and return to the dock.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

Service vacuum/start_pause

+

Start, pause or resume a cleaning task.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

Service vacuum/stop

+

Stop the current activity of the botvac.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

Service vacuum/return_to_home

+

Tell the botvac to return home.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

Service vacuum/locate

+

Locate the vacuum cleaner robot.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

Service vacuum/clean_spot

+

Tell the vacuum cleaner to do a spot clean-up.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
+

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 attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
fanspeednoPlatform dependent vacuum cleaner fan speed, with speed steps, like ‘medium’, or by percentage, between 0 and 100.
+

Service vacuum/send_command

+

Send a platform-specific command to the vacuum cleaner.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idyesOnly act on specific botvac. Else targets all.
commandnoCommand to execute.
paramsyesParameters for the command.
+
+
+ +
+
+ + + + + + + diff --git a/components/velbus/index.html b/components/velbus/index.html new file mode 100644 index 0000000000..0ca8c035f8 --- /dev/null +++ b/components/velbus/index.html @@ -0,0 +1,468 @@ + + + + + + + + + Velbus - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velbus +

+
+
+

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:

+
# Example configuration.yaml entry
+
+velbus:
+  port: '/dev/ttyUSB00'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/velux/index.html b/components/velux/index.html new file mode 100644 index 0000000000..983028339b --- /dev/null +++ b/components/velux/index.html @@ -0,0 +1,464 @@ + + + + + + + + + Velux - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Velux +

+
+
+

Velux integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control io-homecontrol 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:

+
# 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/components/vera/index.html b/components/vera/index.html new file mode 100644 index 0000000000..c2abf76f18 --- /dev/null +++ b/components/vera/index.html @@ -0,0 +1,497 @@ + + + + + + + + + Vera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vera +

+
+
+

The Vera hub is a controller mainly connecting to Z-Wave devices.

+

Switches, Lights (inc Dimmers), Locks, Sensors, Binary sensors, and Scenes are supported - and will be automatically added when HA connects to your Vera controller.

+

To use Vera devices in your installation, add the following to your configuration.yaml file using the IP and port number of your Vera controller:

+
vera:
+  vera_controller_url: http://192.168.1.161:3480/
+
+
+

Configuration variables:

+
    +
  • vera_controller_url (Required): The URL for your Vera device.
  • +
+

+ It is recommended to assign a static IP address to your Vera Controller. This ensures that it won’t change IP addresses, so you won’t have to change the vera_controller_url if it reboots and comes up with a different IP address. See your router’s manual for details on how to set this up. If you need the MAC address of your Vera, check the label on the bottom. +

+

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.

+

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

+
vera:
+  vera_controller_url: http://192.168.1.161:3480/
+  # Optional to exclude devices - this is a list of vera device ids
+  exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99]
+  # Optional to import switches as lights - this is a list of vera device ids
+  lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87]
+
+
+

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, and you’ll find the entity id on the left.

+
+
+ +
+
+ + + + + + + diff --git a/components/verisure/index.html b/components/verisure/index.html new file mode 100644 index 0000000000..e31bfaa0f3 --- /dev/null +++ b/components/verisure/index.html @@ -0,0 +1,497 @@ + + + + + + + + + Verisure - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Verisure +

+
+
+

Home Assistant has support to integrate your Verisure devices.

+

We support:

+ +

To integrate Verisure with Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+verisure:
+  username: USERNAME
+  password: PASSWORD
+
+
+

Configuration variables:

+
    +
  • username (Required): The username to Verisure mypages.
  • +
  • password (Required): The password to Verisure mypages.
  • +
  • alarm (Optional): Set to 1 to show alarm, 0 to disable. Default 1.
  • +
  • hygrometers (Optional): Set to 1 to show hygrometers, 0 to disable. Default 1.
  • +
  • smartplugs (Optional): Set to 1 to show smartplugs, 0 to disable. Default 1.
  • +
  • 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.
  • +
  • giid (Optional): The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run ‘python verisure.py EMAIL PASSWORD installations’
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/volvooncall/index.html b/components/volvooncall/index.html new file mode 100644 index 0000000000..38aca3b045 --- /dev/null +++ b/components/volvooncall/index.html @@ -0,0 +1,500 @@ + + + + + + + + + Volvo On Call - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Volvo On Call +

+
+
+

The volvooncall platform offers integration with the 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:

+
# Example configuration.yaml entry
+volvooncall:
+  username: username
+  password: password
+
+
+

Users registered with Volvo in North America or China will need to specify a region:

+
# North America 
+volvooncall:
+  username: username
+  password: password
+  region: na
+
+
+
# China
+volvooncall:
+  username: username
+  password: password
+  region: cn
+
+
+

A more advanced example for setting the vehicle name and selecting what resources to display:

+
# Example configuration.yaml entry
+volvooncall:
+  username: username
+  password: password
+  name:
+    abc123: 'Batmobile'
+  resources:
+    - doors
+    - lock
+    - heater
+
+
+

Configuration variables:

+
    +
  • username (Required): The username associated with your Volvo On Call account.
  • +
  • password (Required): The password for your given Volvo On Call account.
  • +
  • region (Optional): The region where the Volvo is registered. Needs to be set for users in North America or China.
  • +
  • service_url (Optional): The service URL to use for Volvo On Call. Normally not necessary to specify.
  • +
  • name (Optional): Make it possible to provide a name for the vehicles.
  • +
  • resources (Optional): A list of resources to display (defaults to all available).
  • +
  • scandinavian_miles (Optional): If set to yes, Scandinavian miles (“mil”) are used for distances and fuel range (defaults to no).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/vultr/index.html b/components/vultr/index.html new file mode 100644 index 0000000000..30b8260378 --- /dev/null +++ b/components/vultr/index.html @@ -0,0 +1,477 @@ + + + + + + + + + Vultr - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Vultr +

+
+
+

The vultr component allows you to access information about and interact with your Vultr subscriptions (Virtual Private Servers) from Home Assistant.

+

Obtain your API key from your Vultr Account.

+

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

+
# Example configuration.yaml entry
+vultr:
+  api_key: ABCDEFG12345
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)Your Vultr API key.

+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/wake_on_lan/index.html b/components/wake_on_lan/index.html new file mode 100644 index 0000000000..7aca70ce3f --- /dev/null +++ b/components/wake_on_lan/index.html @@ -0,0 +1,209 @@ + + + + + + + + + Wake on LAN - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wake on LAN +

+
+
+

The wake_on_lan component enables the ability to send magic packets to Wake on LAN capable devices, to turn them on.

+

To use this component in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+wake_on_lan:
+
+
+

Component services

+

Available services: send_magic_packet.

+

Service wake_on_lan/send_magic_packet

+

Send a magic packet to wake up a device with ‘Wake-On-LAN’ capabilities.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
macnoMAC address of the device to wake up.
broadcast_addressyesOptional broadcast IP where to send the magic packet.
+
+
+ +
+
+ + + + + + + diff --git a/components/waterfurnace/index.html b/components/waterfurnace/index.html new file mode 100644 index 0000000000..34a2c35d92 --- /dev/null +++ b/components/waterfurnace/index.html @@ -0,0 +1,493 @@ + + + + + + + + + WaterFurnace - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ WaterFurnace +

+
+
+

The waterfurnace component communicates with the WaterFurnace +Symphony website’s WebSocket to show you many of the sensors in your +system. While not an official API, this is the same backend the +Symphony website is based on, and should be reasonably stable.

+

The sensors provided include:

+
    +
  • Thermostat Setpoint
  • +
  • Thermostat Current Temp
  • +
  • Leaving Air Temp
  • +
  • Entering Water Loop Temp
  • +
  • Current Humidity
  • +
  • Current Humidity Setpoint
  • +
  • Total system power (in Watts)
  • +
  • Furnace Mode
  • +
+

To use Waterfurnace in your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+waterfurnace:
+  username: you@example.com
+  password: secr3tpassword
+  unit: 0123456789AB
+
+
+
+

Configuration Variables

+
+
username
+
+

(string)(Required)The email address for your Symphony WaterFurnace account

+
+
password
+
+

(string)(Required)The password for your Symphony WaterFurnace account

+
+
unit
+
+

(string)(Required)The unit serial number for your WaterFurnace

+
+
+
+

Limitations

+

The WebSocket interface used by this module requires active polling, +otherwise the server side shuts down the connection. By default, this +polling is happening every 10 seconds. All sensors are updated during +every polling cycle.

+

While this is communicating with a thermostat, geothermal systems +operate most efficiently when setbacks are not used, and the home is +kept at a constant temperature. It remains useful to collect the data +from the system to understand its performance, but a full climate +interface won’t be implemented.

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.bom/index.html b/components/weather.bom/index.html new file mode 100644 index 0000000000..cee098371f --- /dev/null +++ b/components/weather.bom/index.html @@ -0,0 +1,264 @@ + + + + + + + + + BOM Australia - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ BOM Australia +

+
+
+

The bom weather platform uses the Australian Bureau of Meteorology (BOM) as a source for current (half-hourly) meteorological data.

+

To add the BOM weather platform to your installation, add the following to your configuration.yaml file:

+
weather:
+  - platform: bom
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Optional)The name you would like to give to the weather station.

+
+
station
+
+

(string)(Optional)The station ID string. See the sensor.bom docs for details on how to find the ID of a station.

+

Default value: The closest station

+
+
+
+

+This platform is an alternative to the bom sensor. +The weather platform is easier to configure but less customizable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.buienradar/index.html b/components/weather.buienradar/index.html new file mode 100644 index 0000000000..c0999446a9 --- /dev/null +++ b/components/weather.buienradar/index.html @@ -0,0 +1,274 @@ + + + + + + + + + Buienradar - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Buienradar +

+
+
+

The buienradar platform uses 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.

+

To add the Buienradar weather to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+weather:
+  - platform: buienradar
+
+
+

Configuration variables:

+
    +
  • 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:

+
# Example configuration.yaml entry
+weather:
+  - platform: buienradar
+    name: 'volkel'
+    # Force 'Meetstation Volkel' to be used:
+    latitude: 51.65
+    longitude: 5.70
+    forecast: True
+
+
+

+This platform is an alternative to the buienradar sensor. +The weather platform is easier to configure but less customizable. +

+

Usage statement:

+
+

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/components/weather.darksky/index.html b/components/weather.darksky/index.html new file mode 100644 index 0000000000..40bb548161 --- /dev/null +++ b/components/weather.darksky/index.html @@ -0,0 +1,291 @@ + + + + + + + + + Dark Sky - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dark Sky +

+
+
+

The darksky platform uses the Dark Sky web service as +a source for meteorological data for your location.

+

You need an API key which is free but requires +registration. The free tier allows up to +1000 calls per day, this platform updates at most every 3 minutes, using up to +480 of those calls.

+

+Dark Sky will charge you $0.0001 per API call if you +enter your credit card details and create more than 1000 calls per day. +

+

To add Dark Sky to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+weather:
+  - platform: darksky
+    api_key: YOUR_API_KEY
+
+
+
+

Configuration Variables

+
+
api_key
+
+

(string)(Required)Your API key for Dark Sky.

+
+
latitude
+
+

(number)(Optional)Manually specify latitude. By default the value will be taken from the Home Assistant configuration.

+

Default value: Provided by Home Assistant configuration

+
+
longitude
+
+

(number)(Optional)Manually specify longitude. By default the value will be taken from the Home Assistant configuration.

+

Default value: Provided by Home Assistant configuration

+
+
units
+
+

(string)(Optional)Manually specify unit system. Valid values are: auto, us, si, ca, uk and uk2.

+

Default value: si if Home Assistant unit system is metric, us if imperial.

+
+
name
+
+

(string)(Optional)Name to use in the frontend.

+

Default value: Open Sky

+
+
+
+

+This platform is an alternative to the darksky +sensor. +

+

Details about the API are available in the Dark Sky documentation.

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.ecobee/index.html b/components/weather.ecobee/index.html new file mode 100644 index 0000000000..7992208821 --- /dev/null +++ b/components/weather.ecobee/index.html @@ -0,0 +1,253 @@ + + + + + + + + + Ecobee Weather - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Ecobee Weather +

+
+
+

To get your Ecobee weather component working with Home Assistant, follow the instructions for the general Ecobee component.

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.metoffice/index.html b/components/weather.metoffice/index.html new file mode 100644 index 0000000000..400a8fba47 --- /dev/null +++ b/components/weather.metoffice/index.html @@ -0,0 +1,255 @@ + + + + + + + + + Met Office - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Met Office +

+
+
+

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:

+
weather:
+  - platform: metoffice
+    api_key: YOUR_API_KEY
+
+
+

Configuration variables:

+ +

+This platform is an alternative to the metoffice sensor. +The weather platform is easier to configure but less customizable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.openweathermap/index.html b/components/weather.openweathermap/index.html new file mode 100644 index 0000000000..269c28dd92 --- /dev/null +++ b/components/weather.openweathermap/index.html @@ -0,0 +1,259 @@ + + + + + + + + + OpenWeatherMap - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OpenWeatherMap +

+
+
+

The openweathermap weather platform uses OpenWeatherMap as a source for current meteorological data for your location.

+

You need an API key which is free but requires a registration.

+

To add OpenWeatherMap to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+weather:
+  - platform: openweathermap
+    api_key: YOUR_API_KEY
+
+
+

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 configuration.yaml file.
  • +
  • longitude (Optional): Longitude of the location to display the weather. Defaults to the longitude in your configuration.yaml file.
  • +
+

+This platform is an alternative to the openweathermap sensor. +

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.yweather/index.html b/components/weather.yweather/index.html new file mode 100644 index 0000000000..aa199ccaf5 --- /dev/null +++ b/components/weather.yweather/index.html @@ -0,0 +1,257 @@ + + + + + + + + + Yahoo Weather - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Yahoo Weather +

+
+
+

The yweather platform uses Yahoo 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. 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:

+
# Example configuration.yaml entry
+weather:
+  - platform: yweather
+
+
+

Configuration variables:

+
    +
  • woeid (Optional): See above.
  • +
  • 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.
  • +
+

+This platform is an alternative to the yweather sensor. +

+

Details about the API are available in the Yahoo! Developer Network.

+
+
+ +
+
+ + + + + + + diff --git a/components/weather.zamg/index.html b/components/weather.zamg/index.html new file mode 100644 index 0000000000..fe8603fab9 --- /dev/null +++ b/components/weather.zamg/index.html @@ -0,0 +1,258 @@ + + + + + + + + + ZAMG Weather - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZAMG Weather +

+
+
+

The zamg platform uses meteorological details published by the Austrian weather service Zentralanstalt für Meteorologie und Geodynamik (ZAMG).

+

Only observations for capital cities are publicly available. You can check the list of stations in CSV format.

+

To add ZAMG to your installation, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+weather:
+  - platform: zamg
+
+
+

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 sensor. The weather platform is easier to configure but less customizable. +

+
+
+ +
+
+ + + + + + + diff --git a/components/weather/index.html b/components/weather/index.html new file mode 100644 index 0000000000..d979645d92 --- /dev/null +++ b/components/weather/index.html @@ -0,0 +1,166 @@ + + + + + + + + + Weather - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Weather +

+
+
+

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 require a registration. Please check the sidebar for a full list of supported weather platforms.

+
+
+ +
+
+ + + + + + + diff --git a/components/weblink/index.html b/components/weblink/index.html new file mode 100644 index 0000000000..6b8e336147 --- /dev/null +++ b/components/weblink/index.html @@ -0,0 +1,193 @@ + + + + + + + + + Weblink - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Weblink +

+
+
+

The weblink component allows you to display links in the Home Assistant frontend.

+

To use this component in your installation, add something like the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+weblink:
+  entities:
+    - name: Router
+      url: http://192.168.1.1/
+      icon: mdi:router-wireless
+    - name: Home Assistant
+      url: https://home-assistant.io
+    - name: Grafana
+      url: /grafana
+
+
+
+

Configuration Variables

+
+
name
+
+

(string)(Required)Text for the link.

+
+
url
+
+

(string)(Required)The URL (absolute URL or absolute path) for the link.

+
+
icon
+
+

(string)(Optional)Icon for entry.

+
+
+
+

Pick an icon that you can find on 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/components/websocket_api/index.html b/components/websocket_api/index.html new file mode 100644 index 0000000000..67996563a0 --- /dev/null +++ b/components/websocket_api/index.html @@ -0,0 +1,221 @@ + + + + + + + + + Websocket API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Websocket API +

+
+
+

The websocket_api component set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This component depends on the http component.

+

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

+
# Example configuration.yaml entry
+websocket_api:
+
+
+

For details to use the WebSocket API, please refer to the WebSocket API documentation .

+
+
+ +
+
+ + + + + + + diff --git a/components/wemo/index.html b/components/wemo/index.html new file mode 100644 index 0000000000..8cd2baee72 --- /dev/null +++ b/components/wemo/index.html @@ -0,0 +1,467 @@ + + + + + + + + + Belkin WeMo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Belkin WeMo +

+
+
+

The wemo component is the main component to integrate various Belkin WeMo devices with Home Assistant.

+

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

+
# 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, 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:

+
wemo:
+  static:
+    - 192.168.1.23
+    - 192.168.52.172
+
+
+

Any WeMo devices that are not statically configured but reachable via discovery will still be added automatically.

+

Note that if you use this, you may want to set up your router (or whatever runs your DHCP server) to force your WeMo devices to use a static IP address. Check the DHCP section of your router configuration for this ability.

+

If the device doesn’t seem to work and all you see is the state “unavailable” on your dashboard, check that your firewall doesn’t block incoming request on port 8989 since this is the address to which the WeMo devices send their update.

+
+
+ +
+
+ + + + + + + diff --git a/components/wink/index.html b/components/wink/index.html new file mode 100644 index 0000000000..d710f11531 --- /dev/null +++ b/components/wink/index.html @@ -0,0 +1,856 @@ + + + + + + + + + Wink - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Wink +

+
+
+

Wink is a home automation hub that can control a whole wide range of devices on the market. Or, as they say in their own words:

+
+

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 automatically sets up any switches, lights, locks, fans, climate devices (thermostats, air conditioners, and water heaters), covers, sensors, alarms, and sirens.

+

Check the related components pages for actual devices that are supported.

+

Authenticate using developer.wink.com

+

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.

+
    +
  1. Name: This can be anything, for example “Home Assistant”
  2. +
  3. Website: The external address of your Home Assistant instance. If not externally accessible you can use your email address.
  4. +
  5. 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.
  6. +
+

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

+
wink:
+
+
+

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

+
wink:
+  email: YOUR_WINK_EMAIL_ADDRESS
+  password: YOUR_WINK_PASSWORD
+  client_id: YOUR_WINK_CLIENT_ID
+  client_secret: YOUR_WINK_CLIENT_SECRET
+
+
+

Configuration variables:

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

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

+

Service refresh_state_from_wink

+

The Wink component only obtains the device states from the Wink API once, during startup. All updates after that are pushed via a third party called PubNub. On rare occasions where an update isn’t pushed device states can be out of sync.

+

You can use the service wink/refresh_state_from_wink to pull the most recent state from the Wink API for all devices. If local_control is set to True states will be pulled from the devices controlling hub, not the online API.

+

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.

+

Service delete_wink_device

+

You can use the service wink/delete_wink_device to remove/unpair a device from Wink.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString that points at the entity_id of device to delete.
+

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 attributeOptionalDescription
hub_namenoThe name of the hub to pair a new device to.
pairing_modenoOne of the following [zigbee, zwave, zwave_exclusion, zwave_network_rediscovery, lutron, bluetooth, kidde]
kidde_radio_codeconditionalA string of 8 1s and 0s one for each dip switch on the kidde device left –> right = 1 –> 8 (Required if pairing_mode = kidde)
+

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

+

Service rename_wink_device

+

You can use the service wink/rename_wink_device to change the name of a device.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
entity_idnoString that points at the entity_id of device to rename.
namenoThe 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
  • +
+

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 attributeOptionalDescription
auto_shutoffnoInt. One of [None, -1, 30, 60, 120] (None and -1 are forever. Use None for gocontrol, and -1 for Dome)
entity_idyesString or list of strings that point at entity_ids of siren.
+

Example:

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

+

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 attributeOptionalDescription
volumenoString. One of [“low”, “medium”, “high”]
entity_idyesString or list of strings that point at entity_ids of siren/chime.
+

Example:

+
script:
+  set_chime_volume_to_low_for_all_chimes
+    sequence:
+      - service: wink.set_chime_volume
+        data:
+          volume: "low"
+
+
+

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 attributeOptionalDescription
volumenoString. One of [“low”, “medium”, “high”]
entity_idyesString or list of strings that point at entity_ids of siren/chime.
+

Example:

+
script:
+  set_siren_volume_to_low_for_all_sirens
+    sequence:
+      - service: wink.set_siren_volume
+        data:
+          volume: "low"
+
+
+

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 attributeOptionalDescription
tonenoString. One of [“doorbell”, “fur_elise”, “doorbell_extended”, “alert”, “william_tell”, “rondo_alla_turca”, “police_siren”, “evacuation”, “beep_beep”, “beep”, “inactive”]
entity_idyesString or list of strings that point at entity_ids of siren/chime.
+

Example:

+
script:
+  execute_doorbell
+    sequence:
+      - service: wink.enable_chime
+        data:
+          tone: "doorbell"
+
+
+

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 attributeOptionalDescription
tonenoString. One of [“doorbell”, “fur_elise”, “doorbell_extended”, “alert”, “william_tell”, “rondo_alla_turca”, “police_siren”, “evacuation”, “beep_beep”, “beep”]
entity_idyesString or list of strings that point at entity_ids of siren/chime.
+

Example:

+
script:
+  set_siren_to_alert:
+    sequence:
+      - service: wink.set_siren_tone
+        data:
+          tone: "alert"
+
+
+

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 attributeOptionalDescription
enablednoBoolean. True or False.
entity_idyesString or list of strings that point at entity_ids of siren/chime.
+

Example:

+
script:
+  disable_siren_strobe:
+    sequence:
+      - service: wink.set_siren_strobe_enabled
+        data:
+          enabled: False
+
+
+

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 attributeOptionalDescription
enablednoBoolean. True or False.
entity_idyesString or list of strings that point at entity_ids of chime/chime.
+

Example:

+
script:
+  disable_chime_strobe:
+    sequence:
+      - service: wink.set_chime_strobe_enabled
+        data:
+          enabled: False
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/xiaomi/index.html b/components/xiaomi/index.html new file mode 100644 index 0000000000..d32f228ee7 --- /dev/null +++ b/components/xiaomi/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/components/xiaomi_aqara/index.html b/components/xiaomi_aqara/index.html new file mode 100644 index 0000000000..5c4865e81b --- /dev/null +++ b/components/xiaomi_aqara/index.html @@ -0,0 +1,764 @@ + + + + + + + + + Xiaomi Gateway (Aqara) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Xiaomi Gateway (Aqara) +

+
+
+

The xiaomi_aqara component allows you to integrate Xiaomi Aqara-compatible devices into Home Assistant.

+

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

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

Setup

+

Follow the setup process using your phone and Mi-Home app. From here you will be able to retrieve the key (password) from within the app following this tutorial.

+

To enable Xiaomi Gateway (Aqara) in your installation, add the following to your configuration.yaml file:

+

One Gateway

+
# You can leave MAC empty if you only have one gateway.
+xiaomi_aqara:
+  discovery_retry: 5
+  gateways:
+    - key: xxxxxxxxxxxxxxxx
+
+
+

Multiple Gateways

+
# 12 characters MAC can be obtained from the gateway.
+xiaomi_aqara:
+  gateways:
+    - mac: xxxxxxxxxxxx
+      key: xxxxxxxxxxxxxxxx
+    - mac: xxxxxxxxxxxx
+      key: xxxxxxxxxxxxxxxx
+
+
+

Search for gateways on specific interface

+
# 12 characters MAC can be obtained from the gateway.
+xiaomi_aqara:
+  interface: '192.168.0.1'
+  gateways:
+    - mac: xxxxxxxxxxxx
+      key: xxxxxxxxxxxxxxxx
+
+
+
+

Configuration Variables

+
+
mac
+
+

(string)(Optional)The MAC address of your gateway. Optional if only using one gateway.

+
+
key
+
+

(string)(Optional)The key of your gateway. Optional if only using sensors and/or binary sensors.

+
+
discovery_retry
+
+

(int)(Optional)Number of times that Home Assistant should try to reconnect to the gateway.

+

Default value: 3

+
+
interface
+
+

(string)(Optional)Which network interface to use.

+

Default value: any

+
+
host
+
+

(string)(Optional)The host/IP address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped.

+
+
+
+

Services

+

The gateway provides the following services:

+

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 attributeOptionalDescription
gw_macnoMAC address of the Xiaomi Aqara Gateway
ringtone_idnoOne of the allowed ringtone ids
ringtone_volyesThe 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
  • +
+

Service xiaomi_aqara.stop_ringtone

+

Stops a playing ringtone immediately.

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
gw_macnoMAC address of the Xiaomi Aqara Gateway
+

Service xiaomi_aqara.add_device

+ + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
gw_macnoMAC address of the Xiaomi Aqara Gateway
+

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 attributeOptionalDescription
gw_macnoMAC address of the Xiaomi Aqara Gateway
+

Service xiaomi_aqara.remove_device

+

Removes a specific device. The removal is required if a device shall be paired with another gateway.

+ + + + + + + + + + + + + + + + + + + + +
Service data attributeOptionalDescription
gw_macnoMAC address of the Xiaomi Aqara Gateway
device_idnoHardware address of the device to remove
+

Examples

+

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.

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

Double Click on Smart Button

+

This example toggles the living room lamp on a double click of the button.

+
- alias: Double Click to toggle living room lamp
+  trigger:
+    platform: event
+    event_type: click
+    event_data:
+      entity_id: binary_sensor.switch_158d000xxxxxc2
+      click_type: double
+  action:
+    service: light.toggle
+    data:
+      entity_id: light.living_room_lamp
+
+
+

Troubleshooting

+

Initial setup problem

+

If you run into trouble initializing the gateway with your app, try another smartphone. E.g., it didn’t work on an OnePlus 3, but it worked with a Nexus 5.

+

Connection problem

+
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.
  • +
  • Turn off the firewall on the system where Home Assistant is running.
  • +
  • Ensure your router supports multicast as this is a requirement of the Xiaomi Gateway.
  • +
  • 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, make sure to use --net=host.
  • +
  • If you receive an {"error":"Invalid key"} in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternatively an emulator such as bluestacks. In some instances there is an issue with keys being generated using the iOS application.
  • +
  • If the required library “PyXiaomiGateway” cannot be installed you will need to install some missing system dependencies python3-dev, libssl-dev, libffi-dev manually (e.g., $ sudo apt-get install python3-dev libssl-dev libffi-dev).
  • +
+
+
+ +
+
+ + + + + + + diff --git a/components/zabbix/index.html b/components/zabbix/index.html new file mode 100644 index 0000000000..6845e257e7 --- /dev/null +++ b/components/zabbix/index.html @@ -0,0 +1,272 @@ + + + + + + + + + Zabbix - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zabbix +

+
+
+

The zabbix component is the main component to connect to a Zabbix monitoring instance via the Zabbix API.

+

To set the Zabbix component up, add the following information to your configuration.yaml file:

+
# Example configuration.yaml entry
+zabbix:
+  host: 192.168.0.100
+
+
+

Configuration variables:

+
    +
  • host (Required): Your Zabbix server.
  • +
  • path (Optional): Path to your Zabbix install. Defaults to /zabbix/.
  • +
  • ssl (Optional): Set to True if your Zabbix installation is using SSL. Default to False.
  • +
  • username (Optional): Your Zabbix username.
  • +
  • password (Optional): Your Zabbix password.
  • +
+

Full configuration

+
# Example configuration.yaml entry
+zabbix:
+  host: ZABBIX_HOST
+  path: ZABBIX_PATH
+  ssl: False
+  username: USERNAME
+  password: PASSWORD
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/zeroconf/index.html b/components/zeroconf/index.html new file mode 100644 index 0000000000..adf487507b --- /dev/null +++ b/components/zeroconf/index.html @@ -0,0 +1,240 @@ + + + + + + + + + Zeroconf/Avahi/Bonjour - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zeroconf/Avahi/Bonjour +

+
+
+

The zeroconf component exposes your Home Assistant to the local network using Zeroconf. 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:

+
# Example configuration.yaml entry
+zeroconf:
+
+
+

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.

+
$ avahi-browse -alr
++ eth0 IPv4 Home                              _home-assistant._tcp local
+= eth0 IPv4 Home                              _home-assistant._tcp local
+   hostname = [Home._home-assistant._tcp.local]
+   address = [192.168.0.70]
+   port = [8123]
+   txt = ["base_url=http://192.168.0.70:8123" "requires_api_password=true" "version=0.41.0"]
+
+
+
$ avahi-discover
+Browsing domain 'local' on -1.-1 ...
+Browsing for services of type '_home-assistant._tcp' in domain 'local' on 4.0 ...
+Found service 'Home' of type '_home-assistant._tcp' in domain 'local' on 4.0.
+Service data for service 'Home' of type '_home-assistant._tcp' in domain 'local' on 4.0:
+	Host Home._home-assistant._tcp.local (192.168.0.70), port 8123, TXT data: 
+['requires_api_password=true', 'base_url=http://192.168.0.70:8123', 'version=0.41.0']
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/zha/index.html b/components/zha/index.html new file mode 100644 index 0000000000..0fe0ab7326 --- /dev/null +++ b/components/zha/index.html @@ -0,0 +1,490 @@ + + + + + + + + + Zigbee Home Automation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zigbee Home Automation +

+
+
+

ZigBee Home Automation +integration for Home Assistant allows you to connect many off-the-shelf ZigBee devices to Home Assistant, using a compatible ZigBee radio.

+

There is currently support for the following device types within Home Assistant:

+ +

Known working ZigBee radios:

+
    +
  • Nortek/GoControl Z-Wave & Zigbee USB Adaptor - Model HUSBZB-1
  • +
  • XBee Series 2C
  • +
+

To configure the component, a zha section must be present in the configuration.yaml, +and the path to the serial device for the radio and path to the database which will persist your network data is required.

+
# Example configuration.yaml entry
+zha:
+  usb_path: /dev/ttyUSB2
+  database_path: zigbee.db
+
+
+

Configuration variables:

+
    +
  • radio_type (Optional): One of ezsp (default) or xbee
  • +
  • usb_path (Required): Path to the serial device for the radio.
  • +
  • baud_rate (Optional): Baud rate of the serial device.
  • +
  • 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 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/

+
+
+ +
+
+ + + + + + + diff --git a/components/zigbee/index.html b/components/zigbee/index.html new file mode 100644 index 0000000000..a994ea1f6d --- /dev/null +++ b/components/zigbee/index.html @@ -0,0 +1,243 @@ + + + + + + + + + ZigBee - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZigBee +

+
+
+

ZigBee integration for Home Assistant allows you to utilize modules such as the 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:

+
    +
  • Binary Sensor (digital input pins)
  • +
  • Sensor (analog input pins and temperature sensor)
  • +
  • Light (digital output pins)
  • +
  • Switch (digital output pins)
  • +
+

The local ZigBee device (assuming XBee) must have an up to date Router or Coordinator API firmware installed.

+

A zigbee section must be present in the configuration.yaml file and contain the following options as required:

+
# Example configuration.yaml entry
+zigbee:
+
+
+
    +
  • device (Optional): The serial port to which the local ZigBee device is connected. Defaults to /dev/ttyUSB0
  • +
  • baud (Optional): The baud rate at which to communicate with the local ZigBee device. Defaults to 9600
  • +
+

To find the possible serial port names of your device, run:

+
$ ls /dev/ttyUSB*
+
+
+

+The port may also appear as /dev/ttyACM* if you’re communicating with the ZigBee device through an Arduino. +

+

Example

+
# Example configuration.yaml entry
+zigbee:
+  device: /dev/ttyACM1
+  baud: 115200
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/zone/index.html b/components/zone/index.html new file mode 100644 index 0000000000..3f0f6a2298 --- /dev/null +++ b/components/zone/index.html @@ -0,0 +1,193 @@ + + + + + + + + + Zone - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Zone +

+
+
+

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 or condition inside automation setups.

+

The Zone component uses YAML sequences to configure multiple zones:

+
# Example configuration.yaml entry
+zone:
+  - name: School
+    latitude: 32.8773367
+    longitude: -117.2494053
+    radius: 250
+    icon: mdi:school
+
+  - name: Work
+    latitude: 32.8753367
+    longitude: -117.2474053
+
+  # 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 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 the latitude/longitude of a certain place you can use Google Maps or Bing Maps. Just right click and copy the coordinates from there (Bing) or click on the “What is here?” (Google)

+

Home zone

+

If no configuration is given, the zone component will create a zone for home. This zone will use location provided in the configuration.yaml file and have a radius of 100 meters. To override this, create a zone configuration and name it ‘Home’.

+

+Devices that are in the zone ‘Home’ will not appear on the map in the Home Assistant UI. +

+

Icons

+

It is preferred to pick an icon to use for your zone. Pick any icon that you can find on materialdesignicons.com and prefix the name with mdi:. For example mdi:school, mdi:worker, mdi:home, mdi:cart, or mdi:castle.

+

State

+

zoning is the state a zone has when it is configured. A zone doesn’t have another state; all configured zones are zoning all the time.

+
+
+ +
+
+ + + + + + + diff --git a/components/zoneminder/index.html b/components/zoneminder/index.html new file mode 100644 index 0000000000..084ae91769 --- /dev/null +++ b/components/zoneminder/index.html @@ -0,0 +1,483 @@ + + + + + + + + + ZoneMinder - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ ZoneMinder +

+
+
+

The ZoneMinder component sets up the integration with your ZoneMinder instance so that cameras, sensors, and switches can use it.

+
# Example configuration.yaml entry
+zoneminder:
+  host: ZM_HOST
+
+
+

Configuration variables:

+
    +
  • host (Required): Your ZoneMinder server’s host (and optional port), not including the scheme.
  • +
  • path (Optional): Path to your ZoneMinder install. Defaults to /zm/.
  • +
  • path_zms (Optional): Path to the CGI script for streaming. This should match PATH_ZMS in ZM’s “Paths” settings. Defaults to /zm/cgi-bin/nph-zms.
  • +
  • ssl (Optional): Set to True if your ZoneMinder installation is using SSL. Default to False.
  • +
  • username (Optional): Your ZoneMinder username.
  • +
  • password (Optional): Your ZoneMinder password. Required if OPT_USE_AUTH is enabled in ZM.
  • +
+

Full configuration

+
# Example configuration.yaml entry
+zoneminder:
+  host: ZM_HOST
+  path: ZM_PATH
+  path_zms: ZM_PATH_ZMS
+  ssl: False
+  username: USERNAME
+  password: PASSWORD
+
+
+
+
+ +
+
+ + + + + + + diff --git a/components/zwave/index.html b/components/zwave/index.html new file mode 100644 index 0000000000..9a715248bf --- /dev/null +++ b/components/zwave/index.html @@ -0,0 +1,475 @@ + + + + + + + + + Z-Wave - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Z-Wave +

+
+
+

The Z-Wave integration for Home Assistant allows you to observe and control connected Z-Wave devices. Please see the Z-Wave getting started section for in-depth documentation on how to use and setup the Z-Wave component.

+

If you have setup the requirements, then add the following entry configuration.yaml file:

+
# Example configuration.yaml entry
+zwave:
+
+
+
+
+ +
+
+ + + + + + + diff --git a/config.rb b/config.rb deleted file mode 100644 index 408aecaf58..0000000000 --- a/config.rb +++ /dev/null @@ -1,19 +0,0 @@ -require 'sass-globbing' - -# Require any additional compass plugins here. -project_type = :stand_alone - -# Publishing paths -http_path = "/" -http_images_path = "/images" -http_generated_images_path = "/images" -http_fonts_path = "/fonts" -css_dir = "public/stylesheets" - -# Local development paths -sass_dir = "sass" -images_dir = "source/images" -fonts_dir = "source/fonts" - -line_comments = false -output_style = :compressed diff --git a/config.ru b/config.ru deleted file mode 100644 index 4c56b416a9..0000000000 --- a/config.ru +++ /dev/null @@ -1,25 +0,0 @@ -require 'bundler/setup' -require 'sinatra/base' - -# The project root directory -$root = ::File.dirname(__FILE__) - -class SinatraStaticServer < Sinatra::Base - - get(/.+/) do - send_sinatra_file(request.path) {404} - end - - not_found do - send_file(File.join(File.dirname(__FILE__), 'public', '404.html'), {:status => 404}) - end - - def send_sinatra_file(path, &missing_file_block) - file_path = File.join(File.dirname(__FILE__), 'public', path) - file_path = File.join(file_path, 'index.html') if File.directory?(file_path) - File.exist?(file_path) ? send_file(file_path) : missing_file_block.call - end - -end - -run SinatraStaticServer diff --git a/cookbook/apache_configuration/index.html b/cookbook/apache_configuration/index.html new file mode 100644 index 0000000000..aa5447a5bb --- /dev/null +++ b/cookbook/apache_configuration/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/cookbook/automation_enocean_phue/index.html b/cookbook/automation_enocean_phue/index.html new file mode 100644 index 0000000000..fb5a175d51 --- /dev/null +++ b/cookbook/automation_enocean_phue/index.html @@ -0,0 +1,241 @@ + + + + + + + + + Switch Philips Hue with enocean - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Switch Philips Hue with enocean +

+
+
+

Assume that you have an enocean wall switch and some Philips Hue lamps. The enocean wall switch will fire the event button_pressed and pass along several parameters which is used to turn on/off the lamps.

+

event_data:

+
    +
  • which
  • +
  • pushed
  • +
  • onoff
  • +
  • id
  • +
  • devname
  • +
+
enocean:
+  device: /dev/ttyUSB0
+
+binary_sensor:
+  - platform: enocean
+    id: [0x00,0x01,0x02,0x03]
+    name: living_room_switch
+
+automation:
+  - alias: Turn on living room light
+    trigger:
+      platform: event
+      event_type: button_pressed
+      event_data:
+        onoff: 1
+        devname: living_room_switch
+    action:
+      service: light.turn_on
+      entity_id: light.hue_color_lamp_3
+
+  - alias: Turn off living room light
+    trigger:
+      platform: event
+      event_type: button_pressed
+      event_data:
+        onoff: 0
+        devname: living_room_switch
+    action:
+      service: light.turn_off
+      entity_id: light.hue_color_lamp_3
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_first_light/index.html b/cookbook/automation_first_light/index.html new file mode 100644 index 0000000000..480516bd23 --- /dev/null +++ b/cookbook/automation_first_light/index.html @@ -0,0 +1,303 @@ + + + + + + + + + Examples using first light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Examples using first light +

+
+
+

Create an input_boolean in your configuration.yaml

+
input_boolean:
+  trigger_first_morning:
+    name: Waiting for first morning motion
+    icon: mdi:kettle
+
+
+

The Main Automation

+
## These first two control t input_boolean that allows the "first morning action" to occur
+## If the action is triggered, it will also disable this boolean. This assumes you have the sun platform enabled.
+
+automation:
+#turns it on at 5am
+  - alias: Enable First Morning Trigger
+    trigger:
+      - platform: time
+        at: '5:00'
+    action: 
+      service: homeassistant.turn_on
+      entity_id: input_boolean.trigger_first_morning
+
+# turns it off an hour after sunrise
+  - alias: Disable First Morning Trigger
+    trigger:
+      - platform: sun
+        event: sunrise
+        offset: "01:00:00"
+    action: 
+      service: homeassistant.turn_off
+      entity_id: input_boolean.trigger_first_morning
+
+
+      
+# This is the main automation. It triggers when my motion sensor is triggered
+# (in this case, a motion sensor from a security system attached to my Vera)
+  - alias: First Morning Motion
+    trigger:
+      platform: state
+      entity_id: binary_sensor.livingroom_motion
+      to: 'on'
+    # only complete the automation if we're still waiting for the first motion
+    condition:
+        condition: state
+        entity_id: input_boolean.trigger_first_morning
+        state: 'on'
+        
+    action:
+      # turn off the "waiting" boolean regardless of whether lights will turn on
+      # so that this happens only once
+      - service: homeassistant.turn_off
+        entity_id: input_boolean.trigger_first_morning
+        
+      # But only turn on lights if the living room and kitchen lights are off or dimmed
+      # If a condition tests false, the automation will end 
+      - condition: and
+        conditions: 
+          - condition: numeric_state
+            entity_id: light.livingroom_ec
+            # if light is off, force a 0, otherwise use the brightness value
+            value_template: '{% if states.light.livingroom_ec.state == "on"  %}{{ states.light.livingroom_ec.attributes.brightness }}{% else %}0{% endif %}'
+            # brightness below 50% (255 = 100%)
+            below: 128
+          - condition: numeric_state
+            entity_id: light.kitchen_bar
+            value_template: '{% if states.light.kitchen_bar.state == "on"  %}{{ states.light.kitchen_bar.attributes.brightness }}{% else %}0{% endif %}'
+            below: 128
+          - condition: numeric_state
+            entity_id: light.kitchen_ceiling
+            value_template: '{% if states.light.kitchen_ceiling.state == "on"  %}{{ states.light.kitchen_ceiling.attributes.brightness }}{% else %}0{% endif %}'
+            below: 128
+                
+      # Trigger a scene
+      # You could add as many services or scenes as you'd like
+      - service: scene.turn_on
+        entity_id: scene.morning_first_motion
+
+      
+
+
+

The Scene

+

Here is the Scene that is called via the Automations above.

+
# here's the scene that gets called. Lights in 
+# my living room and kitchen turn on.
+scene:
+  - name: Morning First Motion
+    entities:
+      light.kitchen_ceiling:
+        state: on
+        brightness: 127
+      light.kitchen_bar:
+        state: on
+        brightness: 178
+      light.kitchen_above_cabinet:
+        state: on
+        brightness: 178
+      light.livingroom_ec:
+        state: on
+        brightness: 153
+      light.livingroom_track:
+        state: on
+        brightness: 153
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_flashing_lights/index.html b/cookbook/automation_flashing_lights/index.html new file mode 100644 index 0000000000..7fb5f50971 --- /dev/null +++ b/cookbook/automation_flashing_lights/index.html @@ -0,0 +1,293 @@ + + + + + + + + + Examples for flashing lights - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Examples for flashing lights +

+
+
+

Flashing lights triggered by an alarm

+

For flashing regular lights in case an alarm is triggered.

+
# AlmAct1 - switch to activate the alarm in Room1
+# AlmSnd1 - switch for a buzzer
+
+automation:
+- alias: 'Alarm_PIR_Room1'
+  trigger:
+    platform: state
+    entity_id: binary_sensor.PIR1
+    to: 'on'
+  condition:
+    - condition: state
+      entity_id: switch.AlmAct1
+      state: 'on'
+    - condition: state
+      entity_id: script.alarm_room1
+      state: 'off'
+  action:
+    # start alarm on movement if alarm activated
+    # and the alarm is not triggered
+    service: script.turn_on
+    entity_id: script.alarm_room1
+
+- alias: 'flash_room1_start'
+  trigger:
+    platform: state
+    entity_id: switch.AlmSnd1
+    to: 'on'
+  action:
+    service: script.turn_on
+    entity_id: script.flash_room1
+
+- alias: 'flash_room1_stop'
+  trigger:
+    platform: state
+    entity_id: switch.REL1
+    to: 'off'
+  condition:
+    condition: state
+    entity_id: switch.AlmSnd1
+    to: 'off'
+  action:
+    service: script.turn_off
+    entity_id: script.flash_room1
+
+script:
+  alarm_room1:
+    alias: Alarm room1
+    sequence:
+      - alias: Alarm Room1 Start
+        service: homeassistant.turn_on
+        data:
+          entity_id: switch.AlmSnd1
+      - alias: Set Ack Room1
+        service: homeassistant.turn_on
+        data:
+          entity_id: input_boolean.ack1
+      - alias: email_Room1
+        service: notify.email
+        data:
+          message: 'Movement alarm in Room1'
+      - delay:
+          # time interval for alarm sound and light flashing
+          seconds: 60
+      - alias: Alarm Room1 Stop
+        service: homeassistant.turn_off
+        data:
+          entity_id: switch.AlmSnd1
+
+  flash_room1:
+    alias: Flash Room1 On
+    sequence:
+      - alias: Light Room1 On
+        service: homeassistant.turn_on
+        data:
+          entity_id: switch.REL1
+      - delay:
+          # time for flash light on
+          seconds: 1
+      - alias: Light Room1 Off
+        service: homeassistant.turn_off
+        data:
+          entity_id: switch.REL1
+      - delay:
+          # time for flash light off
+          seconds: 1
+      - alias: loop_room1
+        service: script.turn_on
+        data:
+          entity_id: script.flash_room1
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_for_rainy_days/index.html b/cookbook/automation_for_rainy_days/index.html new file mode 100644 index 0000000000..d95a10f2c8 --- /dev/null +++ b/cookbook/automation_for_rainy_days/index.html @@ -0,0 +1,235 @@ + + + + + + + + + Automation for rainy days - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Automation for rainy days +

+
+
+

This requires a Dark Sky sensor with the condition precip_intensity that tells if it’s raining or not. You could also experiment with other attributes such as cloud_cover.

+

Turn on a light in the living room when it starts raining, someone is home, and it’s afternoon or later.

+
automation:
+  - alias: 'Rainy Day'
+    trigger:
+      - platform: state
+        entity_id: sensor.precip_intensity
+        to: 'rain'
+    condition:
+      - condition: state
+        entity_id: group.all_devices
+        state: 'home'
+      - condition: time
+        after: '14:00'
+        before: '23:00'
+    action:
+      service: light.turn_on
+      entity_id: light.couch_lamp
+
+
+

And then of course turn off the lamp when it stops raining but only if it’s within an hour before sunset.

+
  - alias: 'Rain is over'
+    trigger:
+      - platform: state
+        entity_id: sensor.precip_intensity
+        to: 'None'
+    condition:
+      - condition: sun
+        after: 'sunset'
+        offset: '-01:00:00'
+    action:
+      service: light.turn_off
+      entity_id: light.couch_lamp
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_kodi_dynamic_input_select/index.html b/cookbook/automation_kodi_dynamic_input_select/index.html new file mode 100644 index 0000000000..b57be92cc5 --- /dev/null +++ b/cookbook/automation_kodi_dynamic_input_select/index.html @@ -0,0 +1,337 @@ + + + + + + + + + Dynamic input select with Kodi media - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dynamic input select with Kodi media +

+
+
+

This requires a 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 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.

+

The media player yaml config:

+
media_player:
+- platform: kodi
+  name: Kodi
+  host: 192.168.0.123
+
+
+

The input_select with the scripts and a group:

+
input_select:
+  kodi_results:
+    name: Kodi API results
+    options:
+     - Nothing to do
+
+script:
+  get_recent_movies:
+    alias: Last added movies
+    sequence:
+      - service: media_player.kodi_call_method
+        data:
+          entity_id: media_player.kodi
+          method: VideoLibrary.GetRecentlyAddedMovies
+          properties:
+            - title
+            - year
+            - file
+            - lastplayed
+
+  get_recent_episodes:
+    alias: Last TV shows
+    sequence:
+      - service: media_player.kodi_call_method
+        data:
+          entity_id: media_player.kodi
+          method: VideoLibrary.GetRecentlyAddedEpisodes
+          properties:
+            - showtitle
+            - file
+            - lastplayed
+            - firstaired
+
+  get_pvr_channels:
+    alias: TV Channels
+    sequence:
+      - service: media_player.kodi_call_method
+        data:
+          entity_id: media_player.kodi
+          method: PVR.GetChannels
+          channelgroupid: 1
+
+group:
+  Media Select:
+    control: hidden
+    entities:
+      - input_select.kodi_results
+      - script.get_recent_movies
+      - script.get_recent_episodes
+      - script.get_pvr_channels
+
+
+

The AppDaemon app:

+
import appdaemon.appapi as appapi
+from homeassistant.components.media_player.kodi import (
+    EVENT_KODI_CALL_METHOD_RESULT)
+
+ENTITY = 'input_select.kodi_results'
+MEDIA_PLAYER = 'media_player.kodi'
+DEFAULT_ACTION = "Nothing to do"
+MAX_RESULTS = 20
+
+class DynamicKodiInputSelect(appapi.AppDaemon):
+    """AppDaemon app to dynamically populate an `input_select`."""
+    _ids_options = None
+
+    def initialize(self):
+        """Set up appdaemon app."""
+        self.listen_event(self._receive_kodi_result,
+                          EVENT_KODI_CALL_METHOD_RESULT)
+        self.listen_state(self._change_selected_option, ENTITY)
+        # Input select:
+        self._ids_options = {DEFAULT_ACTION: None}
+
+    def _receive_kodi_result(self, event_id, payload_event, *args):
+        result = payload_event['result']
+        method = payload_event['input']['method']
+
+        assert event_id == EVENT_KODI_CALL_METHOD_RESULT
+        if method == 'VideoLibrary.GetRecentlyAddedMovies':
+            values = result['movies'][:MAX_RESULTS]
+            data = [('{} ({})'.format(r['label'], r['year']),
+                     ('MOVIE', r['file'])) for r in values]
+            self._ids_options.update(dict(zip(*zip(*data))))
+            labels = list(list(zip(*data))[0])
+            self.call_service('input_select/set_options',
+                              entity_id=ENTITY,
+                              options=[DEFAULT_ACTION] + labels)
+            self.set_state(ENTITY,
+                           attributes={"friendly_name": 'Recent Movies',
+                                       "icon": 'mdi:movie'})
+        elif method == 'VideoLibrary.GetRecentlyAddedEpisodes':
+            values = list(filter(lambda r: not r['lastplayed'],
+                                 result['episodes']))[:MAX_RESULTS]
+            data = [('{} - {}'.format(r['showtitle'], r['label']),
+                     ('TVSHOW', r['file'])) for r in values]
+            self._ids_options.update(dict(zip(*zip(*data))))
+            labels = list(list(zip(*data))[0])
+            self.call_service('input_select/set_options',
+                              entity_id=ENTITY,
+                              options=[DEFAULT_ACTION] + labels)
+            self.set_state(ENTITY,
+                           attributes={"friendly_name": 'Recent TvShows',
+                                       "icon": 'mdi:play-circle'})
+        elif method == 'PVR.GetChannels':
+            values = result['channels']
+            data = [(r['label'], ('CHANNEL', r['channelid']))
+                    for r in values]
+            self._ids_options.update(dict(zip(*zip(*data))))
+            labels = list(list(zip(*data))[0])
+            self.call_service('input_select/set_options',
+                              entity_id=ENTITY,
+                              options=[DEFAULT_ACTION] + labels)
+            self.set_state(ENTITY,
+                           attributes={"friendly_name": 'TV channels',
+                                       "icon": 'mdi:play-box-outline'})
+
+    def _change_selected_option(self, entity, attribute, old, new, kwargs):
+        selected = self._ids_options[new]
+        if selected:
+            mediatype, file = selected
+            self.call_service('media_player/play_media',
+                              entity_id=MEDIA_PLAYER,
+                              media_content_type=mediatype,
+                              media_content_id=file)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_sun/index.html b/cookbook/automation_sun/index.html new file mode 100644 index 0000000000..82a003d8f0 --- /dev/null +++ b/cookbook/automation_sun/index.html @@ -0,0 +1,286 @@ + + + + + + + + + Examples using the sun - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Examples using the sun +

+
+
+

Turn on the living room lights 45 minutes before sunset if anyone is at home

+
automation:
+  trigger:
+    platform: sun
+    event: sunset
+    offset: "-00:45:00"
+  condition:
+    condition: state
+    entity_id: group.all_devices
+    state: home
+  action:
+    service: homeassistant.turn_on
+    entity_id: group.living_room_lights
+
+
+

Natural wake up light

+

Note, Philips Hue and LIFX are currently the only light platforms that support transitions.

+
automation:
+  trigger:
+    platform: time
+    at: "07:15:00"
+  action:
+    service: light.turn_on
+    entity_id: light.bedroom
+    data:
+      # 900 seconds = 15 minutes
+      transition: 900
+
+
+

Send sun rise/sun set notifications

+

Send notifications through PushBullet when the sun state is changed.

+
automation:
+  - alias: 'Send notification when sun rises'
+    trigger:
+      platform: sun
+      event: sunrise
+      offset: '+00:00:00'
+    action:
+      service: notify.pushbullet
+      data:
+        message: 'The sun is up.'
+  - alias: 'Send notification when sun sets'
+    trigger:
+      platform: sun
+      event: sunset
+      offset: '+00:00:00'
+    action:
+      service: notify.pushbullet
+      data:
+        message: 'The sun is down.'
+
+
+

Automations for lights and blinds based on solar elevation

+

Solar elevation automations can cope with offsets from sunset / sunrise as the seasons change better than using a time based offsets.

+
- alias: 'Turn a few lights on when the sun gets dim'
+  trigger:
+    platform: numeric_state
+    entity_id: sun.sun
+    value_template: '{{ state.attributes.elevation }}'
+    below: 3.5
+  action:
+    service: scene.turn_on
+    entity_id: scene.background_lights
+
+- alias: 'Turn more lights on as the sun gets dimmer'
+  trigger:
+    platform: numeric_state
+    entity_id: sun.sun
+    value_template: '{{ state.attributes.elevation }}'
+    below: 1.5
+  action:
+    service: scene.turn_on
+    entity_id: scene.more_lights
+
+- alias: 'Close blind at dusk'
+  trigger:
+    platform: numeric_state
+    entity_id: sun.sun
+    value_template: '{{ state.attributes.elevation }}'
+    below: -2.5
+  action:
+    service: switch.turn_off
+    entity_id: switch.blind
+
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_telegram_presence_alert/index.html b/cookbook/automation_telegram_presence_alert/index.html new file mode 100644 index 0000000000..28b12e2c06 --- /dev/null +++ b/cookbook/automation_telegram_presence_alert/index.html @@ -0,0 +1,222 @@ + + + + + + + + + Examples sending notification depending of the presence - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Examples sending notification depending of the presence +

+
+
+

This will send a message when someone in your known devices list connects to your local network. In other words, when someone arrives home. It will only work if you are using the nmap device tracker or a similar component.

+

This example uses Telegram to send the notification.

+
notify:
+  - name: Telegram
+    platform: telegram
+    api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+    chat_id: xxxxxxxxx
+
+
+

Add the automation rule. Change device_name_here to match the device you want to track.

+
automation:
+  trigger:
+    platform: state
+    entity_id: device_tracker.device_name_here
+    from: 'not_home'
+    to: 'home'
+  action:
+    service: notify.Telegram
+    data:
+      message: 'Person is now home'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/automation_using_timeinterval_inputboolean/index.html b/cookbook/automation_using_timeinterval_inputboolean/index.html new file mode 100644 index 0000000000..bdbabb72f6 --- /dev/null +++ b/cookbook/automation_using_timeinterval_inputboolean/index.html @@ -0,0 +1,228 @@ + + + + + + + + + Using time interval and input boolean - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Using time interval and input boolean +

+
+
+

Change Hue light on interval to random color based on state of an input boolean

+

Note, Philips Hue is currently the only light platform that support the random effect.

+
input_boolean:
+  loop_livingcolors:
+    name: Loop LivingColors
+    initial: off
+    icon: mdi:spotlight
+
+automation:
+# Changes Hue light every two minutes to random color if input boolean is set to on
+- alias: 'Set LivingColors to random color'
+  trigger:
+    platform: time
+    minutes: '/2'
+    seconds: 0
+  condition:
+    condition: state
+    entity_id: input_boolean.loop_livingcolors
+    state: 'on'
+  action:
+    service: light.turn_on
+    entity_id: light.woonkamer_livingcolors
+    data:
+      effect: random
+      transition: 5
+      brightness: 255
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/configuration_yaml_by_alok_saboo/index.html b/cookbook/configuration_yaml_by_alok_saboo/index.html new file mode 100644 index 0000000000..0d37172f95 --- /dev/null +++ b/cookbook/configuration_yaml_by_alok_saboo/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Alok Saboo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_aneisch/index.html b/cookbook/configuration_yaml_by_aneisch/index.html new file mode 100644 index 0000000000..72c0da5dad --- /dev/null +++ b/cookbook/configuration_yaml_by_aneisch/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by aneisch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_bah2830/index.html b/cookbook/configuration_yaml_by_bah2830/index.html new file mode 100644 index 0000000000..e267c2e6af --- /dev/null +++ b/cookbook/configuration_yaml_by_bah2830/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by bah2830 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_carlo_costanzo/index.html b/cookbook/configuration_yaml_by_carlo_costanzo/index.html new file mode 100644 index 0000000000..b9e05cff31 --- /dev/null +++ b/cookbook/configuration_yaml_by_carlo_costanzo/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Carlo Costanzo - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_cbulock/index.html b/cookbook/configuration_yaml_by_cbulock/index.html new file mode 100644 index 0000000000..74db0d00b7 --- /dev/null +++ b/cookbook/configuration_yaml_by_cbulock/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by cbulock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_chriskacerguis/index.html b/cookbook/configuration_yaml_by_chriskacerguis/index.html new file mode 100644 index 0000000000..37a73e346e --- /dev/null +++ b/cookbook/configuration_yaml_by_chriskacerguis/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by chriskacerguis - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_ciquattrofpv/index.html b/cookbook/configuration_yaml_by_ciquattrofpv/index.html new file mode 100644 index 0000000000..fce7334033 --- /dev/null +++ b/cookbook/configuration_yaml_by_ciquattrofpv/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Ciquattro - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_cy1701/index.html b/cookbook/configuration_yaml_by_cy1701/index.html new file mode 100644 index 0000000000..4d3dbca150 --- /dev/null +++ b/cookbook/configuration_yaml_by_cy1701/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by cy1701 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_danichispa/index.html b/cookbook/configuration_yaml_by_danichispa/index.html new file mode 100644 index 0000000000..c822626654 --- /dev/null +++ b/cookbook/configuration_yaml_by_danichispa/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Danichispa - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_daniel_hoyer_iversen/index.html b/cookbook/configuration_yaml_by_daniel_hoyer_iversen/index.html new file mode 100644 index 0000000000..2ad1a5893b --- /dev/null +++ b/cookbook/configuration_yaml_by_daniel_hoyer_iversen/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Daniel Høyer Iversen - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_fredsmith/index.html b/cookbook/configuration_yaml_by_fredsmith/index.html new file mode 100644 index 0000000000..e01b11b2a6 --- /dev/null +++ b/cookbook/configuration_yaml_by_fredsmith/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by fredsmith - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_geekofweek/index.html b/cookbook/configuration_yaml_by_geekofweek/index.html new file mode 100644 index 0000000000..e2fa38ab3c --- /dev/null +++ b/cookbook/configuration_yaml_by_geekofweek/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by geekofweek - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_greenturtwig/index.html b/cookbook/configuration_yaml_by_greenturtwig/index.html new file mode 100644 index 0000000000..4e7b708766 --- /dev/null +++ b/cookbook/configuration_yaml_by_greenturtwig/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by GreenTurtwig - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_gstevenson/index.html b/cookbook/configuration_yaml_by_gstevenson/index.html new file mode 100644 index 0000000000..ca128a6a50 --- /dev/null +++ b/cookbook/configuration_yaml_by_gstevenson/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by gstevenson - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_happyleavesaoc/index.html b/cookbook/configuration_yaml_by_happyleavesaoc/index.html new file mode 100644 index 0000000000..a13bc06c64 --- /dev/null +++ b/cookbook/configuration_yaml_by_happyleavesaoc/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by happyleavesaoc - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_instagraeme/index.html b/cookbook/configuration_yaml_by_instagraeme/index.html new file mode 100644 index 0000000000..a62d547caf --- /dev/null +++ b/cookbook/configuration_yaml_by_instagraeme/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by InstaGraeme - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_jjmontesl/index.html b/cookbook/configuration_yaml_by_jjmontesl/index.html new file mode 100644 index 0000000000..a85c718df1 --- /dev/null +++ b/cookbook/configuration_yaml_by_jjmontesl/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by jjmontesl - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_lancehaynie/index.html b/cookbook/configuration_yaml_by_lancehaynie/index.html new file mode 100644 index 0000000000..8221eb70e3 --- /dev/null +++ b/cookbook/configuration_yaml_by_lancehaynie/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Lance Haynie - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_mertenats/index.html b/cookbook/configuration_yaml_by_mertenats/index.html new file mode 100644 index 0000000000..9e5d74e411 --- /dev/null +++ b/cookbook/configuration_yaml_by_mertenats/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by mertenats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_mf_social/index.html b/cookbook/configuration_yaml_by_mf_social/index.html new file mode 100644 index 0000000000..b5d48b0753 --- /dev/null +++ b/cookbook/configuration_yaml_by_mf_social/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by mf_social - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_ntalekt/index.html b/cookbook/configuration_yaml_by_ntalekt/index.html new file mode 100644 index 0000000000..66478d8443 --- /dev/null +++ b/cookbook/configuration_yaml_by_ntalekt/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by ntalekt - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_oakbrad/index.html b/cookbook/configuration_yaml_by_oakbrad/index.html new file mode 100644 index 0000000000..342a34b0d1 --- /dev/null +++ b/cookbook/configuration_yaml_by_oakbrad/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by oakbrad - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_scottocs11/index.html b/cookbook/configuration_yaml_by_scottocs11/index.html new file mode 100644 index 0000000000..83abeebfe5 --- /dev/null +++ b/cookbook/configuration_yaml_by_scottocs11/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Scottoc11 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_shortbloke/index.html b/cookbook/configuration_yaml_by_shortbloke/index.html new file mode 100644 index 0000000000..089f720dad --- /dev/null +++ b/cookbook/configuration_yaml_by_shortbloke/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Shortbloke - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_silvrr/index.html b/cookbook/configuration_yaml_by_silvrr/index.html new file mode 100644 index 0000000000..06ee5e89d8 --- /dev/null +++ b/cookbook/configuration_yaml_by_silvrr/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by silvrr - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_skalavala/index.html b/cookbook/configuration_yaml_by_skalavala/index.html new file mode 100644 index 0000000000..2bf4092c34 --- /dev/null +++ b/cookbook/configuration_yaml_by_skalavala/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Mahasri Kalavala - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_stanvx/index.html b/cookbook/configuration_yaml_by_stanvx/index.html new file mode 100644 index 0000000000..451e711c71 --- /dev/null +++ b/cookbook/configuration_yaml_by_stanvx/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Stanvx - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_teagan42/index.html b/cookbook/configuration_yaml_by_teagan42/index.html new file mode 100644 index 0000000000..8b63c56ff3 --- /dev/null +++ b/cookbook/configuration_yaml_by_teagan42/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Teagan42 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_by_vasiley/index.html b/cookbook/configuration_yaml_by_vasiley/index.html new file mode 100644 index 0000000000..931463a3bc --- /dev/null +++ b/cookbook/configuration_yaml_by_vasiley/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Configuration.yaml by Vasiley - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cookbook/configuration_yaml_from_bassclarinetl2/index.html b/cookbook/configuration_yaml_from_bassclarinetl2/index.html new file mode 100644 index 0000000000..fc60c64460 --- /dev/null +++ b/cookbook/configuration_yaml_from_bassclarinetl2/index.html @@ -0,0 +1,681 @@ + + + + + + + + + Configuration.yaml by bassclarinetl2 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Configuration.yaml by bassclarinetl2 +

+
+
+
homeassistant:
+  # Name of the location where Home Assistant is running
+  name: example.com
+  # Location required to calculate the time the sun rises and sets
+  latitude: 37
+  longitude: -121
+  # 'metric' for Metric, 'imperial' for Imperial
+  unit_system: imperial
+  # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+  time_zone: America/Los_Angeles
+  customize:
+    switch.aeon_labs_smart_energy_switch_switch_2:
+      friendly_name: Mac Switch-Meter
+    switch.leviton_unknown_type1a02_id0334_switch_3:
+      friendly_name: W Nightstand
+      entity_picture: /local/zwvapl.jpg
+    switch.hub_switch:
+      friendly_name: Wink Hub Switch
+      entity_picture: /local/wemoswitch.jpg
+    switch.leviton_unknown_type1a02_id0334_switch_4:
+      friendly_name: Christmas Tree
+      entity_picture: /local/zwvapl.jpg
+    switch.leviton_unknown_type1a02_id0334_switch_5:
+      friendly_name: Roof Lights
+      entity_picture: /local/zwvapl.jpg
+
+    light.w_bedroom_ceiling_:
+      friendly_name: Will's Bedroom Ceiling Lights (Wink)
+      entity_picture: /local/casetta.jpg
+    light.living_room_wall_:
+      friendly_name: Living Room Couch Lights (Wink)
+      entity_picture: /local/casetta.jpg
+
+    media_player.my_shield_android_tv:
+      friendly_name: Dalek (Cast)
+      entity_picture: /local/shieldtv.jpg
+    media_player.chromecast:
+      friendly_name: Jeff chromecast
+      entity_picture: /local/chromecast.jpg
+    media_player.kodi:
+      friendly_name: Tardis-Win7 (Kodi)
+      entity_picture: /local/kodi.png
+    media_player.kodi_2:
+      friendly_name: Dalek (Kodi)
+    media_player.roku_2_xd__12a18n045363:
+      friendly_name: Parents Roku
+      entity_picture: /local/roku2xd.jpg
+
+    sensor.aeon_labs_smart_energy_switch_power_2:
+      friendly_name: Mac Usage (W)
+    sensor.aeon_labs_smart_energy_switch_previous_reading_2:
+      friendly_name: Mac Usage Previous (W)
+      hidden: true
+    sensor.aeon_labs_smart_energy_switch_energy_2:
+      friendly_name: Mac Usage (kWh)
+      hidden: true
+
+#####################
+## GROUPS
+#####################
+group:
+  w_bedroom:
+   - switch.leviton_unknown_type1a02_id0334_switch_3
+   - light.w_bedroom_ceiling_
+  christmas:
+   - switch.leviton_unknown_type1a02_id0334_switch_4
+   - switch.leviton_unknown_type1a02_id0334_switch_5
+  almanac:
+   - sensor.date
+   - sensor.time
+   - sensor.time_utc
+   - sun.sun
+  tracker:
+   - device_tracker.will_wnexus
+#  OpenWeatherMap:
+#   - sensor.weather_temperature
+#   - sensor.weather_humidity
+#   - sensor.weather_pressure
+#   - sensor.weather_rain
+#   - sensor.weather_wind_speed
+#   - sensor.weather_cloud_coverage
+#   - sensor.weather_forecast
+  Meteobridge:
+   - sensor.outdoor_temp_meteobridge
+   - sensor.outdoor_humidity_meteobridge
+   - sensor.outdoor_dewpoint_meteobridge
+   - sensor.precip_rate_meteobridge
+   - sensor.wind_direction_meteobridge
+   - sensor.wind_gust_meteohub
+   - sensor.wind_chill_meteobridge
+   - sensor.wind_speed_meteobridge
+   - sensor.indoor_dewpoint_meteobridge
+   - sensor.indoor_humidity_meteobridge
+   - sensor.indoor_temp_meteobridge
+   - sensor.precip_change_meteobridge
+   - sensor.precip_total_meteobridge
+   - sensor.sea_level_pressure_meteobridge
+   - sensor.barometric_pressure_meteobridge
+
+####################
+## ZONES
+####################
+zone:
+  name: Home
+  latitude: 37
+  longitude: -121  
+  radius: 200
+  icon: mdi:home
+
+zone 2:
+  name: Barracuda_(SJ)
+  latitude: 37
+  longitude: -121
+  radius: 100
+
+zone 3:
+  name: SFC
+  latitude: 37
+  longitude: -122
+  radius: 95
+
+####################
+## NOTIFICATIONS
+####################
+
+
+####################
+## AUTOMATION
+####################
+automation:
+#- alias: 'W_at_work' 
+#  trigger:
+#    - platform: zone
+#      entity_id: device_tracker.will_wnexus
+#      zone: zone.barracuda_sj
+#      event: enter
+#    - platform: time
+#      at: '07:15'
+#      before: '09:00'
+#  action:
+#    service: ifttt.trigger
+#    data: {"event":"hassnotification_dadsms", "value1": "Will's at Work"}
+- alias: "Update_Update"
+  trigger:
+    platform: state
+    entity_id: updater.updater
+  action:
+    service: ifttt.trigger
+    data: {"event":"hassnotification_willsms","value1":"HASS has an update"}
+- alias: 'Christmas Roof ON'
+  trigger:
+    platform: sun
+    event: sunset
+    offset: '-01:00:00'
+  action:
+    service: homeassistant.turn_on
+    entity_id: switch.leviton_unknown_type1a02_id0334_switch_5
+- alias: 'Christmas Roof OFF'
+  trigger:
+    platform: time
+    hours: 1
+    minutes: 0
+    seconds: 0
+  action:
+    service: homeassistant.turn_off
+    entity_id: switch.leviton_unknown_type1a02_id0334_switch_5
+- alias: 'Christmas Tree ON'
+  trigger:
+    platform: time
+    hours: 8
+    minutes: 0
+    seconds: 0
+  action:
+    service: homeassistant.turn_on
+    entity_id: switch.leviton_unknown_type1a02_id0334_switch_4
+- alias: 'Christmas Tree (OFF)'
+  trigger:
+    platform: time
+    hours: 23
+    minutes: 0
+    seconds: 0
+  action:
+    service: homeassistant.turn_off
+    entity_id: switch.leviton_unknown_type1a02_id0334_switch_4
+#- alias: test notify
+#  trigger:
+#    platform: time
+#    minutes: '/5' #every 5 min
+#  action:
+#    service: notify.pushEtta
+#    data: 
+#      message: 5 Min Test
+
+
+#################################
+###       COMPONENTS          ###
+#################################
+#discovery:
+sun:
+#updater:
+history:
+#conversation:
+frontend:
+logbook:
+
+http:
+  api_password: [password goes here]
+  server_port: 8123
+  ssl_certificate: /etc/letsencrypt/live/example.com/fullchain.pem
+  ssl_key: /etc/letsencrypt/live/example.com/privkey.pem
+
+ifttt:
+  key: [redacted]
+
+media_player 1:
+  platform: plex
+#media_player 2:  
+#  platform: squeezebox
+#  host: 192.168.2.80
+#  port: 9000
+media_player 3:
+  platform: cast
+media_player 4:
+  platform: kodi
+  url: http://192.168.2.129:8080/jsonrpc
+  user: kodi
+  password: kodi
+media_player 5:
+  platform: plex
+media_player 6:
+  platform: kodi
+  url: http://192.168.2.165/jsonrpc
+media_player 7:
+  platform: samsungtv
+  host: 192.168.2.90
+  name: Parents TV
+
+wink:
+  access_token: [redacted]
+  refresh_token: [redacted]
+
+zwave:
+  usb_path: /dev/ttyUSB0
+  config_path: /usr/local/share/python-openzwave/config
+  polling_interval: 10000
+
+#zigbee:
+#  device: /dev/ttyUSB1
+#  baud: 115200
+
+mqtt:
+  broker: 127.0.0.1
+  port: 8883
+  username: [redacted]
+  password: [redacted]
+
+device_tracker 1:
+  platform: owntracks
+
+  track_new_devices: yes
+  interval_seconds: 40
+  consider_home: 120 
+
+device_tracker 2:
+  platform: nmap_tracker
+  hosts: 192.168.2.0/24
+  home_interval: 3
+
+#sensor:
+#  platform: openweathermap
+#  api_key: [redacted]
+#  forecast: 1
+#  monitored_conditions:
+#    - temperature
+#    - wind_speed
+#    - humidity
+#    - pressure
+#    - clouds
+#    - rain
+
+sensor 2:
+  platform: time_date
+  display_options:
+    - 'time'
+    - 'date'
+    - 'time_utc'
+
+### BEGIN METEO SENSORS ###
+sensor 3:
+  platform: tcp
+  name: Outdoor Temp (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"   
+  value_template: "{{value.split (' ')[2]}}"
+  unit: C
+
+sensor 4:
+  platform: tcp
+  name: Outdoor Humidity (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[3]}}"
+  unit: Percent
+
+sensor 5:
+  platform: tcp
+  name: Outdoor Dewpoint (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[4] }}"
+  unit: C
+
+sensor 6:
+  platform: tcp
+  name: Wind Direction (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[7]}}"
+  unit: Degrees
+
+sensor 7:
+  platform: tcp
+  name: Wind Gust (Meteohub)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[8]}}"
+  unit: m/s
+
+sensor 8:
+  platform: tcp
+  name: Wind Speed (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[9]}}"
+  unit: m/s
+
+sensor 9:
+  platform: tcp
+  name: Wind Chill (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[10]}}"
+  unit: C
+
+sensor 10:
+  platform: tcp
+  name: Precip Rate (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[13]}}"
+  unit: mm/hr
+
+sensor 11:
+  platform: tcp
+  name: Precip Total (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[14]}}"
+  unit: mm
+
+sensor 12:
+  platform: tcp
+  name: Precip Change (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[15]}}"
+  unit: mm
+
+sensor 13:
+  platform: tcp
+  name: Indoor Temp (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[18]}}"
+  unit: C
+
+sensor 14:
+  platform: tcp
+  name: Indoor Humidity (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[19]}}"
+  unit: percent
+
+sensor 15:
+  platform: tcp
+  name: Indoor Dewpoint (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[20]}}"
+  unit: C
+
+sensor 16:
+  platform: tcp
+  name: Barometric Pressure (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[21]}}"
+  unit: mb
+
+sensor 17:
+  platform: tcp
+  name: Sea Level Pressure (Meteobridge)
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charaset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[22]}}"
+  unit: mb
+
+sensor 18:
+  platform: steam_online
+  api_key: [Redact]
+  accounts:
+    - 76561198012067051
+
+switch:
+  platform: wemo
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/custom_panel_using_react/index.html b/cookbook/custom_panel_using_react/index.html new file mode 100644 index 0000000000..d769146862 --- /dev/null +++ b/cookbook/custom_panel_using_react/index.html @@ -0,0 +1,175 @@ + + + + + + + + + Custom Panel using React - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Custom Panel using React +

+
+
+

This is a React implementation of TodoMVC but instead of checking off to do items, you are turning lights and switches on/off.

+
    +
  • It uses React to render the data.
  • +
  • It hooks into Home Assistant JS which means updates pushed from the server are instantly rendered.
  • +
  • It accesses properties made available from Polymer.
  • +
  • It uses the user configuration for the component in the configuration.yaml file for rendering.
  • +
  • It allows toggling the sidebar.
  • +
+

Download the source here. Copy the file to <config dir>/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.

+
panel_custom:
+  - name: react
+    sidebar_title: TodoMVC
+    sidebar_icon: mdi:work
+    url_path: todomvc
+    config:
+      title: hello
+
+
+

This video shows the example in action.

+
+ +
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/custom_ui_by_andrey-git/index.html b/cookbook/custom_ui_by_andrey-git/index.html new file mode 100644 index 0000000000..e11ee3561f --- /dev/null +++ b/cookbook/custom_ui_by_andrey-git/index.html @@ -0,0 +1,152 @@ + + + + + + + + + Custom UI state-card by andrey-git - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Custom UI state-card by andrey-git +

+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/dim_and_brighten_lights/index.html b/cookbook/dim_and_brighten_lights/index.html new file mode 100644 index 0000000000..366d17aede --- /dev/null +++ b/cookbook/dim_and_brighten_lights/index.html @@ -0,0 +1,354 @@ + + + + + + + + + Dim (and brighten) lights via a remote - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dim (and brighten) lights via a remote +

+
+
+

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.

+
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 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 are used to set the minimum and maximum brightness, so that it’s easy to tune that (or manage it through an automation).

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

+
# Replace YOURLIGHT with the actual light entity
+script:
+    light_bright:
+      sequence:
+        - service: light.turn_on
+          data_template:
+            entity_id: light.YOUR_LIGHT
+            brightness: >-
+              {% 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 }}
+
+        - service_template: >
+            {% if states.light.YOUR_LIGHT.attributes.brightness|default(0)|int < states('input_number.light_maximum')|int %}
+              script.turn_on
+            {% else %}
+              script.turn_off
+            {% endif %}
+          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: >-
+              {% 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 }}
+
+        - service_template: >
+            {% if states.light.YOUR_LIGHT.attributes.brightness|default(0)|int > states('input_number.light_minimum')|int %}
+              script.turn_on
+            {% else %}
+              script.turn_off
+            {% endif %}
+          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/cookbook/dim_lights_when_playing_media/index.html b/cookbook/dim_lights_when_playing_media/index.html new file mode 100644 index 0000000000..71607a0506 --- /dev/null +++ b/cookbook/dim_lights_when_playing_media/index.html @@ -0,0 +1,259 @@ + + + + + + + + + Dim lights when playing media - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Dim lights when playing media +

+
+
+

Like it how the lights dim up/down at the movies? Do it at home as well!

+

This example uses the media player, lights (transitions) and the sun component. We’ll use actions to detect media player state changes and scenes to control multiple lights and transition between scenes.

+

Scenes

+

One scene for normal light, one for when movies are on. A 2 second transition gives a nice ‘feel’ to the switch.

+
scene:
+  - name: Livingroom normal
+    entities:
+        light.light1:
+            state: on
+            transition: 2
+            brightness_pct: 60
+        light.light2:
+            state: on
+            transition: 2
+            brightness_pct: 85
+  - name: Livingroom dim
+    entities:
+        light.light1:
+            state: on
+            transition: 2
+            brightness_pct: 30
+        light.light2:
+            state: on
+            transition: 2
+            brightness_pct: 55
+
+
+

Automation

+

The paused/stopped state is best matched using “from: ‘playing’”. Adding in the sun condition as we only want this when it’s dark.

+
automation:
+  - alias: "Media player paused/stopped"
+    trigger:
+      - platform: state
+        entity_id: media_player.htpc
+        from: 'playing'
+        to: 'idle'
+    condition:
+      - condition: state
+        entity_id: sun.sun
+        state: 'below_horizon'
+    action:
+        service: scene.turn_on
+        entity_id: scene.livingroom_normal
+
+  - alias: "Media player playing"
+    trigger:
+      - platform: state
+        entity_id: media_player.htpc
+        to: 'playing'
+        from: 'idle'
+    condition:
+      - condition: state
+        entity_id: sun.sun
+        state: 'below_horizon'
+    action:
+        service: scene.turn_on
+        entity_id: scene.livingroom_dim
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/dropboxbackup/index.html b/cookbook/dropboxbackup/index.html new file mode 100644 index 0000000000..ec77514364 --- /dev/null +++ b/cookbook/dropboxbackup/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/cookbook/fail2ban/index.html b/cookbook/fail2ban/index.html new file mode 100644 index 0000000000..fe5fbb4d06 --- /dev/null +++ b/cookbook/fail2ban/index.html @@ -0,0 +1,228 @@ + + + + + + + + + fail2ban - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ fail2ban +

+
+
+

This is a quick guide on how to setup fail2ban for Home Assistant. This was originally in the forum but I created this here for people.

+

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:

+
logger:
+  default: critical
+  logs:
+    homeassistant.components.http.ban: warning
+
+
+

Next we will be creating these three files :

+
    +
  • /etc/fail2ban/fail2ban.local
  • +
  • /etc/fail2ban/filter.d/hass.local
  • +
  • /etc/fail2ban/jail.local
  • +
+

Contents of /etc/fail2ban/fail2ban.local:

+
[Definition]
+logtarget = SYSLOG
+
+
+

Contents of /etc/fail2ban/filter.d/hass.local:

+
[INCLUDES]
+before = common.conf
+
+[Definition]
+failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from <HOST>.*$
+
+ignoreregex =
+
+
+

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

+
[hass-iptables]
+enabled = true
+filter = hass
+action = iptables-allports[name=HASS]
+logpath = /home/homeassistant/.homeassistant/home-assistant.log
+maxretry = 5
+
+
+

Finally restart fail2ban : sudo systemctl restart fail2ban

+

Check your log to make sure it read in your settings : tail -100 /var/log/syslog|grep fail

+

If all is well you should see this from your syslog:

+
May 24 20:58:01 homeauto fail2ban.server[14997]: INFO Stopping all jails
+May 24 20:58:02 homeauto fail2ban.jail[14997]: INFO Jail 'sshd' stopped
+May 24 20:58:02 homeauto fail2ban-client[15206]: Shutdown successful
+May 24 20:58:02 homeauto fail2ban.server[14997]: INFO Exiting Fail2ban
+May 24 20:58:02 homeauto fail2ban-client[15213]: 2017-05-24 20:58:02,342 fail2ban.server         [15215]: INFO    Starting Fail2ban v0.9.6
+May 24 20:58:02 homeauto fail2ban-client[15213]: 2017-05-24 20:58:02,343 fail2ban.server         [15215]: INFO    Starting in daemon mode
+May 24 20:58:02 homeauto fail2ban.server[15217]: INFO Changed logging target to SYSLOG (/dev/log) for Fail2ban v0.9.6
+May 24 20:58:02 homeauto fail2ban.database[15217]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Creating new jail 'sshd'
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'sshd' uses pyinotify {}
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Initiated 'pyinotify' backend
+May 24 20:58:02 homeauto fail2ban.actions[15217]: INFO Set banTime = 600
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set findtime = 600
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set maxRetry = 5
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Added logfile = /var/log/auth.log
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set jail log file encoding to UTF-8
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set maxlines = 10
+May 24 20:58:02 homeauto fail2ban.server[15217]: INFO Jail sshd is not a JournalFilter instance
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Creating new jail 'hass-iptables'
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'hass-iptables' uses pyinotify {}
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Initiated 'pyinotify' backend
+May 24 20:58:02 homeauto fail2ban.actions[15217]: INFO Set banTime = 600
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set findtime = 600
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set maxRetry = 5
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Added logfile = /opt/hass-prod-cfg/home-assistant.log
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set jail log file encoding to UTF-8
+May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Date pattern set to `'^%y-%m-%d %H:%M:%S'`: `^Year2-Month-Day 24hour:Minute:Second`
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'sshd' started
+May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'hass-iptables' started
+
+
+

That’s it!

+

If you want to read more about fail2ban, some links are below:

+ +
+
+ +
+
+ + + + + + + diff --git a/cookbook/foscam_away_mode_PTZ/index.html b/cookbook/foscam_away_mode_PTZ/index.html new file mode 100644 index 0000000000..f976d538e4 --- /dev/null +++ b/cookbook/foscam_away_mode_PTZ/index.html @@ -0,0 +1,262 @@ + + + + + + + + + Foscam Recording during Away Mode Only using Pan/Tilt/Zoom Control and Motion Detection - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Foscam Recording during Away Mode Only using Pan/Tilt/Zoom Control and Motion Detection +

+
+
+

This requires a Foscam IP Camera camera with PTZ (Pan, Tilt, Zoom) and CGI functionality (Source)

+

Foscam Cameras can be controlled by Home Assistant through a number of CGI commands. +The following outlines examples of the switch, services, and scripts required to move between 2 preset destinations while controlling motion detection, but many other options of movement are provided in the Foscam CGI User Guide linked above.

+

The switch.foscam_motion will control whether the motion detection is on or off. This switch supports statecmd, which checks the current state of motion detection.

+
# Replace admin and password with an "Admin" privileged Foscam user
+# Replace ipaddress with the local IP address of your Foscam
+switch:
+ platform: command_line
+ switches:
+   #Switch for Foscam Motion Detection
+   foscam_motion:
+     command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'
+     command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'
+     command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=</isEnable>)"'
+     value_template: '{{ value == "1" }}'
+
+
+

The service shell_command.foscam_turn_off sets the camera to point down and away to indicate it is not recording, and shell_command.foscam_turn_on sets the camera to point where I’d like to record. h of these services require preset points to be added to your camera. See source above for additional information.

+
shell_command:
+  #Created a preset point in Foscam Web Interface named Off which essentially points the camera down and away
+  foscam_turn_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=Off&usr=admin&pwd=password"'
+  #Created a preset point in Foscam Web Interface named Main which points in the direction I would like to record
+  foscam_turn_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=Main&usr=admin&pwd=password"'
+
+
+

The script.foscam_off and script.foscam_on can be used to set the motion detection appropriately, and then move the camera. These scripts can be called as part of an automation with device_tracker triggers to set home and not_home modes for your Foscam and disable motion detection recording while home.

+
script:
+ foscam_off:
+   sequence:
+   - service: switch.turn_off
+     data:
+       entity_id: switch.foscam_motion
+   - service: shell_command.foscam_turn_off
+ foscam_on:
+   sequence:
+   - service: switch.turn_off
+     data:
+       entity_id: switch.foscam_motion
+   - service: shell_command.foscam_turn_on
+   - service: switch.turn_on
+     data:
+       entity_id: switch.foscam_motion
+
+
+

To automate Foscam being set to “on” (facing the correct way with motion sensor on), I used the following simple automation:

+
automation:
+  - alias: Set Foscam to Away Mode when I leave home
+    trigger:
+      platform: state
+      entity_id: group.family
+      from: 'home'
+    action:
+      service: script.foscam_on
+  - alias: Set Foscam to Home Mode when I arrive Home
+    trigger:
+      platform: state
+      entity_id: group.family
+      to: 'home'
+    action:
+      service: script.foscam_off
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/githubbackup/index.html b/cookbook/githubbackup/index.html new file mode 100644 index 0000000000..b2715e9136 --- /dev/null +++ b/cookbook/githubbackup/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/cookbook/google_maps_card/index.html b/cookbook/google_maps_card/index.html new file mode 100644 index 0000000000..049c6b7290 --- /dev/null +++ b/cookbook/google_maps_card/index.html @@ -0,0 +1,166 @@ + + + + + + + + + Show Google Maps as a card - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Show Google Maps as a card +

+
+
+

Using the generic camera platform you can present any image on the internet as a camera. Starting release 0.27 these urls can also be based on a template. This example uses this functionality to point a generic camera at the Google Maps static image API and pass in the location of a device.

+

It also leverages the limit_refetch_to_url_change option to ensure that we do not make a lot of requests to the Google Maps API.

+
# Example configuration.yaml entry.
+# Shows device_tracker.demo_paulus on a map.
+camera:
+  name: Paulus
+  platform: generic
+  still_image_url: https://maps.googleapis.com/maps/api/staticmap?center={{ states.device_tracker.demo_paulus.attributes.latitude }},{{ states.device_tracker.demo_paulus.attributes.longitude }}&zoom=13&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ states.device_tracker.demo_paulus.attributes.latitude }},{{ states.device_tracker.demo_paulus.attributes.longitude }}
+  limit_refetch_to_url_change: true
+
+
+

+ Screenshot showing Google Maps integration in Home Assistant front end. +

+
+
+ +
+
+ + + + + + + diff --git a/cookbook/index.html b/cookbook/index.html new file mode 100644 index 0000000000..c23d93c8dd --- /dev/null +++ b/cookbook/index.html @@ -0,0 +1,321 @@ + + + + + + + + + Cookbook - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Cookbook +

+
+
+

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 and organization components available.

+

For python_script: examples visit the Scripts section in our forum.

+

New recipes can be added via the home-assistant.io repository.

+

+A great place to find popular configurations is on this GitHub search for repositories with the home-assistant-config topic. +

+

Automation Examples

+ +

Automation in Python Examples

+ +

Custom Python Component Examples

+ +

Example configuration.yaml

+ +

Infrastructure

+ +

User Interface

+ +
+
+
+
+ + + + + + + diff --git a/cookbook/notify_if__new_ha_release/index.html b/cookbook/notify_if__new_ha_release/index.html new file mode 100644 index 0000000000..fd03c95f05 --- /dev/null +++ b/cookbook/notify_if__new_ha_release/index.html @@ -0,0 +1,238 @@ + + + + + + + + + Send notification if new Home Assistant release - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Send notification if new Home Assistant release +

+
+
+

The following example sends a notification via XMPP if a new Home Assistant release is available:

+
notify:
+  - platform: xmpp
+    name: jabber
+    sender: sender@jabber.org
+    password: !secret xmpp_password
+    recipient: recipient@jabber.org
+
+automation:
+  - alias: Update notifications
+    trigger:
+      - platform: state
+        entity_id: updater.updater
+    action:
+      service: notify.jabber
+      data:
+        message: 'There is a new Home Assistant release available.'
+
+
+

You can use templates to include the release number of Home Assistant if you prefer. The following example sends a notification via Pushbullet with the Home Assistant version in the message.

+
notify:
+  platform: pushbullet
+  api_key: 'YOUR_KEY_HERE'
+  name: pushbullet
+
+automation:
+  - alias: Update notifications
+  trigger:
+    - platform: state
+      entity_id: updater.updater
+  action:
+    service: notify.pushbullet
+    data_template: 
+      title: 'New Home Assistant Release'
+      target: 'YOUR_TARGET_HERE' #See Pushbullet component for usage
+      message: "Home Assistant  {{ states.updater.updater.state }}  is now available."
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/notify_if_over_threshold/index.html b/cookbook/notify_if_over_threshold/index.html new file mode 100644 index 0000000000..a5cef2d457 --- /dev/null +++ b/cookbook/notify_if_over_threshold/index.html @@ -0,0 +1,233 @@ + + + + + + + + + Send notification based on sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Send notification based on sensor +

+
+
+

The following example sends a notification via pushbullet if a sensor is over a critical value:

+

+notify me:
+  platform: pushbullet
+  api_key: "API_KEY_HERE"
+  name: mypushbullet
+
+automation:
+  - alias: FanOn
+    trigger:
+      platform: numeric_state
+      entity_id: sensor.furnace
+      above: 2
+    action:
+      service: notify.mypushbullet
+      data_template:
+        title: "Furnace fan is running"
+        message: "Fan running because current is {{ states.sensor.furnace.state }} amps"
+
+
+

If you also want a notification when it drops back down below that limit, you could add this as well:

+
  - alias: FanOff
+    trigger:
+      platform: numeric_state
+      entity_id: sensor.furnace
+      below: 2
+    action:
+      service: notify.mypushbullet
+      data_template:
+        title: "Furnace fan is stopped"
+        message: "Fan stopped because current is {{ states.sensor.furnace.state }} amps"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/owntracks_two_mqtt_broker/index.html b/cookbook/owntracks_two_mqtt_broker/index.html new file mode 100644 index 0000000000..a06ed416de --- /dev/null +++ b/cookbook/owntracks_two_mqtt_broker/index.html @@ -0,0 +1,225 @@ + + + + + + + + + OwnTracks with two MQTT brokers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ OwnTracks with two MQTT brokers +

+
+
+

I (surge919) successfully tied in OwnTracks to Home Assistant and SmartThings while using authentication for external access. The MQTT bridge doesn’t support authentication so I set up 2 MQTT instances.

+

Here are the steps I performed. Hopefully it saves someone else some time.

+

It seems to be working pretty well but if anyone sees something incorrect in my configuration, please let me know. This is my first real interaction with MQTT.

+

Here’s a summary of my setup:

+

Two Docker instances for MQTT

+
    +
  • 1 for internal use (the MQTT bridge for SmartThings - no authentication)
  • +
  • 1 for external use (for OwnTracks - with authentication)
  • +
+

All Docker configuration files are on my NAS so the Docker containers can be destroyed without affecting my actual configuration files.

+

Docker setup for the mosquitto internal instance. No authentication for use with the MQTT bridge.

+
$ docker run -ti -p 1883:1883  \
+    -v /volume1/data/mosquitto-int/config:/mqtt/config:ro \
+    -v /volume1/data/mosquitto-int/log:/mqtt/log \
+    -v /volume1/data/mosquitto-int/data/:/mqtt/data/ \
+    --name mosquitto-int -d toke/mosquitto
+
+
+

Docker setup for the mosquitto external instance. With authentication for use with Owntracks.

+
$ docker run -ti -p 1884:1883  \
+    -v /volume1/data/mosquitto-ext/config:/mqtt/config:ro \
+    -v /volume1/data/mosquitto-ext/log:/mqtt/log \
+    -v /volume1/data/mosquitto-ext/data/:/mqtt/data/ \
+    -v /volume1/data/mosquitto-ext/etc:/etc/mosquitto \
+    --name mosquitto-ext -d toke/mosquitto
+
+
+

Here are the config files:

+

/volume1/data/mosquitto-int/config/mosquitto.conf

+
connection mosquitto-ext
+persistence_file mosquitto.db
+try_private true
+address 10.0.0.20:1884
+start_type automatic
+sername test
+password test
+notifications true
+topic owntracks/# in
+log_type all
+log_dest file /mqtt/log/mqtt.log 
+log_facility 5
+
+
+

/volume1/data/mosquitto-ext/config/mosquitto.conf

+
connection mosquitto-int
+persistence_file mosquitto.db
+try_private true
+address 10.0.0.20:1883
+start_type automatic
+username test
+password test
+notifications true
+topic owntracks/# out
+log_type all
+log_dest file /mqtt/log/mqtt.log
+log_facility 5
+allow_anonymous false
+password_file /etc/mosquitto/pwfile
+
+
+

Create a password for mosquitto-ext

+
$ docker exec -it mosquitto-ext /bin/bash
+$ cd /etc/mosquitto/
+$ mosquitto_passwd -c /etc/mosquitto/pwfile <userID>
+
+
+

OwnTracks settings for Android

+
Preferences / Connection / Mode - Private MQTT
+ 
+Fill out
+ Host
+ Identification
+ Security: TLS disabled
+
+
+

+
+
+ +
+
+ + + + + + + diff --git a/cookbook/perform_actions_based_on_input_select/index.html b/cookbook/perform_actions_based_on_input_select/index.html new file mode 100644 index 0000000000..f645dcdfba --- /dev/null +++ b/cookbook/perform_actions_based_on_input_select/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Perform actions based on input select - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Perform actions based on input select +

+
+
+

This example uses an input_select element to pick which mp3 file to play on a Chromecast.

+
# Define our dropdown list
+input_select:
+  lullaby:
+    name: Lullaby
+    options:
+      - Rain
+      - Babbling Brook
+      - None
+    initial: None
+    icon: mdi:weather-rainy
+
+# Define our media player
+media_player:
+    - platform: cast
+      host: chromecast-nursery
+      name: Nursery
+
+automation:
+  # If you select "Rain", play the "rain.mp3" file
+  - alias: Play Rain Lullaby
+
+    trigger:
+      platform: state
+      entity_id: input_select.lullaby
+      to: "Rain"
+
+    action:
+      service: media_player.play_media
+      data:
+        entity_id: media_player.nursery
+        media_content_id: http://fileserver/rain.mp3
+        media_content_type: audio/mp4
+
+
+  # If you select "Babbling Brook", play the "babbling_brook.mp3" file
+  - alias: Play Babbling Brook Lullaby
+
+    trigger:
+      platform: state
+      entity_id: input_select.lullaby
+      to: "Babbling Brook"
+
+    action:
+      service: media_player.play_media
+      data:
+        entity_id: media_player.nursery
+        media_content_id: http://fileserver/babbling_brook.mp3
+        media_content_type: audio/mp4
+
+  # If you select "None, turn the Chromecast off
+  - alias: Stop the Lullaby
+
+    trigger:
+      platform: state
+      entity_id: input_select.lullaby
+      to: "None"
+
+    action:
+      service: media_player.turn_off
+      data:
+        entity_id: media_player.nursery
+
+
+

A little bit more complex example that uses input_select and template to decide what to play, and which Chromecast to play on.

+
input_select:
+  radio_station:
+    name: Radio Station
+    options:
+      - Z88.3
+      - Virgin
+      - RMC
+      - rmcHQ
+      - 105
+      - None
+    initial: None
+    icon: mdi:radio
+  radio_player:
+    name: Radio Player
+    options:
+      - Mansarda
+      - Doccia
+      - Bed
+      - Bath
+      - Salotto
+      - Salotto Video
+      - None
+    initial: None
+    icon: mdi:airplay
+
+automation:
+  - alias: Stop Streaming Radio
+    trigger:
+      - platform: state
+        entity_id: input_select.radio_station
+        to: "None"
+    action:
+      service: media_player.turn_off
+      data_template:
+        entity_id: >
+            {% if is_state("input_select.radio_player", "Mansarda") %}
+              media_player.bed_2
+            {%-elif is_state("input_select.radio_player", "Doccia") %}
+              media_player.bed_3
+            {%-elif is_state("input_select.radio_player", "Bed") %}
+              media_player.bed
+            {%-elif is_state("input_select.radio_player", "Bath") %}
+              media_player.bath
+            {%-elif is_state("input_select.radio_player", "Salotto") %}
+              media_player.salotto
+            {%-elif is_state("input_select.radio_player", "Salotto Video") %}
+              media_player.salotto_video
+            {% else %}
+              none
+            {% endif %}
+
+  - alias: Stream Radio - Template
+    trigger:
+      - platform: state
+        entity_id: input_select.radio_station
+    action:
+      - service: media_player.play_media
+        data_template:
+          entity_id: >
+            {% if is_state("input_select.radio_player", "Mansarda") %}
+              media_player.bed_2
+            {%-elif is_state("input_select.radio_player", "Doccia") %}
+              media_player.bed_3
+            {%-elif is_state("input_select.radio_player", "Bed") %}
+              media_player.bed
+            {%-elif is_state("input_select.radio_player", "Bath") %}
+              media_player.bath
+            {%-elif is_state("input_select.radio_player", "Salotto") %}
+              media_player.salotto
+            {%-elif is_state("input_select.radio_player", "Salotto Video") %}
+              media_player.salotto_video
+            {% else %}
+              none
+            {% endif %}
+          media_content_id: >
+            {% if is_state("input_select.radio_station", "Z88.3") %}
+              http://ice.zradio.org/z/high.mp3
+            {%-elif is_state("input_select.radio_station", "Virgin") %}
+              http://icecast.unitedradio.it/Virgin.mp3
+            {%-elif is_state("input_select.radio_station", "RMC") %}
+              http://icecast.unitedradio.it/RMC.mp3
+            {%-elif is_state("input_select.radio_station", "rmcHQ") %}
+              http://icecast.unitedradio.it/rmcHQ.mp3
+            {%-elif is_state("input_select.radio_station", "105") %}
+              http://icecast.unitedradio.it/Radio105.mp3
+            {% else %}
+              none
+            {% endif %}
+          media_content_type: 'audio/mp4'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/python_component_automation/index.html b/cookbook/python_component_automation/index.html new file mode 100644 index 0000000000..f744b5770b --- /dev/null +++ b/cookbook/python_component_automation/index.html @@ -0,0 +1,292 @@ + + + + + + + + + Automation in Code - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Automation in Code +

+
+
+

Example component to target an entity_id to:

+
    +
  • turn it on at 7AM in the morning
  • +
  • turn it on if anyone comes home and it is off
  • +
  • turn it off if all lights are turned off
  • +
  • turn it off if all people leave the house
  • +
  • offer a service to turn it on for 10 seconds
  • +
+

To set it up, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+example:
+  target: TARGET_ENTITY
+
+
+

Configuration variables:

+
    +
  • target (Required): TARGET_ENTITY should be one of your devices that can be turned on and off, e.g., a light or a switch. Example value could be light.Ceiling or switch.AC (if you have these devices with those names).
  • +
+

Create the file <config dir>/custom_components/example.py and copy paste the content below:

+
"""
+Example of a custom component.
+"""
+import time
+import logging
+
+from homeassistant.const import STATE_HOME, STATE_NOT_HOME, STATE_ON, STATE_OFF
+from homeassistant.helpers import validate_config
+from homeassistant.helpers.event_decorators import \
+    track_state_change, track_time_change
+from homeassistant.helpers.service import service
+import homeassistant.components as core
+from homeassistant.components import device_tracker
+from homeassistant.components import light
+
+# The domain of your component. Should be equal to the name of your component.
+DOMAIN = "example"
+
+# List of component names (string) your component depends upon.
+# We depend on group because group will be loaded after all the components that
+# initialize devices have been setup.
+DEPENDENCIES = ['group', 'device_tracker', 'light']
+
+# Configuration key for the entity id we are targeting.
+CONF_TARGET = 'target'
+
+# Variable for storing configuration parameters.
+TARGET_ID = None
+
+# Name of the service that we expose.
+SERVICE_FLASH = 'flash'
+
+# Shortcut for the logger
+_LOGGER = logging.getLogger(__name__)
+
+
+def setup(hass, config):
+    """Setup example component."""
+    global TARGET_ID
+
+    # Validate that all required config options are given.
+    if not validate_config(config, {DOMAIN: [CONF_TARGET]}, _LOGGER):
+        return False
+
+    TARGET_ID = config[DOMAIN][CONF_TARGET]
+
+    # Validate that the target entity id exists.
+    if hass.states.get(TARGET_ID) is None:
+        _LOGGER.error("Target entity id %s does not exist",
+                      TARGET_ID)
+
+        # Tell the bootstrapper that we failed to initialize and clear the
+        # stored target id so our functions don't run.
+        TARGET_ID = None
+        return False
+
+    # Tell the bootstrapper that we initialized successfully.
+    return True
+
+
+@track_state_change(device_tracker.ENTITY_ID_ALL_DEVICES)
+def track_devices(hass, entity_id, old_state, new_state):
+    """Called when the group.all devices change state."""
+    # If the target id is not set, return
+    if not TARGET_ID:
+        return
+
+    # If anyone comes home and the entity is not on, turn it on.
+    if new_state.state == STATE_HOME and not core.is_on(hass, TARGET_ID):
+
+        core.turn_on(hass, TARGET_ID)
+
+    # If all people leave the house and the entity is on, turn it off.
+    elif new_state.state == STATE_NOT_HOME and core.is_on(hass, TARGET_ID):
+
+        core.turn_off(hass, TARGET_ID)
+
+
+@track_time_change(hour=7, minute=0, second=0)
+def wake_up(hass, now):
+    """Turn light on in the morning.
+
+    Turn the light on at 7 AM if there are people home and it is not already
+    on.
+    """
+    if not TARGET_ID:
+        return
+
+    if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID):
+        _LOGGER.info('People home at 7AM, turning it on')
+        core.turn_on(hass, TARGET_ID)
+
+
+@track_state_change(light.ENTITY_ID_ALL_LIGHTS, STATE_ON, STATE_OFF)
+def all_lights_off(hass, entity_id, old_state, new_state):
+    """If all lights turn off, turn off."""
+    if not TARGET_ID:
+        return
+
+    if core.is_on(hass, TARGET_ID):
+        _LOGGER.info('All lights have been turned off, turning it off')
+        core.turn_off(hass, TARGET_ID)
+
+
+@service(DOMAIN, SERVICE_FLASH)
+def flash_service(hass, call):
+    """Service that will toggle the target.
+
+    Set the light to off for 10 seconds if on and vice versa.
+    """
+    if not TARGET_ID:
+        return
+
+    if core.is_on(hass, TARGET_ID):
+        core.turn_off(hass, TARGET_ID)
+        time.sleep(10)
+        core.turn_on(hass, TARGET_ID)
+
+    else:
+        core.turn_on(hass, TARGET_ID)
+        time.sleep(10)
+        core.turn_off(hass, TARGET_ID)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/python_component_mqtt_basic/index.html b/cookbook/python_component_mqtt_basic/index.html new file mode 100644 index 0000000000..cf844f2a82 --- /dev/null +++ b/cookbook/python_component_mqtt_basic/index.html @@ -0,0 +1,205 @@ + + + + + + + + + Basic MQTT Example - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Basic MQTT Example +

+
+
+

+This example requires you to have the MQTT component up and running. +

+

This is a simple hello world example to show the basics of using MQTT in a custom component. To use this example, create the file <config dir>/custom_components/hello_mqtt.py and copy the below example code.

+

This example follows a topic on MQTT and updates the state of an entity to the last message received on that topic. It will also register a service ‘set_state’ that will publish a message to the MQTT topic that we’re listening to.

+
import homeassistant.loader as loader
+
+# The domain of your component. Should be equal to the name of your component.
+DOMAIN = 'hello_mqtt'
+
+# List of component names (string) your component depends upon.
+DEPENDENCIES = ['mqtt']
+
+
+CONF_TOPIC = 'topic'
+DEFAULT_TOPIC = 'home-assistant/hello_mqtt'
+
+
+def setup(hass, config):
+    """Set up the Hello MQTT component."""
+    mqtt = loader.get_component('mqtt')
+    topic = config[DOMAIN].get('topic', DEFAULT_TOPIC)
+    entity_id = 'hello_mqtt.last_message'
+
+    # Listener to be called when we receive a message.
+    def message_received(topic, payload, qos):
+        """Handle new MQTT messages."""
+        hass.states.set(entity_id, payload)
+
+    # Subscribe our listener to a topic.
+    mqtt.subscribe(hass, topic, message_received)
+
+    # Set the initial state.
+    hass.states.set(entity_id, 'No messages')
+
+    # Service to publish a message on MQTT.
+    def set_state_service(call):
+        """Service to send a message."""
+        mqtt.publish(hass, topic, call.data.get('new_state'))
+
+    # Register our service with Home Assistant.
+    hass.services.register(DOMAIN, 'set_state', set_state_service)
+
+    # Return boolean to indicate that initialization was successfully.
+    return True
+
+
+

Load the component by adding the following to your configuration.yaml. When your component is loaded, a new entity should popup and there should be a new service available to call.

+
# configuration.yaml entry
+hello_mqtt:
+  topic: some_mqtt/topic/here
+
+
+

You can call the service with example payload:

+
{
+  "new_state": "some new state"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/python_component_simple_alarm/index.html b/cookbook/python_component_simple_alarm/index.html new file mode 100644 index 0000000000..603616363d --- /dev/null +++ b/cookbook/python_component_simple_alarm/index.html @@ -0,0 +1,256 @@ + + + + + + + + + Flash lights when intruder detected - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Flash lights when intruder detected +

+
+
+

This example component will detect intruders. It does so by checking if lights are being turned on while there is no one at home. When this happens it will turn the lights red, flash them for 30 seconds and send a message via the notify component. It will also flash a specific light when a known person comes home.

+

This component depends on the components device_tracker and light being setup.

+

To set it up, add the following lines to your configuration.yaml file:

+
# Example configuration.yaml entry
+simple_alarm:
+  known_light: light.Bowl
+  unknown_light: group.living_room
+
+
+

Configuration variables:

+
    +
  • known_light (Optional): Which light/light group has to flash when a known device comes home.
  • +
  • unknown_light (Optional): Which light/light group has to flash red when light turns on while no one home.
  • +
+

Create the file <config dir>/custom_components/simple_alarm.py and copy paste the content below:

+
"""Simple alarm component."""
+import logging
+
+import homeassistant.loader as loader
+from homeassistant.components import device_tracker, light, notify
+from homeassistant.helpers.event import track_state_change
+from homeassistant.const import STATE_ON, STATE_OFF, STATE_HOME, STATE_NOT_HOME
+
+_LOGGER = logging.getLogger(__name__)
+
+DOMAIN = 'simple_alarm"'
+
+DEPENDENCIES = ['group', 'device_tracker', 'light']
+
+# Attribute to tell which light has to flash when a known person comes home
+# If omitted will flash all.
+CONF_KNOWN_LIGHT = 'known_light'
+
+# Attribute to tell which light has to flash when an unknown person comes home
+# If omitted will flash all.
+CONF_UNKNOWN_LIGHT = 'unknown_light'
+
+# Services to test the alarms
+SERVICE_TEST_KNOWN_ALARM = 'test_known'
+SERVICE_TEST_UNKNOWN_ALARM = 'test_unknown'
+
+
+def setup(hass, config):
+    """Set up the simple alarms."""
+    light_ids = []
+
+    for conf_key in (CONF_KNOWN_LIGHT, CONF_UNKNOWN_LIGHT):
+        light_id = config[DOMAIN].get(conf_key, light.ENTITY_ID_ALL_LIGHTS)
+
+        if hass.states.get(light_id) is None:
+            _LOGGER.error(
+                "Light id %s could not be found in state machine", light_id)
+
+            return False
+
+        light_ids.append(light_id)
+
+    # pylint: disable=unbalanced-tuple-unpacking
+    known_light_id, unknown_light_id = light_ids
+
+    if hass.states.get(device_tracker.ENTITY_ID_ALL_DEVICES) is None:
+        _LOGGER.error("No devices are being tracked, cannot setup alarm")
+
+        return False
+
+    def known_alarm():
+        """ Fire an alarm if a known person arrives home. """
+        light.turn_on(hass, known_light_id, flash=light.FLASH_SHORT)
+
+    def unknown_alarm():
+        """ Fire an alarm if the light turns on while no one is home. """
+        light.turn_on(
+            hass, unknown_light_id,
+            flash=light.FLASH_LONG, rgb_color=[255, 0, 0])
+
+        # Send a message to the user
+        notify.send_message(
+            hass, "The lights just got turned on while no one was home.")
+
+    # Setup services to test the effect
+    hass.services.register(
+        DOMAIN, SERVICE_TEST_KNOWN_ALARM, lambda call: known_alarm())
+    hass.services.register(
+        DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, lambda call: unknown_alarm())
+
+    def unknown_alarm_if_lights_on(entity_id, old_state, new_state):
+        """Called when a light has been turned on."""
+        if not device_tracker.is_on(hass):
+            unknown_alarm()
+
+    track_state_change(
+        hass, light.ENTITY_ID_ALL_LIGHTS,
+        unknown_alarm_if_lights_on, STATE_OFF, STATE_ON)
+
+    def ring_known_alarm(entity_id, old_state, new_state):
+        """Called when a known person comes home."""
+        if light.is_on(hass, known_light_id):
+            known_alarm()
+
+    # Track home coming of each device
+    track_state_change(
+        hass, hass.states.entity_ids(device_tracker.DOMAIN),
+        ring_known_alarm, STATE_NOT_HOME, STATE_HOME)
+
+    return True
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/restart_ha_if_wemo_switch_is_not_detected/index.html b/cookbook/restart_ha_if_wemo_switch_is_not_detected/index.html new file mode 100644 index 0000000000..0b41810716 --- /dev/null +++ b/cookbook/restart_ha_if_wemo_switch_is_not_detected/index.html @@ -0,0 +1,283 @@ + + + + + + + + + Restart Home Assistant if Wemo Switch is not detected - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Restart Home Assistant if Wemo Switch is not detected +

+
+
+

Restart Home Assistant

+

This configuration example is restarting Home Assistant if a WeMo switch is not detected. An additional MQTT switch is present for stopping Home Assistant and can be triggered by IFTTT. The running batch script will automatically restart Home Assistant if the process isn’t found anymore.

+
mqtt:
+  broker: 127.0.0.1
+  port: 1883
+  client_id: home-assistant-1
+  keepalive: 60
+  
+device_tracker:
+  - platform: nmap_tracker
+    hosts: 192.168.0.1-255
+    home_interval: 1
+    interval_seconds: 30
+    consider_home: 900
+    
+ifttt:
+  key: ***
+  
+notify: 
+  - platform: pushbullet
+    api_key: ***
+    name: pushbullet
+  
+switch:
+  - platform: wemo
+  - platform: mqtt
+    state_topic: "home/killhass"
+    command_topic: "home/killhass"
+    name: "KillHass"
+    qos: 0
+    payload_on: "ON"
+    payload_of: "OFF"
+    optimistic: false
+
+script:
+  restarthawemo:
+    alias: "Restart HA if WeMo isn't found after 15 minutes"
+    sequence:
+      - delay:
+          minutes: 15
+      - service: notify.pushbullet
+        data:
+          message: 'WeMo not found, restarting HA'
+      - service: switch.turn_on
+        data:
+          entity_id: switch.killhass
+  
+automation:
+- alias: "Restart HA if WeMo switch isn't found after 15 minutes"
+  trigger:
+    platform: state
+    entity_id: device_tracker.wemo
+    from: 'not_home'
+    to: 'home'
+  condition:
+    - condition: template
+      value_template: '{% if states.switch.wemo %}false{% else %}true{% endif %}'
+    - condition: state
+      entity_id: script.restarthawemo
+      state: 'off'
+  action:
+    service: homeassistant.turn_on
+    entity_id: script.restarthawemo
+- alias: 'Stop HA'
+  trigger:
+    - platform: state
+      entity_id: switch.KillHass
+      to: 'on'
+  action:
+    service: homeassistant.stop
+  - alias: 'Stop restarting HA is WeMo is found'
+  trigger:
+    platform: template
+    value_template: '{% if states.switch.wemo %}true{% else %}false{% endif %}'
+  condition:
+    condition: state
+    entity_id: script.restarthawemo
+    state: 'on'
+  action:
+    service: homeassistant.turn_off
+    entity_id: script.restarthawemo
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/send_a_reminder/index.html b/cookbook/send_a_reminder/index.html new file mode 100644 index 0000000000..3b8c1e5fa8 --- /dev/null +++ b/cookbook/send_a_reminder/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Send a reminder - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Send a reminder +

+
+
+

Always forget to eat lunch? Let Home Assistant send you a reminder.

+

Add a notify platform of your choice.

+
notify:
+  - platform: xmpp
+    name: jabber
+    sender: YOUR_JID
+    password: YOUR_JABBER_ACCOUNT_PASSWORD
+    recipient: YOUR_RECIPIENT
+
+
+

and automation part to your configuration.yaml file.

+
automation:
+  - alias: Send message at a given time
+    trigger:
+      platform: time
+      hours: 12
+      minutes: 15
+      seconds: 0
+    action:
+      service: notify.jabber
+      data:
+        message: 'Time for lunch'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/sonos_say/index.html b/cookbook/sonos_say/index.html new file mode 100644 index 0000000000..df327e94c4 --- /dev/null +++ b/cookbook/sonos_say/index.html @@ -0,0 +1,241 @@ + + + + + + + + + Sonos say script to speak with text-to-speech - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Sonos say script to speak with text-to-speech +

+
+
+

Sonos say script to speak with text-to-speech

+

This script allows you to use TTS on Sonos.

+
script:
+  sonos_say:
+    alias: "Sonos TTS script"
+    sequence:
+     - service: media_player.sonos_snapshot
+       data_template:
+         entity_id: "{{ sonos_entity }}"
+     - service: media_player.sonos_unjoin
+       data_template:
+         entity_id: "{{ sonos_entity }}"
+     - service: media_player.volume_set
+       data_template:
+         entity_id: "{{ sonos_entity }}"
+         volume_level: "{{ volume }}"
+     - service: tts.voicerss_say
+       data_template:
+         entity_id: "{{ sonos_entity }}"
+         message: "{{ message }}"
+     - delay: "{{ delay }}"
+     - service: media_player.sonos_restore
+       data_template:
+         entity_id: "{{ sonos_entity }}"
+
+
+

We call this now with:

+
automation:
+  - alias: 'test'
+    trigger:
+      - platform: state
+        entity_id: input_boolean.mytest
+    action:   
+      - service: script.sonos_say
+        data:
+          sonos_entity: media_player.office
+          volume: 0.5
+          message: 'Your husband coming home!'
+          delay: '00:00:05'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/tls_domain_certificate/index.html b/cookbook/tls_domain_certificate/index.html new file mode 100644 index 0000000000..76c24de7c3 --- /dev/null +++ b/cookbook/tls_domain_certificate/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/cookbook/tls_self_signed_certificate/index.html b/cookbook/tls_self_signed_certificate/index.html new file mode 100644 index 0000000000..f471580d43 --- /dev/null +++ b/cookbook/tls_self_signed_certificate/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/cookbook/tor_configuration/index.html b/cookbook/tor_configuration/index.html new file mode 100644 index 0000000000..8d93bb2d95 --- /dev/null +++ b/cookbook/tor_configuration/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/cookbook/track_battery_level/index.html b/cookbook/track_battery_level/index.html new file mode 100644 index 0000000000..49ba143689 --- /dev/null +++ b/cookbook/track_battery_level/index.html @@ -0,0 +1,239 @@ + + + + + + + + + Track your battery level - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Track your battery level +

+
+
+

iOS Devices

+

If you have a device running iOS (iPhone, iPad, etc), The iCloud is gathering various details about your device including the battery level. To display it in the Frontend use a template sensor. You can also use the icon template option to create a dynamic icon that changes with the battery level.

+
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: >-
+            {%- if states.device_tracker.iphone.attributes.battery %}
+                {{ states.device_tracker.iphone.attributes.battery|round }}
+            {% else %}
+                {{ states.sensor.battery_iphone.state }}
+            {%- 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 %}
+
+
+

The else part is used to have the sensor keep its last state if the newest iCloud update doesn’t have any battery state in it (which happens sometimes). Otherwise the sensor will be blank.

+

Android and iOS Devices

+

While running the 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.

+
sensor:
+  - platform: mqtt
+    state_topic: "owntracks/username/deviceid"
+    name: "Battery Tablet"
+    unit_of_measurement: "%"
+    value_template: '{{ value_json.batt }}'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/cookbook/turn_on_light_for_10_minutes_when_motion_detected/index.html b/cookbook/turn_on_light_for_10_minutes_when_motion_detected/index.html new file mode 100644 index 0000000000..807ca9422b --- /dev/null +++ b/cookbook/turn_on_light_for_10_minutes_when_motion_detected/index.html @@ -0,0 +1,224 @@ + + + + + + + + + Turn on lights for 10 minutes after motion detected - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Turn on lights for 10 minutes after motion detected +

+
+
+

Turn on lights with a resetable off timer

+

This recipe will turn on a light when there is motion and turn off the light when ten minutes has passed without any motion events.

+
automation:
+- alias: Turn on kitchen light when there is movement
+  trigger:
+    platform: state
+    entity_id: sensor.motion_sensor
+    to: 'on'
+  action:
+    service: homeassistant.turn_on
+    entity_id: light.kitchen_light
+
+- alias: Turn off kitchen light 10 minutes after last movement
+  trigger:
+    platform: state
+    entity_id: sensor.motion_sensor
+    to: 'off'
+    for:
+      minutes: 10
+  action:
+    service: homeassistant.turn_off
+    entity_id: light.kitchen_light
+
+
+
+
+ +
+
+ + + + + + + diff --git a/credits_generator/README.md b/credits_generator/README.md deleted file mode 100644 index 986f0b4785..0000000000 --- a/credits_generator/README.md +++ /dev/null @@ -1,39 +0,0 @@ -credits_generator -================= - -This tool can be used to update the [Credits page for Home Assistant](https://home-assistant.io/developers/credits/). - -Setup ------ - -Fetch the dependencies with `npm`. -```bash -$ cd credits_generator -$ npm install -``` - -Usage ------ -Go to https://github.com/settings/tokens/new and generate a new GitHub personal access token. -Give the token any name and select the `public_repo` and `read:user` scopes. - - -Set the environment variable `GITHUB_TOKEN` to the new token. - -```bash -$ export GITHUB_TOKEN= -``` - -Run the script. - -```bash -$ node update_credits.js -``` - -Commit the changes (depending on our setup). - -```bash -$ git commit ../source/developers/credits.markdown -$ git push upstream -``` - diff --git a/credits_generator/credits.mustache b/credits_generator/credits.mustache deleted file mode 100644 index c2419f1c32..0000000000 --- a/credits_generator/credits.mustache +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Credits" -description: "Credits for the developers who contributed to Home Assistant." -date: {{ headerDate }} -sidebar: true -comments: false -sharing: true -footer: true ---- - -This page contains a list of people who have contributed in one way or another to Home Assistant. Hover over a username to see their contributions. - -### {% linkable_title Author %} - -- [{{fearlessLeader.info.name}} (@{{fearlessLeader.info.username}})](https://github.com/{{fearlessLeader.info.login}} "{{fearlessLeader.countString}}") - -### {% linkable_title Contributors %} - -(in alphabetical order) - -{{#allUsers}}- [{{info.name}} (@{{info.username}})](https://github.com/{{info.username}} "{{countString}}") -{{/allUsers}} - -This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know. - -This page was last updated {{ footerDate }}. diff --git a/credits_generator/package.json b/credits_generator/package.json deleted file mode 100644 index 42c6687b15..0000000000 --- a/credits_generator/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "credits_generator", - "version": "1.0.0", - "description": "A tool to generate the Home Assistant credits page", - "main": "update_credits.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Home Assistant Community", - "license": "Apache 2.0", - "dependencies": { - "async": "^2.1.4", - "github": "^8.1.0", - "moment-timezone": "^0.5.11", - "mu2": "^0.5.21" - } -} diff --git a/credits_generator/update_credits.js b/credits_generator/update_credits.js deleted file mode 100644 index 3cfab7a9e2..0000000000 --- a/credits_generator/update_credits.js +++ /dev/null @@ -1,160 +0,0 @@ -var fs = require('fs') - , async = require('async') - , GitHubApi = require('github') - , mu = require('mu2') - , moment = require('moment-timezone'); - -if(!process.env.GITHUB_TOKEN) { - console.error('You must set the GITHUB_TOKEN environment variable to a GitHub personal access token.'); - return; -} - -var organizationName = process.env.GITHUB_ORGANIZATION_NAME || 'home-assistant'; - -mu.root = __dirname; - -var github = new GitHubApi({ - headers: { 'user-agent': 'Home Assistant Contributors List Updater ' } -}); - -github.authenticate({ type: 'oauth', token: process.env.GITHUB_TOKEN }); - -var usersMap = {}; - -github.repos.getForOrg({ - org: organizationName, - type: 'public', - per_page: 100 -}, function(err, repos){ - var headerSource = (err && err.headers) ? err.headers : repos.meta; - var ratelimitLimit = Number(headerSource['x-ratelimit-limit']); - var ratelimitRemaining = Number(headerSource['x-ratelimit-remaining']); - console.log('Rate limits: '+ratelimitRemaining+'/'+ratelimitLimit, '(remaining/limit)'); - if(err) { - if(err.code == 403 && ratelimitRemaining == 0) { - var resetUnixTime = moment.unix(err.headers['x-ratelimit-reset']); - var resetTimeFormatted = resetUnixTime.format(); - var resetAt = moment().to(resetUnixTime); - console.error('Error when getting list of repos in org, because rate limits are exhausted. Rate limits reset', resetAt, 'from now ('+resetTimeFormatted+')'); - } else { - console.error('Error when attempting to get a list of all repos in org...', err.message); - } - return; - } - async.each(repos, function(repo, cb){ - github.repos.getContributors({ owner: organizationName, repo: repo.name, per_page: 100 }, function(err, contributors){ - getContributors(err, contributors, repo, cb); - }); - }, function(err){ - if(err){ - console.error('Error when iterating organization repos', err); - return; - } - console.log('Done getting contributors for '+repos.length+' found organization repos...'); - async.each(Object.keys(usersMap), function(login, cb){ - github.users.getForUser({username: login}, function(err, userInfo){ - if(err){ - console.error('Got error when get user details for', login, err); - cb(err); - return; - } - if (userInfo.name) { - userInfo.name = userInfo.name.replace(/^@/, '') - .replace(//g, '>') - .replace(/[\\`*_{}[\]()#+-.!~|]/g, '\\$&'); - } - usersMap[login].info.name = userInfo.name || userInfo.login; - usersMap[login].info.username = userInfo.login; - cb(); - }); - }, function(err){ - if(err){ - console.error('Got error when running', err); - return; - } else { - console.log('Building contributors!!!'); - buildContributors(); - } - }); - }); -}); - -function getContributors(err, res, repo, callback){ - if(err) { - console.error('Error when getting contributors', err); - callback(err); - return - } else { - console.log('Processing the '+res.length+' contributors to '+repo.name); - async.each(res, function(contributor, cb){ - if(!usersMap[contributor.login]) { - usersMap[contributor.login] = { - counts: {}, - info: {login: contributor.login, id: contributor.id} - }; - } - usersMap[contributor.login].counts[repo.name] = contributor.contributions; - cb(null); - }, function(){ - if (github.hasNextPage(res)) { - github.getNextPage(res, function(newErr, newContributors){ - getContributors(newErr, newContributors, repo, callback); - }); - } else { - callback(null); - } - }); - } -} - -function buildContributors(){ - var fearlessLeader = usersMap['balloob']; - fearlessLeader.countString = buildCountString(fearlessLeader.counts); - delete usersMap['balloob']; - var users = Object.keys(usersMap).map(function (key) { - var obj = usersMap[key]; - obj.countString = buildCountString(obj.counts); - return obj; - }).sort(function(a, b){ - var nameA = a.info.name.toLowerCase(); - var nameB = b.info.name.toLowerCase(); - if (nameA < nameB) { return -1; } - if (nameA > nameB) { return 1; } - return 0; - }); - var headerDate = moment().tz('UTC').format('YYYY-MM-DD HH:mm:ss ZZ'); - var footerDate = moment().tz('UTC').format('dddd, MMMM Do YYYY, h:mm:ss a zz'); - var output = ''; - mu.compileAndRender('credits.mustache', { - allUsers: users, - fearlessLeader: fearlessLeader, - headerDate: headerDate, - footerDate: footerDate - }).on('data', function (data) { - output += data.toString(); - }).on('end', function(){ - fs.writeFile('../source/developers/credits.markdown', output, function (writeErr) { - if (writeErr) { - console.log('Error when writing credits.markdown', writeErr); - } else { - console.log('Done getting user info, wrote credits.markdown file!'); - } - }); - }); -} - -function buildCountString(counts){ - var totalCommits = 0; - var countStrings = []; - Object.keys(counts).sort(function(a, b){ - return counts[b] - counts[a]; - }).forEach(function (countKey) { - var count = counts[countKey]; - var word = (count > 1) ? 'commits' : 'commit'; - totalCommits = totalCommits+count; - countStrings.push(count+' '+word+' to '+countKey); - }); - countStrings.unshift(totalCommits+' total commits to the home-assistant organization'); - return countStrings.join(', '); -} diff --git a/source/demo/core.js b/demo/core.js similarity index 100% rename from source/demo/core.js rename to demo/core.js diff --git a/source/demo/data.js b/demo/data.js similarity index 100% rename from source/demo/data.js rename to demo/data.js diff --git a/source/demo/favicon-192x192.png b/demo/favicon-192x192.png similarity index 100% rename from source/demo/favicon-192x192.png rename to demo/favicon-192x192.png diff --git a/source/demo/favicon-apple-180x180.png b/demo/favicon-apple-180x180.png similarity index 100% rename from source/demo/favicon-apple-180x180.png rename to demo/favicon-apple-180x180.png diff --git a/source/demo/favicon.ico b/demo/favicon.ico similarity index 100% rename from source/demo/favicon.ico rename to demo/favicon.ico diff --git a/source/demo/frontend.html b/demo/frontend.html similarity index 84% rename from source/demo/frontend.html rename to demo/frontend.html index e96a4c7a38..6cf41b7575 100644 --- a/source/demo/frontend.html +++ b/demo/frontend.html @@ -2,4 +2,4 @@ },_distributeDirtyRoots:function(){for(var e,t=this.shadyRoot._dirtyRoots,o=0,i=t.length;o0?~setTimeout(e,t):(this._twiddle.textContent=this._twiddleContent++,this._callbacks.push(e),this._currVal++)},cancel:function(e){if(e<0)clearTimeout(~e);else{var t=e-this._lastVal;if(t>=0){if(!this._callbacks[t])throw"invalid async handle: "+e;this._callbacks[t]=null}}},_atEndOfMicrotask:function(){for(var e=this._callbacks.length,t=0;t +}var r=window.requestAnimationFrame;window.requestAnimationFrame=function(t){return r(function(e){window.document.timeline._updateAnimationsPromises(),t(e),window.document.timeline._updateAnimationsPromises()})},e.AnimationTimeline=function(){this._animations=[],this.currentTime=void 0},e.AnimationTimeline.prototype={getAnimations:function(){return this._discardAnimations(),this._animations.slice()},_updateAnimationsPromises:function(){e.animationsWithPromises=e.animationsWithPromises.filter(function(t){return t._updatePromises()})},_discardAnimations:function(){this._updateAnimationsPromises(),this._animations=this._animations.filter(function(t){return"finished"!=t.playState&&"idle"!=t.playState})},_play:function(t){var i=new e.Animation(t,this);return this._animations.push(i),e.restartWebAnimationsNextTick(),i._updatePromises(),i._animation.play(),i._updatePromises(),i},play:function(t){return t&&t.remove(),this._play(t)}};var o=!1;e.restartWebAnimationsNextTick=function(){o||(o=!0,requestAnimationFrame(n))};var a=new e.AnimationTimeline;e.timeline=a;try{Object.defineProperty(window.document,"timeline",{configurable:!0,get:function(){return a}})}catch(t){}try{window.document.timeline=a}catch(t){}}(c,e,f),function(t,e,i){e.animationsWithPromises=[],e.Animation=function(e,i){if(this.id="",e&&e._id&&(this.id=e._id),this.effect=e,e&&(e._animation=this),!i)throw new Error("Animation with null timeline is not supported");this._timeline=i,this._sequenceNumber=t.sequenceNumber++,this._holdTime=0,this._paused=!1,this._isGroup=!1,this._animation=null,this._childAnimations=[],this._callback=null,this._oldPlayState="idle",this._rebuildUnderlyingAnimation(),this._animation.cancel(),this._updatePromises()},e.Animation.prototype={_updatePromises:function(){var t=this._oldPlayState,e=this.playState;return this._readyPromise&&e!==t&&("idle"==e?(this._rejectReadyPromise(),this._readyPromise=void 0):"pending"==t?this._resolveReadyPromise():"pending"==e&&(this._readyPromise=void 0)),this._finishedPromise&&e!==t&&("idle"==e?(this._rejectFinishedPromise(),this._finishedPromise=void 0):"finished"==e?this._resolveFinishedPromise():"finished"==t&&(this._finishedPromise=void 0)),this._oldPlayState=this.playState,this._readyPromise||this._finishedPromise},_rebuildUnderlyingAnimation:function(){this._updatePromises();var t,i,n,r,o=!!this._animation;o&&(t=this.playbackRate,i=this._paused,n=this.startTime,r=this.currentTime,this._animation.cancel(),this._animation._wrapper=null,this._animation=null),(!this.effect||this.effect instanceof window.KeyframeEffect)&&(this._animation=e.newUnderlyingAnimationForKeyframeEffect(this.effect),e.bindAnimationForKeyframeEffect(this)),(this.effect instanceof window.SequenceEffect||this.effect instanceof window.GroupEffect)&&(this._animation=e.newUnderlyingAnimationForGroup(this.effect),e.bindAnimationForGroup(this)),this.effect&&this.effect._onsample&&e.bindAnimationForCustomEffect(this),o&&(1!=t&&(this.playbackRate=t),null!==n?this.startTime=n:null!==r?this.currentTime=r:null!==this._holdTime&&(this.currentTime=this._holdTime),i&&this.pause()),this._updatePromises()},_updateChildren:function(){if(this.effect&&"idle"!=this.playState){var t=this.effect._timing.delay;this._childAnimations.forEach(function(i){this._arrangeChildren(i,t),this.effect instanceof window.SequenceEffect&&(t+=e.groupChildDuration(i.effect))}.bind(this))}},_setExternalAnimation:function(t){if(this.effect&&this._isGroup)for(var e=0;e diff --git a/source/demo/images/config_philips_hue.jpg b/demo/images/config_philips_hue.jpg similarity index 100% rename from source/demo/images/config_philips_hue.jpg rename to demo/images/config_philips_hue.jpg diff --git a/source/demo/images/thrones.jpg b/demo/images/thrones.jpg similarity index 100% rename from source/demo/images/thrones.jpg rename to demo/images/thrones.jpg diff --git a/source/demo/index.html b/demo/index.html similarity index 100% rename from source/demo/index.html rename to demo/index.html diff --git a/source/demo/manifest.json b/demo/manifest.json similarity index 100% rename from source/demo/manifest.json rename to demo/manifest.json diff --git a/source/demo/panels/ha-panel-dev-event.html b/demo/panels/ha-panel-dev-event.html similarity index 100% rename from source/demo/panels/ha-panel-dev-event.html rename to demo/panels/ha-panel-dev-event.html diff --git a/demo/panels/ha-panel-dev-info.html b/demo/panels/ha-panel-dev-info.html new file mode 100644 index 0000000000..e255ca2f83 --- /dev/null +++ b/demo/panels/ha-panel-dev-info.html @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/source/demo/panels/ha-panel-dev-service.html b/demo/panels/ha-panel-dev-service.html similarity index 100% rename from source/demo/panels/ha-panel-dev-service.html rename to demo/panels/ha-panel-dev-service.html diff --git a/source/demo/panels/ha-panel-dev-state.html b/demo/panels/ha-panel-dev-state.html similarity index 100% rename from source/demo/panels/ha-panel-dev-state.html rename to demo/panels/ha-panel-dev-state.html diff --git a/source/demo/panels/ha-panel-dev-template.html b/demo/panels/ha-panel-dev-template.html similarity index 92% rename from source/demo/panels/ha-panel-dev-template.html rename to demo/panels/ha-panel-dev-template.html index 5c7678632c..22e214a759 100644 --- a/source/demo/panels/ha-panel-dev-template.html +++ b/demo/panels/ha-panel-dev-template.html @@ -1,2 +1,2 @@ \ No newline at end of file + clear: both;white-space:pre-wrap}.rendered.error{color:red}
Templates

Templates are rendered using the Jinja2 template engine with some Home Assistant specific extensions.

[[processed]]
\ No newline at end of file diff --git a/source/demo/panels/ha-panel-history.html b/demo/panels/ha-panel-history.html similarity index 100% rename from source/demo/panels/ha-panel-history.html rename to demo/panels/ha-panel-history.html diff --git a/source/demo/panels/ha-panel-iframe.html b/demo/panels/ha-panel-iframe.html similarity index 100% rename from source/demo/panels/ha-panel-iframe.html rename to demo/panels/ha-panel-iframe.html diff --git a/source/demo/panels/ha-panel-logbook.html b/demo/panels/ha-panel-logbook.html similarity index 100% rename from source/demo/panels/ha-panel-logbook.html rename to demo/panels/ha-panel-logbook.html diff --git a/source/demo/panels/ha-panel-map.html b/demo/panels/ha-panel-map.html similarity index 100% rename from source/demo/panels/ha-panel-map.html rename to demo/panels/ha-panel-map.html diff --git a/source/demo/webcam.jpg b/demo/webcam.jpg similarity index 100% rename from source/demo/webcam.jpg rename to demo/webcam.jpg diff --git a/source/demo/webcomponents-lite.min.js b/demo/webcomponents-lite.min.js similarity index 100% rename from source/demo/webcomponents-lite.min.js rename to demo/webcomponents-lite.min.js diff --git a/details/database/index.html b/details/database/index.html new file mode 100644 index 0000000000..cd127f3ee0 --- /dev/null +++ b/details/database/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/details/updater/index.html b/details/updater/index.html new file mode 100644 index 0000000000..944565c969 --- /dev/null +++ b/details/updater/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/details/webserver/index.html b/details/webserver/index.html new file mode 100644 index 0000000000..7c4d205302 --- /dev/null +++ b/details/webserver/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/developers/add_new_platform/index.html b/developers/add_new_platform/index.html new file mode 100644 index 0000000000..aad4c19cc0 --- /dev/null +++ b/developers/add_new_platform/index.html @@ -0,0 +1,289 @@ + + + + + + + + + Adding support for a new platform - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Adding support for a new platform +

+
+
+

Components that interact with devices are called “Entity Components.” They are structured in core and platform logic, which means different brands can use the same logic to handle a light.

+

For example, the built-in switch component consists of various platforms in homeassistant/components/switch/. The file __init__.py contains the core logic of all platforms and the vendor_name.py files contain only the relevant platform code.

+

If you’re planning to add support for a new type of device to an existing component, you can get away with only writing platform logic. Have a look at how the component works with other platforms and create a similar file for the platform that you want to add:

+ +

Interfacing with devices

+

One Home Assistant rule is that platform logic should never interface directly with devices. Instead, use a third-party Python 3 library. This way, Home Assistant can share code with the Python community and keep the project maintainable.

+

To integrate the third-party library, create an Entity class for your device. Entities are Home Assistant’s representations of lights, switches, sensors, etc. and are derived from the Entity Abstract Class. This abstract class contains logic for integrating most standard features into your entities, such as visibility, entity IDs, updates, and much more.

+

Requirements and dependencies

+

Platforms can specify dependencies and requirements the same way as components:

+
REQUIREMENTS = ['some-package==2.0.0', 'some-other-package==2.5.0']
+DEPENDENCIES = ['mqtt']
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/api/index.html b/developers/api/index.html new file mode 100644 index 0000000000..d09e5be307 --- /dev/null +++ b/developers/api/index.html @@ -0,0 +1,282 @@ + + + + + + + + + API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/developers/architecture/index.html b/developers/architecture/index.html new file mode 100644 index 0000000000..fb4966eddb --- /dev/null +++ b/developers/architecture/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Architecture - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Architecture +

+
+
+

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.

+

For more information about each part in this overview, check out our blog. Here’s the tl;dr version of the blog:

+
    +
  • Home Control is responsible for collecting information and controlling devices.
  • +
  • Home Automation triggers commands based on user configurations.
  • +
  • Smart Home triggers commands based on previous behavior.
  • +
+

+ + Home Automation landscape + + Overview of the home automation landscape +

+

The Home Assistant core is responsible for Home Control. Home Assistant contains four parts which make this possible:

+
    +
  • Event Bus: facilitates the firing and listening of events – the beating heart of Home Assistant.
  • +
  • State Machine: keeps track of the states of things and fires a state_changed event when a state has been changed.
  • +
  • Service Registry: listens on the event bus for call_service events and allows other code to register services.
  • +
  • Timer: sends a time_changed event every 1 second on the event bus.
  • +
+

+ + + + Overview of the Home Assistant core architecture +

+
+
+ +
+
+ + + + + + + diff --git a/developers/architecture_components/index.html b/developers/architecture_components/index.html new file mode 100644 index 0000000000..c5036d77d4 --- /dev/null +++ b/developers/architecture_components/index.html @@ -0,0 +1,311 @@ + + + + + + + + + Components Architecture - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Components Architecture +

+
+
+

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.

+

+Diagram showing interaction between components and the Home Assistant core. +Diagram showing interaction between components and the Home Assistant core +

+

There are two types of components within Home Assistant: components that interact with an Internet of Things domain, and components that respond to events that happen within Home Assistant. Read on to learn about each type!

+

Components that interact with an Internet-of-Things domain

+

These components track devices within a specific domain and consist of a core part and platform-specific logic. These components make their information available via the State Machine and the Event Bus. The components also register services in the Service Registry to expose control of the devices.

+

For example, the built-in switch component is responsible for interaction with different types of switches. A platform provides support for a particular kind or brand of device. For example, a switch could use a WeMo or Orvibo platform and a light component might interact with the Hue or LIFX platform.

+

If you want to add support for a new platform, check out the add new platform section.

+

Components that respond to events that happen within Home Assistant

+

These components provide small pieces of home automation logic or involve services that do common tasks within your house.

+

For example, the device_sun_light_trigger component 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:

+
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
+
+
+
In the event that the combined state of all tracked devices changes to 'Not Home':
+  If the lights are on:
+    Turn off the lights
+
+
+
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 for a comprehensive example of a home automation component.

+

The full picture

+

When we put all the different pieces of Home Assistant together, it’s a close match for the initial home automation overview sketch. The smart home AI has not been implemented yet, so it’s not included in this picture.

+

+ + + + Overview of the full Home Assistant architecture with a couple of loaded components and platforms +

+

The platform logic for components uses third-party Python libraries to communicate with the devices. Through this, we can leverage some of the best libraries in the Python community.

+
+
+ +
+
+ + + + + + + diff --git a/developers/asyncio/index.html b/developers/asyncio/index.html new file mode 100644 index 0000000000..2666a6c6ec --- /dev/null +++ b/developers/asyncio/index.html @@ -0,0 +1,280 @@ + + + + + + + + + Asynchronous Programming - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Asynchronous Programming +

+
+
+

On September 29, 2016 we released Home Assistant 0.29 as part of our bi-weekly release schedule. This release introduced a complete overhaul of the core spearheaded by Ben Bangert.

+

The old core was set up like a “traditional” threaded application. Each resource that was not thread safe (ie. the state of entities) would be protected by a lock. This caused a lot of waiting and potential inconsistency because a task could now end up waiting halfway through its job until some resource got freed.

+

Our new core is based on an Python’s built-in asyncio module. Instead of having all threads have access to the core API objects, access is now limited to a special thread called the event loop. All components will now schedule themselves as a task to be executed by the event loop. This gives us the guarantee that only one task is executed at once, meaning we no longer need any locks.

+

The only problem with running everything inside the event loop is when a task is doing blocking I/O, what most third-party Python libraries are doing. For example while requesting new information from a device, the core will stop running until we get a response from the device. To handle this, a task is able to suspend itself until the response is available after which it will be enqueued for the event loop to process the result.

+

For a task to be able to suspend itself, all code that it calls has to have this capability added. This means in practice that each device integration will need a full rewrite of the library that offers the integration! As this is not something that can be achieved, ever, a 100% backwards compatible API has been added so that no platform will require updating.

+

The backwards compatible API works by scheduling a task from a different thread and blocking that thread until the task has been processed by the event loop.

+

Next step: asyncio 101 »

+
+
+ +
+
+ + + + + + + diff --git a/developers/asyncio_101/index.html b/developers/asyncio_101/index.html new file mode 100644 index 0000000000..c34b5fd42b --- /dev/null +++ b/developers/asyncio_101/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Asyncio 101 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/developers/asyncio_categorizing_functions/index.html b/developers/asyncio_categorizing_functions/index.html new file mode 100644 index 0000000000..8fd8932931 --- /dev/null +++ b/developers/asyncio_categorizing_functions/index.html @@ -0,0 +1,317 @@ + + + + + + + + + Categorizing Functions - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Categorizing Functions +

+
+
+

A piece of work within Home Assistant is represented by a function that will be invoked. It will either run inside our event loop or inside our thread pool, depending on if it is async safe.

+

Home Assistant uses the convention that all functions that must be run from within the event loop are prefixed with async_.

+

The coroutine function

+

Coroutines are special functions based on Python’s generators syntax which allows them to suspend execution while waiting on a result.

+

Invoking a coroutine function will return a Generator object back, but will not actually begin execution. This object will execute the task when it is either yielded from (from within another coroutine) or it is scheduled on the event loop.

+

To declare a function a coroutine, import the coroutine annotation from the asyncio package and annotate your function.

+
import asyncio
+
+@asyncio.coroutine
+def async_look_my_coroutine(target):
+    result = yield from entity.async_turn_on()
+    if result:
+        print("hello {}".format(target))
+
+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.

+

The callback function

+

This is a normal function that is considered safe to be run from within the event loop. A callback is unable to suspend itself and thus cannot do any I/O or call a coroutine. A callback is capable of scheduling a new task but it will not be able to wait for the results.

+

To declare a function as a callback, import the callback annotation from the core package and annotate your function.

+

A common use case for a callback in Home Assistant is as a listener for an event or a service call. It can process the incoming information and then schedule the right calls to be made. Example from the automation component.

+
from homeassistant.core import callback
+
+@callback
+def async_trigger_service_handler(service_call):
+    """Handle automation trigger service calls."""
+    vars = service_call.data.get(ATTR_VARIABLES)
+    for entity in component.async_extract_from_service(service_call):
+        hass.loop.create_task(entity.async_trigger(vars, True))
+
+
+

In this example, entity.async_trigger is a coroutine function. Invoking the coroutine function will return a coroutine task. The passed in parameters will be used when the task gets executed.

+

To execute the task we have to schedule it for execution on the event loop. This is done by calling hass.loop.create_task.

+

Why even have callbacks?

+

You might wonder, if a coroutine can do everything a callback can do, why even have a callback. The reason is performance and better state consistency of the core API objects.

+

When coroutine A waits for coroutine B, it will suspend itself and schedule a new task to run B. This means that the event loop is now running A, B and then A again. If B is a callback, A will never have to suspend itself and thus the event loop is just running A. The consistency implication is that other events queued to run on the event loop continue to wait until callbacks complete, but will be interleaved when yielding to another coroutine.

+

Event loop and thread safe

+

These are functions that are safe to run both in a thread and inside the event loop. These functions are usually performing a computation or transform data in memory. Anything that does I/O does not fall under this category. Many standard library functions fall in this category. For example generating the sum of a set of numbers using sum or merging two dictionaries.

+

There is no special annotation to mark functions as part of this category and care should be taken when using these functions from inside the event loop. When in doubt, look at their implementation.

+

Other functions

+

These are all the functions that did not fit in the previous categories. These functions are either thread-safe or not considered safe to be run within the event loop. These are functions that use sleep, or perform I/O.

+

There is no special annotation necessary to be considered part of this category.

+

Next step: Working with Async »

+
+
+ +
+
+ + + + + + + diff --git a/developers/asyncio_misc/index.html b/developers/asyncio_misc/index.html new file mode 100644 index 0000000000..cba442f1ea --- /dev/null +++ b/developers/asyncio_misc/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Miscellaneous Async - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Miscellaneous Async +

+
+
+

What about ‘async’ and ‘await’ syntax?

+

Python 3.5 introduced new syntax to formalize the asynchronous pattern. This is however not compatible with Python 3.4. The minimum required Python version for Home Assistant is based on the Python version shipped with Debian stable, which is currently 3.4.2.

+

For more information, Brett Cannon wrote an excellent breakdown on ‘async’ and ‘await’ syntax and how asynchronous programming works.

+

Acknowledgements

+

Huge thanks to Ben Bangert for starting the conversion of the core to async, guiding other contributors while taking their first steps with async programming and peer reviewing this documentation.

+
+
+ +
+
+ + + + + + + diff --git a/developers/asyncio_working_with_async/index.html b/developers/asyncio_working_with_async/index.html new file mode 100644 index 0000000000..a6389a80c5 --- /dev/null +++ b/developers/asyncio_working_with_async/index.html @@ -0,0 +1,379 @@ + + + + + + + + + Working with Async - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Working with Async +

+
+
+

Although we have a backwards compatible API, using the async core directly will be a lot faster. Most core components have already been rewritten to leverage the async core. This includes the EntityComponent helper (foundation of light, switch, etc), scripts, groups and automation.

+

Interacting with the core

+

All methods in the Home Assistant core are implemented in two flavors: an async version and a version to be called from other threads. The versions for other are merely wrappers that call the async version in a threadsafe manner using the available async utilities.

+

So if you are making calls to the core (the hass object) from within a callback or coroutine, use the methods that start with async_. If you need to call an async_ function that is a coroutine, your task must also be a coroutine.

+

Implementing an async component

+

To make a component async, implement an async_setup.

+
def setup(hass, config):
+    # Setup your component outside of the event loop.
+
+
+

Will turn into:

+
import asyncio
+
+@asyncio.coroutine
+def async_setup(hass, config):
+    # Setup your component inside of the event loop.
+
+
+

Implementing an async platform

+

For platforms we support async setup. Instead of setup_platform you need to have a coroutine async_setup_platform.

+
setup_platform(hass, config, add_entities, discovery_info=None):
+    # Setup your platform outside of the event loop.
+
+
+

Will turn into:

+
import asyncio
+
+@asyncio.coroutine
+def async_setup_platform(hass, config, async_add_entities,
+                         discovery_info=None):
+    # 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.

+

Implementing an async entity

+

You can make your entity async friendly by converting your update method to be async. This requires the dependency of your entities to also be async friendly!

+
class MyEntity(Entity):
+    def update(self):
+        """Retrieve latest state."""
+        self._state = fetch_state()
+
+
+

Will turn into:

+
import asyncio
+
+class MyEntity(Entity):
+    @asyncio.coroutine
+    def async_update(self):
+        """Retrieve latest state."""
+        self._state = yield from async_fetch_state()
+
+
+

Make sure that all properties defined on your entity do not result in I/O being done. All data has to be fetched inside the update method and cached on the entity. This is because these properties are read from within the event loop and thus doing I/O will result in the core of Home Assistant waiting until your I/O is done.

+

Calling async functions from threads

+

Sometimes it will happen that you’re in a thread and you want to call a function that is only available as async. Home Assistant includes a few async helper utilities to help with this.

+

In the following example, say_hello will schedule async_say_hello and block till the function has run and get the result back.

+
from homeassistant.util.async import run_callback_threadsafe
+
+def say_hello(hass, target):
+    return run_callback_threadsafe(
+        hass.loop, async_say_hello, target).result()
+
+def async_say_hello(hass, target):
+    return "Hello {}!".format(target)
+
+
+

Dealing with passed in functions

+

If your code takes in functions from other code, you will not know which category the function belongs to and how they should be invoked. This usually only occurs if your code supplies an event helper like mqtt.async_subscribe or track_state_change_listener.

+

To help with this, there are two helper methods on the hass object that you can call from inside the event loop:

+

hass.async_run_job

+

Use this method if the function should be called as soon as possible. This will call callbacks immediately, schedule coroutines for execution on the event loop and schedule other functions to be run inside the thread pool.

+ + + + + + + + + + + + + + + +
CallbackCall immediately.
CoroutineSchedule for execution on the event loop.
Other functionsSchedule for execution in the thread pool.
+

hass.async_add_job

+

Use this method if the function should be called but not get priority over already scheduled calls.

+ + + + + + + + + + + + + + + +
CallbackSchedule for execution on the event loop.
CoroutineSchedule for execution on the event loop.
Other functionsSchedule for execution in the thread pool.
+

Next step: Miscellaneous »

+
+
+ +
+
+ + + + + + + diff --git a/developers/cla/index.html b/developers/cla/index.html new file mode 100644 index 0000000000..a465e736ce --- /dev/null +++ b/developers/cla/index.html @@ -0,0 +1,303 @@ + + + + + + + + + Contributor License Agreement - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Contributor License Agreement +

+
+
+

Contributor License Agreement

+
By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+    have the right to submit it under the Apache 2.0 license; or
+
+(b) The contribution is based upon previous work that, to the best
+    of my knowledge, is covered under an appropriate open source
+    license and I have the right under that license to submit that
+    work with modifications, whether created in whole or in part
+    by me, under the Apache 2.0 license; or
+
+(c) The contribution was provided directly to me by some other
+    person who certified (a), (b) or (c) and I have not modified
+    it.
+
+(d) I understand and agree that this project and the contribution
+    are public and that a record of the contribution (including all
+    personal information I submit with it) is maintained indefinitely
+    and may be redistributed consistent with this project or the open 
+    source license(s) involved.
+
+
+

Attribution

+

The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the Apache 2.0 license +and not mention sign-off.

+

Signing

+

If you have not signed the CLA and you submit a pull request to a repository under the Home Assistant organization, a link will be automatically generated. Just follow the link and the instructions in the link.

+

Adoption

+

This Contributor License Agreement (CLA) was first announced on January 21st, 2017 in this blog post and adopted January 28th, 2017.

+
+
+ +
+
+ + + + + + + diff --git a/developers/cla_sign/index.html b/developers/cla_sign/index.html new file mode 100644 index 0000000000..e36def72cf --- /dev/null +++ b/developers/cla_sign/index.html @@ -0,0 +1,737 @@ + + + + + + + + + CLA Signature - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CLA Signature +

+
+
+ +
+
+

Please wait while we complete authentication and load data from GitHub...

+
+
+
+
+ + myself + my company +
+
+ + +
+
+ + +
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+
+

Thanks!

+

Thank you for signing the Home Assistant Contributor license agreement. We are now redirecting you back to your pull request.

+
+ + + + + +
+
+ +
+
+ + + + + + + diff --git a/developers/cla_sign_start/index.html b/developers/cla_sign_start/index.html new file mode 100644 index 0000000000..05416629ce --- /dev/null +++ b/developers/cla_sign_start/index.html @@ -0,0 +1,288 @@ + + + + + + + + + CLA Login - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ CLA Login +

+
+
+

Please wait while we begin the signature process...

+
+
+ + + +
+
+ +
+
+ + + + + + + diff --git a/developers/code_of_conduct/index.html b/developers/code_of_conduct/index.html new file mode 100644 index 0000000000..f2154813c0 --- /dev/null +++ b/developers/code_of_conduct/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/developers/code_review_component/index.html b/developers/code_review_component/index.html new file mode 100644 index 0000000000..6f79f31957 --- /dev/null +++ b/developers/code_review_component/index.html @@ -0,0 +1,297 @@ + + + + + + + + + Checklist for creating a component - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Checklist for creating a component +

+
+
+

A checklist of things to do when you’re adding a new component.

+

+Not all existing platforms follow the requirements in this checklist. This cannot be used as a reason to not follow them! +

+

1. Requirements

+
    +
  1. Requirement version pinned: REQUIREMENTS = ['phue==0.8.1']
  2. +
  3. We no longer want requirements hosted on GitHub. Please upload to PyPi.
  4. +
  5. Requirements should only be imported inside functions. This is necessary because requirements are installed on the fly.
  6. +
+

2. Configuration

+
    +
  1. Voluptuous schema present for config validation
  2. +
  3. Default parameters specified in voluptuous schema, not in setup(…)
  4. +
  5. Schema using as many generic config keys as possible from homeassistant.const
  6. +
  7. If your component has platforms, define a PLATFORM_SCHEMA instead of a CONFIG_SCHEMA.
  8. +
  9. If using a PLATFORM_SCHEMA to be used with EntityComponent, import base from homeassistant.helpers.config_validation
  10. +
  11. Never depend on users adding things to customize to configure behavior inside your component.
  12. +
+

3. Component/platform communication

+
    +
  1. If you need to share global data with platforms, use the dictionary hass.data. hass.data[DATA_XY] while XY is the component is preferred over hass.data[DOMAIN].
  2. +
  3. If the component fetches data that causes its related platform entities to update, you can notify them using the dispatcher code in homeassistant.helpers.dispatcher.
  4. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/code_review_platform/index.html b/developers/code_review_platform/index.html new file mode 100644 index 0000000000..4470471056 --- /dev/null +++ b/developers/code_review_platform/index.html @@ -0,0 +1,339 @@ + + + + + + + + + Checklist for creating a platform - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Checklist for creating a platform +

+
+
+

A checklist of things to do when you’re adding a new platform.

+

+Not all existing platforms follow the requirements in this checklist. This cannot be used as a reason to not follow them! +

+

1. Requirements

+
    +
  1. Requirement version should be pinned: REQUIREMENTS = ['phue==0.8.1']
  2. +
  3. We no longer want requirements hosted on GitHub. Please upload to PyPi.
  4. +
  5. Requirements should only be imported inside functions. This is necessary because requirements are installed on the fly.
  6. +
+

2. Dependencies

+
    +
  1. If you depend on a component for the connection, add it to your dependencies: DEPENDENCIES = ['nest']
  2. +
+

3. Configuration

+
    +
  1. Voluptuous schema present for config validation
  2. +
  3. Voluptuous schema extends schema from component
    (e.g. light.hue.PLATFORM_SCHEMA extends light.PLATFORM_SCHEMA)
  4. +
  5. Default parameters specified in voluptuous schema, not in setup_platform(…)
  6. +
  7. Your PLATFORM_SCHEMA should use as many generic config keys as possible from homeassistant.const +
    import voluptuous as vol
    +
    +from homeassistant.const import CONF_FILENAME, CONF_HOST
    +from homeassistant.components.light import PLATFORM_SCHEMA
    +import homeassistant.helpers.config_validation as cv
    +
    +CONF_ALLOW_UNREACHABLE = 'allow_unreachable'
    +DEFAULT_UNREACHABLE = False
    +
    +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    +    vol.Required(CONF_HOST): cv.string,
    +    vol.Optional(CONF_ALLOW_UNREACHABLE,
    +                default=DEFAULT_UNREACHABLE): cv.boolean,
    +    vol.Optional(CONF_FILENAME): cv.string,
    +})
    +
    +
    +
  8. +
  9. Never depend on users adding things to customize to configure behavior inside your platform.
  10. +
+

4. Setup Platform

+
    +
  1. Test if passed in info (user/pass/host etc.) works.
  2. +
  3. Group your calls to add_devices if possible.
  4. +
  5. If platform adds extra services, format should be <component>.<platform>_<service name>.
  6. +
+

5. Entity

+
    +
  1. Extend entity from component, e.g. class HueLight(Light)
  2. +
  3. Do not call update() in constructor, use add_devices(devices, True) instead.
  4. +
  5. Do not do any I/O inside properties. Cache values inside update() instead.
  6. +
  7. The state and/or attributes should not contain relative time since something happened. Instead it should store UTC timestamps.
  8. +
+

6. Communication with devices/services

+
    +
  1. All API specific code has to be part of a third party library hosted on PyPi. Home Assistant should only interact with objects and not make direct calls to the API.
  2. +
+
# bad
+status = requests.get(url('/status'))
+
+# good
+from phue import Bridge
+bridge = Bridge()
+status = bridge.status()
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/component_deps_and_reqs/index.html b/developers/component_deps_and_reqs/index.html new file mode 100644 index 0000000000..28347adfb8 --- /dev/null +++ b/developers/component_deps_and_reqs/index.html @@ -0,0 +1,297 @@ + + + + + + + + + Requirements & Dependencies - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Requirements & Dependencies +

+
+
+

Home Assistant allows components and platforms to specify their dependencies and requirements using the variables DEPENDENCIES and REQUIREMENTS. Both are lists that contain strings.

+

Dependencies

+

Dependencies are other Home Assistant components that should be setup before the platform is loaded. An example is the MQTT sensor component, which requires an active connection to an MQTT broker. If Home Assistant is unable to load and setup the MQTT component, it will not setup the MQTT sensor component.

+
DEPENDENCIES = ['mqtt']
+
+
+

Requirements

+

Requirements are Python libraries or modules that you would normally install using pip for your component. Home Assistant will try to install the requirements into the deps subdirectory of the Home Assistant configuration directory if you are not using a venv or in something like path/to/venv/lib/python3.6/site-packages if you running in a virtual environment. This will make sure that all requirements are present at startup. If steps fails like missing packages for the compilation of a module or other install errors, the component will fail to load.

+

Requirements is a list of strings. Each entry is a pip compatible string. For example, the media player Cast platform depends on the Python package PyChromecast v0.6.12:

+
REQUIREMENTS = ['pychromecast==0.6.12']
+
+
+

During development of a component, it can be useful to test against different versions of a requirement. This can be done in two steps, using pychromecast as an example:

+
    +
  • pip install pychromecast==0.6.13 --target ~/.homeassistant/deps
  • +
  • hass --skip-pip
  • +
+

This will use the specified version, and prevent Home Assistant from trying to override it with what is currently in REQUIREMENTS.

+

If you need to make changes to a requirement to support your component, it’s also possible to pip install from a checkout of the requirement.

+
    +
  • git clone https://github.com/balloob/pychromecast.git
  • +
  • pip install ./pychromecast
  • +
  • hass --skip-pip
  • +
+
+
+ +
+
+ + + + + + + diff --git a/developers/component_discovery/index.html b/developers/component_discovery/index.html new file mode 100644 index 0000000000..3cf6776d92 --- /dev/null +++ b/developers/component_discovery/index.html @@ -0,0 +1,312 @@ + + + + + + + + + Component Discovery - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Component Discovery +

+
+
+

+This option is only available for built-in components. +

+

Home Assistant has a discovery service running in the background to discover new devices. Whenever a new device is discovered, a SERVICE_DISCOVERED event will be fired with the found service and the information. The discovery component has some knowledge about which components handle which type of services and will ensure those are loaded and listening before firing the SERVICE_DISCOVERED event.

+

Add discovery instructions

+

Device discovery for Home Assistant has been extracted into an external library called NetDisco. This library is integrated using the discovery component and scans the network in intervals for uPnP and zeroconf/mDNS services.

+

To have your device be discovered, you will have to extend the NetDisco library to be able to find your device. This is done by adding a new discoverable. See the repository for examples of existing discoverable.

+

Listening to SERVICE_DISCOVERED events

+

From your component, you will have to set up the listening for specific services. Given below is an example how one would listen for a discovered AwesomeDevice:

+
from homeassistant.components.discovery import SERVICE_AWESOMEDEVICE
+from homeassistant.helpers import discovery
+
+DOMAIN = 'awesomedevice'
+
+DEPENDENCIES = ['http']
+
+def setup(hass, config):
+    cfg = config.get(DOMAIN)
+
+    def device_discovered(service, info):
+        """ Called when a Awesome device has been discovered. """
+        print("Discovered a new Awesome device: {}".format(info))
+
+    discovery.listen(
+        hass, SERVICE_AWESOMEDEVICE, device_discovered)
+
+    return True
+
+
+

Auto-loading your component upon discovery

+

The discovery component is capable of setting up your components before firing the EVENT_PLATFORM_DISCOVERED event. To do this you will have to update the SERVICE_HANDLERS constant in the discovery component:

+
SERVICE_AWESOMEDEVICE = 'awesomedevice'
+
+SERVICE_HANDLERS = {
+    ...
+    SERVICE_AWESOMEDEVICE: ('awesomedevice', None),
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/component_events/index.html b/developers/component_events/index.html new file mode 100644 index 0000000000..af27fd333a --- /dev/null +++ b/developers/component_events/index.html @@ -0,0 +1,274 @@ + + + + + + + + + Handling events - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Handling events +

+
+
+

Home Assistant has different ways of responding to events that occur in Home Assistant. These have been organized in helper methods. Examples are track_state_change, track_point_in_time, track_time_change.

+
+
+ +
+
+ + + + + + + diff --git a/developers/component_generic_discovery/index.html b/developers/component_generic_discovery/index.html new file mode 100644 index 0000000000..0d83d33e9b --- /dev/null +++ b/developers/component_generic_discovery/index.html @@ -0,0 +1,324 @@ + + + + + + + + + Generic Platform Discovery - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Generic Platform Discovery +

+
+
+

New controller or hub components often need to add platforms in sub-components (i.e. Lights & Switches) without additional configuration. +This can be achieved using the load_platform or async_load_platform methods from homeassistant.helpers.discovery:

+
def load_platform(hass, component, platform, discovered=None, hass_config=None)
+
+
+

From more info on how this works, refer to the load_platform method.

+

Example

+

Say you need to implement your new MyFlashyHub that controls both Switches & Lights, you can follow these steps:

+

Configuration required for your new hub component:

+
myflashyhub:
+   example: setting
+
+
+

The source for your component can be located in your configuration directory for now:

+
~/.homeassistant/custom_components/myflashyhub.py
+~/.homeassistant/custom_components/light/myflashyhub.py
+~/.homeassistant/custom_components/switch/myflashyhub.py
+
+
+

In the hub component myflashyhub.py you can call your light and switch components. To pass any non-serializable information to the platforms in the sub-component, you can use a global variable.

+
from homeassistant.helpers.discovery import load_platform
+DOMAIN = 'myflashyhub'
+
+DATA_MFH = 'MFH'
+
+def setup(hass, config):
+    """Your controller/hub specific code."""
+    hass.data[DATA_MFH] = SomeObjectToInitialiseGlobal()
+
+    #--- snip ---
+    load_platform(hass, 'light', DOMAIN)
+    load_platform(hass, 'switch', DOMAIN, {'optional': 'arguments'})
+
+
+

Add your custom device specific code to the setup_platform method in light/myflashyhub.py and switch/myflashyhub.

+
import custom_components.myflashyhub as myflashyhub
+
+# 'switch' will receive discovery_info={'optional': 'arguments'} 
+# as passed in above. 'light' will receive discovery_info=None
+def setup_platform(hass, config, add_devices, discovery_info=None):
+    """Your switch/light specific code."""
+    # You can now use hass.data[myflashyhub.DATA_MFH]
+
+
+

The load_platform method allows the platforms to be loaded without the need for any additional platform entries in your configuration.yaml file, which normally would have been:

+
#light:
+#  platform: myflashyhub
+#switch:
+#  platform: myflashyhub
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/component_initialization/index.html b/developers/component_initialization/index.html new file mode 100644 index 0000000000..35315b9d7a --- /dev/null +++ b/developers/component_initialization/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/developers/component_loading/index.html b/developers/component_loading/index.html new file mode 100644 index 0000000000..5481287c72 --- /dev/null +++ b/developers/component_loading/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Loading your components - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Loading your components +

+
+
+

A component will be loaded on start if a section (ie. light:) for it exists in the config file. A component can also be loaded if another component is loaded that depends on it. When loading a component Home Assistant will check the following paths:

+
    +
  • <config directory>/custom_components/<component name>
  • +
  • homeassistant/components/<component name> (built-in components)
  • +
+

Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.

+

+You can override a built-in component by having a component with the same name in your config/custom_components folder. If the built-in component is inside a subfolder, take care to place your customization in a folder with the same name in config/custom_components/*folder*. Note that overriding built-in components is not recommended and will probably break things! +

+

+Home Assistant will use the directory that contains your config file as the directory that holds your customizations. By default this is the config folder in your current work directory. You can use a different folder by running Home Assistant with the –config argument: python3 homeassistant --config /YOUR/CONFIG/PATH/. +

+
+
+ +
+
+ + + + + + + diff --git a/developers/component_states/index.html b/developers/component_states/index.html new file mode 100644 index 0000000000..97dace054c --- /dev/null +++ b/developers/component_states/index.html @@ -0,0 +1,282 @@ + + + + + + + + + Handling states - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Handling states +

+
+
+

It is the responsibility of the component to maintain the states of the devices in your domain. Each device should be a single state and, if possible, a group should be provided that tracks the combined state of the devices.

+

A state can have several attributes that will help the frontend in displaying your state:

+
    +
  • friendly_name: this name will be used as the name of the device
  • +
  • entity_picture: this picture will be shown instead of the domain icon
  • +
  • unit_of_measurement: this will be appended to the state in the interface
  • +
  • hidden: This is a suggestion to the frontend on if the state should be hidden
  • +
+

These attributes are defined in homeassistant.helpers.entity.

+
+
+ +
+
+ + + + + + + diff --git a/developers/component_visibility/index.html b/developers/component_visibility/index.html new file mode 100644 index 0000000000..fc008d2c9e --- /dev/null +++ b/developers/component_visibility/index.html @@ -0,0 +1,280 @@ + + + + + + + + + Handling visibility - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Handling visibility +

+
+
+

Generally, when creating a new entity for Home Assistant you will want it to be a class that inherits the homeassistant.helpers.entity.Entity class. If this is done, visibility will be handled for you. +You can set a suggestion for your entity’s visibility by setting the hidden property by doing something similar to the following.

+
self.hidden = True
+
+
+

This will SUGGEST that the active frontend hides the entity. This requires that the active frontend support hidden cards (the default frontend does) and that the value of hidden be included in your attributes dictionary (see above). The Entity abstract class will take care of this for you.

+

Remember: The suggestion set by your component’s code will always be overwritten by user settings in the configuration.yaml file. This is why you may set hidden to be False, but the property may remain True (or vice-versa).

+
+
+ +
+
+ + + + + + + diff --git a/developers/creating_components/index.html b/developers/creating_components/index.html new file mode 100644 index 0000000000..306c8694c7 --- /dev/null +++ b/developers/creating_components/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Creating components - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Creating components +

+
+
+

Alright, you’re ready to make your first component. AWESOME. Don’t worry, we’ve tried hard to keep it as easy as possible.

+

Example component

+

Add hello_state: to your configuration.yaml file and create a file <config_dir>/custom_components/hello_state.py with the below code to test it locally.

+
DOMAIN = 'hello_state'
+
+def setup(hass, config):
+    hass.states.set('hello.world', 'Paulus')
+
+    return True
+
+
+

For more examples, see the Custom Python Component Examples on our examples page.

+
+
+ +
+
+ + + + + + + diff --git a/developers/credits/index.html b/developers/credits/index.html new file mode 100644 index 0000000000..5538f69a66 --- /dev/null +++ b/developers/credits/index.html @@ -0,0 +1,1144 @@ + + + + + + + + + Credits - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Credits +

+
+
+

This page contains a list of people who have contributed in one way or another to Home Assistant. Hover over a username to see their contributions.

+

Author

+ +

Contributors

+

(in alphabetical order)

+ +

This page is irregularly updated using the credits_generator tool. If you think that you are missing, please let us know.

+

This page was last updated Saturday, February 10th 2018, 4:03:45 pm UTC.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development/index.html b/developers/development/index.html new file mode 100644 index 0000000000..ab9407e718 --- /dev/null +++ b/developers/development/index.html @@ -0,0 +1,294 @@ + + + + + + + + + Starting with Development - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Starting with Development +

+
+
+

Home Assistant is built from the ground up to be easily extensible using components. Home Assistant uses Python 3 for the backend and Polymer (Web components) for the frontend.

+

Home Assistant is open-source and MIT-licensed. Here are links to the source:

+ +

For those new to contributing to open source software, make sure you are familiar with all of the tools and concepts used in Home Assistant before you start.

+

When contributing Home Assistant code:

+ +

When contributing 3rd Party code to be used by Home Assistant:

+ +
+
+ +
+
+ + + + + + + diff --git a/developers/development_101/index.html b/developers/development_101/index.html new file mode 100644 index 0000000000..cd03c9d668 --- /dev/null +++ b/developers/development_101/index.html @@ -0,0 +1,293 @@ + + + + + + + + + Development 101 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Development 101 +

+
+
+

The goal of development 101 is to get you familiar with the basics of developing for Home Assistant. Before we start, please make sure you familiarize yourself with the architecture.

+

To get our code running inside Home Assistant we’re going to create a custom component. The first step is to locate your config folder. You can find the path to your config folder by opening the Home Assistant frontend, click on the service developer tool icon. It’s the path after the text “Path to configuration.yaml”.

+

Inside your configuration directory create a new folder called custom_components. It might be that one already exists, that’s fine too. This is the folder that Home Assistant will look at when looking for custom code.

+

+The Home Assistant API has two variants: a synchronous and an asynchronous version (asyncio). This development course will focus on the synchronous version. +

+

To verify that everything is working correctly, let’s create a small Hello World component. To do so, create a file called hello_world.py in your custom components folder. Copy paste the following content to it:

+
# The domain of your component. Equal to the filename of your component.
+DOMAIN = "hello_world"
+
+
+def setup(hass, config):
+    """Setup the hello_world component."""
+    # States are in the format DOMAIN.OBJECT_ID.
+    hass.states.set('hello_world.Hello_World', 'Works!')
+
+    # Return boolean to indicate that initialization was successfully.
+    return True
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/development_catching_up/index.html b/developers/development_catching_up/index.html new file mode 100644 index 0000000000..7545ed37f6 --- /dev/null +++ b/developers/development_catching_up/index.html @@ -0,0 +1,296 @@ + + + + + + + + + Catching up with Reality - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Catching up with Reality +

+
+
+

If it’s taking a while to develop your feature, and you want to catch up with what’s in the current Home Assistant dev branch, you can use git rebase. This will pull the latest Home Assistant changes locally, rewind your commits, bring in the latest changes from Home Assistant, and replay all of your commits on top.

+
# Run this from your feature branch
+$ git fetch upstream dev  # to pull the latest changes into a local dev branch
+$ git rebase upstream/dev # to put those changes into your feature branch before your changes
+
+
+

If rebase detects conflicts, repeat this process until all changes have been resolved:

+
    +
  1. git status shows you the file with the conflict; edit the file and resolve the lines between <<<< | >>>>
  2. +
  3. Add the modified file: git add <file> or git add .
  4. +
  5. Continue rebase: git rebase --continue
  6. +
  7. Repeat until you’ve resolved all conflicts
  8. +
+

After rebasing your branch, you will have rewritten history relative to your GitHub fork’s branch. When you go to push you will see an error that your history has diverged from the original branch. In order to get your GitHub fork up-to-date with your local branch, you will need to force push, using the following command:

+
# Run this from your feature branch
+$ git push origin --force
+
+
+

Other workflows are covered in detail in the Github documentation. Add an additional remote after you clone your fork.

+
$ git remote add upstream https://github.com/home-assistant/home-assistant.git
+
+
+

Then, git pull --rebase upstream dev.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_checklist/index.html b/developers/development_checklist/index.html new file mode 100644 index 0000000000..a42a7855ae --- /dev/null +++ b/developers/development_checklist/index.html @@ -0,0 +1,284 @@ + + + + + + + + + Development Checklist - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Development Checklist +

+
+
+

Before you commit any changes, check your work against these requirements:

+
    +
  • All dependencies from pypi are included via the REQUIREMENTS variable in your platform or component and only imported inside functions that use them
  • +
  • New dependencies are added to requirements_all.txt (if applicable), using script/gen_requirements_all.py
  • +
  • The .coveragerc file is updated to exclude your platform if there are no tests available or your new code uses a third-party library for communication with the device, service, or sensor
  • +
  • Documentation is developed for home-assistant.io +
      +
    • It’s OK to start with adding a docstring with configuration details (for example, sample entry for configuration.yaml file) to the file header. Visit the website documentation for more information about contributing to home-assistant.io.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/developers/development_config/index.html b/developers/development_config/index.html new file mode 100644 index 0000000000..b12bb69f9a --- /dev/null +++ b/developers/development_config/index.html @@ -0,0 +1,287 @@ + + + + + + + + + Using Config - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Using Config +

+
+
+

Based on where you are in the code, config can mean various things.

+

On the hass object

+

On the hass object is an instance of the Config class. The Config class contains the users preferred units, the path to the config directory and which components are loaded. See available methods.

+

Config passed into component setup

+

The config parameter passed to a component setup is a dictionary containing all of the user supplied configuration. The keys of the dictionary are the component names and the value is another dictionary with the component configuration.

+

The object will have already been validated using your CONFIG_SCHEMA or PLATFORM_SCHEMA if available. If you have defined a PLATFORM_SCHEMA, all references to your component (ie light 2: etc) will have been changed to be accessible as a list under config[DOMAIN].

+

If your configuration file contains the following lines:

+
example:
+  host: paulusschoutsen.nl
+
+
+

Then in the setup method of your component you will be able to refer to config['example']['host'] to get the value paulusschoutsen.nl.

+

Passed into platform setup

+

The config parameter passed to a platform setup function is only the config for that specific platform.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_environment/index.html b/developers/development_environment/index.html new file mode 100644 index 0000000000..7b7aad9966 --- /dev/null +++ b/developers/development_environment/index.html @@ -0,0 +1,339 @@ + + + + + + + + + Set up Development Environment - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Set up Development Environment +

+
+
+

You’ll need to set up a development environment if you want to develop a new feature or component for Home Assistant. Read on to learn how to set up.

+

Preparing your environment

+

Developing on Linux

+

Install the core dependencies.

+
$ sudo apt-get install python3-pip python3-dev python3-venv
+
+
+

In order to run script/setup below you will need some more dependencies.

+
$ sudo apt-get install libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev
+
+
+

+Different distributions have different package installation mechanisms and sometimes packages names as well. For example Centos would use: sudo yum install epel-release && sudo yum install python34 python34-devel mysql-devel +

+

Additional dependencies exist if you plan to perform Frontend Development, please read the Frontend section to learn more.

+

Developing on Windows

+

If you are using Windows as a development platform, make sure that you have the correct Microsoft Visual C++ build tools installed. The installation of the most requirements and validation using tox will fail if this is not done correctly. Check the Windows Compilers section on the Python website for details.

+

Due to Home Assistant is mainly designed and developed on Linux distributions it is not recommended to develop on Windows machines. However on Windows 10 machines you should decide to set up a Linux subsystem.

+

Setup Linux subsystem.

+
$ apt-get update
+$ apt-get upgrade
+$ echo 'export DISPLAY=:0' >> ~/.bashrc && . ~/.bashrc
+$ sudo apt-get install xubuntu-desktop -y
+
+
+

It is recommended using PyCharm as debugger. Download and start PyCharm.

+
$ wget https://download.jetbrains.com/python/pycharm-community-20XX.X.tar.gz
+$ tar -xzf pycharm-community-20XX.X
+$ ./pycharm.sh
+
+
+

In order to display the PyCharm GUI on Windows you need to run a X-Server like VcXserv.

+

Also, make sure to install or upgrade the setuptools Python package. It contains compatibility improvements and adds automatic use of compilers:

+
$ pip install --upgrade setuptools
+
+
+

Developing on OS X

+

Install Homebrew, then use that to install Python 3:

+
$ brew install python3
+
+
+

Setup Local Repository

+

Visit the Home Assistant repository and click Fork. +Once forked, setup your local copy of the source using the commands:

+
$ git clone https://github.com/YOUR_GIT_USERNAME/home-assistant.git
+$ cd home-assistant
+$ git remote add upstream https://github.com/home-assistant/home-assistant.git
+
+
+

Setting up virtual environment

+

To isolate your environment from the rest of the system, set up a venv. Within the home-assistant directory, create and activate your virtual environment.

+
$ python3 -m venv .
+$ source bin/activate
+
+
+

Install the requirements with a provided script named setup.

+
$ script/setup
+
+
+

Invoke your installation.

+
$ hass
+
+
+

Logging

+

By default logging in home-assistant is tuned for operating in production (set to INFO by default, with some modules set to even less verbose logging levels).

+

You can use the logger component to adjust logging to DEBUG to see even more details about what is going on.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_events/index.html b/developers/development_events/index.html new file mode 100644 index 0000000000..3ebc93c5c5 --- /dev/null +++ b/developers/development_events/index.html @@ -0,0 +1,310 @@ + + + + + + + + + Using Events - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Using Events +

+
+
+

The core of Home Assistant is driven by events. That means that if you want to respond to something happening, you’ll have to respond to events. Most of the times you won’t interact directly with the event system but use one of the event listener helpers.

+

The event system is very flexible. There are no limitations on the event type, as long as it’s a string. Each event can contain data. The data is a dictionary that can contain any data as long as it’s JSON serializable. This means that you can use number, string, dictionary and list.

+

List of events that Home Assistant fires.

+

Firing events

+

To fire an event, you have to interact with the event bus. The event bus is available on the Home Assistant instance as hass.bus.

+

Example component that will fire an event when loaded.

+
DOMAIN = 'hello_event'
+
+def setup(hass, config):
+    """Set up is called when Home Assistant is loading our component."""
+
+    # Fire event my_cool_event with event data answer=42
+    hass.bus.fire('my_cool_event', {
+        'answer': 42
+    })
+
+
+

Listening to events

+

Most of the times you’ll not be firing events but instead listen to events. For example, the state change of an entity is broadcasted as an event.

+
DOMAIN = 'hello_event'
+
+def setup(hass, config):
+    """Set up is called when Home Assistant is loading our component."""
+    count = 0
+
+    # Listener to handle fired events
+    def handle_event(event):
+        nonlocal count
+        count += 1
+        print('Total events received:', count)
+
+    # Listen for when my_cool_event is fired
+    hass.bus.listen('my_cool_event', handle_event)
+
+
+

Helpers

+

Home Assistant comes with a lot of bundled helpers to listen to specific types of event. There are helpers to track a point in time, to track a time interval, a state change or the sun set. See available methods.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_guidelines/index.html b/developers/development_guidelines/index.html new file mode 100644 index 0000000000..9ee14e201a --- /dev/null +++ b/developers/development_guidelines/index.html @@ -0,0 +1,324 @@ + + + + + + + + + Style guidelines - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Style guidelines +

+
+
+

Home Assistant enforces strict PEP8 style and PEP 257 (Docstring Conventions) compliance on all code submitted. We automatically test every pull request as part of the linting process with Coveralls and Travis CI.

+

Summary of the most relevant points:

+
    +
  • Line length is limited to 79 characters (see below).
  • +
  • Use 4 spaces per indentation level. We don’t use tabs.
  • +
  • Comments should be full sentences and end with a period.
  • +
  • Imports should be ordered.
  • +
  • Constants and the content of lists and dictionaries should be in alphabetical order.
  • +
  • Avoid trailing whitespace but surround binary operators with a single space.
  • +
  • Line separator should be set to LF.
  • +
+

The maximum line length comes directly from the PEP8 style guide, and is also used by the Python standard library. All code must pass these linting checks, and no exceptions will be made. There have already been numerous requests to increase the maximum line length, but after evaluating the options, the Home Assistant maintainers have decided to stay at 79 characters. This decision is final.

+

Those points may require that you adjust your IDE or editor settings.

+

Our recommendations

+

For some cases PEPs don’t make a statement. This section covers our recommendations about the code style. Those points were collected from the existing code and based on what contributors and developers were using the most. This is basically a majority decision, thus you may not agree with it. But we would like to encourage you follow those recommendations to keep the code unified.

+

Quotes

+

Use single quotes ' for single word and " for multiple words or sentences.

+
ATTR_WATERLEVEL = 'level'
+CONF_ATTRIBUTION = "Data provided by the WUnderground weather service"
+SENSOR_TYPES = {
+    'alerts': ['Alerts', None],
+}
+
+
+

File headers

+

The docstring in the file header should contain a link to the documentation to make it easy to find further information, especially about the configuration or details which are not mentioned in the code.

+
"""
+Support for MQTT lights.
+
+For more details about this platform, please refer to the documentation at
+https://home-assistant.io/components/light.mqtt/
+"""
+
+
+

Requirements

+

Please place Platform requirements right after the imports.

+
[...]
+from homeassistant.helpers.entity import Entity
+
+REQUIREMENTS = ['xmltodict==0.11.0']
+
+
+

Log messages

+

There is no need to add the platform or component name to the log messages. This will be added automatically. Like syslog messages there shouldn’t be any period at the end. Try to avoid brackets and additional quotes around the output to make it easier for users to parse the log. A widely style is shown below but you are free to compose the messages as you like.

+
_LOGGER.error("No route to device: %s", self._resource)
+
+
+
2017-05-01 14:28:07 ERROR [homeassistant.components.sensor.arest] No route to device: 192.168.0.18
+
+
+

Don’t print out wrong API keys, tokens, usernames, or passwords.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_hass_object/index.html b/developers/development_hass_object/index.html new file mode 100644 index 0000000000..c43a7532a3 --- /dev/null +++ b/developers/development_hass_object/index.html @@ -0,0 +1,314 @@ + + + + + + + + + Hass object - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hass object +

+
+
+

While developing Home Assistant you will see a variable that is everywhere: hass. This is the Home Assistant instance that will give you access to all the various parts of the system.

+

The hass object

+

The Home Assistant instance contains four objects to help you interact with the system.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ObjectDescription
hassThis is the instance of Home Assistant. Allows starting, stopping and enqueing new jobs. See available methods.
hass.configThis is the core configuration of Home Assistant exposing location, temperature preferences and config directory path. See available methods.
hass.statesThis is the StateMachine. It allows you to set states and track when they are changed. See available methods..
hass.busThis is the EventBus. It allows you to trigger and listen for events. See available methods..
hass.servicesThis is the ServiceRegistry. It allows you to register services. See available methods..
+

Where to find hass

+

Depending on what you’re writing, there are different ways the hass object is made available.

+

Component
+Passed into setup(hass, config) or async_setup(hass, config).

+

Platform
+Passed into setup_platform(hass, config, add_devices, discovery_info=None) or async_setup_platform(hass, config, async_add_devices, discovery_info=None).

+

Entity
+Available as self.hass once the entity has been added via the add_devices callback inside a platform.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_services/index.html b/developers/development_services/index.html new file mode 100644 index 0000000000..b1bc1de869 --- /dev/null +++ b/developers/development_services/index.html @@ -0,0 +1,309 @@ + + + + + + + + + Using Services - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Using Services +

+
+
+

This is a simple “hello world” example to show the basics of registering a service. To use this example, create the file <config dir>/custom_components/hello_service.py and copy the below example code.

+

Services can be called from automation and from the service “Developer tools” in the frontend.

+
# The domain of your component. Should be equal to the name of your component.
+DOMAIN = 'hello_service'
+
+ATTR_NAME = 'name'
+DEFAULT_NAME = 'World'
+
+
+def setup(hass, config):
+    """Set up is called when Home Assistant is loading our component."""
+
+    def handle_hello(call):
+        name = call.data.get(ATTR_NAME, DEFAULT_NAME)
+
+        hass.states.set('hello_service.hello', name)
+
+    hass.services.register(DOMAIN, 'hello', handle_hello)
+
+    # Return boolean to indicate that initialization was successfully.
+    return True
+
+
+

Load the component by adding the following to your configuration.yaml. When your component is loaded, a new service should be available to call.

+
# configuration.yaml entry
+hello_service:
+
+
+

Open the frontend and in the sidebar, click the first icon in the developer tool section. This will open the Call Service developer tool. On the right, find your service and click on it. This will automatically fill in the correct values.

+

Pressing “Call Service” will now call your service without any parameters. This will cause your service to create a state with the default name ‘World’. If you want to specify the name, you have to specify parameters. Add the following JSON as Service Data and press “Call Service again”.

+
{
+  "name": "Planet"
+}
+
+
+

The service will now overwrite the previous state with “Planet”.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_states/index.html b/developers/development_states/index.html new file mode 100644 index 0000000000..61020c7dc9 --- /dev/null +++ b/developers/development_states/index.html @@ -0,0 +1,384 @@ + + + + + + + + + Using States - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Using States +

+
+
+

Home Assistant keeps track of the states of entities in a state machine. The state machine has very few requirements:

+
    +
  • Each state is related to an entity identified by an entity id. This id is made up of a domain and an object id. For example light.kitchen_ceiling. You can make up any combination of domain and object id, even overwriting existing states.
  • +
  • Each state has a primary attribute that describes the state of the entity. In the case of a light this could be for example “on” and “off”. You can store anything you want in the state, as long as it’s a string (will be converted if it’s not).
  • +
  • You can store more information about an entity by setting attributes. Attributes is a dictionary that can contain any data that you want. The only requirement is that it’s JSON serializable, so you’re limited to numbers, strings, dictionaries and lists.
  • +
+

Description of the state object.

+

Using states in your component

+

This is a simple tutorial/example on how to create and set states. We will do our work in a component called “hello_state”. The purpose of this component is to display a given text in the frontend.

+

To get started, create the file <config dir>/custom_components/hello_state.py and copy the below example code.

+
"""
+Support for showing text in the frontend.
+
+For more details about this component, please refer to the documentation at
+https://home-assistant.io/cookbook/python_component_basic_state/
+"""
+import logging
+
+_LOGGER = logging.getLogger(__name__)
+
+DOMAIN = 'hello_state'
+DEPENDENCIES = []
+
+def setup(hass, config):
+    """Setup the Hello State component. """
+    _LOGGER.info("The 'hello state' component is ready!")
+
+    return True
+
+
+
    +
  1. In the file header we decided to add some details: A short description and the link to the documentation.
  2. +
  3. We want to do some logging. This means that we import the Python logging module and create an alias.
  4. +
  5. The component name is equal to the domain name.
  6. +
  7. At the moment this component has no dependencies. For detail check dependencies section.
  8. +
  9. +

    The setup function will take care of the initialization of our component. +The component will only write a log message. Keep in mind for later that you have several options for the severity:

    +
      +
    • _LOGGER.info(msg)
    • +
    • _LOGGER.warning(msg)
    • +
    • _LOGGER.error(msg)
    • +
    • _LOGGER.critical(msg)
    • +
    • _LOGGER.exception(msg)
    • +
    +
  10. +
  11. We return True if everything is ok.
  12. +
+

Add the component to your configuration.yaml file.

+
hello_state:
+
+
+

After a start or a restart of Home Assistant the component will create an entry in the log.

+
16-03-12 14:16:42 INFO (MainThread) [custom_components.hello_state] The 'hello state' component is ready!
+
+
+

The next step is the introduction of configuration options. A user can pass configuration options to our component via configuration.yaml. To use them we’ll use the passed in config variable to our setup method.

+
import logging
+
+_LOGGER = logging.getLogger(__name__)
+
+DOMAIN = 'hello_state'
+DEPENDENCIES = []
+
+CONF_TEXT = 'text'
+DEFAULT_TEXT = 'No text!'
+
+def setup(hass, config):
+    """Set up the Hello State component. """
+    # Get the text from the configuration. Use DEFAULT_TEXT if no name is provided.
+    text = config[DOMAIN].get(CONF_TEXT, DEFAULT_TEXT)
+
+    # States are in the format DOMAIN.OBJECT_ID
+    hass.states.set('hello_state.Hello_State', text)
+
+    return True
+
+
+

To use the latest feature of our component, update the entry in your configuration.yaml file.

+
hello_state:
+  text: 'Hello, World!'
+
+
+

Thanks to DEFAULT_TEXT variable the component will launch even if no text: field is used in the configuration.yaml file. Quite often there are variables which are required. It’s important to check if all mandatory configuration variables are provided. If not, the setup should fail. We will use voluptuous as a helper to achieve this. The next listing shows the essential parts.

+
import voluptuous as vol
+
+import homeassistant.helpers.config_validation as cv
+
+CONFIG_SCHEMA = vol.Schema({
+    DOMAIN: vol.Schema({
+      vol.Required(CONF_TEXT): cv.string,
+    })
+}, extra=vol.ALLOW_EXTRA)
+
+
+

Now, when text: is missing from the config, Home Assistant will alert the user and not setup your component.

+

After a start or a restart of Home Assistant the component will be visible in the frontend if the configuration.yaml file is up-to-date.

+

+ +

+

In order to expose attributes for a platform, you will need to define a property called device_state_attributes on the entity class, which will return a dictionary of attributes:

+
@property
+def device_state_attributes(self):
+    """Return device specific state attributes."""
+    return self._attributes
+
+
+

+Entities also have a similar property state_attributes, which normally doesn’t need to be defined by new platforms. This property is used by base components to add standard sets of attributes to a state. Example: The light component uses state_attributes to add brightness to the state dictionary. If you are designing a new component, you should define state_attributes instead. +

+

To get your component included in the Home Assistant releases, follow the steps described in the Submit your work section. Basically you only need to move your component in the homeassistant/component/ directory of your fork and create a Pull Request.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_submitting/index.html b/developers/development_submitting/index.html new file mode 100644 index 0000000000..755bab49ca --- /dev/null +++ b/developers/development_submitting/index.html @@ -0,0 +1,315 @@ + + + + + + + + + Submit your work - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Submit your work +

+
+
+

Submit your improvements, fixes, and new features to Home Assistant one at a time, using GitHub Pull Requests. Here are the steps:

+
    +
  1. +

    From your fork’s dev branch, create a new branch to hold your changes:

    +

    git checkout -b some-feature

    +
  2. +
  3. +

    Make your changes, create a new platform, develop a new component, or fix issues.

    +
  4. +
  5. +

    Test your changes and check for style violations.

    +
  6. +
  7. +

    If everything looks good according to these musts, commit your changes:

    +

    git add .

    +

    git commit -m "Added some-feature"

    +
      +
    • Write a meaningful commit message and not only Update or Fix.
    • +
    • Use a capital letter to start with your commit message.
    • +
    • Don’t prefix your commit message with [bla.bla] or platform:.
    • +
    • Consider adding tests to ensure that your code works.
    • +
    +
  8. +
  9. +

    Push your committed changes back to your fork on GitHub:

    +

    git push origin HEAD

    +
  10. +
  11. +

    Follow these steps to create your pull request.

    +
      +
    • On GitHub, navigate to the main page of the Home Assistant repository.
    • +
    • In the “Branch” menu, choose the branch that contains your commits (from your fork).
    • +
    • To the right of the Branch menu, click New pull request.
    • +
    • Use the base branch dropdown menu to select the branch you’d like to merge your changes into, then use the compare branch drop-down menu to choose the topic branch you made your changes in. Make sure the Home Assistant branch matches with your forked branch (dev) else you will propose ALL commits between branches.
    • +
    • Type a title and complete the provided description for your pull request.
    • +
    • Click Create pull request.
    • +
    +
  12. +
  13. +

    Check for comments and suggestions on your pull request and keep an eye on the CI output.

    +
  14. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/development_testing/index.html b/developers/development_testing/index.html new file mode 100644 index 0000000000..5080b81cb4 --- /dev/null +++ b/developers/development_testing/index.html @@ -0,0 +1,318 @@ + + + + + + + + + Testing your code - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Testing your code +

+
+
+

As states in the Style guidelines section all code is checked to verify all unit tests pass and that the code passes the linting tools. Local testing is done using Tox, which has been installed as part of running script/setup. To start the tests, simply run it:

+
$ tox
+
+
+

Important: Run tox before you create your pull request to avoid annoying fixes.

+

Running Tox will run unit tests against the locally available Pythons, as well as validate the code and document style using pycodestyle, pydocstyle and pylint. You can run tests on only one tox target – just use -e to select an environment. For example, tox -e lint runs the linters only, and tox -e py34 runs unit tests only on Python 3.4.

+

Tox uses virtual environments under the hood to create isolated testing environments. The tox virtual environments will get out-of-date when requirements change, causing test errors. Run tox -r to tell Tox to recreate the virtual environments.

+

If you are working on tests for a component or platform and you need the dependencies available inside the Tox environment, update the list inside script/gen_requirements_all.py. Then run the script and then run tox -r to recreate the virtual environments.

+

Running single tests using Tox

+

You can pass arguments via Tox to py.test to be able to run single test suites or test files. Replace py36 with the Python version that you use.

+
# Stop after the first test fails
+$ tox -e py36 -- tests/test_core.py -x
+# Run test with specified name
+$ tox -e py36 -- tests/test_core.py -k test_split_entity_id
+# Fail a test after it runs for 2 seconds
+$ tox -e py36 -- tests/test_core.py --timeout 2
+# Show the 10 slowest tests
+$ tox -e py36 -- tests/test_core.py --duration=10
+
+
+

Testing outside of Tox

+

Running tox will invoke the full test suite. Even if you specify which tox target to run, you still run all tests inside that target. That’s not very convenient to quickly iterate on your code! To be able to run the specific test suites without Tox, you’ll need to install the test dependencies into your Python environment:

+
$ pip3 install -r requirements_test_all.txt
+
+
+

Now that you have all test dependencies installed, you can run tests on individual files:

+
$ flake8 homeassistant/core.py
+$ pylint homeassistant/core.py
+$ pydocstyle homeassistant/core.py
+$ py.test tests/test_core.py
+
+
+

You can also run linting tests against all changed files, as reported by git diff upstream/dev... --diff-filter=d --name-only, using the lint script:

+
$ script/lint
+
+
+

Preventing Linter Errors

+

Save yourself the hassle of extra commits just to fix style errors by enabling the Flake8 git commit hook. Flake8 will check your code when you try to commit to the repository and block the commit if there are any style errors, which gives you a chance to fix them!

+
$ pip3 install flake8 flake8-docstrings
+$ flake8 --install-hook=git
+
+
+

The flake8-docstrings extension will check docstrings according to PEP257 when running Flake8.

+

Notes on PyLint and PEP8 validation

+

If you can’t avoid a PyLint warning, add a comment to disable the PyLint check for that line with # pylint: disable=YOUR-ERROR-NAME. Example of an unavoidable one is if PyLint incorrectly reports that a certain object doesn’t have a certain member.

+
+
+ +
+
+ + + + + + + diff --git a/developers/development_validation/index.html b/developers/development_validation/index.html new file mode 100644 index 0000000000..87052026b8 --- /dev/null +++ b/developers/development_validation/index.html @@ -0,0 +1,332 @@ + + + + + + + + + Validate the input - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Validate the input +

+
+
+

The configuration.yaml file contains the configuration options for components and platforms. We use voluptuous to make sure that the configuration provided by the user is valid. Some entries are optional or could be required to set up a platform or a component. Others must be a defined type or from an already-defined list.

+

We test the configuration to ensure that users have a great experience and minimize notifications if something is wrong with a platform or component setup before Home Assistant runs.

+

Besides voluptuous default types, many custom types are available. For an overview, take a look at the config_validation.py helper.

+
    +
  • Types: string, byte, and boolean
  • +
  • Entity ID: entity_id and entity_ids
  • +
  • Numbers: small_float and positive_int
  • +
  • Time: time, time_zone
  • +
  • Misc: template, slug, temperature_unit, latitude, longitude, isfile, sun_event, ensure_list, port, url, and icon
  • +
+

To validate plaforms using MQTT, valid_subscribe_topic and valid_publish_topic are available.

+

Some things to keep in mind:

+
    +
  • Use the constants defined in const.py
  • +
  • Import PLATFORM_SCHEMA from the parent component and extend it
  • +
  • Preferred order is required first and optional second
  • +
+

Snippets

+

This section contains snippets for the validation we use.

+

Default name

+

It’s common to set a default for a sensor if the user doesn’t provide a name to use.

+
DEFAULT_NAME = 'Sensor name'
+
+PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+    ...
+    vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
+
+
+

Limit the values

+

You might want to limit the user’s input to a couple of options.

+
DEFAULT_METHOD = 'GET'
+
+PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+    ...
+    vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(['POST', 'GET']),
+
+
+

Port

+

All port numbers are from a range of 1 to 65535.

+
DEFAULT_PORT = 993
+
+PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+    ...
+    vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
+
+
+

Lists

+

If a sensor has a pre-defined list of available options, test to make sure the configuration entry matches the list.

+
SENSOR_TYPES = {
+    'article_cache': ('Article Cache', 'MB'),
+    'average_download_rate': ('Average Speed', 'MB/s'),
+}
+
+PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+    ...
+    vol.Optional(CONF_MONITORED_VARIABLES, default=[]):
+        vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/documentation/create_page/index.html b/developers/documentation/create_page/index.html new file mode 100644 index 0000000000..22ec01518f --- /dev/null +++ b/developers/documentation/create_page/index.html @@ -0,0 +1,383 @@ + + + + + + + + + Create a new page - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Create a new page +

+
+
+

For a platform or component page, the fastest way is to make a copy of an existing page and edit it. The Component overview and the Examples section are generated automatically, so there is no need to add a link to those pages.

+

Please honor the Standards we have for the documentation.

+

If you start from scratch with a page, you need to add a header. Different sections of the documentation may need different headers.

+
---
+layout: page
+title: "Awesome Sensor"
+description: "home-assistant.io web presence"
+date: 2015-06-17 08:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_release: "0.38"
+ha_category: Sensor
+---
+
+Content...Written in markdown. 
+
+### {% linkable_title Linkable Header %}
+...
+
+
+

There are pre-definied 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.
  • +
  • If you’re adding a new component, for the ha_release part of the header, just increment of the current release. If the current release is 0.37, make ha_release 0.38. If it’s 0.30 or 0.40 please quote it with " ".
  • +
  • ha_category: is needed to list the platform or component in the appropriate category on the website.
  • +
+

Configuration

+

Every platform page should contain a configuration sample. This sample must contain only the required variables to make it easy to copy and paste it for users into their configuration.yaml file.

+

The Configuration Variables section must use the {% configuration %} ... {% endconfiguration %} tag.

+
{% configuration %}
+api_key:
+  description: The API key to access the service.
+  required: true
+  type: string
+name:
+  description: Name to use in the frontend.
+  required: false
+  default: The default name to use in the frontend.
+  type: string
+monitored_conditions:
+  description: Conditions to display in the frontend.
+  required: true
+  type: list
+  keys:
+    weather:
+      description: A human-readable text summary.
+    temperature:
+      description: The current temperature.
+{% endconfiguration %}
+
+
+
+

Available keys:

+
    +
  • description:: That the variable is about.
  • +
  • required:: If the variable is required. +
    required: true            #=> Required
    +required: false           #=> Optional
    +required: inclusive       #=> Inclusive
    +required: exclusive       #=> Exclusive
    +required: any string here #=> Any string here
    +
    +
    +
  • +
  • type:: The type of the variable. Allowed entries: string, int, time, template or map. For multiple possibilities use [string, int]. If you use map then you need to define keys: (see the template sensor for an example).
  • +
  • default:: The default value for the variable.
  • +
+

Embedding Code

+

You can use the default markdown syntax to generate syntax highlighted code. For inline code wrap your code in `.

+

When you’re writing code that is to be executed on the terminal, prefix it with $.

+

Templates

+

For the configuration templating is Jinja used. Check the Documentation Standards for further details.

+

If you are don’t escape templates then they will be rendered and appear blank on the website.

+

HTML

+

The direct usage of HTML is supported but not recommended. The note boxes are an exception.

+
<p class='note warning'>
+  You need to enable telnet on your router. 
+</p>
+
+
+

Images, icons, and logos

+

The images which are displayed on the pages are stored in various directories according to their purpose. If you want to use a logo and placed logo: in the file header then this image should be stored in source/images/supported_brands. The background must be transparent.

+ + + + + + + + + + + + + + + + + + + + + +
TypeLocation
logossource/images/supported_brands
blogsource/images/blog
screenshotssource/images/components
+

Not everything (product, component, etc.) should have a logo. To show something for internal parts of Home Assistant we are using the Material Design Icons.

+

Linking From The Sidebar

+

If you are adding a new page that requires linking from the sidebar you need to edit the docs_navigation.html file in home-assistant.github.io/source/_includes/asides/docs_navigation.html.

+
+
+ +
+
+ + + + + + + diff --git a/developers/documentation/index.html b/developers/documentation/index.html new file mode 100644 index 0000000000..2bb2e4c6f7 --- /dev/null +++ b/developers/documentation/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Documentation Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Documentation Home Assistant +

+
+
+

The website you are reading now is the home of Home Assistant: 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 and these available dependencies. The pages are written in 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 if you don’t have it already. Ruby version 2.3.0 or higher is required.
  • +
  • Install bundler, a dependency manager for Ruby: $ gem install bundler
  • +
  • In your home-assistant.github.io root directory, run $ bundle to install the gems you need.
  • +
+

Short cut for Fedora: $ sudo dnf -y install gcc-c++ ruby ruby-devel rubygem-bundler rubygem-json && bundle

+

Then you can work on the documentation:

+
    +
  • Fork home-assistant.io git repository.
  • +
  • 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
  • +
  • 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 +

+
+
+ +
+
+ + + + + + + diff --git a/developers/documentation/standards/index.html b/developers/documentation/standards/index.html new file mode 100644 index 0000000000..06a91b412e --- /dev/null +++ b/developers/documentation/standards/index.html @@ -0,0 +1,345 @@ + + + + + + + + + Documentation Standards - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Documentation Standards +

+
+
+

To ensure that the documentation for Home Assistant is consistent and easy to follow for both novice and expert users, we ask that you follow a very strict set of standards for developing the documentation.

+

General Documentation

+
    +
  • The language of the documentation should be American-English.
  • +
  • Don’t put two spaces after a period and avoid the “Oxford comma”.
  • +
  • Be objective and not gender favoring, polarizing, race related or religion inconsiderate.
  • +
  • The case of brand names, services, protocols, components, and platforms must match its respective counterpart. E.g. “Z-Wave” not “Zwave”, “Z-wave”, “Z Wave” or “ZWave”. Also, “Input Select” not “input select” or “Input select”.
  • +
  • All headings should use the {% linkable_title %} tag.
  • +
+

Component and Platform Pages

+
    +
  • The Configuration Variables section must use the {% configuration %} tag.
  • +
  • Configuration variables must document the requirement status.
  • +
  • Configuration variables must document the default value, if any.
  • +
  • Configuration variables must document the accepted value types. +
      +
    • Use [string, int] for configuration variables that accept multiple types.
    • +
    +
  • +
  • Use YAML sequence syntax in the sample code if it is supported.
  • +
  • All examples should be formatted to be included in configuration.yaml unless explicitly stated.
  • +
  • Component and platform names should be a link to their respective documentation pages.
  • +
+

Templates

+
    +
  • All examples containing Jinja2 templates should be wrapped outside of the code markdown with the {% raw %} tag.
  • +
  • Do not use states.switch.source.state in templates. Instead use states() and is_state().
  • +
  • Use double quotes (") for: +
      +
    • friendly_name
    • +
    • Single-line templates: +
        +
      • value_template
      • +
      • level_template
      • +
      • icon_template
      • +
      • Children of data_template
      • +
      +
    • +
    +
  • +
  • Use single quotes (') for: +
      +
    • Strings inside of templates: +
        +
      • States
      • +
      • Entity IDs
      • +
      +
    • +
    • unit_of_measurement
    • +
    +
  • +
  • No whitespace around pipe character (|) for Jinja2 filters.
  • +
  • Single whitespace after Jinja2 opening delimiters ({{).
  • +
  • Single whitespace before Jinja2 closing delimiters (}}).
  • +
  • Do not quote values for: +
      +
    • device_class
    • +
    • platform
    • +
    • condition
    • +
    • service
    • +
    +
  • +
+

Renaming Pages

+

It can happen that a component or platform is renamed, in this case the documentation needs to be updated as well. If you rename a page, add redirect_from: to the file header and let it point to the old location/name of the page. Please consider to add details, like release number or old component/platform name, to the page in a note.

+
---
+...
+redirect_from: /getting-started/android/
+---
+
+
+

Adding a redirect also applies if you move content around in the documentation.

+
+
+ +
+
+ + + + + + + diff --git a/developers/frontend/index.html b/developers/frontend/index.html new file mode 100644 index 0000000000..5a4c412a74 --- /dev/null +++ b/developers/frontend/index.html @@ -0,0 +1,336 @@ + + + + + + + + + Frontend development - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Frontend development +

+
+
+

Home Assistant is built on top of the Polymer webcomponents framework. Polymer allows building encapsulated custom HTML elements. Home-Assistant-Polymer source code on GitHub.

+

+Do not use development mode in production. Home Assistant uses aggressive caching to improve the mobile experience. This is disabled during development so that you do not have to restart the server in between changes. +

+

Setting up the environment

+

+All commands below need to be run from inside the home-assistant-polymer repository. +

+

Home Assistant will by default serve the compiled version of the frontend from the hass_frontend Python package. For development you want to work with the unbundled source files which are in the home-assistant-polymer repository.

+

First step is to configure Home Assistant to use the development mode for the frontend. Do this by updating the frontend config in your configuration.yaml and set the path to the polymer repo:

+
frontend:
+  development_repo: <absolute path to home-assistant-polymer>
+
+
+

Next step is to git clone the home-assistant-polymer repository. You can place the repository anywhere on your system but to keep these instructions simple we’re cloning the home-assistant-polymer repository as a sibling to the Home Assistant repo.

+
$ git clone https://github.com/home-assistant/home-assistant-polymer.git
+$ cd home-assistant-polymer
+
+
+

After cloning, your folder structure should look like this:

+
/home-assistant
+/home-assistant-polymer
+
+
+

Node.js is required to build the frontend. The preferred method of installing node.js is with nvm. Install nvm using the instructions in the README, and install the correct node.js by running the following command:

+
$ nvm install
+
+
+

Yarn is used as the package manager for node modules. Install yarn using the instructions here.

+

Next, development dependencies need to be installed to bootstrap the frontend development environment. First activate the right Node version and then download all the needed modules and do a first build:

+
$ nvm use
+$ script/bootstrap
+
+
+

This script will use yarn and bower to install all the necessary dependencies necessary for development and do an initial build.

+

Creating pull requests

+

If you’re planning on issuing a PR back to the Home Assistant codebase you need to fork the polymer project and add your fork as a remote to the Home Assistant Polymer repo.

+
$ git remote add <remote name> <github URL to your fork>
+
+
+

When you’ve made your changes and are ready to push them change to the working directory for the polymer project and then push your changes

+
$ git add -A
+$ git commit -m "Added new feature X"
+$ git push -u <remote name> HEAD
+
+
+

Development

+

If you are changing html files under /src or /panels - just reload the page in your browser to see changes. +If you are changing javascript files under /js you need to have gulp running to watch the source files for changes and build when necessary.

+
$ yarn run dev-watch
+
+
+

The source code for the frontend can be found in different directories:

+
    +
  • UI: /home-assistant-polymer/src/
  • +
  • Panels: /home-assistant-polymer/panels/
  • +
  • Javascript code: /home-assistant-polymer/js/
  • +
+

Building the Polymer frontend

+

Building a new version of the frontend is as simple as running script/build_frontend. +To use a built version package it: python setup.py sdist +Install it: pip3 install dist/home-assistant-frontend-xxxxxxxx.0.tar.gz --upgrade +Run Home Assistant without trying to reinstall production package: hass --skip-pip

+
+
+ +
+
+ + + + + + + diff --git a/developers/frontend_add_card/index.html b/developers/frontend_add_card/index.html new file mode 100644 index 0000000000..66eb23e29d --- /dev/null +++ b/developers/frontend_add_card/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Adding state card - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Adding state card +

+
+
+

The main interface of Home Assistant is a list of the current entities and their states. For each entity in the system, a state card will be rendered. State cards will show an icon, the name of the entity, when the state has last changed and the current state or a control to interact with it.

+

Cards in the frontend

+

The different card types can be found here.

+

Sensors, when not grouped, are shown as so-called badges on top of the state cards.

+

Badges in the frontend

+

The different badges are located in the file /src/components/entity/ha-state-label-badge.html.

+

Adding a custom card type can be done with a few simple steps. For this example we will add a new state card for the domain camera:

+
    +
  1. Add 'camera' to the array DOMAINS_WITH_CARD in the file /util/hass-util.html.
  2. +
  3. Create the files state-card-camera.html in the folder /state-summary/.
  4. +
  5. Add <link rel="import" href="state-card-camera.html"> to state-card-content.html.
  6. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/frontend_add_more_info/index.html b/developers/frontend_add_more_info/index.html new file mode 100644 index 0000000000..7dc5d41c39 --- /dev/null +++ b/developers/frontend_add_more_info/index.html @@ -0,0 +1,284 @@ + + + + + + + + + Adding more info dialogs - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Adding more info dialogs +

+
+
+

Whenever the user taps or clicks on one of the cards, a more info dialog will show. The header of this dialog will be the state card, followed by the history of this entity for the last 24 hours. Below this the more info component is rendered for that entity. The more info component can show more information or allow more ways of control.

+

+ + The more info dialog for a light allows the user to control the color and the brightness. +

+

The instructions to add a more info dialog are very similar to adding a new card type. This example will add a new more info component for the domain camera:

+
    +
  1. Add 'camera' to the array DOMAINS_WITH_MORE_INFO in the file util/hass-util.html.
  2. +
  3. Create the files more-info-camera.html in the folder /more-infos.
  4. +
  5. Add <link rel="import" href="more-info-camera.html"> to more-info-content.html
  6. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/frontend_creating_custom_panels/index.html b/developers/frontend_creating_custom_panels/index.html new file mode 100644 index 0000000000..f8a3163e35 --- /dev/null +++ b/developers/frontend_creating_custom_panels/index.html @@ -0,0 +1,341 @@ + + + + + + + + + Creating custom panels - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Creating custom panels +

+
+
+

Panels are pages within Home Assistant that show information within Home Assistant and can allow controlling it. Panels are linked from the sidebar and rendered full screen. The have have real-time access to the Home Assistant object via JavaScript. Examples of panels in the app are map, logbook and history.

+

Besides components registering panels, users can also register panels using the panel_custom component. This allows users to quickly build their own custom interfaces for Home Assistant.

+

Before you get started

+

The Home Assistant user interface is currently served to browsers in modern JavaScript and older JavaScript (ES5). The older version has a wider browser support but that comes at a cost of size, performance and more difficult to get started building panels for authors.

+

We therefore advice to set up the frontend to serve the modern version of the frontend so that you won’t need any build tools while developing. If you realize that your audience requires both, you can add a transpilation step in the future. To set up your frontend to always serve the latest version, add this to your config:

+
frontend:
+  javascript_version: latest
+
+
+

Building your first panel

+

Create a file called hello.html in your /panels/.

+

The hello.html contains the needed building blocks to create the elements inside the view.

+
<dom-module id='ha-panel-hello'>
+  <template>
+    <style>
+      p {
+        font-weight: bold;
+      }
+    </style>
+    <p>Hello {{who}}. Greetings from Home Assistant.</p>
+  </template>
+</dom-module>
+
+<script>
+class HaPanelHello extends Polymer.Element {
+  static get is() { return 'ha-panel-hello'; }
+  
+  static get properties() {
+    return {
+      // Home Assistant object
+      hass: Object,
+      // If should render in narrow mode
+      narrow: {
+        type: Boolean,
+        value: false,
+      },
+      // If sidebar is currently shown
+      showMenu: {
+        type: Boolean,
+        value: false,
+      },
+      // Home Assistant panel info
+      // panel.config contains config passed to register_panel serverside
+      panel: Object,
+      who: {
+        type: String,
+        computed: 'computeWho(panel)',
+      },
+    };
+  }
+
+  computeWho(panel) {
+    return panel && panel.config && panel.config.who ? panel.config.who : 'World';
+  }
+}
+customElements.define(HaPanelHello.is, HaPanelHello);
+</script>
+
+
+

Create an entry for the new panel in your configuration.yaml file:

+
panel_custom:
+  - name: hello
+    sidebar_title: Hello World
+    sidebar_icon: mdi:hand-pointing-right
+    url_path: hello
+
+
+

For more possibilities, see the Custom panel section on our Examples page.

+
+
+ +
+
+ + + + + + + diff --git a/developers/frontend_creating_custom_ui/index.html b/developers/frontend_creating_custom_ui/index.html new file mode 100644 index 0000000000..3ed573094a --- /dev/null +++ b/developers/frontend_creating_custom_ui/index.html @@ -0,0 +1,333 @@ + + + + + + + + + Creating custom UI - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Creating custom UI +

+
+
+

If you would like to use your own State card without merging your code into home-assistant-polymer you can create your own implementation.

+

Put the element source file and its dependencies in www/custom_ui/ directory under your Home Assistant configuration directory.

+

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 <state-card-my-custom-light> tag with Polymer.

+

In state-card-my-custom-light.html you should use <link rel="import"> 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.

+
    +
  1. In the customize: section of the configuration.yaml file put custom_ui_state_card: state-card-my-custom-light.
  2. +
  3. In the frontend section use extra_html_url to specify the URL to load.
  4. +
+

Example:

+

configuration.yaml:

+
homeassistant:
+  customize:
+    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:

+
<dom-module id='state-card-my-custom-light'>
+  <template>
+    <style>
+
+    </style>
+    <textarea>[[_toStr(stateObj)]]</textarea>
+  </template>
+</dom-module>
+
+<script>
+class StateCardMyCustomLight extends Polymer.Element {
+  static get is() { return 'state-card-my-custom-light'; }
+  
+  static get properties() {
+    return {
+      // Home Assistant object
+      hass: Object,
+      // inDialog is true if shown as more-info-card
+      inDialog: {
+        type: Boolean,
+        value: false,
+      },
+      // includes state, config and more information of the entity
+      stateObj: Object,
+    };
+  }
+
+  _toStr(obj) {
+    return JSON.stringify(obj);
+  }
+}
+customElements.define(StateCardMyCustomLight.is, StateCardMyCustomLight);
+</script>
+
+
+

For more possibilities, see the Custom UI section on our Examples page.

+
+
+ +
+
+ + + + + + + diff --git a/developers/frontend_translation/index.html b/developers/frontend_translation/index.html new file mode 100644 index 0000000000..4cc2270d76 --- /dev/null +++ b/developers/frontend_translation/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/developers/hassio/addon_communication/index.html b/developers/hassio/addon_communication/index.html new file mode 100644 index 0000000000..2e05c83fc1 --- /dev/null +++ b/developers/hassio/addon_communication/index.html @@ -0,0 +1,286 @@ + + + + + + + + + Add-On Communication - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Add-On Communication +

+
+
+

There are different ways for communication between add-ons inside Hass.io.

+

Network

+

We use an internal network that allows to communicate with every add-on, even to/from Home Assistant, by using his name or alias. Only the add-ons which run on the host network are a bit limited. These can talk with all internal add-ons by their name but all other add-on can’t address these add-on by name - using an alias works for both!

+

Name/alias are used for communication inside Hass.io. +The name is generated using the following format: {REPO}_{SLUG}, e.g. local_xy or 3283fh_myaddon. In this example, {SLUG} is defined in an add-ons config.json. If an add-on is installed locally, {REPO} will be local. If the add-on is installed from a Github repository, {REPO} is a hashed identifier generated from the GitHub repository’s URL (ex: https://github.com/xy/my_hassio_addons). See here to understand how this identifier is generated. Note that this identifier is required in certain service calls that use the Hass.io add-on API. You can view the repository identifiers for all currently installed add-ons via a GET request to the hassio API addons endpoint.

+

Use hassio for communication with the internal API.

+

Home Assistant

+

An add-on can talk to the Home Assistant API using the 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 and read the environment variable HASSIO_TOKEN and use this as Home-Assistant password.

+

There is also a proxy for the Home Assistant Websocket API. It works like the API proxy above and requires HASSIO_TOKEN as password. Use this URL: http://hassio/homeassistant/websocket.

+

It is also possible to talk direct to the Home Assistant instance which is named homeassistant over the 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 run tasks. To send data over STDIN to an add-on use the hassio.addon_stdin service.

+

Hass.io API

+

To enables calls to the Hass.io API, add hassio_api: true to config.json and read the environment variable HASSIO_TOKEN. Now you can use the API over the URL: http://hassio/. Use the HASSIO_TOKEN with header X-HASSIO-KEY.

+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_config/index.html b/developers/hassio/addon_config/index.html new file mode 100644 index 0000000000..17f543408a --- /dev/null +++ b/developers/hassio/addon_config/index.html @@ -0,0 +1,604 @@ + + + + + + + + + Add-On Configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Add-On Configuration +

+
+
+

Each add-on is stored in a folder. The file structure looks like this:

+
addon_name/
+  build.json
+  CHANGELOG.md
+  config.json
+  Dockerfile
+  icon.png
+  logo.png
+  README.md
+  run.sh
+
+
+

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).
  • +
+
CONFIG_PATH=/data/options.json
+
+TARGET="$(jq --raw-output '.target' $CONFIG_PATH)"
+
+
+

So if your options contain

+
{ "target": "beer" }
+
+
+

then there will be a variable TARGET containing beer in the environment of your bash file afterwards.

+

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.

+

Build Args

+

We support the following build arguments by default:

+ + + + + + + + + + + + + + + + + + + + + +
ARGDescription
BUILD_FROMHold image for dynamic builds or buildings over our systems.
BUILD_VERSIONAdd-on version (read from config.json).
BUILD_ARCHHold current build arch inside.
+

Add-on config

+

The config for an add-on is stored in config.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"
+}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyRequiredDescription
nameyesName of the add-on
versionyesVersion of the add-on
slugyesSlug of the add-on
descriptionyesDescription of the add-on
archnoList of supported arch: armhf, aarch64, amd64, i386. Default all.
urlnoHomepage of the addon. Here you can explain the add-ons and options.
startupyesinitialize 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.
webuinoA 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.
bootyesauto by system and manual or only manual
portsnoNetwork ports to expose from the container. Format is "container-port/type": host-port.
host_networknoIf that is True, the add-on run on host network.
host_ipcnoDefault False. Allow to share the IPC namespace with others.
host_dbusnoDefault False. Map Host dbus service into add-on.
devicesnoDevice list to map into the add-on. Format is: <path_on_host>:<path_in_container>:<cgroup_permissions>. i.e. /dev/ttyAMA0:/dev/ttyAMA0:rwm
auto_uartnoDefault False. Auto mapping all UART/Serial device from host into add-on.
hassio_apinoThis add-on can access to Hass.io REST API. It set the host alias hassio.
homeassistant_apinoThis add-on can access to Hass.io Home-Assistant REST API proxy. Use http://hassio/homeassistant/api.
privilegednoPrivilege for access to hardware/system. Available access: NET_ADMIN, SYS_ADMIN, SYS_RAWIO, SYS_TIME, SYS_NICE
mapnoList 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.
environmentnoA dict of environment variable to run add-on.
audionoBoolean. 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.
gpionoBoolean. 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.
stdinnoBoolean. If that is enable, you can use the STDIN with Hass.io API.
legacynoBoolean. If the docker image have no hass.io labels, you can enable the legacy mode to use the config data.
optionsyesDefault options value of the add-on
schemayesSchema for options value of the add-on. It can be False to disable schema validation and use custom options.
imagenoFor use with Docker Hub.
timeoutnoDefault 10 (second). The timeout to wait until the docker is done or will be killed.
tmpfsnoMount 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.
+

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 an option optional, put ? to the end of data type, otherwise it will be a required value.

+
{
+  "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:

+
{
+  "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)
  • +
+

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.

+
{
+  "build_from": {
+    "armhf": "homeassistant/armhf-base:latest"
+  },
+  "squash": false,
+  "args": {
+    "my_build_arg": "xy"
+  }
+}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
KeyRequiredDescription
build_fromnoA dictionary with the hardware architecture as the key and the base Docker image as value.
squashnoDefault False. Be carfully with this option, you can not use the image for caching stuff after that!
argsnoAllow to set additional Docker build arguments as a dictionary.
+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_development/index.html b/developers/hassio/addon_development/index.html new file mode 100644 index 0000000000..2f7f9f91da --- /dev/null +++ b/developers/hassio/addon_development/index.html @@ -0,0 +1,284 @@ + + + + + + + + + Developing an add-on - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Developing an add-on +

+
+
+

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. Developers can create GitHub 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. Presentation
  12. +
  13. Repositories
  14. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_presentation/index.html b/developers/hassio/addon_presentation/index.html new file mode 100644 index 0000000000..802dcfd2c7 --- /dev/null +++ b/developers/hassio/addon_presentation/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Presenting your add-on - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Presenting your add-on +

+
+
+

If you decide to share your add-on to the public, paying attention to details is recommended. Of course, your add-on should have a proper name and description, but Hass.io also gives you some other tools to present your add-on even nicer.

+

Adding documentation

+

Good documentation helps the consumer of your add-on to understand its usage, explains configuration options, points users in the right direction in the case they have questions or issues, and contains the license under which the add-on was published.

+

This file containing the documentation is usually referred to as the “README”, which is generally published as the README.md file.

+

Take a look at other projects for inspiration. For example, see the README.md of the Community Hass.io Add-ons: Homebridge add-on.

+

In future versions of Hass.io, the README.md file will be displayed in the Home Assistant frontend.

+

Add-on icon & logo

+

A picture is worth a thousand words. Therefore, your add-on can be improved by adding a proper image icon and logo. Those images are used when showing your add-on in the Home Assistant Hass.io panel and which will significantly improve the visual representation of your add-on.

+

Requirements for the logo of your add-on:

+
    +
  • The logo must be in the Portable Network Graphics format (.png).
  • +
  • The filename must be logo.png.
  • +
  • It is recommended to keep the logo size around 250x100px. You may choose to use a different size or aspect ratio as you seem fit for your add-on.
  • +
+

Requirements for the icon of your add-on:

+
    +
  • The icon must be in the Portable Network Graphics format (.png).
  • +
  • The filename must be icon.png.
  • +
  • The aspect ratio of the icon must be 1x1 (square).
  • +
  • It is recommended to use an icon size of 128x128px.
  • +
+

Keeping a changelog

+

It is likely you are going to release newer versions of your add-on in the future. In case that happens, the users of your add-on would see an upgrade notice and probably want to know what changes were made in the latest version.

+

A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of your add-on and is generally published as the CHANGELOG.md file.

+

If you are in need of a guide on keeping a changelog, we would recommend checking the keep a changelog website. They have developed a standard that is used by many opensource projects around the world.

+

In future versions of Hass.io, the CHANGELOG.md file will be displayed in the Home Assistant frontend.

+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_publishing/index.html b/developers/hassio/addon_publishing/index.html new file mode 100644 index 0000000000..527dacb95a --- /dev/null +++ b/developers/hassio/addon_publishing/index.html @@ -0,0 +1,306 @@ + + + + + + + + + Publishing your add-on - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Publishing your add-on +

+
+
+

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

+

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

+

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.

+

Build scripts to publish add-ons to Docker Hub

+

All add-ons are simple docker containers. Inside your add-on config.json you specify the Docker image that will be installed for your add-on:

+
{
+  ...
+
+  "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. 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 or do it with a PR on GitHub. After you push the add-on to Docker Hub, you can merge this branch to master.

+

Custom Add-ons

+

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 and run one of the following commands.

+

For a git repository:

+
$ 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:

+
$ docker run --rm --privileged -v ~/.docker:/root/.docker -v /my_addon:/data homeassistant/amd64-builder --all -t /data
+
+
+

+If you are developing on macOS and using Docker for Mac, you may encounter an error message similar to the following: error creating aufs mount to /var/lib/docker/aufs/mnt/-init: invalid argument</code>. A proposed workaround is to add the following to the Advanced Daemon JSON configuration via Docker > Preferences > Daemon > Advanced: "storage-driver" : "aufs". +

+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_repository/index.html b/developers/hassio/addon_repository/index.html new file mode 100644 index 0000000000..db46ce20a8 --- /dev/null +++ b/developers/hassio/addon_repository/index.html @@ -0,0 +1,312 @@ + + + + + + + + + Create an add-on repository - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Create an add-on repository +

+
+
+

An add-on repository can contain one or more add-ons. Each add-on is stored in its own unique folder. To be indentified as a repository, the repository must contain a configuration file.

+

Check the Example add-on repository for further details.

+

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.

+

Repository configuration

+

Each repository is required to contain repository.json at the root in the git repository.

+
{
+  "name": "Name of repository",
+  "url": "http://www.example/addons",
+  "maintainer": "HomeAssistant Team <info@home-assistant.io>"
+}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
KeyRequiredDescription
nameyesName of the repository
urlnoHomepage of the repository. Here you can explain the various add-ons.
maintainernoContact info of the maintainer.
+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_testing/index.html b/developers/hassio/addon_testing/index.html new file mode 100644 index 0000000000..b6ff95f4c0 --- /dev/null +++ b/developers/hassio/addon_testing/index.html @@ -0,0 +1,288 @@ + + + + + + + + + Local add-on testing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Local add-on 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.

+

Local build

+

You can build and 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 .

+

Local run

+

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

+

Logs

+

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.

+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/addon_tutorial/index.html b/developers/hassio/addon_tutorial/index.html new file mode 100644 index 0000000000..db3c40a3fc --- /dev/null +++ b/developers/hassio/addon_tutorial/index.html @@ -0,0 +1,432 @@ + + + + + + + + + Tutorial: Making your first add-on - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Tutorial: Making your first add-on +

+
+
+

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.

+

To get started with developing add-ons, we first need access to where Hass.io looks for local add-ons. For this you can use the Samba add-on or the SSH add-on.

+

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

+

For SSH, you will have to install it. Before you can start it, you will have to have a private/public key pair and store your public key in the add-on config (see docs for more info). Once started, you can SSH to Hass.io and store your custom add-ons in “/addons”.

+

+ +Once you SSH into your Hass.io box, you have access to your add-ons in “/addons”. +

+

Once you have located your add-on directory, it’s time to get started!

+

Step 1: The basics

+
    +
  • Create a new directory called hello_world
  • +
  • Inside that directory create three files.
  • +
+

Dockerfile:

+
ARG BUILD_FROM
+FROM $BUILD_FROM
+
+ENV LANG C.UTF-8
+
+# Copy data for add-on
+COPY run.sh /
+RUN chmod a+x /run.sh
+
+CMD [ "/run.sh" ]
+
+
+

config.json:

+
{
+  "name": "Hello world",
+  "version": "1",
+  "slug": "hello_world",
+  "description": "My first real add-on!",
+  "startup": "before",
+  "boot": "auto",
+  "options": {},
+  "schema": {}
+}
+
+
+

run.sh:

+
echo Hello world!
+
+
+

Step 2: Installing and testing your add-on

+

Now comes the fun part, time to open the Hass.io UI and install and run your add-on.

+
    +
  • Open the Home Assistant frontend
  • +
  • Go to the Hass.io panel
  • +
  • On the top right click the shopping basket to go to the add-on store.
  • +
+

+ +From the Hass.io main panel open the add-on store. +

+
    +
  • On the top right click the refresh button
  • +
  • You should now see a new card called “Local” that lists your add-on!
  • +
+

+ +The Hass.io add-on store will list all available local add-ons. +

+
    +
  • Click on your add-on to go to the add-on details page.
  • +
  • Install your add-on
  • +
  • Start your add-on
  • +
  • Refresh the logs of your add-on, you should now see “Hello world!” in your logs.
  • +
+

+ +The add-on will print Hello world to the logs and then quit. +

+

I don’t see my add-on?!

+

Oops! You clicked refresh in the store and your add-on didn’t show up. Or maybe you just updated an option, clicked refresh and saw your add-on disappear.

+

When this happens, it means that your config.json is invalid. It’s either invalid JSON or one of the specified options is incorrect. To see what went wrong, go to the Hass.io panel and in the supervisor card click on “View logs”. This should bring you to a page with the logs of the supervisor. Scroll to the bottom and you should be able to find the validation error.

+

Once you fixed the error, go to the add-on store and click refresh again.

+

Step 3: Hosting a server

+

Until now we’ve been able to do some basic stuff, but it’s not very useful yet. So let’s take it one step further and host a server that we expose on a port. For this we’re going to use the built-in HTTP server that comes with Python 3.

+

To do this, we will need to update our files as follows:

+
    +
  • Dockerfile: Install Python 3
  • +
  • config.json: Make the port from the container available on the host
  • +
  • run.sh: Run the Python 3 command to start the HTTP server
  • +
+

Add to your Dockerfile before RUN:

+
# Install requirements for add-on
+RUN apk add --no-cache python3
+
+# Python 3 HTTP Server serves the current working dir
+# So let's set it to our add-on persistent data directory.
+WORKDIR /data
+
+
+

Add “ports” to config.json. This will make TCP on port 8000 inside the container available on the host on port 8000.

+
{
+  "name": "Hello world",
+  "version": "0.2",
+  "slug": "hello_world",
+  "description": "My first real add-on!",
+  "startup": "before",
+  "boot": "auto",
+  "options": {},
+  "schema": {},
+  "ports": {
+    "8000/tcp": 8000
+  }
+}
+
+
+

Update run.sh to start the Python 3 server:

+
python3 -m http.server
+
+
+

Step 4: Installing the update

+

Since we updated the version number in our config.json, Home Assistant will show an update button when looking at the add-on details. You might have to refresh your browser or click the refresh button in the add-on store for it to show up. If you did not update the version number, you can also uninstall and install the add-on again. After installing the add-on again, make sure you start it.

+

Now navigate to http://hassio.local:8000 to see our server in action!

+

+ +The Python 3 server will allow you to browse the /data folder. +

+

Bonus: Working with add-on options

+

In the screenshot you’ve probably seen that our server only served up 1 file: options.json. This file contains the user configuration for this add-on. Because we specified an empty “config” and “schema” in our config.json, the file is currently empty.

+

Let’s see if we can get some data into that file!

+

To do this, we need to specify the default options and a schema for the user to change the options.

+

Change the options and schema entries in your config.json with the following:

+
{
+  
+
+  "options": {
+    "beer": true,
+    "wine": true,
+    "liquor": false,
+    "name": "world",
+    "year": 2017
+  },
+  "schema": {
+    "beer": "bool",
+    "wine": "bool",
+    "liquor": "bool",
+    "name": "str",
+    "year": "int"
+  },
+
+  
+}
+
+
+

Refresh the add-on store and re-install your add-on. You will now see the options available in the add-on config screen. When you now go back to our Python 3 server and download options.json, you’ll see the options you set.

+ +

Next step: Add-on config reference »

+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/architecture/index.html b/developers/hassio/architecture/index.html new file mode 100644 index 0000000000..e927809286 --- /dev/null +++ b/developers/hassio/architecture/index.html @@ -0,0 +1,290 @@ + + + + + + + + + Hass.io Architecture - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Hass.io Architecture +

+
+
+

+ Architecture overview of Hass.io + Architecture overview of Hass.io +

+

Host Control (HC)

+

This is a daemon running on the host machine that allows the supervisor to control certain aspects of the host OS:

+
    +
  • Power cycle (restart, turn off)
  • +
  • Manage network settings
  • +
  • Local updates
  • +
+

Host

+

Our pre-build images are based on ResinOS. Any Linux machine can be turned into a Hass.io host by running the installer.

+

Supervisor

+

The supervisor offers an API to manage the host and running the Docker containers.

+

Configuration panel

+

The configuration panel lives inside the supervisor but is accessible via the Home Assistant user interface. The configuration panel allows the user to manage the installation.

+
+
+ +
+
+ + + + + + + diff --git a/developers/hassio/debugging/index.html b/developers/hassio/debugging/index.html new file mode 100644 index 0000000000..174f6c420f --- /dev/null +++ b/developers/hassio/debugging/index.html @@ -0,0 +1,301 @@ + + + + + + + + + Debugging Hass.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Debugging Hass.io +

+
+
+

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

+

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.

+

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. Instead of the droplet instructions, add the public key as per above instructions.

+

Alternative instructions, for Mac, Windows and Linux can be found here.

+

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, select all text from text box “Public key for pasting into OpenSSH authorized_keys file” and save it 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
+
+
+

Checking the logs

+
# 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
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/helpers/index.html b/developers/helpers/index.html new file mode 100644 index 0000000000..c2b4348409 --- /dev/null +++ b/developers/helpers/index.html @@ -0,0 +1,281 @@ + + + + + + + + + Little online helpers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Little online helpers +

+
+
+

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.

+ +
+
+ +
+
+ + + + + + + diff --git a/developers/index.html b/developers/index.html new file mode 100644 index 0000000000..064ed572ff --- /dev/null +++ b/developers/index.html @@ -0,0 +1,282 @@ + + + + + + + + + Developers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Developers +

+
+
+

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!

+

+Diagram showing interaction between components and the Home Assistant core. +Diagram showing interaction between components and the Home Assistant core. +

+

The best way to familiarize yourself with Home Assistant is to watch the PyCon 2016 talk about Home Assistant and read through the Python API docs.

+
+ +
+
+
+ +
+
+ + + + + + + diff --git a/developers/intent/conversation/index.html b/developers/intent/conversation/index.html new file mode 100644 index 0000000000..e7c367c343 --- /dev/null +++ b/developers/intent/conversation/index.html @@ -0,0 +1,285 @@ + + + + + + + + + Registering sentences - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Registering sentences +

+
+
+

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:

+
@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/developers/intent/firing/index.html b/developers/intent/firing/index.html new file mode 100644 index 0000000000..2fe030d217 --- /dev/null +++ b/developers/intent/firing/index.html @@ -0,0 +1,368 @@ + + + + + + + + + Firing intents - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Firing intents +

+
+
+

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.

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

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
intentIntentInstance of intent that triggered response.
speechDictionarySpeech responses. Each key is a type. Allowed types are plain and ssml.
cardDictionaryCard responses. Each key is a type.
+

Speech dictionary values:

+ + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
speechStringThe text to say
extra_dataAnyExtra information related to this speech.
+

Card dictionary values:

+ + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
titleStringThe title of the card
contentAnyThe content of the card
+
+
+ +
+
+ + + + + + + diff --git a/developers/intent/handling/index.html b/developers/intent/handling/index.html new file mode 100644 index 0000000000..b4d6600d98 --- /dev/null +++ b/developers/intent/handling/index.html @@ -0,0 +1,309 @@ + + + + + + + + + Handling intents - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Handling intents +

+
+
+

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

+
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/developers/intent/index.html b/developers/intent/index.html new file mode 100644 index 0000000000..13028ea39e --- /dev/null +++ b/developers/intent/index.html @@ -0,0 +1,334 @@ + + + + + + + + + Intents - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Intents +

+
+
+

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
hassHome AssistantThe Home Assistant instance that fired the intent.
platformstringThe platform that fired the intent
intent_typestringThe type (name) of the intent
slotsdictionaryContains the slot values keyed by slot name.
text_inputstringOptional. The raw text input that initiated the intent.
+

Description of the slots dictionary values.

+ + + + + + + + + + + + + + + +
NameTypeDescription
ValueanythingValue of the slot.
+
+
+ +
+
+ + + + + + + diff --git a/developers/internationalization/backend_localization/index.html b/developers/internationalization/backend_localization/index.html new file mode 100644 index 0000000000..676f977b3a --- /dev/null +++ b/developers/internationalization/backend_localization/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Backend Localization - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Backend Localization +

+
+
+

Translation Strings

+

Platform translation strings are stored as JSON in the home-assistant repository. These files must be located adjacent to the component/platform they belong to. They are named strings.<component/platform name>.json, unless the component being translated exists in its own directory, in which case the file is simply named strings.json in that directory. This file will contain the different strings that will be translatable. Currently only states are supported by the frontend.

+

After the pull request with the strings file is merged into the dev branch, the strings will be automatically uploaded to Lokalise, where contributors can submit translations. The translated strings in Lokalise will be periodically pulled in to the home-assistant repository.

+

States Localization

+

The first step when localizing platform states is to ensure that the states defined in the actual platform code are defined in snake_case. The states should not contain capital letters or spaces. Next, the strings file needs to be created. The states should exist under the state key, and map the backend state keys to their English translations. The season sensor localization is a good example.

+
+
+ +
+
+ + + + + + + diff --git a/developers/internationalization/custom_component_localization/index.html b/developers/internationalization/custom_component_localization/index.html new file mode 100644 index 0000000000..d1a244d0ff --- /dev/null +++ b/developers/internationalization/custom_component_localization/index.html @@ -0,0 +1,278 @@ + + + + + + + + + Custom Component Localization - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Custom Component Localization +

+
+
+

Translation Strings

+

Unlike localized strings merged in the home-assistant repository, custom components cannot take advantage of Lokalise for user submitted translations. However, custom component authors can still include translation with their components. These will be read from the .translations directory, adjacent to the component source file. They are named <component/platform name>.<language_code>.json, unless the custom component exists in its own directory, in which case the file is simply named <language_code>.json in the .translations directory.

+

These files follow the same formatting as backend translation string files, but a copy will exist for each translated language.

+

The language codes follow the BCP47 format. The frontend translation files can also be referred to if you are unsure of the correct language code to use.

+

The frontend will serve these files after Home Assistant is restarted.

+
+
+ +
+
+ + + + + + + diff --git a/developers/internationalization/index.html b/developers/internationalization/index.html new file mode 100644 index 0000000000..209facc6fe --- /dev/null +++ b/developers/internationalization/index.html @@ -0,0 +1,277 @@ + + + + + + + + + Internationalization - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Internationalization +

+
+
+

The Home Assistant internationalization project includes preparing platforms and the frontend for localization, as well as the actual translation of localized strings.

+

Some compmonents and platforms will have strings that need to be localized specifically for that platform. These strings are managed in the core home-assistant repository. The Home Assistant backend will serve strings to the clients based on the loaded components in the running instance.

+

There are also localizable strings that exist only on the frontend. These strings are managed in the home-assistant-polymer repository. These strings are stored with the frontend and don’t depend on the backend configuration.

+

Our strings are translated by the community using the online translation tool Lokalise.

+
+
+ +
+
+ + + + + + + diff --git a/developers/internationalization/translation/index.html b/developers/internationalization/translation/index.html new file mode 100644 index 0000000000..0398d62f01 --- /dev/null +++ b/developers/internationalization/translation/index.html @@ -0,0 +1,310 @@ + + + + + + + + + Translation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Translation +

+
+
+

How to start

+

Translations for Home Assistant are managed through Lokalise, an online translation management tool. Our translations are split between two projects, a backend project for platform-specific translations, and a frontend project for UI translations. Click the links below to join both projects! Even if your language is completely translated, extra proofreading is a big help! Please feel free to review the existing translations, and vote for alternatives that might be more appropriate.

+ +

For more information about the translation workflow, please see the Lokalise translation workflow documents.

+

+The translation of the Home Assistant frontend is still a work in progress. More phrases will be available for translation soon. +

+

Translation placeholders

+

Some translation strings will contain special placeholders that will be replaced later. Placeholders shown in square brackets [] are Lokalise key references. These are primarily used to link translation strings that will be duplicated. Different languages may not have the same duplicates as English, and are welcome to link duplicate translations that are not linked in English. Placeholders shown in curly brackets {} are translation arguments that will be replaced with a live value when Home Assistant is running. Any translation argument placeholders present in the original string must be included in the translated string. These may include special syntax for defining plurals or other replacement rules. The linked format.js guide explains the syntax for adding plural definitions and other rules.

+

Rules

+
    +
  1. Only native speakers should submit translations.
  2. +
  3. Stick to Material Design guidelines.
  4. +
  5. Don’t translate or change proper nouns like Home Assistant, Hass.io or Hue.
  6. +
  7. For a region specific translation, keys that will be the same as the base translation should be filled with [VOID]. These will be replaced during our translation build process.
  8. +
  9. Translations under the state_badge keys will be used for the notification badge display. These translations should be short enough to fit in the badge label without overflowing. This can be tested in the Home Assistant UI either by editing the label text with your browsers development tools, or by using the States developer tool in the Home Assistant UI. In the UI, enter a new entity ID (device_tracker.test), and enter the text you want to test in state.
  10. +
  11. If text will be duplicated across different translation keys, make use of the Lokalise key reference feature where possible. The base translation provides examples of this underneath the states translations. Please see the Lokalise key referencing documentation for more details.
  12. +
+

Adding a new language

+

If your language is not listed you can request it at GitHub. Please provide both the English name and the native name for your language. For example:

+
English Name: German
+Native Name: Deutsch
+
+
+

+Region specific translations (en-US, fr-CA) will only be included if translations for that region need to differ from the base language translation. +

+

Maintainer steps to add a new language

+
    +
  1. Language tags have to follow BCP 47. A list of most language tags can be found here: IANA sutbtag registry. Examples: fr, fr-CA, zh-Hans. Only include the country code if country specific overrides are being included, and the base language is already translated.
  2. +
  3. Add the language tag and native name in src/translations/translationMetadata.json. Examples: “Français”, “Français (CA)”
  4. +
  5. Add the new language in Lokalize. +Note: Sometimes you have to change the tag in Lokalise (Language -> Language settings -> custom ISO code).
  6. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/license/index.html b/developers/license/index.html new file mode 100644 index 0000000000..21968b9c92 --- /dev/null +++ b/developers/license/index.html @@ -0,0 +1,477 @@ + + + + + + + + + The Apache 2.0 License - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ The Apache 2.0 License +

+
+
+

The Home Assistant source code is released under the following license.

+
                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/maintenance/index.html b/developers/maintenance/index.html new file mode 100644 index 0000000000..588a278ab9 --- /dev/null +++ b/developers/maintenance/index.html @@ -0,0 +1,299 @@ + + + + + + + + + Maintenance - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Maintenance +

+
+
+

This page documents a couple of points for maintaining the Home Assistant code. Most of the tasks don’t need to be performed on a regular base thus the steps, used tools, or details are preserved here.

+

Source code

+

Line separator

+

People are using various operating systems to develop components and platforms for Home Assistant. This could lead to different line endings on file. We prefer LN. Especially Microsoft Windows tools tend to use CRLF.

+
$ find homeassistant -name "*.py" -exec file {} \; | grep BOM
+$ find homeassistant -name "*.py" -exec file {} \; | grep CRLF
+
+
+

To fix the line separator, use dos2unix or sed.

+
$ dos2unix homeassistant/components/notify/kodi.py
+
+
+

File permissions

+

Most files don’t need to the be executable. 0644 is fine.

+

Dependencies

+

A lot of components and platforms depends on third-party Python modules. The dependencies which are stored in the requirements_*.txt files are tracked by gemnasium and Requires.io.

+

If you update the requirements of a component/platform through the REQUIREMENTS = ['modules-xyz==0.3'] entry, run the provided script to update the requirements_*.txt file(s).

+
$ 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 you performed to ensure the update works, and other useful information to the description.

+

Documentation

+
    +
  • Merge current into next on a regular base.
  • +
  • Optimize the images.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/developers/multiple_instances/index.html b/developers/multiple_instances/index.html new file mode 100644 index 0000000000..0fc2b686eb --- /dev/null +++ b/developers/multiple_instances/index.html @@ -0,0 +1,302 @@ + + + + + + + + + Multiple Instances - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Multiple Instances +

+
+
+

This has been deprecated and is no longer supported.

+

Home Assistant supports running multiple synchronized instances using a master-slave model. Whenever events.fire or states.set is called on the slave it will forward it to the master. The master will replicate all events and changed states to its slaves.

+

+ + + + Overview of the Home Assistant architecture for multiple devices. +

+

A slave instance can be started with the following code and has the same support for components as a master instance.

+
import homeassistant.remote as remote
+import homeassistant.bootstrap as bootstrap
+
+# Location of the Master API: host, password, port.
+# Password and port are optional.
+remote_api = remote.API("127.0.0.1", "password", 8124)
+
+# Initialize slave
+hass = remote.HomeAssistant(remote_api)
+
+# To add an interface to the slave on localhost:8123
+bootstrap.setup_component(hass, 'frontend')
+
+hass.start()
+hass.block_till_stopped()
+
+
+

+Because each slave maintains its own Service Registry it is possible to have multiple slaves respond to one service call. +

+
+
+ +
+
+ + + + + + + diff --git a/developers/platform_example_light/index.html b/developers/platform_example_light/index.html new file mode 100644 index 0000000000..ed61c7eacb --- /dev/null +++ b/developers/platform_example_light/index.html @@ -0,0 +1,381 @@ + + + + + + + + + Example light platform - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Example light platform +

+
+
+

This example is for adding support for the imaginary Awesome Lights. It shows the different best practices for developing a platform.

+

Similar to Example Sensor Platform, copy the code below, and create it as a file in <config_dir>/custom_components/light/awesomelights.py.

+

Add the following to your configuration.yaml:

+
light:
+  - platform: awesomelights
+    host: HOST_HERE
+    username: USERNAME_HERE
+    password: PASSWORD_HERE_OR_secrets.yaml
+
+
+

Note the platform name matches the filename for the source code.

+
import logging
+
+import voluptuous as vol
+
+# Import the device class from the component that you want to support
+from homeassistant.components.light import ATTR_BRIGHTNESS, Light, PLATFORM_SCHEMA
+from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD
+import homeassistant.helpers.config_validation as cv
+
+# Home Assistant depends on 3rd party packages for API specific code.
+REQUIREMENTS = ['awesome_lights==1.2.3']
+
+_LOGGER = logging.getLogger(__name__)
+
+# Validation of the user's configuration
+PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+    vol.Required(CONF_HOST): cv.string,
+    vol.Optional(CONF_USERNAME, default='admin'): cv.string,
+    vol.Optional(CONF_PASSWORD): cv.string,
+})
+
+
+def setup_platform(hass, config, add_devices, discovery_info=None):
+    """Setup the Awesome Light platform."""
+    import awesomelights
+
+    # Assign configuration variables. The configuration check takes care they are
+    # present. 
+    host = config.get(CONF_HOST)
+    username = config.get(CONF_USERNAME)
+    password = config.get(CONF_PASSWORD)
+
+    # Setup connection with devices/cloud
+    hub = awesomelights.Hub(host, username, password)
+
+    # Verify that passed in configuration works
+    if not hub.is_valid_login():
+        _LOGGER.error("Could not connect to AwesomeLight hub")
+        return False
+
+    # Add devices
+    add_devices(AwesomeLight(light) for light in hub.lights())
+
+
+
+class AwesomeLight(Light):
+    """Representation of an Awesome Light."""
+
+    def __init__(self, light):
+        """Initialize an AwesomeLight."""
+        self._light = light
+        self._name = light.name
+        self._state = None
+        self._brightness = None
+
+    @property
+    def name(self):
+        """Return the display name of this light."""
+        return self._name
+
+    @property
+    def brightness(self):
+        """Return the brightness of the light.
+
+        This method is optional. Removing it indicates to Home Assistant
+        that brightness is not supported for this light.
+        """
+        return self._brightness
+
+    @property
+    def is_on(self):
+        """Return true if light is on."""
+        return self._state
+
+    def turn_on(self, **kwargs):
+        """Instruct the light to turn on.
+
+        You can skip the brightness part if your light does not support
+        brightness control.
+        """
+        self._light.brightness = kwargs.get(ATTR_BRIGHTNESS, 255)
+        self._light.turn_on()
+
+    def turn_off(self, **kwargs):
+        """Instruct the light to turn off."""
+        self._light.turn_off()
+
+    def update(self):
+        """Fetch new state data for this light.
+
+        This is the only method that should fetch new data for Home Assistant.
+        """
+        self._light.update()
+        self._state = self._light.is_on()
+        self._brightness = self._light.brightness
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/platform_example_sensor/index.html b/developers/platform_example_sensor/index.html new file mode 100644 index 0000000000..5a77e64ae3 --- /dev/null +++ b/developers/platform_example_sensor/index.html @@ -0,0 +1,322 @@ + + + + + + + + + Example sensor platform - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Example sensor platform +

+
+
+

This is a minimum implementation of a platform for the sensor component.

+

Installation

+

Copy the code below and create it as a file in <config_dir>/custom_components/sensor/example.py.

+

Add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+sensor:
+  platform: example
+
+
+

Code

+
from homeassistant.const import TEMP_CELSIUS
+from homeassistant.helpers.entity import Entity
+
+
+def setup_platform(hass, config, add_devices, discovery_info=None):
+    """Setup the sensor platform."""
+    add_devices([ExampleSensor()])
+
+
+class ExampleSensor(Entity):
+    """Representation of a Sensor."""
+
+    def __init__(self):
+        """Initialize the sensor."""
+        self._state = None
+
+    @property
+    def name(self):
+        """Return the name of the sensor."""
+        return 'Example Temperature'
+
+    @property
+    def state(self):
+        """Return the state of the sensor."""
+        return self._state
+
+    @property
+    def unit_of_measurement(self):
+        """Return the unit of measurement."""
+        return TEMP_CELSIUS
+
+    def update(self):
+        """Fetch new state data for the sensor.
+
+        This is the only method that should fetch new data for Home Assistant.
+        """
+        self._state = 23
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/python_api/index.html b/developers/python_api/index.html new file mode 100644 index 0000000000..49149e9f9e --- /dev/null +++ b/developers/python_api/index.html @@ -0,0 +1,453 @@ + + + + + + + + + Python Remote API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Python Remote API +

+
+
+

See the developer documentation for a full overview of the documentation. The rest of this page will contain examples on how to use it.

+

In the package homeassistant.remote a Python API on top of the HTTP API can be found. If you are not using the frontend in your setup then you need to add the api component to your configuration.yaml file to use the Python Remote API.

+

A simple way to get all current entities is to visit the “Set State” page in the “Developer Tools”. For the examples below just choose one from the available entries. Here the sensor sensor.office_temperature and the switch switch.livingroom_pin_2 are used.

+

First import the module and setup the basics:

+
import homeassistant.remote as remote
+
+api = remote.API('127.0.0.1', 'password')
+print(remote.validate_api(api))
+
+
+

Get configuration

+

Get the current configuration of a Home Assistant instance:

+
import homeassistant.remote as remote
+
+api = remote.API('127.0.0.1', 'password')
+
+print(remote.get_config(api))
+
+
+

Get details about services, events, and entitites

+

The output from this is similar to the output you’d find via the frontend, using the Developer Tools.

+
import homeassistant.remote as remote
+
+api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
+
+print('-- Available services:')
+services = remote.get_services(api)
+for service in services:
+    print(service['services'])
+
+print('\n-- Available events:')
+events = remote.get_event_listeners(api)
+for event in events:
+    print(event)
+
+print('\n-- Available entities:')
+entities = remote.get_states(api)
+for entity in entities:
+    print(entity)
+
+
+

Get the state of an entity

+

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

+
Office Temperature is 19 °C.
+
+
+

Switches work the same way. The only difference is that both entities have different attributes.

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

Set the state of an entity

+

Of course, it’s possible to set the state as well:

+
import homeassistant.remote as remote
+from homeassistant.const import STATE_ON
+
+api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
+remote.set_state(api, 'sensor.office_temperature', new_state=123)
+remote.set_state(api, 'switch.livingroom_pin_2', new_state=STATE_ON)
+
+
+

The state will be set to the new values until the next update occurs.

+

Blinking all entities of a domain

+

If you want to turn on all entities of a domain, retrieve the service via get_services and act on that:

+
import time
+import homeassistant.remote as remote
+
+api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
+domain = 'switch'
+
+remote.call_service(api, domain, 'turn_on')
+time.sleep(10)
+remote.call_service(api, domain, 'turn_off')
+
+
+

Control a single entity

+

To turn on or off a single switch, pass the ID of the entity:

+
import time
+import homeassistant.remote as remote
+
+api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
+domain = 'switch'
+switch_name = 'switch.livingroom_pin_2'
+
+remote.call_service(api, domain, 'turn_on', {'entity_id': '{}'.format(switch_name)})
+time.sleep(5)
+remote.call_service(api, domain, 'turn_off', {'entity_id': '{}'.format(switch_name)})
+
+
+

Specify a timeout

+

The default timeout for an API call with call_service is 5 seconds. Services +taking longer than this to return will raise +homeassistant.exceptions.HomeAssistantError: Timeout, unless provided with a +longer timeout.

+
import homeassistant.remote as remote
+
+api = remote.API('host', 'password')
+domain = 'switch'
+
+# Assuming switch.timeout_switch takes 10 seconds to return
+switch_name = 'switch.timeout_switch'
+
+# Raises homeassistant.exceptions.HomeAssistantError: Timeout when talking to
+remote.call_service(api, domain, 'turn_on', {'entity_id': switch_name})
+
+# Runs withous exception
+remote.call_service(api, domain, 'turn_on', {'entity_id': switch_name},
+                    timeout=11)
+
+
+

Send a notification

+

The example uses the Jabber notification platform to send a single message to the given recipient in the configuration.yaml file:

+
import homeassistant.remote as remote
+
+api = remote.API('127.0.0.1', 'YOUR_PASSWORD')
+domain = 'notify'
+data = {"title":"Test", "message":"A simple test message from HA."}
+
+remote.call_service(api, domain, 'jabber', data)
+
+
+

Examples

+

This section contains a couple of sample scripts.

+

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.

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

Show difference between last_changed and last_updated

+

The documentation about the State Objects describes the +last_changed and last_updated fields. This example shows how it works in practice.

+
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/developers/releasing/index.html b/developers/releasing/index.html new file mode 100644 index 0000000000..f6e8fb9612 --- /dev/null +++ b/developers/releasing/index.html @@ -0,0 +1,329 @@ + + + + + + + + + Releasing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Releasing +

+
+
+

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 script is a helper to do a release.

+

Release preparation (3 days before release)

+

GitHub

+
    +
  1. Merge master into dev to make the PR mergeable.
  2. +
  3. Cut a release branch from dev. Example name release-0-57.
  4. +
  5. Create a pull request from the release branch to master with the upcoming release number as the title.
  6. +
  7. Update homeassistant/const.py with the correct version number (remove the dev tag) and push that commit to release branch.
  8. +
+

Website

+
    +
  1. Merge current into next
  2. +
  3. Cut release branch of next. For example release-0-57.
  4. +
  5. Open a PR from release branch to current with the upcoming release number as the title.
  6. +
+

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

+

GitHub

+
    +
  1. Cherry-pick the milestoned PRs that need to get into the release python3 -m hassrelease milestone_cherry_pick 0.57
  2. +
  3. Run python3 -m hassrelease release_notes 0.56 for the release notes.
  4. +
  5. Once the release notes has been generated, issue python3 -m hassrelease milestone_close 0.56
  6. +
  7. Merge pull request (DO NOT SQUASH!). Use Merge pull request.
  8. +
  9. Go to 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.
  10. +
  11. Merge master into dev.
  12. +
  13. Update homeassistant/const.py with the upcoming version number (including the dev tag) and push that commit to the dev branch.
  14. +
+

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. +
  3. Create missing documentation as stubs.
  4. +
  5. Run credits_generator.
  6. +
  7. Update _config.yml with a link to the new release blog post and version number (at the bottom of the file).
  8. +
  9. Merge current into release branch ($ git checkout release-0-40 && git merge current) to make the PR mergeable.
  10. +
  11. Merge pull request (blog post, updated frontpage, and all new documentation) to current. DO NOT SQUASH!
  12. +
  13. Merge current into next.
  14. +
+

Docker Hub

+

Tags on Docker hub are automatically created when a release has been created on GitHub.

+

Python Package Index

+

Checkout the master branch and run script/release to publish the new release on Python Package Index.

+

Social media

+
    +
  1. Use hootsuite to publish a link to the release post on social media.
  2. +
+

Bugfix Release

+
    +
  1. Checkout master and update it. git checkout master && git pull --rebase
  2. +
  3. Create a new release branch from master. git checkout -b release-0-56-2
  4. +
  5. Cherry-pick the PRs which were milestoned.
  6. +
  7. Update homeassistant/const.py with the correct version number (increment PATCH_VERSION) and push that commit to release branch.
  8. +
  9. Create a pull request from the release branch to master with the upcoming release number as the title.
  10. +
  11. Merge pull request (DO NOT SQUASH!). Use Merge pull request.
  12. +
  13. Go to 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.
  14. +
  15. Publish the new release on PyPI.
  16. +
+
+
+ +
+
+ + + + + + + diff --git a/developers/rest_api/index.html b/developers/rest_api/index.html new file mode 100644 index 0000000000..392dcbec15 --- /dev/null +++ b/developers/rest_api/index.html @@ -0,0 +1,686 @@ + + + + + + + + + RESTful API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ RESTful API +

+
+
+

Home Assistant runs a web server accessible on port 8123.

+
    +
  • http://IP_ADDRESS:8123/ is an interface to control Home Assistant.
  • +
  • http://IP_ADDRESS:8123/api/ is a Rest API.
  • +
+

The API accepts and returns only JSON encoded objects. All API calls have to be accompanied by the header X-HA-Access: YOUR_PASSWORD (YOUR_PASSWORD as specified in your configuration.yaml file in the http: section).

+

If you are not using the frontend in your setup then you need to add the api component to your configuration.yaml file.

+

There are multiple ways to consume the Home Assistant Rest API. One is with curl:

+
curl -X GET \
+    -H "x-ha-access: YOUR_PASSWORD" \
+    -H "Content-Type: application/json" \
+    http://IP_ADDRESS:8123/ENDPOINT
+
+
+

Another option is to use Python and the Requests module. =

+
from requests import get
+
+url = 'http://localhost:8123/ENDPOINT'
+headers = {'x-ha-access': 'YOUR_PASSWORD',
+           'content-type': 'application/json'}
+
+response = get(url, headers=headers)
+print(response.text)
+
+
+

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

+
    +
  • 400 (Bad Request)
  • +
  • 401 (Unauthorized)
  • +
  • 404 (Not Found)
  • +
  • 405 (Method not allowed)
  • +
+

Actions

+

The API supports the following actions:

+

GET /api/

+

Returns a message if the API is up and running.

+
{
+  "message": "API running."
+}
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/
+
+
+

GET /api/config

+

Returns the current configuration as JSON.

+
{
+   "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/"
+   ]
+}
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/config
+
+
+

GET /api/discovery_info

+

Returns basic information about the Home Assistant instance as JSON.

+
{
+    "base_url": "http://192.168.0.2:8123",
+    "location_name": "Home",
+    "requires_api_password": true,
+    "version": "0.56.2"
+}
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/discovery_info
+
+
+

GET /api/events

+

Returns an array of event objects. Each event object contains event name and listener count.

+
[
+    {
+      "event": "state_changed",
+      "listener_count": 5
+    },
+    {
+      "event": "time_changed",
+      "listener_count": 2
+    }
+]
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/events
+
+
+

GET /api/services

+

Returns an array of service objects. Each object contains the domain and which services it contains.

+
[
+    {
+      "domain": "browser",
+      "services": [
+        "browse_url"
+      ]
+    },
+    {
+      "domain": "keyboard",
+      "services": [
+        "volume_up",
+        "volume_down"
+      ]
+    }
+]
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/services
+
+
+

GET /api/history/period/<timestamp>

+

Returns an array of state changes in the past. Each object contains further details for the entities.

+

The <timestamp> (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=<entity_id> to filter on a single entity
  • +
  • end_time=<timestamp> to choose the end of the period in URL encoded format (defaults to 1 day).
  • +
+
[
+    [
+        {
+            "attributes": {
+                "friendly_name": "Weather Temperature",
+                "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",
+            "state": "-3.9"
+        },
+        {
+            "attributes": {
+                "friendly_name": "Weather Temperature",
+                "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",
+            "state": "-1.9"
+        },
+    ]
+]
+
+
+

Sample curl commands:

+
$ 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
+
+
+
$ 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?filter_entity_id=sensor.temperature
+
+
+
$ 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
+
+
+

GET /api/states

+

Returns an array of state objects. Each state has the following attributes: entity_id, state, last_changed and attributes.

+
[
+    {
+        "attributes": {},
+        "entity_id": "sun.sun",
+        "last_changed": "2016-05-30T21:43:32.418320+00:00",
+        "state": "below_horizon"
+    },
+    {
+        "attributes": {},
+        "entity_id": "process.Dropbox",
+        "last_changed": "22016-05-30T21:43:32.418320+00:00",
+        "state": "on"
+    }
+]
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/states
+
+
+

GET /api/states/<entity_id>

+

Returns a state object for specified entity_id. Returns 404 if not found.

+
{
+   "attributes":{
+      "azimuth":336.34,
+      "elevation":-17.67,
+      "friendly_name":"Sun",
+      "next_rising":"2016-05-31T03:39:14+00:00",
+      "next_setting":"2016-05-31T19:16:42+00:00"
+   },
+   "entity_id":"sun.sun",
+   "last_changed":"2016-05-30T21:43:29.204838+00:00",
+   "last_updated":"2016-05-30T21:50:30.529465+00:00",
+   "state":"below_horizon"
+}
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       http://localhost:8123/api/states/sensor.kitchen_temperature
+
+
+

GET /api/error_log

+

Retrieve all errors logged during the current session of Home Assistant as a plaintext response.

+
15-12-20 11:02:50 homeassistant.components.recorder: Found unfinished sessions
+15-12-20 11:03:03 netdisco.ssdp: Error fetching description at http://192.168.1.1:8200/rootDesc.xml
+15-12-20 11:04:36 homeassistant.components.alexa: Received unknown intent HelpIntent
+
+
+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       http://localhost:8123/api/error_log
+
+
+

GET /api/camera_proxy/camera.<entity_id>

+

Returns the data (image) from the specified camera entity_id.

+

Sample curl command:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       http://localhost:8123/api/camera_proxy/camera.my_sample_camera?time=1462653861261 -o image.jpg
+
+
+

POST /api/states/<entity_id>

+

Updates or creates the current state of an entity.

+

Expects a JSON object that has at least a state attribute:

+
{
+    "state": "below_horizon",
+    "attributes": {
+        "next_rising":"2016-05-31T03:39:14+00:00",
+        "next_setting":"2016-05-31T19:16:42+00:00"
+    }
+}
+
+
+

The return code is 200 if the entity existed, 201 if the state of a new entity was set. A location header will be returned with the URL of the new resource. The response body will contain a JSON encoded State object.

+
{
+    "attributes": {
+        "next_rising":"2016-05-31T03:39:14+00:00",
+        "next_setting":"2016-05-31T19:16:42+00:00"
+    },
+    "entity_id": "sun.sun",
+    "last_changed": "2016-05-30T21:43:29.204838+00:00",
+    "last_updated": "2016-05-30T21:47:30.533530+00:00",
+    "state": "below_horizon"
+}
+
+
+

Sample curl command:

+
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       -d '{"state": "25", "attributes": {"unit_of_measurement": "°C"}}' \
+       http://localhost:8123/api/states/sensor.kitchen_temperature
+
+
+

POST /api/events/<event_type>

+

Fires an event with event_type

+

You can pass an optional JSON object to be used as event_data.

+
{
+    "next_rising":"2016-05-31T03:39:14+00:00",
+}
+
+
+

Returns a message if successful.

+
{
+    "message": "Event download_file fired."
+}
+
+
+

POST /api/services/<domain>/<service>

+

Calls a service within a specific domain. Will return when the service has been executed or after 10 seconds, whichever comes first.

+

You can pass an optional JSON object to be used as service_data.

+
{
+    "entity_id": "light.Ceiling"
+}
+
+
+

Returns a list of states that have changed while the service was being executed.

+
[
+    {
+        "attributes": {},
+        "entity_id": "sun.sun",
+        "last_changed": "2016-05-30T21:43:32.418320+00:00",
+        "state": "below_horizon"
+    },
+    {
+        "attributes": {},
+        "entity_id": "process.Dropbox",
+        "last_changed": "22016-05-30T21:43:32.418320+00:00",
+        "state": "on"
+    }
+]
+
+
+

Sample curl commands:

+

Turn the light on:

+
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       -d '{"entity_id": "switch.christmas_lights"}' \
+       http://localhost:8123/api/services/switch/turn_on
+
+
+

Send a MQTT message:

+
$ curl -X POST \
+     -H "Content-Type: application/json" \
+     -H "x-ha-access:YOUR_PASSWORD" \
+     -d '{"payload": "OFF", "topic": "home/fridge", "retain": "True"}' \
+     http://localhost:8123/api/services/mqtt/publish
+
+
+

+The result will include any states that changed while the service was being executed, even if their change was the result of something else happening in the system. +

+

POST /api/template

+

Render a Home Assistant template. See template docs for more information.

+
{
+    "template": "Paulus is at {{ states('device_tracker.paulus') }}!"
+}
+
+
+

Returns the rendered template in plain text.

+
Paulus is at work!
+
+
+

Sample curl command:

+
$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" \
+       -d '{"template": "It is !"}' http://localhost:8123/api/template
+
+
+

POST /api/event_forwarding

+

Set up event forwarding to another Home Assistant instance.

+

Requires a JSON object that represents the API to forward to.

+
{
+    "host": "machine",
+    "api_password": "my_super_secret_password",
+    "port": 8880 // optional
+}
+
+
+

It will return a message if event forwarding was set up successfully.

+
{
+    "message": "Event forwarding setup."
+}
+
+
+

DELETE /api/event_forwarding

+

Cancel event forwarding to another Home Assistant instance.

+

Requires a JSON object that represents the API to cancel forwarding to.

+
{
+    "host": "machine",
+    "api_password": "my_super_secret_password",
+    "port": 8880 // optional
+}
+
+
+

It will return a message if event forwarding was canceled successfully.

+
{
+    "message": "Event forwarding cancelled."
+}
+
+
+

+If your client does not support DELETE HTTP requests you can add an optional attribute _METHOD and set its value to DELETE. +

+
+
+ +
+
+ + + + + + + diff --git a/developers/server_sent_events/index.html b/developers/server_sent_events/index.html new file mode 100644 index 0000000000..1e5725eebc --- /dev/null +++ b/developers/server_sent_events/index.html @@ -0,0 +1,318 @@ + + + + + + + + + Server-sent events - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Server-sent events +

+
+
+

The server-sent events feature is a one-way channel from your Home Assistant server to a client which is acting as a consumer. For bi-directional communication check the RESTful API and Python API.

+

The URI that is generating the data is /api/stream.

+

A requirement on the client-side is existing support for the EventSource interface.

+

There are various ways to access the stream. If you have not set an api_password in the http section of your configuration.yaml file then you use your modern browser to read the messages. A command-line option is curl:

+
$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \
+       -H "Content-Type: application/json" http://localhost:8123/api/stream
+
+
+

You can create a convenient view for this by creating an HTML file (sse.html) in the www folder of your Home Assistant configuration directory (.homeassistant). Paste this snippet into the file:

+
<!DOCTYPE html>
+<html>
+<body>
+    <h1>Getting Home Assistant server events</h1>
+    <div id="events"></div>
+    <script type="text/javascript">
+        var source = new EventSource("/api/stream?api_password=YOUR_PASSWORD");
+        source.onmessage = function(event) {
+            document.getElementById("events").innerHTML += event.data + "<br>";
+        };
+    </script>
+</body>
+</html>
+
+
+

Visit http://localhost:8123/local/sse.html to see the stream of events.

+

Examples

+

A simple way to consume server-sent events is to use a command-line http client like httpie. Installation info is on the site (if you use Homebrew, it’s brew install httpie). Once installed, run this snippet from your terminal:

+
$ http --stream http://localhost:8123/api/stream x-ha-access:YOUR_PASSWORD content-type:application/json
+
+
+

Website

+

The home-assistant-sse repository contains a more advanced example.

+

Python

+

If you want to test the server-sent events without creating a website, the Python module sseclient can help. To install (assuming Python and pip3 are already installed):

+
$ pip3 install sseclient
+
+
+

A simple script to consume SSE in Python looks like this:

+
from sseclient import SSEClient
+
+messages = SSEClient('http://localhost:8123/api/stream?api_password=YOUR_PASSWORD')
+for msg in messages:
+    print(msg)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/developers/website/index.html b/developers/website/index.html new file mode 100644 index 0000000000..24bef2b52f --- /dev/null +++ b/developers/website/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/developers/websocket_api/index.html b/developers/websocket_api/index.html new file mode 100644 index 0000000000..4361cfbaf8 --- /dev/null +++ b/developers/websocket_api/index.html @@ -0,0 +1,580 @@ + + + + + + + + + WebSocket API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ WebSocket API +

+
+
+

Home Assistant contains a WebSocket API. This API can be used to stream information from a Home Assistant instance to any client that implements WebSocket. Implementations in different languages:

+ +

Connect your websocket implementation to ws://localhost:8123/api/websocket.

+

If you are not using the frontend in your setup then you need to add the websocket_api component to your configuration.yaml file to use the WebSocket API.

+

Server states

+
    +
  1. Client connects.
  2. +
  3. Authentication phase starts. +
      +
    • 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.
    • +
    +
  4. +
  5. Send auth_ok message
  6. +
  7. Authentication phase ends.
  8. +
  9. Command phase starts. +
      +
    1. Client can send commands.
    2. +
    3. Server can send results of previous commands.
    4. +
    +
  10. +
  11. Client or server disconnects session.
  12. +
+

During the command phase, the client attaches a unique identifier to each message. The server will add this identifier to each message so that the client can link each message to its origin.

+

Message format

+

Each API message is a JSON serialized object containing a type key. After the authentication phase messages also must contain an id, an integer that contains the number of interactions.

+

Example of an auth message:

+
{
+  "type": "auth",
+  "api_password": "supersecret"
+}
+
+
+
{
+   "id" 5,
+   "type":"event",
+   "event":{
+      "data":{},
+      "event_type":"test_event",
+      "time_fired":"2016-11-26T01:37:24.265429+00:00",
+      "origin":"LOCAL"
+   }
+}
+
+
+

Authentication phase

+

When a client connects to the server, the server will test if the client is authenticated. Authentication will not be necessary if no api_password is set or if the user fulfills one of the other criteria for authentication (trusted network, password in url/header).

+

If no authentication is needed, the authentication phase will complete and the server will send an auth_ok message.

+
{
+  "type": "auth_ok"
+}
+
+
+

If authentication is necessary, the server sends out auth_required.

+
{
+  "type": "auth_required"
+}
+
+
+

This means that the next message from the client should be an auth message:

+
{
+  "type": "auth",
+  "api_password": "supersecret"
+}
+
+
+

If the client supplies valid authentication, the authentication phase will complete by the server sending the auth_ok message:

+
{
+  "type": "auth_ok"
+}
+
+
+

If the data is incorrect, the server will reply with auth_invalid message and disconnect the session.

+
{
+  "type": "auth_invalid",
+  "message": "Invalid password"
+}
+
+
+

Command phase

+

During this phase the client can give commands to the server. The server will respond to each command with a result message indicating when the command is done and if it was successful.

+
{
+  "id": 6.
+  "type": "result",
+  "success": true,
+  // Can contain extra result info
+  "result": null
+}
+
+
+

Subscribe to events

+

The command subscribe_events will subscribe your client to the event bus. You can either listen to all events or to a specific event type. If you want to listen to multiple event types, you will have to send multiple subscribe_events commands.

+
{
+  "id": 18,
+  "type": "subscribe_events",
+  // Optional
+  "event_type": "state_changed"
+}
+
+
+

The server will respond with a result message to indicate that the subscription is active.

+
{
+  "id": 18,
+  "type": "result",
+  "success": true,
+  "result": null
+}
+
+
+

For each event that matches, the server will send a message of type event. The id in the message will point at the original id of the listen_event command.

+
{
+   "id": 18,
+   "type":"event",
+   "event":{
+      "data":{
+         "entity_id":"light.bed_light",
+         "new_state":{
+            "entity_id":"light.bed_light",
+            "last_changed":"2016-11-26T01:37:24.265390+00:00",
+            "state":"on",
+            "attributes":{
+               "rgb_color":[
+                  254,
+                  208,
+                  0
+               ],
+               "color_temp":380,
+               "supported_features":147,
+               "xy_color":[
+                  0.5,
+                  0.5
+               ],
+               "brightness":180,
+               "white_value":200,
+               "friendly_name":"Bed Light"
+            },
+            "last_updated":"2016-11-26T01:37:24.265390+00:00"
+         },
+         "old_state":{
+            "entity_id":"light.bed_light",
+            "last_changed":"2016-11-26T01:37:10.466994+00:00",
+            "state":"off",
+            "attributes":{
+               "supported_features":147,
+               "friendly_name":"Bed Light"
+            },
+            "last_updated":"2016-11-26T01:37:10.466994+00:00"
+         }
+      },
+      "event_type":"state_changed",
+      "time_fired":"2016-11-26T01:37:24.265429+00:00",
+      "origin":"LOCAL"
+   }
+}
+
+
+

Unsubscribing from events

+

You can unsubscribe from previously created subscription events. Pass the id of the original subscription command as value to the subscription field.

+
{
+  "id": 19,
+  "type": "unsubscribe_events",
+  "subscription": 18
+}
+
+
+

The server will respond with a result message to indicate that unsubscribing was successful.

+
{
+  "id": 19,
+  "type": "result",
+  "success": true,
+  "result": null
+}
+
+
+

Calling a service

+

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.

+
{
+  "id": 24,
+  "type": "call_service",
+  "domain": "light",
+  "service": "turn_on",
+  // Optional
+  "service_data": {
+    "entity_id": "light.kitchen"
+  }
+}
+
+
+

The server will indicate with a message indicating that the service is done executing.

+
{
+  "id": 24,
+  "type": "result",
+  "success": true,
+  "result": null
+}
+
+
+

Fetching states

+

This will get a dump of all the current states in Home Assistant.

+
{
+  "id": 19,
+  "type": "get_states"
+}
+
+
+

The server will respond with a result message containing the states.

+
{
+  "id": 19,
+  "type": "result",
+  "success": true,
+  "result": [ ... ]
+}
+
+
+

Fetching config

+

This will get a dump of the current config in Home Assistant.

+
{
+  "id": 19,
+  "type": "get_config"
+}
+
+
+

The server will respond with a result message containing the config.

+
{
+  "id": 19,
+  "type": "result",
+  "success": true,
+  "result": { ... }
+}
+
+
+

Fetching services

+

This will get a dump of the current services in Home Assistant.

+
{
+  "id": 19,
+  "type": "get_services"
+}
+
+
+

The server will respond with a result message containing the services.

+
{
+  "id": 19,
+  "type": "result",
+  "success": true,
+  "result": { ... }
+}
+
+
+

Fetching panels

+

This will get a dump of the current registered panels in Home Assistant.

+
{
+  "id": 19,
+  "type": "get_panels"
+}
+
+
+

The server will respond with a result message containing the current registered panels.

+
{
+  "id": 19,
+  "type": "result",
+  "success": true,
+  "result": [ ... ]
+}
+
+
+

Error handling

+

If an error occurs, the success key in the result message will be set to false. It will contain an error key containing an object with two keys: code and message.

+ + + + + + + + + + + + + + + + + + + + + +
CodeDescription
1A non-increasing identifier has been supplied.
2Received message is not in expected format (voluptuous validation error).
3Requested item cannot be found
+
{
+   "id": 12,
+   "type":"result",
+   "success": false,
+   "error": {
+      "code": 2,
+      "message": "Message incorrectly formatted: expected str for dictionary value @ data['event_type']. Got 100"
+   }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/asterisk_mbox/index.html b/docs/asterisk_mbox/index.html new file mode 100644 index 0000000000..d3b4738700 --- /dev/null +++ b/docs/asterisk_mbox/index.html @@ -0,0 +1,431 @@ + + + + + + + + + Asterisk Voicemail Server Installation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Asterisk Voicemail Server Installation +

+
+
+

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

+

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

+

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

Installation

+
    +
  1. +

    Apply for a Google API key to enable speech-transcription services

    +
  2. +
  3. +

    Install the asterisk_mbox_server python module:

    +
    $ pip3 install asterisk_mbox_server
    +
    +
    +
  4. +
  5. +

    Create a configuration file for the server

    +

    As the asterisk user create an asterisk_mbox.ini file (You can place this in any directory you choose, but the rommended location is /etc/asterisk/asterisk_mbox.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/<mailbox>/
    • +
    • 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:

    +
    $ sudo chown asterisk:asterisk /etc/asterisk/asterisk_mbox.ini
    +$ sudo chmod 600 /etc/asterisk/asterisk_mbox.ini
    +
    +
    +
  6. +
  7. +

    Interactively start the server to verify it is functioning

    +
    $ sudo -u asterisk asterisk_mbox_server -v --cfg /etc/asterisk/asterisk_mbox.ini
    +
    +
    +

    Now complete the Home Assistant configuration and verify that Home Assistant can communicate with the server

    +

    You can use Ctrl-C to terminate the server when done testing

    +
  8. +
  9. +

    Configure the server to start automatically

    +

    Copy the following code into /etc/systemd/system/asterisk_mbox.service:

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

+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/docs/automation/action/index.html b/docs/automation/action/index.html new file mode 100644 index 0000000000..571468a023 --- /dev/null +++ b/docs/automation/action/index.html @@ -0,0 +1,396 @@ + + + + + + + + + Automation Actions - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automation Actions +

+
+
+

The action of an automation rule is what is being executed when a rule fires. The action part follows the script syntax which can be used to interact with anything via services or events. For services you can specify the entity_id that it should apply to and optional service parameters (to specify for example the brightness).

+

You can also call the service to activate a scene which will allow you to define how you want your devices to be and have Home Assistant call the right services.

+
automation:
+  # Change the light in the kitchen and living room to 150 brightness and color red.
+  trigger:
+    platform: sun
+    event: sunset
+  action:
+    service: light.turn_on
+    entity_id:
+      - light.kitchen
+      - light.living_room
+    data:
+      brightness: 150
+      rgb_color: [255, 0, 0]
+
+automation 2:
+  # Notify me on my mobile phone of an event
+  trigger:
+    platform: sun
+    event: sunset
+    offset: -00:30
+  action:
+    # Actions are scripts so can also be a list of actions
+    - service: notify.notify
+      data:
+        message: Beautiful sunset!
+    - delay: 0:35
+    - service: notify.notify
+      data:
+        message: Oh wow you really missed something great.
+
+
+

Conditions can also be part of an action. You can combine multiple service calls and conditions in a single action, and they will be processed in the order you put them in. If the result of a condition is false, the action will stop there so any service calls after that condition will not be executed.

+
automation:
+- alias: 'Enciende Despacho'
+  trigger:
+    platform: state
+    entity_id: sensor.mini_despacho
+    to: 'ON'
+  action:
+    - service: notify.notify
+      data:
+        message: Testing conditional actions
+    - condition: or
+      conditions:
+        - condition: template
+          value_template: '{{ states.sun.sun.attributes.elevation < 4 }}'
+        - condition: template
+          value_template: '{{ states.sensor.sensorluz_7_0.state < 10 }}'
+    - service: scene.turn_on
+      entity_id: scene.DespiertaDespacho
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/condition/index.html b/docs/automation/condition/index.html new file mode 100644 index 0000000000..90c7993f7f --- /dev/null +++ b/docs/automation/condition/index.html @@ -0,0 +1,362 @@ + + + + + + + + + Automation Conditions - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automation Conditions +

+
+
+

Conditions are an optional part of an automation rule and can be used to prevent an action from happening when triggered. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off.

+

The available conditions for an automation are the same as for the script syntax so see that page for a full list of available conditions.

+

Example of using condition:

+
- alias: 'Enciende Despacho'
+  trigger:
+    platform: state
+    entity_id: sensor.mini_despacho
+    to: 'on'
+  condition:
+    condition: or
+    conditions:
+      - condition: template
+        value_template: '{{ states.sun.sun.attributes.elevation < 4 }}'
+      - condition: template
+        value_template: '{{ states.sensor.sensorluz_7_0.state < 10 }}'
+  action:
+    - service: scene.turn_on
+      entity_id: scene.DespiertaDespacho
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/editor/index.html b/docs/automation/editor/index.html new file mode 100644 index 0000000000..db5db7514b --- /dev/null +++ b/docs/automation/editor/index.html @@ -0,0 +1,413 @@ + + + + + + + + + Automation Editor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automation Editor +

+
+
+

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.

+

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 for a random sensor.

+

Choose a meaningful name for your automation rules.

+

+ +

+

If the value of the sensor is greater than 10 then the automation rule should apply.

+

+ +

+

Firing a persistent notification is the result.

+

+ +

+

As “Service Data” we want a simple text that is shown as part of the notification.

+
{ 
+  "message": "Sensor value greater than 10"
+}
+
+
+

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.

+

Updating your configuration to use the editor

+

First check that you have activated the configuration editor.

+
# Activate the configuration editor
+config:
+
+
+

The automation editor reads and writes to the file automations.yaml in your configuration folder. Make sure that you have set up the automation component to read from it:

+
# Configuration.yaml example
+automation: !include automations.yaml
+
+
+

If you still want to use your old automation section, add a label to the old entry:

+
automation old:
+- trigger:
+    platform: ...
+
+
+

You can use the automation: and automation old: sections in the same time:

+
    +
  • automation old: to keep your manual designed automations
  • +
  • automation: to save the automation created by the online editor
  • +
+
automation: !include automations.yaml
+automation old: !include_dir_merge_list automations
+
+
+

Migrating your automations to automations.yaml

+

If you want to migrate your old automations to use the editor, you’ll have to copy them to automations.yaml. Make sure that automations.yaml remains a list! For each automation that you copy over you’ll have to add an id. This can be any string as long as it’s unique.

+

For example, the below automation will be triggered when the sun goes from below the horizon to above the horizon. Then, if the temperature is between 17 and 25 degrees, a light will be turned on.

+
# Example automations.yaml entry
+- id: my_unique_id  # <-- Required for editor to work.
+  alias: Hello world
+  trigger:
+  - platform: state 
+    entity_id: sun.sun
+    from: below_horizon
+    to: above_horizon
+  condition:
+  - condition: numeric state
+    entity_id: sensor.temperature
+    above: 17
+    below: 25
+    value_template: '{{ float(state.state) + 2 }}'
+  action:
+  - service: light.turn_on
+
+
+

+Any comments in the YAML file will be lost when you update an automation via the editor. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/examples/index.html b/docs/automation/examples/index.html new file mode 100644 index 0000000000..40a0274ba6 --- /dev/null +++ b/docs/automation/examples/index.html @@ -0,0 +1,411 @@ + + + + + + + + + Automation Examples - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automation Examples +

+
+
+

Just some sample automation rules to get you started.

+
# Example of entry in configuration.yaml
+automation:
+# Turns on lights 1 hour before sunset if people are home
+# and if people get home between 16:00-23:00
+  - alias: 'Rule 1 Light on in the evening'
+    trigger:
+      # Prefix the first line of each trigger configuration
+      # with a '-' to enter multiple
+      - platform: sun
+        event: sunset
+        offset: '-01:00:00'
+      - platform: state
+        entity_id: group.all_devices
+        to: 'home'
+    condition:
+      # Prefix the first line of each condition configuration
+      # with a '-'' to enter multiple
+      - condition: state
+        entity_id: group.all_devices
+        state: 'home'
+      - condition: time
+        after: '16:00:00'
+        before: '23:00:00'
+    action:
+      service: homeassistant.turn_on
+      entity_id: group.living_room
+
+# Turn off lights when everybody leaves the house
+  - alias: 'Rule 2 - Away Mode'
+    trigger:
+      platform: state
+      entity_id: group.all_devices
+      to: 'not_home'
+    action:
+      service: light.turn_off
+      entity_id: group.all_lights
+
+# Notify when Paulus leaves the house in the evening
+  - alias: 'Leave Home notification'
+    trigger:
+      platform: zone
+      event: leave
+      zone: zone.home
+      entity_id: device_tracker.paulus
+    condition:
+      condition: time
+      after: '20:00'
+    action:
+      service: notify.notify
+      data:
+        message: 'Paulus left the house'
+
+# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component.
+  - alias: 'Xiaomi Cube Action'
+    hide_entity: false
+    initial_state: false
+    trigger:
+      platform: event
+      event_type: cube_action
+      event_data:
+        entity_id: binary_sensor.cube_158d000103a3de
+    action:
+      - service_template: notify.pushover
+        data_template: 
+          title: "Cube event detected"
+          message: "Cube has triggered this event: {{ trigger.event }}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/index.html b/docs/automation/index.html new file mode 100644 index 0000000000..2cc3e9fbba --- /dev/null +++ b/docs/automation/index.html @@ -0,0 +1,396 @@ + + + + + + + + + Automating Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automating Home Assistant +

+
+
+

Home Assistant offers a wide range of automation configurations. In this section, we’ll try to guide you through all the different possibilities and options. Besides this documentation, there are also a couple of people who have made their automations publicly available.

+

Automation basics

+

Before you can go ahead and create your own automations, it’s important to learn the basics. To explore these, let’s have a look at the following example home automation rule:

+
(trigger)    When Paulus arrives home
+(condition)  and it is after sunset:
+(action)     Turn the lights in the living room on
+
+
+

The example consists of three different parts: a trigger, a condition and an action.

+

The first line is the trigger of the automation rule. Triggers describe events that should trigger the automation rule. In this case, it is a person arriving home, which can be observed in Home Assistant by observing the state of Paulus changing from ‘not_home’ to ‘home’.

+

The second line is the condition. Conditions are optional tests that can limit an automation rule to only work in your specific use cases. A condition will test against the current state of the system. This includes the current time, devices, people and other things like the sun. In this case, we only want to act when the sun has set.

+

The third part is the action, which will be performed when a rule is triggered and all conditions are met. For example, it can turn a light on, set the temperature on your thermostat or activate a scene.

+

+The difference between a condition and a trigger can be confusing as they are very similar. Triggers look at the actions, while conditions look at the results: turning a light on versus a light being on. +

+

Exploring the internal state

+

Automation rules interact directly with the internal state of Home Assistant, so you’ll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. The icon will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionExample
Entity IDUnique identifier for the entity.light.kitchen
StateThe current state of the device.home
AttributesExtra data related to the device and/or current state.brightness
+

State changes can be used as the source of triggers and the current state can be used in conditions.

+

Actions are all about calling services. To explore the available services open the Services developer tool. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service light.turn_on is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use.

+

+As of version 0.42 you have to set an initial state in your automations in order for Home Assistant to restore them upon restart. +text +- alias: Automation Name + initial_state: True + trigger: + ... + +

+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/templating/index.html b/docs/automation/templating/index.html new file mode 100644 index 0000000000..9741eb3727 --- /dev/null +++ b/docs/automation/templating/index.html @@ -0,0 +1,611 @@ + + + + + + + + + Automation Templating - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automation Templating +

+
+
+

In Home Assistant 0.19 we introduced a new powerful feature: variables in scripts and automations. This makes it possible to adjust your condition and action based on the information of the trigger.

+

The trigger data made is available during template rendering as the trigger variable.

+
# Example configuration.yaml entries
+automation:
+  trigger:
+    platform: state
+    entity_id: device_tracker.paulus
+  action:
+    service: notify.notify
+    data_template:
+      message: >
+        Paulus just changed from {{ trigger.from_state.state }}
+        to {{ trigger.to_state.state }}
+
+automation 2:
+  trigger:
+    platform: mqtt
+    topic: /notify/+
+  action:
+    service_template: >
+      notify.{{ trigger.topic.split('/')[-1] }}
+    data_template:
+      message: '{{ trigger.payload }}'
+
+
+

Important Template Rules

+

There are a few very important rules to remember when writing automation templates:

+
    +
  1. You must use data_template in place of data when using templates in the data section of a service call.
  2. +
  3. You must use service_template in place of service when using templates in the service section of a service call.
  4. +
  5. You must surround single-line templates with double quotes (") or single quotes (').
  6. +
  7. It is advised that you prepare for undefined variables by using if ... is not none or the default filter, or both.
  8. +
  9. It is advised that when comparing numbers, you convert the number(s) to a float or an int by using the respective filter.
  10. +
  11. While the float and int filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables.
  12. +
+

Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates.

+

Trigger State Object

+

Knowing how to access the state object of a trigger entity could be one of the more common questions. Here are a few ways for the state, numeric_state and template triggers:

+
    +
  • trigger.from_state will return the previous state object of the entity.
  • +
  • trigger.to_state will return the new state object that triggered trigger.
  • +
  • states[trigger.to_state.domain][trigger.to_state.object_id] will return the current state object of the entity.
  • +
+

Available Trigger Data

+

The following tables show the available trigger data per platform.

+

event

+ + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: event.
trigger.eventEvent object that matched.
trigger.event.dataOptional data
+

mqtt

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: mqtt.
trigger.topicTopic that received payload.
trigger.payloadPayload.
trigger.payload_jsonDictonary of the JSON parsed payload.
trigger.qosQOS of payload.
+

numeric_state

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: numeric_state
trigger.entity_idEntity ID that we observe.
trigger.belowThe below threshold, if any.
trigger.aboveThe above threshold, if any.
trigger.from_stateThe previous state object of the entity.
trigger.to_stateThe new state object that triggered trigger.
+

state

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: state
trigger.entity_idEntity ID that we observe.
trigger.from_stateThe previous state object of the entity.
trigger.to_stateThe new state object that triggered trigger.
trigger.forTimedelta object how long state has been to state, if any.
+

sun

+ + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: sun
trigger.eventThe event that just happened: sunset or sunrise.
trigger.offsetTimedelta object with offset to the event, if any.
+

template

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: template
trigger.entity_idEntity ID that caused change.
trigger.from_statePrevious state object of entity that caused change.
trigger.to_stateNew state object of entity that caused template to change.
+

time

+ + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: time
trigger.nowDateTime object that triggered the time trigger.
+

zone

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Template variableData
trigger.platformHardcoded: zone
trigger.entity_idEntity ID that we are observing.
trigger.from_statePrevious state object of the entity.
trigger.to_stateNew state object of the entity.
trigger.zoneState object of zone
trigger.eventEvent that trigger observed: enter or leave.
+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/trigger/index.html b/docs/automation/trigger/index.html new file mode 100644 index 0000000000..eeb097dcd5 --- /dev/null +++ b/docs/automation/trigger/index.html @@ -0,0 +1,507 @@ + + + + + + + + + Automation Trigger - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Automation Trigger +

+
+
+

Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action.

+

Event trigger

+

Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present.

+

Events can be fired by components or via the API. There is no limitation to the types. A list of built-in events can be found here.

+
automation:
+  trigger:
+    platform: event
+    event_type: MY_CUSTOM_EVENT
+    # optional
+    event_data:
+      mood: happy
+
+
+

+ Starting 0.42, it is no longer possible to listen for event homeassistant_start. Use the ‘homeassistant’ platform below instead. +

+

Home Assistant trigger

+

Triggers when Home Assistant starts up or shuts down.

+
automation:
+  trigger:
+    platform: homeassistant
+    # Event can also be 'shutdown'
+    event: start
+
+
+

MQTT trigger

+

Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic.

+
automation:
+  trigger:
+    platform: mqtt
+    topic: living_room/switch/ac
+    # Optional
+    payload: 'on'
+
+
+

Numeric state trigger

+

Triggers when numeric value of an entity’s state crosses a given 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 or from below to above the given threshold.

+
automation:
+  trigger:
+    platform: numeric_state
+    entity_id: sensor.temperature
+    # Optional
+    value_template: '{{ state.attributes.battery }}'
+    # 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. +

+

State trigger

+

Triggers when the state of a given entity changes. If only entity_id is given trigger will activate for all state changes, even if only state attributes change.

+
automation:
+  trigger:
+    platform: state
+    entity_id: device_tracker.paulus, device_tracker.anne_therese
+    # Optional
+    from: 'not_home'
+    # Optional
+    to: 'home'
+
+    # If given, will trigger when state has been the to state for X time.
+    for:
+      hours: 1
+      minutes: 10
+      seconds: 5
+
+
+

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

+

Sun trigger

+

Triggers when the sun is setting or rising. An optional time offset can be given to have it trigger a set time before or after the sun event (i.e. 45 minutes before sunset, when dusk is setting in).

+
automation:
+  trigger:
+    platform: sun
+    # Possible values: sunset, sunrise
+    event: sunset
+    # Optional time offset. This example is 45 minutes.
+    offset: '-00:45:00'
+
+
+

Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the “sunset” event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting.

+
automation:
+  alias: "Exterior Lighting on when dark outside"
+  trigger:
+    platform: numeric_state
+    entity_id: sun.sun
+    value_template: "{{ state.attributes.elevation }}"
+    # Can be a positive or negative number
+    below: -4.0
+  action:
+    service: switch.turn_on
+    entity_id: switch.exterior_lighting
+
+
+

The US Naval Observatory has a tool that will help you estimate what the solar angle will be at any specific time.

+

Template trigger

+

Template triggers work by evaluating a template on every state change for all of the recognized entities. The trigger will fire if the state change caused the template to render ‘true’. This is achieved by having the template result in a true boolean expression ({{ is_state('device_tracker.paulus', 'home') }}) or by having the template render ‘true’ (example below). +With template triggers you can also evaluate attribute changes by using is_state_attr ({{ is_state_attr('climate.living_room', 'away_mode', 'off') }})

+
automation:
+  trigger:
+    platform: template
+    value_template: "{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}"
+
+
+

Time trigger

+

Time can be triggered in many ways. The most common is to specify at and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a / to match whenever the value is divisible by that number. You cannot use at together with hour, minute or second.

+
automation:
+  trigger:
+    platform: time
+    # Matches every hour at 5 minutes past whole
+    minutes: 5
+    seconds: 00
+
+automation 2:
+  trigger:
+    platform: time
+    # When 'at' is used, you cannot also match on hour, minute, seconds.
+    # Military time format.
+    at: '15:32:00'
+
+automation 3:
+  trigger:
+    platform: time
+    # You can also match on interval. This will match every 5 minutes
+    minutes: '/5'
+    seconds: 00
+
+
+

+ Remember that if you are using matching to include both minutes and seconds. Without seconds, your automation will trigger 60 times during the matching minute. +

+

Zone trigger

+

Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the OwnTracks platform as well as the iCloud platform.

+
automation:
+  trigger:
+    platform: zone
+    entity_id: device_tracker.paulus
+    zone: zone.home
+    # Event is either enter or leave
+    event: enter  # or "leave"
+
+
+

Multiple triggers

+

When your want your automation rule to have multiple triggers, just prefix the first line of each trigger with a dash (-) and indent the next lines accordingly. Whenever one of the triggers fires, your rule is executed.

+
automation:
+  trigger:
+      # first trigger
+    - platform: time
+      minutes: 5
+      seconds: 00
+      # our second trigger is the sunset
+    - platform: sun
+      event: sunset
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/automation/troubleshooting/index.html b/docs/automation/troubleshooting/index.html new file mode 100644 index 0000000000..f3588678d6 --- /dev/null +++ b/docs/automation/troubleshooting/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Troubleshooting Automations - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Troubleshooting Automations +

+
+
+

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. The realtime logs will show the rules being initialized (once for each trigger), example:

+
INFO [homeassistant.components.automation] Initialized rule Rainy Day
+INFO [homeassistant.components.automation] Initialized rule Rainy Day
+INFO [homeassistant.components.automation] Initialized rule Rainy Day
+INFO [homeassistant.components.automation] Initialized rule Rain is over
+
+
+

The Logbook component will show a line entry when an automation is triggered. You can look at the previous entry to determine which trigger in the rule triggered the event.

+

Logbook example

+
+
+ +
+
+ + + + + + + diff --git a/docs/autostart/index.html b/docs/autostart/index.html new file mode 100644 index 0000000000..85a81686b7 --- /dev/null +++ b/docs/autostart/index.html @@ -0,0 +1,350 @@ + + + + + + + + + Autostart Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/autostart/init.d/index.html b/docs/autostart/init.d/index.html new file mode 100644 index 0000000000..8d6d67dfcb --- /dev/null +++ b/docs/autostart/init.d/index.html @@ -0,0 +1,616 @@ + + + + + + + + + Autostart using init.d - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Autostart using init.d +

+
+
+

Home Assistant can run as a daemon within init.d with the script below.

+

1. Copy script

+

Copy either the daemon script or the Python environment scrip at the end of this page to /etc/init.d/hass-daemon depending on your installation.

+

After that, set the script to be executable:

+
$ sudo chmod +x /etc/init.d/hass-daemon
+
+
+

2. Select a user.

+

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.

+

3. Change hass executable and other variables 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. Please also check the other variables for the appropriate value. In general the defaults should work

+

4. Install this service

+
$ sudo service hass-daemon install
+
+
+

5. Create logrotate rule

+

This logrotate script at /etc/logrotate.d/homeassistant will create an outage of a few seconds every week at night. If you do not want this add --log-rotate-days 7 to the FLAGS variable in the init script.

+
/var/log/homeassistant/home-assistant.log
+{
+        rotate 7
+        daily
+        missingok
+        notifempty
+        delaycompress
+        compress
+        postrotate
+                invoke-rc.d hass-daemon restart > /dev/null
+        endscript
+}
+
+
+
+

6. Restart Machine

+

That’s it. Restart your machine and Home Assistant should start automatically.

+

If HA does not start, check the log file output for errors at /var/log/homeassistant/home-assistant.log

+

Extra: Running commands before hass executes

+

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.

+

Daemon script

+
#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          hass
+# Required-Start:    $local_fs $network $named $time $syslog
+# Required-Stop:     $local_fs $network $named $time $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Description:       Home\ Assistant
+### END INIT INFO
+
+# /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_DIR="/var/run"
+PID_FILE="$PID_DIR/hass.pid"
+CONFIG_DIR="/var/opt/homeassistant"
+LOG_DIR="/var/log/homeassistant"
+LOG_FILE="$LOG_DIR/home-assistant.log"
+FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --log-file $LOG_FILE --daemon"
+
+
+start() {
+  create_piddir
+  if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
+    echo 'Service already running' >&2
+    return 1
+  fi
+  echo -n 'Starting service… ' >&2
+  local CMD="$PRE_EXEC $HASS_BIN $FLAGS;"
+  su -s /bin/bash -c "$CMD" $RUN_AS
+  if [ $? -ne 0 ]; then
+    echo "Failed" >&2
+  else
+    echo 'Done' >&2
+  fi
+}
+
+stop() {
+  if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
+    echo 'Service not running' >&2
+    return 1
+  fi
+  echo -n 'Stopping service… ' >&2
+  kill $(cat "$PID_FILE")
+  while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
+  rm -f $PID_FILE
+  echo 'Done' >&2
+}
+
+install() {
+  echo "Installing Home Assistant Daemon (hass-daemon)"
+  update-rc.d hass-daemon defaults
+  create_piddir
+  mkdir -p $CONFIG_DIR
+  chown $RUN_AS $CONFIG_DIR
+  mkdir -p $LOG_DIR
+  chown $RUN_AS $LOG_DIR
+}
+
+uninstall() {
+  echo "Are you really sure you want to uninstall this service? The INIT script will"
+  echo -n "also be deleted! That cannot be undone. [yes|No] "
+  local SURE
+  read SURE
+  if [ "$SURE" = "yes" ]; then
+    stop
+    remove_piddir
+    echo "Notice: The config directory has not been removed"
+    echo $CONFIG_DIR
+    echo "Notice: The log directory has not been removed"
+    echo $LOG_DIR
+    update-rc.d -f hass-daemon remove
+    rm -fv "$0"
+    echo "Home Assistant Daemon has been removed. Home Assistant is still installed."
+  fi
+}
+
+create_piddir() {
+  if [ ! -d "$PID_DIR" ]; then
+    mkdir -p $PID_DIR
+    chown $RUN_AS "$PID_DIR"
+  fi
+}
+
+remove_piddir() {
+  if [ -d "$PID_DIR" ]; then
+    if [ -e "$PID_FILE" ]; then
+      rm -fv "$PID_FILE"
+    fi
+    rmdir -fv "$PID_DIR"
+  fi
+}
+
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  install)
+    install
+    ;;
+  uninstall)
+    uninstall
+    ;;
+  restart)
+    stop
+    start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|restart|install|uninstall}"
+esac
+
+
+

Python virtual environment

+
#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          hass
+# Required-Start:    $local_fs $network $named $time $syslog
+# Required-Stop:     $local_fs $network $named $time $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Description:       Home\ Assistant
+### END INIT INFO
+
+# /etc/init.d Service Script for Home Assistant
+# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh
+PRE_EXEC="cd /srv/homeassistant; python3 -m venv .; source bin/activate;"
+# Typically /usr/bin/hass
+HASS_BIN="hass"
+RUN_AS="homeassistant"
+PID_DIR="/var/run/hass"
+PID_FILE="$PID_DIR/hass.pid"
+CONFIG_DIR="/home/$RUN_AS/.homeassistant"
+LOG_DIR="/var/log/homeassistant"
+LOG_FILE="$LOG_DIR/home-assistant.log"
+FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --log-file $LOG_FILE --daemon"
+
+start() {
+  create_piddir
+  if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
+    echo 'Service already running' >&2
+    return 1
+  fi
+  echo -n 'Starting service… ' >&2
+  local CMD="$PRE_EXEC $HASS_BIN $FLAGS;"
+  su -s /bin/bash -c "$CMD" $RUN_AS
+  if [ $? -ne 0 ]; then
+    echo "Failed" >&2
+  else
+    echo 'Done' >&2
+  fi
+}
+
+stop() {
+  if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
+    echo 'Service not running' >&2
+    return 1
+  fi
+  echo -n 'Stopping service… ' >&2
+  kill $(cat "$PID_FILE")
+  while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
+  rm -f $PID_FILE
+  echo 'Done' >&2
+}
+
+install() {
+  echo "Installing Home Assistant Daemon (hass-daemon)"
+  update-rc.d hass-daemon defaults
+  create_piddir
+  mkdir -p $CONFIG_DIR
+  chown $RUN_AS $CONFIG_DIR
+  mkdir -p $LOG_DIR
+  chown $RUN_AS $LOG_DIR
+}
+
+uninstall() {
+  echo "Are you really sure you want to uninstall this service? The INIT script will"
+  echo -n "also be deleted! That cannot be undone. [yes|No] "
+  local SURE
+  read SURE
+  if [ "$SURE" = "yes" ]; then
+    stop
+    remove_piddir
+    echo "Notice: The config directory has not been removed"
+    echo $CONFIG_DIR
+    echo "Notice: The log directory has not been removed"
+    echo $LOG_DIR
+    update-rc.d -f hass-daemon remove
+    rm -fv "$0"
+    echo "Home Assistant Daemon has been removed. Home Assistant is still installed."
+  fi
+}
+
+create_piddir() {
+  if [ ! -d "$PID_DIR" ]; then
+    mkdir -p $PID_DIR
+    chown $RUN_AS "$PID_DIR"
+  fi
+}
+
+remove_piddir() {
+  if [ -d "$PID_DIR" ]; then
+    if [ -e "$PID_FILE" ]; then
+      rm -fv "$PID_FILE"
+    fi
+    rmdir -fv "$PID_DIR"
+  fi
+}
+
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  install)
+    install
+    ;;
+  uninstall)
+    uninstall
+    ;;
+  restart)
+    stop
+    start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|restart|install|uninstall}"
+esac
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/autostart/macos/index.html b/docs/autostart/macos/index.html new file mode 100644 index 0000000000..2e4d5ef305 --- /dev/null +++ b/docs/autostart/macos/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Autostart on macOS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Autostart on macOS +

+
+
+

Setting up Home Assistant to run as a background service is simple; macOS will start Home Assistant on boot and make sure it’s always running.

+

To get Home Assistant installed as a background service, run:

+
$ hass --script macos install
+
+Home Assistant has been installed.         Open it here: http://localhost:8123
+
+
+

Home Assistant will log to ~/Library/Logs/homeassistant.log

+

To uninstall the service, run:

+
$ hass --script macos uninstall
+
+Home Assistant has been uninstalled.
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/autostart/synology/index.html b/docs/autostart/synology/index.html new file mode 100644 index 0000000000..cde87bb577 --- /dev/null +++ b/docs/autostart/synology/index.html @@ -0,0 +1,371 @@ + + + + + + + + + Autostart on Synology NAS boot - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Autostart on Synology NAS boot +

+
+
+

To get Home Assistant to automatically start when you boot your Synology NAS:

+

SSH into your synology & login as admin or root

+
$ cd /volume1/homeassistant
+
+
+

Create “homeassistant.conf” file using the following code

+
# only start this service after the httpd user process has started
+start on started httpd-user
+
+# stop the service gracefully if the runlevel changes to 'reboot'
+stop on runlevel [06]
+
+# run the scripts as the 'http' user. Running as root (the default) is a bad ide
+#setuid admin
+
+# exec the process. Use fully formed path names so that there is no reliance on
+# the 'www' file is a node.js script which starts the foobar application.
+exec /bin/sh /volume1/homeassistant/hass-daemon start
+
+
+

Register the autostart

+
$ ln -s homeassistant.conf /etc/init/homeassistant.conf
+
+
+

Make the relevant files executable:

+
$ chmod -r 777 /etc/init/homeassistant.conf
+
+
+

That’s it - reboot your NAS and Home Assistant should automatically start

+
+
+ +
+
+ + + + + + + diff --git a/docs/autostart/systemd/index.html b/docs/autostart/systemd/index.html new file mode 100644 index 0000000000..95889921b5 --- /dev/null +++ b/docs/autostart/systemd/index.html @@ -0,0 +1,441 @@ + + + + + + + + + Autostart using systemd - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Autostart using 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:

+
$ ps -p 1 -o comm=
+
+
+

If the preceding command returns the string systemd, continue with the instructions below.

+

A service file is needed to control Home Assistant with systemd. The template below should be created using a text editor. Note, root permissions via sudo will likely be needed. The following should be noted to modify the template:

+
    +
  • ExecStart contains the path to hass and this may vary. Check with whereis hass for the location.
  • +
  • For most systems, the file is /etc/systemd/system/home-assistant@[your user].service with [your user] replaced by the user account that Home Assistant will run as (normally homeassistant). In particular, this is the case for Ubuntu 16.04.
  • +
  • If unfamiliar with command-line text editors, sudo nano -w [filename] can be used with [filename] replaced with the full path to the file. Ex. sudo nano -w /etc/systemd/system/home-assistant@[your user].service. After text entered, press CTRL-X then press Y to save and exit.
  • +
  • If you’re running Home Assistant in a Python virtual environment or a Docker container, please skip to the appropriate template listed below.
  • +
+
[Unit]
+Description=Home Assistant
+After=network-online.target
+
+[Service]
+Type=simple
+User=%i
+ExecStart=/usr/bin/hass
+
+[Install]
+WantedBy=multi-user.target
+
+
+

Python virtual environment

+

If you’ve setup Home Assistant in virtualenv following our Python installation guide or manual installation guide for Raspberry Pi, the following template should work for you. If Home Assistant install is not located at /srv/homeassistant, please modify the ExecStart= line appropriately.

+
[Unit]
+Description=Home Assistant
+After=network-online.target
+
+[Service]
+Type=simple
+User=%i
+ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
+
+[Install]
+WantedBy=multi-user.target
+
+
+

Docker

+

If you want to use Docker, the following template should work for you.

+
[Unit]
+Description=Home Assistant
+Requires=docker.service
+After=docker.service
+
+[Service]
+Restart=always
+RestartSec=3
+ExecStart=/usr/bin/docker run --name="home-assistant-%i" -v /home/%i/.homeassistant/:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
+ExecStop=/usr/bin/docker stop -t 2 home-assistant-%i
+ExecStopPost=/usr/bin/docker rm -f home-assistant-%i
+
+[Install]
+WantedBy=multi-user.target
+
+
+

Next Steps

+

You need to reload systemd to make the daemon aware of the new configuration.

+
$ sudo systemctl --system daemon-reload
+
+
+

To have Home Assistant start automatically at boot, enable the service.

+
$ sudo systemctl enable home-assistant@[your user]
+
+
+

To disable the automatic start, use this command.

+
$ sudo systemctl disable home-assistant@[your user]
+
+
+

To start Home Assistant now, use this command.

+
$ sudo systemctl start home-assistant@[your user]
+
+
+

You can also substitute the start above with stop to stop Home Assistant, restart to restart Home Assistant, and ‘status’ to see a brief status report as seen below.

+
$ sudo systemctl status home-assistant@[your user]
+● home-assistant@fab.service - Home Assistant for [your user]
+   Loaded: loaded (/etc/systemd/system/home-assistant@[your user].service; enabled; vendor preset: disabled)
+   Active: active (running) since Sat 2016-03-26 12:26:06 CET; 13min ago
+ Main PID: 30422 (hass)
+   CGroup: /system.slice/system-home\x2dassistant.slice/home-assistant@[your user].service
+           ├─30422 /usr/bin/python3 /usr/bin/hass
+           └─30426 /usr/bin/python3 /usr/bin/hass
+[...]
+
+
+

To get Home Assistant’s logging output, simple use journalctl.

+
$ sudo journalctl -f -u home-assistant@[your user]
+
+
+

Because the log can scroll quite quickly, you can select to view only the error lines:

+
$ sudo journalctl -f -u home-assistant@[your user] | grep -i 'error'
+
+
+

When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using &&

+
$ sudo systemctl restart home-assistant@[your user] && sudo journalctl -f -u home-assistant@[your user]
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/autostart/upstart/index.html b/docs/autostart/upstart/index.html new file mode 100644 index 0000000000..81931a9793 --- /dev/null +++ b/docs/autostart/upstart/index.html @@ -0,0 +1,460 @@ + + + + + + + + + Autostart using Upstart - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Autostart using Upstart +

+
+
+

Many linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04. If you are unsure if your system is using Upstart, you may check with the following command:

+
$ ps -p 1 -o comm=
+
+
+

If the preceding command returns the string init, you are likely using Upstart.

+

Upstart will launch init scripts that are located in the directory /etc/init.d/. A sample init script for systems using Upstart could look like the sample below.

+
#!/bin/sh
+### BEGIN INIT INFO
+# Provides:          hass
+# Required-Start:    $local_fs $network $named $time $syslog
+# Required-Stop:     $local_fs $network $named $time $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Description:       Home\ Assistant
+### END INIT INFO
+
+# /etc/init.d Service Script for Home Assistant
+# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh
+#
+# Installation:
+#   1) 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.
+#   2) Set RUN_AS to the username that should be used to execute hass.
+#   3) Copy this script to /etc/init.d/
+#       sudo cp hass-daemon /etc/init.d/hass-daemon
+#       sudo chmod +x /etc/init.d/hass-daemon
+#   4) Register the daemon with Linux
+#       sudo update-rc.d hass-daemon defaults
+#   5) Install this service
+#       sudo service hass-daemon install
+#   6) Restart Machine
+#
+# After installation, HA should start automatically. If HA does not start,
+# check the log file output for errors.
+#       /var/opt/homeassistant/home-assistant.log
+
+PRE_EXEC=""
+RUN_AS="USER"
+PID_FILE="/var/run/hass.pid"
+CONFIG_DIR="/var/opt/homeassistant"
+FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon"
+REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1"
+
+start() {
+  if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then
+    echo 'Service already running' >&2
+    return 1
+  fi
+  echo 'Starting service…' >&2
+  local CMD="$PRE_EXEC hass $FLAGS $REDIRECT;"
+  su -c "$CMD" $RUN_AS
+  echo 'Service started' >&2
+}
+
+stop() {
+    if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then
+    echo 'Service not running' >&2
+    return 1
+  fi
+  echo 'Stopping service…' >&2
+  kill -3 $(cat "$PID_FILE")
+  while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done;
+  echo 'Service stopped' >&2
+}
+
+install() {
+    echo "Installing Home Assistant Daemon (hass-daemon)"
+    echo "999999" > $PID_FILE
+    chown $RUN_AS $PID_FILE
+    mkdir -p $CONFIG_DIR
+    chown $RUN_AS $CONFIG_DIR
+}
+
+uninstall() {
+  echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] "
+  local SURE
+  read SURE
+  if [ "$SURE" = "yes" ]; then
+    stop
+    rm -fv "$PID_FILE"
+    echo "Notice: The config directory has not been removed"
+    echo $CONFIG_DIR
+    update-rc.d -f hass-daemon remove
+    rm -fv "$0"
+    echo "Home Assistant Daemon has been removed. Home Assistant is still installed."
+  fi
+}
+
+case "$1" in
+  start)
+    start
+    ;;
+  stop)
+    stop
+    ;;
+  install)
+    install
+    ;;
+  uninstall)
+    uninstall
+    ;;
+  restart)
+    stop
+    start
+    ;;
+  *)
+    echo "Usage: $0 {start|stop|restart|install|uninstall}"
+esac
+
+
+

To install this script, download it, tweak it to you liking, and install it by following the directions in the header. This script will setup Home Assistant to run when the system boots. To start/stop Home Assistant manually, issue the following commands:

+
$ sudo service hass-daemon start
+$ sudo service hass-daemon stop
+
+
+

When running Home Assistant with this script, the configuration directory will be located at /var/opt/homeassistant. This directory will contain a verbose log rather than simply an error log.

+

When running daemons, it is good practice to have the daemon run under its own user name rather than the default user’s name. Instructions for setting this up are outside the scope of this document.

+
+
+ +
+
+ + + + + + + diff --git a/docs/backend/database/index.html b/docs/backend/database/index.html new file mode 100644 index 0000000000..4e21a0f44c --- /dev/null +++ b/docs/backend/database/index.html @@ -0,0 +1,436 @@ + + + + + + + + + Database - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Database +

+
+
+

The default database that is used for Home Assistant is SQLite and is stored in your configuration directory (e.g., <path to config dir>/.homeassistant/home-assistant_v2.db). You will need an installation of sqlite3, the command-line for SQLite database, or DB Browser for SQLite, which provides an editor for executing SQL commands. +First load your database with sqlite3:

+
$ sqlite3 home-assistant_v2.db 
+SQLite version 3.13.0 2016-05-18 10:57:30
+Enter ".help" for usage hints.
+sqlite> 
+
+
+

It helps to set some options to make the output more readable:

+
sqlite> .header on
+sqlite> .mode column
+
+
+

You could also start sqlite3 and attach the database later. Not sure what database you are working with? Check it, especially if you are going to delete data.

+
sqlite> .databases
+seq  name             file
+---  ---------------  ----------------------------------------------------------
+0    main             /home/fab/.homeassistant/home-assistant_v2.db 
+
+
+

Schema

+

Get all available tables from your current Home Assistant database:

+
sqlite> SELECT sql FROM sqlite_master;
+
+-------------------------------------------------------------------------------------
+CREATE TABLE events (
+	event_id INTEGER NOT NULL, 
+	event_type VARCHAR(32), 
+	event_data TEXT, 
+	origin VARCHAR(32), 
+	time_fired DATETIME, 
+	created DATETIME, 
+	PRIMARY KEY (event_id)
+)
+CREATE INDEX ix_events_event_type ON events (event_type)
+CREATE TABLE recorder_runs (
+	run_id INTEGER NOT NULL, 
+	start DATETIME, 
+	"end" DATETIME, 
+	closed_incorrect BOOLEAN, 
+	created DATETIME, 
+	PRIMARY KEY (run_id), 
+	CHECK (closed_incorrect IN (0, 1))
+)
+CREATE TABLE states (
+	state_id INTEGER NOT NULL, 
+	domain VARCHAR(64), 
+	entity_id VARCHAR(64), 
+	state VARCHAR(255), 
+	attributes TEXT, 
+	event_id INTEGER, 
+	last_changed DATETIME, 
+	last_updated DATETIME, 
+	created DATETIME, 
+	PRIMARY KEY (state_id), 
+	FOREIGN KEY(event_id) REFERENCES events (event_id)
+)
+CREATE INDEX states__significant_changes ON states (domain, last_updated, entity_id)
+CREATE INDEX states__state_changes ON states (last_changed, last_updated, entity_id)
+CREATE TABLE sqlite_stat1(tbl,idx,stat) 
+
+
+

To only show the details about the states table (since we are using that one in the next examples):

+
sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'states';
+
+
+

Query

+

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:

+
sqlite> .width 30, 10,
+sqlite> SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10;
+entity_id                       count
+------------------------------  ----------
+sensor.cpu                      28874
+sun.sun                         21238
+sensor.time                     18415
+sensor.new_york                 18393
+cover.kitchen_cover             17811
+switch.mystrom_switch           14101
+sensor.internet_time            12963
+sensor.solar_angle1             11397
+sensor.solar_angle              10440
+group.all_switches              8018 
+
+
+

Delete

+

If you don’t want to keep certain entities, you can delete them permanently:

+
sqlite> DELETE FROM states WHERE entity_id="sensor.cpu";
+
+
+

The VACUUM command cleans the your database.

+
sqlite> VACUUM;
+
+
+

For a more interactive way to work with the database or the create statistics, checkout our Jupyter notebooks.

+
+
+ +
+
+ + + + + + + diff --git a/docs/backend/index.html b/docs/backend/index.html new file mode 100644 index 0000000000..2d6c51fc7a --- /dev/null +++ b/docs/backend/index.html @@ -0,0 +1,345 @@ + + + + + + + + + Backend of Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/backend/updater/index.html b/docs/backend/updater/index.html new file mode 100644 index 0000000000..79049f7783 --- /dev/null +++ b/docs/backend/updater/index.html @@ -0,0 +1,507 @@ + + + + + + + + + Updater - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Updater +

+
+
+

Starting with 0.31 the updater component 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.

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionExampleData Source
archCPU Architecturex86_64Local Instance
distributionLinux Distribution name (only Linux)UbuntuLocal Instance
dockerTrue if running inside DockerfalseLocal Instance
first_seen_datetimeFirst time instance ID was submitted2016-10-22T19:56:03.542ZUpdate Server
geo_cityGeoIP determined cityOaklandUpdate Server
geo_country_codeGeoIP determined country codeUSUpdate Server
geo_country_nameGeoIP determined country nameUnited StatesUpdate Server
geo_latitudeGeoIP determined latitude37.8047Update Server
geo_longitudeGeoIP determined longitude-122.2124Update Server
geo_metro_codeGeoIP determined metro code807Update Server
geo_region_codeGeoIP determined region codeCAUpdate Server
geo_region_nameGeoIP determined region nameCaliforniaUpdate Server
geo_time_zoneGeoIP determined time zoneAmerica/Los_AngelesUpdate Server
geo_zip_codeGeoIP determined zip code94602Update Server
last_seen_datetimeMost recent time instance ID was submitted2016-10-22T19:56:03.542ZUpdate Server
os_nameOperating system nameDarwinLocal Instance
os_versionOperating system version10.12Local Instance
python_versionPython version3.5.2Local Instance
timezoneTimezoneAmerica/Los_AngelesLocal Instance
user_agentUser agent used to submit analyticspython-requests/2.11.1Local Instance
uuidUnique identifier10321ee6094d4a2ebb5ed55c675d5f5eLocal Instance
versionHome Assistant version0.31.0Local Instance
virtualenvTrue if running inside virtualenvtrueLocal Instance
+

In addition to the above collected data, the server will also use your IP address to do a geographic IP address lookup to determine a general geographic area that your address is located in. To be extremely, extremely clear about this bit: The Home Assistant updater does not: store your IP address in a database and also does not submit the location information from your configuration.yaml.

+

Our tests showed that at best, we get 4 digits of accuracy on your IP address location which is a 5 mile radius of your actual IP location, assuming that it is even correct in the first place (geo IP lookups are very hit or miss).

+

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

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/docs/configuration/basic/index.html b/docs/configuration/basic/index.html new file mode 100644 index 0000000000..d1b29d55d9 --- /dev/null +++ b/docs/configuration/basic/index.html @@ -0,0 +1,375 @@ + + + + + + + + + Setup basic information - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Setup basic information +

+
+
+

By default, Home Assistant will try to detect your location from IP address geolocation. Home Assistant will automatically select a temperature unit and time zone based on this location. You can overwrite this by adding the following information to your configuration.yaml:

+
homeassistant:
+  latitude: 32.87336
+  longitude: 117.22743
+  elevation: 430
+  unit_system: metric
+  time_zone: America/Los_Angeles
+  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 entities.
  • +
  • customize_domain (Optional): Customize all entities in a domain.
  • +
  • customize_glob (Optional): Customize entities matching a pattern.
  • +
  • whitelist_external_dirs (Optional): List of folders that can be used as sources for sending files.
  • +
+

Password protecting the web interface

+

First, you’ll want to add a password for the Home Assistant web interface. Use your favorite text editor to open configuration.yaml and edit the http section:

+
http:
+  api_password: YOUR_PASSWORD
+
+
+

+If you decide to expose your Home Assistant instance to the internet and forget to set a password, your installation could be accessed by everybody. +

+

See the HTTP component documentation for more options, such as the use of HTTPS encryption.

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/customizing-devices/index.html b/docs/configuration/customizing-devices/index.html new file mode 100644 index 0000000000..4da880823e --- /dev/null +++ b/docs/configuration/customizing-devices/index.html @@ -0,0 +1,448 @@ + + + + + + + + + Customizing entities - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Customizing entities +

+
+
+

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.

+

+If you implement customize, customize_domain, or customize_glob you must make sure it is done inside of homeassistant: or it will fail. +

+
homeassistant:
+  name: Home
+  unit_system: metric
+  # etc
+
+  customize:
+    # Add an entry for each entity that you want to overwrite.
+    sensor.living_room_motion:
+      hidden: true
+    thermostat.family_room:
+      entity_picture: https://example.com/images/nest.jpg
+      friendly_name: Nest
+    switch.wemo_switch_1:
+      friendly_name: Toaster
+      entity_picture: /local/toaster.jpg
+    switch.wemo_switch_2:
+      friendly_name: Kitchen kettle
+      icon: mdi:kettle
+    switch.rfxtrx_switch:
+      assumed_state: false
+  # Customize all entities in a domain
+  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_hidden: false
+      homebridge_hidden: true
+
+
+

Possible values

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
friendly_nameName of the entity.
homebridge_nameName of the entity in HomeBridge.
hiddenSet to true to hide the entity.
homebridge_hiddenSet to true to hide the entity from HomeBridge.
emulated_hue_hiddenSet to true to hide the entity from emulated_hue.
entity_pictureUrl to use as picture for entity.
iconAny icon from MaterialDesignIcons.com (Cheatsheet). Prefix name with mdi:, ie mdi:home.
assumed_stateFor 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_classSets the class of the device, changing the device state and icon that is displayed on the UI (see below).
initial_stateSets the initial state for automations. on or off.
unit_of_measurementDefines the units of measurement, if any.
+

Device Class

+

Device class is currently supported by the following platforms:

+ +

Reloading customize

+

Home Assistant offers a service to reload the core configuration while Home Assistant is running called homeassistant/reload_core_config. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the service developer tool icon service developer tools, select the service homeassistant/reload_core_config and click “Call Service”.

+

+New customize information will be applied the next time the state of the entity gets updated. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/devices/index.html b/docs/configuration/devices/index.html new file mode 100644 index 0000000000..fddf35c00f --- /dev/null +++ b/docs/configuration/devices/index.html @@ -0,0 +1,390 @@ + + + + + + + + + Adding devices to Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Adding devices to Home Assistant +

+
+
+

Home Assistant will be able to automatically discover many devices and services available on your network if you have the discovery component enabled (the default setting).

+

See the components overview page to find installation instructions for your devices and services. If you can’t find support for your favorite device or service, consider adding support.

+

Usually every entity needs its own entry in the configuration.yaml file. There are two styles for multiple entries:

+

Style 1: Collect every entity under the “parent”

+
sensor:
+  - platform: mqtt
+    state_topic: "home/bedroom/temperature"
+    name: "MQTT Sensor 1"
+  - platform: mqtt
+    state_topic: "home/kitchen/temperature"
+    name: "MQTT Sensor 2"
+  - platform: rest
+    resource: http://IP_ADDRESS/ENDPOINT
+
+switch:
+  - platform: vera
+
+
+

Style 2: List each device separately

+

You need to append numbers or strings to differentiate the entries, as in the example below. The appended number or string must be unique.

+
media_player livingroom:
+  platform: mpd
+  server: IP_ADDRESS
+
+media_player kitchen:
+  platform: plex
+
+camera 1:
+  platform: generic
+
+camera 2:
+  platform: mjpeg
+
+
+

Grouping devices

+

Once you have several devices set up, it is time to organize them into groups. +Each group consists of a name and a list of entity IDs. Entity IDs can be retrieved from the web interface by using the Set State page in the Developer Tools (service developer tool icon).

+
# Example configuration.yaml entry showing two styles
+group:
+  living_room:
+    entities: light.table_lamp, switch.ac
+  bedroom:
+    entities:
+      - light.bedroom
+      - media_player.nexus_player
+
+
+

For more details please check the Group page.

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/entity-registry/index.html b/docs/configuration/entity-registry/index.html new file mode 100644 index 0000000000..89b9249549 --- /dev/null +++ b/docs/configuration/entity-registry/index.html @@ -0,0 +1,382 @@ + + + + + + + + + Entity Registry - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Entity Registry +

+
+
+

+This is a new and experimental feature of Home Assistant. +

+

Starting with version 0.63, Home Assistant keeps a registry of known entities. +The entity registry makes sure that entities get unique identifiers and allow +customizing the identifiers and names of these entities.

+

As this is still a very new part of Home Assistant, changes will require a +restart of Home Assistant to take effect. A config user interface will be added +in a future version.

+

+An entity needs to have a unique ID to be registered in the entity registry. +Not all integrations currently provide a unique id for their entities. +

+

The entity registry is stored in <config>/entity_registry.yaml. As a user, +you are unable to add entries, only update them. Here is an example file:

+
climate.downstairs_virtual:
+  platform: nest
+  unique_id: EPoMyWkpNyoYu3pGlmGxabcdefghijkl
+  name: Downstairs thermostat
+light.study_ceiling:
+  platform: hue
+  unique_id: f0:fe:6b:00:14:00:00:00-00
+  disabled_by: user
+
+
+

As a user, you can change the entity_id and add the name and disabled_by +value to each entry.

+
    +
  • +

    The value of name will override the name of the entity as given by the +integration.

    +

    Added in Home Assistant 0.64.

    +
  • +
  • +

    The key disabled_by can either be hass or user. This functionality +is even more experimental than the whole entity registry itself and might +cause integrations to fail and might be removed in the future.

    +

    Added in Home Assistant 0.64.

    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/events/index.html b/docs/configuration/events/index.html new file mode 100644 index 0000000000..27ec122d0e --- /dev/null +++ b/docs/configuration/events/index.html @@ -0,0 +1,491 @@ + + + + + + + + + Events - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Events +

+
+
+

The core of Home Assistant is the event bus. The event bus allows any component to fire or listen for events. It is the core of everything. For example, any state change will be announced on the event bus as a state_changed event containing the previous and the new state of an entity.

+

Home Assistant contains a few built-in events that are used to coordinate between various components.

+

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.

+

+ Starting 0.42, it is no longer possible to listen for event homeassistant_start. Use the ‘homeassistant’ platform instead. +

+

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.

+

Event state_changed

+

Event state_changed is fired when a state changes. Both old_state and new_state are state objects. Documentation about state objects.

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
entity_idEntity ID of the changed entity. Example: light.kitchen
old_stateThe previous state of the entity before it changed. This field is omitted if the entity is new.
new_stateThe new state of the entity. This field is omitted if the entity is removed from the state machine.
+

Event time_changed

+

Event time_changed is fired every second by the timer and contains the current time.

+ + + + + + + + + + + + + +
FieldDescription
nowA datetime object containing the current time in UTC.
+

Event service_registered

+

Event service_registered is fired when a new service has been registered within Home Assistant.

+ + + + + + + + + + + + + + + + + +
FieldDescription
domainDomain of the service. Example: light.
serviceThe service to call. Example: turn_on
+

Event call_service

+

Event call_service is fired to call a service.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
domainDomain of the service. Example: light.
serviceThe service to call. Example: turn_on
service_dataDictionary with the service call parameters. Example: { 'brightness': 120 }.
service_call_idString with a unique call id. Example: 23123-4.
+

Event service_executed

+

Event service_executed is fired by the service handler to indicate the service is done.

+ + + + + + + + + + + + + +
FieldDescription
service_call_idString with the unique call id of the service call that was executed. Example: 23123-4.
+

Event platform_discovered

+

Event platform_discovered is fired when a new platform has been discovered by the discovery component.

+ + + + + + + + + + + + + + + + + +
FieldDescription
serviceThe platform that is discovered. Example: zwave.
discoveredDictionary containing discovery information. Example: { "host": "192.168.1.10", "port": 8889}.
+

Event component_loaded

+

Event component_loaded is fired when a new component has been loaded and initialized.

+ + + + + + + + + + + + + +
FieldDescription
componentDomain of the component that has just been initialized. Example: light.
+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/group_visibility/index.html b/docs/configuration/group_visibility/index.html new file mode 100644 index 0000000000..7b0d3d0bd2 --- /dev/null +++ b/docs/configuration/group_visibility/index.html @@ -0,0 +1,493 @@ + + + + + + + + + Group Visibility - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Group Visibility +

+
+
+

After filling Home Assistant with all your precious home automation devices, you usually end up with a cluttered interface and lots of groups that are not interesting in your current context. What if you just want to show groups that are interesting now and hide the rest? That’s when group visibility comes to play.

+

Changing visibility of a group

+

To change visibility of a group, use the service group.set_visibility, pass the group name as entity_id and use visible to decide whether the group should be shown or hidden.

+
service: group.set_visibility
+entity_id: group.basement
+data:
+  visible: False
+
+
+

+If a sensor belongs to only one group and that group is hidden, the sensor will “jump” to the top of the web interface. Add the sensor to an additional (visible) group if you do not want this to happen. +

+

Automations

+

First you should decide under which circumstances a group should be visible or not. Depending on the complexity, you might have to write two automations: one that hides the group and another that shows it.

+

In this example, the group group.basement is hidden when the sun sets and shown again when it rises:

+
automation:
+  trigger:
+    platform: sun
+    event: sunset
+  action:
+    service: group.set_visibility
+    entity_id: group.basement
+    data:
+      visible: False
+
+automation 2:
+  trigger:
+    platform: sun
+    event: sunrise
+  action:
+    service: group.set_visibility
+    entity_id: group.basement
+    data:
+      visible: True
+
+
+

Easier automations

+

One of the most common uses cases are to show groups during certain times of day, maybe commuting information during a work day morning or light switches when it is getting dark. The complexity of automations needed to make this happen will quickly get out of hand. So, one way to make the automations easier is to create a sensor that alters its state depending on time of day. One way of doing that is using a command_line sensor and a script:

+
#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from datetime import time, datetime
+
+def mk_occasion(name, start, end, days=None):
+    s = start.split(':')
+    e = end.split(':')
+    return {'name' : name,
+            'start': time(int(s[0]), int(s[1]), int(s[2])),
+            'end'  : time(int(e[0]), int(e[1]), int(e[2])),
+            'days' : days}
+
+# Matching is done from top to bottom
+OCCASIONS = [
+    # More specific occasions
+    mk_occasion('work_morning', '06:00:00', '07:10:00', range(5)),
+
+    # General matching
+    mk_occasion('weekday', '00:00:00', '23:59:59', range(5)),
+    mk_occasion('weekend', '00:00:00', '23:59:59', [5, 6])
+]
+
+def get_current_occasion(occasion_list, default_occasion='normal'):
+    now = datetime.now()
+    for occasion in OCCASIONS:
+        if occasion['start'] <= now.time() <= occasion['end'] and \
+           (occasion['days'] is None or now.weekday() in occasion['days']):
+            return occasion['name']
+    return default_occasion
+
+if __name__ == '__main__':
+    print(get_current_occasion(OCCASIONS))
+
+
+

This script will output “work_morning” from 06:00-07:10 during weekdays (monday-friday), “weekday” during all other time from monday-friday and “weekend” on saturdays and sundays. Adjust according to your needs. To create the sensor, just add it like this:

+
sensor:
+  - platform: command_line
+    name: Occasion
+    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” +

+

To simplify things, we create a Home Assistant script that changes the visibility of a group, but also verifies that an entity is in a specific state:

+
script:
+  group_visibility:
+    sequence:
+      - service: group.set_visibility
+        data_template:
+          entity_id: '{{ entity_id }}'
+          visible: '{{ is_state(cond, visible_state) }}'
+
+
+

The last part is writing an automation that hides or shows the group:

+
automation:
+  - alias: Work morning
+    trigger:
+      - platform: state
+        entity_id: sensor.occasion
+      - platform: homeassistant
+        event: start
+    action:
+      service: script.group_visibility
+      data:
+        entity_id: group.work_sensors
+        cond: sensor.occasion
+        visible_state: 'work_morning'
+
+
+

Our previously defined script will be called if sensor.occasion changes state OR when Home Assistant has started. The group group.work_sensors will be shown when sensor.occasion changes state to “work_morning” and hidden otherwise.

+

The complete example

+
group:
+  default_view:
+    entities:
+      - group.work_sensors
+
+  # Only visible when it's time to go to work
+  work_sensors:
+    name: Time to go to work
+    entities:
+      - sensor.something1
+      - sensor.something2
+
+sensor:
+  - platform: command_line
+    name: Occasion
+    command: "python3 occasion.py"
+
+script:
+  group_visibility:
+    sequence:
+      - service: group.set_visibility
+        data_template:
+          entity_id: '{{ entity_id }}'
+          visible: '{{ is_state(cond, visible_state) }}'
+
+automation:
+  - alias: Work morning
+    trigger:
+      - platform: state
+        entity_id: sensor.occasion
+      - platform: homeassistant
+        event: start
+    action:
+      service: script.group_visibility
+      data:
+        entity_id: group.work_sensors
+        cond: sensor.occasion
+        visible_state: 'work_morning'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/index.html b/docs/configuration/index.html new file mode 100644 index 0000000000..74afbc338d --- /dev/null +++ b/docs/configuration/index.html @@ -0,0 +1,376 @@ + + + + + + + + + Configuring Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Configuring Home Assistant +

+
+
+

When launched for the first time, Home Assistant will write a default configuration file enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and appear in the user interface.

+

The web interface can be found at http://ip.ad.dre.ss:8123/ - for example if your Home Assistant system has the IP address 192.168.0.40 then you’ll find the web interface as http://192.168.0.40:8123/.

+

The location of the folder differs between operating systems:

+ + + + + + + + + + + + + + + + + + + + + +
OSPath
macOS~/.homeassistant
Linux~/.homeassistant
Windows%APPDATA%/.homeassistant
+

If you want to use a different folder for configuration, use the config command line parameter: hass --config path/to/config.

+

Inside your configuration folder is the file configuration.yaml. This is the main file that contains components to be loaded with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable functionality.

+

+ You will have to restart Home Assistant for changes to configuration.yaml to take effect. +

+

If you run into trouble while configuring Home Assistant, have a look at the configuration troubleshooting page and at the configuration.yaml examples.

+

+ Test any changes to your configuration files from the command line with hass --script check_config. This script allows you to test changes without the need to restart Home Assistant. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/packages/index.html b/docs/configuration/packages/index.html new file mode 100644 index 0000000000..9ae86e8c8a --- /dev/null +++ b/docs/configuration/packages/index.html @@ -0,0 +1,407 @@ + + + + + + + + + Packages - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Packages +

+
+
+

Packages in Home Assistant provides a way to bundle different component’s configuration together. We were already introduced to the two configuration styles (specifying platforms entries together or individually) on the adding devices page. Both of these configuration methods require you to create the component key in the main configuration.yaml file. With packages we have a way to include different components, or parts of configuration using any of the !include directives introduced in splitting the configuration.

+

Packages are configured under the core homeassistant/packages in the configuration and take the format of a packages name (no spaces, all lower case) followed by a dictionary with the package config. For example, package pack_1 would be created as:

+
homeassistant:
+  ...
+  packages: 
+    pack_1:
+      ...package configuration here...
+
+
+

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 separate YAML file using !include.

+

Inline example, main configuration.yaml:

+
homeassistant:
+  ...
+  packages: 
+    pack_1:
+      switch:
+        - platform: rest
+          ...
+      light:
+        - platform: rpi
+          ...
+
+
+

Include example, main configuration.yaml:

+
homeassistant:
+  ...
+  packages: 
+    pack_1: !include my_package.yaml
+
+
+

The file my_package.yaml contains the “top-level” configuration:

+
switch:
+  - platform: rest
+    ...
+light:
+  - platform: rpi
+    ...
+
+
+

There are some rules for packages that will be merged:

+
    +
  1. Component names may only use the basic form (e.g. switch, but not switch 1 or switch aa).
  2. +
  3. Platform based components (light, switch, etc) can always be merged.
  4. +
  5. +

    Components where entities are identified by a key that will represent the entity_id ({key: config}) need to have unique ‘keys’ between packages and the main configuration file.

    +

    For example if we have the following in the main config. You are not allowed to re-use “my_input” again for input_boolean in a package:

    +
     input_boolean:
    +   my_input:
    +
    +
    +
  6. +
  7. Any component that is not a platform [2], or dictionaries with Entity ID keys [3] cannot be merged and can only occur once between all packages and the main configuration.
  8. +
+

+Components inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the component name. +

+

Create a packages folder

+

One way to organize packages would be to create a folder named “packages” in your Home Assistant configuration directory. In the packages directory you can store any number of packages in a YAML file. This entry in your configuration.yaml will load all packages:

+
homeassistant:
+  packages: !include_dir_named packages
+
+
+

This uses the concept splitting the configuration and will include all files in a directory with the keys representing the filenames. +See the documentation about splitting the configuration for more information about !include_dir_named and other include statements that might be helpful.

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/platform_options/index.html b/docs/configuration/platform_options/index.html new file mode 100644 index 0000000000..61562818ec --- /dev/null +++ b/docs/configuration/platform_options/index.html @@ -0,0 +1,359 @@ + + + + + + + + + Entity component platform options - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Entity component platform options +

+
+
+

Some components or platforms (those that are based on the entity class) allows various extra options to be set.

+

Entity namespace

+

By setting an entity namespace, all entities will be prefixed with that namespace. That way light.bathroom can become light.holiday_house_bathroom.

+
# Example configuration.yaml entry
+light:
+  platform: hue
+  entity_namespace: holiday_house
+
+
+

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

+
# Example configuration.yaml entry to poll Hue lights every 10 seconds.
+light:
+  platform: hue
+  scan_interval: 10
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/remote/index.html b/docs/configuration/remote/index.html new file mode 100644 index 0000000000..855dbb8b16 --- /dev/null +++ b/docs/configuration/remote/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Remote access - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Remote access +

+
+
+

If you’re interested in logging in to Home Assistant while away, you’ll have to make your instance remotely accessible. Remember to follow the securing checklist before doing this.

+

The most common approach is to set up port forwarding from your router to port 8123 on the computer that is hosting Home Assistant. General instructions on how to do this can be found by searching <router model> port forwarding instructions.

+

A problem with making a port accessible is that some Internet Service Providers only offer dynamic IPs. This can cause you to lose access to Home Assistant while away. You can solve this by using a free Dynamic DNS service like DuckDNS.

+

Remember: Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details please check the set up encryption using Let’s Encrypt blog post, or this detailed guide to using Let’s Encrypt with HA.

+

Protect your communication with a self-signed certificate between your client and the Home Assistant instance.

+

For another way to access your Home Assistant frontend, check out the instructions how to use Tor.

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/secrets/index.html b/docs/configuration/secrets/index.html new file mode 100644 index 0000000000..1c11f0f006 --- /dev/null +++ b/docs/configuration/secrets/index.html @@ -0,0 +1,382 @@ + + + + + + + + + Storing secrets - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

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

+

Using secrets.yaml

+

The workflow for moving private information to secrets.yaml is very similar to the splitting of the configuration. Create a secrets.yaml file in your Home Assistant configuration directory.

+

The entries for password and API keys in the configuration.yaml file usually looks like the example below.

+
http:
+  api_password: YOUR_PASSWORD
+
+
+

Those entries need to be replaced with !secret and an identifier.

+
http:
+  api_password: !secret http_password
+
+
+

The secrets.yaml file contains the corresponding password assigned to the identifier.

+
http_password: YOUR_PASSWORD
+
+
+

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,
  • +
  • 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:

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

+
$ hass --script check_config --secrets
+
+
+

This will print all your secrets.

+

Alternatives to secrets.yaml

+ +
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/securing/index.html b/docs/configuration/securing/index.html new file mode 100644 index 0000000000..c88cea46eb --- /dev/null +++ b/docs/configuration/securing/index.html @@ -0,0 +1,358 @@ + + + + + + + + + Securing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Securing +

+
+
+

One major advantage of Home Assistant is that it’s not dependent on cloud services. Even if you’re only using Home Assistant on a local network, you should take steps to secure your instance.

+

Checklist

+ +

If you want to allow remote access, consider these additional points:

+ +
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/splitting_configuration/index.html b/docs/configuration/splitting_configuration/index.html new file mode 100644 index 0000000000..543e53265a --- /dev/null +++ b/docs/configuration/splitting_configuration/index.html @@ -0,0 +1,707 @@ + + + + + + + + + Splitting up the configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Splitting up the configuration +

+
+
+

So you’ve been using Home Assistant for a while now and your configuration.yaml file brings people to tears or you simply want to start off with the distributed approach, here’s how to “split the configuration.yaml” into more manageable (read: humanly readable) pieces.

+

First off, several community members have sanitized (read: without api keys/passwords etc) versions of their configurations available for viewing, you can see a list of them here.

+

As commenting code doesn’t always happen, please read on for the details.

+

Now despite the logical assumption that the configuration.yaml will be replaced by this process it will in fact remain, albeit in a much less cluttered form.

+

In this lighter version we will still need what could be called the core snippet:

+
homeassistant:
+  # Name of the location where Home Assistant is running
+  name: My Home Assistant Instance
+  # Location required to calculate the time the sun rises and sets
+  latitude: 37
+  longitude: -121
+  # 'metric' for Metric, 'imperial' for Imperial
+  unit_system: imperial
+  # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+  time_zone: America/Los_Angeles
+  customize: !include customize.yaml
+
+
+

Note that each line after homeassistant: is indented two (2) spaces. Since the configuration files in Home Assistant are based on the YAML language, indentation and spacing are important. Also note that seemingly strange entry under customize:.

+

!include filename.yaml is the statement that tells Home Assistant to insert the contents of filename.yaml at that point. This is how we are going to break a monolithic and hard to read file (when it gets big) into more manageable chunks.

+

Now before we start splitting out the different components, let’s look at the other components (in our example) that will stay in the base file:

+
history:
+frontend:
+logbook:
+http:
+  api_password: ImNotTelling!
+
+ifttt:
+  key: [nope]
+
+wink:
+  access_token: [wouldn't you]
+  refresh_token: [like to know]
+
+zwave:
+  usb_path: /dev/ttyUSB0
+  config_path: /usr/local/share/python-openzwave/config
+  polling_interval: 10000
+
+mqtt:
+  broker: 127.0.0.1
+
+
+

As with the core snippet, indentation makes a difference. The component headers (mqtt:) should be fully left aligned (aka no indent), and the parameters (broker:) should be indented two (2) spaces.

+

While some of these components can technically be moved to a separate file they are so small or “one off’s” where splitting them off is superfluous. Also, you’ll notice the # symbol (hash/pound). This represents a “comment” as far as the commands are interpreted. Put another way, any line prefixed with a # will be ignored. This makes breaking up files for human readability really convenient, not to mention turning off features while leaving the entry intact. (Look at the zigbee: entry above and the b entry further down)

+

Now, lets assume that a blank file has been created in the Home Assistant configuration directory for each of the following:

+
automation.yaml
+zones.yaml
+sensors.yaml
+switches.yaml
+device_tracker.yaml
+customize.yaml
+
+
+

automation.yaml will hold all the automation component details. zones.yaml will hold the zone component details and so forth. These files can be called anything but giving them names that match their function will make things easier to keep track of.

+

Inside the base configuration file add the following entries:

+
automation: !include automation.yaml
+zone: !include zones.yaml
+sensor: !include sensors.yaml
+switch: !include switches.yaml
+device_tracker: !include device_tracker.yaml
+
+
+

Note that there can only be one !include: for each component so chaining them isn’t going to work. If that sounds like greek, don’t worry about it.

+

Alright, so we’ve got the single components and the include statements in the base file, what goes in those extra files?

+

Let’s look at the device_tracker.yaml file from our example:

+
- platform: owntracks
+- platform: nmap_tracker
+  hosts: 192.168.2.0/24
+  home_interval: 3
+
+  track_new_devices: yes
+  interval_seconds: 40
+  consider_home: 120
+
+
+

This small example illustrates how the “split” files work. In this case, we start with a “comment block” identifying the file followed by two (2) device tracker entries (owntracks and nmap). These files follow “style 1” that is to say a fully left aligned leading entry (- platform: owntracks) followed by the parameter entries indented two (2) spaces.

+

This (large) sensor configuration gives us another example:

+
### sensors.yaml
+### METEOBRIDGE #############################################
+- platform: tcp
+  name: 'Outdoor Temp (Meteobridge)'
+  host: 192.168.2.82
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[2]}}"
+  unit: C
+- platform: tcp
+  name: 'Outdoor Humidity (Meteobridge)'
+  host: 192.168.2.82
+  port: 5556
+  timeout: 6
+  payload: "Content-type: text/xml; charset=UTF-8\n\n"
+  value_template: "{{value.split (' ')[3]}}"
+  unit: Percent
+
+#### STEAM FRIENDS ##################################
+- platform: steam_online
+  api_key: [not telling]
+  accounts:
+      - 76561198012067051
+
+#### TIME/DATE ##################################
+- platform: time_date
+  display_options:
+      - 'time'
+      - 'date'
+- platform: worldclock
+  time_zone: Etc/UTC
+  name: 'UTC'
+- platform: worldclock
+  time_zone: America/New_York
+  name: 'Ann Arbor'
+
+
+

You’ll notice that this example includes a secondary parameter section (under the steam section) as well as a better example of the way comments can be used to break down files into sections.

+

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 our Discord chat server and ask away.

+

Debugging multiple configuration files

+

If you have many configuration files, the check_config script allows you to see how Home Assistant interprets them:

+
    +
  • Listing all loaded files: hass --script check_config --files
  • +
  • Viewing a component’s config: hass --script check_config --info light
  • +
  • Or all components’ config: hass --script check_config --info all
  • +
+

You can get help from the command line using: hass --script check_config --help

+

Advanced Usage

+

We offer four advanced options to include whole directories at once.

+
    +
  • !include_dir_list will return the content of a directory as a list with each file content being an entry in the list.
  • +
  • !include_dir_named will return the content of a directory as a dictionary which maps filename => content of file.
  • +
  • !include_dir_merge_list will return the content of a directory as a list by merging all files (which should contain a list) into 1 big list.
  • +
  • !include_dir_merge_named will return the content of a directory as a dictionary by loading each file and merging it into 1 big dictionary.
  • +
+

These work recursively. As an example using !include_dir_* automation, will include all 6 files shown below:

+
.
+└── .homeassistant
+    ├── automation
+    │   ├── lights
+    │   │   ├── turn_light_off_bedroom.yaml
+    │   │   ├── turn_light_off_lounge.yaml
+    │   │   ├── turn_light_on_bedroom.yaml
+    │   │   └── turn_light_on_lounge.yaml
+    │   ├── say_hello.yaml
+    │   └── sensors
+    │       └── react.yaml
+    └── configuration.yaml (not included)
+
+
+

Example: !include_dir_list

+

configuration.yaml

+
automation:
+  - alias: Automation 1
+    trigger:
+      platform: state
+      entity_id: device_tracker.iphone
+      to: 'home'
+    action:
+      service: light.turn_on
+      entity_id: light.entryway
+  - alias: Automation 2
+    trigger:
+      platform: state
+      entity_id: device_tracker.iphone
+      from: 'home'
+    action:
+      service: light.turn_off
+      entity_id: light.entryway
+
+
+

can be turned into:

+

configuration.yaml

+
automation: !include_dir_list automation/presence/
+
+
+

automation/presence/automation1.yaml

+
alias: Automation 1
+trigger:
+  platform: state
+  entity_id: device_tracker.iphone
+  to: 'home'
+action:
+  service: light.turn_on
+  entity_id: light.entryway
+
+
+

automation/presence/automation2.yaml

+
alias: Automation 2
+trigger:
+  platform: state
+  entity_id: device_tracker.iphone
+  from: 'home'
+action:
+  service: light.turn_off
+  entity_id: light.entryway
+
+
+

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.

+

Example: !include_dir_named

+

configuration.yaml

+

+alexa:
+  intents:
+    LocateIntent:
+      action:
+        service: notify.pushover
+        data:
+          message: Your location 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 }}
+            {%- endif -%}
+          {%- else -%}
+            I am sorry. Pootie! I do not know where {{User}} is.
+          {%- endfor -%}
+    WhereAreWeIntent:
+      speech:
+        type: plaintext
+        text: >
+          {%- if is_state('device_tracker.iphone', 'home') -%}
+            iPhone is home.
+          {%- else -%}
+            iPhone is not home.
+          {% endif %}
+
+
+

can be turned into:

+

configuration.yaml

+
alexa:
+  intents: !include_dir_named alexa/
+
+
+

alexa/LocateIntent.yaml

+

+action:
+  service: notify.pushover
+  data:
+    message: Your location 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 }}
+      {%- endif -%}
+    {%- else -%}
+      I am sorry. Pootie! I do not know where {{User}} is.
+    {%- endfor -%}
+
+
+

alexa/WhereAreWeIntent.yaml

+

+speech:
+  type: plaintext
+  text: >
+    {%- if is_state('device_tracker.iphone', 'home') -%}
+      iPhone is home.
+    {%- else -%}
+      iPhone is not home.
+    {% endif %}
+
+
+

Example: !include_dir_merge_list

+

configuration.yaml

+
automation:
+  - alias: Automation 1
+    trigger:
+      platform: state
+      entity_id: device_tracker.iphone
+      to: 'home'
+    action:
+      service: light.turn_on
+      entity_id: light.entryway
+  - alias: Automation 2
+    trigger:
+      platform: state
+      entity_id: device_tracker.iphone
+      from: 'home'
+    action:
+      service: light.turn_off
+      entity_id: light.entryway
+
+
+

can be turned into:

+

configuration.yaml

+
automation: !include_dir_merge_list automation/
+
+
+

automation/presence.yaml

+
- alias: Automation 1
+  trigger:
+    platform: state
+    entity_id: device_tracker.iphone
+    to: 'home'
+  action:
+    service: light.turn_on
+    entity_id: light.entryway
+- alias: Automation 2
+  trigger:
+    platform: state
+    entity_id: device_tracker.iphone
+    from: 'home'
+  action:
+    service: light.turn_off
+    entity_id: light.entryway
+
+
+

It is important to note that when using !include_dir_merge_list, you must include a list in each file (each list item is denoted with a hyphen [-]). Each file may contain one or more entries.

+

Example: !include_dir_merge_named

+

configuration.yaml

+
group:
+  bedroom:
+    name: Bedroom
+    entities:
+      - light.bedroom_lamp
+      - light.bedroom_overhead
+  hallway:
+    name: Hallway
+    entities:
+      - light.hallway
+      - thermostat.home
+  front_yard:
+    name: Front Yard
+    entities:
+      - light.front_porch
+      - light.security
+      - light.pathway
+      - sensor.mailbox
+      - camera.front_porch
+
+
+

can be turned into:

+

configuration.yaml

+
group: !include_dir_merge_named group/
+
+
+

group/interior.yaml

+
bedroom:
+  name: Bedroom
+  entities:
+    - light.bedroom_lamp
+    - light.bedroom_overhead
+hallway:
+  name: Hallway
+  entities:
+    - light.hallway
+    - thermostat.home
+
+
+

group/exterior.yaml

+
front_yard:
+  name: Front Yard
+  entities:
+    - light.front_porch
+    - light.security
+    - light.pathway
+    - sensor.mailbox
+    - camera.front_porch
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/state_object/index.html b/docs/configuration/state_object/index.html new file mode 100644 index 0000000000..d6c482010b --- /dev/null +++ b/docs/configuration/state_object/index.html @@ -0,0 +1,424 @@ + + + + + + + + + State Objects - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ State Objects +

+
+
+

Your devices are represented in Home Assistant as entities. The entities will write their current state to the state machine for other entities/templates/frontend to access. States are a current representation of the entity.

+

If you overwrite a state via the states dev tool or the API, it will not impact the actual device. If the device state is being polled, it will overwrite the state in the state machine the next polling.

+

All states will always have an entity id, a state and a timestamp when last updated and last changed.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
state.stateString representation of the current state of the entity. Example off.
state.entity_idEntity ID. Format: <domain>.<object_id>. Example: light.kitchen.
state.domainDomain of the entity. Example: light.
state.object_idObject ID of entity. Example: kitchen.
state.nameName of the entity. Based on friendly_name attribute with fall back to object ID. Example: Kitchen Ceiling.
state.last_updatedTime 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_changedTime the state changed. This is not updated when there are only updated attributes. Example: 2017-10-28 08:13:36.715874+00:00.
state.attributesA 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 its 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.

+

When using templates, attributes will be available by their name. For example state.attributes.assumed_state.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AttributeDescription
friendly_nameName of the entity. Example: Kitchen Ceiling.
iconIcon to use for the entity in the frontend. Example: mdi:home.
hiddenBoolean if the entity should not be shown in the frontend. Example: true.
entity_pictureURL to a picture that should be used instead of showing the domain icon. Example: http://example.com/picture.jpg.
assumed_stateBoolean if the current state is an assumption. More info Example: True.
unit_of_measurementThe unit of measurement the state is expressed in. Used for grouping graphs or understanding the entity. Example: °C.
+

When an attribute contains spaces, you can retrieve it like this: states.sensor.livingroom.attributes["Battery numeric"].

+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/templating/index.html b/docs/configuration/templating/index.html new file mode 100644 index 0000000000..c8573e9d4f --- /dev/null +++ b/docs/configuration/templating/index.html @@ -0,0 +1,576 @@ + + + + + + + + + Templating - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Templating +

+
+
+

This is an advanced feature of Home Assistant. You’ll need a basic understanding of the following things:

+ +

Templating is a powerful feature in Home Assistant that allows the user control over information that is going into and out of the system. It is used for:

+ +

Building templates

+

Templating in Home Assistant is powered by the Jinja2 templating engine. This means that we are using their syntax and make some custom Home Assistant variables available to templates during rendering. We will not go over the basics of the syntax, as Jinja2 does a lot better job at this in their Jinja2 documentation.

+

+The frontend has a template editor developer tool to help develop and debug templates. +

+

Templates can get big pretty fast. To keep a clear overview, consider using YAML multiline strings to define your templates:

+
script:
+  msg_who_is_home:
+    sequence:
+      - service: notify.notify
+        data_template:
+          message: >
+            {% if is_state('device_tracker.paulus', 'home') %}
+              Ha, Paulus is home!
+            {% else %}
+              Paulus is at {{ states('device_tracker.paulus') }}.
+            {% endif %}
+
+
+

Jinja2 supports a wide variety of operations:

+ +

Home Assistant template extensions

+

Home Assistant adds extensions to allow templates to access all of the current states:

+
    +
  • Iterating states will yield each state sorted alphabetically by entity ID.
  • +
  • Iterating states.domain will yield each state of that domain sorted alphabetically by entity ID.
  • +
  • states.sensor.temperature returns the state object for sensor.temperature.
  • +
  • states('device_tracker.paulus') will return the state string (not the object) of the given entity or unknown if it doesn’t exist.
  • +
  • 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.
  • +
  • float will format the output as float.
  • +
  • strptime(string, format) will parse a string to a datetime based on a format.
  • +
  • log(value, base) will take the logarithm of the input. When the base is omitted, it defaults to e - the natural logarithm. Can also be used as a filter.
  • +
  • Filter round(x) will convert the input to a number and round it to x decimals.
  • +
  • Filter timestamp_local will convert an UNIX timestamp to local time/data.
  • +
  • Filter timestamp_utc will convert an UNIX timestamp to UTC time/data.
  • +
  • Filter timestamp_custom(format_string, local_boolean) will convert an UNIX timestamp to a custom format, the use of a local timestamp is default, supporting Python format options.
  • +
  • Filter max will obtain the larget item in a sequence.
  • +
  • Filter min will obtain the smallest item in a sequence.
  • +
+

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

+

Home Assistant template extensions

+

In templates, besides the normal state object methods and properties, 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.
  • +
+

Examples

+

States

+

The next two statements result in same value if state exists. The second one will result in an error if state does not exist.

+
{{ states('device_tracker.paulus') }}
+{{ states.device_tracker.paulus.state }}
+
+
+

Attributes

+

Print an attribute if state is defined

+
{% if states.device_tracker.paulus %}
+  {{ states.device_tracker.paulus.attributes.battery }}
+{% else %}
+  ??
+{% endif %}
+
+
+

Sensor states

+

Print out a list of all the sensor states.

+
{% for state in states.sensor %}
+  {{ state.entity_id }}={{ state.state }},
+{% endfor %}
+
+{% if is_state('device_tracker.paulus', 'home') %}
+  Ha, Paulus is home!
+{% else %}
+  Paulus is at {{ states('device_tracker.paulus') }}.
+{% endif %}
+
+{{ states.sensor.temperature | float + 1 }}
+
+{{ (states.sensor.temperature | float * 10) | round(2) }}
+
+{% if states('sensor.temperature') | float > 20 %}
+  It is warm!
+{%endif %}
+
+{{ as_timestamp(states.binary_sensor.garage_door.last_changed) }}
+
+{{ as_timestamp(now()) - as_timestamp(states.binary_sensor.garage_door.last_changed) }}
+
+
+

Distance examples

+

If only 1 location is passed in, Home Assistant will measure the distance from home.

+
Using Lat Lng coordinates: {{ distance(123.45, 123.45) }}
+
+Using State: {{ distance(states.device_tracker.paulus) }}
+
+These can also be combined in any combination:
+{{ distance(123.45, 123.45, 'device_tracker.paulus') }}
+{{ distance('device_tracker.anne_therese', 'device_tracker.paulus') }}
+
+
+

Closest examples

+

Find entities closest to the Home Assistant location:

+
Query all entities: {{ closest(states) }}
+Query all entities of a specific domain: {{ closest('states.device_tracker') }}
+Query all entities in group.children: {{ closest('group.children') }}
+Query all entities in group.children: {{ closest(states.group.children) }}
+
+
+

Find entities closest to a coordinate or another entity. All previous arguments still apply for 2nd argument.

+
Closest to a coordinate: {{ closest(23.456, 23.456, 'group.children') }}
+Closest to an entity: {{ closest('zone.school', 'group.children') }}
+Closest to an entity: {{ closest(states.zone.school, 'group.children') }}
+
+
+

Combined

+

Since closest returns a state, we can combine it with distance too.

+
{{ closest(states).name }} is {{ distance(closest(states)) }} meters away.
+
+
+

Processing incoming data

+

The other part of templating is processing incoming data. It will allow you to modify incoming data and extract only the data you care about. This will work only for platforms and components that mentioned support for this in their documentation.

+

It depends per component or platform, but it is common to be able to define a template using the value_template configuration key. When a new value arrives, your template will be rendered while having access to the following values on top of the usual Home Assistant extensions:

+ + + + + + + + + + + + + + + + + +
VariableDescription
valueThe incoming value.
value_jsonThe incoming value parsed as JSON.
+

This means that if the incoming values looks like the sample below:

+
{
+  "on": "true",
+  "temp": 21
+}
+
+
+

The template for on would be:

+
'{{value_json.on}}'
+
+
+

Nested JSON in a response is supported as well

+
{
+  "sensor": {
+    "type": "air",
+    "id": "12345"
+  },
+  "values": {
+    "temp": 26.09,
+    "hum": 56.73,
+  }
+}
+
+
+

Just use the “Square bracket notation” to get the value.

+
'{{ value_json["values"]["temp"] }}'
+
+
+

The following overview contains a couple of options to get the needed values:

+
# Incoming value:
+{"primes": [2, 3, 5, 7, 11, 13]}
+
+# Extract third prime number
+{{ value_json.primes[2] }}
+
+# Format output
+{{ "%+.1f" | value_json }}
+
+# Math
+{{ value_json | float * 1024 }}
+{{ float(value_json) * (2**10) }}
+{{ value_json | log }}
+{{ log(1000, 10) }}
+
+# Timestamps
+{{ value_json.tst | timestamp_local }}
+{{ value_json.tst | timestamp_utc }}
+{{ value_json.tst | timestamp_custom('%Y' True) }}
+
+
+

To evaluate a response, go to the template developer tool icon template developer tools, create your output into “Template”, and check the result.

+

+{% set value_json=
+    {"name":"Outside",
+	 "device":"weather-ha",
+     "data":
+	    {"temp":"24C",
+		 "hum":"35%"
+		 }	}%}
+
+{{value_json.data.hum[:-1]}}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/configuration/troubleshooting/index.html b/docs/configuration/troubleshooting/index.html new file mode 100644 index 0000000000..83a6281303 --- /dev/null +++ b/docs/configuration/troubleshooting/index.html @@ -0,0 +1,404 @@ + + + + + + + + + Troubleshooting your configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Troubleshooting your configuration +

+
+
+

It can happen that you run into trouble while configuring Home Assistant. Perhaps a component is not showing up or is acting strangely. This page will discuss a few of the most common problems.

+

Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up.

+

Whenever a component or configuration option results in a warning, it will be stored in home-assistant.log in the configuration directory. This file is reset on start of Home Assistant.

+

My component does not show up

+

When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the home-assistant.log file and see if there are any errors related to your component you are trying to set up.

+

If you have incorrect entries in your configuration files you can use the check_config script to assist in identifying them: hass --script check_config.

+

Problems with the configuration

+

One of the most common problems with Home Assistant is an invalid configuration.yaml file.

+
    +
  • You can test your configuration using the command line with: hass --script check_config
  • +
  • You can verify your configuration’s yaml structure using this online YAML parser or YAML Lint.
  • +
  • To learn more about the quirks of YAML, read YAML IDIOSYNCRASIES by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well).
  • +
+

configuration.yaml does not allow multiple sections to have the same name. If you want to load multiple platforms for one component, you can append a number or string to the name or nest them using this style:

+
sensor:
+  - platform: forecast
+    ...
+  - platform: bitcoin
+    ...
+
+
+

Another common problem is that a required configuration setting is missing. If this is the case, the component will report this to home-assistant.log. You can have a look at the various component pages for instructions on how to setup the components.

+

See the logger component for instructions on how to define the level of logging you require for specific modules.

+

If you find any errors or want to expand the documentation, please let us know.

+

Problems with dependencies

+

Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in home-assistant.log.

+

The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can’t figure it out, please report it so we can investigate what is going on.

+

Problems with components

+

It can happen that some components either do not work right away or stop working after Home Assistant has been running for a while. If this happens to you, please report it so that we can have a look.

+

Multiple files

+

If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid.

+
light: !include devices/lights.yaml
+sensor: !include devices/sensors.yaml
+
+
+

Contents of lights.yaml (notice it does not contain light: ):

+
- platform: hyperion
+  host: 192.168.1.98
+  ...
+
+
+

Contents of sensors.yaml:

+
- platform: mqtt
+  name: "Room Humidity"
+  state_topic: "room/humidity"
+- platform: mqtt
+  name: "Door Motion"
+  state_topic: "door/motion"
+  ...
+
+
+

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

+

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/docs/configuration/yaml/index.html b/docs/configuration/yaml/index.html new file mode 100644 index 0000000000..e533fbca14 --- /dev/null +++ b/docs/configuration/yaml/index.html @@ -0,0 +1,403 @@ + + + + + + + + + YAML - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ YAML +

+
+
+

Home Assistant uses the YAML syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations.

+

For each component that you want to use in Home Assistant, you add code in your configuration.yaml file to specify its settings. +The following example entry specifies that you want to use the notify component with the pushbullet platform.

+
notify:
+  platform: pushbullet
+  api_key: "o.1234abcd"
+  name: pushbullet
+
+
+
    +
  • 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. 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 the online service YAMLLint 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 or in environmental 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 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.

+
input_select:
+  threat:
+    name: Threat level
+# A collection is used for options
+    options:
+     - 0
+     - 1
+     - 2
+     - 3
+    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).

+
sensor:
+  - platform: mqtt
+    state_topic: sensor/topic
+  - platform: mqtt
+    state_topic: sensor2/topic
+
+
+

Using Environment Variables

+

You can include values from your system’s environment variables with !env_var.

+
http:
+  api_password: !env_var PASSWORD
+
+
+

Default Value

+

If an environment variable is not set, you can fallback to a default value.

+
http:
+  api_password: !env_var PASSWORD default_password
+
+
+

Including Separate Files

+

To improve readability, you can source out certain domains from your main configuration file with the !include-syntax.

+
lights: !include lights.yaml
+
+
+

More information about this feature can also be found at splitting configuration.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/apache/index.html b/docs/ecosystem/apache/index.html new file mode 100644 index 0000000000..52fdde355c --- /dev/null +++ b/docs/ecosystem/apache/index.html @@ -0,0 +1,431 @@ + + + + + + + + + Apache Proxy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Apache Proxy +

+
+
+

This example demonstrates how you can configure Apache to act as a proxy for Home Assistant.

+

This is useful if you want to have:

+
    +
  • a subdomain redirecting to your Home Assistant instance
  • +
  • several subdomain for several instance
  • +
  • HTTPS redirection
  • +
+

Subdomain

+

So you already have a working Apache server available at example.org. Your Home Assistant is correctly working on this web server and available at http://localhost:8123

+

Enable mod_proxy_wstunnel by running if you encounter issues while serving Home Assistant through your proxy:

+
$ sudo a2enmod proxy_wstunnel
+
+
+

To be able to access to your Home Assistant instance by using https://home.example.org, add to following file to /etc/httpd/conf/extra/ as hass.conf

+
<VirtualHost *:443>
+  ServerName home.example.org
+  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]
+</VirtualHost>
+
+
+

and make sure that this file is read by Apache’s main configuration file /etc/httpd/conf/httpd.conf

+
...
+Include conf/extra/hass.conf
+...
+
+
+

If you don’t want HTTPS, you can change <VirtualHost *:443> to <VirtualHost *:80> or better consider redirecting all HTTP to HTTPS.

+

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

+
<VirtualHost *:443>
+  [...]
+  ProxyPass /api/websocket ws://localhost:8123/api/websocket disablereuse=on
+  [...]
+  ProxyPass / http://localhost:8123/ disablereuse=on
+  [...]
+</VirtualHost>
+
+
+

Multiple Instance

+

You already have Home Assistant running on http://localhost:8123 and available at home.example.org as describe before. The configuration file for this Home Assistant is available in /home/alice/.homeassistant/configuration.yaml

+

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/
  • +
+

In both solution, change port number used by modifying configuration.yaml

+
http:
+  server_port: 8124
+  ...
+
+
+

Start Home Assistant: Now, you have another instance running on http://localhost:8124

+

To access this instance by using https://countryside.example.org add to /etc/httpd/conf/extra/hass.conf

+
<VirtualHost *:443>
+  ProxyPreserveHost On
+  ProxyRequests Off
+  ServerName countryside.example.org
+  ProxyPass /api/websocket ws://localhost:8123/api/websocket
+  ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket
+  ProxyPass / http://localhost:8124/
+  ProxyPassReverse / http://localhost:8124/
+</VirtualHost>
+
+
+

HTTP to HTTPS redirection

+

Add to your /etc/httpd/conf/extra/hass.conf

+
<VirtualHost *:80>
+  ServerName example.org
+  ServerSignature Off
+
+  RewriteEngine on
+  RewriteCond %{HTTPS} !=on
+  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
+</VirtualHost>
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/api/index.html b/docs/ecosystem/appdaemon/api/index.html new file mode 100644 index 0000000000..3a4234c064 --- /dev/null +++ b/docs/ecosystem/appdaemon/api/index.html @@ -0,0 +1,1701 @@ + + + + + + + + + AppDaemon API Reference - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ AppDaemon API Reference +

+
+
+

Anatomy of an App

+

Automations in AppDaemon are performed by creating a piece of code (essentially a Python Class) and then instantiating it as an Object one or more times by configuring it as an App in the configuration file. The App is given a chance to register itself for whatever events it wants to subscribe to, and AppDaemon will then make calls back into the Object’s code when those events occur, allowing the App to respond to the event with some kind of action.

+

The first step is to create a unique file within the apps directory (as defined in the [AppDaemon] section of configuration file). This file is in fact a Python module, and is expected to contain one or more classes derived from the supplied AppDaemon class, imported from the supplied homeassistant.appapi module. The start of an app might look like this:

+
import homeassistant.appapi as appapi
+
+class MotionLights(appapi.AppDaemon):
+
+
+

When configured as an app in the config file (more on that later) the lifecycle of the App begins. It will be instantiated as an object by AppDaemon, and immediately, it will have a call made to its initialize() function - this function must appear as part of every app:

+
  def initialize(self):
+
+
+

The initialize function allows the app to register any callbacks it might need for responding to state changes, and also any setup activities. When the initialize() function returns, the App will be dormant until any of its callbacks are activated.

+

There are several circumstances under which initialize() might be called:

+
    +
  • Initial start of AppDaemon
  • +
  • Following a change to the Class code
  • +
  • Following a change to the module parameters
  • +
  • Following initial configuration of an app
  • +
  • Following a change in the status of Daylight Savings Time
  • +
  • Following a restart of Home Assistant
  • +
+

In every case, the App is responsible for recreating any state it might need as if it were the first time it was ever started. If initialize() is called, the app can safely assume that it is either being loaded for the first time, or that all callbacks and timers have been canceled. In either case, the APP will need to recreate them. Depending upon the application it may be desirable for the App to establish state such as whether or not a particular light is on, within the initialize() function to ensure that everything is as expected or to make immediate remedial action (e.g. turn off a light that might have been left on by mistake when the app was restarted).

+

After the initialize() function is in place, the rest of the app consists of functions that are called by the various callback mechanisms, and any additional functions the user wants to add as part of the program logic. Apps are able to subscribe to 2 main classes of events:

+
    +
  • Scheduled Events
  • +
  • State Change Events
  • +
+

These, along with their various subscription calls and helper functions, will be described in detail in later sections.

+

To wrap up this section, here is a complete functioning App (with comments):

+
import homeassistant.appapi as appapi
+import datetime
+
+# Declare Class
+class NightLight(appapi.AppDaemon):
+  #initialize() function which will be called at startup and reload
+  def initialize(self):
+    # Create a time object for 7pm
+    time = datetime.time(19, 00, 0)
+    # Schedule a daily callback that will call run_daily() at 7pm every night
+    self.run_daily(self.run_daily_callback, time)
+
+   # Our callback function will be called by the scheduler every day at 7pm
+  def run_daily_callback(self, kwargs):
+    # Call to Home Assistant to turn the porch light on
+    self.turn_on("light.porch")
+
+
+

To summarize - an App’s lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That’s all there is to it!

+

About the API

+

The implementation of the API is located in the AppDaemon class that Apps are derived from. The code for the functions is therefore available to the App simply by invoking the name of the function from the object namespace using the self keyword, as in the above examples. self.turn_on() for example is just a method defined in the parent class and made available to the child. This design decision was made to simplify some of the implementation and hide passing of unnecessary variables during the API invocation.

+

Configuration of Apps

+

Apps are configured by specifying new sections in the configuration file. [AppDaemon] is a reserved section, for configuration of AppDaemon itself. The name of the section is the name the App is referred to within the system in log files etc. and must be unique.

+

To configure a new App you need a minimum of two directives:

+
    +
  • module - the name of the module (without the .py) that contains the class to be used for this App
  • +
  • class - the name of the class as defined within the module for the APPs code
  • +
+

Although the section/App name must be unique, it is possible to re-use a class as many times as you want, and conversely to put as many classes in a module as you want. A sample definition for a new App might look as follows:

+
[newapp]
+module = new
+class = NewApp
+
+
+

When AppDaemon sees the following configuration it will expect to find a class called NewApp defined in a module called new.py in the apps subdirectory. Apps can be placed at the root of the Apps directory or within a subdirectory, an arbitrary depth down - wherever the App is, as long as it is in some subdirectory of the Apps dir, or in the Apps dir itself, AppDaemon will find it. There is no need to include information about the path, just the name of the file itself (without the .py) is sufficient. If names in the subdirectories overlap, AppDir will pick one of them but the exact choice it will make is undefined.

+

When starting the system for the first time or when reloading an App or Module, the system will log the fact in its main log. It is often the case that there is a problem with the class, maybe a syntax error or some other problem. If that is the case, details will be output to the error log allowing the user to remedy the problem and reload.

+

Steps to writing an App

+
    +
  1. Create the code in a new or shared module by deriving a class from AppDaemon, add required callbacks and code
  2. +
  3. Add the App to the configuration file
  4. +
  5. There is no number 3
  6. +
+

Reloading Modules and Classes

+

Reloading of modules is automatic. When the system spots a change in a module, it will automatically reload and recompile the module. It will also figure out which Apps were using that Module and restart them, causing all of their existing callbacks to be cleared, and their initialize() function to be called.

+

The same is true if changes are made to an App’s configuration - changing the class, or arguments (see later) will cause that app to be reloaded in the same way. The system is also capable of detecting if a new app has been added, or if one has been removed, and it will act appropriately, starting the new app immediately and removing all callbacks for the removed app.

+

The suggested order for creating a new App is to add the module code first and work until it compiles cleanly, and only then add an entry in the configuration file to actually run it. A good workflow is to continuously monitor the error file (using tail -f on Linux for instance) to ensure that errors are seen and can be remedied.

+

Passing Arguments to Apps

+

There wouldn’t be much point in being able to run multiple versions of an App if there wasn’t some way to instruct them to do something different. For this reason it is possible to pass any required arguments to an App, which are then made available to the object at runtime. The arguments themselves can be called anything (apart from module or class) and are simply added into the section after the 2 mandatory directives like so:

+
[MyApp]
+module = myapp
+class = MyApp
+param1 = spam
+param2 = eggs
+
+
+

Within the Apps code, the 2 parameters (as well as the module and class) are available as a dictionary called args, and accessed as follows:

+
param1 = self.args["param1"]
+param2 = self.args["param2"]
+
+
+

A use case for this might be an App that detects motion and turns on a light. If you have 3 places you want to run this, rather than hardcoding this into 3 separate Apps, you need only code a single app and instantiate it 3 times with different arguments. It might look something like this:

+
[downstairs_motion_light]
+module = motion_light
+class = MotionLight
+sensor = binary_sensor.downstairs_hall
+light = light.downstairs_hall
+[upstairs_motion_light]
+module = motion_light
+class = MotionLight
+sensor = binary_sensor.upstairs_hall
+light = light.upstairs_hall
+[garage_motion_light]
+module = motion_light
+class = MotionLight
+sensor = binary_sensor.garage
+light = light.garage
+
+
+

Callback Constraints

+

Callback constraints are a feature of AppDaemon that removes the need for repetition of some common coding checks. Many Apps will wish to process their callbacks only when certain conditions are met, e.g. someone is home, and it’s after sunset. These kinds of conditions crop up a lot, and use of callback constraints can significantly simplify the logic required within callbacks.

+

Put simply, callback constraints are one or more conditions on callback execution that can be applied to an individual App. An App’s callbacks will only be executed if all of the constraints are met. If a constraint is absent it will not be checked for.

+

For example, the presence callback constraint can be added to an App by adding a parameter to its configuration like this:

+
[some_app]
+module = some_module
+class = SomeClass
+constrain_presence = noone
+
+
+

Now, although the initialize() function will be called for MyClass, and it will have a chance to register as many callbacks as it desires, none of the callbacks will execute, in this case, until everyone has left. This could be useful for an interior motion detector App for instance. There are several different types of constraints:

+
    +
  • input_boolean
  • +
  • input_select
  • +
  • presence
  • +
  • time
  • +
+

An App can have as many or as few as are required. When more than one constraint is present, they must all evaluate to true to allow the callbacks to be called. Constraints becoming true are not an event in their own right, but if they are all true at a point in time, the next callback that would otherwise been blocked due to constraint failure will now be called. Similarly, if one of the constraints becomes false, the next callback that would otherwise have been called will be blocked.

+

They are described individually below.

+

input_boolean

+

By default, the input_boolean constraint prevents callbacks unless the specified input_boolean is set to “on”. This is useful to allow certain Apps to be turned on and off from the user interface. For example:

+
[some_app]
+module = some_module
+class = SomeClass
+constrain_input_boolean = input_boolean.enable_motion_detection
+
+
+

If you want to reverse the logic so the constraint is only called when the input_boolean is off, use the optional state parameter by appending “,off” to the argument, e.g.:

+
[some_app]
+module = some_module
+class = SomeClass
+constrain_input_boolean = input_boolean.enable_motion_detection,off
+
+
+

input_select

+

The input_select constraint prevents callbacks unless the specified input_select is set to one or more of the nominated (comma separated) values. This is useful to allow certain Apps to be turned on and off according to some flag, e.g. a house mode flag.

+
# Single value
+constrain_input_select = input_select.house_mode,Day
+# or multiple values
+constrain_input_select = input_select.house_mode,Day,Evening,Night
+
+
+

presence

+

The presence constraint will constrain based on presence of device trackers. It takes 3 possible values:

+
    +
  • noone - only allow callback execution when no one is home
  • +
  • anyone - only allow callback execution when one or more person is home
  • +
  • everyone - only allow callback execution when everyone is home
  • +
+
constrain_presence = anyone
+# or
+constrain_presence = someone
+# or
+constrain_presence = noone
+
+
+

time

+

The time constraint consists of 2 variables, constrain_start_time and constrain_end_time. Callbacks will only be executed if the current time is between the start and end times.

+
    +
  • If both are absent no time constraint will exist
  • +
  • If only start is present, end will default to 1 second before midnight
  • +
  • If only end is present, start will default to midnight
  • +
+

The times are specified in a string format with one of the following formats:

+
    +
  • HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format.
  • +
  • + + + + + + + + +
    sunrisesunset [+- HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds
    +
  • +
+

The time based constraint system correctly interprets start and end times that span midnight.

+
# Run between 8am and 10pm
+constrain_start_time = 08:00:00
+constrain_end_time = 22:00:00
+# Run between sunrise and sunset
+constrain_start_time = sunrise
+constrain_end_time = sunset
+# Run between 45 minutes before sunset and 45 minutes after sunrise the next day
+constrain_start_time = sunset - 00:45:00
+constrain_end_time = sunrise + 00:45:00
+
+
+

days

+

The day constraint consists of as list of days for which the callbacks will fire, e.g.

+
constrain_days = mon,tue,wed
+
+
+

Callback constraints can also be applied to individual callbacks within Apps, see later for more details.

+

A Note on Threading

+

AppDaemon is multithreaded. This means that any time code within an App is executed, it is executed by one of many threads. This is generally not a particularly important consideration for this application; in general, the execution time of callbacks is expected to be far quicker than the frequency of events causing them. However, it should be noted for completeness, that it is certainly possible for different pieces of code within the App to be executed concurrently, so some care may be necessary if different callback for instance inspect and change shared variables. This is a fairly standard caveat with concurrent programming, and if you know enough to want to do this, then you should know enough to put appropriate safeguards in place. For the average user however this shouldn’t be an issue. If there are sufficient use cases to warrant it, I will consider adding locking to the function invocations to make the entire infrastructure threadsafe, but I am not convinced that it is necessary.

+

An additional caveat of a threaded worker pool environment is that it is the expectation that none of the callbacks tie threads up for a significant amount of time. To do so would eventually lead to thread exhaustion, which would make the system run behind events. No events would be lost as they would be queued, but callbacks would be delayed which is a bad thing.

+

Given the above, NEVER use Python’s time.sleep() if you want to perform an operation some time in the future, as this will tie up a thread for the period of the sleep. Instead use the scheduler’s run_in() function which will allow you to delay without blocking any threads.

+

State Operations

+

A note on Home Assistant State

+

State within Home Assistant is stored as a collection of dictionaries, one for each entity. Each entity’s dictionary will have some common fields and a number of entity type specific fields The state for an entity will always have the attributes:

+
    +
  • last_updated
  • +
  • last_changed
  • +
  • state
  • +
+

Any other attributes such as brightness for a lamp will only be present if the entity supports them, and will be stored in a sub-dictionary called attributes. When specifying these optional attributes in the get_state() call, no special distinction is required between the main attributes and the optional ones - get_state() will figure it out for you.

+

Also bear in mind that some attributes such as brightness for a light, will not be present when the light is off.

+

In most cases, the attribute state has the most important value in it, e.g. for a light or switch this will be on or off, for a sensor it will be the value of that sensor. Many of the AppDaemon API calls and callbacks will implicitly return the value of state unless told to do otherwise.

+

get_state()

+

Synopsis

+
get_state(entity = None, attribute = None)
+
+
+

get_state() is used to query the state of any component within Home Assistant. State updates are continuously tracked so this call runs locally and does not require AppDaemon to call back to Home Assistant and as such is very efficient.

+

Returns

+

get_state() returns a dictionary or single value, the structure of which varies according to the parameters used.

+

Parameters

+

All parameters are optional, and if get_state() is called with no parameters it will return the entire state of Home Assistant at that given time. This will consist of a dictionary with a key for each entity. Under that key will be the standard entity state information.

+
entity
+

This is the name of an entity or device type. If just a device type is provided, e.g. light or binary_sensor, get_state() will return a dictionary of all devices of that type, indexed by the entity_id, containing all the state for each entity.

+

If a fully qualified entity_id is provided, get_state() will return the state attribute for that entity, e.g. on or off for a light.

+
attribute
+

Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified entity_id, a single value representing the attribute will be returned, or None if it is not present.

+

The value all for attribute has special significance and will return the entire state dictionary for the specified entity rather than an individual attribute value.

+

Examples

+
# Return state for the entire system
+state = self.get_state()
+
+# Return state for all switches in the system
+state = self.get_state("switch")
+
+# Return the state attribute for light.office_1
+state = self.get_state("light.office_1")
+
+# Return the brightness attribute for light.office_1
+state = self.get_state("light.office_1", "brightness")
+
+# Return the entire state for light.office_1
+state = self.get_state("light.office_1", "all")
+
+
+

set_state()

+

set_state() will make a call back to Home Assistant and make changes to the internal state of Home Assistant. This is not something that you would usually want to do and the applications are limited however the call is included for completeness. Note that for instance, setting the state of a light to on won’t actually switch the device on, it will merely change the state of the device in Home Assistant so that it no longer reflects reality. In most cases, the state will be corrected the next time Home Assistant polls the device or someone causes a state change manually. To effect actual changes of devices use one of the service call functions.

+

One possible use case for set_state() is for testing. If for instance you are writing an App to turn on a light when it gets dark according to a luminance sensor, you can use set_state() to temporarily change the light level reported by the sensor to test your program. However this is also possible using the developer tools.

+

At the time of writing, it appears that no checking is done as to whether or not the entity exists, so it is possible to add entirely new entries to Home Assistant’s state with this call.

+

Synopsis

+
set_state(entity_id, **kwargs)
+
+
+

Returns

+

set_state() returns a dictionary representing the state of the device after the call has completed.

+

Parameters

+
entity_id
+

Entity id for which the state is to be set, e.g. light.office_1.

+
values
+

A list of keyword values to be changed or added to the entities state. e.g. state = "off". Note that any optional attributes such as colors for bulbs etc, need to reside in a dictionary called attributes; see the example.

+

Examples

+
status = self.set_state("light.office_1", state = "on", attributes = {"color_name": "red"})
+
+
+

About Callbacks

+

A large proportion of home automation revolves around waiting for something to happen and then reacting to it; a light level drops, the sun rises, a door opens etc. Home Assistant keeps track of every state change that occurs within the system and streams that information to AppDaemon almost immediately.

+

An individual App however usually doesn’t care about the majority of state changes going on in the system; Apps usually care about something very specific, like a specific sensor or light. Apps need a way to be notified when a state change happens that they care about, and be able to ignore the rest. They do this through registering callbacks. A callback allows the App to describe exactly what it is interested in, and tells AppDaemon to make a call into its code in a specific place to be able to react to it - this is a very familiar concept to anyone familiar with event-based programming.

+

There are 3 types of callbacks within AppDaemon:

+
    +
  • State Callbacks - react to a change in state
  • +
  • Scheduler Callbacks - react to a specific time or interval
  • +
  • Event Callbacks - react to specific Home Assistant and Appdaemon events.
  • +
+

All callbacks allow the user to specify additional parameters to be handed to the callback via the standard Python **kwargs mechanism for greater flexibility.

+

About Registering Callbacks

+

Each of the various types of callback have their own function or functions for registering the callback:

+
    +
  • listen_state() for state callbacks
  • +
  • Various scheduler calls such as run_once() for scheduler callbacks
  • +
  • listen_event() for event callbacks.
  • +
+

Each type of callback shares a number of common mechanisms that increase flexibility.

+

Callback Level Constraints

+

When registering a callback, you can add constraints identical to the Application level constraints described earlier. The difference is that a constraint applied to an individual callback only affects that callback and no other. The constraints are applied by adding Python keyword-value style arguments after the positional arguments. The parameters themselves are named identically to the previously described constraints and have identical functionality. For instance, adding:

+

constrain_presence="everyone"

+

to a callback registration will ensure that the callback is only run if the callback conditions are met and in addition everyone is present although any other callbacks might run whenever their event fires if they have no constraints.

+

For example:

+

self.listen_state(self.motion, "binary_sensor.drive", constrain_presence="everyone")

+

User Arguments

+

Any callback has the ability to allow the App creator to pass through arbitrary keyword arguments that will be presented to the callback when it is run. The arguments are added after the positional parameters just like the constraints. The only restriction is that they cannot be the same as any constraint name for obvious reasons. For example, to pass the parameter arg1 = "home assistant" through to a callback you would register a callback as follows:

+

self.listen_state(self.motion, "binary_sensor.drive", arg1="home assistant")

+

Then in the callback you could use it as follows:

+
def motion(self, entity, attribute, old, new, **kwargs):
+    self.log("Arg1 is {}".format(kwargs["arg1"]))
+
+
+

State Callbacks

+

AppDaemons’s state callbacks allow an App to listen to a wide variety of events, from every state change in the system, right down to a change of a single attribute of a particular entity. Setting up a callback is done using a single API call listen_state() which takes various arguments to allow it to do all of the above. Apps can register as many or as few callbacks as they want.

+

About State Callback Functions

+

When calling back into the App, the App must provide a class function with a known signature for AppDaemon to call. The callback will provide various information to the function to enable the function to respond appropriately. For state callbacks, a class defined callback function should look like this:

+
  def my_callback(self, entity, attribute, old, new, **kwargs):
+    <do some useful work here>
+
+
+

You can call the function whatever you like - you will reference it in the listen_state() call, and you can create as many callback functions as you need.

+

The parameters have the following meanings:

+

self

+

A standard Python object reference.

+

entity

+

Name of the entity the callback was requested for or None.

+

attribute

+

Name of the attribute the callback was requested for or None.

+

old

+

The value of the state before the state change.

+

new

+

The value of the state after the state change.

+

old and new will have varying types depending on the type of callback.

+

**kwargs

+

A dictionary containing any constraints and/or additional user specific keyword arguments supplied to the listen_state() call.

+

listen_state()

+

listen_state() allows the user to register a callback for a wide variety of state changes.

+

Synopsis

+
handle = listen_state(callback, entity = None, **kwargs)
+
+
+

Returns

+

A unique identifier that can be used to cancel the callback if required. Since variables created within object methods are local to the function they are created in, and in all likelihood the cancellation will be invoked later in a different function, it is recommended that handles are stored in the object namespace, e.g. self.handle.

+

Parameters

+

All parameters except callback are optional, and if listen_state() is called with no additional parameters it will subscribe to any state change within Home Assistant.

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard State Callback format documented above.

+
entity
+

This is the name of an entity or device type. If just a device type is provided, e.g. light or binary_sensor, listen_state() will subscribe to state changes of all devices of that type. If a fully qualified entity_id is provided, listen_state() will listen for state changes for just that entity.

+

When called, AppDaemon will supply the callback function, in old and new, with the state attribute for that entity, e.g. on or off for a light.

+
attribute (optional)
+

Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified entity_id, listen_state() will subscribe to changes for just that attribute within that specific entity. The new and old parameters in the callback function will be provided with a single value representing the attribute.

+

The value all for attribute has special significance and will listen for any state change within the specified entity, and supply the callback functions with the entire state dictionary for the specified entity rather than an individual attribute value.

+
new = (optional)
+

If new is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually state) in the new state match the value of new.

+
old = (optional)
+

If old is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually state) in the old state match the value of old.

+

Note: old and new can be used singly or together.

+
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 occurred, since the assumption is that none of them have changed in the intervening period.

+
  def my_callback(self, **kwargs):
+    <do some useful work here>
+
+
+

(Scheduler callbacks are documented in detail laer in this document)

+
**kwargs
+

Zero or more keyword arguments that will be supplied to the callback when it is called.

+

Examples

+
# Listen for any state change and return the state attribute
+self.handle = self.listen_state(self.my_callback)
+
+# Listen for any state change involving a light and return the state attribute
+self.handle = self.listen_state(self.my_callback, "light")
+
+# Listen for a state change involving light.office1 and return the state attribute
+self.handle = self.listen_state(self.my_callback, "light.office_1")
+
+# Listen for a state change involving light.office1 and return the entire state as a dict
+self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "all")
+
+# Listen for a state change involving the brightness attribute of light.office1
+self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "brightness")
+
+# Listen for a state change involving light.office1 turning on and return the state attribute
+self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on")
+
+# Listen for a state change involving light.office1 changing from brightness 100 to 200 and return the state attribute
+self.handle = self.listen_state(self.my_callback, "light.office_1", old = "100", new = "200")
+
+# Listen for a state change involving light.office1 changing to state on and remaining on for a minute
+self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on", duration = 60)
+
+
+
+

cancel_listen_state()

+

Cancel a listen_state() callback. This will mean that the App will no longer be notified for the specific state change that has been canceled. Other state changes will continue to be monitored.

+

Synopsis

+
cancel_listen_state(handle)
+
+
+

Returns

+

Nothing

+

Parameters

+
handle
+

The handle returned when the listen_state() call was made.

+

Examples

+
self.cancel_listen_state(self.office_light_handle)
+
+
+

info_listen_state()

+

Get information on state a callback from its handle.

+

Synopsis

+
entity, attribute, kwargs = self.info_listen_state(self.handle)
+
+
+

Returns

+

entity, attribute, kwargs - the values supplied when the callback was initially created.

+

Parameters

+
handle
+

The handle returned when the listen_state() call was made.

+

Examples

+
entity, attribute, kwargs = self.info_listen_state(self.handle)
+
+
+

Scheduler

+

AppDaemon contains a powerful scheduler that is able to run with 1 second resolution to fire off specific events at set times, or after set delays, or even relative to sunrise and sunset. In general, events should be fired less than a second after specified but under certain circumstances there may be short additional delays.

+

About Schedule Callbacks

+

As with State Change callbacks, Scheduler Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this:

+
  def my_callback(self, **kwargs):
+    <do some useful work here>
+
+
+

You can call the function whatever you like; you will reference it in the Scheduler call, and you can create as many callback functions as you need.

+

The parameters have the following meanings:

+

self

+

A standard Python object reference

+

**kwargs

+

A dictionary containing Zero or more keyword arguments to be supplied to the callback.

+

Creation of Scheduler Callbacks

+

Scheduler callbacks are created through use of a number of convenience functions which can be used to suit the situation.

+

run_in()

+

Run the callback in a defined number of seconds. This is used to add a delay, for instance a 60 second delay before a light is turned off after it has been triggered by a motion detector. This callback should always be used instead of time.sleep() as discussed previously.

+

Synopsis

+
self.handle = self.run_in(callback, delay, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
vcallback %}
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
delay
+

Delay, in seconds before the callback is invoked.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
self.handle = self.run_in(self.run_in_c)
+self.handle = self.run_in(self.run_in_c, title = "run_in5")
+
+
+

run_once()

+

Run the callback once, at the specified time of day. If the time of day is in the past, the callback will occur on the next day.

+

Synopsis

+
self.handle = self.run_once(callback, time, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
time
+

A Python time object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Run at 4pm today, or 4pm tomorrow if it is already after 4pm
+import datetime
+...
+runtime = datetime.time(16, 0, 0)
+handle = self.run_once(self.run_once_c, runtime)
+
+
+

run_at()

+

Run the callback once, at the specified date and time.

+

Synopsis

+
self.handle = self.run_at(callback, datetime, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer. run_at() will raise an exception if the specified time is in the past.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
datetime
+

A Python datetime object that specifies when the callback will occur.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Run at 4pm today
+import datetime
+...
+runtime = datetime.time(16, 0, 0)
+today = datetime.date.today()
+event = datetime.datetime.combine(today, runtime)
+handle = self.run_once(self.run_once_c, event)
+
+
+

run_daily()

+

Execute a callback at the same time every day. If the time has already passed, the function will not be invoked until the following day at the specified time.

+

Synopsis

+
self.handle = self.run_daily(callback, time, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
time
+

A Python time object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Run daily at 7pm
+import datetime
+...
+time = datetime.time(19, 0, 0)
+self.run_daily(self.run_daily_c, runtime)
+
+
+

run_hourly()

+

Execute a callback at the same time every hour. If the time has already passed, the function will not be invoked until the following hour at the specified time.

+

Synopsis

+
self.handle = self.run_hourly(callback, time = None, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
time
+

A Python time object that specifies when the callback will occur, the hour component of the time object is ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start an hour from the time that run_hourly() was executed.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Run every hour, on the hour
+import datetime
+...
+time = datetime.time(0, 0, 0)
+self.run_daily(self.run_daily_c, runtime)
+
+
+

run_minutely()

+

Execute a callback at the same time every minute. If the time has already passed, the function will not be invoked until the following minute at the specified time.

+

Synopsis

+
self.handle = self.run_minutely(callback, time = None, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
time
+

A Python time object that specifies when the callback will occur, the hour and minute components of the time object are ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start a minute from the time that run_minutely() was executed.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Run Every Minute on the minute
+import datetime
+...
+time = datetime.time(0, 0, 0)
+self.run_minutely(self.run_minutely_c, time)
+
+
+

run_every()

+

Execute a repeating callback with a configurable delay starting at a specific time.

+

Synopsis

+
self.handle = self.run_every(callback, time, repeat, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
time
+

A Python time object that specifies when the initial callback will occur.

+
repeat
+

After the initial callback has occurred, another will occur every repeat seconds.

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Run every 17 minutes starting in 2 hours time
+import datetime
+...
+self.run_every(self.run_every_c, time, 17 * 60)
+
+
+

cancel_timer()

+

Cancel a previously created timer

+

Synopsis

+
self.cancel_timer(handle)
+
+
+

Returns

+

None

+

Parameters

+
handle
+

A handle value returned from the original call to create the timer.

+

Examples

+
self.cancel_timer(handle)
+
+
+

info_timer()

+

Get information on a scheduler event from its handle.

+

Synopsis

+
time, interval, kwargs = self.info_timer(handle)
+
+
+

Returns

+

time - datetime object representing the next time the callback will be fired

+

interval - repeat interval if applicable, 0 otherwise.

+

kwargs - the values supplied when the callback was initially created.

+

Parameters

+
handle
+

The handle returned when the scheduler call was made.

+

Examples

+
time, interval, kwargs = self.info_timer(handle)
+
+
+

Scheduler Ransomization

+

All of the scheduler calls above support 2 additional optional arguments, random_start and random_end. Using these arguments it is possible to randomize the firing of callbacks to the degree desired by setting the appropriate number of seconds with the parameters.

+
    +
  • 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 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:

+
# Run a callback in 2 minutes minus a random number of seconds between 0 and 60, e.g. run between 60 and 120 seconds from now
+self.handle = self.run_in(callback, 120, random_start = -60, **kwargs)
+# Run a callback in 2 minutes plus a random number of seconds between 0 and 60, e.g. run between 120 and 180 seconds from now
+self.handle = self.run_in(callback, 120, random_end = 60, **kwargs)
+# Run a callback in 2 minutes plus or minus a random number of seconds between 0 and 60, e.g. run between 60 and 180 seconds from now
+self.handle = self.run_in(callback, 120, random_start = -60, random_end = 60, **kwargs)
+
+
+

Sunrise and Sunset

+

AppDaemon has a number of features to allow easy tracking of sunrise and sunset as well as a couple of scheduler functions. Note that the scheduler functions also support the randomization parameters described above, but they cannot be used in conjunction with the offset parameter`.

+

run_at_sunrise()

+

Run a callback at or around sunrise.

+

Synopsis

+
self.handle = self.run_at_sunrise(callback, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
offset =
+

The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with random_start or random_end

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
import datetime
+...
+# Run 45 minutes before sunset
+self.run_at_sunrise(self.sun, offset = datetime.timedelta(minutes = -45).total_seconds(), "Sunrise -45 mins")
+# or you can just do the math yourself
+self.run_at_sunrise(self.sun, offset = 30 * 60, "Sunrise +30 mins")
+# Run at a random time +/- 60 minutes from sunrise
+self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 60*60, "Sunrise, random +/- 60 mins")
+# Run at a random time between 30 and 60 minutes before sunrise
+self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 30*60, "Sunrise, random - 30 - 60 mins")
+
+
+

run_at_sunset()

+

Run a callback at or around sunset.

+

Synopsis

+
self.handle = self.run_at_sunset(callback, offset, **kwargs)
+
+
+

Returns

+

A handle that can be used to cancel the timer.

+

Parameters

+
callback
+

Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above.

+
offset =
+

The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with random_start or random_end

+
**kwargs
+

Arbitrary keyword parameters to be provided to the callback function when it is invoked.

+

Examples

+
# Example using timedelta
+import datetime
+...
+self.run_at_sunset(self.sun, datetime.timedelta(minutes = -45).total_seconds(), "Sunset -45 mins")
+# or you can just do the math yourself
+self.run_at_sunset(self.sun, 30 * 60, "Sunset +30 mins")
+# Run at a random time +/- 60 minutes from sunset
+self.run_at_sunset(self.sun, random_start = -60*60, random_end = 60*60, "Sunset, random +/- 60 mins")
+# Run at a random time between 30 and 60 minutes before sunset
+self.run_at_sunset(self.sun, random_start = -60*60, random_end = 30*60, "Sunset, random - 30 - 60 mins")
+
+
+

sunrise()

+

Return the time that the next Sunrise will occur.

+

Synopsis

+
self.sunrise()
+
+
+

Returns

+

A Python datetime that represents the next time Sunrise will occur.

+

Examples

+
rise_time = self.sunrise()
+
+
+

sunset()

+

Return the time that the next Sunset will occur.

+

Synopsis

+
self.sunset()
+
+
+

Returns

+

A Python datetime that represents the next time Sunset will occur.

+

Examples

+
set_time = self.sunset()
+
+
+

sun_up()

+

A function that allows you to determine if the sun is currently up.

+

Synopsis

+
result = self.sun_up()
+
+
+

Returns

+

True if the sun is up, False otherwise.

+

Examples

+
if self.sun_up():
+    do something
+
+
+

sun_down()

+

A function that allows you to determine if the sun is currently down.

+

Synopsis

+
result = self.sun_down()
+
+
+

Returns

+

True if the sun is down, False otherwise.

+

Examples

+
if self.sun_down():
+    do something
+
+
+

Calling Services

+

About Services

+

Services within Home Assistant are how changes are made to the system and its devices. Services can be used to turn lights on and off, set thermostats and a whole number of other things. Home Assistant supplies a single interface to all these disparate services that take arbitrary parameters. AppDaemon provides the call_service() function to call into Home Assistant and run a service. In addition, it also provides convenience functions for some of the more common services making calling them a little easier.

+

call_service()

+

Call service is the basic way of calling a service within AppDaemon. It can call any service and provide any required parameters. Available services can be found using the developer tools in the UI. For listed services, the part before the first period is the domain, and the part after is the service name. For instance, light.turn_on has a domain of light and a service name of turn_on.

+

Synopsis

+
self.call_service(self, service, **kwargs)
+
+
+

Returns

+

None

+

Parameters

+
service
+

The service name, e.g. light.turn_on.

+
**kwargs
+

Each service has different parameter requirements. This argument allows you to specify a comma separated list of keyword value pairs, e.g. entity_id = light.office_1. These parameters will be different for every service and can be discovered using the developer tools. Most if not all service calls require an entity_id however, so use of the above example is very common with this call.

+

Examples

+
self.call_service("light/turn_on", entity_id = "light.office_lamp", color_name = "red")
+self.call_service("notify/notify", title = "Hello", message = "Hello World")
+
+
+

turn_on()

+

This is a convenience function for the homassistant.turn_on function. It is able to turn on pretty much anything in Home Assistant that can be turned on or run:

+
    +
  • Lights
  • +
  • Switches
  • +
  • Scenes
  • +
  • Scripts
  • +
+

And many more.

+

Synopsis

+
self.turn_on(entity_id, **kwargs)
+
+
+

Returns

+

None

+

Parameters

+
entity_id
+

Fully qualified entity_id of the thing to be turned on, e.g. light.office_lamp or scene.downstairs_on

+
**kwargs
+

A comma separated list of key value pairs to allow specification of parameters over and above entity_id.

+

Examples

+
self.turn_on("switch.patio_lights")
+self.turn_on("scene.bedrrom_on")
+self.turn_on("light.office_1", color_name = "green")
+
+
+

turn_off()

+

This is a convenience function for the homassistant.turn_off function. Like homeassistant.turn_on, it is able to turn off pretty much anything in Home Assistant that can be turned off.

+

Synopsis

+
self.turn_off(entity_id)
+
+
+

Returns

+

None

+

Parameters

+
entity_id
+

Fully qualified entity_id of the thing to be turned off, e.g. light.office_lamp or scene.downstairs_on.

+

Examples

+
self.turn_off("switch.patio_lights")
+self.turn_off("light.office_1")
+
+
+

toggle()

+

This is a convenience function for the homassistant.toggle function. It is able to flip the state of pretty much anything in Home Assistant that can be turned on or off.

+

Synopsis

+
self.toggle(entity_id)
+
+
+

Returns

+

None

+

Parameters

+
entity_id
+

Fully qualified entity_id of the thing to be toggled, e.g. light.office_lamp or scene.downstairs_on.

+

Examples

+
self.toggle("switch.patio_lights")
+self.toggle("light.office_1", color_name = "green")
+
+
+

select_value()

+

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.

+

Synopsis

+
self.select_value(entity_id, value)
+
+
+

Returns

+

None

+

Parameters

+
entity_id
+

Fully qualified entity_id of the input_number to be changed, e.g. input_number.alarm_hour.

+
value
+

The new value to set the input number to.

+

Examples

+
self.select_value("input_number.alarm_hour", 6)
+
+
+

select_option()

+

This is a convenience function for the input_select.select_option function. It is able to set the value of an input_select in Home Assistant.

+

Synopsis

+
self.select_option(entity_id, option)
+
+
+

Returns

+

None

+

Parameters

+
entity_id
+

Fully qualified entity_id of the input_select to be changed, e.g. input_select.mode.

+
value
+

The new value to set the input number to.

+

Examples

+
self.select_option("input_select.mode", "Day")
+
+
+

notify()

+

This is a convenience function for the notify.notify service. It will send a notification to your default notification service. If you have more than one, use call_service() to call the specific notification service you require instead.

+

Synopsis

+
notify(message, title=None)
+
+
+

Returns

+

None

+

Parameters

+
message
+

Message to be sent to the notification service.

+
title
+

Title of the notification - optional.

+

Examples

+
self.notify("", "Switching mode to Evening")
+
+
+

Events

+

About Events

+

Events are a fundamental part of how Home Assistant works under the covers. HA has an event bus that all components can read and write to, enabling components to inform other components when important events take place. We have already seen how state changes can be propagated to AppDaemon - a state change however is merely an example of an event within Home Assistant. There are several other event types, among them are:

+
    +
  • homeassistant_start
  • +
  • homeassistant_stop
  • +
  • state_changed
  • +
  • service_registered
  • +
  • call_service
  • +
  • service_executed
  • +
  • platform_discovered
  • +
  • component_loaded
  • +
+

Using AppDaemon, it is possible to subscribe to specific events as well as fire off events.

+

In addition to the Home Assistant supplied events, AppDaemon adds 2 more events. These are internal to AppDaemon and are not visible on the Home Assistant bus:

+
    +
  • appd_started - fired once when AppDaemon is first started and after Apps are initialized
  • +
  • ha_started - fired every time AppDaemon detects a Home Assistant restart
  • +
+

About Event Callbacks

+

As with State Change and Scheduler callbacks, Event Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this:

+
  def my_callback(self, event_name, data, kwargs):
+    <do some useful work here>
+
+
+

You can call the function whatever you like - you will reference it in the Scheduler call, and you can create as many callback functions as you need.

+

The parameters have the following meanings:

+

self

+

A standard Python object reference.

+

event_name

+

Name of the event that was called, e.g. call_service.

+

data

+

Any data that the system supplied with the event as a dict.

+

kwargs

+

A dictionary containing Zero or more user keyword arguments to be supplied to the callback.

+

listen_event()

+

Listen event sets up a callback for a specific event, or any event.

+

Synopsis

+
handle = listen_event(function, event = None, **kwargs):
+
+
+

Returns

+

A handle that can be used to cancel the callback.

+

Parameters

+
function
+

The function to be called when the event is fired.

+
event
+

Name of the event to subscribe to. Can be a standard Home Assistant event such as service_registered or an arbitrary custom event such as "MODE_CHANGE". If no event is specified, listen_event() will subscribe to all events.

+
**kwargs (optional)
+

One or more keyword value pairs representing App specific parameters to supply to the callback. If the keywords match values within the event data, they will act as filters, meaning that if they don’t match the values, the callback will not fire.

+

As an example of this, a Minimote controller when activated will generate an event called zwave.scene_activated, along with 2 pieces of data that are specific to the event - entity_id and scene. If you include keyword values for either of those, the values supplied to the `listen_event()1 call must match the values in the event or it will not fire. If the keywords do not match any of the data in the event they are simply ignored.

+

Filtering will work with any event type, but it will be necessary to figure out the data associated with the event to understand what values can be filtered on. This can be achieved by examining Home Assistant’s logfiles when the event fires.

+

Examples

+
self.listen_event(self.mode_event, "MODE_CHANGE")
+# Listen for a minimote event activating scene 3:
+self.listen_event(self.generic_event, "zwave.scene_activated", scene_id = 3)
+# Listen for a minimote event activating scene 3 from a specific minimote:
+self.listen_event(self.generic_event, "zwave.scene_activated", entity_id = "minimote_31", scene_id = 3)
+
+
+

cancel_listen_event()

+

Cancels callbacks for a specific event.

+

Synopsis

+
cancel_listen_event(handle)
+
+
+

Returns

+

None.

+

Parameters

+
handle
+

A handle returned from a previous call to listen_event().

+

Examples

+
self.cancel_listen_event(handle)
+
+
+

info_listen_event()

+

Get information on an event callback from its handle.

+

Synopsis

+
service, kwargs = self.info_listen_event(handle)
+
+
+

Returns

+

service, kwargs - the values supplied when the callback was initially created.

+

Parameters

+
handle
+

The handle returned when the listen_event() call was made.

+

Examples

+
service, kwargs = self.info_listen_event(handle)
+
+
+

fire_event()

+

Fire an event on the HomeAssistant bus, for other components to hear.

+

Synopsis

+
fire_event(event, **kwargs)
+
+
+

Returns

+

None.

+

Parameters

+
event
+

Name of the event. Can be a standard Home Assistant event such as service_registered or an arbitrary custom event such as "MODE_CHANGE".

+
**kwargs
+

Zero or more keyword arguments that will be supplied as part of the event.

+

Examples

+
self.fire_event("MY_CUSTOM_EVENT", jam="true")
+
+
+

Event Callback Function Signature

+

Functions called as an event callback will be supplied with 2 arguments:

+
def service(self, event_name, data):
+
+
+

event_name

+

The name of the event that caused the callback, e.g. "MODE_CHANGE" or call_service.

+

data

+

A dictionary containing any additional information associated with the event.

+

Use of Events for Signaling between Home Assistant and AppDaemon

+

Home Assistant allows for the creation of custom events and existing components can send and receive them. This provides a useful mechanism for signaling back and forth between Home Assistant and AppDaemon. For instance, if you would like to create a UI Element to fire off some code in Home Assistant, all that is necessary is to create a script to fire a custom event, then subscribe to that event in AppDaemon. The script would look something like this:

+
alias: Day
+sequence:
+- event: MODE_CHANGE
+  event_data:
+    mode: Day
+
+
+

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 its automation component. This can be used to signal from AppDaemon code back to Home Assistant. Here is a sample automation:

+
automation:
+  trigger:
+    platform: event
+    event_type: MODE_CHANGE
+    ...
+    ...
+
+
+

This can be triggered with a call to AppDaemon’s fire_event() as follows:

+
self.fire_event("MODE_CHANGE", mode = "Day")
+
+
+

Presence

+

Presence in Home Assistant is tracked using Device Trackers. The state of all device trackers can be found using the get_state() call, however AppDaemon provides several convenience functions to make this easier.

+

get_trackers()

+

Return a list of all device trackers. This is designed to be iterated over.

+

Synopsis

+
tracker_list = get_trackers()
+
+
+

Returns

+

An iterable list of all device trackers.

+

Examples

+
trackers = self.get_trackers()
+for tracker in trackers:
+    do something
+
+
+

get_tracker_state()

+

Get the state of a tracker. The values returned depend in part on the configuration and type of device trackers in the system. Simpler tracker types like Locative or NMAP will return one of 2 states:

+
    +
  • home
  • +
  • not_home
  • +
+

Some types of device tracker are in addition able to supply locations that have been configured as Geofences, in which case the name of that location can be returned.

+

Synopsis

+
location = self.get_tracker_state(tracker_id)
+
+
+

Returns

+

A string representing the location of the tracker.

+

Parameters

+
tracker_id
+

Fully qualified entity_id of the device tracker to query, e.g. device_tracker.andrew.

+

Examples

+
trackers = self.get_trackers()
+for tracker in trackers:
+  self.log("{} is {}".format(tracker, self.get_tracker_state(tracker)))
+
+
+

everyone_home()

+

A convenience function to determine if everyone is home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers.

+

Synopsis

+
result = self.everyone_home()
+
+
+

Returns

+

Returns True if everyone is at home, False otherwise.

+

Examples

+
if self.everyone_home():
+    do something
+
+
+

anyone_home()

+

A convenience function to determine if one or more person is home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers.

+

Synopsis

+
result = self.anyone_home()
+
+
+

Returns

+

Returns True if anyone is at home, False otherwise.

+

Examples

+
if self.anyone_home():
+    do something
+
+
+

noone_home()

+

A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers.

+

Synopsis

+
result = self.noone_home()
+
+
+

Returns

+

Returns True if no one is home, False otherwise.

+

Examples

+
if self.noone_home():
+    do something
+
+
+

Miscellaneous Helper Functions

+

time()

+

Returns a python time object representing the current time. Use this in preference to the standard Python ways to discover the current time, especially when using the “Time Travel” feature for testing.

+

Synopsis

+
time()
+
+
+

Returns

+

A localized Python time object representing the current AppDaemon time.

+

Parameters

+

None

+

Example

+
now = self.time()
+
+
+

date()

+

Returns a python date object representing the current date. Use this in preference to the standard Python ways to discover the current date, especially when using the “Time Travel” feature for testing.

+

Synopsis

+
date()
+
+
+

Returns

+

A localized Python time object representing the current AppDaemon date.

+

Parameters

+

None

+

Example

+
today = self.date()
+
+
+

datetime()

+

Returns a python datetime object representing the current date and time. Use this in preference to the standard Python ways to discover the current time, especially when using the “Time Travel” feature for testing.

+

Synopsis

+
datetime()
+
+
+

Returns

+

A localized Python datetime object representing the current AppDaemon date and time.

+

Parameters

+

None

+

Example

+
now = self.datetime()
+
+
+

convert_utc()

+

Home Assistant provides timestamps of several different sorts that may be used to gain additional insight into state changes. These timestamps are in UTC and are coded as ISO 8601 Combined date and time strings. convert_utc() will accept one of these strings and convert it to a localized Python datetime object representing the timestamp

+

Synopsis

+
convert_utc(utc_string)
+
+
+

Returns

+

convert_utc(utc_string) returns a localized Python datetime object representing the timestamp.

+

Parameters

+
utc_string
+

An ISO 8601 encoded date and time string in the following format: 2016-07-13T14:24:02.040658-04:00

+

Example

+

### parse_time()

+

Takes a string representation of a time, or sunrise or sunset offset and converts it to a datetime.time object.

+

Synopsis

+
parse_time(time_string)
+
+
+

Returns

+

A datetime.time object, representing the time given in the time_string argument.

+

Parameters

+
time_string
+

A representation of the time in a string format with one of the following formats:

+
    +
  • HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format.
  • +
  • sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds
  • +
+

Example

+
time = self.parse_time("17:30:00")
+time = self.parse_time("sunrise")
+time = self.parse_time("sunset + 00:30:00")
+time = self.parse_time("sunrise + 01:00:00")
+
+
+

now_is_between()

+

Takes two string representations of a time, or sunrise or sunset offset and returns true if the current time is between those 2 times. now_is_between() can correctly handle transitions across midnight.

+

Synopsis

+
now_is_between(start_time_string, end_time_string)
+
+
+

Returns

+

True if the current time is within the specified start and end times, False otherwise.

+

Parameters

+
start_time_string, end_time_string
+

A representation of the start and end time respectively in a string format with one of the following formats:

+
    +
  • HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format.
  • +
  • sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds
  • +
+

Example

+
if self.now_is_between("17:30:00", "08:00:00"):
+    do something
+if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"):
+    do something
+
+
+

friendly_name()

+

frindly_name() will return the Friendly Name of an entity if it has one.

+

Synopsis

+
Name = self.friendly_name(entity_id)
+
+
+

Returns

+

The friendly name of the entity if it exists or the entity id if not.

+

Example

+
tracker = "device_tracker.andrew"
+self.log("{}  ({}) is {}".format(tracker, self.friendly_name(tracker), self.get_tracker_state(tracker)))
+
+
+

split_entity()

+

split_entity() will take a fully qualified entity id of the form light.hall_light and split it into 2 values, the device and the entity, e.g. light and hall_light.

+

Synopsis

+
device, entity = self.split_entity(entity_id)
+
+
+

Parameters

+
entity_id
+

Fully qualified entity id to be split.

+

Returns

+

A list with 2 entries, the device and entity respectively.

+

Example

+
device, entity = self.split_entity(entity_id)
+if device == "scene":
+    do something specific to scenes
+
+
+

get_app()

+

get_app() will return the instantiated object of another app running within the system. This is useful for calling functions or accessing variables that reside in different apps without requiring duplication of code.

+

Synopsis

+
get_app(self, name)
+
+
+

Parameters

+
name
+

Name of the app required. This is the name specified in header section of the config file, not the module or class.

+

Returns

+

An object reference to the class.

+

Example

+
MyApp = self.get_app("MotionLights")
+MyApp.turn_light_on()
+
+
+

split_device_list()

+

split_device_list() will take a comma separated list of device types (or anything else for that matter) and return them as an iterable list. This is intended to assist in use cases where the App takes a list of entities from an argument, e.g. a list of sensors to monitor. If only one entry is provided, an iterable list will still be returned to avoid the need for special processing.

+

Synopsis

+
devices = split_device_list(list)
+
+
+

Returns

+

A list of split devices with 1 or more entries.

+

Example

+
for sensor in self.split_device_list(self.args["sensors"]):
+    do something for each sensor, e.g. make a state subscription
+
+
+

Writing to Logfiles

+

AppDaemon uses 2 separate logs - the general log and the error log. An AppDaemon App can write to either of these using the supplied convenience methods log() and error(), which are provided as part of parent AppDaemon class, and the call will automatically pre-pend the name of the App making the call. The -D option of AppDaemon can be used to specify what level of logging is required and the logger objects will work as expected.

+

log()

+

Synopsis

+
log(message, level = "INFO")
+
+
+

Returns

+

Nothing

+

Parameters

+
Message
+

The message to log.

+
level
+

The log level of the message - takes a string representing the standard logger levels.

+

Examples

+
self.log("Log Test: Parameter is {}".format(some_variable))
+self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR")
+
+
+

error()

+

Synopsis

+
error(message, level = "WARNING")
+
+
+

Returns

+

Nothing

+

Parameters

+
Message
+

The message to log.

+
level
+

The log level of the message - takes a string representing the standard logger levels.

+

Examples

+
self.error("Some Warning string")
+self.error("Some Critical string", level = "CRITICAL")
+
+
+

Sharing information between Apps

+

Sharing information between different Apps is very simple if required. Each app gets access to a global dictionary stored in a class attribute called self.global_vars. Any App can add or read any key as required. This operation is not however threadsafe so some car is needed.

+

In addition, Apps have access to the entire configuration if required, meaning they can access AppDaemon configuration items as well as parameters from other Apps. To use this, there is a class attribute called self.config. It contains a ConfigParser object, which is similar in operation to a Dictionary. To access any apps parameters, simply reference the ConfigParser object using the Apps name (form the config file) as the first key, and the parameter required as the second, for instance:

+
other_apps_arg = self.config["some_app"]["some_parameter"].
+
+
+

To get AppDaemon’s config parameters, use the key “AppDaemon”, e.g.:

+
app_timezone = self.config["AppDaemon"]["time_zone"]
+
+
+

And finally, it is also possible to use the AppDaemon as a global area for sharing parameters across Apps. Simply add the required parameters to the AppDaemon section of your config:

+
[AppDaemon]
+ha_url = <some url>
+ha_key = <some key>
+...
+global_var = hello world
+
+
+

Then access it as follows:

+
my_global_var = conf.config["AppDaemon"]["global_var"]
+
+
+

Development Workflow

+

Developing Apps is intended to be fairly simple but is an exercise in programming like any other kind of Python programming. As such, it is expected that apps will contain syntax errors and will generate exceptions during the development process. AppDaemon makes it very easy to iterate through the development process as it will automatically reload code that has changed and also will reload code if any of the parameters in the configuration file change as well.

+

The recommended workflow for development is as follows:

+
    +
  • Open a window and tail the appdaemon.log file
  • +
  • Open a second window and tail the error.log file
  • +
  • Open a third window or the editor of your choice for editing the App
  • +
+

With this setup, you will see that every time you write the file, AppDaemon will log the fact and let you know it has reloaded the App in the appdaemon.log file.

+

If there is an error in the compilation or a runtime error, this will be directed to the error.log file to enable you to see the error and correct it. When an error occurs, there will also be a warning message in appdaemon.log to tell you to check the error log.

+

Time Travel

+

OK, time travel sadly isn’t really possible but it can be very useful when testing Apps. For instance, imagine you have an App that turns a light on every day at sunset. It might be nice to test it without waiting for Sunset - and with AppDaemon’s “Time Travel” features you can.

+

Choosing a Start Time

+

Internally, AppDaemon keeps track of its own time relative to when it was started. This make is possible to start AppDaemon with a different start time and date to the current time. For instance to test that sunset App, start AppDaemon at a time just before sunset and see if it works as expected. To do this, simply use the “-s” argument on AppDaemon’s command line. e,g,:

+
$ appdaemon -s "2016-06-06 19:16:00"
+2016-09-06 17:16:00 INFO AppDaemon Version 1.3.2 starting
+2016-09-06 17:16:00 INFO Got initial state
+2016-09-06 17:16:00 INFO Loading Module: /export/hass/appdaemon_test/conf/test_apps/sunset.py
+...
+
+
+

Note the timestamps in the log - AppDaemon believes it is now just before sunset and will process any callbacks appropriately.

+

Speeding things up

+

Some Apps need to run for periods of a day or two for you to test all aspects. This can be time consuming, but Time Travel can also help here in two ways. The first is by speeding up time. To do this, simply use the -t option on the command line. This specifies the amount of time a second lasts while time traveling. The default of course is 1 second, but if you change it to 0.1 for instance, AppDaemon will work 10x faster. If you set it to 0, AppDaemon will work as fast as possible and, depending in your hardware, may be able to get through an entire day in a matter of minutes. Bear in mind however, due to the threaded nature of AppDaemon, when you are running with -t 0 you may see actual events firing a little later than expected as the rest of the system tries to keep up with the timer. To set the tick time, start AppDaemon as follows:

+
$ appdaemon -t 0.1
+
+
+

AppDaemon also has an interval flag - think of this as a second multiplier. If the flag is set to 3600 for instance, each tick of the scheduler will jump the time forward by an hour. This is good for covering vast amounts of time quickly but event firing accuracy will suffer as a result. For example:

+
$ appdaemon -e 3600
+
+
+

Automatically stopping

+

AppDaemon can be set to terminate automatically at a specific time. This can be useful if you want to repeatedly rerun a test, for example to test that random values are behaving as expected. Simply specify the end time with the -e flag as follows:

+
$ appdaemon -e "2016-06-06 10:10:00"
+2016-09-06 17:16:00 INFO AppDaemon Version 1.3.2 starting
+2016-09-06 17:16:00 INFO Got initial state
+2016-09-06 17:16:00 INFO Loading Module: /export/hass/appdaemon_test/conf/test_apps/sunset.py
+...
+
+
+

The -e flag is most useful when used in conjuntion with the -s flag and optionally the -t flag. For example, to run from just before sunset, for an hour, as fast as possible:

+
$ appdaemon -s "2016-06-06 19:16:00" -s "2016-06-06 20:16:00" -t 0
+
+
+

A Note on Times

+

Some Apps you write may depend on checking times of events relative to the current time. If you are time traveling this will not work if you use standard python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied time(), date() and datetime() calls, documented earlier. These calls will consult with AppDaemon’s internal time rather than the actual time and give you the correct values.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/configuration/index.html b/docs/ecosystem/appdaemon/configuration/index.html new file mode 100644 index 0000000000..87943a671d --- /dev/null +++ b/docs/ecosystem/appdaemon/configuration/index.html @@ -0,0 +1,400 @@ + + + + + + + + + Configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Configuration +

+
+
+

When you have appdaemon installed by either method, copy the conf/appdaemon.cfg.example file to conf/appdaemon.cfg, then edit the [AppDaemon] section to reflect your environment:

+
[AppDaemon]
+ha_url = <some_url>
+ha_key = <some key>
+logfile = STDOUT
+errorfile = STDERR
+app_dir = <Path to appdaemon dir>/conf/apps
+threads = 10
+latitude = <latitude>
+longitude = <longitude>
+elevation = <elevation
+timezone = <timezone>
+cert_path = <path/to/root/CA/cert>
+# Apps
+[hello_world]
+module = hello
+class = HelloWorld
+
+
+
    +
  • ha_url is a reference to your Home Assistant installation and must include the correct port number and scheme (http:// or https:// as appropriate)
  • +
  • ha_key should be set to your key if you have one, otherwise it can be removed.
  • +
  • logfile (optional) is the path to where you want AppDaemon to keep its main log. When run from the command line this is not used - log messages come out on the terminal. When running as a daemon this is where the log information will go. In the example above I created a directory specifically for AppDaemon to run from, although there is no reason you can’t keep it in the appdaemon directory of the cloned repository. If logfile = STDOUT, output will be sent to stdout instead of stderr when running in the foreground, if not specified, output will be sent to STDOUT.
  • +
  • errorfile (optional) is the name of the logfile for errors - this will usually be errors during compilation and execution of the apps. If errorfile = STDERR errors will be sent to stderr instead of a file, if not specified, output will be sent to STDERR.
  • +
  • app_dir (optional) is the directory the apps are placed in. If not specified, AppDaemon will look first in ~/.homeassistant then /etc/appdaemon for a subdirectory named apps
  • +
  • threads - the number of dedicated worker threads to create for running the apps. Note, this will bear no resemblance to the number of apps you have, the threads are re-used and only active for as long as required to tun a particular callback or initialization, leave this set to 10 unless you experience thread starvation
  • +
  • latitude, longitude, elevation, timezone - should all be copied from your Home Assistant configuration file
  • +
  • cert_path (optional) - path to root CA cert directory - use only if you are using self signed certs.
  • +
+

The #Apps section is the configuration for the Hello World program and should be left in place for initial testing but can be removed later if desired, as other Apps are added, App configuration is described in the API doc.

+

Docker

+

For Docker Configuration you need to take a couple of extra things into consideration.

+

Our Docker image is designed to load your configuration and apps from a volume at /conf so that you can manage them in your own git repository, or place them anywhere else on the system and map them using the Docker command line.

+

For example, if you have a local repository in /Users/foo/ha-config containing the following files:

+
$ git ls-files
+configuration.yaml
+customize.yaml
+known_devices.yaml
+appdaemon.cfg
+apps
+apps/magic.py
+
+
+

You will need to modify the appdaemon.cfg file to point to these apps in /conf/apps:

+
[AppDaemon]
+ha_url = <some_url>
+ha_key = <some key>
+logfile = STDOUT
+errorfile = STDERR
+app_dir = /conf/apps
+threads = 10
+latitude = <latitude>
+longitude = <longitude>
+elevation = <elevation
+timezone = <timezone>
+
+
+

You can run Docker and point the conf volume to that directory.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/example_apps/index.html b/docs/ecosystem/appdaemon/example_apps/index.html new file mode 100644 index 0000000000..2d368d3249 --- /dev/null +++ b/docs/ecosystem/appdaemon/example_apps/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Example Apps - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Example Apps +

+
+
+

There are a number of example apps under conf/examples, and the conf/examples.cfg file gives sample parameters for them.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/index.html b/docs/ecosystem/appdaemon/index.html new file mode 100644 index 0000000000..44e6bea738 --- /dev/null +++ b/docs/ecosystem/appdaemon/index.html @@ -0,0 +1,423 @@ + + + + + + + + + AppDaemon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

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

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

+
import appdaemon.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 bails out after ten iterations.

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

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/installation/index.html b/docs/ecosystem/appdaemon/installation/index.html new file mode 100644 index 0000000000..79b4b7e122 --- /dev/null +++ b/docs/ecosystem/appdaemon/installation/index.html @@ -0,0 +1,344 @@ + + + + + + + + + Installation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/operation/index.html b/docs/ecosystem/appdaemon/operation/index.html new file mode 100644 index 0000000000..d069b531ed --- /dev/null +++ b/docs/ecosystem/appdaemon/operation/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Operation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Operation +

+
+
+

Since AppDaemon under the covers uses the exact same APIs as the frontend UI, you typically see it react at about the same time to a given event. Calling back to Home Assistant is also pretty fast especially if they are running on the same machine. In action, observed latency above the built in automation component is usually sub-second.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/reboot/index.html b/docs/ecosystem/appdaemon/reboot/index.html new file mode 100644 index 0000000000..7182f9ff2d --- /dev/null +++ b/docs/ecosystem/appdaemon/reboot/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Starting at Reboot - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Starting at Reboot +

+
+
+

To run AppDaemon at reboot, I have provided a sample init script in the ./scripts directory. These have been tested on a Raspberry Pi - your mileage may vary on other systems. There is also a sample Systemd script.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/running/index.html b/docs/ecosystem/appdaemon/running/index.html new file mode 100644 index 0000000000..debfdfff38 --- /dev/null +++ b/docs/ecosystem/appdaemon/running/index.html @@ -0,0 +1,405 @@ + + + + + + + + + Running AppDaemon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Running AppDaemon +

+
+
+

As configured, AppDaemon comes with a single HelloWorld App that will send a greeting to the logfile to show that everything is working correctly.

+

Docker

+

Assuming you have set the config up as described above for Docker, you can run it with the command:

+
$ docker run -d -v <Path to Config>/conf:/conf --name appdaemon appdaemon:latest
+
+
+

In the example above you would use:

+
$ docker run -d -v /Users/foo/ha-config:/conf --name appdaemon appdaemon:latest
+
+
+

Where you place the conf and conf/apps directory is up to you - it can be in downloaded repostory, or anywhere else on the host, as long as you use the correct mapping in the docker run command.

+

You can inspect the logs as follows:

+
$ docker logs appdaemon
+2016-08-22 10:08:16,575 INFO Got initial state
+2016-08-22 10:08:16,576 INFO Loading Module: /export/hass/appdaemon_test/conf/apps/hello.py
+2016-08-22 10:08:16,578 INFO Loading Object hello_world using class HelloWorld from module hello
+2016-08-22 10:08:16,580 INFO Hello from AppDaemon
+2016-08-22 10:08:16,584 INFO You are now ready to run Apps!
+
+
+

Note that for Docker, the error and regular logs are combined.

+

pip3

+

You can then run AppDaemon from the command line as follows:

+
$ appdaemon -c conf/appdaemon.cfg
+
+
+

If all is well, you should see something like the following:

+
$ appdaemon -c conf/appdaemon.cfg
+2016-08-22 10:08:16,575 INFO Got initial state
+2016-08-22 10:08:16,576 INFO Loading Module: /export/hass/appdaemon_test/conf/apps/hello.py
+2016-08-22 10:08:16,578 INFO Loading Object hello_world using class HelloWorld from module hello
+2016-08-22 10:08:16,580 INFO Hello from AppDaemon
+2016-08-22 10:08:16,584 INFO You are now ready to run Apps!
+
+
+

AppDaemon arguments

+
usage: appdaemon [-h] [-c CONFIG] [-p PIDFILE] [-t TICK] [-s STARTTIME]
+                 [-e ENDTIME] [-i INTERVAL]
+                 [-D {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-v] [-d]
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -c CONFIG, --config CONFIG
+                        full path to config file
+  -p PIDFILE, --pidfile PIDFILE
+                        full path to PID File
+  -t TICK, --tick TICK  time in seconds that a tick in the schedular lasts
+  -s STARTTIME, --starttime STARTTIME
+                        start time for scheduler <YYYY-MM-DD HH:MM:SS>
+  -e ENDTIME, --endtime ENDTIME
+                        end time for scheduler <YYYY-MM-DD HH:MM:SS>
+  -i INTERVAL, --interval INTERVAL
+                        multiplier for scheduler tick
+  -D {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --debug {DEBUG,INFO,WARNING,ERROR,CRITICAL}
+                        debug level
+  -v, --version         show program's version number and exit
+  -d, --daemon          run as a background process
+
+
+

-c is the path to the configuration file. If not specified, AppDaemon will look for a file named appdaemon.cfg first in ~/.homeassistant then in /etc/appdaemon. If the file is not specified and it is not found in either location, AppDaemon will raise an exception.

+

-d and -p are used by the init file to start the process as a daemon and are not required if running from the command line.

+

-D can be used to increase the debug level for internal AppDaemon operations as well as apps using the logging function.

+

The -s, -i, -t and -s options are for the Time Travel feature and should only be used for testing. They are described in more detail in the API documentation.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/tutorial/index.html b/docs/ecosystem/appdaemon/tutorial/index.html new file mode 100644 index 0000000000..92b7027852 --- /dev/null +++ b/docs/ecosystem/appdaemon/tutorial/index.html @@ -0,0 +1,452 @@ + + + + + + + + + AppDaemon Tutorial - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ AppDaemon Tutorial +

+
+
+

Another Take on Automation

+

If you haven’t yet read Paulus’ excellent Blog entry on Perfect Home Automation I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the “Automation” in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation in bring this all together in the vast and chaotic ecosystem that is the “Internet of Things”.

+

So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks:

+
    +
  • Can the system respond to presence or absence of people?
  • +
  • Can I turn a light on at Sunset +/- a certain amount of time?
  • +
  • Can I arrive home in light or dark and have the lights figure out if they should be on or off?
  • +
  • As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly?
  • +
  • Is it open and expandable?
  • +
  • Does it run locally without any reliance on the cloud?
  • +
+

In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and its Restful API.

+

So why AppDaemon? 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 5 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 with out 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, and 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 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.

+

How it Works

+

The best way to show what AppDaemon does is through a few simple examples.

+

Sunrise/Sunset Lighting

+

Lets start with a simple App to turn a light on every night fifteen +minutes (900 seconds) before 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 2 separate +callbacks. The named argument offset is the number of seconds offset +from sunrise or sunset and can be negative or positive (it defaults to +zero). For complex intervals it can be convenient to use Python’s +datetime.timedelta class for calculations. In the example below, +when sunrise or just before sunset occurs, the appropriate callback +function, sunrise_cb() or before_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.

+
    import appdaemon.plugins.hass.hassapi as hass
+
+    class OutsideLights(hass.Hass):
+
+      def initialize(self):
+        self.run_at_sunrise(self.sunrise_cb)
+        self.run_at_sunset(self.before_sunset_cb, offset=-900)
+        
+      def sunrise_cb(self, kwargs):
+        self.turn_on(self.args["off_scene"])
+
+      def before_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 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:

+
import appdaemon.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 lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 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 10 iterations.

+
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 logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple.

+

I have spent the last few weeks moving all of my (fairly complex) automations over to APPDaemon and so far it is working very reliably.

+

Some people will maybe look at all of this and say “what use is this, I can already do all of this”, and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations.

+

If this has whet your appetite, feel free to give it a try.

+

Happy Automating!

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/updating/index.html b/docs/ecosystem/appdaemon/updating/index.html new file mode 100644 index 0000000000..ac6b7b35c4 --- /dev/null +++ b/docs/ecosystem/appdaemon/updating/index.html @@ -0,0 +1,347 @@ + + + + + + + + + Updating AppDaemon - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Updating AppDaemon +

+
+
+

To update AppDaemon after I have released new code, just run the following command to update your copy:

+
$ sudo pip3 install --upgrade appdaemon
+
+
+

If you are using docker, rerun the steps to grab the latestdocker image.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/appdaemon/windows/index.html b/docs/ecosystem/appdaemon/windows/index.html new file mode 100644 index 0000000000..227169dedc --- /dev/null +++ b/docs/ecosystem/appdaemon/windows/index.html @@ -0,0 +1,350 @@ + + + + + + + + + Windows Support - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Windows Support +

+
+
+

AppDaemon runs under windows and has been tested with the official 3.5.2 release of Python. There are a couple of caveats however:

+
    +
  • The -d or --daemonize option is not supported owing to limitations in the Windows implementation of Python.
  • +
  • Some internal diagnostics are disabled. This is not user visible but may hamper troubleshooting of internal issues if any crop up
  • +
+

AppDaemon can be installed exactly as per the instructions for every other version using pip3.

+

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 recommended way to run AppDaemon in a Windows 10 and later environment.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/backup/backup_dropbox/index.html b/docs/ecosystem/backup/backup_dropbox/index.html new file mode 100644 index 0000000000..fdbb783fa1 --- /dev/null +++ b/docs/ecosystem/backup/backup_dropbox/index.html @@ -0,0 +1,371 @@ + + + + + + + + + Configuration Backup to Dropbox - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Configuration Backup to Dropbox +

+
+
+

Backing up and regularly syncing your Home Assistant configuration to Dropbox similar to Github Backup

+

Requirements

+

You need two parts in order to get it working correctly.

+

Become the user that run Home Assistant.

+
    +
  • A separate Python script that syncs a specific folder. Which can be found here
  • +
  • The excellent dropbox uploader script 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.

+

In the Python script you can specify which files and directories should be excluded. This allows you to skip secrets.yaml or the deps folder.

+

Step 1: Linking your Dropbox account

+
$ chmod +x dropbox_uploader.sh
+$ ./dropbox_uploader.sh
+
+
+

Follow the instructions you see on your screen.

+

Step 2: Running the Dropbox uploader

+

Go to the folder you have placed dropbox.py.

+
$ python dropbox.py
+
+
+

The first time can take a lot of time since it will upload all your files! +Do note, this will backup your passwords to Dropbox.

+

Automate the backup

+

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.

+
$ (crontab -l 2>/dev/null; echo "0 3 * * * python /path/to/dropbox.py") | crontab -
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/backup/backup_github/index.html b/docs/ecosystem/backup/backup_github/index.html new file mode 100644 index 0000000000..4426b61972 --- /dev/null +++ b/docs/ecosystem/backup/backup_github/index.html @@ -0,0 +1,491 @@ + + + + + + + + + Configuration Backup to GitHub - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Configuration Backup to GitHub +

+
+
+

Backing up and regularly syncing your Home Assistant configuration to GitHub has several benefits:

+
    +
  • A remote copy of your Home Assistant YAML files in case you need to recover
  • +
  • A documented history of your changes for troubleshooting purposes
  • +
  • It will help the Home Assistant community learn from your configuration examples
  • +
+

+This is not a comprehensive tutorial on using GitHub, more information can be found in the GitHub Help pages. This guide assumes the user has an intermediate experience level and is comfortable with such concepts as: navigating the Home Assistant directory structure, logging in as the Home Assistant user, and working with the command line. +

+

+This will not create a full backup of your Home Assistant files or your OS. In addition to backing up to Github, you should consider having regular backups of all your Home Assistant configuration files and images of your SD card if applicable. +

+

Important Best Practices

+

Some best practices to consider before putting your configuration on GitHub:

+
    +
  • Extensive use of secrets.yaml 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 file
  • +
  • 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
  • +
+

Step 1: Installing and Initializing Git

+

In order to put your configuration on GitHub, you must install the git package on your Home Assistant server (instructions below will work on Raspberry Pi, Ubunutu, or any Debian-based system):

+
$ sudo apt-get update
+$ sudo apt-get install git
+
+
+

Step 2: Creating .gitignore

+

+Before creating and pushing your Home Assistant configuration to GitHub, please make sure to follow the secrets.yaml best practice mentioned above and scrub your configuration for any passwords or sensitive information. +

+

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

+
*
+!*.yaml
+!scenes
+!.gitignore
+secrets.yaml
+known_devices.yaml
+
+
+

More information on the layout of the file can be found in the .gitignore manual.

+

Step 3: Preparing your Home Assistant directory for GitHub

+

In your Home Assistant directory, type the following commands as the Home Assistant user, replacing the email address and name with your information:

+
$ git init
+$ git config user.email "you@example.com"
+$ git config user.name "Your Name"
+$ git add .
+$ git commit
+
+
+

After the git commit command, you will be asked to enter a message for the commit. This will add a comment beside each file on GitHub describing the purpose for the commit. In this case, you can enter something like “Initial commit of my Home Assistant configuration.”

+

Step 4: Creating Repository on GitHub

+
    +
  • Connect to GitHub and login to your account (or create an account if you don’t already have one).
  • +
  • Click “New Repository” and give your repository a name/description (Home-AssistantConfig is used in the example below). You do NOT need to change any other options.
  • +
  • Click “Create Repository”
  • +
+

Step 5: Your initial commit to GitHub

+

Once you are sure you are using secrets.yaml and .gitignore correctly, it is time to push your configuration to the GitHub Repository that you just created.

+

In your Home Assistant directory, type the following commands as the Home Assistant user, replacing “username” in the URL with your GitHub username:

+
$ git remote add origin https://github.com/username/Home-AssistantConfig
+$ git push -u origin master
+
+
+

You will be asked to enter your GitHub username and password (or ssh key passphrase if you use GitHub with ssh).

+

Congratulations, you now have a copy of your current Home Assistant Configuration on GitHub!

+

Step 6: Keeping your repository up to date

+

You should update your repository on a regular basis; ideally after you make a major configuration change (new device, new component, etc.). The below script will update your repository with any changed configuration files and allow you to add a comment with the commit for tracking purposes:

+

+You may need to adjust the paths in the script depending on your Home Assistant configuration. +

+

gitupdate.sh

+
#!/bin/bash
+
+cd /home/homeassistant/.homeassistant
+source /srv/homeassistant/homeassistant_venv/bin/activate
+hass --script check_config
+
+git add .
+git status
+echo -n "Enter the Description for the Change: " [Minor Update]
+read CHANGE_MSG
+git commit -m "${CHANGE_MSG}"
+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 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).

+

Step 7: Configuration file testing

+

Travis CI is a continuous integration testing system that runs every time the code in your repository is updated and allows you to validate that your code works on a fresh install.

+
    +
  • Authorize Travis CI to have access to your github repos.
  • +
  • Create the build script that travis will run to test your repo.
  • +
  • Create a dummy secrets.yaml for Travis.
  • +
+

Example .travis.yml

+
language: python
+python:
+  - "3.5"
+before_install:
+  - mv travis_secrets.yaml secrets.yaml
+install:
+  - pip3 install homeassistant
+script:
+  - hass -c . --script check_config
+
+
+

Since the secrets.yaml should not be stored in your repo for security reasons, you won’t be able to access it at build time. Creating a dummy secrets.yaml is as simple as creating a new file that mimics your existing secrets.yaml with the required keys, but not their value.

+
#travis_secrets.yaml
+http_api: 000000000000000000000000
+home_latitude: 00.00000
+home_longitude: 00.0000
+home_elevation: 0
+
+
+

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 committed yet:

+
$ git ls-files
+$ git status
+
+
+

Examples:

+
homeassistant@raspberrypi:~/.homeassistant $ git ls-files
+.gitignore
+README.md
+automation.yaml
+configuration.yaml
+customize.yaml
+device_tracker.yaml
+group.yaml
+script.yaml
+
+homeassistant@raspberrypi:~/.homeassistant $ git status
+On branch master
+Your branch is up-to-date with 'origin/master'.
+Changes not staged for commit:
+  (use "git add <file>..." to update what will be committed)
+  (use "git checkout -- <file>..." to discard changes in working directory)
+
+        modified:   .gitignore
+        modified:   automation.yaml
+        modified:   customize.yaml
+        modified:   group.yaml
+
+no changes added to commit (use "git add" and/or "git commit -a")
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/backup/backup_usb/index.html b/docs/ecosystem/backup/backup_usb/index.html new file mode 100644 index 0000000000..dbef2e3df5 --- /dev/null +++ b/docs/ecosystem/backup/backup_usb/index.html @@ -0,0 +1,422 @@ + + + + + + + + + Configuration Backup to USB drive - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Configuration Backup to USB drive +

+
+
+

Backing up your Home Assistant configuration to USB drive. A good plus side is that you don’t need to mask all your passwords since the backup is locally at your home/residence.

+

Requirements

+

First you need a USB drive. Once you have one you need to prepare it to be used on your device. +Once connected you want to format/work with the drive. To know what path it is in, you can check with dmesg.

+
# dmesg | grep sd
+[    0.909712] sdhci: Secure Digital Host Controller Interface driver
+[    0.916414] sdhci: Copyright(c) Pierre Ossman
+[    0.923366] sdhost: log_buf @ bac07000 (fac07000)
+[    0.989001] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
+[    1.049095] sdhci-pltfm: SDHCI platform and OF driver helper
+[726257.743301] sd 0:0:0:0: Attached scsi generic sg0 type 0
+[726259.184810] sd 0:0:0:0: [sda] 124846080 512-byte logical blocks: (63.9 GB/59.5 GiB)
+[726259.185603] sd 0:0:0:0: [sda] Write Protect is off
+[726259.185613] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
+[726259.186432] sd 0:0:0:0: [sda] No Caching mode page found
+[726259.186445] sd 0:0:0:0: [sda] Assuming drive cache: write through
+[726259.206085]  sda: sda1
+[726259.209004] sd 0:0:0:0: [sda] Attached SCSI removable disk
+
+
+

Here we see we have a drive on /dev/sda1. We assume you created a partition on the drive to start with. This can be any type of partition. Preferred is a Linux filesystem type so you can set permissions!

+

Mount the drive (as root) to /media

+
# mount /dev/sda1 /media/
+
+
+

Prepare USB Stick

+

Change into it and create a folder called hassbackup and change the ownership to the user that runs Home Assistant. In my case group and user are both homeassistant.

+
# cd /media/
+/media# mkdir hassbackup
+/media# chown homeassistant:homeassistant hassbackup/
+/media# ls -al
+total 28
+drwxr-xr-x  4 root          root           4096 Apr 29 10:36 .
+drwxr-xr-x 22 root          root           4096 Mar 22 18:37 ..
+drwxr-xr-x  2 homeassistant homeassistant  4096 Apr 29 10:36 hassbackup
+drwx------  2 root          root          16384 Apr 29 10:18 lost+found
+
+
+

You can ignore ‘lost+found’.

+

Install Dependency

+

In order to preserve space on your drive we use zip. Install that too.

+
/media# apt-get install zip
+Reading package lists... Done
+Building dependency tree
+[...]
+Setting up zip (3.0-8) ...
+
+
+

Install and run script

+

Become the homeassistant user and place the following script to a place of your liking.

+
# wget https://gist.githubusercontent.com/riemers/041c6a386a2eab95c55ba3ccaa10e7b0/raw/86727d4e72e9757da4f68f1c9d784720e72d0e99/usb_backup.sh
+
+
+

Make the downloaded script executable.

+
# chmod +x usb_backup.sh
+
+
+

Open up the file and change the paths you want to use, then simply run the ./usb_backup.sh.

+
$ .homeassistant/extraconfig/shell_code/usb_backup.sh
+[i] Creating backup
+[i] Backup complete: /media/hassbackup/hass-config_20170429_112728.zip
+[i] Keeping all files no prunning set
+
+
+

Crontab

+

In order for this to automatically make a backup every night at 3 am, you can add a crontab for it as the homeassistant user. +Change below path to where you placed the usb_backup.sh and run the following line.

+
(crontab -l 2>/dev/null; echo "0 3 * * * /home/homeassistant/.homeassistant/extraconfig/shell_code/usb_backup.sh") | crontab -
+
+
+

Auto mount

+

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 an entry to your /etc/fstab like so:

+
/dev/sda1  /media               ext4    defaults,noatime  0       1
+
+
+

Manual step to mount the USB drive:

+
# mount /dev/sda1 /media
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/caddy/index.html b/docs/ecosystem/caddy/index.html new file mode 100644 index 0000000000..052d536459 --- /dev/null +++ b/docs/ecosystem/caddy/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Caddy Server reverse proxy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Caddy Server reverse proxy +

+
+
+

Configure Caddy Server for use as a reverse proxy to Home Assistant.

+
hass.example.org {
+    proxy / localhost:8123 {
+        websocket
+        transparent
+    }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/certificates/index.html b/docs/ecosystem/certificates/index.html new file mode 100644 index 0000000000..f5c1bc845f --- /dev/null +++ b/docs/ecosystem/certificates/index.html @@ -0,0 +1,344 @@ + + + + + + + + + Certificates - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Certificates +

+
+
+

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

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/certificates/lets_encrypt/index.html b/docs/ecosystem/certificates/lets_encrypt/index.html new file mode 100644 index 0000000000..4da999be68 --- /dev/null +++ b/docs/ecosystem/certificates/lets_encrypt/index.html @@ -0,0 +1,737 @@ + + + + + + + + + Remote Access with TLS/SSL via Let's Encrypt - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Remote Access with TLS/SSL via Let's Encrypt +

+
+
+

+If you are using Hass.io, do not use this guide. Instead, use the DuckDNS add-on 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 page. +

+

This guide was added by mf_social on 16/03/2017 and was valid at the time of writing. This guide makes the following assumptions:

+
    +
  • You can access your Home Assistant instance across your local network, and access the device that it is on via SSH from your local network.
  • +
  • You know the internal IP address of your router and can access your router’s configuration pages.
  • +
  • You have already set up a password for your Home Assistant instance, following the advice on this page: http
  • +
  • You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with a TLS/SSL certificate.
  • +
  • You have a basic understanding of the phrases I have used so far.
  • +
  • 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 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:

+
    +
  • 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding
  • +
  • 1 - Set your device to have a static IP address
  • +
  • 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 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
  • +
  • 9 - Set up an alert to warn us if something went wrong
  • +
+

0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding

+

An IP address is a bit like a phone number. When you access your Home Assistant instance you type something similar to 192.168.0.200:8123 in to your address bar of your browser. The bit before the colon is the IP address (in this case 192.168.0.200) and the bit after is the port number (in this case 8123). When you SSH in to the device running Home Assistant you will use the same IP address, and you will use port 22. You may not be aware that you are using port 22, but if you are using Putty look in the box next to where you type the IP address, you will see that it has already selected port 22 for you.

+

So, if an IP address is like a phone number, a port number is like an extension number. An analogy would be if you phone your local doctors on 192-1680-200 and the receptionist answers, you ask to speak to Dr. Smith and she will put you through to extension 8123, which is the phone Dr. Smith is sitting at. The doctors surgery is the device your Home Assistant is running on, Dr. Smith is your Home Assistant. Thusly, your Home Assistant instance is ‘waiting for your call’ on port 8123, at the device IP 192.168.0.200 .

+

Now, to speak to the outside world your connection goes through a router. Your router will have two IP addresses. One is the internal network number, most likely 192.168.0.1 in my example, and an external IP address that incoming traffic is sent to. In the example of calling the doctors, the external IP is your telephone number’s area code.

+

So, when we want to connect to our Home Assistant instance from outside our network we will need to call the correct extension number, at the correct phone number, in the correct area code.

+

We will be looking for a system to run like this (in this example I will pretend our external IP is 12.12.12.12):

+
Outside world -> 12.12.12.12:8123 -> your router -> 192.168.0.200:8123
+
+
+

Sounds simple? It really is except for two small, but easy to overcome, complications:

+
    +
  • IP addresses are often dynamically allocated, so they can change.
  • +
  • Because of the way the internet works you cannot chain IP addresses together to get from where you are, to where you want to go.
  • +
+

To get around the issue of changing IP addresses we must remember that there are two IP addresses affected. Your external one (which we will ‘call’ to get on to your network from the internet) and your internal one (192.168.0.200 in the example I am currently using).

+

So, we can use a static IP to ensure that whenever our device running Home Assistant connects to our router it always uses the same address. This way our internal IP never changes. This is covered in step 1 below.

+

We then have no control over our external IP, as our Service Provider will give us a new one at random intervals. To fix this we will use a service called DuckDNS which will give us a name for our connection (something like examplehome.duckdns.org) and behind the scenes will continue to update your external IP. So no matter how many times the IP address changes, typing examplehome.duckdns.org in to our browser will convert to the correct, up-to-date, IP address. This is covered in step 3 below.

+

To get around the issue of not being able to chain the IP addresses together (I can’t say I want to call 12:12:12:12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our TSL/SSL certificate our incoming call will be requesting port 443 (because that is the SSL port, like the SSH port is always 22), but our port forwarding rule will forward this to our HA instance on port 8123. When this guide is completed we will run something like this:

+
Outside world -> https://examplehome.duckdns.org -> 12.12.12.12:443 -> your router -> 192.168.0.200:8123
+
+
+

So, let’s make it happen…

+

1 - Set your device to have a static IP address

+

Whenever a device is connected to a network it has an IP address. This IP address is often dynamically assigned to the device on connection. This means there are occasions where the IP address you use to access Home Assistant, or SSH in to the device running Home Assistant, may change. Setting a static IP address means that the device will always be on the same address.

+

SSH in to your system running Home Assistant and login.

+

Type the following command to list your network interfaces:

+
$ ifconfig
+
+
+

You will receive an output similar to the image below:

+

+ + Screenshot +

+

Make a note of the interface name and the IP address you are currently on. In the picture it is the wireless connection that is highlighted, but with your setup it may be the wired one (eth0 or similar), make sure you get the correct information.

+

Then type the following command to open the text file that controls your network connection:

+
$ sudo nano /etc/dhcpcd.conf
+
+
+

At the bottom of the file add the following lines:

+
interface wlan0 <----- or the interface you just wrote down.
+
+static ip_address=192.168.0.200/24  <---- the IP address you just wrote down with a '/24' at the end
+static routers=192.168.0.1      <---- Your router's IP address
+static domain_name_servers=192.168.0.1 <---- Your router's IP address
+
+
+

It is important to note that the first three bytes of your static IP address and your router’s IP address should be the same, eg:

+
Router: 192.168.0.1
+
+Yes
+HA IP: 192.168.0.200
+
+No
+HA IP: 192.175.96.200
+
+
+

Press Ctrl + x to close the editor, pressing Y to save the changes when prompted.

+

Reboot your device running HA:

+
$ sudo reboot
+
+
+

When it comes back up check that you can SSH in to it again on the IP address you wrote down.

+

Make sure Home Assistant is running and access it via the local network by typing the IP address and port number in to the browser:

+
http://192.168.0.200:8123.
+
+
+

All working? Hooray! You now have a static IP. This will now always be your internal IP address for your Home Assistant device. This will be known as YOUR-HA-IP for the rest of this guide.

+

2 - Set up port forwarding without TLS/SSL and test connection

+

Log in to your router’s configuration pages and find the port forwarding options. This bit is hard to write a guide for because each router has a different way of presenting these options. Searching google for “port forwarding” and the name of your router may help. When you find it you will likely have options similar to:

+

Service name - Port Range - Local IP - Local Port - Protocol

+

You may also have other options (like ‘source IP’), these can usually be left blank or in their default state.

+

Set the port forwarding to:

+
Service name - ha_test
+Port Range - 8123
+Local IP - YOUR-HA-IP
+Local Port - 8123
+Protocol - Both
+
+
+

Then save the change. On my router you have to fill these values in, then press an ‘add’ button to add the new rule to the list, then save the changes. All routers have a different interface, but you must ensure that these rules are saved at this point. If you are unsure, you can reboot the router and log back in, if the rule is present it was saved, if not, it wasn’t!

+

Once you have saved this rule, go to your browser, and go to:

+
https://whatismyipaddress.com/
+
+
+

This will tell you your current external IP address

+

Type the external IP address in to the URL bar with http:// in front and :8123 after like so (12.12.12.12 is my example!):

+
http://12.12.12.12:8123
+
+
+

Can you see your Home Assistant instance? If not, your router may not support ‘loopback’ - try the next step anyway and if that works, and this one still doesn’t, just remember that you cannot use loopback, so will have to use internal addresses when you’re on your home network. More on this later on if it’s relevant to you.

+

Just to verify this isn’t some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your wifi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone.

+

Can you see it now, from a device that is definitely not connected to your local network? Excellent! You now have a remotely accesible Home Assistant instance.

+

But what if your external IP changes? Plus, remembering all those numbers is pretty hard, isn’t it? Read on to get yourself set up with a word-based URL at DuckDNS that will track any changes to your IP address so you don’t have to stress anymore.

+

3 - Set up a DuckDNS account

+

Open your browser and go to https://duckdns.org.

+

Sign in and create an account using one of the id validation options in the top right corner.

+

In the domains section pick a name for your subdomain, this can be anything you like, and click add domain.

+

The URL you will be using later to access your Home Assistant instance from outside will be the subdomain you picked, followed by duckdns.org . For our example we will say our URL is examplehome.duckdns.org

+

On the top left of duckdns.org select the install option. Then pick your operating system from the list. In our example we will use a Raspberry Pi. In the dropdown box select the URL you just created.

+

Duckdns.org will now generate personalised instructions for you to follow so that your device can update their website every time your IP address changes. Carefully follow the instructions given on duckdns.org to set up your device.

+

At the end of the instructions DuckDNS will suggest you set up port forwarding. No need, we have already done this in step 2.

+

What you have now done is set up DuckDNS so that whenever you type examplehome.duckdns.org in to your browser it will convert that to your router’s external IP address. Your external IP address will always be up to date because your device running Home Assistant will update DuckDNS every time it changes.

+

Now type your new URL in to your address bar on your browser with port 8123 on the end:

+
http://examplehome.duckdns.org:8123
+
+
+

What now happens behind the scenes is this:

+
    +
  • DuckDNS receives the request and forwards the request to your router’s external IP address (which has been kept up to date by your device running Home Assistant)
  • +
  • Your router receives the request on port 8123 and checks the port forwarding rules
  • +
  • It finds the rule you created in step 2 and forwards the request to your HA instance
  • +
  • Your browser displays your Home Assistant instance frontend.
  • +
+

Did it work? Super!

+

You now have a remotely accesible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with TLS/SSL, read on to find out how.

+

4 - Obtain a TLS/SSL certificate from Let’s Encrypt

+

First we need to set up another port forward like we did in step 2. Set your new rule to:

+
Service name - ha_letsencrypt
+Port Range - 80
+Local IP - YOUR-HA-IP
+Local Port - 80
+Protocol - Both
+
+
+

Remember to save the new rule.

+

+In cases where your ISP blocks port 80 you will need to change the port forward options to forward port 443 from outside to port 443 on your Home Assistant device. Please note that this will limit your options for automatically renewing the certificate, but this is a limitation because of your ISP setup and there is not a lot we can do about it! +

+

Now SSH in to the device your Home Assistant is running on.

+

+If you’re running the ‘standard’ setup on a Raspberry Pi the chances are you just logged in as the ‘pi’ user. If not, you may have logged in as the Home Assistant user. There are commands below that require the Home Assistant user to be on the sudoers list. If you are not using the ‘standard’ Pi setup it is presumed you will know how to get your Home Assistant user on the sudoers list before continuing. If you are running the ‘standard’ Pi setup, from your ‘pi’ user issue the following command (where hass is the Home Assistant user): + +$ sudo adduser hass sudo + +

+

If you did not already log in as the user that currently runs Home Assistant, change to that user (usually hass or homeassistant - you may have used a command similar to this in the past):

+
$ sudo su -s /bin/bash hass 
+
+
+

Make sure you are in the home directory for the Home Assistant user:

+
$ cd
+
+
+

We will now make a directory for the certbot software, download it and give it the correct permissions:

+
$ mkdir certbot
+$ cd certbot/
+$ wget https://dl.eff.org/certbot-auto
+$ chmod a+x certbot-auto
+
+
+

You might need to stop Home Assistant before continuing with the next step. You can do this via the Web-UI or use the following command if you are running on Hassbian:

+
$ sudo systemctl stop home-assistant@homeassistant.service 
+
+
+

You can restart Home Assistant after the next step using the same command and replacing stop with start. +Now we will run the certbot program to get our SSL certificate. You will need to include your email address and your DuckDNS URL in the appropriate places:

+
$ ./certbot-auto certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org
+
+
+

Once the program has run it will generate a certificate and other files and place them in a folder /etc/letsencrypt/ .

+

Confirm this file has been populated:

+
$ ls /etc/letsencrypt/live/
+
+
+

This should show a folder named exactly after your DuckDNS URL.

+

Our Home Assistant user needs access to files within the letsencrypt folder, so issue the following commands to change the permissions.

+
$ sudo chmod 755 /etc/letsencrypt/live/
+$ 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

+

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 our homeassistant folder: + +$ cd ~/.homeassistant + +If you use Samba shares to edit your files you can exit your SSH now. +

+

If during step 4 you had to use port 443 instead of port 80 to generate your certificate, you should delete that rule now.

+

Go to your router’s configuration pages and set up a new port forwarding rule, thus:

+
Service name - ha_ssl
+Port Range - 443
+Local IP - YOUR-HA-IP
+Local Port - 8123
+Protocol - Both
+
+
+

Remember to save the rule changes.

+

Now edit your configuration.yaml file to reflect the SSL entries and your base URL (changing the examplehome subdomain to yours in all three places):

+
http:
+  api_password: YOUR_PASSWORD
+  ssl_certificate: /etc/letsencrypt/live/examplehome.duckdns.org/fullchain.pem
+  ssl_key: /etc/letsencrypt/live/examplehome.duckdns.org/privkey.pem
+  base_url: examplehome.duckdns.org
+
+
+

You may wish to set up other options for the http component at this point, these extra options are beyond the scope of this guide.

+

Save the changes to configuration.yaml. Restart Home Assistant.

+

In step 3 we accessed our Home Assistant from the outside world with our DuckDNS URL and our port number. We are going to use a slightly different URL this time.

+
https://examplehome.duckdns.org
+
+
+

Note the S after http, and that no port number is added. This is because https will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123.

+

You should now be able to see your Home Assistant instance via your DuckDNS URL, and importantly note that your browser shows the connection as secure.

+

You will now NO LONGER be able to access your Home Assistant via your old internal IP address in the way you previously have. Your default way to access your Home Assistant instance, even from inside your house, is to use your DuckDNS URL.

+

In cases where you need to access via the local network only (which should be few and far between) you can access it with the following URL (note the added S after http):

+
https://YOUR-HA-IP:8123
+
+
+

…and accepting the browsers warning that you are connecting to an insecure site. This warning occurs because your certificate expects your incoming connection to come via your DuckDNS URL. It does not mean that your device has suddenly become insecure.

+

Some cases such as this are where your router does not allow ‘loopback’ or where there is a problem with incoming connections due to technical failure. In these cases you can still use your internal connection and safely ignore the warnings.

+

If you were previously using a webapp on your phone/tablet to access your Home Assistant you should delete the old one and create a new one with the new address. The old one will no longer work as it is not keyed to your new, secure URL. Instructions for creating your new webapp can be found here:

+
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 necessary to the outside world.

+

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

+

Go to your router’s configuration pages and delete the ha_test rule.

+

You should now have two rules in relation to Home Assistant for your port forwards, named:

+

ha_ssl and ha_letsencrypt

+

If you have any more for Home Assistant you should delete them now. If you only have ha_ssl this is probably because during step 4 you had to use port 443 instead of port 80, so we deleted the rule during step 5.

+

You are now part of one of two groups:

+
    +
  • 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!

+

Let’s Encrypt certificates only last for 90 days. When they have less than 30 days left they can be renewed. Renewal is a simple process.

+

Move on to step 7 to see how to monitor your certificates expiry date, and be ready to renew your certificate when the time comes.

+

7 - Set up a sensor to monitor the expiry date of the certificate

+

Setting a sensor to read the number of days left on your TLS/SSL certificate before it expires is not required, but it has the following advantages:

+
    +
  • You can physically see how long you have left, pleasing your inner control freak
  • +
  • You can set automations based on the number of days left
  • +
  • You can set alerts to notify you if your certificate has not been renewed and is coming close to expiry.
  • +
  • If you cannot set up automatic renewals due to your ISP blocking port 80, you will have timely reminders to complete the process manually.
  • +
+

If you do not wish to set up a sensor you can skip straight to step 8 to learn how to update your certificates.

+

The sensor will rely on a command line program that needs to be installed on your device running Home Assistant. SSH in to the device and run the following commands:

+
$ sudo apt-get update
+$ 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 necessary and so on. +

+

To set up a senor add the following to your configuration.yaml (remembering to correct the URL for your DuckDNS):

+
sensor:
+  - platform: command_line
+    name: SSL cert expiry
+    unit_of_measurement: days
+    scan_interval: 10800
+    command: "ssl-cert-check -b -c /etc/letsencrypt/live/examplehome.duckdns.org/cert.pem | awk '{ print $NF }'"
+
+
+

Save the configuration.yaml. Restart Home Assistant.

+

On your default_view you should now see a sensor badge containing your number of days until expiry. If you’ve been following this guide from the start and have not taken any breaks in between, this should be 89 or 90. The sensor will update every 3 hours. You can place this reading on a card using groups, or hide it using customize. These topics are outside of the scope of this guide, but information can be found on their respective components pages: Group and Customize

+

Got your sensor up and running and where you want it? Top drawer! Nearly there, now move on to the final steps to ensure that you’re never without a secure connection in the future.

+

8 - Set up an automatic renewal of the TLS/SSL certificate.

+

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

+

If you are a TWO-RULE person (from step 6), you can automatically renew your certificate using a http-01 challenge and port 80.

+

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

+
    +
  • SSH in to your device running Home Assistant.
  • +
  • Change to your Home Assistant user (command similar to):
  • +
+
$ sudo su -s /bin/bash hass
+
+
+
    +
  • Open the crontab:
  • +
+
$ crontab -e
+
+
+
    +
  • If you are a TWO-RULE Person: Scroll to the bottom of the file and paste in the following line
  • +
+
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
  • +
+
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. +
    3. --tls-sni-01-port 8123 tells certbot to bind port 8123 internally, which matches with the port forwarding rules that are already in place.
    4. +
    5. 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.
    6. +
    +
  • +
  • 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 if you are a TWO-RULE person

+
shell_command: 
+  renew_ssl: ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01
+  
+automation:
+  - alias: 'Auto Renew SSL Cert'
+    trigger:
+      platform: numeric_state
+      entity_id: sensor.ssl_cert_expiry
+      below: 29
+    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.

+

To manually update:

+
    +
  • SSH in to your device running Home Assistant.
  • +
  • Change to your Home Assistant user (command similar to):
  • +
+
$ su - s /bin/bash hass
+
+
+
    +
  • Change to your certbot folder
  • +
+
$ cd ~/certbot/
+
+
+
    +
  • Run the renewal command
  • +
+
$ ./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 accessible Home Assistant 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.

+

9 - Set up an alert to warn us if something went wrong.

+

We set up our automatic renewal of our certificates and whatever method we used the certificate should be renewed on or around 30 days before it expires. But what if a week later it still hasn’t been? This alert will go off if the expiry time on the certificate gets down to 21 days. This will give you 3 weeks to fix the problem, get your new certificate installed and get another 90 days of secure Home Assistant connections in play.

+

In your configuration.yaml add the following automation, adding your preferred notification platform where appropriate:

+
automation:
+  - alias: 'SSL expiry notification'
+    trigger:
+      platform: numeric_state
+      entity_id: sensor.ssl_cert_expiry
+      below: 21
+    action:
+      service: notify.[your_notification_preference]
+      data:
+        message: 'Warning - SSL certificate expires in 21 days and has not been automatically renewed'
+
+
+

If you receive this warning notification, follow the steps for a manual update from step 8. Any error messages received at that point can be googled and resolved. If the manual update goes without a hitch there may be something wrong with your chosen method for automatic updates, and you can start troubleshooting from there.

+

So, that’s it. We’ve taken a Home Assistant instance that was only reachable on the local network, made it accessible from the internet, secured it, and set up a system to ensure that it always stays secure. Well done, go and treat yourself to a cookie!

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/certificates/tls_domain_certificate/index.html b/docs/ecosystem/certificates/tls_domain_certificate/index.html new file mode 100644 index 0000000000..2b2966ecf6 --- /dev/null +++ b/docs/ecosystem/certificates/tls_domain_certificate/index.html @@ -0,0 +1,393 @@ + + + + + + + + + Certificate for SSL/TLS via domain ownership - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Certificate for SSL/TLS via domain ownership +

+
+
+

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. You can use Self-sign certificate but your browser will present a warning and some https-only features might not work.

+

Prerequirement for this guide

+
    +
  • Your Home Assistant instance is not exposed to the internet. If it is - use this guide
  • +
  • You control a public domain name. The domain doesn’t have to point to a site. A domain controlled by a trusted friend will do. (A friend you trust not to MITM you)
  • +
  • Your home router supports custom DNS entries.
  • +
+

Run certbot

+
$ mkdir certbot
+$ cd certbot
+$ wget https://dl.eff.org/certbot-auto
+$ chmod a+x certbot-auto
+$ sudo ./certbot-auto --manual certonly --preferred-challenges dns -d "mydomain.com" --email your@email.address
+
+
+
    +
  • Agree to Terms of Service
  • +
  • Choose whether to share your email with Electronic Frontier Foundation.
  • +
  • Agree to your IP being logged
  • +
+

You will get the following text:

+
Please deploy a DNS TXT record under the name
+_acme-challenge.mydomain.com with the following value:
+
+deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
+
+Once this is deployed,
+-------------------------------------------------------------------------------
+Press Enter to Continue
+
+
+
    +
  • Deploy the value to TXT field using your domain registar.
  • +
  • Go to a site that queries domain record. For example this one and look if it sees your brand new TXT field (Don’t forget to enter the full domain: _acme-challenge.mydomain.com)
  • +
  • Press Enter at certbot prompt.
  • +
+

Make mydomain.com point to your Home Assistant instance

+

If your router uses DNSMasq (for example DDWRT) add the following line to DNSMasq options:

+
address=/mydomain.com/<hass ip>
+
+
+

Edit your Home Assistant configuration to use your certificates

+

The http section must contain the full path to the needed files.

+
http:
+  api_password: YOUR_SECRET_PASSWORD
+  base_url: https://mydomain.com:8123
+  ssl_certificate: /etc/letsencrypt/live/mydomain.com/fullchain.pem
+  ssl_key: /etc/letsencrypt/live/mydomain.com/privkey.pem
+
+
+

Make sure the files are accessible by the user that runs Home Assistant, eg. homeassistant for a HASSbian setup.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/certificates/tls_self_signed_certificate/index.html b/docs/ecosystem/certificates/tls_self_signed_certificate/index.html new file mode 100644 index 0000000000..ffc009b36b --- /dev/null +++ b/docs/ecosystem/certificates/tls_self_signed_certificate/index.html @@ -0,0 +1,368 @@ + + + + + + + + + Self-signed certificate for SSL/TLS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Self-signed certificate for SSL/TLS +

+
+
+

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 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 complain about the security. If you have a CA then this will not be an issue.

+

To create a certificate locally, you need the OpenSSL command-line tool.

+

Change to your Home Assistant configuration directory 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 are needed.
  • +
+
$ 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 certificate.pem. The key and the certificate.

+

Update the http: entry in your configuration.yaml file and let it point to your created files.

+
http:
+  api_password: YOUR_SECRET_PASSWORD
+  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” could give you some insight about special cases.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/hadashboard/index.html b/docs/ecosystem/hadashboard/index.html new file mode 100644 index 0000000000..dc93d620ee --- /dev/null +++ b/docs/ecosystem/hadashboard/index.html @@ -0,0 +1,364 @@ + + + + + + + + + HADashboard - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ HADashboard +

+
+
+

HADashboard is a modular, skinnable dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing.

+

+ + Default Theme +

+

+ + Obsidian Theme +

+

+ + Zen Theme +

+

+ + Simply Red Theme +

+

+ + Glassic Theme +

+

For full installation instructions see the HADashboard section in the AppDaemon Project Documentation

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/hass-configurator/index.html b/docs/ecosystem/hass-configurator/index.html new file mode 100644 index 0000000000..4a8fb9661d --- /dev/null +++ b/docs/ecosystem/hass-configurator/index.html @@ -0,0 +1,451 @@ + + + + + + + + + HASS Configurator - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ HASS Configurator +

+
+
+

Configuration UI for Home Assistant

+

Since there currently is no nice way to edit the yaml-files Home Assistant is using through the frontend, here is a small webapp that hopefully makes the configuration easier. It is a customized and embedded Ace editor, which has syntax highlighting for yaml, the format used for Home Assistants configuration files. There is an integrated file browser to select whatever file you want to edit. When you’re done with editing the file, click the save-button and it will replace the original.
+Essentially this is a browser-based alternative to modifying your configuration through SSH, Windows + SMB, Github etc..

+

+ +Screenshot of the HASS Configurator. +

+

Feature list

+
    +
  • Web-Based editor to modify your files
  • +
  • Upload and download files
  • +
  • Git integration
  • +
  • Lists of available triggers, events, entities, conditions and services. Selected element gets inserted into the editor at the last cursor position.
  • +
  • Check valid configuration and restart Home Assistant directly with the click of a button
  • +
  • SSL support
  • +
  • Optional authentication and IP filtering for additional security
  • +
  • Direct links to Home Assistant documentation and icons
  • +
  • Execute shell commands
  • +
  • Runs on pretty much any machine Home Assistant can run on
  • +
+

+This tool allows you to browse your filesystem and modify files. So be careful which files you edit, or you might break critical parts of your system.
+Consider running the configurator as a user with limited privileges to limit possible damage.

+

Installation (Linux, OS X)

+

There are no dependencies on Python modules that are not part of the standard library. And all the fancy JavaScript libraries are loaded from CDN (which means this doesn’t work when you’re offline).

+
    +
  • Copy configurator.py to your Home Assistant configuration directory (e.g /home/homeassistant/.homeassistant): wget https://raw.githubusercontent.com/danielperna84/hass-configurator/master/configurator.py
  • +
  • Make it executable: sudo chmod 755 configurator.py
  • +
  • (Optional) Set the GIT variable in configurator.py to True if GitPython is installed on your system. This is required if you want to make use of the Git integration.
  • +
  • Execute it: sudo ./configurator.py
  • +
  • To terminate the process do the usual CTRL+C, maybe once or twice
  • +
+

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

+

LISTENPORT (integer)

+

The port the service is listening on. By default it is using 3218, but you can change this if you need to.

+

BASEPATH (string)

+

It is possible to place configurator.py somewhere else. Set the BASEPATH to something like "/home/homeassistant/.homeassistant", and no matter where you are running the configurator from, it will start serving files from there. This is needed if you plan on running the configurator with systemd or some other way of daemonizing the configurator.

+

SSL_CERTIFICATE / SSL_KEY (string)

+

If you are using SSL, set the paths to your SSL files here. This is similar to the SSL setup you can do in Home Assistant.

+

HASS_API (string)

+

The configurator fetches some data from your running Home Assistant instance. If the API is not available through the default URL, modify this variable to fix this.

+

HASS_API_PASSWORD (string)

+

If you plan on using the restart button, you have to set your API password. Calling the restart service of Home Assistant is prohibited without authentication.

+

CREDENTIALS (string)

+

Set credentials in the form of "username:password" if authentication should be required for access to the configurator.

+

ALLOWED_NETWORKS (list)

+

Limit access to the configurator by adding allowed IP addresses / networks to the list, e.g ALLOWED_NETWORKS = ["192.168.0.0/24", "172.16.47.23"]

+

BANNED_IPS (list)

+

List of statically banned IP addresses, e.g. BANNED_IPS = ["1.1.1.1", "2.2.2.2"]

+

BANLIMIT (integer)

+

Ban IPs after n failed login attempts. Restart the service to reset banning. The default of 0 disables this feature. CREDENTIALS has to be set for this to work.

+

IGNORE_PATTERN (list)

+

Files and folders to ignore in the UI, e.g. IGNORE_PATTERN = [".*", "*.log", "__pycache__"].

+

DIRSFIRST (bool)

+

If set to True, directories will be displayed at the top of the filebrowser.

+

GIT (bool)

+

Set this variable to True to enable Git integration. This feature requires GitPython + to be installed on the system that is running the configurator. For technical reasons this feature can not be enabled with the static settings file.

+

Note regarding ALLOWED_NETWORKS, BANNED_IPS and BANLIMIT:
+The way this is implemented works in the following order:

+
    +
  1. (Only if CREDENTIALS is set) Check credentials +
      +
    • Failure: Retry BANLIMIT times, after that return error 420 (unless you try again without any authentication headers set, e.g. private tab of your browser)
    • +
    • Success: Continue
    • +
    +
  2. +
  3. Check if client IP address is in BANNED_IPS +
      +
    • Yes: Return error 420
    • +
    • No: Continue
    • +
    +
  4. +
  5. Check if client IP address is in ALLOWED_NETWORKS +
      +
    • No: Return error 420
    • +
    • Yes: Continue and display UI of configurator
    • +
    +
  6. +
+

Embedding into Home Assistant

+

Home Assistant has the panel_iframe component. With this it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration through the Home Assistant frontend.
+An example configuration would look like this:

+
panel_iframe:
+  configurator:
+    title: Configurator
+    icon: mdi:wrench
+    url: http://123.123.132.132:3218
+
+
+

+Be careful when setting up port forwarding to the configurator while embedding it 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!

+

Daemonizing / Keeping the configurator running

+

Since the configurator script on its own is no service, you will have to take some extra steps to keep it running. Here are five options (for Linux), but there are more, depending on your usecase.

+
    +
  1. Fork the process into the background with the command:
    +nohup sudo ./configurator.py &
  2. +
  3. If your system is using systemd (that’s usually what you’ll find on a Raspberry Pi), there’s a template file you can use and then apply the same process to integrate it as mentioned in the Home Assistant documentation. If you use this method you have to set the BASEPATH variable according to your environment.
  4. +
  5. If you have supervisor running on your system, hass-poc-configurator.supervisor would be an example configuration you could use to control the configurator.
  6. +
  7. A tool called tmux, which should be pre-installed with HASSbian.
  8. +
  9. A tool called screen (alternative to tmux). If it’s not already installed on your system, you can do sudo apt-get install screen or sudo yum install screen to get it. When it’s installed, start a screen session by executing screen. Then navigate to your Home Assistant directory and start the configurator like described above. Put the screen session into the background by pressing CTRL+A and then CTRL+D. It is now safe to disconnect from your SSH session. +To resume the screen session, log in to your machine and execute screen -r.
  10. +
+

Troubleshooting, Issues etc.

+

If you encounter difficulties setting up the configurator or stumble upon a possible bug, head over to the Issues section of the configurator repository. Additionally there is a thread at the Home Assistant Community where common problems may have been discussed already. And if not, there are always friendly people around to help finding solutions.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/index.html b/docs/ecosystem/index.html new file mode 100644 index 0000000000..5fb97c7487 --- /dev/null +++ b/docs/ecosystem/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Ecosystem - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Ecosystem +

+
+
+ Ecosystem includes documentation for related tools and projects that extend Home Assistant to new platforms and systems. +
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/devices_file/index.html b/docs/ecosystem/ios/devices_file/index.html new file mode 100644 index 0000000000..b73df743d0 --- /dev/null +++ b/docs/ecosystem/ios/devices_file/index.html @@ -0,0 +1,343 @@ + + + + + + + + + ios.conf - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ ios.conf +

+
+
+

The ios.conf file contains the most recent state of all registered iOS devices. Deleting this file will not disable the devices and the file will be recreated the next time a new device is connected or an existing one reconnects.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/index.html b/docs/ecosystem/ios/index.html new file mode 100644 index 0000000000..85c9c5d33c --- /dev/null +++ b/docs/ecosystem/ios/index.html @@ -0,0 +1,378 @@ + + + + + + + + + iOS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ iOS +

+
+
+

The Home Assistant for iOS app offers a companion app for iOS which is deeply integrated into both Home Assistant and iOS. Its basic features include:

+
    +
  • Advanced push notifications
  • +
  • Location tracking
  • +
  • Basic control of all Home Assistant entities
  • +
  • Integration with third party apps
  • +
+

The app is available on the iOS App Store in every country that Apple supports.

+

+

Basic requirements

+
    +
  • iOS device running at least iOS 9, but iOS 10 is greatly preferred.
  • +
  • Home Assistant 0.42.4 or higher for push notification support.
  • +
  • SSL is strongly recommended. Self-signed SSL certificates will not work due to Apple’s limitations.
  • +
+

The ios component is the companion component for the Home Assistant iOS app. While not required, adding the ios component to your setup will greatly enhance the iOS app with new notification, location and sensor functions not possible with a standalone app.

+

Loading the ios component will also load the device_tracker, zeroconf and notify platforms.

+

Setup

+

Automated Setup

+

The ios component will automatically be loaded under the following circumstances:

+
    +
  1. The discovery component is enabled.
  2. +
  3. You have just installed the app and are at the getting started screen.
  4. +
+

Automated discovery and component loading only happens at first install of the app. You may need to wait a few minutes for the iOS component to load as the discovery component only scans the network every 5 minutes.

+

After the first automated setup you need to add ios: to your configuration so that the component loads by default even after restarting Home Assistant.

+

Manual Setup

+

You may also manually load the ios component by adding the following to your configuration:

+
# Example configuration.yaml entry
+ios:
+
+
+

Configuration variables:

+ +
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/integration/index.html b/docs/ecosystem/ios/integration/index.html new file mode 100644 index 0000000000..345862cdb7 --- /dev/null +++ b/docs/ecosystem/ios/integration/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Integration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Integration +

+
+
+

Home Assistant for iOS supports opening from other apps via URL.

+

Query parameters are passed as a dictionary in the call.

+

Call service

+

Example: homeassistant://call_service/device_tracker.see?entity_id=device_tracker.entity

+

Fire event

+

You can create an event trigger and fire the event.

+

Example: homeassistant://fire_event/custom_event?entity_id=MY_CUSTOM_EVENT

+

Send one shot location

+

Example: homeassistant://send_location/

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/location/index.html b/docs/ecosystem/ios/location/index.html new file mode 100644 index 0000000000..60c743e633 --- /dev/null +++ b/docs/ecosystem/ios/location/index.html @@ -0,0 +1,371 @@ + + + + + + + + + Location - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Location +

+
+
+

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 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 significant significant-change location updates as:

+
+

The significant-change location service delivers updates only when there has been a significant change in the device’s location, such as 500 meters or more.

+
+

They also say in the Energy Efficiency Guide:

+
+

Significant-change location updates wake the system and your app once every 15 minutes, at minimum, even if no location changes have occurred.

+
+

Finally, I think this answer from Stack Overflow says it best:

+
+

The significant location change is the least accurate of all the location monitoring types. It only gets its updates when there is a cell tower transition or change. This can mean a varying level of accuracy and updates based on where the user is. City area, more updates with more towers. Out of town, interstate, fewer towers and changes.

+
+

What’s the real story on significant-change location updates? Who knows, because Apple keeps it private.

+

Location tracking in Home Assistant zones

+

At launch, Home Assistant for iOS sets up geofences for all zones in your Home Assistant configuration. Enter and exit notifications are sent to Home Assistant.

+

Configuration

+

Add track_ios: false to your zone configurations to disable zone location tracking for all connected iOS apps.

+

iBeacons

+

As of 1.0.3 the app has basic support for using iBeacons to trigger enter/exit updates. To configure them, add your iBeacon details to your zone like this:

+
zone.home:
+  beacon:
+    uuid: B9407F30-F5F8-466E-AFF9-25556B57FE6D
+    major: 60042
+    minor: 43814
+
+
+

Restart Home Assistant and then the iOS app. It will begin then begin using iBeacons instead of your location for enter and exit triggers around your zones. To add an iBeacon to zone.home add the above under your customize.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/actions/index.html b/docs/ecosystem/ios/notifications/actions/index.html new file mode 100644 index 0000000000..b497ba8093 --- /dev/null +++ b/docs/ecosystem/ios/notifications/actions/index.html @@ -0,0 +1,465 @@ + + + + + + + + + Actionable notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Actionable notifications +

+
+
+

Actionable notifications allow you to attach 1-4 custom buttons to a notification. When one of the actions is selected Home Assistant will be notified which action was chosen. This allows you to build complex automations.

+

Examples of actionable notifications:

+
    +
  • A notification is sent whenever motion is detected in your home while you are away or asleep. You can add an action to Sound Alarm. When tapped, Home Assistant is notified that the sound_alarm action was selected. You can add an automation to sound the burglar alarm whenever this event is seen.
  • +
  • Someone rings your front door bell. You can send an action to lock or unlock your front door. When tapped, a notification is sent back to Home Assistant upon which you can build automations.
  • +
  • Send a notification whenever your garage door opens with actions to open and close the garage.
  • +
+

+ + Actionable notifications allow the user to send a command back to Home Assistant. +

+

Overview of how actionable notifications work

+

In advance of sending a notification:

+
    +
  1. Define a notification category in your Home Assistant configuration which contain 1-4 actions.
  2. +
  3. At launch iOS app requests notification categories from Home Assistant (can also be done manually in notification settings).
  4. +
+

When sending a notification:

+
    +
  1. Send a notification with data.push.category set to a pre-defined notification category identifier.
  2. +
  3. Push notification delivered to device
  4. +
  5. User opens notification.
  6. +
  7. Action tapped
  8. +
  9. Identifier of action sent back to HA as the actionName property of the event ios.notification_action_fired, along with other metadata such as the device and category name.
  10. +
+

+ + How the iOS device and Home Assistant work together to enable actionable notifications. +

+

Definitions

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

Category parameters

+
    +
  • name (Required): A friendly name for this category.
  • +
  • identifier (Required): A unique identifier for the category. Must be lowercase and have no special characters or spaces.
  • +
  • actions (Required): A list of actions.
  • +
+

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.
  • +
  • activationMode (Optional): The mode in which to run the app when the action is performed. Setting this to foreground will make the app open after selecting. Default value is background.
  • +
  • authenticationRequired (Optional): If a truthy value (true, True, yes, etc.) the user must unlock the device before the action is performed.
  • +
  • destructive (Optional): When the value of this property is a truthy value, the system displays the corresponding button differently to indicate that the action is destructive (text color is red).
  • +
  • behavior (Optional): When textInput the system provides a way for the user to enter a text response to be included with the notification. The entered text will be sent back to Home Assistant. Default value is default.
  • +
  • textInputButtonTitle (Optional): The button label. Required if behavior is textInput.
  • +
  • textInputPlaceholder (Optional): The placeholder text to show in the text input field. Only used if behavior is textInput and the device runs iOS 10.
  • +
+

Here’s a fully built example configuration:

+
ios:
+  push:
+    categories:
+      - name: Alarm
+        identifier: 'alarm'
+        actions:
+          - identifier: 'SOUND_ALARM'
+            title: 'Sound Alarm'
+            activationMode: 'background'
+            authenticationRequired: yes
+            destructive: yes
+            behavior: 'default'
+          - identifier: 'SILENCE_ALARM'
+            title: 'Silence Alarm'
+            activationMode: 'background'
+            authenticationRequired: yes
+            destructive: no
+            behavior: 'textInput'
+            textInputButtonTitle: 'Silencio!'
+            textInputPlaceholder: 'Placeholder'
+
+
+

Building automations for notification actions

+

Here is an example automation to send a notification with a category in the payload:

+
automation:
+  - alias: Notify iOS app
+    trigger:
+      ...
+    action:
+      service: notify.ios_robbies_iphone_7_plus
+      data:
+        message: "Something happened at home!"
+        data:
+          push:
+            badge: 5
+            sound: <SOUND FILE HERE>
+            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
+
+
+

When an action is selected an event named ios.notification_action_fired will be emitted on the Home Assistant event bus. Below is an example payload.

+
{
+  "sourceDeviceName": "Robbie's iPhone 7 Plus",
+  "sourceDeviceID": "robbies_iphone_7_plus",
+  "actionName": "SOUND_ALARM",
+  "sourceDevicePushId": "ab9f02fe-6ac6-47b8-adeb-5dd87b489156",
+  "textInput": "",
+  "actionData": {}
+}
+
+
+

Here’s an example automation for the given payload:

+
automation:
+  - alias: Sound the alarm
+    trigger:
+      platform: event
+      event_type: ios.notification_action_fired
+      event_data:
+        actionName: SOUND_ALARM
+    action:
+      ...
+
+
+

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/docs/ecosystem/ios/notifications/architecture/index.html b/docs/ecosystem/ios/notifications/architecture/index.html new file mode 100644 index 0000000000..a273fb6a2d --- /dev/null +++ b/docs/ecosystem/ios/notifications/architecture/index.html @@ -0,0 +1,346 @@ + + + + + + + + + Architecture - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/attachments/index.html b/docs/ecosystem/ios/notifications/attachments/index.html new file mode 100644 index 0000000000..b6ac779313 --- /dev/null +++ b/docs/ecosystem/ios/notifications/attachments/index.html @@ -0,0 +1,392 @@ + + + + + + + + + Notification attachments - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Notification attachments +

+
+
+

iOS 10 adds attachments to notifications. An attachment is an image, video, or audio file which is downloaded to the device when a notification is received and shown alongside the notification. A thumbnail is shown when the notification is not expanded. The full size attachment is shown when the notification is expanded.

+

+To expand a notification on 3D Touch devices simply force touch any notification. On non-3D Touch devices swipe and tap the “View” button. +

+
- alias: Notify iOS app
+    trigger:
+      ...
+    action:
+      service: notify.ios_robbies_iphone_7_plus
+      data:
+        message: "Something happened at home!""
+        data:
+          attachment:
+            url: https://67.media.tumblr.com/ab04c028a5244377a0ab96e73915e584/tumblr_nfn3ztLjxk1tq4of6o1_400.gif
+            content-type: gif
+            hide-thumbnail: false
+
+
+

Notes:

+
    +
  • The thumbnail of the notification will be the media at the url.
  • +
  • The notification content is the media at the url.
  • +
  • Attachment can be used with custom push notification categories.
  • +
+

Example

+

+ + An unexpanded push notification with an attachment. +

+

+ + The same notification but expanded to show the full size attachment +

+

Supported media types

+

If the attachment does not appear please ensure it is in one of the following formats:

+

Audio attachments

+

Maximum file size: 5 MB

+

Allowed Formats: AIFF, WAV, MP3, MPEG4 Audio

+

Image attachments

+

Maximum file size: 10 MB

+

Allowed Formats: JPEG, GIF, PNG

+

Video attachments

+

Maximum file size: 50 MB

+

Allowed Formats: MPEG, MPEG2, MPEG4, AVI

+

Configuration

+
    +
  • url (Required): The URL of content to use as the attachment. This URL must be accessible from the Internet, or the receiving device must be on the same network as the hosted content.
  • +
  • content-type (Optional): By default, the extension of the URL will be checked to determine the filetype. If there is no extension/it can’t be determined you can manually provide a file extension.
  • +
  • hide-thumbnail (Optional): If set to true the thumbnail will not show on the notification. The content will only be viewable by expanding.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/basic/index.html b/docs/ecosystem/ios/notifications/basic/index.html new file mode 100644 index 0000000000..27be65bb3d --- /dev/null +++ b/docs/ecosystem/ios/notifications/basic/index.html @@ -0,0 +1,410 @@ + + + + + + + + + Basic Notifications - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Basic Notifications +

+
+
+

The iOS notify platform accepts the standard title, message and target parameters. The iOS notify platform supports targets as services. Assuming that you did not set a name when configuring the platform you should find all your registered and notification-enabled iOS devices available as notify targets as services with names prefixed “notify.ios_” and then the device name you entered at setup.

+

Notes:

+
    +
  • +

    title only displays on Apple Watch and iOS 10 devices.

    +
  • +
  • +

    target can be used to specific a single device using its PushID, found in ios.conf. The preferred way of providing a target is through a target specific notify service.

    +
  • +
+

+ + A push notification showing all of the basic options title and message as well as subtitle and actions. +

+

Enhancing basic notifications

+

Badge

+

You can set the icon badge in the payload:

+
automation:
+  - alias: Notify iOS app
+    trigger:
+      ...
+    action:
+      service: notify.ios_<your_device_id_here>
+      data:
+        message: "Something happened at home!"
+        data:
+          push:
+            badge: 5
+
+
+

Subtitle

+

iOS 10 supports a subtitle in addition to the title:

+
automation
+  - alias: Notify iOS app
+    trigger:
+      ...
+    action:
+      service: notify.ios_<your_device_id_here>
+      data:
+        message: "Something happened at home!"
+        data:
+          subtitle: "Subtitle goes here"
+
+
+

Sending notifications to multiple phones

+

To send notifications to multiple phones, create a notification group:

+
notify:
+  - name: NOTIFIER_NAME
+    platform: group
+    services:
+      - service: ios_iphone_one
+      - service: ios_iphone_two
+
+
+

Now, you can send notifications to everyone in the group using:

+
  automation:
+    - alias: Notify iOS app
+      trigger:
+        ...
+      action:
+        service: notify.NOTIFIER_NAME
+        data:
+          message: "Something happened at home!"
+          data:
+            push:
+              badge: 5
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/content_extensions/index.html b/docs/ecosystem/ios/notifications/content_extensions/index.html new file mode 100644 index 0000000000..a9f22324f6 --- /dev/null +++ b/docs/ecosystem/ios/notifications/content_extensions/index.html @@ -0,0 +1,419 @@ + + + + + + + + + Dynamic content - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Dynamic content +

+
+
+

With the new Content Extension feature found in iOS 10, dynamic content can now be displayed as part of a notification without opening an app.

+

Map

+

Will show a map with a red tipped pin at the coordinates given. +The map will be centered at the coordinates given.

+
service: notify.ios_<your_device_id_here>
+data:
+  message: Something happened at home!
+  data:
+    push:
+      category: map
+    action_data:
+      latitude: "40.785091"
+      longitude: "-73.968285"
+
+
+

Showing a second pin

+

You can use the following properties under action_data to display a second pin. If used, the first pin will be red and the second green.

+
    +
  • second_latitude: The latitude of the second pin. Must be a string!
  • +
  • second_longitude: The longitude of the second pin. Must be a string!
  • +
  • shows_line_between_points: A Boolean value indicating whether a line should be drawn between the first and second pin.
  • +
+

Extra configuration

+

You can also pass the following properties under action_data to modify the map in various ways. All are expected to be boolean values unless otherwise noted:

+
    +
  • shows_compass: A Boolean indicating whether the map displays a compass control.
  • +
  • shows_points_of_interest: A Boolean indicating whether the map displays point-of-interest information.
  • +
  • shows_scale: A Boolean indicating whether the map shows scale information.
  • +
  • shows_traffic: A Boolean value indicating whether the map displays traffic information.
  • +
  • shows_user_location: A Boolean value indicating whether the map should try to display the user’s location.
  • +
+

+ + An example of the map dynamic content. +

+

Camera Stream

+

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 to control the thumbnail.

+

You can view an example here.

+
service: notify.ios_<your_device_id_here>
+data:
+  message: Motion detected in the Living Room
+  data:
+    attachment:
+      content-type: jpeg
+    push:
+      category: camera
+    entity_id: camera.demo_camera
+
+
+
+ +
+

Combining with actionable notifications

+

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 to add actions to the content extension.

+

For example this configuration adds actions to a camera content message.

+
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/docs/ecosystem/ios/notifications/index.html b/docs/ecosystem/ios/notifications/index.html new file mode 100644 index 0000000000..04cc9f40bf --- /dev/null +++ b/docs/ecosystem/ios/notifications/index.html @@ -0,0 +1,351 @@ + + + + + + + + + Notifications Introduction - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Notifications Introduction +

+
+
+

The ios notify platform enables sending push notifications to the Home Assistant iOS app.

+

The ‘ios’ component will automatically load the notify service. +The service component can be called using service: notify.ios_<your_device_ID>. +Your device ID can be found in the ios.conf file in your configuration folder. The file is compressed JSON. You can view it easier by copying the file contents and pasting them into JSONLint.

+

In this example, the device ID is robbiet480_7plus, so the notify service to use is notify.ios_robbiet480_7plus:

+
{"devices":{"robbiet480_7plus":{"app":{"bundleIdentifer":"io.robbie.HomeAssistant","versionNumber":1,"buildNumber":53},"pushSounds":[],"permissions":["location"],"deviceId":"robbiet480_7plus","device":{"type":"iPhone 7 Plus","systemName":"iOS","systemVersion":"10.3","permanentID":"AB9F02FE-6AC6-47B8-ADEB-5DD87B489156","localizedModel":"iPhone","name":"Robbie's iPhone 7 Plus","model":"iPhone"},"battery":{"state":"Full","level":100},"pushToken":"SECRET","pushId":"SECRET"}}}
+
+
+

You can find more information in the Basic Notifications documentation and the Actionable Notifications documentation.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/privacy_security_rate_limits/index.html b/docs/ecosystem/ios/notifications/privacy_security_rate_limits/index.html new file mode 100644 index 0000000000..8880601494 --- /dev/null +++ b/docs/ecosystem/ios/notifications/privacy_security_rate_limits/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Privacy, rate limiting and security - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Privacy, rate limiting and security +

+
+
+

Privacy

+

No notification content is stored on remote servers. Only the required push registration data and a simple counter of the total number of push notifications sent per day per device (for rate limiting purposes) is kept.

+

Rate limiting

+

Currently, you are allowed to send a maximum of 150 push notifications per day per device. This is to ensure that the service remains cheap to maintain. In the future we may add support for upgrading to allow more notifications. The rate limit resets at midnight UTC daily. When a notification is sent your current rate limits (including sent notifications and notifications remaining for the day) will be output to your Home Assistant logs. If an error occurs while sending a notification your rate limit will not be affected.

+

Security

+

All traffic between your Home Assistant instance, the push infrastructure, and Apple, is encrypted with SSL.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/requesting_location_updates/index.html b/docs/ecosystem/ios/notifications/requesting_location_updates/index.html new file mode 100644 index 0000000000..3f27bf73db --- /dev/null +++ b/docs/ecosystem/ios/notifications/requesting_location_updates/index.html @@ -0,0 +1,357 @@ + + + + + + + + + Requesting location updates - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Requesting location updates +

+
+
+

+Do not rely on this functionality due to the time limits mentioned below. +

+

You can force a device to attempt to report its location by sending a special notification.

+
automation
+  - alias: Notify iOS app
+    trigger:
+      ...
+    action:
+      service: notify.ios_<your_device_id_here>
+      data:
+        message: "request_location_update"
+
+
+

Assuming the device receives the notification, it will attempt to get a location update within 5 seconds and report it to Home Assistant. This is a little bit hit or miss since Apple imposes a maximum time allowed for the app to work with the notification and location updates sometimes take longer than usual due to factors such as waiting for GPS acquisition.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/ios/notifications/sounds/index.html b/docs/ecosystem/ios/notifications/sounds/index.html new file mode 100644 index 0000000000..e3a2088b11 --- /dev/null +++ b/docs/ecosystem/ios/notifications/sounds/index.html @@ -0,0 +1,512 @@ + + + + + + + + + Notification Sounds - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Notification Sounds +

+
+
+

Adding a custom sound to a notification allows you to easily identify the notification without even looking at your device. Home Assistant for iOS comes with some notification sounds pre-installed but you can also upload your own.

+

Here is an example notification that uses one of the pre-installed sounds.

+
- alias: Notify iOS app
+  trigger:
+    ...
+  action:
+    service: notify.ios_<your_device_id_here>
+    data:
+      message: “Something happened at home!”
+      data:
+        push:
+          sound: "US-EN-Morgan-Freeman-Roommate-Is-Arriving.wav"
+
+
+

Notes:

+
    +
  • You must use the full filename in the payload (including extension).
  • +
+

Custom push notification sounds

+

The app allows you to use your own custom sounds in push notifications. The sounds must be formatted following [Apple’s requirements][sound-requirements]. You set the filename of the sound in the notification payload. To add sounds:

+
    +
  1. Connect the device to a PC or Mac running the latest version of iTunes.
  2. +
  3. Go to the device in iTunes.
  4. +
  5. Select “Apps” on the left sidebar.
  6. +
  7. Scroll down until you see the section labeled “File Sharing”.
  8. +
  9. Select Home Assistant.
  10. +
  11. Drag and drop properly formatted sounds.
  12. +
  13. Click Sync in the lower right.
  14. +
  15. Once sync is complete, disconnect the device from the computer.
  16. +
  17. On your iOS device, open the Home Assistant app.
  18. +
  19. Go to Settings -> Notification Settings.
  20. +
  21. Select “Import sounds from iTunes”.
  22. +
+

Assuming that you correctly formatted the sounds they are now available to use in push notifications.

+

Notes:

+
    +
  • Please note that due to a bug in iOS 10 you may need to restart your entire device before notification sounds can be played. This should hopefully be fixed by Apple soon.
  • +
  • Uploading a file with the same name as an existing one will overwrite the original.
  • +
  • You can view what sounds are installed on each device by inspecting the ios.conf file in your configuration directory. They are listed in the pushSounds array.
  • +
+

Preinstalled notification sounds

+
US-EN-Alexa-Back-Door-Opened.wav
+US-EN-Alexa-Back-Door-Unlocked.wav
+US-EN-Alexa-Basement-Door-Opened.wav
+US-EN-Alexa-Basement-Door-Unlocked.wav
+US-EN-Alexa-Boyfriend-Is-Arriving.wav
+US-EN-Alexa-Daughter-Is-Arriving.wav
+US-EN-Alexa-Front-Door-Opened.wav
+US-EN-Alexa-Front-Door-Unlocked.wav
+US-EN-Alexa-Garage-Door-Opened.wav
+US-EN-Alexa-Girlfriend-Is-Arriving.wav
+US-EN-Alexa-Good-Morning.wav
+US-EN-Alexa-Good-Night.wav
+US-EN-Alexa-Husband-Is-Arriving.wav
+US-EN-Alexa-Mail-Has-Arrived.wav
+US-EN-Alexa-Motion-At-Back-Door.wav
+US-EN-Alexa-Motion-At-Front-Door.wav
+US-EN-Alexa-Motion-Detected-Generic.wav
+US-EN-Alexa-Motion-In-Back-Yard.wav
+US-EN-Alexa-Motion-In-Basement.wav
+US-EN-Alexa-Motion-In-Front-Yard.wav
+US-EN-Alexa-Motion-In-Garage.wav
+US-EN-Alexa-Patio-Door-Opened.wav
+US-EN-Alexa-Patio-Door-Unlocked.wav
+US-EN-Alexa-Smoke-Detected-Generic.wav
+US-EN-Alexa-Smoke-Detected-In-Basement.wav
+US-EN-Alexa-Smoke-Detected-In-Garage.wav
+US-EN-Alexa-Smoke-Detected-In-Kitchen.wav
+US-EN-Alexa-Son-Is-Arriving.wav
+US-EN-Alexa-Water-Detected-Generic.wav
+US-EN-Alexa-Water-Detected-In-Basement.wav
+US-EN-Alexa-Water-Detected-In-Garage.wav
+US-EN-Alexa-Water-Detected-In-Kitchen.wav
+US-EN-Alexa-Welcome-Home.wav
+US-EN-Alexa-Wife-Is-Arriving.wav
+US-EN-Daisy-Back-Door-Motion.wav
+US-EN-Daisy-Back-Door-Open.wav
+US-EN-Daisy-Front-Door-Motion.wav
+US-EN-Daisy-Front-Door-Open.wav
+US-EN-Daisy-Front-Window-Open.wav
+US-EN-Daisy-Garage-Door-Open.wav
+US-EN-Daisy-Guest-Bath-Leak.wav
+US-EN-Daisy-Kitchen-Sink-Leak.wav
+US-EN-Daisy-Kitchen-Window-Open.wav
+US-EN-Daisy-Laundry-Room-Leak.wav
+US-EN-Daisy-Master-Bath-Leak.wav
+US-EN-Daisy-Master-Bedroom-Window-Open.wav
+US-EN-Daisy-Office-Window-Open.wav
+US-EN-Daisy-Refrigerator-Leak.wav
+US-EN-Daisy-Water-Heater-Leak.wav
+US-EN-Morgan-Freeman-Back-Door-Closed.wav
+US-EN-Morgan-Freeman-Back-Door-Locked.wav
+US-EN-Morgan-Freeman-Back-Door-Opened.wav
+US-EN-Morgan-Freeman-Back-Door-Unlocked.wav
+US-EN-Morgan-Freeman-Basement-Door-Closed.wav
+US-EN-Morgan-Freeman-Basement-Door-Locked.wav
+US-EN-Morgan-Freeman-Basement-Door-Opened.wav
+US-EN-Morgan-Freeman-Basement-Door-Unlocked.wav
+US-EN-Morgan-Freeman-Boss-Is-Arriving.wav
+US-EN-Morgan-Freeman-Boyfriend-Is-Arriving.wav
+US-EN-Morgan-Freeman-Cleaning-Supplies-Closet-Opened.wav
+US-EN-Morgan-Freeman-Coworker-Is-Arriving.wav
+US-EN-Morgan-Freeman-Daughter-Is-Arriving.wav
+US-EN-Morgan-Freeman-Friend-Is-Arriving.wav
+US-EN-Morgan-Freeman-Front-Door-Closed.wav
+US-EN-Morgan-Freeman-Front-Door-Locked.wav
+US-EN-Morgan-Freeman-Front-Door-Opened.wav
+US-EN-Morgan-Freeman-Front-Door-Unlocked.wav
+US-EN-Morgan-Freeman-Garage-Door-Closed.wav
+US-EN-Morgan-Freeman-Garage-Door-Opened.wav
+US-EN-Morgan-Freeman-Girlfriend-Is-Arriving.wav
+US-EN-Morgan-Freeman-Good-Morning.wav
+US-EN-Morgan-Freeman-Good-Night.wav
+US-EN-Morgan-Freeman-Liquor-Cabinet-Opened.wav
+US-EN-Morgan-Freeman-Motion-Detected.wav
+US-EN-Morgan-Freeman-Motion-In-Basement.wav
+US-EN-Morgan-Freeman-Motion-In-Bedroom.wav
+US-EN-Morgan-Freeman-Motion-In-Game-Room.wav
+US-EN-Morgan-Freeman-Motion-In-Garage.wav
+US-EN-Morgan-Freeman-Motion-In-Kitchen.wav
+US-EN-Morgan-Freeman-Motion-In-Living-Room.wav
+US-EN-Morgan-Freeman-Motion-In-Theater.wav
+US-EN-Morgan-Freeman-Motion-In-Wine-Cellar.wav
+US-EN-Morgan-Freeman-Patio-Door-Closed.wav
+US-EN-Morgan-Freeman-Patio-Door-Locked.wav
+US-EN-Morgan-Freeman-Patio-Door-Opened.wav
+US-EN-Morgan-Freeman-Patio-Door-Unlocked.wav
+US-EN-Morgan-Freeman-Roommate-Is-Arriving.wav
+US-EN-Morgan-Freeman-Searching-For-Car-Keys.wav
+US-EN-Morgan-Freeman-Setting-The-Mood.wav
+US-EN-Morgan-Freeman-Smartthings-Detected-A-Flood.wav
+US-EN-Morgan-Freeman-Smartthings-Detected-Carbon-Monoxide.wav
+US-EN-Morgan-Freeman-Smartthings-Detected-Smoke.wav
+US-EN-Morgan-Freeman-Smoke-Detected-In-Basement.wav
+US-EN-Morgan-Freeman-Smoke-Detected-In-Garage.wav
+US-EN-Morgan-Freeman-Smoke-Detected-In-Kitchen.wav
+US-EN-Morgan-Freeman-Someone-Is-Arriving.wav
+US-EN-Morgan-Freeman-Son-Is-Arriving.wav
+US-EN-Morgan-Freeman-Starting-Movie-Mode.wav
+US-EN-Morgan-Freeman-Starting-Party-Mode.wav
+US-EN-Morgan-Freeman-Starting-Romance-Mode.wav
+US-EN-Morgan-Freeman-Turning-Off-All-The-Lights.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Air-Conditioner.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Bar-Lights.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Chandelier.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Family-Room-Lights.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Hallway-Lights.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Kitchen-Light.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Light.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Lights.wav
+US-EN-Morgan-Freeman-Turning-Off-The-Mood-Lights.wav
+US-EN-Morgan-Freeman-Turning-Off-The-TV.wav
+US-EN-Morgan-Freeman-Turning-On-The-Air-Conditioner.wav
+US-EN-Morgan-Freeman-Turning-On-The-Bar-Lights.wav
+US-EN-Morgan-Freeman-Turning-On-The-Chandelier.wav
+US-EN-Morgan-Freeman-Turning-On-The-Family-Room-Lights.wav
+US-EN-Morgan-Freeman-Turning-On-The-Hallway-Lights.wav
+US-EN-Morgan-Freeman-Turning-On-The-Kitchen-Light.wav
+US-EN-Morgan-Freeman-Turning-On-The-Light.wav
+US-EN-Morgan-Freeman-Turning-On-The-Lights.wav
+US-EN-Morgan-Freeman-Turning-On-The-Mood-Lights.wav
+US-EN-Morgan-Freeman-Turning-On-The-TV.wav
+US-EN-Morgan-Freeman-Vacate-The-Premises.wav
+US-EN-Morgan-Freeman-Water-Detected-In-Basement.wav
+US-EN-Morgan-Freeman-Water-Detected-In-Garage.wav
+US-EN-Morgan-Freeman-Water-Detected-In-Kitchen.wav
+US-EN-Morgan-Freeman-Welcome-Home.wav
+US-EN-Morgan-Freeman-Wife-Is-Arriving.wav
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/nginx/index.html b/docs/ecosystem/nginx/index.html new file mode 100644 index 0000000000..874f41826e --- /dev/null +++ b/docs/ecosystem/nginx/index.html @@ -0,0 +1,441 @@ + + + + + + + + + NGINX - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ NGINX +

+
+
+

Using NGINX as a proxy for Home Assistant allows you to serve Home Assistant securely over standard ports. This configuration file and instructions will walk you through setting up Home Assistant over a secure connection.

+

1. Get a domain name forwarded to your IP

+

Chances are, you have a dynamic IP address (your ISP changes your address periodically). If this is true, you can use a Dynamic DNS service to obtain a domain and set it up to update with you IP. If you purchase your own domain name, you will be able to easily get a trusted SSL certificate later.

+

2 Install nginx on your server

+

This will vary depending on your OS. Check out Google for this. After installing, ensure that NGINX is not running.

+

+You will at least need nginx >= 1.3.13, as WebSocket support is required for the reverse proxy. +

+

3. Obtain an SSL certificate

+

There are two ways of obtaining an SSL certificate.

+

Using Let’s Encrypt

+

If you purchased your own domain, you can use https://letsencrypt.org/ to obtain a free, publicly trusted SSL certificate. This will allow you to work with services like IFTTT. Download and install per the instructions online and get a certificate using the following command.

+
$ sudo ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com
+
+
+

Instead of example.com, use your domain. You will need to renew this certificate every 90 days.

+

Using openssl

+

If you do not own your own domain, you may generate a self-signed certificate. This will not work with IFTTT, but it will encrypt all of your Home Assistant traffic.

+
$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999
+$ openssl rsa -in key.pem -out key.pem
+$ sudo cp key.pem cert.pem /etc/nginx/ssl
+$ sudo chmod 600 /etc/nginx/ssl/key.pem /etc/nginx/ssl/cert.pem
+$ sudo chown root:root /etc/nginx/ssl/key.pem /etc/nginx/ssl/cert.pem
+
+
+

4. Create dhparams file

+

As a fair warning, this file will take a while to generate.

+
$ cd /etc/nginx/ssl
+$ sudo openssl dhparam -out dhparams.pem 2048
+
+
+

5. Install configuration file in nginx.

+

Create a new file /etc/nginx/sites-available/hass and copy the configuration file at the bottom of the page into it.

+

+Some Linux distributions (including CentOS and Fedora) will not have the /etc/nginx/sites-available/ directory. In this case, remove the default server {} block from the /etc/nginx/nginx.conf file and paste the contents from the bottom of the page in its place. If doing this, proceed to step 7. +

+

6. Enable the Home Assistant configuration.

+
$ cd /etc/nginx/sites-enabled
+$ sudo unlink default
+$ sudo ln ../sites-available/hass default
+
+
+

7. Start NGINX.

+

Double check this configuration to ensure all settings are correct and start nginx.

+

8. Port forwarding.

+

Forward ports 443 and 80 to your server on your router. Do not forward port 8123.

+

NGINX Config

+
map $http_upgrade $connection_upgrade {
+    default upgrade;
+    ''      close;
+}
+
+server {
+    # Update this line to be your domain
+    server_name example.com;
+
+    # These shouldn't need to be changed
+    listen [::]:80 default_server ipv6only=off;
+    return 301 https://$host$request_uri;
+}
+
+server {
+    # Update this line to be your domain
+    server_name example.com;
+
+    # Ensure these lines point to your SSL certificate and key
+    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
+    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
+    # Use these lines instead if you created a self-signed certificate
+    # ssl_certificate /etc/nginx/ssl/cert.pem;
+    # ssl_certificate_key /etc/nginx/ssl/key.pem;
+
+    # Ensure this line points to your dhparams file
+    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
+
+
+    # These shouldn't need to be changed
+    listen [::]:443 default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here
+    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
+    ssl on;
+    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
+    ssl_prefer_server_ciphers on;
+    ssl_session_cache shared:SSL:10m;
+
+    proxy_buffering off;
+
+    location / {
+        proxy_pass http://localhost:8123;
+        proxy_set_header Host $host;
+        proxy_redirect http:// https://;
+        proxy_http_version 1.1;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection $connection_upgrade;
+    }
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/nginx_subdomain/index.html b/docs/ecosystem/nginx_subdomain/index.html new file mode 100644 index 0000000000..952edfa6d5 --- /dev/null +++ b/docs/ecosystem/nginx_subdomain/index.html @@ -0,0 +1,435 @@ + + + + + + + + + NGINX Configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ NGINX Configuration +

+
+
+

This example demonstrates how you can configure NGINX to act as a proxy for Home Assistant.

+

This is useful if you want to have:

+
    +
  • a subdomain redirecting to your Home Assistant instance
  • +
  • several subdomain for several instance
  • +
  • HTTPS redirection
  • +
+

Subdomain

+

So you already have a working NGINX server available at example.org. Your Home Assistant is correctly working on this web server and available at http://localhost:8123

+

To be able to access to your Home Assistant instance by using https://home.example.org, create file /etc/nginx/sites-enabled/homeassistant (or symlink via /etc/nginx/sites-available) and add the following:

+
server {
+    listen       443 ssl;
+    server_name  home.example.org;
+    
+    ssl on;
+    ssl_certificate /etc/nginx/ssl/home.example.org/home.example.org-bundle.crt;
+    ssl_certificate_key /etc/nginx/ssl/home.example.org/home.example.org.key;
+    ssl_prefer_server_ciphers on;
+
+    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 {
+        proxy_pass http://localhost:8123/api/websocket;
+        proxy_set_header Host $host;
+
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+
+    }
+}
+
+
+

If you don’t want HTTPS, you can change listen 443 ssl to listen 80 or better, consider redirecting all HTTP to HTTPS. See further down.

+

Multiple Instance

+

You already have Home Assistant running on http://localhost:8123 and available at home.example.org as describe before. The configuration file for this Home Assistant is available in /home/alice/.homeassistant/configuration.yaml.

+

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/
  • +
+

In both solution, change port number used by modifying configuration.yaml file.

+
http:
+  server_port: 8124
+  ...
+
+
+

Start Home Assistant: Now, you have another instance running on http://localhost:8124

+

To access this instance by using https://countryside.example.org create the file /etc/nginx/sites-enabled/countryside.example.org (or symlink via /etc/nginx/sites-available) and add the following:

+
server {
+    listen       443 ssl;
+    server_name  countryside.example.org;
+    
+    ssl on;
+    ssl_certificate /etc/nginx/ssl/countryside.example.org/countryside.example.org-bundle.crt;
+    ssl_certificate_key /etc/nginx/ssl/countryside.example.org/countryside.example.org.key;
+    ssl_prefer_server_ciphers on;
+
+    location / {
+        proxy_pass http://localhost:8124/;
+        proxy_set_header Host $host;
+    }
+
+    location /api/websocket {
+        proxy_pass http://localhost:8124/api/websocket;
+        proxy_set_header Host $host;
+
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+
+    }
+}
+
+
+

HTTP to HTTPS redirection

+

Add to your /etc/nginx/sites-enabled/default

+
server {
+    listen       80 default_server;
+    server_name  example.tld;
+
+    return 301 https://$host$request_uri;
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/notebooks/api/index.html b/docs/ecosystem/notebooks/api/index.html new file mode 100644 index 0000000000..e5eb917487 --- /dev/null +++ b/docs/ecosystem/notebooks/api/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Home Assistant Python API - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/notebooks/database/index.html b/docs/ecosystem/notebooks/database/index.html new file mode 100644 index 0000000000..a2f88291a6 --- /dev/null +++ b/docs/ecosystem/notebooks/database/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Database - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/notebooks/graph/index.html b/docs/ecosystem/notebooks/graph/index.html new file mode 100644 index 0000000000..19323950f3 --- /dev/null +++ b/docs/ecosystem/notebooks/graph/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Graph - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/notebooks/index.html b/docs/ecosystem/notebooks/index.html new file mode 100644 index 0000000000..1191814b1c --- /dev/null +++ b/docs/ecosystem/notebooks/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Jupyter Notebooks - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Jupyter Notebooks +

+
+
+

The Jupyter Notebooks allows you to create and share documents that contain live code, equations, visualizations, and explanatory text directly in your browser. The web application what is formerly known as the IPython Notebook supports over 40 programming languages.

+

Visit https://try.jupyter.org/ to get a preview before you install it locally.

+

+ +

+

nbviewer is rendering our notebooks online. GitHub is creating a preview as well.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/notebooks/installation/index.html b/docs/ecosystem/notebooks/installation/index.html new file mode 100644 index 0000000000..5a43ca5db9 --- /dev/null +++ b/docs/ecosystem/notebooks/installation/index.html @@ -0,0 +1,368 @@ + + + + + + + + + Installation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation +

+
+
+

To run Jupyter Notebooks locally, an installation of Jupyter is needed. Consider to run Jupyter in a virtualenv.

+
$ pip3 install jupyter matplotlib
+
+
+

+Certain notebooks hosted in the Home Assistant notebooks repository require access to a running Home Assistant instance or parts of a Home Assistant installation. If you want to run those notebooks, install Home Assistant with $ pip3 install homeassistant as well. +

+

Now you are able to start the application.

+
$ jupyter notebook
+[I 17:22:18.081 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
+[I 17:22:18.921 NotebookApp] Serving notebooks from local directory: /home/fabaff/home-assistant
+[I 17:22:18.921 NotebookApp] 0 active kernels 
+[I 17:22:18.921 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
+[I 17:22:18.922 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
+
+
+

Open http://localhost:8888/ in your browser. Press “New” -> “Python3” to open a new notebook.

+

+ +

+

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

+

+ +

+

The downloadable version of this notebook is available in the Home Assistant notebooks repository.

+

As you can see is the workflow very similar to working directly with a Python shell. One advantage is that you can go back and forth as you please and save your work.

+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/notebooks/stats/index.html b/docs/ecosystem/notebooks/stats/index.html new file mode 100644 index 0000000000..e2d50ca19f --- /dev/null +++ b/docs/ecosystem/notebooks/stats/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Statistics - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/scenegen/index.html b/docs/ecosystem/scenegen/index.html new file mode 100644 index 0000000000..665d5eb1ff --- /dev/null +++ b/docs/ecosystem/scenegen/index.html @@ -0,0 +1,458 @@ + + + + + + + + + SceneGen - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ SceneGen +

+
+
+

Scenegen is a scene generation tool for Home Assistant home automation software. It creates scenes by example, by reading the current states of devices and outputting a corresponding scene. Scenegen is written in python using Home Assistant’s RESTFul API so can be run from anywhere. It currently supports lights and switches only.

+

Installation

+

Clone the Repository

+

Clone the scenegen repository to the current local directory on your machine.

+
$ git clone https://github.com/home-assistant/scenegen.git
+
+
+

Change your working directory to the repository root. Moving forward, we will be working from this directory.

+
$ cd scenegen
+
+
+

Install Prerequisites

+

Before running SceneGen you will need to add some python prerequisites:

+
$ sudo pip3 install configparser
+
+
+

You should now be ready to run scenegen

+

Basic Operation

+
usage: scenegen [-h] [-k KEY] [-s SCENENAME] [-m MAPFILE] [-f FILTER]
+                [-c {xy_color,rgb_color,color_temp,color_name}] [-t TYPES]
+                url
+
+positional arguments:
+  url                   url for Home Assistant instance
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -k KEY, --key KEY     API Key of Home Assistant instance
+  -s SCENENAME, --scenename SCENENAME
+                        Name of scene to generate
+  -m MAPFILE, --mapfile MAPFILE
+                        Name of mapfile to enable device filtering
+  -f FILTER, --filter FILTER
+                        Comma separated list of device collections as defined
+                        in mapfile
+  -c {xy_color,rgb_color,color_temp,color_name}, --colortype {xy_color,rgb_color,color_temp,color_name}
+                        color type to use
+  -t TYPES, --types TYPES
+                        list of device types to include
+
+
+
+

For basic operation just supply the url and optionally the api key (using the –key option) on the command line and scenegen will output a list of all lights and switches with their attributes. Optionally use the --scenename flag to explicitly set the scenename.

+
$ ./scenegen.py https://<some url> -k <some api key>
+name: My New Scene
+entities:
+  light.bedroom:
+    state: on
+    brightness: 28
+  light.kitchen:
+    state: off
+  light.living_room:
+    state: off
+  light.bedside:
+    state: on
+    brightness: 125
+    color_temp: 412
+  light.office_level_29:
+    state: on
+    brightness: 28
+
+
+

This output can be cut and pasted into your configuration.yaml file as required (ensuring correct indentatation of course).

+

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

+

Advanced Usage

+

For a more advanced way to use the output try the following. In configuration.yaml add the following line:

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

+
$ ./scenegen.py https://<some url> -k <some api key> > scenes/my_new_scene.yaml
+
+
+

This will create a new scene called my_new_scene which will automatically be picked up by Home Assistant on the next restart.

+

Colors

+

Scenegen allows colors to be captured, and in fact Home Assistant light entities store up to 4 different ways of specifying the colors. This is redundant for creating scenes so Scenegen picks 1 and goes with it. The default is color_temp but you can change this with the --colortype flag, supported options are xy_color, rgb_color, color_temp and color_name.

+

Types

+

By default, Scenegen will list all lights and switches. To restrict the device type use the --types option and supply a comma separated list (no spaces) of types to output. e.g.:

+
./scenegen.py https://<some url> -k <some api key> --types light,switch
+
+
+

or:

+
./scenegen.py https://<some url> -k <some api key> --types light
+
+
+

This will make more sense as and when more types are added.

+

Maps and Filters

+

Maps allow you to specify and label various subsets of devices that you want to work on together. A mapfile is specified using the --mapfile option and is a .ini style file consisting of section headers and entries. The section headers specify a region or zone or otherwise organized selection of entities you want to filter on, and it is mandatory to have at least one. If you create a map file like this:

+
[entities]
+light.living_room:
+light.dining_room:
+
+
+

The trailing colons are necessary to prevent parsing errors for including just keys, as opposed to key=value so just go with it - it reminds us of YAML ;)

+

If you run scenegen with the --mapfile argument pointing to that file you will only get output for the listed entities (the name of the section is irrelevant if not using the --filter option). A more complex mapfile might look like this:

+
[Outside]
+light.porch:
+switch.path_lights:
+[Living Room]
+light.living_room_front:
+light.living_room_back:
+[Bedroom]
+light.bedside:
+
+
+

Again, if you run with that map file it will output all of the entities listed, however you now have the possibility of restricting output devices based on the sections they are in, using the --filter option and supplying a comma separated list of sections you want to include, for instance:

+
./scenegen.py https://<some url> -k <some api key> --mapfile map.cfg --filter "Outside,Living Room"
+
+
+

The intended use of the mapfile and filter is that you create a map of all your devices and organize them into zones that you are interested in creating scenes for and use the filter to limit output to that zone. For instance you might want to create 3 or 4 scenes for your living room, and once the map is set up you can easily do so without the addition of unwanted devices.

+

Updating SceneGen

+

To update SceneGen after a new version is released, just run the following command to update your copy:

+
$ git pull
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/synology/index.html b/docs/ecosystem/synology/index.html new file mode 100644 index 0000000000..9fa56db8d8 --- /dev/null +++ b/docs/ecosystem/synology/index.html @@ -0,0 +1,353 @@ + + + + + + + + + Synology - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Synology +

+
+
+

Synology NAS are the perfect companion to running Home Assistant.

+

HTTP Configuration

+

Synology will require some extra configuration to get the Home Assistant frontend working.

+
    +
  • Copy the Home Assistant specific Reverse Proxy settings from the existing /etc/nginx/app.d/server.ReverseProxy.conf to /usr/local/etc/nginx/conf.d/http.HomeAssistant.conf
  • +
  • Include these lines in the location declaration:
  • +
+
    proxy_set_header Upgrade $http_upgrade;
+    proxy_set_header Connection "upgrade";
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/ecosystem/tor/index.html b/docs/ecosystem/tor/index.html new file mode 100644 index 0000000000..0c376db2ee --- /dev/null +++ b/docs/ecosystem/tor/index.html @@ -0,0 +1,401 @@ + + + + + + + + + Tor Onion Service Configuration - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Tor Onion Service Configuration +

+
+
+

This article guides your through the configuration of Tor to provide a secure access to your Home Assistant instance as an Onion site, through Tor’s Hidden Service feature, from remote. With this enabled, you do not need to open your firewall ports or setup HTTPS to enable secure remote access.

+

This is useful if you want to have:

+
    +
  • Access your Home Assistant instance remotely without opening a firewall port or setting up a VPN.
  • +
  • Don’t want to or know how to get an SSL/TLS certificate and HTTPS configuration setup.
  • +
  • Want to block attackers from even being able to access/scan your port and server at all.
  • +
  • Want to block anyone from knowing your home IP address and seeing your traffic to your Home Assistant.
  • +
+

Hidden Services and Onion Sites

+

Tor allows clients and relays to offer hidden services. That is, you can offer a web server, SSH server, etc., without revealing your IP address to its users. In fact, because you don’t use any public address, you can run a hidden service from behind your firewall. Learn more about Hidden Services on the Tor Project website.

+

Onion sites are websites that run on a Tor Hidden Service node. “dot onion” sites are an IETF recognized special use domain name.

+

Setting up Tor on your Home Assistant

+

First, install Tor. On a Debian-based system, you can install the package easily:

+
$ sudo apt-get install tor
+
+
+

You can find more instructions for downloading and installing Tor on other platforms on the Tor Project Download Page.

+

Next, modify Tor’s main configuration file /etc/tor/torrc to include the following lines:

+
############### This section is just for location-hidden services ###
+
+## Once you have configured a hidden service, you can look at the
+## contents of the file ".../hidden_service/hostname" for the address
+## to tell people.
+...
+HiddenServiceDir /var/lib/tor/homeassistant/
+HiddenServicePort 80 127.0.0.1:8123
+HiddenServiceAuthorizeClient stealth haremote1
+...
+
+
+

The “stealth” entry above ensures traffic to and from your Home Assistant instance over Tor, is hidden even from other nodes on the Tor network. The haremote1 value is a generic client name entry that you can modify as you please.

+

Then, restart Tor:

+
$ sudo systemctl restart tor
+
+
+

Then read the new generated authentication cookie from the Tor-generated hostname file:

+
$ sudo more /var/lib/tor/homeassistant/hostname
+
+
+

The output of that command should look something like this, but with your own unique “dot onion” domain and authentication cookie:

+
abcdef1234567890.onion ABCDEF1122334455667789 # client: haremote1
+
+
+

You are now done with the Home Assistant Tor server configuration. Make sure your Home Assistant instance is running, and now you can move to client configuration.

+

Tor Client Access Setup

+

Using this setup, you can access your Home Assistant instance over Tor from your laptop or mobile device, using Tor Browser and other software.

+

Add the authentication cookie to your torrc client configuration on your laptop or mobile device. Using the sample values from above, it would look like this:

+
HidServAuth abcdef1234567890.onion ABCDEF1122334455667789
+
+
+

For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: <tor browser install directory>/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.

+

For Orbot: Tor on Android, add it in Orbot -> Menu -> Settings to the “Torrc Custom Config” entry. Restart Orbot, and then use the Orfox browser app, and browse to the “dot onion” site name to access your Home Assistant instance. You can also use Orbot’s VPN mode, to enable Tor access from any application on your device, such as Tasker or Owntracks.

+

On iOS, we have not fully tested this yet, but you should be able to add custom torrc entries on Onion Browser, Red Onion or TOBY browsers, all available in the iTunes App Store.

+

Some More Advanced Ideas

+

With this configuration, only you can access your Home Assistant instance Onion site through Tor, and no one else. You can share the authentication cookie with multiple devices and users, or you can generate a unique one for each - up to you! If you have multiple, say for an industrial, business or corporate configuration, this would provide an easy way to revoke access to a specific user or device.

+

If you always access your Home Assistant instance via Tor, you can easily run this on an isolated “IoT” network segment at your install site, keeping your internal home network traffic separate from any potentially compromised devices (like cheap “smart” lightbulbs with backdoors!).

+

You could also use Tor as a means to connect your Home Assistant instance to a remote device, sensor or other service that you do not want to or connect provide a direct, open IP connection to. Again, Tor provides authenticated and confidential routing (aka “privacy and encryption”) by default, without having to setup TLS/SSL or VPN. It is just important to secure IoT nodes within your network, as it is to secure remote access!

+

As mentioned, with Orbot on Android, you can enable a “full device” VPN mode, that allows any app you have to tunnel through Tor, even if it is not Tor or proxy aware. This means you should be able to enter your “dot onion” Onion site address into any app you want to access to your Home Assistant instance, and it should work.

+
+
+ +
+
+ + + + + + + diff --git a/docs/frontend/browsers/index.html b/docs/frontend/browsers/index.html new file mode 100644 index 0000000000..5374541d43 --- /dev/null +++ b/docs/frontend/browsers/index.html @@ -0,0 +1,561 @@ + + + + + + + + + Browsers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

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

+

Microsoft Windows

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrowserReleaseStateComments
Internet Explorer (IE)11Not supportedDoes not support promises.
Microsoft Edgedeli. Win 10worksStreaming updates not working.
Chrome61.0.3163.100works 
Firefox57.0works 
Iridium48.2works 
Opera42.0.2393.351works 
+

macOS

+ + + + + + + + + + + + + + + + + +
BrowserReleaseStateComments
Safari worksMap is fixed since 0.51.
+

Linux

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrowserReleaseStateComments
Firefox57.0works 
Midori0.5.11works 
Chromium63.0.3239.108works 
Conkeror1.0.2works 
Tor Browser7.0.8works 
Konqueror unknown 
Uzbl0.9.0works 
Opera42.0.2393.351works 
Lynx2.12failsloads empty page
elinks failspage with manifest and import
w3m0.5.3failsdisplay the icon shown while loading HA
Epiphany3.18.5works 
surf0.7works 
+

Android

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrowserReleaseStateComments
Chrome50.0.2661.89worksCan also be added to desktop
Firefox46.0.1worksCan also be added to desktop
Opera42.0.2246.112628worksCan also be added to desktop
+

iOS

+ + + + + + + + + + + + + + + + + + + + + + + +
BrowserReleaseStateComments
Safari worksCan 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.

+
+
+ +
+
+ + + + + + + diff --git a/docs/frontend/index.html b/docs/frontend/index.html new file mode 100644 index 0000000000..d9b44a1814 --- /dev/null +++ b/docs/frontend/index.html @@ -0,0 +1,348 @@ + + + + + + + + + Frontend of Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/frontend/mobile/index.html b/docs/frontend/mobile/index.html new file mode 100644 index 0000000000..3baa4dd26e --- /dev/null +++ b/docs/frontend/mobile/index.html @@ -0,0 +1,363 @@ + + + + + + + + + Getting started on Mobile - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Getting started on Mobile +

+
+
+

Home Assistant has a companion app for iOS.

+

On both Android and iOS, you can add the Home Assistant “web app” to your homescreen as if it was native (Home Assistant leverages the W3C manifest.json support).

+

Android

+
    +
  1. Open Chrome
  2. +
  3. Navigate to your Home Assistant instance
  4. +
  5. Tap on the Menu icon (three vertical bars)
  6. +
  7. Tap on Add to Homescreen
  8. +
  9. A dialog will popup; tap on Add
  10. +
+

+ +

+

iOS

+
    +
  1. Open Safari
  2. +
  3. Navigate to your Home Assistant instance
  4. +
  5. Tap on the Share icon in the middle of the bottom toolbar
  6. +
  7. Tap on “Add to Home Screen”
  8. +
  9. A dialog will popup; tap on Add
  10. +
+
+
+ +
+
+ + + + + + + diff --git a/docs/frontend/webserver/index.html b/docs/frontend/webserver/index.html new file mode 100644 index 0000000000..f7ea74bede --- /dev/null +++ b/docs/frontend/webserver/index.html @@ -0,0 +1,366 @@ + + + + + + + + + Web server fingerprint - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Web server fingerprint +

+
+
+

It was only a matter of time until the first queries for tools like https://www.shodan.io to search for Home Assistant instances showed up.

+

To get an idea about how your Home Assistant instance looks to a network scanner, you can use nmap. The nmap tool is already available if you are using the nmap device tracker.

+
$ nmap -sV -p 8123 --script=http-title,http-headers 192.168.1.3
+
+Starting Nmap 7.12 ( https://nmap.org ) at 2016-10-06 10:01 CEST
+Nmap scan report for 192.168.1.3 (192.168.1.3)
+Host is up (0.00011s latency).
+PORT     STATE SERVICE VERSION
+8123/tcp open  http    CherryPy wsgiserver
+| http-headers: 
+|   Content-Type: text/html; charset=utf-8
+|   Content-Length: 4309
+|   Connection: close
+|   Date: Thu, 06 Oct 2016 08:01:31 GMT
+|   Server: Home Assistant
+|
+|_  (Request type: GET)
+|_http-server-header: Home Assistant
+|_http-title: Home Assistant
+
+Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
+Nmap done: 1 IP address (1 host up) scanned in 6.70 seconds
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/glossary/index.html b/docs/glossary/index.html new file mode 100644 index 0000000000..644bfec15a --- /dev/null +++ b/docs/glossary/index.html @@ -0,0 +1,417 @@ + + + + + + + + + Glossary - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Glossary +

+
+
+

The glossary covers terms which are used around Home Assistant.

+
    +
  • + Action:

    Actions are events that fires once all triggers and conditions have been met.

    +
  • +
  • + Automation:

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

    +
  • +
  • + Component:

    Components provide the core logic for the functionality in Home Assistant. Like notify provides sending notifications.

    +
  • +
  • + Condition:

    Conditions are an optional part of an automation that will prevent an action from firing if they are not met.

    +
  • +
  • + Cookbook:

    The Cookbook contains a set of configuration examples of Home Assistant from the community.

    +
  • +
  • + Customize:

    Customization allows you to overwrite the default parameter of your devices in the configuration.

    +
  • +
  • + Device:

    A device is usually a physical unit which can do or observe something.

    +
  • +
  • + Discovery:

    Discovery is the automatic setup of zeroconf/mDNS and uPnP devices after they are discovered.

    +
  • +
  • + Entity:

    An entity is the representation of a single device, unit or web service.

    +
  • +
  • + Event:

    An event is when something happens.

    +
  • +
  • + Frontend:

    The frontend is a necessary component for the UI, it is also where you can define your themes.

    +
  • +
  • + Group:

    Groups are a way to organize your entities into a single unit.

    +
  • +
  • + HADashboard:

    HADashboard is a modular, skinnable dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing.

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

    +
  • +
  • + Hassbian:

    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.

    +
  • +
  • + Packages:

    Packages allow you to bundle different component configurations together.

    +
  • +
  • + Platform:

    Platforms make the connection to a specific software or hardware platform. For example, the pushbullet platform works with the service pushbullet.com to send notifications.

    +
  • +
  • + Scene:

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

    +
  • +
  • + Script:

    Scripts are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on.

    +
  • +
  • + Service:

    Services are called to perform actions.

    +
  • +
  • + Template:

    A template is an automation definition that can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions.

    +
  • +
  • + Trigger:

    A trigger is a set of values or conditions of a platform that are defined to cause an automation to run.

    +
  • +
  • + Zone:

    Zones are areas that can be used for presence detection.

    +
  • +
  • + hass:

    HASS or hass is often used as an abbreviation for Home Assistant. It is also the command line tool.

    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/hassbian/common-tasks/index.html b/docs/hassbian/common-tasks/index.html new file mode 100644 index 0000000000..118a81d004 --- /dev/null +++ b/docs/hassbian/common-tasks/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/hassbian/customization/index.html b/docs/hassbian/customization/index.html new file mode 100644 index 0000000000..0b91d32985 --- /dev/null +++ b/docs/hassbian/customization/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/hassbian/installation/index.html b/docs/hassbian/installation/index.html new file mode 100644 index 0000000000..a0e2af9ee5 --- /dev/null +++ b/docs/hassbian/installation/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/hassbian/integrations/index.html b/docs/hassbian/integrations/index.html new file mode 100644 index 0000000000..13344d6b88 --- /dev/null +++ b/docs/hassbian/integrations/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/hassbian/upgrading/index.html b/docs/hassbian/upgrading/index.html new file mode 100644 index 0000000000..7b63c20a4e --- /dev/null +++ b/docs/hassbian/upgrading/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000000..d5f47d7ed9 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,383 @@ + + + + + + + + + Documentation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/installation/archlinux/index.html b/docs/installation/archlinux/index.html new file mode 100644 index 0000000000..740a3dbd0e --- /dev/null +++ b/docs/installation/archlinux/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Installation on Arch Linux - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on Arch Linux +

+
+
+

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

+
$ sudo pacman -S python
+$ sudo pacman -S python-pip
+
+
+

and Home Assistant itself.

+
$ pip3 install homeassistant
+
+
+

Home Assistant is part of the AUR. This means that it can be installed with pacaur:

+
$ pacaur -S home-assistant
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/armbian/index.html b/docs/installation/armbian/index.html new file mode 100644 index 0000000000..43ee16c453 --- /dev/null +++ b/docs/installation/armbian/index.html @@ -0,0 +1,364 @@ + + + + + + + + + Installation on a Armbian system - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on a Armbian system +

+
+
+

armbian runs on a wide-variety of ARM development boards. Currently there are around 50 boards supported inclusive the OrangePi family, Cubieboard, Pine64, and Odroid.

+

Setup Python and pip

+
$ sudo apt-get update
+$ sudo apt-get install python3-dev python3-pip
+
+
+

Now that you installed python, there are two ways to install Home Assistant:

+
    +
  1. It is recommended to install Home Assistant in a virtual environment to avoid using root, using the VirtualEnv instructions
  2. +
  3. Alternatively, you can install Home Assistant for the user you created when first booting Armbian: +
    $ sudo pip3 install homeassistant
    +$ hass --open-ui
    +
    +
    +

    Running these commands will:

    +
  4. +
+
    +
  • Install Home Assistant
  • +
  • Launch Home Assistant and serve the web interface on http://localhost:8123
  • +
  • the configuration files will be created in /home/{user}/.homeassistant
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/centos/index.html b/docs/installation/centos/index.html new file mode 100644 index 0000000000..4eafd6861d --- /dev/null +++ b/docs/installation/centos/index.html @@ -0,0 +1,380 @@ + + + + + + + + + Installation on CentOS/RHEL - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on CentOS/RHEL +

+
+
+

To run Python 3.x on CentOS or RHEL (Red Hat Enterprise Linux), Software Collections needs to be activated first.

+

There are effort in progress to bring Python 3.4 to Extra Packages for Enterprise Linux (EPEL) which will allow you to follow the Fedora Instructions.

+

Using Software Collections

+

First of all install the software collection repository as root. For example, on CentOS:

+
$ yum install centos-release-scl
+
+
+

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:

+
$ scl enable rh-python35 bash
+$ 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.

+

You will need to enable the software collection each time you log on before you activate your virtual environment.

+

Systemd with Software Collections

+

To autostart Home Assistant using systemd follow the main instructions and adjust the template as follows:

+
[Unit]
+Description=Home Assistant
+After=network.target
+
+[Service]
+Type=simple
+User=homeassistant
+# Make sure the virtualenv Python binary is used
+Environment=VIRTUAL_ENV="/srv/homeassistant"
+Environment=PATH="$VIRTUAL_ENV/bin:$PATH"
+# ExecStart using software collection:
+ExecStart=/usr/bin/scl enable rh-python35 -- /srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant"
+
+[Install]
+WantedBy=multi-user.target
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/docker/index.html b/docs/installation/docker/index.html new file mode 100644 index 0000000000..cf1e19ab0a --- /dev/null +++ b/docs/installation/docker/index.html @@ -0,0 +1,509 @@ + + + + + + + + + Installation on Docker - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on Docker +

+
+
+

Installation with Docker is straightforward. Adjust the following command so that /path/to/your/config/ points at the folder where you want to store your config and run it:

+

Linux

+
$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
+
+
+

macOS

+

When using docker-ce (or boot2docker) on macOS, you are unable to map the local timezone to your Docker container (Docker issue). Instead of -v /etc/localtime:/etc/localtime:ro, just pass in the timezone environment variable when you launch the container, ex: -e "TZ=America/Los_Angeles". Replace “America/Los_Angeles” with your timezone.

+

If you wish to browse directly to http://localhost:8123 from your macOS host, meaning forward ports directly to the container, replace the --net=host switch with -p 8123:8123. More detail can be found in the docker forums.

+
$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -e "TZ=America/Los_Angeles" -p 8123:8123 homeassistant/home-assistant
+
+
+

Alternatively, docker-compose works with any recent release of docker-ce on macOS. Note that (further down this page) we provide an example docker-compose.yml however it differs from the docker run example above. To make the .yml directives match, you would need to make two changes: first add the equivalent ports: directive, then remove the network_mode: host section. This is because Port mapping is incompatible with network_mode: host:. More details can be found at [Docker networking docs] (https://docs.docker.com/engine/userguide/networking/#default-networks). Note also the /dev/tty* device name used by your Arduino etc. devices will differ from the Linux example, so the compose mount: may require updates.

+

Windows

+

When running Home Assistant in Docker on Windows, you may have some difficulty getting ports to map for routing (since the --net=host switch actually applies to the hypervisor’s network interface). To get around this, you will need to add port proxy ipv4 rules to your local Windows machine, like so (Replacing ‘192.168.1.10’ with whatever your Windows IP is, and ‘10.0.50.2’ with whatever your Docker container’s IP is):

+
netsh interface portproxy add v4tov4 listenaddress=192.168.1.10 listenport=8123 connectaddress=10.0.50.2 connectport=8123
+netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8123 connectaddress=10.0.50.2 connectport=8123
+
+
+

This will let you access your Home Assistant portal from http://localhost:8123, and if you forward port 8123 on your router to your machine IP, the traffic will be forwarded on through to the docker container.

+

Synology NAS

+

As Synology within DSM now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see https://www.synology.com/en-us/dsm/app_packages/Docker

+

The steps would be:

+
    +
  • Install “Docker” package on your Synology NAS
  • +
  • Launch Docker-app and move to “Registry”-section
  • +
  • Find “homeassistant/home-assistant” with registry and click on “Download”
  • +
  • Wait for some time until your NAS has pulled the image
  • +
  • Move to the “Image”-section of the Docker-app
  • +
  • Click on “Launch”
  • +
  • Choose a container-name you want (e.g. “homeassistant”)
  • +
  • Click on “Advanced Settings”
  • +
  • Set “Enable auto-restart” if you like
  • +
  • Within “Volume” click on “Add Folder” and choose either an existing folder or add a new folder. The “mount point” has to be “/config”, so that Home Assistant will use it for the configs and logs.
  • +
  • Within “Network” select “Use same network as Docker Host”
  • +
  • To ensure that Home Assistant displays the correct timezone go to the “Environment” tab and click the plus sign then add variable = TZ & value = Europe/London choosing your correct timezone
  • +
  • Confirm the “Advanced Settings”
  • +
  • Click on “Next” and then “Apply”
  • +
  • Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Synology NAS IP address - for example http://192.168.1.10:8123)
  • +
+

Remark: to update your Home Assistant on your Docker within Synology NAS, you just have to do the following:

+
    +
  • Go to the Docker-app and move to “Image”-section
  • +
  • Download the “homeassistant/home-assistant” image - don’t care, that it is already there
  • +
  • wait until the system-message/-notification comes up, that the download is finished (there is no progress bar)
  • +
  • Move to “Container”-section
  • +
  • Stop your container if it’s running
  • +
  • Right-click on it and select “Action”->”Clear”. You won’t lose any data, as all files are stored in your config-directory
  • +
  • Start the container again - it will then boot up with the new Home Assistant image
  • +
+

Remark: to restart your Home Assistant within Synology NAS, you just have to do the following:

+
    +
  • Go to the Docker-app and move to “Container”-section
  • +
  • Right-click on it and select “Action”->”Restart”.
  • +
+

+If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Synology Docker these instructions do not correctly configure the container to access the USB devices. To configure these devices on your Synology Docker Home Assistant you can follow the instructions provided here by Phil Hawthorne. +

+

QNAP NAS

+

As QNAP within QTS now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatability-information, if your NAS is supported), see https://www.qnap.com/solution/container_station/en/index.php

+

The steps would be:

+
    +
  • Install “Container Station” package on your Qnap NAS
  • +
  • Launch Container Station and move to “Create Container”-section
  • +
  • Search image “homeassistant/home-assistant” with +docker hub and click on “Install”
  • +
  • Choose “latest” version and click next
  • +
  • Choose a container-name you want (e.g. +“homeassistant”)
  • +
  • Click on “Advanced Settings”
  • +
  • Within “Shared Folders” click on “Volume from host” > “Add” and +choose either an existing folder or add a new folder. The “mount +point” has to be “/config”, so that Home Assistant will use it for +the configs and logs.
  • +
  • Within “Network” and select Network Mode to “Host”
  • +
  • To ensure that Home Assistant displays the correct +timezone go to the “Environment” tab and click the plus sign then add +variable = TZ & value = Europe/London choosing your correct timezone
  • +
  • Click on “Create”
  • +
  • Wait for some time until your NAS has created the container
  • +
  • Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example http://192.xxx.xxx.xxx:8123)
  • +
+

Remark: to update your Home Assistant on your Docker within Qnap NAS, you just remove container and image and do steps again (Don’t remove “config” folder)

+

If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Qnap Docker, Fallow this step:

+

Z-wave:

+
    +
  • Connect to your NAS over SSH
  • +
  • Load cdc-acm kernel module(when nas restart need to run this command) + insmod /usr/local/modules/cdc-acm.ko
  • +
  • +

    Find USB devices attached. Type command: + ls /dev/tty* + The above command should show you any USB devices plugged into your NAS. If you have more than one, you may get multiple items returned. Like : ttyACM0

    +
  • +
  • +

    Run Docker command: + docker run --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London --device /dev/ttyACM0 homeassistant/home-assistant

    +

    -v is your config path + -e is set timezone

    +
  • +
  • Edit configuration.yaml
  • +
+
zwave:
+  usb_path: /dev/ttyACM0
+
+
+

That will tell Home Assistant where to look for our Z-wave radio.

+

Bluetooth:

+
    +
  • Connect to your NAS over SSH
  • +
  • +

    Run Docker command: + docker run --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London -v /dev/bus/usb:/dev/bus/usb -v /var/run/dbus:/var/run/dbus homeassistant/home-assistant

    +

    First -v is your config path + -e is set timezone

    +
  • +
  • Edit configuration.yaml
  • +
+
device_tracker:
+  - platform: bluetooth_tracker
+
+
+

Restart

+

If you change the configuration you have to restart the server. To do that you have 2 options.

+
    +
  1. You can go to the service developer tool icon service developer tools, select the service homeassistant/restart and click “Call Service”.
  2. +
  3. Or you can restart it from a terminal by running docker restart home-assistant
  4. +
+

Docker Compose

+

As the docker command becomes more complex, switching to docker-compose can be preferable and support automatically restarting on failure or system restart. Create a docker-compose.yml file:

+
  version: '3'
+  services:
+    homeassistant:
+      container_name: home-assistant
+      image: homeassistant/home-assistant
+      volumes:
+        - /path/to/your/config:/config
+        - /etc/localtime:/etc/localtime:ro
+      restart: always
+      network_mode: host
+
+
+

Then start the container with:

+
$ docker-compose up -d
+
+
+

Exposing Devices

+

In order to use z-wave, zigbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the /dev/tty* file, then add the device mapping to your docker command:

+
$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --device /dev/ttyUSB0:/dev/ttyUSB0 --net=host homeassistant/home-assistant
+
+
+

or in a docker-compose.yml file:

+
  version: '3'
+  services:
+    homeassistant:
+      container_name: home-assistant
+      image: homeassistant/home-assistant
+      volumes:
+        - /path/to/your/config:/config
+        - /etc/localtime:/etc/localtime:ro
+      devices:
+        - /dev/ttyUSB0:/dev/ttyUSB0
+        - /dev/ttyUSB1:/dev/ttyUSB1
+        - /dev/ttyACM0:/dev/ttyACM0
+      restart: always
+      network_mode: host
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/fedora/index.html b/docs/installation/fedora/index.html new file mode 100644 index 0000000000..7d44492b69 --- /dev/null +++ b/docs/installation/fedora/index.html @@ -0,0 +1,367 @@ + + + + + + + + + Installation on Fedora - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on Fedora +

+
+
+

Fedora is an operating system based on the Linux kernel, developed by the community-supported Fedora Project. There are releases for x86 and x86_64 including ARM and other architectures.

+

Install the development package of Python.

+
$ sudo dnf -y install python3-devel redhat-rpm-config
+
+
+

and Home Assistant itself.

+
$ pip3 install homeassistant
+
+
+

To isolate the Home Assistant installation a venv is handy. First create a new directory to store the installation and adjust the permissions.

+
$ sudo mkdir -p /opt/homeassistant
+$ sudo chown -R user:group /opt/homeassistant
+
+
+

Now switch to the new directory, setup the venv, and activate it.

+
$ cd /opt/homeassistant
+$ python3.6 -m venv .
+$ source bin/activate
+
+
+

Install Home Assistant itself.

+
$ pip3 install homeassistant colorlog
+
+
+

Check the autostart section in the documentation for further details and the Firewall section if you want to access your Home Assistant installation.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/freenas/index.html b/docs/installation/freenas/index.html new file mode 100644 index 0000000000..3b581dd68a --- /dev/null +++ b/docs/installation/freenas/index.html @@ -0,0 +1,371 @@ + + + + + + + + + Installation on FreeNAS 9.10 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on FreeNAS 9.10 +

+
+
+

Freenas is a free and open-source network-attached storage (NAS) software based on FreeBSD and the OpenZFS file system. It is licensed under the terms of the BSD License and runs on commodity x86-64 hardware.

+

This has been tested on the FreeNAS 9.10. These instructions assume you already have a running and accessible jail. For more information on creating a jail follow the official FreeNAS 9.10.x documentation HERE. Once you have the jail follow the steps below.

+

Install the necessary Python Packages.

+
# pkg update
+# pkg upgrade
+# pkg install python35
+# pkg install py35-sqlite3
+# python3.5 -m ensurepip
+
+
+

Install Home Assistant itself.

+
# pip3 install homeassistant
+
+
+

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.

+
# cd / && mkdir -p /home/.homeassistant
+
+
+
# /usr/local/bin/hass --open-ui --config /home/.homeassistant/ &
+
+
+

Make /etc/rc.local executable so it runs on startup

+
# 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/docs/installation/hassbian/common-tasks/index.html b/docs/installation/hassbian/common-tasks/index.html new file mode 100644 index 0000000000..e2fa51b82d --- /dev/null +++ b/docs/installation/hassbian/common-tasks/index.html @@ -0,0 +1,432 @@ + + + + + + + + + Common tasks on Hassbian - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Common tasks on Hassbian +

+
+
+

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.

+

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.

+
$ ssh pi@ip-address-of-pi
+
+
+

Windows users start Putty, enter the IP address of the Raspberry Pi in the Host name field and port 22 in the Port field. Then click Open and a terminal window will open. Enter the credentials. Default user name is pi and password is raspberry.

+

Optionally, starting with Windows 10 anniversary update, you can use the built-in ‘Bash on Windows’ to use SSH if you have enabled Developer mode and have installed the “Windows Subsystem for Linux (beta)” feature.

+

Start/Stop/Restart Home Assistant

+

Log in as the pi account and execute the following commands:

+
$ sudo systemctl stop home-assistant@homeassistant.service 
+
+
+

Replace stop with start or restart to get the desired functionality. +To get the current state of the homeassistant.service replace stop with status.

+

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:

+
$ sudo systemctl stop home-assistant@homeassistant.service 
+$ sudo su -s /bin/bash homeassistant
+$ source /srv/homeassistant/bin/activate
+$ pip3 install --upgrade homeassistant
+$ exit
+$ sudo systemctl start home-assistant@homeassistant.service
+
+
+

This will in order do the following:

+
    +
  • Stop the Home Assistant service running on HASSbian
  • +
  • Open a shell as the homeassistant user running the Homeassistant service and that has ownership over the Home Assistant installation.
  • +
  • Change into the virtual Python environment at /srv/homeassistant/ containing the Home Assistant installation.
  • +
  • Upgrade the Home Assistant installation to the latest release.
  • +
  • Exit the shell and return to the pi user.
  • +
  • Restart the Home Assistant service.
  • +
+

Manually launch Home Assistant

+

Log in as the pi account and execute the following commands:

+
$ sudo su -s /bin/bash homeassistant
+$ 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 it first. If you want the log output to be colored, execute hass --script check_config first. This will install the colorlog module.

+

Check your configuration

+

Log in as the pi account and execute the following commands:

+
$ sudo su -s /bin/bash homeassistant
+$ source /srv/homeassistant/bin/activate
+$ hass --script check_config
+
+
+

This will output any errors in your configuration files to console.

+

Read the Home Assistant log file

+

Log in as the pi account and execute the following commands:

+
$ sudo su -s /bin/bash homeassistant
+$ cd /home/homeassistant/.homeassistant
+$ nano home-assistant.log
+
+
+

This will in order do the following:

+
    +
  • Open a shell as the homeassistant user.
  • +
  • Change directory to the Home Assistant configuration directory.
  • +
  • Open the log file in the nano editor.
  • +
+

Optionally, you can also view the log with journalctl. +Log in as the pi account and execute the following commands:

+
$ sudo journalctl -fu home-assistant@homeassistant.service
+
+
+

Edit the Home Assistant configuration

+

Log in as the pi account and execute the following commands:

+
$ sudo su -s /bin/bash homeassistant
+$ cd /home/homeassistant/.homeassistant
+$ nano configuration.yaml
+
+
+

This will in order do the following:

+
    +
  • Open a shell as the homeassistant user.
  • +
  • Change directory to the Home Assistant configuration directory.
  • +
  • Open the configuration file in the nano editor.
  • +
+

It’s generally recommended that you read the Getting started guide for how to configure Home Assistant.

+

Change locale, timezone and keyboard layout

+
$ sudo raspi-config
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/hassbian/customization/index.html b/docs/installation/hassbian/customization/index.html new file mode 100644 index 0000000000..af482ab676 --- /dev/null +++ b/docs/installation/hassbian/customization/index.html @@ -0,0 +1,365 @@ + + + + + + + + + Customization - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ 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 that’s 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. 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 a cron job to auto update 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 a web terminal for easy access to ssh in any web browser. This script installs a web terminal called ‘shellinabox’ on your system that gives you SSH access in your 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.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/hassbian/index.html b/docs/installation/hassbian/index.html new file mode 100644 index 0000000000..765d9b5423 --- /dev/null +++ b/docs/installation/hassbian/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Hassbian - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/installation/hassbian/installation/index.html b/docs/installation/hassbian/installation/index.html new file mode 100644 index 0000000000..f9ba03f580 --- /dev/null +++ b/docs/installation/hassbian/installation/index.html @@ -0,0 +1,382 @@ + + + + + + + + + Installing Hassbian - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installing Hassbian +

+
+
+

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 (364 MB)
  2. +
  3. Use Etcher to flash the image to your SD card
  4. +
  5. 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.
  6. +
  7. Insert SD card to Raspberry Pi and turn it on. Initial installation of Home Assistant will take about 5 minutes.
  8. +
+

+Please remember to ensure you’re using an appropriate power supply 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. Additional information is available in this video.

+

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

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

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

+

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
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/hassbian/integrations/index.html b/docs/installation/hassbian/integrations/index.html new file mode 100644 index 0000000000..c4454e2f3e --- /dev/null +++ b/docs/installation/hassbian/integrations/index.html @@ -0,0 +1,373 @@ + + + + + + + + + Raspberry Pi integrations - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Raspberry Pi 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 page.

+

Bluetooth Tracker

+

The Bluetooth tracker will work on a Raspberry Pi 3 with the built-in Bluetooth module or with a USB Bluetooth device on any of the other Raspberry Pi’s.

+

Software needed for the tracker is pre-installed so just follow the Bluetooth Tracker component and Device Tracker page pages.

+

Raspberry Pi GPIO

+

Each of the following devices are connected to the GPIO pins on the Raspberry Pi. +For more details about the GPIO layout, visit the documentation from the Raspberry Pi foundation.

+

Permission have been given to the homeassistant user to use the GPIO pins and all of the following components should require no underlying changes to work. +Just follow the component pages for each on how to add them to your Home Assistant installation.

+ +

Raspberry Pi Camera

+

The Raspberry Pi Camera is a specific camera for the Raspberry Pi boards. For more information about the camera I suggest reading the documentation from the Raspberry Pi foundation.

+

To use the camera it needs to be enabled with the raspi-config utility.

+
$ sudo raspi-config
+
+
+

Go to Interfacing Options, select Enable camera choose <Yes> and hit Enter, then go to Finish and you’ll be prompted to reboot.

+

After this follow the Raspberry Pi Camera component page.

+

One wire Sensor

+

The One wire sensor requires that support for it is enabled on the Raspberry Pi and that the One Wire device is connected to GPIO pin 4. +To enable One Wire support add the following line to the end of /boot/config.txt

+
dtoverlay=w1-gpio
+
+
+

After this follow the One Wire Sensor component page.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/hassbian/upgrading/index.html b/docs/installation/hassbian/upgrading/index.html new file mode 100644 index 0000000000..4b22ed70be --- /dev/null +++ b/docs/installation/hassbian/upgrading/index.html @@ -0,0 +1,361 @@ + + + + + + + + + Upgrading Hassbian - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Upgrading Hassbian +

+
+
+

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. +Log in as the pi account and execute the following commands:

+
$ sudo apt-get update
+$ sudo apt-get -y upgrade
+
+
+

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.

+
$ sudo systemctl stop home-assistant@homeassistant.service
+$ sudo su -s /bin/bash homeassistant
+$ source /srv/homeassistant/bin/activate
+$ pip3 install --upgrade homeassistant
+$ exit
+$ sudo systemctl start home-assistant@homeassistant.service
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/index.html b/docs/installation/index.html new file mode 100644 index 0000000000..8e6eb51bb8 --- /dev/null +++ b/docs/installation/index.html @@ -0,0 +1,440 @@ + + + + + + + + + Installation of Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation of Home Assistant +

+
+
+

+Beginners should check our Getting started guide first. This is for users that require advanced installations. +

+

Home Assistant provides multiple ways to be installed. A requirement is that you have Python 3.5+ installed.

+ +

Once Home Assistant is installed, execute the following code in a console/terminal to check if the setup was successful:

+
$ hass
+
+
+

The first start may take a minute or two because the needed packages will be downloaded and installed. The web interface will be served on http://localhost:8123.

+

For more details about hass, please refer to the tools section.

+

If you’re running a Linux-based platform, we suggest you follow the VirtualEnv instructions to avoid using root.

+

You may need to install additional libraries depending on the platforms/components you want to use.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/macos/index.html b/docs/installation/macos/index.html new file mode 100644 index 0000000000..6e198a7a24 --- /dev/null +++ b/docs/installation/macos/index.html @@ -0,0 +1,349 @@ + + + + + + + + + Installation on macOS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on macOS +

+
+
+

macOS is available by default on Apple computer. If you run a different operating system, please refer to the other section of the documentation.

+

To run Home Assistant on macOS you need to install Python first. Download Python from https://www.python.org/downloads/mac-osx/ and follow the instructions of the installer.

+

Open a terminal and install Home Assistant.

+
$ pip3 install homeassistant
+
+
+

Check this video for the installation on macOS.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/python/index.html b/docs/installation/python/index.html new file mode 100644 index 0000000000..c20dd87aa9 --- /dev/null +++ b/docs/installation/python/index.html @@ -0,0 +1,360 @@ + + + + + + + + + Installation on your computer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on your computer +

+
+
+

Once Python is installed, execute the following code in a console:

+
$ pip3 install homeassistant
+$ hass --open-ui
+
+
+

Running these commands will:

+ +

If you’re running a Linux-based platform, we suggest you follow the instructions for a virtual environment to avoid using root.

+

Video tutorials of this process for various operating systems are available here:

+ +

Keep in mind that the used operating systems and the shown software releases may be outdated.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/raspberry-pi-all-in-one/index.html b/docs/installation/raspberry-pi-all-in-one/index.html new file mode 100644 index 0000000000..9f1c09ea2c --- /dev/null +++ b/docs/installation/raspberry-pi-all-in-one/index.html @@ -0,0 +1,345 @@ + + + + + + + + + Raspberry Pi All-In-One Installer - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Raspberry Pi All-In-One Installer +

+
+
+

+ The All-In-One Installer is deprecated, you will have problems updating Home Assistant in 2018. Please move to another installation method. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/raspberry-pi/index.html b/docs/installation/raspberry-pi/index.html new file mode 100644 index 0000000000..8f50473989 --- /dev/null +++ b/docs/installation/raspberry-pi/index.html @@ -0,0 +1,410 @@ + + + + + + + + + Manual installation on a Raspberry Pi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Manual installation on a Raspberry Pi +

+
+
+

This installation of Home Assistant requires the Raspberry Pi to run Raspbian Lite. The installation will be installed in a Virtual Environment with minimal overhead. Instructions assume this is a new installation of Raspbian Lite.

+

+Although these installation steps specifically mention a Raspberry Pi, you can go ahead and proceed on any Linux install as well. This guide is also referred to as the “Advanced Guide” for a virtual environment install. +

+

+Please remember to ensure you’re using an appropriate power supply with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer’s handsets. USB ports on your computer also will not supply enough power and must not be used. +

+

Connect to the Raspberry Pi over SSH. Default password is raspberry. +You will need to enable SSH access. The Raspberry Pi website has instructions here.

+
$ ssh pi@ipadress
+
+
+

Changing the default password is encouraged.

+
$ passwd
+
+
+

Update the system.

+
$ sudo apt-get update
+$ sudo apt-get upgrade -y
+
+
+

Install the dependencies.

+
$ sudo apt-get install python3 python3-venv python3-pip
+
+
+

Add an account for Home Assistant called homeassistant. +Since this account is only for running Home Assistant the extra arguments of -rm is added to create a system account and create a home directory.

+
$ sudo useradd -rm homeassistant
+
+
+

Next we will create a directory for the installation of Home Assistant and change the owner to the homeassistant account.

+
$ cd /srv
+$ sudo mkdir homeassistant
+$ sudo chown homeassistant:homeassistant homeassistant
+
+
+

Next up is to create and change to a virtual environment for Home Assistant. This will be done as the homeassistant account.

+
$ sudo su -s /bin/bash homeassistant
+$ cd /srv/homeassistant
+$ python3 -m venv .
+$ source bin/activate
+
+
+

Once you have activated the virtual environment (notice the prompt change) you will need to run the following command to install a required python package.

+
(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ python3 -m pip install wheel
+
+
+

Once you have installed the required python package it is now time to install Home Assistant!

+
(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant
+
+
+

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.

+
(homeassistant) $ hass
+
+
+

You can now reach your installation on your Raspberry Pi over the web interface on http://ipaddress:8123.

+

+When you run the hass command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get “site cannot be reached” error when accessing the web interface. This will only happen for the first time, and subsequent restarts will be much faster. +

+

If you want setup hass as a daemon and autostart it on boot please refer to Autostart Home Assistant.

+

Updating

+

To update to the latest version of Home Assistant follow these simple steps:

+
$ sudo su -s /bin/bash homeassistant
+$ source /srv/homeassistant/bin/activate
+$ pip3 install --upgrade homeassistant
+
+
+

Once the last command executes restart the Home Assistant service to apply the latest updates. Please keep in mind that some updates may take longer to boot up than others. If Home Assistant fails to start make sure you check the Breaking Changes from the Release Notes.

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/synology/index.html b/docs/installation/synology/index.html new file mode 100644 index 0000000000..bdff5951eb --- /dev/null +++ b/docs/installation/synology/index.html @@ -0,0 +1,545 @@ + + + + + + + + + Installation on a Synology NAS - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on a Synology NAS +

+
+
+

There are 2 alternatives, when using Home Assistant on Synology NAS:

+
    +
  1. using Docker
  2. +
  3. directly running on DSM
  4. +
+

Option 1 is described on the Docker installation page, whereas Option 2 is described below.

+

The following configuration has been tested on Synology 413j running DSM 6.0-7321 Update 1.

+

Running these commands will:

+ +

Using the Synology webadmin:

+
    +
  • Install python3 using the Synology Package Center
  • +
  • Create homeassistant user and add to the “users” group
  • +
+

SSH onto your synology & login as admin or root

+
    +
  • Log in with your own administrator account
  • +
  • Switch to root using:
  • +
+
$ sudo -i
+
+
+

Check the path to python3 (assumed to be /volume1/@appstore/py3k/usr/local/bin)

+
# cd /volume1/@appstore/py3k/usr/local/bin
+
+
+

Install PIP (Python’s package management system)

+
# ./python3 -m ensurepip
+
+
+

Use PIP to install Homeassistant package

+
# ./python3 -m pip install homeassistant
+
+
+

Create homeassistant config directory & switch to it

+
# mkdir /volume1/homeassistant
+# chown homeassistant /volume1/homeassistant 
+# chmod 755 /volume1/homeassistant
+# cd /volume1/homeassistant
+
+
+

Hint: alternatively you can also create a “Shared Folder” via Synology WebUI (e.g. via “File Station”) - this has the advantage that the folder is visible via “File Station”.

+

Create hass-daemon file using the following code (edit the variables in uppercase if necessary)

+
#!/bin/sh
+
+# Package
+PACKAGE="homeassistant"
+DNAME="Home Assistant"
+
+# Others
+USER="homeassistant"
+PYTHON_DIR="/volume1/@appstore/py3k/usr/local/bin"
+PYTHON="$PYTHON_DIR/python3"
+HASS="$PYTHON_DIR/hass"
+INSTALL_DIR="/volume1/homeassistant"
+PID_FILE="$INSTALL_DIR/home-assistant.pid"
+FLAGS="-v --config $INSTALL_DIR --pid-file $PID_FILE --daemon"
+REDIRECT="> $INSTALL_DIR/home-assistant.log 2>&1"
+
+start_daemon ()
+{
+    sudo -u ${USER} /bin/sh -c "$PYTHON $HASS $FLAGS $REDIRECT;"
+}
+
+stop_daemon ()
+{
+    kill `cat ${PID_FILE}`
+    wait_for_status 1 20 || kill -9 `cat ${PID_FILE}`
+    rm -f ${PID_FILE}
+}
+
+daemon_status ()
+{
+    if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
+        return
+    fi
+    rm -f ${PID_FILE}
+    return 1
+}
+
+wait_for_status ()
+{
+    counter=$2
+    while [ ${counter} -gt 0 ]; do
+        daemon_status
+        [ $? -eq $1 ] && return
+        let counter=counter-1
+        sleep 1
+    done
+    return 1
+}
+
+case $1 in
+    start)
+        if daemon_status; then
+            echo ${DNAME} is already running
+            exit 0
+        else
+            echo Starting ${DNAME} ...
+            start_daemon
+            exit $?
+        fi
+        ;;
+    stop)
+        if daemon_status; then
+            echo Stopping ${DNAME} ...
+            stop_daemon
+            exit $?
+        else
+            echo ${DNAME} is not running
+            exit 0
+        fi
+        ;;
+        restart)
+        if daemon_status; then
+            echo Stopping ${DNAME} ...
+            stop_daemon
+            echo Starting ${DNAME} ...
+            start_daemon
+            exit $?
+        else
+            echo ${DNAME} is not running
+            echo Starting ${DNAME} ...
+            start_daemon
+            exit $?
+        fi
+        ;;
+    status)
+        if daemon_status; then
+            echo ${DNAME} is running
+            exit 0
+        else
+            echo ${DNAME} is not running
+            exit 1
+        fi
+        ;;
+    log)
+        echo ${LOG_FILE}
+        exit 0
+        ;;
+    *)
+        exit 1
+        ;;
+esac
+
+
+
+

Create links to python folders to make things easier in the future:

+
# ln -s /volume1/@appstore/py3k/usr/local/bin/python3 python3
+# ln -s /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/homeassistant homeassistant
+
+
+

Set the owner and permissions on your config folder

+
# chown -R homeassistant:users /volume1/homeassistant
+# chmod -R 664 /volume1/homeassistant
+
+
+

Make the daemon file executable:

+
# chmod 755 /volume1/homeassistant/hass-daemon
+
+
+

Update your firewall (if it is turned on the Synology device):

+
    +
  • Go to your Synology control panel
  • +
  • Go to security
  • +
  • Go to firewall
  • +
  • Go to Edit Rules
  • +
  • Click Create
  • +
  • Select Custom: Destination port “TCP”
  • +
  • Type “8123” in port
  • +
  • Click on OK
  • +
  • Click on OK again
  • +
+

Copy your configuration.yaml file into the config folder +That’s it… you’re all set to go

+

Here are some useful commands:

+
    +
  • Start Home Assistant:
  • +
+
$ sudo /volume1/homeassistant/hass-daemon start
+
+
+
    +
  • Stop Home Assistant:
  • +
+
$ sudo /volume1/homeassistant/hass-daemon stop
+
+
+
    +
  • Restart Home Assistant:
  • +
+
$ sudo /volume1/homeassistant/hass-daemon restart
+
+
+
    +
  • Upgrade Home Assistant::
  • +
+
$  /volume1/@appstore/py3k/usr/local/bin/python3 -m pip install --upgrade homeassistant
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/troubleshooting/index.html b/docs/installation/troubleshooting/index.html new file mode 100644 index 0000000000..a80572a6e6 --- /dev/null +++ b/docs/installation/troubleshooting/index.html @@ -0,0 +1,386 @@ + + + + + + + + + Troubleshooting installation problems - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Troubleshooting installation problems +

+
+
+

It can happen that you run into trouble while installing Home Assistant. This page is here to help you solve the most common problems.

+

pip3: command not found

+

This utility should have been installed as part of the Python installation. Check if Python is installed by running python3 --version. If it is not installed, download it here.

+

If you are able to successfully run python3 --version but not pip3, install Home Assistant by running the following command instead:

+
$ python3 -m pip install homeassistant
+
+
+

On a Debian system, you can also install python3 by sudo apt-get install python3, and pip3 by sudo apt-get install python3-pip.

+

No module named pip

+

Pip should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run python3 -m pip --version you can install pip by downloading the installer and running it with Python 3:

+
$ python3 get-pip.py
+
+
+

libyaml is not found or a compiler error

+

On a Debian system, install the Python 3 YAML library by sudo apt-get install python3-yaml.

+

distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix – not both

+

This is a known issue if you’re on a Mac using Homebrew to install Python. Please follow these instructions to resolve it.

+

No access to the frontend

+

In newer Linux distributions (at least Fedora > 22/CentOS 7) the access to a host is very limited. This means that you can’t access the Home Assistant frontend that is running on a host outside of the host machine. Windows and macOS machines may also have issues with this.

+

To fix this you will need to open your machine’s firewall for TCP traffic to port 8123. The method for doing this will vary depending on your operating system and the firewall you have installed. Below are some suggestions to try. Google is your friend here.

+ +

For systems with firewalld (Fedora, CentOS/RHEL, etc.):

+
$ sudo firewall-cmd --permanent --add-port=8123/tcp
+$ sudo firewall-cmd --reload
+
+
+

For UFW systems (Ubuntu, Debian, Raspbian, etc.):

+
$ sudo ufw allow 8123/tcp
+
+
+

For iptables systems (was the default for older distributions):

+
$ iptables -I INPUT -p tcp --dport 8123 -j ACCEPT
+$ iptables-save > /etc/network/iptables.rules  # your rules may be saved elsewhere
+
+
+

After upgrading, your browser login gets stuck at the “loading data” step

+

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”

+

Not initializing discovery because could not install dependency netdisco

+

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

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/updating/index.html b/docs/installation/updating/index.html new file mode 100644 index 0000000000..8dfaabeb62 --- /dev/null +++ b/docs/installation/updating/index.html @@ -0,0 +1,368 @@ + + + + + + + + + Updating Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Updating 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, HASSbian, Vagrant, or Virtualenv. +

+

Check what’s new in the latest version and potentially impacts your system in Home Assistant release notes. It is good practice to review these release notes and pay close attention to the Breaking Changes that are listed there. If you haven’t done an update for a while, you should also check previous release notes as they can also contain relevant Breaking Changes. Breaking Changes may require configuration updates for your components. If you missed this and Home Assistant refuses to start, check <config-dir>/home-assistant.log for details about broken components.

+

The default way to update Home Assistant to the latest release, when available, is:

+
$ 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 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 Hass.io, HASSbian, Vagrant, or Virtualenv. +

+

BRUH automation has created a tutorial video explaining how to upgrade Home Assistant.

+

Run a specific version

+

In the event that a Home Assistant version doesn’t play well with your hardware setup, you can downgrade to a previous release:

+
$ pip3 install homeassistant==0.XX.X
+
+
+

Run the development version

+

If you want to stay on the bleeding-edge Home Assistant development branch, you can upgrade to dev.

+

+ The “dev” branch is likely to be unstable. Potential consequences include loss of data and instance corruption. +

+
$ pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/vagrant/index.html b/docs/installation/vagrant/index.html new file mode 100644 index 0000000000..2146bcc73c --- /dev/null +++ b/docs/installation/vagrant/index.html @@ -0,0 +1,400 @@ + + + + + + + + + Installation on Vagrant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on Vagrant +

+
+
+

A Vagrantfile is available into virtualization/vagrant folder for quickly spinning up a Linux virtual machine running Home Assistant. This can be beneficial for those who want to experiment with Home Assistant and/or developers willing to easily test local changes and run test suite against them. In the same virtualization/vagrant folder there’s also a provision.sh shell script which provides an easy way to interact with the Home Assistant instance running within the Vagrant VM.

+

+Vagrant is intended for testing/development only. It is NOT recommended for permanent installations. +

+

Install Vagrant

+

You must have Vagrant and Virtualbox installed on your workstation. Vagrant and Virtualbox support all the main platforms, including Windows, MacOS and Linux.

+

Get Home Assistant source code

+

Download the Home Assistant source code by either downloading the .zip file from GitHub releases page or by using Git

+
$ git clone https://github.com/home-assistant/home-assistant.git
+$ cd home-assistant/virtualization/vagrant
+
+
+

+The following instructions will assume you changed your working directory to be home-assistant/virtualization/vagrant. This is mandatory because Vagrant will look for information about the running VM inside that folder and won’t work otherwise +

+

+When using Vagrant on Windows, change git’s auto.crlf to input before cloning the Home Assistant repository. With input setting git won’t automatically change line endings from Unix LF to Windows CRLF. Shell scripts executed during provision won’t work with Windows line endings. +

+
$ git config --global core.autocrlf input
+
+
+

Create the Vagrant VM and start Home Assistant

+
$ ./provision.sh setup
+
+
+

This will download and start a virtual machine using Virtualbox, which will internally setup the development environment necessary to start Home Assistant. The whole process might take up to 30 minutes to complete, depending on Internet connection speed and workstation resources. After the VM has started successfully, the Home Assistant frontend will be accessible locally from your browser at http://localhost:8123

+

Stopping Vagrant

+

To shutdown the Vagrant host:

+
$ ./provision.sh stop
+
+
+

To start it again:

+
$ ./provision.sh start
+
+
+

Restarting Home Assistant process to test changes

+

The root home-assistant directory on your workstation will be mirrored with /home-assistant inside the VM. In virtualization/vagrant there’s also a config folder that you can use to drop configuration files (Check the Configuration section in the docmentation for more information about how to configure Home Assistant).

+

Any changes made to the local directory on your workstation will be available from the Vagrant host, so to apply your changes to the Home Assistant process, just restart it using the provided provision.sh wrapper script:

+
$ ./provision.sh restart
+
+
+

+This command will only restart the Home Assistant process inside the Vagrant VM, it will not reboot the virtual machine. If that’s what you want, the right command is vagrant reload +

+

Run test suite (Tox)

+

To run tests against the local version of Home Assistant code:

+
$ ./provision.sh tests
+
+
+

Cleanup

+

To completely remove the VM

+
$ ./provision.sh destroy
+
+
+

To completely remove the VM and setup a fresh new environment:

+
$ ./provision.sh recreate
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/virtualenv/index.html b/docs/installation/virtualenv/index.html new file mode 100644 index 0000000000..2beb1c4512 --- /dev/null +++ b/docs/installation/virtualenv/index.html @@ -0,0 +1,412 @@ + + + + + + + + + Installation in Python virtual environment - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation in Python virtual environment +

+
+
+

If you already have Python 3.5.3 or later installed, you can easily give Home Assistant a spin.

+

It’s recommended when installing Python packages that you use a virtual environment. This will make sure that your Python installation and Home Assistant installation won’t impact one another. The following steps will work on most unix like systems.

+

(If you’re on a Debian based system, you will need to install Python virtual environment support using apt-get install python3-pip python3-venv.)

+

+It is recommended to use the advanced guide which allows for the installation to run as a homeassistant user. The steps below may be shorter but some users find difficulty when applying updates and may run into issues. +

+

Install

+
    +
  1. Create a virtual environment in your current directory: +
    $ python3 -m venv homeassistant
    +
    +
    +
  2. +
  3. Open the virtual environment: +
    $ cd homeassistant
    +
    +
    +
  4. +
  5. Activate the virtual environment: +
    $ source bin/activate
    +
    +
    +
  6. +
  7. Install wheel: +
    $ python3 -m pip install wheel
    +
    +
    +
  8. +
  9. Install Home Assistant: +
    $ python3 -m pip install homeassistant
    +
    +
    +
  10. +
  11. Configure it to autostart
  12. +
  13. Or run Home Assistant manually: +
    $ hass --open-ui
    +
    +
    +
  14. +
+

Upgrade

+
    +
  1. +

    Stop Home Assistant

    +
  2. +
  3. Open the directory where the virtual environment is located: +
    $ cd homeassistant
    +
    +
    +
  4. +
  5. Activate the virtual environment: +
    $ source bin/activate
    +
    +
    +
  6. +
  7. Upgrade Home Assistant: +
    $ python3 -m pip install --upgrade homeassistant
    +
    +
    +
  8. +
  9. Start Home Assistant
  10. +
+

Notes

+
    +
  • In the future, if you want to start Home Assistant manually again, follow step 2, 3 and 5.
  • +
  • It’s recommended to run Home Assistant as a dedicated user.
  • +
+

+Looking for more advanced guides? Check our Rasbian guide or the other installation guides. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/installation/windows/index.html b/docs/installation/windows/index.html new file mode 100644 index 0000000000..5875f99349 --- /dev/null +++ b/docs/installation/windows/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Installation on a Windows system - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installation on a Windows system +

+
+
+

To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python (the latest version of Python 3.6 is recommended) for https://www.python.org/downloads/windows/ and follow the instructions of the installer.

+

+There may be alpha or beta releases of Python listed on that download page (marked by the letters a or b in the version number. Do not use these versions. +

+

Start

+
C:\...\> pip3 install homeassistant
+C:\...\> py -m homeassistant --open-ui
+
+
+

For autostarting Home Assistant please refer to this guide.

+

Check this video for the installation on Windows 10.

+

+The Microsoft Windows platform is not a primary target to install Home Assistant. Also, not all tools and third-party modules will work. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/birth_will/index.html b/docs/mqtt/birth_will/index.html new file mode 100644 index 0000000000..f26f2c2564 --- /dev/null +++ b/docs/mqtt/birth_will/index.html @@ -0,0 +1,373 @@ + + + + + + + + + MQTT Birth and Last will - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT Birth and Last will +

+
+
+

MQTT supports so-called Birth and Last Will and Testament (LWT) messages. The former is used to send a message after the service has started, and the latter is used to notify other clients about an ungracefully disconnected client.

+

To integrate MQTT Birth and Last Will messages into Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+mqtt:
+  birth_message:
+    topic: 'hass/status'
+    payload: 'online'
+  will_message:
+    topic: 'hass/status'
+    payload: 'offline'
+
+
+

Configuration variables:

+
    +
  • birth_message (Optional): +
      +
    • topic (Required): The MQTT topic to publish the message.
    • +
    • payload (Required): The message content.
    • +
    • qos (Optional): The maximum QoS level of the topic. Default is 0.
    • +
    • retain (Optional): If the published message should have the retain flag on or not. Defaults to True.
    • +
    +
  • +
  • will_message (Optional): +
      +
    • topic (Required): The MQTT topic to publish the message.
    • +
    • payload (Required): The message content.
    • +
    • qos (Optional): The maximum QoS level of the topic. Default is 0.
    • +
    • retain (Optional): If the published message should have the retain flag on or not. Defaults to True.
    • +
    +
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/broker/index.html b/docs/mqtt/broker/index.html new file mode 100644 index 0000000000..3a913b385b --- /dev/null +++ b/docs/mqtt/broker/index.html @@ -0,0 +1,503 @@ + + + + + + + + + MQTT Brokers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT Brokers +

+
+
+

The MQTT component needs you to run an MQTT broker for Home Assistant to connect to. There are four options, each with various degrees of ease of setup and privacy.

+

Embedded broker

+

Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the HBMQTT broker is started and Home Assistant connects to it. Embedded broker default configuration:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SettingValue
Hostlocalhost
Port1883
Protocol3.1.1
Userhomeassistant
PasswordYour API password
Websocket port8080
+
# Example configuration.yaml entry
+mqtt:
+
+
+

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.

+

Settings

+

If you want to customize the settings of the embedded broker, use embedded: and the values shown in the HBMQTT Broker configuration. This will replace the default configuration.

+
# Example configuration.yaml entry
+mqtt:
+  embedded:
+    # Your HBMQTT config here. Example at:
+    # http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration
+
+
+

Run your own

+

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, EMQ, or Mosca.

+
# Example configuration.yaml entry
+mqtt:
+  broker: 192.168.1.100
+
+
+
+

Configuration Variables

+
+
broker
+
+

(string)(Optional)The IP address or hostname of your MQTT broker, e.g. 192.168.1.32.

+
+
port
+
+

(int)(Optional)The network port to connect to. Default is 1883.

+
+
client_id
+
+

(string)(Optional)The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one.

+
+
keepalive
+
+

(int)(Optional)The time in seconds between sending keep alive messages for this client. Default is 60.

+
+
username
+
+

(string)(Optional)The username to use with your MQTT broker.

+
+
password
+
+

(string)(Optional)The corresponding password for the username to use with your MQTT broker.

+
+
protocol
+
+

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

+
+
certificate
+
+

(string)(Optional)Path to the certificate file, eg. /home/user/.homeassistant/server.crt.

+
+
tls_insecure
+
+

(boolean)(Optional)Set the verification of the server hostname in the server certificate.

+
+
tls_version
+
+

(string)(Optional)TLS/SSL protocol version to use. Available options are: 'auto', '1.0', '1.1', '1.2'. Make sure to put quotes around the value. Defaults to 'auto'.

+
+
+
+

+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. +If you get this error AttributeError: module 'ssl' has no attribute 'PROTOCOL_TLS' then you need to set tls_version: '1.2'. +

+

+If you are running a Mosquitto instance on the same server as Home Assistant then you must ensure that the Mosquitto service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the file /etc/systemd/system/home-assistant@homeassistant.service as root (e.g. sudo nano /etc/systemd/system/home-assistant@homeassistant.service) and add the mosquitto service: + +[Unit] +Description=Home Assistant +After=network.target mosquitto.service + +

+

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

+

Public broker

+

The Mosquitto project runs a public broker. This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home.

+
mqtt:
+  broker: test.mosquitto.org
+  port: 1883 or 8883
+
+  # Optional, replace port 1883 with following if you want encryption
+  # (doesn't really matter because broker is public)
+  port: 8883
+  # Download certificate from http://test.mosquitto.org/ssl/mosquitto.org.crt
+  certificate: /home/paulus/downloads/mosquitto.org.crt
+
+
+

CloudMQTT

+

CloudMQTT is a hosted private MQTT instance that is free for up to 10 connected devices. This is enough to get started with for example OwnTracks and give you a taste of what is possible.

+

+Home Assistant is not affiliated with CloudMQTT nor will receive any kickbacks. +

+
    +
  1. Create an account (no payment details needed)
  2. +
  3. Create a new CloudMQTT instance +(Cute Cat is the free plan)
  4. +
  5. From the control panel, click on the Details button.
  6. +
  7. Create unique users for Home Assistant and each phone to connect
    (CloudMQTT does not allow two connections from the same user) +
      +
    1. Under manage users, fill in username, password and click add
    2. +
    3. Under ACLs, select user, topic #, check ‘read access’ and ‘write access’
    4. +
    +
  8. +
  9. Copy the instance info to your configuration.yaml:
  10. +
+
mqtt:
+  broker: CLOUTMQTT_SERVER
+  port: CLOUDMQTT_PORT
+  username: CLOUDMQTT_USER
+  password: CLOUDMQTT_PASSWORD
+
+
+

+Home Assistant will automatically load the correct certificate if you connect to an encrypted channel of CloudMQTT (port range 20000-30000). +

+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/certificate/index.html b/docs/mqtt/certificate/index.html new file mode 100644 index 0000000000..c11de3c7f5 --- /dev/null +++ b/docs/mqtt/certificate/index.html @@ -0,0 +1,355 @@ + + + + + + + + + MQTT Certificate - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT Certificate +

+
+
+

Using certificates will give you an additional layer of security for your MQTT communication.

+

To integrate MQTT with certificate into Home Assistant, add the following section to your configuration.yaml file:

+
# Example configuration.yaml entry
+mqtt:
+  certificate: /home/paulus/dev/addtrustexternalcaroot.crt
+
+
+

Configuration variables:

+
    +
  • certificate (Optional): ‘auto’ or the certificate authority certificate file that is to be treated as trusted by this client. ‘auto’ uses the bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker’s certificate, but may contain multiple certificates. Example: /home/user/identrust-root.pem
  • +
  • client_key (Optional): Client key, eg. /home/user/owntracks/cookie.key.
  • +
  • client_cert (Optional): Client certificate, eg. /home/user/owntracks/cookie.crt.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/discovery/index.html b/docs/mqtt/discovery/index.html new file mode 100644 index 0000000000..74c3436b26 --- /dev/null +++ b/docs/mqtt/discovery/index.html @@ -0,0 +1,421 @@ + + + + + + + + + MQTT Discovery - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ 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 and the HTTP sensor. 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:

+ +

To enable MQTT discovery, add the following to your configuration.yaml file:

+
# Example configuration.yaml entry
+mqtt:
+  discovery: true
+  discovery_prefix: homeassistant
+
+
+

Configuration variables:

+
    +
  • discovery (Optional): If the MQTT discovery should be enabled or not. Defaults to False.
  • +
  • discovery_prefix (Optional): The prefix for the discovery topic. Defaults to homeassistant.
  • +
+

The discovery topic need to follow a specific format:

+
<discovery_prefix>/<component>/[<node_id>/]<object_id>/<>
+
+
+
    +
  • <component>: One of the supported components, eg. binary_sensor.
  • +
  • <node_id>: (Optional) id of the node providing the topic.
  • +
  • <object_id>: “The ID of the device. This is only to allow for separate topics for each device and is not used for the entity_id.”
  • +
  • <>: 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 <node_id> level can be used by clients to only subscribe to their own (command) topics by using one wildcard topic like <discovery_prefix>/+/<node_id>/+/set.

+

Support by third-party tools

+

The following firmware for ESP8266, ESP32 and Sonoff unit has built-in support for MQTT discovery:

+ +

Examples

+

A motion detection device which can be represented by a binary sensor 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.

+
    +
  • Configuration topic: homeassistant/binary_sensor/garden/config
  • +
  • State topic: homeassistant/binary_sensor/garden/state
  • +
  • Payload: {"name": "garden", "device_class": "motion"}
  • +
+

To create a new sensor manually. For more details please refer to the MQTT testing section.

+
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion"}'
+
+
+

Update the state.

+
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON
+
+
+

Setting up a switch is similar but requires a command_topic as mentionend in the MQTT switch documentation.

+
    +
  • Configuration topic: homeassistant/switch/irrigation/config
  • +
  • State topic: homeassistant/switch/irrigation/state
  • +
  • Payload: {"name": "garden", "command_topic": "homeassistant/switch/irrigation/set"}
  • +
+
$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \
+  -m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set"}'
+
+
+

Set the state.

+
$ 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": "{{ value_json.temperature}}" }
  • +
  • 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": "{{ value_json.humidity}}" }
  • +
  • Common state payload: { "temperature": 23.20, "humidity": 43.70 }
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/index.html b/docs/mqtt/index.html new file mode 100644 index 0000000000..120b3fcd50 --- /dev/null +++ b/docs/mqtt/index.html @@ -0,0 +1,360 @@ + + + + + + + + + MQTT - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT +

+
+
+

MQTT (aka MQ Telemetry Transport) is a machine-to-machine or “Internet of Things” connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport.

+

To integrate MQTT into Home Assistant, add the following section to your configuration.yaml file. Keep in mind that the minimal setup will run with an embedded MQTT broker:

+
# Example configuration.yaml entry
+mqtt:
+
+
+

For other setup methods, please refer to the MQTT broker documentation.

+

Additional features

+ +

See the MQTT example component how to integrate your own component.

+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/logging/index.html b/docs/mqtt/logging/index.html new file mode 100644 index 0000000000..e7cb4a5120 --- /dev/null +++ b/docs/mqtt/logging/index.html @@ -0,0 +1,350 @@ + + + + + + + + + MQTT Logging - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT Logging +

+
+
+

The logger component allow the logging of received MQTT messages.

+
# Example configuration.yaml entry
+logger:
+  default: warning
+  logs:
+    homeassistant.components.mqtt: debug
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/processing_json/index.html b/docs/mqtt/processing_json/index.html new file mode 100644 index 0000000000..4b929e4464 --- /dev/null +++ b/docs/mqtt/processing_json/index.html @@ -0,0 +1,378 @@ + + + + + + + + + Processing JSON - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Processing JSON +

+
+
+

The MQTT switch and sensor platforms support processing JSON over MQTT messages and parsing them using JSONPath. JSONPath allows you to specify where in the JSON the value resides that you want to use. The following examples will always return the value 100.

+ + + + + + + + + + + + + + + + + + + + + +
JSONPath queryJSON
somekey{ 'somekey': 100 }
somekey[0]{ 'somekey': [100] }
somekey[0].value{ 'somekey': [ { value: 100 } ] }
+

To use this, add the following key to your configuration.yaml:

+
switch:
+  platform: mqtt
+  state_format: 'json:somekey[0].value'
+
+
+

It is also possible to extract JSON values by using a value template:

+
switch:
+  platform: mqtt
+  value_template: '{{ value_json.somekey[0].value }}'
+
+
+

More information about the full JSONPath syntax can be found in their documentation.

+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/service/index.html b/docs/mqtt/service/index.html new file mode 100644 index 0000000000..0d8996f0be --- /dev/null +++ b/docs/mqtt/service/index.html @@ -0,0 +1,355 @@ + + + + + + + + + MQTT Publish service - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT Publish service +

+
+
+

The MQTT component will register the service publish which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use payload to hard-code a payload or use payload_template to specify a template that will be rendered to generate the payload.

+
{
+  "topic": "home-assistant/light/1/command",
+  "payload": "on"
+}
+
+
+
{
+  "topic": "home-assistant/light/1/state",
+  "payload_template": "{{ states('device_tracker.paulus') }}"
+}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/mqtt/testing/index.html b/docs/mqtt/testing/index.html new file mode 100644 index 0000000000..e7a06f4c0f --- /dev/null +++ b/docs/mqtt/testing/index.html @@ -0,0 +1,374 @@ + + + + + + + + + MQTT Testing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ MQTT Testing +

+
+
+

The mosquitto broker package ships commandline tools (often as *-clients package) to send and receive MQTT messages. As an alternative have a look at hbmqtt_pub and hbmqtt_sub which are provided by HBMQTT. For sending test messages to a broker running on localhost check the example below:

+
$ mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON"
+
+
+

If you are using the embedded MQTT broker, the command looks a little different because you need to add the MQTT protocol version.

+
$ mosquitto_pub -V mqttv311 -t "hello" -m world
+
+
+

or if you are using a API password:

+
$ mosquitto_pub -V mqttv311 -u homeassistant -P <your api password> -t "hello" -m world
+
+
+

Another way to send MQTT messages by hand is to use the “Developer Tools” in the Frontend. Choose “Call Service” and then mqtt/mqtt_send under “Available Services”. Enter something similar to the example below into the “Service Data” field.

+
{
+   "topic":"home-assistant/switch/1/on",
+   "payload":"Switch is ON"
+}
+
+
+

The message should appear on the bus:

+
... [homeassistant] Bus:Handling <Event MQTT_MESSAGE_RECEIVED[L]: topic=home-assistant/switch/1/on, qos=0, payload=Switch is ON>
+
+
+

For reading all messages sent on the topic home-assistant to a broker running on localhost:

+
$ mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
+
+
+

For the embedded MQTT broker the command looks like:

+
$ mosquitto_sub -v -V mqttv311 -t "#"
+
+
+

Add the username homeassistant and your API password if needed.

+
+
+ +
+
+ + + + + + + diff --git a/docs/script/editor/index.html b/docs/script/editor/index.html new file mode 100644 index 0000000000..5f44358472 --- /dev/null +++ b/docs/script/editor/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/docs/scripts/conditions/index.html b/docs/scripts/conditions/index.html new file mode 100644 index 0000000000..34aedd8bb4 --- /dev/null +++ b/docs/scripts/conditions/index.html @@ -0,0 +1,578 @@ + + + + + + + + + Conditions - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Conditions +

+
+
+

Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off.

+

AND condition

+

Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid.

+
condition:
+  condition: and
+  conditions:
+    - condition: state
+      entity_id: 'device_tracker.paulus'
+      state: 'home'
+    - condition: numeric_state
+      entity_id: 'sensor.temperature'
+      below: '20'
+
+
+

OR condition

+

Test multiple conditions in 1 condition statement. Passes if any embedded condition is valid.

+
condition:
+  condition: or
+  conditions:
+    - condition: state
+      entity_id: 'device_tracker.paulus'
+      state: 'home'
+    - condition: numeric_state
+      entity_id: 'sensor.temperature'
+      below: '20'
+
+
+

MIXED AND and OR conditions

+

Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid. +This allows you to mix several AND and OR conditions together.

+
condition:
+  condition: and
+  conditions:
+    - condition: state
+      entity_id: 'device_tracker.paulus'
+      state: 'home'
+    - condition: or
+      conditions:
+        - condition: state
+          entity_id: sensor.weather_precip
+          state: 'rain'
+        - condition: numeric_state
+          entity_id: 'sensor.temperature'
+          below: '20'
+
+
+

Numeric state condition

+

This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches the thresholds.

+

If both below and above are specified, both tests have to pass.

+

You can optionally use a value_template to process the value of the state before testing it.

+
condition:
+  condition: numeric_state
+  entity_id: sensor.temperature
+  above: 17
+  below: 25
+  # If your sensor value needs to be adjusted
+  value_template: {{ float(state.state) + 2 }}
+
+
+

State condition

+

Tests if an entity is a specified state.

+
condition:
+  condition: state
+  entity_id: device_tracker.paulus
+  state: not_home
+  # optional: trigger only if state was this for last X time.
+  for:
+    hours: 1
+    minutes: 10
+    seconds: 5
+
+
+

Sun condition

+

The sun condition can test if the sun has already set or risen when a trigger occurs. The before and after keys can only be set to sunset or sunrise. They have a corresponding optional offset value (before_offset, after_offset) that can be added, similar to the sun trigger.

+
condition:
+  condition: sun
+  after: sunset
+  # Optional offset value
+  after_offset: "-1:00:00"
+
+
+
condition:
+    condition: or  # 'when dark' condition: either after sunset or before sunrise
+    conditions:
+      - condition: sun
+        after: sunset
+      - condition: sun
+        before: sunrise
+
+
+

Here is a truth table to clarify the parameters with and without offset:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
commandnightat sunrisedaytimeat sunset
after: sunsetTrueFalse
+ after_offset: "01:00:00"TrueFalse+1h
+ after_offset: "-01:00:00"TrueFalse-1h
before: sunsetFalseTrue
+ before_offset: "01:00:00"FalseTrue+1h
+ before_offset: "-01:00:00"FalseTrue-1h
after: sunriseFalseTrue
+ after_offset: "01:00:00"False+1hTrue
+ after_offset: "-01:00:00"False-1hTrue
before: sunriseTrueFalse
+ before_offset: "01:00:00"True+1hFalse
+ before_offset: "-01:00:00"True-1hFalse
+

Template condition

+

The template condition will test if the given template renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render ‘true’.

+
condition:
+  condition: template
+  value_template: '{{ states.device_tracker.iphone.attributes.battery > 50 }}'
+
+
+

Within an automation, template conditions also have access to the trigger variable as described here.

+

Time condition

+

The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week

+
condition:
+  condition: time
+  # At least one of the following is required.
+  after: '15:00:00'
+  before: '02:00:00'
+  weekday:
+    - mon
+    - wed
+    - fri
+
+
+

Valid values for weekday are mon, tue, wed, thu, fri, sat, sun. +Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am.

+

Zone condition

+

Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the OwnTracks platform and the iCloud platform.

+
condition:
+  condition: zone
+  entity_id: device_tracker.paulus
+  zone: zone.home
+
+
+

Examples

+
    condition:
+      - condition: numeric_state
+        entity_id: sun.sun
+        value_template: ''
+        below: 1
+      - condition: state
+        entity_id: light.living_room
+        state: 'off'
+      - condition: time
+        before: '23:00:00'
+        after: '14:00:00'
+      - condition: state
+        entity_id: script.light_turned_off_5min
+        state: 'off'
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/scripts/editor/index.html b/docs/scripts/editor/index.html new file mode 100644 index 0000000000..b7b5f47221 --- /dev/null +++ b/docs/scripts/editor/index.html @@ -0,0 +1,353 @@ + + + + + + + + + Script Editor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

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

+
+ +
+

Updating your configuration to use the editor

+

The script editor reads and writes to the file scripts.yaml in your configuration folder. Make sure that you have set up the script component to read from it:

+
# 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/docs/scripts/index.html b/docs/scripts/index.html new file mode 100644 index 0000000000..baa1824d55 --- /dev/null +++ b/docs/scripts/index.html @@ -0,0 +1,460 @@ + + + + + + + + + Script Syntax - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Script Syntax +

+
+
+

Scripts are a sequence of actions that Home Assistant will execute. Scripts are available as an entity through the standalone Script component but can also be embedded in automations and Alexa/Amazon Echo configurations.

+

The script syntax basic structure is a list of key/value maps that contain actions. If a script contains only 1 action, the wrapping list can be omitted.

+
# Example script component containing script syntax
+script:
+  example_script:
+    sequence:
+      # This is written using the Script Syntax
+      - service: light.turn_on
+        entity_id: light.ceiling
+      - service: notify.notify
+        data:
+          message: 'Turned on the ceiling light!'
+
+
+

Call a Service

+

The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the service calls page.

+
alias: Bedroom lights on
+service: light.turn_on
+data:
+  entity_id: group.bedroom
+  brightness: 100
+
+
+

Test a Condition

+

While executing a script you can add a condition to stop further execution. When a condition does not return true, the script will finish. There are many different conditions which are documented at the conditions page.

+
condition: state
+entity_id: device_tracker.paulus
+state: 'home'
+
+
+

Delay

+

Delays are useful for temporarily suspending your script and start it at a later moment. We support different syntaxes for a delay as shown below.

+
# Waits 1 hour
+delay: 01:00
+
+
+
# Waits 1 minute, 30 seconds
+delay: 00:01:30
+
+
+
# Waits 1 minute
+delay:
+  # supports milliseconds, seconds, minutes, hours, days
+  minutes: 1
+
+
+
# Waits however many minutes input_number.minute_delay is set to
+# Valid formats include HH:MM and HH:MM:SS
+delay: '00:{{ states.input_number.minute_delay.state | int }}:00'
+
+
+

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

+
# wait until media player have stop the playing
+wait_template: "{{ states.media_player.floor.state == 'stop' }}"
+
+
+
# wait until a valve is < 10 or abort after 1 minutes.
+wait_template: "{{ states.climate.kitchen.attributes.valve < 10 }}"
+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.

+
wait_template: "{{ is_state(trigger.entity_id, 'on') }}"
+
+
+

It is also possible to use dummy variables, e.g., in scripts, when using wait_template.

+
# 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') }}"
+
+
+

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.

+
event: LOGBOOK_ENTRY
+event_data:
+  name: Paulus
+  message: is waking up
+  entity_id: device_tracker.paulus
+  domain: light
+
+
+

You can also use event_data_template to fire an event with custom data. This could be used to pass data to another script awaiting +an event trigger.

+
event: MY_EVENT
+event_data_template:
+  name: myEvent
+  customData: "{{ myCustomVariable }}"
+
+
+

Raise and Consume Custom Events

+

The following automation shows how to raise a custom event called event_light_state_changed with entity_id as the event data. The action part could be inside a script or an automation.

+
- alias: Fire Event
+  trigger:
+    platform: state
+    entity_id: switch.kitchen
+    to: 'on'
+  action:
+    event: event_light_state_changed
+    event_data:
+      state: "on"
+
+
+

The following automation shows how to capture the custom event event_light_state_changed, and retrieve corresponding entity_id that was passed as the event data.

+
- alias: Capture Event
+  trigger:
+    platform: event
+    event_type: event_light_state_changed
+  action:
+    - service: notify.notify
+      data_template:
+        message: "kitchen light is turned {{ trigger.event.data.state }}"
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/scripts/service-calls/index.html b/docs/scripts/service-calls/index.html new file mode 100644 index 0000000000..e4a6bff6d0 --- /dev/null +++ b/docs/scripts/service-calls/index.html @@ -0,0 +1,394 @@ + + + + + + + + + Service Calls - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Service Calls +

+
+
+

Various components allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo.

+

The configuration options to call a config are the same between all components and are described on this page.

+

Examples on this page will be given as part of an automation component configuration but different approaches can be used for other components too.

+

+Use the service developer tool in the frontend to discover available services. +

+

The basics

+

Call the service homeassistant.turn_on on the entity group.living_room. This will turn all members of group.living_room on. You can also omit entity_id and it will turn on all possible entities.

+
service: homeassistant.turn_on
+entity_id: group.living_room
+
+
+

Passing data to the service call

+

You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness.

+
service: light.turn_on
+entity_id: group.living_room
+data:
+  brightness: 120
+  rgb_color: [255, 0, 0]
+
+
+

Use templates to decide which service to call

+

You can use templating support to dynamically choose which service to call. For example, you can call a certain service based on if a light is on.

+
service_template: >
+  {% if states.sensor.temperature.state | float > 15 %}
+    switch.turn_on
+  {% else %}
+    switch.turn_off
+  {% endif %}
+entity_id: switch.ac
+
+
+

Using the Services Developer Tool

+

You can use the Services Developer Tool to test data to pass in a service call. +For example, you may test turning on or off a ‘group’ (See [groups] for more info)

+

To turn a group on or off, pass the following info: +Domain: homeassistant +Service: turn_on +Service Data: { "entity_id": "group.kitchen" }

+

Use templates to determine the attributes

+

Templates can also be used for the data that you pass to the service call.

+
service: thermostat.set_temperature
+data_template:
+  entity_id: >
+    {% if is_state('device_tracker.paulus', 'home') %}
+      thermostat.upstairs
+    {% else %}
+      thermostat.downstairs
+    {% endif %}
+  temperature: {{ 22 - distance(states.device_tracker.paulus) }}
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/benchmark/index.html b/docs/tools/benchmark/index.html new file mode 100644 index 0000000000..58b0c150ec --- /dev/null +++ b/docs/tools/benchmark/index.html @@ -0,0 +1,347 @@ + + + + + + + + + benchmark - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ benchmark +

+
+
+

For testing the performance of Home Assistant the Benchmark script runs until you exit using Control+C.

+

Firing and handling of a million events.

+
$ hass --script benchmark async_million_events
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/check_config/index.html b/docs/tools/check_config/index.html new file mode 100644 index 0000000000..0d235cb25a --- /dev/null +++ b/docs/tools/check_config/index.html @@ -0,0 +1,346 @@ + + + + + + + + + check_config - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ check_config +

+
+
+

Test any changes to your configuration.yaml file before launching Home Assistant. This script allows you to test changes without the need to restart Home Assistant.

+
$ hass --script check_config
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/credstash/index.html b/docs/tools/credstash/index.html new file mode 100644 index 0000000000..de0e9f220c --- /dev/null +++ b/docs/tools/credstash/index.html @@ -0,0 +1,356 @@ + + + + + + + + + credstash - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ credstash +

+
+
+

Using 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 as well as creating a KMS key named credstash as explained in the credstash Readme. After that is complete, you can use the provided script to add secrets to your Home Assistant secret store in credstash.

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

+
http:
+  api_password: !secret http_password
+
+
+

Create an entry in your credstash store.

+
$ hass --script credstash set http_password
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/db_migrator/index.html b/docs/tools/db_migrator/index.html new file mode 100644 index 0000000000..0cde8dfe09 --- /dev/null +++ b/docs/tools/db_migrator/index.html @@ -0,0 +1,397 @@ + + + + + + + + + db_migrator - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ db_migrator +

+
+
+

+This script was only use for 0.36 release cycle! +

+

Starting with 0.36 the InfluxDB component has a new schema to store values in the InfluxDB databases.

+
    +
  • There will no longer be any tags/fields named time.
  • +
  • All numeric fields (int/float/bool) will be stored as float inside InfluxDB database.
  • +
  • All string fields corresponding to state attributes will be renamed as FIELDNAME_str, where FIELDNAME is the state attribute, to avoid type conflicts.
  • +
  • All string fields corresponding to a state will be renamed as state (former value).
  • +
  • Fields named value will always be stored as float.
  • +
  • Fields named state will always be stored as string.
  • +
+

Migration script

+

If you need to migrate your database, you may require to run the influxdb_migrator script. Run the script after upgrade to 0.36 but before the first regular start of hass version 0.36.

+

These are the steps the script will perform:

+
    +
  1. Create a new database (called DBNAME__old) to store old data.
  2. +
  3. Copy data from DBNAME database to DBNAME__old database.
  4. +
  5. Empty DBNAME database (using drop then create). DBNAME database is now considered as the new database.
  6. +
  7. For each measurement of DBNAME__old database:
  8. +
  9. Read all points from the current measurement (in groups of 1000 points by default) and convert them.
  10. +
  11. Send group of points to DBNAME database.
  12. +
  13. Delete the DBNAME__old database if needed.
  14. +
+

Example to run the script:

+
$ hass --script influxdb_migrator \
+    -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \
+    -d INFLUXDB_DB_NAME
+
+
+

Script arguments:

+
required arguments:
+  -d dbname, --dbname dbname  InfluxDB database name
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -H host, --host host  InfluxDB host address
+  -P port, --port port  InfluxDB host port
+  -u username, --username username
+                        InfluxDB username
+  -p password, --password password
+                        InfluxDB password
+  -s step, --step step  How many points to migrate at the same time
+  -o override_measurement, --override-measurement override_measurement
+                        Store all your points in the same measurement
+  -D, --delete          Delete old database
+
+
+
    +
  • If you run the script with only the -h option, you will get a help printout with a short explanation of the different options.
  • +
  • The host option defaults to '127.0.0.1'.
  • +
  • The port option defaults to 8086.
  • +
  • You should be able to omit username and password if InfluxDB authentication is disabled, which it is by default.
  • +
  • The step option defaults to 1000.
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/dev-tools/index.html b/docs/tools/dev-tools/index.html new file mode 100644 index 0000000000..66aa50d38a --- /dev/null +++ b/docs/tools/dev-tools/index.html @@ -0,0 +1,436 @@ + + + + + + + + + Development Tools - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Development Tools +

+
+
+

The frontend contains a section called “Developer Tools”.

+

+ +Screenshot of Home Assistant’s Developer Tools. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SectionIconDescription
Servicesservice developer tool iconCalls services from components
Statesservice developer tool iconSets the representation of an entity
Eventsservice developer tool iconFires events
Templatesservice developer tool iconRenders templates
Infoservice developer tool iconDetails about Home Assistant
+

What can I do with Developer Tools?

+

The Developer Tools is meant for all (not just for the developers) to quickly try out things - like calling services, update states, raising events, and publish messages in mqtt…etc.). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the section in detail.

+

Services

+

This section is used to call Services that are available in the ServiceRegistry.

+

The list of services in the “Service” drop down are automatically populated based on the components that are found in the configuration, automation and script files. If a desired service does not exist, it means either the component is not configured properly or not defined in the configuration, automation or script files.

+

When a Service is selected, and if that service requires an entity_id to be passed, the “Entity” drop down will automatically be populated with corresponding entities.

+

A Service may also require additional input to be passed. It is commonly referred to as “service data”. The service data is only accepted in the JSON format, and it may be optional depending on the service.

+

When an entity is selected from the Entity drop down, it automatically populates service data with the corresponding entity_id. The service data JSON can then be modified to pass additional [optional] parameters. The following is an illustration on how to call a light.turn_on service.

+

To turn on a light bulb, use the following steps:

+
    +
  1. Select light.turn_on from the Service drop down
  2. +
  3. Select the entity (typically the light bulb) from the Entity drop down (if no entity_id is selected, it turns on ALL lights)
  4. +
  5. If an entity is selected, the service data is populated with basic JSON that will be passed to the service. An additional data can also be passed by updating the JSON as below.
  6. +
+
{
+  "entity_id": "light.bedroom",
+  "brightness": 255,
+  "rgb_color": [255, 0, 0]
+}
+
+
+

States

+

This section shows all the available entities, their corresponding state and the attribute values. The state and the attribute information is what Home Assistant sees at run time. To update the entity with a new state, or a new attribute value, click on the entity, scroll to the top, and modify the values, and click on “SET STATE” button.

+

Note that this is the state representation of a device within Home Assistant. That means, it is what Home Assistant sees, and it does not communicate with the actual device in any manner. The updated information can still be used to trigger events, and state changes. To communicate with the actual device, it is recommended to call services in the services section above, instead of updating state.

+

For ex: Changing the light.bedroom state from off to on does not turn on the light. If there is an automation that triggers on the state change of the light.bedroom, it will be triggered – even though the actual bulb has not turned on. Also, when the bulb state changes – the state information will be overridden. In other words, the changes that are made through the “States” section are temporary, and is recommended to use for testing purposes only.

+

Events

+

This Events section is as basic as it can get. It does only one thing – fires events on the event bus. +To fire an event, simply type the name of the event, and pass the event data in JSON format. +For ex: To fire a custom event, enter the event_type as event_light_state_changed and the event data JSON as

+
{ "state":"on" }
+
+
+

If there is an automation that handles that event, it will be automatically triggered. See below:

+
- alias: Capture Event
+  trigger:
+    platform: event
+    event_type: event_light_state_changed
+  action:
+    - service: notify.notify
+      data_template:
+        message: "Light is turned "
+
+
+

Template Editor

+

The Template Editor provides a way to test the template code quickly. When the Template Editor page is loaded, it comes with a sample template code that illustrates how the code can be written and tested.

+

It has two sections, code goes on the left hand side, and the output is shown on the right hand side. The code can be removed and replaced, and when the page is loaded/refreshed, the default sample code will be loaded back.

+

It is a good practice to test the template code in the template editor prior to putting it in automations and scripts.

+

For more information about jinja2, visit jinja2 documentation, and also read templating document here

+

mqtt

+

This section is only visible if the MQTT is configured. To configure MQTT, add mqtt: to the configuration.yaml file. For more information, refer to mqtt +Even though MQTT in general provides deeper functionality, the developer tools section of MQTT is limited to publishing messages to a given topic. It supports templates for the payload. To publish a message, simply specify the topic name and the payload and click “PUBLISH” button.

+

Info

+

The Information tab simply provides information about the current installed version, additional links and credits. The tab also contains a section that shows syslog information, and the contents of home-assistant.log with an option to clear and refresh the logs.

+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/ensure_config/index.html b/docs/tools/ensure_config/index.html new file mode 100644 index 0000000000..7fd568c5cc --- /dev/null +++ b/docs/tools/ensure_config/index.html @@ -0,0 +1,346 @@ + + + + + + + + + ensure_config - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ ensure_config +

+
+
+

This script checks if the configuration.yaml file exists. If the file is not available, one is created.

+
$ hass --script ensure_config
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/hass/index.html b/docs/tools/hass/index.html new file mode 100644 index 0000000000..e763447dad --- /dev/null +++ b/docs/tools/hass/index.html @@ -0,0 +1,374 @@ + + + + + + + + + hass - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ hass +

+
+
+

The command-line part of Home Assistant is hass.

+
$ hass -h
+usage: hass [-h] [--version] [-c path_to_config_dir] [--demo-mode] [--debug]
+            [--open-ui] [--skip-pip] [-v] [--pid-file path_to_pid_file]
+            [--log-rotate-days LOG_ROTATE_DAYS] [--runner] [--script ...]
+            [--daemon]
+
+Home Assistant: Observe, Control, Automate.
+
+optional arguments:
+  -h, --help            show this help message and exit
+  --version             show program's version number and exit
+  -c path_to_config_dir, --config path_to_config_dir
+                        Directory that contains the Home Assistant
+                        configuration
+  --demo-mode           Start Home Assistant in demo mode
+  --debug               Start Home Assistant in debug mode
+  --open-ui             Open the webinterface in a browser
+  --skip-pip            Skips pip install of required packages on startup
+  -v, --verbose         Enable verbose logging to file.
+  --pid-file path_to_pid_file
+                        Path to PID file useful for running as daemon
+  --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/docs/tools/index.html b/docs/tools/index.html new file mode 100644 index 0000000000..5b22bc4a31 --- /dev/null +++ b/docs/tools/index.html @@ -0,0 +1,343 @@ + + + + + + + + + Tools - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Tools +

+
+
+

Home Assistant ships a couple of helpers for the command-line and the frontend which simplify common tasks, are helping with migrations, and ensure that Home Assistant runs properly.

+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/influxdb_import/index.html b/docs/tools/influxdb_import/index.html new file mode 100644 index 0000000000..b7eb91cb87 --- /dev/null +++ b/docs/tools/influxdb_import/index.html @@ -0,0 +1,386 @@ + + + + + + + + + influxdb_import - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ influxdb_import +

+
+
+

If you want to import all the recorded data from your recorder database you can use the data import script. It will read all your state_change events from the database and add them as data-points to the InfluxDB. You can specify the source database either by pointing the --config option to the config directory which includes the default SQLite database or by giving a sqlalchemy connection URI with --uri.

+

The writing to InfluxDB is done in batches that can be changed with --step.

+

You can control, which data is imported by using the command line options --exclude_entities and --exclude_domains. Both get a comma separated list of either entity-ids or domain names that are excluded from the import.

+

To test what gets imported you can use the --simulate option, which disables the actual write to the InfluxDB instance. This only writes the statistics how much points would be imported from which entity.

+

Example to run the script:

+
$ hass --script influxdb_import --config CONFIG_DIR \
+    -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \
+    --dbname INFLUXDB_DB_NAME --exclude_domains automation,configurator
+
+
+

Script arguments:

+
required arguments:
+  -d dbname, --dbname dbname
+                        InfluxDB database name
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -c path_to_config_dir, --config path_to_config_dir
+                        Directory that contains the Home Assistant
+                        configuration
+  --uri URI             Connect to URI and import (if other than default
+                        sqlite) eg: mysql://localhost/homeassistant
+
+  -H host, --host host  InfluxDB host address
+  -P port, --port port  InfluxDB host port
+  -u username, --username username
+                        InfluxDB username
+  -p password, --password password
+                        InfluxDB password
+  -s step, --step step  How many points to import at the same time
+  -t tags, --tags tags  Comma separated list of tags (key:value) for all
+                        points
+  -D default_measurement, --default-measurement default_measurement
+                        Store all your points in the same measurement
+  -o override_measurement, --override-measurement override_measurement
+                        Store all your points in the same measurement
+  -e exclude_entities, --exclude_entities exclude_entities
+                        Comma separated list of excluded entities
+  -E exclude_domains, --exclude_domains exclude_domains
+                        Comma separated list of excluded domains
+  -S, --simulate        Do not write points but simulate preprocessing
+                        and print statistics
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/influxdb_migrator/index.html b/docs/tools/influxdb_migrator/index.html new file mode 100644 index 0000000000..807cd70dff --- /dev/null +++ b/docs/tools/influxdb_migrator/index.html @@ -0,0 +1,366 @@ + + + + + + + + + influxdb_migrator - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ influxdb_migrator +

+
+
+

Script to convert an old-structure Influx database to a new one.

+

Example to run the script:

+
$ hass --script influxdb_migrator -H IP_INFLUXDB_HOST \
+    -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \
+    --dbname INFLUXDB_DB_NAME
+
+
+

Script arguments:

+
optional arguments:
+  -h, --help            show this help message and exit
+  -d dbname, --dbname dbname
+                        InfluxDB database name
+  -H host, --host host  InfluxDB host address
+  -P port, --port port  InfluxDB host port
+  -u username, --username username
+                        InfluxDB username
+  -p password, --password password
+                        InfluxDB password
+  -s step, --step step  How many points to migrate at the same time
+  -o override_measurement, --override-measurement override_measurement
+                        Store all your points in the same measurement
+  -D, --delete          Delete old database
+
+
+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/keyring/index.html b/docs/tools/keyring/index.html new file mode 100644 index 0000000000..c1c7e5309c --- /dev/null +++ b/docs/tools/keyring/index.html @@ -0,0 +1,364 @@ + + + + + + + + + keyring - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ keyring +

+
+
+

Using Keyring is an alternative way to secrets.yaml. The secrets can be managed from the command line via the keyring script.

+
$ hass --script keyring --help
+
+
+

To store a password in keyring, replace your password or API key with !secret and an identifier in configuration.yaml file.

+
http:
+  api_password: !secret http_password
+
+
+

Create an entry in your keyring.

+
$ hass --script keyring set http_password
+
+
+

If you launch Home Assistant now, you will be prompted for the keyring password to unlock your keyring.

+
$ hass
+Config directory: /home/homeassistant/.homeassistant
+Please enter password for encrypted keyring:
+
+
+

+ If you are using the Python Keyring, autostarting of Home Assistant will no longer work. +

+
+
+ +
+
+ + + + + + + diff --git a/docs/tools/scripts/index.html b/docs/tools/scripts/index.html new file mode 100644 index 0000000000..ccde1f3cc3 --- /dev/null +++ b/docs/tools/scripts/index.html @@ -0,0 +1,342 @@ + + + + + + + + + Tools - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/docs/z-wave/adding/index.html b/docs/z-wave/adding/index.html new file mode 100644 index 0000000000..537653cfcf --- /dev/null +++ b/docs/z-wave/adding/index.html @@ -0,0 +1,392 @@ + + + + + + + + + Z-Wave Devices - Adding and Removing - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Devices - Adding and Removing +

+
+
+

Adding Non-Secure Devices

+

To add (include) a non-secure Z-Wave device to your system:

+
    +
  1. Go to the Z-Wave control panel in the Home Assistant frontend
  2. +
  3. Click the Add Node button in the Z-Wave Network Management card - this will place the controller in inclusion mode
  4. +
  5. Activate your device to be included by following the instructions provided with the device
  6. +
  7. With the device in its final location, run a Heal Network
  8. +
+

Don’t use this for secure devices, since this is likely to limit the features the device supports.

+

+Don’t use the OpenZWave control panel (OZWCP), or the physical button on a controller, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won’t have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports. +

+

When you add a device, it may initially appear without a specific entity ID (eg zwave.__) and without other identifying information. Running a Heal should help speed this process up, and you’ll need to run a Heal anyway so that all the devices in your Z-Wave network learn about the new device. You might need to restart Home Assistant (not reboot the system) to have the entity ID fully visible.

+

Network Key

+

Security Z-Wave devices require a network key. Some devices only expose their full capabilities when included this way. You should always read the manual for your device to find out the recommended inclusion method. Note, secure devices that had been connected to another hub/network in the past may have a “theft protection” feature which requires to first exclude the device successfully from the previous hub using the previous hub/Software setup before it can be enrolled in a new hub/network.

+

A valid network key will be a 16 byte value, defined in the zwave section of your configuration, such as the following example:

+
zwave:
+   usb_path: /dev/ttyACM0
+   network_key: "0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10"
+
+
+

Each individual value in the defined key can be anywhere from 0x00 to 0xFF. Define your own key by making changes to the above example key or for additional security try one of the two scripts mentioned below.

+

Network Key

+

An easy script to generate a random key:

+
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
+
+
+

On macOS, this script will generate a random key:

+
cat /dev/urandom | LC_CTYPE=C tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
+
+
+

+Ensure you keep a backup of this key. If you have to rebuild your system and don’t have a backup of this key, you won’t be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. +

+

Adding Secure Devices

+

After defining your network key, follow these steps to add (include) a secure Z-Wave device:

+
    +
  1. Go to the Z-Wave control panel in the Home Assistant frontend
  2. +
  3. Click the Add Node Secure button in the Z-Wave Network Management card - this will place the controller in inclusion mode
  4. +
  5. Activate your device to be included by following the instructions provided with the device
  6. +
  7. With the device in its final location, run a Heal Network
  8. +
+

Removing Devices

+

To remove (exclude) a Z-Wave device from your system:

+
    +
  1. Go to the Z-Wave control panel in the Home Assistant frontend
  2. +
  3. Click the Remove Node button in the Z-Wave Network Management card - this will place the controller in exclusion mode
  4. +
  5. Activate your device to be excluded by following the instructions provided with the device
  6. +
  7. Run a Heal Network so all the other nodes learn about its removal
  8. +
+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/control-panel/index.html b/docs/z-wave/control-panel/index.html new file mode 100644 index 0000000000..9b80232668 --- /dev/null +++ b/docs/z-wave/control-panel/index.html @@ -0,0 +1,466 @@ + + + + + + + + + Z-Wave Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Control Panel +

+
+
+

+ If you don’t see the Configuration menu on the menubar, where you’ll find the Z-Wave menu, see here. +

+

Z-Wave Network Management

+

Here is where you include and exclude Z-Wave devices from your network.

+
    +
  • Add Node puts the controller into inclusion mode, so you can include (add) a device to your Z-Wave network
  • +
  • Add Node Secure puts the controller into secure inclusion mode (this requires that you’ve created a security key)
  • +
  • Remove Node puts the controller into exclusion mode, so you can exclude (remove) a device. Note that you can exclude a non-secure device that’s been added to another network
  • +
  • +

    Cancel Command cancels any of the above

    +
  • +
  • Heal Network tells the controller to “heal” the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing.
  • +
  • Start Network starts the Z-Wave network
  • +
  • Stop Network stops the Z-Wave network
  • +
  • Soft Reset tells the controller to do a “soft reset.” This is not supposed to lose any data, but different controllers can behave differently to a “soft reset” command, and may cause the Z-Wave network to hang.
  • +
  • Test Network tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked “presumed dead”.
  • +
  • Save Config Saves the current cache of the network to zwcfg_[home_id].xml
  • +
+

Z-Wave Node Management

+
    +
  • Refresh Node refreshes the information on the node and its entities. If used on a battery powered device, the device will first need to wake for this to work.
  • +
  • Remove Failed Node will remove a failed node from the network. The node needs to be on the controller’s Failed Node List (marked as is_failed: true), otherwise this command will fail.
  • +
  • Replace Failed Node will replace a failed device with another. If the node is not in the controller’s Failed Node List, or the node responds, this command will fail.
  • +
  • +

    Print Node prints all state of Z-Wave node to the console log

    +
  • +
  • +

    Rename Node sets a node’s name - this won’t happen immediately, and requires you to restart Home Assistant (not reboot) to set the new name

    +
  • +
  • +

    Heal Node starts healing of the node.(Update neighbor list and update return routes)

    +
  • +
  • Test Node sends no_op test messages to the node. This could in theory bring back a dead node.
  • +
+

+Since 0.63 and the new experimental entity registry Rename Node no longer changes the entity id for anything other than the zwave. entity for the node (it does change, the default friendly_name and old_entity_id and new_entity_id attributes for all the entities). See this issue. +

+

+Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details. +

+

Entities of this node

+

This is a dropdown where you can select all the entities of this node. Once selected you can then use:

+
    +
  • Refresh Entity to refresh just that entity’s values
  • +
  • Entity Attributes to display the attributes of that entity (eg its friendly name, the ID of the node, etc)
  • +
+

Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn’t send updates itself. Do see the information on polling here, since excessive polling can break your Z-Wave network.

+

The Polling intensity says how many poll intervals does is this device polled on. For example, if you set 2 then it’s polled on every second interval.

+

You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don’t want it to appear in Home Assistant, or if you’ve got a device that’s failed and you’re unable to exclude it.

+

Node Information

+

This will display the Z-Wave related information about the node:

+
    +
  • averageRequestRTT The average Round Trip Time (RTT) of requests sent to the node, in milliseconds. A value of 250, for example, is a quarter of a second.
  • +
  • averageResponseRTT The average Round Trip Time of responses to requests
  • +
  • battery_level Battery powered devices only - the battery level, which may be rounded to the nearest 10
  • +
  • capabilities A comma separated list of the capabilities of the device
  • +
  • friendly_name The name you specified to be displayed
  • +
  • is_awake Whether the device is awake or not
  • +
  • is_failed Whether the device has been marked as failed. The controller won’t try to contact failed devices.
  • +
  • is_info_received True once the controller has received the node information from the node.
  • +
  • is_ready When you start the network (or Home Assistant) it will take a short while before all devices are ready, this shows which aren’t yet ready.
  • +
  • is_zwave_plus True for any Z-Wave Plus devices (note that controllers always report false, regardless of whether they are Plus devices or not)
  • +
  • lastRequestRTT The Round Trip Time of the last request
  • +
  • lastResponseRTT The Round Trip Time of the response to the last request
  • +
  • manufacturer_name The name of the manufacturer, as supplied by OpenZWave
  • +
  • max_baud_rate The maximum bandwidth the device supports, most modern devices will support 40,000 or higher
  • +
  • new_entity_id In 0.47, Home Assistant introduced a new naming convention for entities, this shows the new naming convention
  • +
  • node_id The unique node ID of this node
  • +
  • node_name The base name of this node, this is used to build the entity ID of all entities of this node
  • +
  • old_entity_id If new_entity_ids: false has been configured, then this is the entity_id that will be used. Support for this will be removed in the future
  • +
  • product_name The product name of the device, as supplied by OpenZWave
  • +
  • query_stage The query stage for this device (see here for details)
  • +
  • receivedCnt The number of messages received from the device
  • +
  • receivedDups The number of duplicate messages received from the device
  • +
  • receivedTS The date and time the last message was received from the devices
  • +
  • receivedUnsolicited How many unsolicited messages were received
  • +
  • retries How many retries have been made to send messages to this node
  • +
  • sentCnt How many messages have been sent to the node
  • +
  • sentFailed How many messages that were sent weren’t acknowledged
  • +
  • sentTS The date and time the last message was sent to the ndoe
  • +
  • wake_up_interval Battery powered devices only - the wakeup interval of the device, in seconds
  • +
+

Node Values

+

Allows you to rename the entities of the node. For example, maybe for the sensor front_door, you want to rename the value seismic_intensity to shake. The entity_id for that sensor will then change from sensor.front_door_seismic_intensity to sensor.front_door_shake.

+

Node group associations

+

Where the device supports the Association command class, this will allow you to associate the device with another. OpenZWave will automatically associate the device with the controller, to provide instant updates when the device doesn’t support the Hail command class.

+

You can use this to enable one device to directly control another. This is primarily useful for remote controls that operate lights or switches, or where you want to have multiple devices operate as one.

+

There may be multiple groups, that are used for different purposes. The manual of your device will explain what each group is for.

+

Node config options

+

You can set the wakeup interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered.

+

Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select Set Config Parameter to updated it. Battery powered devices will be updated the next time they wake.

+

Node user codes

+

If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Below the input you will see your actual code. For normal nodes this is as follows:

+
\x30 = 0
+\x31 = 1
+\x32 = 2
+\x33 = 3
+\x34 = 4
+\x35 = 5
+\x36 = 6
+\x37 = 7
+\x38 = 8
+\x39 = 9
+
+
+

Some non compliant device like tag readers, have implemented to use raw hex code. +Please refer to a hex ascii table to set your code. Example: http://www.asciitable.com/

+

Here is a small Python program than will take numbers on the command line and print the correct sequence for compliant devices:

+
#! /usr/bin/python3
+import sys
+
+translations = {}
+
+for x in range(0, 10):
+    translations["%s" % x] = "\\x3%s" % x
+
+for c in sys.argv[1]:
+    print(translations[c], end='')
+
+
+

OZW Log

+

If you want to only retrieve some lines at the end of the log, you can specify that with the selection field. Max is the last 1000 lines and minimum is 0 which equals the whole log. If this is not specified, you will retrieve the whole log. +Select Refresh to display the log if you need it to check activities.

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/controllers/index.html b/docs/z-wave/controllers/index.html new file mode 100644 index 0000000000..fc7ee7187e --- /dev/null +++ b/docs/z-wave/controllers/index.html @@ -0,0 +1,430 @@ + + + + + + + + + Z-Wave Controllers - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Controllers +

+
+
+

Supported Z-Wave USB Sticks & Hardware Modules

+

You need to have a supported Z-Wave USB stick or module installed.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DeviceWorks on LinuxWorks on WindowsWorks on OSX
Aeotec Z-Stick  
Aeotec Z-Stick Series 2  
Aeotec Z-Stick Series 5 
Pine64 Z-Wave Module  
Razberry GPIO Module  
Seluxit ViaSens 100   
Sigma Designs UZB Stick   
Tricklestar   
Vision USB Stick   
ZWave.me UZB1  
+

+ If you’re using Hass.io or running HASS in a Docker container, it’s recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through. +

+

Stick Alternatives

+

The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support:

+ +

Controller Notes

+

Aoetec Stick

+

By default this will turn on “disco lights”, which you can turn off by following the instructions in the device specific page

+

Razberry Board

+

You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there’s only one on the Pi3). You do this by following the instructions in the device specific page

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/device-specific/index.html b/docs/z-wave/device-specific/index.html new file mode 100644 index 0000000000..aa47e51ed0 --- /dev/null +++ b/docs/z-wave/device-specific/index.html @@ -0,0 +1,635 @@ + + + + + + + + + Z-Wave Device Specific Settings - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Device Specific Settings +

+
+
+

Device Categories

+

Motion or alarm sensors

+

In order for Home Assistant to recognize the sensor properly, you will need to change its configuration from Basic Set (default) to Binary Sensor report or Alarm report. +These devices will either show as a binary sensor or a sensor called Alarm xxxx and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual.

+

You can set the settings of the Z-Wave device through the Z-Wave control panel.

+

Locks and other secure devices

+

These devices require a network key to be set for the Z-Wave network before they are paired, using the Add Node Secure option.

+

Home Assistant stores logs from Z-Wave in OZW_log.txt in the Home Assistant config directory, when you pair a secure device you should see communication from the node with lines starting with info: NONCES in OZW_log.txt when the device is paired successfully with a secure connection.

+

Specific Devices

+

Aeotec Z-Stick

+

It’s totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don’t like this behavior it can be turned off.

+

Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected.

+

Turn off “Disco lights”:

+
$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00
+
+
+

Turn on “Disco lights”:

+
$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00
+
+
+

Razberry Board

+

You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there’s only one on the Pi3). You do this by adding the following to the end of /boot/config.txt:

+
dtoverlay=pi3-disable-bt
+
+
+

Then disable the Bluetooth modem service:

+
$ sudo systemctl disable hciuart
+
+
+

Finally, reboot to make those changes active. It’s been reported that this is also required on the Pi2.

+

+ If you’ve installed the Z-Way software, you’ll need to ensure you disable it before you install Home Assistant or you won’t be able to access the board. Do this with sudo /etc/init.d/z-way-server stop; sudo update-rc.d z-way-server disable. +

+

Aeon Minimote

+

Here’s a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into automation.yaml.

+
  - id: mini_1_pressed
+    alias: 'Minimote Button 1 Pressed'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 1
+  - id: mini_1_held
+    alias: 'Minimote Button 1 Held'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 2
+  - id: mini_2_pressed
+    alias: 'Minimote Button 2 Pressed'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 3
+  - id: mini_2_held
+    alias: 'Minimote Button 2 Held'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 4
+  - id: mini_3_pressed
+    alias: 'Minimote Button 3 Pressed'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 5
+  - id: mini_3_held
+    alias: 'Minimote Button 3 Held'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 6
+  - id: mini_4_pressed
+    alias: 'Minimote Button 4 Pressed'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 7
+  - id: mini_4_held
+    alias: 'Minimote Button 4 Held'
+    trigger:
+      - platform: event
+        event_type: zwave.scene_activated
+        event_data:
+          entity_id: zwave.aeon_labs_minimote_1
+          scene_id: 8
+
+
+

Zooz Toggle Switches

+

Some models of the Zooz Toggle switches ship with an instruction manual with incorrect instruction for Z-Wave inclusion/exclusion. The instructions say that the switch should be quickly switched on-off-on for inclusion and off-on-off for exclusion. However, the correct method is on-on-on for inclusion and off-off-off for exclusion.

+

Central Scene configuration

+

To provide Central Scene support you need to shut Home Assistant down and modify your zwcfg_*.xml file according to the following guides.

+

HomeSeer Switches

+

For the HomeSeer devices specifically, you may need to update the COMMAND_CLASS_CENTRAL_SCENE for each node in your zwcfg file with the following:

+
			<CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" innif="true" scenecount="0">
+				<Instance index="1" />
+                <Value type="int" genre="system" instance="1" index="0" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="2" />
+        		<Value type="int" genre="user" instance="1" index="1" label="Top Button Scene" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+        		<Value type="int" genre="user" instance="1" index="2" label="Bottom Button Scene" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+			</CommandClass>
+
+
+

Below is a table of the action/scenes for the HomeSeer devices (as a reference for other similar devices):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Actionscene_idscene_data
Single tap on10
Single tap off20
Double tap on13
Double tap off23
Triple tap on14
Triple tap off24
Tap and hold on12
Tap and hold off22
+

Fibaro Button FGPB-101-6 v3.2

+ +

For the Button, you may need to update the COMMAND_CLASS_CENTRAL_SCENE for each node in your zwcfg file with the following:

+
      <CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" innif="true" scenecount="0">
+        <Instance index="1" />
+          <Value type="int" genre="system" instance="1" index="0" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+          <Value type="int" genre="system" instance="1" index="1" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3" />
+      </CommandClass>
+
+
+

Below is a table of the action/scenes for the Button (as a reference for other similar devices):

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Actionscene_idscene_data
Single tap on10
Double tap on13
Triple tap on14
+

Tap and hold wakes up the Button.

+

Aeotec Wallmote

+ +

For the Aeotec Wallmote, you may need to update the COMMAND_CLASS_CENTRAL_SCENE for each node in your zwcfg file with the following:

+
      <CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="5" innif="true" scenecount="0">
+        <Instance index="1" />
+          <Value type="int" genre="system" instance="1" index="0" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+          <Value type="int" genre="system" instance="1" index="1" label="Button One" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+          <Value type="int" genre="system" instance="1" index="2" label="Button Two" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+          <Value type="int" genre="system" instance="1" index="3" label="Button Three" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+          <Value type="int" genre="system" instance="1" index="4" label="Button Four" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+          <Value type="int" genre="system" instance="1" index="5" label="Other" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
+      </CommandClass>
+
+
+

Below is a table of the action/scenes for the Wallmote (as a reference for other similar devices):

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Actionscene_idscene_data
Button one single tap10
Button one hold12
Button one release11
Button two single tap20
Button two hold22
Button two release21
Button three single tap30
Button three hold32
Button three release31
Button four single tap40
Button four hold42
Button four release41
+

WallC-S Switch

+

Use the same configuration as for the Aeotec Wallmote.

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/devices/index.html b/docs/z-wave/devices/index.html new file mode 100644 index 0000000000..5132d38dc4 --- /dev/null +++ b/docs/z-wave/devices/index.html @@ -0,0 +1,381 @@ + + + + + + + + + Z-Wave Devices - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Devices +

+
+
+

Devices, Nodes, Entities, what?

+

The device is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices:

+
    +
  • Controllers - all Z-Wave networks need to have one of these, though some may have two (a primary and a secondary)
  • +
  • Sensors - devices that tell you about the environment, these could be flood sensors, motion sensors, temperature sensors and so on
  • +
  • Actors or actuators - devices that change their environment, for example light switches, dimmers, thermostats (many of these will also have a sensor function)
  • +
+

Many sensors and actors can directly control other devices through a capability called association, without the use of an automation, these are known as routing slaves. This will be a very simple control, such as turning a light on when a motion sensor is activated, and off when it stops detecting motion.

+

The node is the presence of the device on the Z-Wave mesh. Once you’ve added a device to Home Assistant, the node is represented by an entity_id that starts with zwave.

+

The entity is an individual component of the node. It may be a sensor that you read from, or a control that you operate. For any node, there will be at least one entity (for the node itself) and if it exposes any controls or sensors there will be at least one entity per control or sensor. The entities that are created depend on the Command Class the device supports.

+

Z-Wave, Plus, Security 2

+

There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backwards compatible.

+

Z-Wave Plus

+

The key improvements are:

+
    +
  • Improved battery life (50% increase)
  • +
  • Improved range (50% increase) if all your devices are Z-Wave Plus
  • +
  • Higher bandwidth and improved noise immunity if all your devices are Z-Wave Plus
  • +
  • Improved self-healing and fault tolerance
  • +
+

Z-Wave Security 2

+

From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (March 2018) OpenZWave does not support the S2 framework.

+

Device power

+

Your Z-Wave mesh network is built with the devices that are mains powered (whether directly, or via a USB adapter), these relay traffic for other nodes, building the network. These devices are always awake and you can query them, or send configuration changes, at any time.

+

Battery powered devices spend most of their time asleep, unable to relay traffic, to be queried, or receive changes. Changes sent while a device is asleep will be queued and sent the next time the device wakes. Details of the default wake interval, and how to manually wake the device (if supported) will be detailed in the devices’s manual. Some battery powered devices (primarily locks and thermostats) support beaming (the Beam command class) that allows them to be remotely woken. This does require that all devices in the network responsible for relaying the commands between the controller and the device also support beaming.

+

+The Z-Wave capability routing doesn’t mean the device routes traffic, it actually means that it’s able to control other devices. You’ll see this capability on most remotes and switches. +

+

Instant Status

+

Older designs of Z-Wave devices may not support Instant Status (the Hail command class), because of a patent that was held by Lutron Electronics. Some manufacturers paid to use it, others didn’t and so those devices may not report on changes. That patent expired in 2016, so new designs should support this.

+

As long as your device lists Hail or Association in its Controlled Command Classes, then you’ll get instant status updates. Devices that list Central Scene in their Controlled Command Classes in theory will also work this way, once OpenZWave supports the Central Scene class. You can check your device on the Z-Wave alliance site, looking at the Command Classes link, then at the Controlled Command Classes section.

+

Polling

+

Where a device doesn’t send updates on status changes to the controller, you can work around this by using a thing called Polling. That causes the controller to ask the device to provide an update on all its sensors and states. This will cause a lot of traffic on the network, and if you poll too many devices too quickly, you can effectively break your Z-Wave network. Polling should only be used where there is no other choice, and you should use as large a polling interval as possible. Ideally you should replace the device.

+

For example, with polling_interval=60000 (which is the default) if you have 10 devices that are being polled, if a device can receive and acknowledge the poll within one second, then it will take 10 seconds to complete the polling list, which leaves 50 seconds left for normal traffic. The more devices you poll, and the shorter the interval, the less bandwidth that’s available for normal traffic.

+

Central Scene support

+

The Central Scene command class isn’t yet supported in OpenZWave (there is work in progress to provide it it), though Home Assistant has introduced some support with change 9178 which was part of 0.53 and documented here.

+

Is my device supported

+

You can check to see if OpenZWave supports your particular device by looking at the OpenZWave github. Be aware that being listed here doesn’t mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months.

+

Even if your device isn’t listed there, it’s likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how you can add support for your device if it isn’t listed.

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/entities/index.html b/docs/z-wave/entities/index.html new file mode 100644 index 0000000000..c8f3d75a1a --- /dev/null +++ b/docs/z-wave/entities/index.html @@ -0,0 +1,503 @@ + + + + + + + + + Z-Wave Entity Naming - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Entity Naming +

+
+
+

+This is a work in progress, based upon reports in the forum, the author’s own devices, and reading of various documentation. It will be incomplete, so if you have a device that isn’t reported here, or have a device that reports a different value, please provide a report in the Z-Wave section of the forum or the #zwave channel on Discord. +

+

Binary Sensor

+

Devices that support the Binary Sensor command class will create one (or more) entities starting with binary_sensor. For example, if the node is door_sensor then the binary sensor entity will be binary_sensor.door_sensor.

+

These will normally be on when the sensor is active, otherwise they will be off. Some devices use on for closed, and some use on for open, and some devices allow you to change how they report.

+

Alarm

+

This is for a single purpose sensor, multi sensors are explained under Multi Sensor.

+

Devices (usually sensors) that support the Alarm command class will create entities starting with sensor, and with some generic suffixes, and a suffix that relates to the supported alarm class. For example, the smoke detector lounge will have an entity sensor.lounge_smoke, and possibly also sensor.lounge_alarm_type and sensor.lounge_alarm_level. If the device creates a binary_sensor entity, it is recommended to use that rather then the sensor entity.

+

Alarm Type Entity

+
    +
  • alarm_type: Reports the type of the sensor +
      +
    • 0: General purpose
    • +
    • 1: Smoke sensor
    • +
    • 2: Carbon Monoxide (CO) sensor
    • +
    • 3: Carbon Dioxide (CO2) sensor
    • +
    • 4: Heat sensor
    • +
    • 5: Water leak sensor
    • +
    • 6: Access control
    • +
    +
  • +
+

Alarm Level Entity

+

The meaning of the alarm_level entity depends on the nature of the alarm sensor

+

Smoke, CO, and CO2

+
    +
  • 1: Detection - will include a Node Location Report
  • +
  • 2: Detection (unknown location)
  • +
  • 254: Unknown event
  • +
+

Heat

+
    +
  • 1: Overheat detected - will include a Node Location Report
  • +
  • 2: Overheat detected (unknown location)
  • +
  • 3: Rapid temperature rise - will include a Node Location Report
  • +
  • 4: Rapid temperature rise (unknown location)
  • +
  • 5: Underheat detection - will include a Node Location Report
  • +
  • 6: Underheat detection (unknown location)
  • +
  • 254: Unknown event
  • +
+

Water leak

+
    +
  • 1: Water leak detected - will include a Node Location Report
  • +
  • 2: Water leak detected (unknown location)
  • +
  • 3: Water level dropped - will include a Node Location Report
  • +
  • 4: Water level dropped (unknown location)
  • +
  • 254: Unknown event
  • +
+

Access control

+
    +
  • 1: Manual lock
  • +
  • 2: Manual unlock
  • +
  • 3: RF lock
  • +
  • 4: RF unlock
  • +
  • 5: Keypad lock - will include the User Identifier of the User Code Report
  • +
  • 6: Keypad unlock - will include the User Identifier of the User Code Report
  • +
  • 254: Unknown event
  • +
+

Burglar

+
    +
  • 1: Intrusion - will include a Node Location Report
  • +
  • 2: Intrusion (unknown location)
  • +
  • 3: Tampering (case opened)
  • +
  • 4: Tampering (invalid code)
  • +
  • 5: Glass break - will include a Node Location Report
  • +
  • 6: Glass break (invalid code)
  • +
  • 254: Unknown event
  • +
+

Power Management

+
    +
  • 1: Power applied
  • +
  • 2: AC disconnected
  • +
  • 3: AC re-connected
  • +
  • 4: Surge detection
  • +
  • 5: Voltage drop or drift
  • +
  • 254: Unknown event
  • +
+

System Alarm

+
    +
  • 1: System hardware failure
  • +
  • 2: System software failure
  • +
  • 254: Unknown event
  • +
+

Emergency Alarm

+
    +
  • 1: Contact Police
  • +
  • 2: Contact Fire Service
  • +
  • 3: Contact Medical Service
  • +
  • 254: Unknown event
  • +
+

Alarm Clock

+
    +
  • 1: Wake up
  • +
  • 254: Unknown event
  • +
+

Access Control Entity

+
    +
  • access_control: These may vary between brands +
      +
    • 22: Open
    • +
    • 23: Closed
    • +
    • 254: Deep sleep
    • +
    • 255: Case open
    • +
    +
  • +
+

If your device has an access_control entity, but not a binary_sensor equivalent, you can use a template binary sensor to create one:

+
binary_sensor:
+  - platform: template
+    sensors: 
+      YOUR_SENSOR:
+        friendly_name: "Friendly name here"
+        value_template: >- 
+          {%- if is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') -%}
+          true
+          {%- else -%}
+          false
+          {%- endif -%}
+
+
+

Burglar Entity

+
    +
  • burglar: These may vary between brands +
      +
    • 0: Not active
    • +
    • 2: Smoke (?)
    • +
    • 3: Tamper
    • +
    • 8: Motion
    • +
    • 22: Open
    • +
    • 23: Closed
    • +
    • 254: Deep sleep
    • +
    • 255: Case open
    • +
    +
  • +
+

If your device has a burglar entity, but not a binary_sensor equivalent, you can use a template binary sensor to create one:

+
binary_sensor:
+  - platform: template
+    sensors: 
+      YOUR_SENSOR:
+        friendly_name: "Friendly name here"
+        value_template: >-
+          {%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%}
+          true
+          {%- else -%}
+          false
+          {%- endif -%}
+
+
+

Source Node ID Entity

+
    +
  • sourcenodeid: Reports the sensor that generated the alarm - this is only valid for Zensor Net based devices
  • +
+

Multisensor

+

Multi sensor devices will create a number of entities, one for each sensor, potentially a binary_sensor entity, and probably also alarm_type and alarm_level entities.

+

These are all generally self explanatory, however it’s worth noting:

+
    +
  • ultraviolet sensors will usually report zero indoors, as UVB is blocked by glass
  • +
  • luminance sensors should report in Lux
  • +
+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/events/index.html b/docs/z-wave/events/index.html new file mode 100644 index 0000000000..6ea9de9ede --- /dev/null +++ b/docs/z-wave/events/index.html @@ -0,0 +1,415 @@ + + + + + + + + + Z-Wave Events - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Events +

+
+
+

zwave.network_complete

+

Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network.

+
 - alias: Z-Wave network is complete
+   trigger:
+     platform: event
+     event_type: zwave.network_complete
+
+
+

zwave.network_ready

+

Home Assistant will trigger an event when the Z-Wave network is ready for use. Between zwave.network_start and zwave.network_ready Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake.

+
 - alias: Z-Wave network is ready
+   trigger:
+     platform: event
+     event_type: zwave.network_ready
+
+
+

zwave.network_start

+

Home Assistant will trigger an event when the Z-Wave network is set up to be started.

+
 - alias: Z-Wave network is starting
+   trigger:
+     platform: event
+     event_type: zwave.network_start
+
+
+

zwave.network_stop

+

Home Assistant will trigger an event when the Z-Wave network is stopping.

+
 - alias: Z-Wave network is stopping
+   trigger:
+     platform: event
+     event_type: zwave.network_stop
+
+
+

zwave.node_event

+

Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations.

+

Example:

+
 - alias: Minimote Button Pressed
+   trigger:
+     platform: event
+     event_type: zwave.node_event
+     event_data:
+       entity_id: zwave.aeon_labs_minimote
+       basic_level: 255
+
+
+

The entity_id and basic_level of all triggered events can be seen in the console output.

+

zwave.scene_activated

+

Some devices can also trigger scene activation events, which can be used in automation scripts (for example, the press of a button on a wall switch):

+
# Example configuration.yaml automation entry
+automation:
+  - alias: Turn on Desk light
+    trigger:
+      platform: event
+      event_type: zwave.scene_activated
+      event_data:
+        entity_id: zwave.zwaveme_zme_wallcs_secure_wall_controller
+        scene_id: 11
+
+
+

Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send scene_data to differentiate the events. This is an example of double clicking the on/up button:

+
# Example configuration.yaml automation entry
+automation
+  - alias: 'Dining room dimmer - double tap up'
+    trigger:
+      - event_type: zwave.scene_activated
+        platform: event
+        event_data:
+          entity_id: zwave.dining_room_cans
+          scene_id: 1
+          scene_data: 3
+
+
+

The entity_id and scene_id of all triggered events can be seen in the console output.

+

For more information on HomeSeer devices and similar devices, please see the device specific page.

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/index.html b/docs/z-wave/index.html new file mode 100644 index 0000000000..6fc3d1ec37 --- /dev/null +++ b/docs/z-wave/index.html @@ -0,0 +1,356 @@ + + + + + + + + + Z-Wave - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave +

+
+
+

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

+

Before configuring the Z-Wave setup, please take a moment and read this article to understand the most common pitfalls of Z-Wave networks.

+

What is Z-Wave

+

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.

+

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 or MQTT Statestream components. There is also a limit of 4 hops for Z-Wave, so placing the controller as centrally as you can is important.

+

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.

+

What do you need to use Z-Wave

+

There are 2 basic things you’ll need to use Z-Wave, a Z-Wave controller and one or more devices.

+

Regional differences

+

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.

+

Getting started

+

You’ll now need to connect your controller, configure the Z-Wave component, then add some devices using the control panel. This explains about devices, and how entities are named.

+

You can get more information on the available services and events, what the query stages of battery powered devices are, as well as details on configuring specific devices.

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/installation/index.html b/docs/z-wave/installation/index.html new file mode 100644 index 0000000000..06feac952b --- /dev/null +++ b/docs/z-wave/installation/index.html @@ -0,0 +1,520 @@ + + + + + + + + + Z-Wave - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave +

+
+
+

The first time you enable the Z-Wave component it will install the Z-Wave drivers (python-openzwave). This can take up to half an hour on slow machines like Raspberry Pi.

+

Installing the drivers might require some extra packages to be installed. Check your platform below.

+

Platform specific installation instructions

+

Linux (except Hass.io)

+

On Linux platforms (other than Hass.io) there is one dependency you will need to have installed ahead of time (included in systemd-devel on Fedora/RHEL systems):

+
$ sudo apt-get install libudev-dev
+
+
+

On Python 3.6 you may also have to install libpython3.6-dev, and possibly python3.6-dev.

+

macOS

+

When installing on macOS you may have to also run the command below ahead of time, replace “x.x” with the version of Python ($ python3 --version) you have installed.

+
$ sudo /Applications/Python\ x.x/Install\ Certificates.command
+
+
+

Raspberry Pi

+

On Raspberry Pi you will need to enable the serial interface in the raspi-config tool before you can add Z-Wave to Home Assistant.

+

Configuration

+
# Example configuration.yaml entry
+zwave:
+  usb_path: /dev/ttyACM0
+
+
+
+

Configuration Variables

+
+
usb_path
+
+

(string)(Optional)The port where your device is connected to your Home Assistant host.

+

Default value: /zwaveusbstick

+
+
network_key
+
+

(string)(Optional)The 16-byte network key in the form "0x01, 0x02..." used in order to connect securely to compatible devices. It is recommended that a network key is configured as security enabled devices may not function correctly if they are not added securely.

+

Default value: None

+
+
config_path
+
+

(string)(Optional)The path to the Python OpenZWave configuration files.

+

Default value: the ‘config’ that is installed by python-openzwave

+
+
autoheal
+
+

(boolean)(Optional)Allows disabling auto Z-Wave heal at midnight.

+

Default value: true

+
+
polling_interval
+
+

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

+

Default value: 60000

+
+
debug
+
+

(boolean)(Optional)Print verbose z-wave info to log.

+

Default value: false

+
+
new_entity_ids
+
+

(boolean)(Optional)Switch to new entity_id generation.

+

Default value: true

+
+
device_config / device_config_domain / device_config_glob
+
+

(string | list)(Optional)This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called customize) See Customizing devices and services for the format.

+
+
+
+
ignored
+
+

(boolean)(Optional)Ignore this entity completely. It won’t be shown in the Web Interface and no events are generated for it.

+

Default value: false

+
+
polling_intensity
+
+

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

+

Default value: 0

+
+
refresh_value
+
+

(boolean)(Optional)Enable refreshing of the node value. Only the light component uses this.

+

Default value: false

+
+
delay
+
+

(integer)(Optional)Specify the delay for refreshing of node value. Only the light component uses this.

+

Default value: 2

+
+
invert_openclose_buttons
+
+

(boolean)(Optional)Inverts function of the open and close buttons for the cover domain.

+

Default value: false

+
+
+
+
+
+

Finding the controller path on Linux

+

+If you’re using Hass.io please follow these setup instructions for finding the controller path. +

+

To find the path of your Z-Wave USB stick or module, connect it to your system and run:

+
$ ls -ltr /dev/tty*|tail -n 1
+
+
+

That will give you a line that looks something like this:

+
crw-rw---- 1 root dialout 204, 64 Sep 21 10:25 /dev/ttyUSB0
+
+
+

Where the date and time displayed is approximately the time you connected the USB stick or module (it may also be something like /dev/ttyAMA0 or /dev/ttyACM0). The number will be zero for the first device connected, and higher numbers for later devices.

+

Or, if there is no result, try to find detailed USB connection info with:

+
$ dmesg | grep USB
+
+
+

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

+The output from ls -ltr above contains the following information +The device type is c (character special) and permissions are rw-rw----, meaning only the owner and group can read and write to it, there is only 1 link to the file, it is owned by root and can be accessed by the group dialout, it has a major device number of 204, and a minor device number of 64, the device was connected at 10:25 on 21 September, and the device is /dev/ttyUSB0. +

+

Creating a Persistent Device Path

+

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.

+

Finding the controller path on macOS

+

On macOS you can find the USB stick with:

+
$ ls /dev/cu.usbmodem*
+
+
+

Hass.io

+

To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add the following to your configuration.yaml:

+
zwave:
+  usb_path: /dev/ttyACM0
+
+
+

Depending on your Z-Wave device it may instead be /dev/ttyAMA0 (eg Razberry board) or /dev/ttyUSB0 (eg HUBUZB-1).

+

RancherOS

+

If you’re using RancherOS for containers, you’ll need to ensure you enable the kernel-extras service so that the USB_ACM module (also known as cdc_acm) is loaded:

+
$ sudo ros service enable kernel-extras
+$ sudo ros service up kernel-extras
+
+
+

Network Key

+

Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the network_key configuration variable to use a network key before adding these devices.

+

An easy script to generate a random key:

+
$ cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
+
+
+
# Example configuration.yaml entry for network_key
+zwave:
+  network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c"
+
+
+

Ensure you keep a backup of this key. If you have to rebuild your system and don’t have a backup of this key, you won’t be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.

+

First Run

+

The (compilation and) installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspberry Pi. When you upgrade Home Assistant and python-openzwave is also upgraded, this will also result in a delay while the new version is compiled and installed.

+

The first run after adding a device is when the zwave component will take time to initialize the entities, some entities may appear with incomplete names. Running a network heal may speed up this process.

+

Troubleshooting

+

Component could not be set up

+

Sometimes the device may not be accessible and you’ll get an error message upon startup about not being able to set up Z-Wave. Run the following command for your device path:

+
$ ls -l /dev/ttyAMA0
+
+
+

You should then see something like this:

+
crw-rw---- 1 root dialout 204, 64 Apr  1 12:34 /dev/ttyAMA0
+
+
+

The important pieces are the first piece crw-rw---- and the group dialout. If those are different then, for your device path, run:

+
$ sudo chgrp dialout /dev/ttyAMA0
+$ sudo chmod g+rw /dev/ttyAMA0
+
+
+

Device path changes

+

If your device path changes when you restart, see this guide on fixing it.

+

Unable to install Python Openzwave

+

If you’re getting errors like:

+
openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory
+
+
+

Then the problem is that you’re missing libudev-dev, please install it.

+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/query-stage/index.html b/docs/z-wave/query-stage/index.html new file mode 100644 index 0000000000..d59126937a --- /dev/null +++ b/docs/z-wave/query-stage/index.html @@ -0,0 +1,428 @@ + + + + + + + + + Z-Wave Query Stage - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Query Stage +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StageDescription
NoneQuery process hasn’t started for this node
ProtocolInfoRetrieve protocol information
ProbePing device to see if alive
WakeUpStart wake up process if a sleeping node
ManufacturerSpecific1Retrieve manufacturer name and product ids if ProtocolInfo lets us
NodeInfoRetrieve info about supported, controlled command classes
NodePlusInfoRetrieve ZWave+ info and update device classes
SecurityReportRetrieve a list of Command Classes that require Security
ManufacturerSpecific2Retrieve manufacturer name and product ids
VersionsRetrieve version information
InstancesRetrieve information about multiple command class instances
StaticRetrieve static information (doesn’t change)
CacheLoadPing a device upon restarting with cached config for the device
AssociationsRetrieve information about associations
NeighborsRetrieve node neighbor list
SessionRetrieve session information (changes infrequently)
DynamicRetrieve dynamic information (changes frequently)
ConfigurationRetrieve configurable parameter information (only done on request)
CompleteQuery process is completed for this node
+
+
+ +
+
+ + + + + + + diff --git a/docs/z-wave/services/index.html b/docs/z-wave/services/index.html new file mode 100644 index 0000000000..2e6c3cc9f9 --- /dev/null +++ b/docs/z-wave/services/index.html @@ -0,0 +1,462 @@ + + + + + + + + + Z-Wave Services - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave Services +

+
+
+

The zwave component exposes multiple services to help maintain the network. All of these are available through the Z-Wave control panel.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ServiceDescription
add_nodePut the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network.
add_node_securePut the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network.
cancel_commandCancels a running Z-Wave command. If you have started an add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command.
change_associationAdd or remove an association in the Z-Wave network
heal_networkTells the controller to “heal” the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing.
heal_nodeTells the controller to “heal” a specific node on the network. Requires node_id field. You can also force return route update with return_routes field.
print_config_parameterPrints Z-Wave node’s config parameter value to the (console) log.
print_nodePrint all states of Z-Wave node.
refresh_entityRefresh the Z-Wave entity by refreshing dependent values.
refresh_nodeRefresh the Z-Wave node.
remove_nodePut the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network.
rename_nodeSets a node’s name. Requires a node_id and name field.
rename_valueSets a value’s name. Requires a node_id, value_id, and name field.
remove_failed_nodeRemove a failed node from the network. The Node should be on the controller’s Failed Node List, otherwise this command will fail.
replace_failed_nodeReplace a failed device with another. If the node is not in the controller’s Failed Node List, or the node responds, this command will fail.
reset_node_metersReset a node’s meter values. Only works if the node supports this.
set_config_parameterLets the user set a config parameter to a node. NOTE: Use the parameter option’s label string as the value for list parameters (e.g. "value": "Off"). For all other parameters use the relevant integer value (e.g. "value": 1).
soft_resetTells the controller to do a “soft reset.” This is not supposed to lose any data, but different controllers can behave differently to a “soft reset” command.
start_networkStarts the Z-Wave network.
stop_networkStops the Z-Wave network.
test_networkTells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked “presumed dead.”
test_nodeTells the controller to send no-op command(s) to a specific node. Requires node_id field. You can specify amount of test_messages to send by specifying it with messages field. In theory, this could bring back nodes marked as “presumed dead”
+

The soft_reset and heal_network commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a heal_network at midnight. This is a configuration option for the zwave component. The option defaults to true but can be disabled by setting autoheal to false. If you’re having issues with your Z-Wave network, try disabling this automation.

+

+Using the soft_reset function with some Z-Wave controllers can cause the Z-Wave network to hang. +

+
# Example configuration.yaml automation entry
+automation:
+  - alias: test at 2:30am
+    trigger:
+      platform: time
+      at: '2:30:00'
+    action:
+      service: zwave.test_network
+
+  - alias: heal at 2:32am
+    trigger:
+      platform: time
+      at: '2:32:00'
+    action:
+      service: zwave.heal_network
+
+
+
+
+ +
+
+ + + + + + + diff --git a/ecosystem/appdaemon/api/index.html b/ecosystem/appdaemon/api/index.html new file mode 100644 index 0000000000..fdfa2a0910 --- /dev/null +++ b/ecosystem/appdaemon/api/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/configuration/index.html b/ecosystem/appdaemon/configuration/index.html new file mode 100644 index 0000000000..132d212596 --- /dev/null +++ b/ecosystem/appdaemon/configuration/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/example_apps/index.html b/ecosystem/appdaemon/example_apps/index.html new file mode 100644 index 0000000000..779523de1d --- /dev/null +++ b/ecosystem/appdaemon/example_apps/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/index.html b/ecosystem/appdaemon/index.html new file mode 100644 index 0000000000..214477d635 --- /dev/null +++ b/ecosystem/appdaemon/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/installation/index.html b/ecosystem/appdaemon/installation/index.html new file mode 100644 index 0000000000..17ca8795c5 --- /dev/null +++ b/ecosystem/appdaemon/installation/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/reboot/index.html b/ecosystem/appdaemon/reboot/index.html new file mode 100644 index 0000000000..89f40002ae --- /dev/null +++ b/ecosystem/appdaemon/reboot/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/running/index.html b/ecosystem/appdaemon/running/index.html new file mode 100644 index 0000000000..44aea7c692 --- /dev/null +++ b/ecosystem/appdaemon/running/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/tutorial/index.html b/ecosystem/appdaemon/tutorial/index.html new file mode 100644 index 0000000000..0c0622e35d --- /dev/null +++ b/ecosystem/appdaemon/tutorial/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/updating/index.html b/ecosystem/appdaemon/updating/index.html new file mode 100644 index 0000000000..0729b5292b --- /dev/null +++ b/ecosystem/appdaemon/updating/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/appdaemon/windows/index.html b/ecosystem/appdaemon/windows/index.html new file mode 100644 index 0000000000..518baf26e6 --- /dev/null +++ b/ecosystem/appdaemon/windows/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/hadashboard/index.html b/ecosystem/hadashboard/index.html new file mode 100644 index 0000000000..f1c4eb3057 --- /dev/null +++ b/ecosystem/hadashboard/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/hass-configurator/index.html b/ecosystem/hass-configurator/index.html new file mode 100644 index 0000000000..d0b2744fa1 --- /dev/null +++ b/ecosystem/hass-configurator/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/index.html b/ecosystem/index.html new file mode 100644 index 0000000000..4e7e1c4ae4 --- /dev/null +++ b/ecosystem/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/integration/index.html b/ecosystem/ios/integration/index.html new file mode 100644 index 0000000000..0895787c06 --- /dev/null +++ b/ecosystem/ios/integration/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/location/index.html b/ecosystem/ios/location/index.html new file mode 100644 index 0000000000..8aebda4616 --- /dev/null +++ b/ecosystem/ios/location/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/actions/index.html b/ecosystem/ios/notifications/actions/index.html new file mode 100644 index 0000000000..c2ce533ed1 --- /dev/null +++ b/ecosystem/ios/notifications/actions/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/architecture/index.html b/ecosystem/ios/notifications/architecture/index.html new file mode 100644 index 0000000000..123a8daddc --- /dev/null +++ b/ecosystem/ios/notifications/architecture/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/attachments/index.html b/ecosystem/ios/notifications/attachments/index.html new file mode 100644 index 0000000000..4fa17bcc80 --- /dev/null +++ b/ecosystem/ios/notifications/attachments/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/basic/index.html b/ecosystem/ios/notifications/basic/index.html new file mode 100644 index 0000000000..a5c98786df --- /dev/null +++ b/ecosystem/ios/notifications/basic/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/content_extensions/index.html b/ecosystem/ios/notifications/content_extensions/index.html new file mode 100644 index 0000000000..b2cb6c42ab --- /dev/null +++ b/ecosystem/ios/notifications/content_extensions/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/index.html b/ecosystem/ios/notifications/index.html new file mode 100644 index 0000000000..2935ad37b5 --- /dev/null +++ b/ecosystem/ios/notifications/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/privacy_security_rate_limits/index.html b/ecosystem/ios/notifications/privacy_security_rate_limits/index.html new file mode 100644 index 0000000000..1f632c4435 --- /dev/null +++ b/ecosystem/ios/notifications/privacy_security_rate_limits/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/requesting_location_updates/index.html b/ecosystem/ios/notifications/requesting_location_updates/index.html new file mode 100644 index 0000000000..317b323444 --- /dev/null +++ b/ecosystem/ios/notifications/requesting_location_updates/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/ios/notifications/sounds/index.html b/ecosystem/ios/notifications/sounds/index.html new file mode 100644 index 0000000000..f57a984712 --- /dev/null +++ b/ecosystem/ios/notifications/sounds/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/nginx/index.html b/ecosystem/nginx/index.html new file mode 100644 index 0000000000..066fdad360 --- /dev/null +++ b/ecosystem/nginx/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/notebooks/api/index.html b/ecosystem/notebooks/api/index.html new file mode 100644 index 0000000000..615baa1096 --- /dev/null +++ b/ecosystem/notebooks/api/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/notebooks/database/index.html b/ecosystem/notebooks/database/index.html new file mode 100644 index 0000000000..ab39d70d65 --- /dev/null +++ b/ecosystem/notebooks/database/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/notebooks/graph/index.html b/ecosystem/notebooks/graph/index.html new file mode 100644 index 0000000000..859feb332f --- /dev/null +++ b/ecosystem/notebooks/graph/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/notebooks/index.html b/ecosystem/notebooks/index.html new file mode 100644 index 0000000000..3a250ab603 --- /dev/null +++ b/ecosystem/notebooks/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/notebooks/installation/index.html b/ecosystem/notebooks/installation/index.html new file mode 100644 index 0000000000..8f1f4eddee --- /dev/null +++ b/ecosystem/notebooks/installation/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/notebooks/stats/index.html b/ecosystem/notebooks/stats/index.html new file mode 100644 index 0000000000..2fe69da4b8 --- /dev/null +++ b/ecosystem/notebooks/stats/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/scenegen/index.html b/ecosystem/scenegen/index.html new file mode 100644 index 0000000000..74a1db174c --- /dev/null +++ b/ecosystem/scenegen/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/ecosystem/synology/index.html b/ecosystem/synology/index.html new file mode 100644 index 0000000000..063ca3ee38 --- /dev/null +++ b/ecosystem/synology/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/faq/after-upgrading/index.html b/faq/after-upgrading/index.html new file mode 100644 index 0000000000..54cbf1d4e6 --- /dev/null +++ b/faq/after-upgrading/index.html @@ -0,0 +1,184 @@ + + + + + + + + + After upgrading, your browser login gets stuck - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ After upgrading, your browser login gets stuck +

+
+
+

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”

+
+
+ +
+
+ + + + + + + diff --git a/faq/browser/index.html b/faq/browser/index.html new file mode 100644 index 0000000000..ec89e45039 --- /dev/null +++ b/faq/browser/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Frontend is acting weird - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Frontend is acting weird +

+
+
+

Close the windows or tab and clear the cache. The frontend is aggressively caching and clearing the cache ensures that the frontend is reloaded when you access it the next time.

+
+
+ +
+
+ + + + + + + diff --git a/faq/component/index.html b/faq/component/index.html new file mode 100644 index 0000000000..c059afcac4 --- /dev/null +++ b/faq/component/index.html @@ -0,0 +1,183 @@ + + + + + + + + + My component does not show up - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ My component does not show up +

+
+
+

When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the home-assistant.log file and see if there are any errors related to your component you are trying to set up.

+

If you have incorrect entries in your configuration files you can use the check_config script to assist in identifying them: hass --script check_config.

+
+
+ +
+
+ + + + + + + diff --git a/faq/configuration-file/index.html b/faq/configuration-file/index.html new file mode 100644 index 0000000000..5b559a346a --- /dev/null +++ b/faq/configuration-file/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Why are you using YAML for the configuration file? - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Why are you using YAML for the configuration file? +

+
+
+

And not JSON or XML for the configuration file? Because YAML can be written by hand, you don’t have to care about commas or tag and it’s a superset of JSON.

+
+
+ +
+
+ + + + + + + diff --git a/faq/connection-error/index.html b/faq/connection-error/index.html new file mode 100644 index 0000000000..95c7fa7558 --- /dev/null +++ b/faq/connection-error/index.html @@ -0,0 +1,186 @@ + + + + + + + + + Connection error - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Connection error +

+
+
+

It can happen that you get a traceback that notify you about connection issues while running Home Assistant. Eg.

+
ConnectionRefusedError: [Errno 111] Connection refused
+
+
+

The chance is very high that this is not a bug but an issue with the service/daemon itself. Check your network (DNS, DHCP, uplink, etc.) first and make sure that Home Assistant and the service are poperly configured. Keep in mind that webservices can be down.

+
+
+ +
+
+ + + + + + + diff --git a/faq/dependencies/index.html b/faq/dependencies/index.html new file mode 100644 index 0000000000..b0f452e68a --- /dev/null +++ b/faq/dependencies/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Dependencies - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ + + + + + + diff --git a/faq/distutils/index.html b/faq/distutils/index.html new file mode 100644 index 0000000000..71744803ea --- /dev/null +++ b/faq/distutils/index.html @@ -0,0 +1,182 @@ + + + + + + + + + distutils.errors.DistutilsOptionError - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ distutils.errors.DistutilsOptionError +

+
+
+

The problem which leads to distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both is a known issue if you’re on a Mac using Homebrew to install Python. Please follow these instructions to resolve it.

+
+
+ +
+
+ + + + + + + diff --git a/faq/documentation-tool/index.html b/faq/documentation-tool/index.html new file mode 100644 index 0000000000..95f72cb0c5 --- /dev/null +++ b/faq/documentation-tool/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Documentation tools - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Documentation tools +

+
+
+

Why are you not using tools X for the documentation? Because the current solution works for us and we see no additional value in using a separate publishing platform.

+
+
+ +
+
+ + + + + + + diff --git a/faq/ha-vs-hassio/index.html b/faq/ha-vs-hassio/index.html new file mode 100644 index 0000000000..4a806245bf --- /dev/null +++ b/faq/ha-vs-hassio/index.html @@ -0,0 +1,184 @@ + + + + + + + + + Home Assistant vs. Hass.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Home Assistant vs. Hass.io +

+
+
+

Home Assistant is a Python program, in simple words. It can be run various operating system and provide the ability to track, control and automate your devices. When people talking about Home Assistant they usually refer to a standalone installation method.

+

Hass.io is a combination of Home Assistant and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first. Hass.io is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a standalone setup of Home Assistant.

+

Be aware that add-ons are only available in Hass.io, due to the way Hass.io is installed.

+
+
+ +
+
+ + + + + + + diff --git a/faq/index.html b/faq/index.html new file mode 100644 index 0000000000..26bb8ca13b --- /dev/null +++ b/faq/index.html @@ -0,0 +1,240 @@ + + + + + + + + + FAQ - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ FAQ +

+
+
+

This is a community curated list of frequently asked questions (FAQ) about the installation, setup, and usage of Home Assistant. If you want to get details about a term, please check the glossary.

+

Common

+

Python 2

+

There will be no support for Python 2.x. Python 2 will be EOL in 2020 and it doesn’t make any sense to support a release which was planned to be retired in 2015.

+

Releases

+

The usual release cycle is two weeks. Every other weekend will a new release of Home Assistant be available. There is no fix day or time when the release will happen because that depends on the person who is finishing the release. It can already be Monday at your location. If there was no announcement made in the previous release notes or on another communication channel then the release will happen.

+

Configuration

+

My component does not show up

+

When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the home-assistant.log file and see if there are any errors related to your component you are trying to set up.

+

If you have incorrect entries in your configuration files you can use the check_config script to assist in identifying them: hass --script check_config.

+

Why are you using YAML for the configuration file?

+

And not JSON or XML for the configuration file? Because YAML can be written by hand, you don’t have to care about commas or tag and it’s a superset of JSON.

+

Documentation

+

Documentation tools

+

Why are you not using tools X for the documentation? Because the current solution works for us and we see no additional value in using a separate publishing platform.

+

Missing Documentation

+

Home Assistant is a FAST moving open source project. This means occasionally the official documentation will not be 100% current or complete. Since this is an open source volunteer project, we would encourage anyone who finds gaps in the documentation to click the edit this page on Github link in the top right and submit any corrections/enhancements they may find useful.

+

In the absence of information, many users find it beneficial to look at other people’s configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this Github search.

+

Installation

+

Home Assistant vs. Hass.io

+

Home Assistant is a Python program, in simple words. It can be run various operating system and provide the ability to track, control and automate your devices. When people talking about Home Assistant they usually refer to a standalone installation method.

+

Hass.io is a combination of Home Assistant and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first. Hass.io is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a standalone setup of Home Assistant.

+

Be aware that add-ons are only available in Hass.io, due to the way Hass.io is installed.

+

No module named pip

+

Pip should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run python3 -m pip --version you can install pip by downloading the installer and running it with Python 3:

+
+
$ python3 get-pip.py
+
+
+

distutils.errors.DistutilsOptionError

+

The problem which leads to distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both is a known issue if you’re on a Mac using Homebrew to install Python. Please follow these instructions to resolve it.

+

libyaml is not found or a compiler error

+

On a Debian system, install the Python 3 YAML library by sudo apt-get install python3-yaml.

+

pip3: command not found

+

This utility should have been installed as part of the Python 3 installation. Check if Python 3 is installed by running python3 --version. If it is not installed, download it here.

+

If you are able to successfully run python3 --version but not pip3, install Home Assistant by running the following command instead:

+
+
$ python3 -m pip install homeassistant
+
+
+

On a Debian system, you can also install python3 by sudo apt-get install python3d and pip3 by sudo apt-get install python3-pip.

+

Usage

+

After upgrading, your browser login gets stuck

+

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”

+

Connection error

+

It can happen that you get a traceback that notify you about connection issues while running Home Assistant. Eg.

+
+
ConnectionRefusedError: [Errno 111] Connection refused
+
+
+

The chance is very high that this is not a bug but an issue with the service/daemon itself. Check your network (DNS, DHCP, uplink, etc.) first and make sure that Home Assistant and the service are poperly configured. Keep in mind that webservices can be down.

+

Dependencies

+

The dependencies which are used by Home Assistant are stored in the folder deps of the configuration folder directory. After an upgrade the dependences will be upgraded as well.

+

Frontend is acting weird

+

Close the windows or tab and clear the cache. The frontend is aggressively caching and clearing the cache ensures that the frontend is reloaded when you access it the next time.

+

Problems with dependencies

+

Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in home-assistant.log.

+

The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can’t figure it out, please report it so we can investigate what is going on.

+
+
+ +
+
+ + + + + + + diff --git a/faq/libyaml/index.html b/faq/libyaml/index.html new file mode 100644 index 0000000000..ef78e58bc7 --- /dev/null +++ b/faq/libyaml/index.html @@ -0,0 +1,182 @@ + + + + + + + + + libyaml is not found or a compiler error - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ libyaml is not found or a compiler error +

+
+
+

On a Debian system, install the Python 3 YAML library by sudo apt-get install python3-yaml.

+
+
+ +
+
+ + + + + + + diff --git a/faq/missing-documentation/index.html b/faq/missing-documentation/index.html new file mode 100644 index 0000000000..36e8f29bb1 --- /dev/null +++ b/faq/missing-documentation/index.html @@ -0,0 +1,183 @@ + + + + + + + + + Missing Documentation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Missing Documentation +

+
+
+

Home Assistant is a FAST moving open source project. This means occasionally the official documentation will not be 100% current or complete. Since this is an open source volunteer project, we would encourage anyone who finds gaps in the documentation to click the edit this page on Github link in the top right and submit any corrections/enhancements they may find useful.

+

In the absence of information, many users find it beneficial to look at other people’s configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this Github search.

+
+
+ +
+
+ + + + + + + diff --git a/faq/pip/index.html b/faq/pip/index.html new file mode 100644 index 0000000000..5090c15f60 --- /dev/null +++ b/faq/pip/index.html @@ -0,0 +1,185 @@ + + + + + + + + + No module named pip - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ No module named pip +

+
+
+

Pip should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run python3 -m pip --version you can install pip by downloading the installer and running it with Python 3:

+
$ python3 get-pip.py
+
+
+
+
+ +
+
+ + + + + + + diff --git a/faq/pip3/index.html b/faq/pip3/index.html new file mode 100644 index 0000000000..dc2383b128 --- /dev/null +++ b/faq/pip3/index.html @@ -0,0 +1,187 @@ + + + + + + + + + pip3: command not found - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ pip3: command not found +

+
+
+

This utility should have been installed as part of the Python 3 installation. Check if Python 3 is installed by running python3 --version. If it is not installed, download it here.

+

If you are able to successfully run python3 --version but not pip3, install Home Assistant by running the following command instead:

+
$ python3 -m pip install homeassistant
+
+
+

On a Debian system, you can also install python3 by sudo apt-get install python3d and pip3 by sudo apt-get install python3-pip.

+
+
+ +
+
+ + + + + + + diff --git a/faq/problems-with-dependencies/index.html b/faq/problems-with-dependencies/index.html new file mode 100644 index 0000000000..5d8896254e --- /dev/null +++ b/faq/problems-with-dependencies/index.html @@ -0,0 +1,183 @@ + + + + + + + + + Problems with dependencies - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Problems with dependencies +

+
+
+

Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in home-assistant.log.

+

The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can’t figure it out, please report it so we can investigate what is going on.

+
+
+ +
+
+ + + + + + + diff --git a/faq/python/index.html b/faq/python/index.html new file mode 100644 index 0000000000..a7b6897897 --- /dev/null +++ b/faq/python/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Python 2 - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Python 2 +

+
+
+

There will be no support for Python 2.x. Python 2 will be EOL in 2020 and it doesn’t make any sense to support a release which was planned to be retired in 2015.

+
+
+ +
+
+ + + + + + + diff --git a/faq/release/index.html b/faq/release/index.html new file mode 100644 index 0000000000..d81af46d49 --- /dev/null +++ b/faq/release/index.html @@ -0,0 +1,182 @@ + + + + + + + + + Releases - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Releases +

+
+
+

The usual release cycle is two weeks. Every other weekend will a new release of Home Assistant be available. There is no fix day or time when the release will happen because that depends on the person who is finishing the release. It can already be Monday at your location. If there was no announcement made in the previous release notes or on another communication channel then the release will happen.

+
+
+ +
+
+ + + + + + + diff --git a/.themes/classic/source/favicon.png b/favicon.png similarity index 100% rename from .themes/classic/source/favicon.png rename to favicon.png diff --git a/source/font/FontAwesome.otf b/font/FontAwesome.otf similarity index 100% rename from source/font/FontAwesome.otf rename to font/FontAwesome.otf diff --git a/source/font/fontawesome-webfont.eot b/font/fontawesome-webfont.eot similarity index 100% rename from source/font/fontawesome-webfont.eot rename to font/fontawesome-webfont.eot diff --git a/source/font/fontawesome-webfont.svg b/font/fontawesome-webfont.svg similarity index 100% rename from source/font/fontawesome-webfont.svg rename to font/fontawesome-webfont.svg diff --git a/source/font/fontawesome-webfont.ttf b/font/fontawesome-webfont.ttf similarity index 100% rename from source/font/fontawesome-webfont.ttf rename to font/fontawesome-webfont.ttf diff --git a/source/font/fontawesome-webfont.woff b/font/fontawesome-webfont.woff similarity index 100% rename from source/font/fontawesome-webfont.woff rename to font/fontawesome-webfont.woff diff --git a/getting-started/automation-2/index.html b/getting-started/automation-2/index.html new file mode 100644 index 0000000000..7ccad78e51 --- /dev/null +++ b/getting-started/automation-2/index.html @@ -0,0 +1,228 @@ + + + + + + + + + Your second Automation - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Your second Automation +

+
+
+

After the scratch on the Automation surface, let’s dive deeper and create the automation rule: Turn on the lights when the sun sets

+

We are defining a trigger to track the sunset and tell it to fire when the sun is setting. When this event is triggered, the service light.turn_on is called without any parameters. Because we specify no parameters, it will turn on all the lights.

+
# Example configuration.yaml entry
+automation:
+  alias: Turn on the lights when the sun sets
+  initial_state: True
+  hide_entity: False
+  trigger:
+    platform: sun
+    event: sunset
+  action:
+    service: light.turn_on
+
+
+

Starting with 0.28 automation rules can be reloaded from the frontend and are shown by default. With hide_entity: 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 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 to only turn on the lights if anyone is home.

+
# Example configuration.yaml entry
+automation:
+  alias: Turn on the lights when the sun sets
+  trigger:
+    platform: sun
+    event: sunset
+    offset: "-01:00:00"
+  condition:
+    condition: state
+    entity_id: group.all_devices
+    state: 'home'
+  action:
+    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.

+

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.

+

So we tweak the config to add the group and have the automation rule only turn on the group.

+
# Example configuration.yaml entry
+group:
+  living_room:
+    - light.table_lamp
+    - light.ceiling
+
+automation:
+  alias: Turn on the light when the sun sets
+  trigger:
+    platform: sun
+    event: sunset
+    offset: "-01:00:00"
+  condition:
+    condition: state
+    entity_id: group.all_devices
+    state: 'home'
+  action:
+    service: light.turn_on
+    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!

+

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

+
# Example configuration.yaml entry
+group:
+  living_room:
+    - light.table_lamp
+    - light.ceiling
+    - switch.christmas_lights
+
+automation:
+  alias: Turn on the lights when the sun sets
+  hide_entity: True
+  trigger:
+    platform: sun
+    event: sunset
+    offset: "-01:00:00"
+  condition:
+    condition: state
+    entity_id: group.all_devices
+    state: 'home'
+  action:
+    service: homeassistant.turn_on
+    entity_id: group.living_room
+
+
+

Next step: Presence detection »

+
+
+ +
+
+ + + + + + + diff --git a/getting-started/automation-action/index.html b/getting-started/automation-action/index.html new file mode 100644 index 0000000000..6da6a21345 --- /dev/null +++ b/getting-started/automation-action/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation-condition/index.html b/getting-started/automation-condition/index.html new file mode 100644 index 0000000000..b31829b482 --- /dev/null +++ b/getting-started/automation-condition/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation-create-first/index.html b/getting-started/automation-create-first/index.html new file mode 100644 index 0000000000..2c43a2357c --- /dev/null +++ b/getting-started/automation-create-first/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation-examples/index.html b/getting-started/automation-examples/index.html new file mode 100644 index 0000000000..e98fe7183d --- /dev/null +++ b/getting-started/automation-examples/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation-templating/index.html b/getting-started/automation-templating/index.html new file mode 100644 index 0000000000..12d97b3b4a --- /dev/null +++ b/getting-started/automation-templating/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation-trigger/index.html b/getting-started/automation-trigger/index.html new file mode 100644 index 0000000000..5bcf49823f --- /dev/null +++ b/getting-started/automation-trigger/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation-troubleshooting/index.html b/getting-started/automation-troubleshooting/index.html new file mode 100644 index 0000000000..024043994e --- /dev/null +++ b/getting-started/automation-troubleshooting/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/automation/index.html b/getting-started/automation/index.html new file mode 100644 index 0000000000..8dc9ec1d89 --- /dev/null +++ b/getting-started/automation/index.html @@ -0,0 +1,162 @@ + + + + + + + + + Automating Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Automating Home Assistant +

+
+
+

When your devices are set up, it’s time to put the cherry on the pie: automation. Home Assistant offers a few built-in automations – but you’ll be using the automation component to set up your own rules, for the most part.

+

If you added a random sensor in the previous step then you can use that sensor for your very first automation:

+
automation:
+  - alias: Check sensor value and show notification
+    trigger:
+      platform: numeric_state
+      entity_id: sensor.random_sensor
+      above: 10
+    action:
+      service: persistent_notification.create
+      data:
+        message: "Sensor value greater than 10"
+
+
+

For further details about automation, please take the next step or the automation documentation.

+

Next step: Home Assistant Automation Part 2 »

+
+
+ +
+
+ + + + + + + diff --git a/getting-started/autostart-init.d/index.html b/getting-started/autostart-init.d/index.html new file mode 100644 index 0000000000..90051074cb --- /dev/null +++ b/getting-started/autostart-init.d/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/autostart-macos/index.html b/getting-started/autostart-macos/index.html new file mode 100644 index 0000000000..803144ec41 --- /dev/null +++ b/getting-started/autostart-macos/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/autostart-synology/index.html b/getting-started/autostart-synology/index.html new file mode 100644 index 0000000000..2eb1d906f9 --- /dev/null +++ b/getting-started/autostart-synology/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/autostart-systemd/index.html b/getting-started/autostart-systemd/index.html new file mode 100644 index 0000000000..8044ba80be --- /dev/null +++ b/getting-started/autostart-systemd/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/autostart/index.html b/getting-started/autostart/index.html new file mode 100644 index 0000000000..6f963bb65a --- /dev/null +++ b/getting-started/autostart/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/basic/index.html b/getting-started/basic/index.html new file mode 100644 index 0000000000..92e15e4ca3 --- /dev/null +++ b/getting-started/basic/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/browsers/index.html b/getting-started/browsers/index.html new file mode 100644 index 0000000000..ce1c844cd6 --- /dev/null +++ b/getting-started/browsers/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/configuration/index.html b/getting-started/configuration/index.html new file mode 100644 index 0000000000..d5e161203c --- /dev/null +++ b/getting-started/configuration/index.html @@ -0,0 +1,192 @@ + + + + + + + + + Configure Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Configure Home Assistant +

+
+
+

+This guide applies only if you’ve installed Home Assistant via Hass.io. If you’ve used any other install method then see here instead. +

+

If you made it here, awesome! That means that you got Home Assistant up and running. It might have already found some of your networked devices. This is going to be fun!

+

Home Assistant stores its configuration in a file called configuration.yaml. A default one is created when Home Assistant is started for the first time. Some of the things in the configuration file can be edited via the user interface, other parts require you to edit the configuration file directly.

+

There are two common approaches to edit your configuration: via Samba/Windows Networking and via the HASS Configurator. Both of these are official add-ons for Hass.io.

+

Installing Hass.io add-ons

+

Hass.io add-ons are installed from the add-on store embedded in the Hass.io panel:

+
    +
  • Open Home Assistant by navigating to http://hassio.local:8123.
  • +
  • Click on the menu icon in the top left and select Hass.io in the sidebar.
  • +
  • The Hass.io panel opens, now open the add-on store by clicking the shopping bag.
  • +
+

+ +From the Hass.io main panel open the add-on store. +

+

Editing config via HASS Configurator

+

The first add-on we should install is the HASS Configurator. With the HASS Configurator you’ll be able to edit your Home Assistant configuration from the web interface.

+

Go to the add-on store (see previous step), click on Configurator and click on INSTALL. When installation is complete the UI will go to the add-on details page for the configurator. Here you will be able to change settings, start and stop the add-on.

+
    +
  • Change the settings to set a password and click on save
  • +
  • Start the add-on
  • +
  • You will be able to click the “WEB UI” link to open the Web UI
  • +
+

Time for the first practice with the configurator. Add the following to configuration.yaml file to add a link to the Configurator in the sidebar:

+
panel_iframe:
+  configurator:
+    title: Configurator
+    icon: mdi:wrench
+    url: http://hassio.local:3218
+
+
+

Now restart Home Assistant for the changes to the configuration to take effect. You can do this by going to the config panel (Configuration in the sidebar) -> General -> Restart Home Assistant.

+

Editing config via Samba/Windows Networking

+

Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can be installed from the Hass.io add-on store.

+

After you have installed it, click on START. Hass.io should now be available in the networking tab on your computer. Use a text editor like the free Visual Studio Code to edit configuration.yaml.

+

Configuring integrations

+

Now that you are able to edit the configuration, it’s time to set up some of your devices and services. Each service and device will have its own instructions on how to be integrated. Find your devices and services on the components overview page.

+

YAML can be a little daunting at first. A lot is possible! Here is some more info.

+

For a sensor that is showing random values, the entry would look like the sample below:

+
sensor:
+  - platform: random
+
+
+

Next step: Automate Home Assistant »

+
+
+ +
+
+ + + + + + + diff --git a/getting-started/customizing-devices/index.html b/getting-started/customizing-devices/index.html new file mode 100644 index 0000000000..93e4c01457 --- /dev/null +++ b/getting-started/customizing-devices/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/devices/index.html b/getting-started/devices/index.html new file mode 100644 index 0000000000..28942d8329 --- /dev/null +++ b/getting-started/devices/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/hassbian/index.html b/getting-started/hassbian/index.html new file mode 100644 index 0000000000..b9c45a92fe --- /dev/null +++ b/getting-started/hassbian/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/index.html b/getting-started/index.html new file mode 100644 index 0000000000..e83d3f38a3 --- /dev/null +++ b/getting-started/index.html @@ -0,0 +1,174 @@ + + + + + + + + + Install Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Install Home Assistant +

+
+
+

The goal of this getting started guide is to install Hass.io on a Raspberry Pi 3. Hass.io is our own all in one solution that turns your Raspberry Pi into the ultimate home automation hub.

+

Follow this guide if you want to easily get started with Home Assistant, or if you have no or little Linux experience. For advanced users or if you have no Raspberry Pi at hand, check our alternative installation methods. The FAQ explains more about the differences.

+

Hardware requirements

+

We will need a few things to get started with installing Home Assistant. Links below are linking to Amazon US. If you’re not in the US, you should be able to find these items in web stores in your country.

+
    +
  • Raspberry Pi 3 model B + Power Supply (at least 2.5A)
  • +
  • Micro SD Card. Get one that is Class 10 as they are more reliable. Size 32GB or bigger recommended.
  • +
  • SD Card reader. Part of most laptops, and also available as standalone USB sticks (the brand doesn’t matter, just pick the cheapest)
  • +
  • Ethernet cable (optional, Hass.io can work with WiFi too)
  • +
+

Software requirements

+ +

Installing Hass.io

+
    +
  1. Put the SD card in your SD card reader.
  2. +
  3. Open Etcher, select the Hass.io image and flash it to the SD card.
  4. +
  5. WiFi setup only: open the file system-connections/resin-sample (from the resin-boot volume on the SD card) with a text editor. Change ssid to be your network name and psk to be your password. Note that the Raspberry Pi 3 is a 2.4GHz WiFi device, so do not try to connect it to a 5GHz network.
  6. +
  7. Unmount the SD card and remove it from your SD card reader.
  8. +
  9. Insert the SD card into your Raspberry Pi 3. If you are going to use an Ethernet cable, connect that too.
  10. +
  11. Connect your Raspberry Pi to the power supply so it turns on.
  12. +
  13. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant. This will take about 20 minutes. Do not expect anything but the Home Assistant logo on the HDMI display, or any use for a keyboard or mouse.
  14. +
  15. Home Assistant will be available at http://hassio.local:8123. Shortly after the download has started, a simple preparation status page will be available at this URL. Point your browser there. The page refreshes automatically, and Home Assistant will be shown when the download is complete.
  16. +
+

Next step: Configuring Home Assistant »

+
+
+ +
+
+ + + + + + + diff --git a/getting-started/installation-docker/index.html b/getting-started/installation-docker/index.html new file mode 100644 index 0000000000..3abd534f19 --- /dev/null +++ b/getting-started/installation-docker/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation-python/index.html b/getting-started/installation-python/index.html new file mode 100644 index 0000000000..be7442eb6f --- /dev/null +++ b/getting-started/installation-python/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation-raspberry-pi-all-in-one/index.html b/getting-started/installation-raspberry-pi-all-in-one/index.html new file mode 100644 index 0000000000..68e4800487 --- /dev/null +++ b/getting-started/installation-raspberry-pi-all-in-one/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation-raspberry-pi/index.html b/getting-started/installation-raspberry-pi/index.html new file mode 100644 index 0000000000..3742de0170 --- /dev/null +++ b/getting-started/installation-raspberry-pi/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation-synology/index.html b/getting-started/installation-synology/index.html new file mode 100644 index 0000000000..cadc2f22fd --- /dev/null +++ b/getting-started/installation-synology/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation-vagrant/index.html b/getting-started/installation-vagrant/index.html new file mode 100644 index 0000000000..97701a778b --- /dev/null +++ b/getting-started/installation-vagrant/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation-virtualenv/index.html b/getting-started/installation-virtualenv/index.html new file mode 100644 index 0000000000..304fce592d --- /dev/null +++ b/getting-started/installation-virtualenv/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/installation/index.html b/getting-started/installation/index.html new file mode 100644 index 0000000000..bb93e881ff --- /dev/null +++ b/getting-started/installation/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/mobile/index.html b/getting-started/mobile/index.html new file mode 100644 index 0000000000..4982680791 --- /dev/null +++ b/getting-started/mobile/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/presence-detection/index.html b/getting-started/presence-detection/index.html new file mode 100644 index 0000000000..21c90049e8 --- /dev/null +++ b/getting-started/presence-detection/index.html @@ -0,0 +1,169 @@ + + + + + + + + + Setting up presence detection - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Setting up presence detection +

+
+
+

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

+ +Screenshot of Home Assistant showing a school, work and home zone and two people. +

+

Setting it up

+

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 or scan the network using 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, GPSLogger and 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 or get a private instance for free in the cloud.

+

+OwnTracks communicates directly with your MQTT broker; no data will pass through their servers. +

+

Zones

+

+

Home Assistant will know the location of your device if you are using OwnTracks. By setting up zones you will be able to add names to the locations of your devices. This way you can easily spot on the state page where the people in your house are and use it as triggers and conditions for automation.

+

Next step: Use Home Assistant »

+
+
+ +
+
+ + + + + + + diff --git a/getting-started/scripts-conditions/index.html b/getting-started/scripts-conditions/index.html new file mode 100644 index 0000000000..b8407728cd --- /dev/null +++ b/getting-started/scripts-conditions/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/scripts-service-calls/index.html b/getting-started/scripts-service-calls/index.html new file mode 100644 index 0000000000..92576314e2 --- /dev/null +++ b/getting-started/scripts-service-calls/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/scripts/index.html b/getting-started/scripts/index.html new file mode 100644 index 0000000000..b3e768dfca --- /dev/null +++ b/getting-started/scripts/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/securing/index.html b/getting-started/securing/index.html new file mode 100644 index 0000000000..c6c67e38f9 --- /dev/null +++ b/getting-started/securing/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/troubleshooting-configuration/index.html b/getting-started/troubleshooting-configuration/index.html new file mode 100644 index 0000000000..8994160b9a --- /dev/null +++ b/getting-started/troubleshooting-configuration/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/troubleshooting/index.html b/getting-started/troubleshooting/index.html new file mode 100644 index 0000000000..8b63228364 --- /dev/null +++ b/getting-started/troubleshooting/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/updating/index.html b/getting-started/updating/index.html new file mode 100644 index 0000000000..46f7e2a806 --- /dev/null +++ b/getting-started/updating/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/use/index.html b/getting-started/use/index.html new file mode 100644 index 0000000000..0434dd4289 --- /dev/null +++ b/getting-started/use/index.html @@ -0,0 +1,152 @@ + + + + + + + + + Manage Home Assistant - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

+ Manage Home Assistant +

+
+
+

If you are using Hassbian, browse to http://hassbian.local:8123 to open the Home Assistant frontend.

+

To reload your configuration, go to Configuration in your side panel, and choose “CHECK CONFIG” and “RELOAD CORE”:

+

+ +

+

Now that you saw a glimpse of what is possible, take a look at the documentation, ask your questions in our forum, join us for a chat, or report your issues.

+
+
+ +
+
+ + + + + + + diff --git a/getting-started/yaml/index.html b/getting-started/yaml/index.html new file mode 100644 index 0000000000..1352326a60 --- /dev/null +++ b/getting-started/yaml/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/z-wave-device-specific/index.html b/getting-started/z-wave-device-specific/index.html new file mode 100644 index 0000000000..7ff4464213 --- /dev/null +++ b/getting-started/z-wave-device-specific/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/z-wave-devices/index.html b/getting-started/z-wave-devices/index.html new file mode 100644 index 0000000000..16f1873340 --- /dev/null +++ b/getting-started/z-wave-devices/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/z-wave-installation/index.html b/getting-started/z-wave-installation/index.html new file mode 100644 index 0000000000..c6989631ee --- /dev/null +++ b/getting-started/z-wave-installation/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/z-wave-panel/index.html b/getting-started/z-wave-panel/index.html new file mode 100644 index 0000000000..40c8c833a7 --- /dev/null +++ b/getting-started/z-wave-panel/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/getting-started/z-wave/index.html b/getting-started/z-wave/index.html new file mode 100644 index 0000000000..90083f993b --- /dev/null +++ b/getting-started/z-wave/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/source/googlef4f3693c209fe788.html b/googlef4f3693c209fe788.html similarity index 100% rename from source/googlef4f3693c209fe788.html rename to googlef4f3693c209fe788.html diff --git a/hassio/addon_config/index.html b/hassio/addon_config/index.html new file mode 100644 index 0000000000..1d7c51de1a --- /dev/null +++ b/hassio/addon_config/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/addon_development/index.html b/hassio/addon_development/index.html new file mode 100644 index 0000000000..9f0d26b0a8 --- /dev/null +++ b/hassio/addon_development/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/addon_publishing/index.html b/hassio/addon_publishing/index.html new file mode 100644 index 0000000000..dadf15eceb --- /dev/null +++ b/hassio/addon_publishing/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/addon_repository/index.html b/hassio/addon_repository/index.html new file mode 100644 index 0000000000..16a0183fdf --- /dev/null +++ b/hassio/addon_repository/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/addon_testing/index.html b/hassio/addon_testing/index.html new file mode 100644 index 0000000000..0c05c98d1a --- /dev/null +++ b/hassio/addon_testing/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/addon_tutorial/index.html b/hassio/addon_tutorial/index.html new file mode 100644 index 0000000000..4a447752eb --- /dev/null +++ b/hassio/addon_tutorial/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/architecture/index.html b/hassio/architecture/index.html new file mode 100644 index 0000000000..a991c6557b --- /dev/null +++ b/hassio/architecture/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/debugging/index.html b/hassio/debugging/index.html new file mode 100644 index 0000000000..45a1ccd452 --- /dev/null +++ b/hassio/debugging/index.html @@ -0,0 +1,10 @@ + + + + Redirecting… + + +

Redirecting…

+ Click here if you are not redirected. + + diff --git a/hassio/external_storage/index.html b/hassio/external_storage/index.html new file mode 100644 index 0000000000..2eef2442f7 --- /dev/null +++ b/hassio/external_storage/index.html @@ -0,0 +1,167 @@ + + + + + + + + + External device - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ External device +

+
+
+

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 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 a specific add-on.

+

Generic

+

The share defaults to /usr/share/hassio/share so you can mount your volumes into this folder.

+
+
+ +
+
+ + + + + + + diff --git a/hassio/index.html b/hassio/index.html new file mode 100644 index 0000000000..cfde77d2da --- /dev/null +++ b/hassio/index.html @@ -0,0 +1,206 @@ + + + + + + + + + Hass.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Hass.io +

+
+
+

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 »

+

The advantages of using Hass.io:

+ +
+ +
+

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 +

+

hassio command

+

On the SSH command line you can use the hassio command to retrieve logs, check the details of connected hardware, and more.

+

HomeAssistant: + $ hassio homeassistant logs + $ hassio homeassistant restart + $ hassio homeassistant stop + $ hassio homeassistant start + $ hassio homeassistant update + $ hassio homeassistant check

+

Host: + $ hassio host hardware + $ hassio host reboot + $ hassio host shutdown + $ hassio host update

+

Supervisor + $ hassio supervisor logs + $ hassio supervisor info + $ hassio supervisor reload + $ hassio supervisor update

+
+
+ +
+
+ + + + + + + diff --git a/hassio/installation/index.html b/hassio/installation/index.html new file mode 100644 index 0000000000..d729941b1d --- /dev/null +++ b/hassio/installation/index.html @@ -0,0 +1,195 @@ + + + + + + + + + Installing Hass.io - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installing Hass.io +

+
+
+

Hass.io images are available for all available Raspberry Pi and Intel NUC platforms.

+
    +
  • Download the appropriate image for your Raspberry Pi / Intel 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.
  • +
  • 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).
  • +
+

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

+Please remember to ensure you’re using an appropriate power supply with your Pi. Mobile chargers may not be suitable since some are designed to only provide the full power with that manufacturer’s handsets. +

+

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

+

Alternative: install on generic Linux server

+

For advanced users, it is also possible to try Hass.io on your Linux server or inside a virtual machine. To do so, run the following command as root:

+
curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -s
+
+
+

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

+

A detailed guide about running Hass.io as a virtual machine is available in the blog.

+
+
+ +
+
+ + + + + + + diff --git a/hassio/installing_third_party_addons/index.html b/hassio/installing_third_party_addons/index.html new file mode 100644 index 0000000000..60e27bc355 --- /dev/null +++ b/hassio/installing_third_party_addons/index.html @@ -0,0 +1,178 @@ + + + + + + + + + Installing third-party add-ons - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Installing third-party add-ons +

+
+
+

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

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

+

+ +From the Hass.io main panel open the add-on store. +

+

+ +Add the URL of the repository and then press “Add”. A new card for the repository will appear. +

+

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 and then the System tab to find the System log. It should tell you what went wrong. Report this information to the repository author.

+
+
+ +
+
+ + + + + + + diff --git a/hassio/run_local/index.html b/hassio/run_local/index.html new file mode 100644 index 0000000000..c4cbb63b8e --- /dev/null +++ b/hassio/run_local/index.html @@ -0,0 +1,232 @@ + + + + + + + + + Run local scripts - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Run local scripts +

+
+
+

Hass.io is a managed environment, which means you can’t install applications that can be embedded into Home Assistant using the command_line sensor/switch.

+

There are three options if you need to run a script which reads data from a sensor or sends commands to other devices on Hass.io.

+

The first option is to write a custom component for Home Assistant. This implies that you can communicate with your device using Python. For more information about developing a custom component, take a look at custom-component development.

+

The second option is to use STDIN inside an add-on and use the service hassio.addon_stdin to send data. For more information, have a look at internal add-on communication. Here you will also find how you can easily access the Home Assistant Rest API.

+

The third option is to create 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 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.

+

Sensors

+

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.

+

In our Dockerfile we need to install:

+
RUN apk --no-cache add jq mosquitto-clients
+
+
+

Now we can process it with run.sh:

+
#!/bin/bash
+set -e
+
+CONFIG_PATH=/data/options.json
+
+# possible options for processing
+MQTT_SERVER=$(jq --raw-output '.server' $CONFIG_PATH)
+MQTT_PORT=$(jq --raw-output '.port' $CONFIG_PATH)
+TOPIC=$(jq --raw-output '.topic' $CONFIG_PATH)
+USER=$(jq --raw-output '.user' $CONFIG_PATH)
+PASSWORD=$(jq --raw-output '.password' $CONFIG_PATH)
+WAIT_TIME=$(jq --raw-output '.seconds' $CONFIG_PATH)
+
+# read data
+while true
+do
+  if OUTPUT="$(/read_my_sensor.sh)"
+  then
+    mosquitto_pub -h "$MQTT_SERVER" -p "$MQTT_PORT" -u "$USER" -P "$PASSWORD" -t "$TOPIC" -m "$OUTPUT" || true
+  else
+    echo "$(data) [ERROR] can't read sensor: $OUTPUT"
+  fi
+
+  sleep "$WAIT_TIME"
+done
+
+
+

Commands

+

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.

+

In our Dockerfile we need to install:

+
RUN apk --no-cache add jq mosquitto-clients
+
+
+

Now we can process it with run.sh:

+
#!/bin/bash
+set -e
+
+CONFIG_PATH=/data/options.json
+
+# possible options for processing
+MQTT_SERVER=$(jq --raw-output '.server' $CONFIG_PATH)
+MQTT_PORT=$(jq --raw-output '.port' $CONFIG_PATH)
+TOPIC=$(jq --raw-output '.topic' $CONFIG_PATH)
+USER=$(jq --raw-output '.user' $CONFIG_PATH)
+PASSWORD=$(jq --raw-output '.password' $CONFIG_PATH)
+
+# read data
+while read -r message
+do
+  if [ "$message" == "on" ]; then
+    /do_command_on.sh || true
+  else
+    /do_command_off.sh || true
+  fi
+
+done < <(mosquitto_sub -h "$MQTT_SERVER" -p "$MQTT_PORT" -u "$USER" -P "$PASSWORD" -t "$TOPIC" -q 1)
+
+
+
+
+ +
+
+ + + + + + + diff --git a/hassio/zwave/index.html b/hassio/zwave/index.html new file mode 100644 index 0000000000..be561c3626 --- /dev/null +++ b/hassio/zwave/index.html @@ -0,0 +1,187 @@ + + + + + + + + + Z-Wave - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Z-Wave +

+
+
+

To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add the following to your configuration.yaml:

+
zwave:
+  usb_path: /dev/ttyACM0
+
+
+

RAZBERRY BOARD

+

If you need GPIO on Raspberry Pi 3 for your Z-Wave module, add the following line into config.txt (you have to access that on the SD card directly; simply plug it into your PC and edit it there):

+
dtoverlay=pi3-miniuart-bt
+
+
+

After that, you need to change usb_path to /dev/ttyAMA0 in your configuration.yaml.

+
zwave:
+  usb_path: /dev/ttyAMA0
+
+
+

HUSBZB-1

+
zwave:
+  usb_path: /dev/ttyUSB0
+
+zha:
+  usb_path: /dev/ttyUSB1
+  database_path: /config/zigbee.db
+
+
+

Further reading

+

For more information on using Z-Wave, see the main documentation.

+
+
+ +
+
+ + + + + + + diff --git a/help/index.html b/help/index.html new file mode 100644 index 0000000000..9df94ba55a --- /dev/null +++ b/help/index.html @@ -0,0 +1,192 @@ + + + + + + + + + Help - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Help +

+
+
+

There are various ways to get in touch with the Home Assistant community. It doesn’t matter if you have a question, need help, want to request a feature, or just say ‘Hi’.

+

Communication channels

+ +

Bugs, Feature requests, and alike

+

Have you found an issue in your Home Assistant installation? Please report it. Reporting it makes it easy to track and ensures that it gets fixed.

+ +

Videos, talks, workshops and alike

+ +

Looking for talking points or trivia?

+

Media coverage

+

Don’t miss the regular Home Assistant podcasts.

+ +

Roadmap

+

There is no explicit roadmap available, but the public tracker can give you some insight into what is going on.

+
+
+
+
+ + + + + + + diff --git a/help/talking-points/index.html b/help/talking-points/index.html new file mode 100644 index 0000000000..9aa7af19e0 --- /dev/null +++ b/help/talking-points/index.html @@ -0,0 +1,138 @@ + + + + + + + + + Talking points - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Talking points +

+
+
+

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 and other details
  • +
  • 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
  • +
  • Written in Python3 with 94% test coverage
  • +
  • Active and helpful community
  • +
+
+
+
+
+ + + + + + + diff --git a/help/trivia/index.html b/help/trivia/index.html new file mode 100644 index 0000000000..c62dadc18b --- /dev/null +++ b/help/trivia/index.html @@ -0,0 +1,207 @@ + + + + + + + + + Trivia - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Trivia +

+
+
+

This page contains only irrelevant and unhelpful information about Home Assistant. If you are going to prepare a talk about Home Assistant, perhaps some information mentioned here can be used for the intro.

+

Name

+

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 Home Assistant Server Service). hass is also the name of the command-line part.

+

Website

+

The website https://home-assistant.io was launched on December 18, 2014 and contains documentation about the setup process, the platforms and components, and for the developers.

+

Logo

+

The current logo was created by Jeremy Geltman. Further details can be found in the announcement.

+

License

+

Home Assistant is open source software and available under the Apache 2.0 license.

+

Numbers

+

This sections just contains some random numbers of the Home Assistant eco-system. Sorry, only the main repository counts.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Description201520162017
Forum posts35233004171981
Forum topics83486321512
Forum members92393116663
Github stars2519523912074
Github forks37414243474
Page views ha.io600,3726,614,34323,727,481
+

Commit per year

+

The numbers below only covers the main git repository and doesn’t take the helpers (home-assistant.io, home-assistant-polymer, etc.) into account.

+
2013: 147
+2014: 328
+2015: 2963
+2016: 4299
+2017: 3917
+
+
+

More details and statistics can be found on Github.

+

First commit

+

The first commit in git was made on Sep 17, 2013 by Paulus Schoutsen.

+
commit d55e4d53cccc9123d03f45c53441e7cbfc58e515
+Author: Paulus Schoutsen <Paulus@PaulusSchoutsen.nl>
+Date:   Tue Sep 17 00:32:51 2013 -0700
+
+    Initial commit
+
+
+
+
+
+
+ + + + + + + diff --git a/source/images/architecture/architecture-remote.png b/images/architecture/architecture-remote.png similarity index 100% rename from source/images/architecture/architecture-remote.png rename to images/architecture/architecture-remote.png diff --git a/source/images/architecture/component_interaction.png b/images/architecture/component_interaction.png similarity index 100% rename from source/images/architecture/component_interaction.png rename to images/architecture/component_interaction.png diff --git a/source/images/architecture/ha_architecture.png b/images/architecture/ha_architecture.png similarity index 100% rename from source/images/architecture/ha_architecture.png rename to images/architecture/ha_architecture.png diff --git a/source/images/architecture/ha_architecture.svg b/images/architecture/ha_architecture.svg similarity index 100% rename from source/images/architecture/ha_architecture.svg rename to images/architecture/ha_architecture.svg diff --git a/source/images/architecture/ha_full_architecture.png b/images/architecture/ha_full_architecture.png similarity index 100% rename from source/images/architecture/ha_full_architecture.png rename to images/architecture/ha_full_architecture.png diff --git a/source/images/architecture/home_automation_landscape.png b/images/architecture/home_automation_landscape.png similarity index 100% rename from source/images/architecture/home_automation_landscape.png rename to images/architecture/home_automation_landscape.png diff --git a/source/images/architecture/intents.png b/images/architecture/intents.png similarity index 100% rename from source/images/architecture/intents.png rename to images/architecture/intents.png diff --git a/.themes/classic/source/images/bird_32_gray.png b/images/bird_32_gray.png similarity index 100% rename from .themes/classic/source/images/bird_32_gray.png rename to images/bird_32_gray.png diff --git a/.themes/classic/source/images/bird_32_gray_fail.png b/images/bird_32_gray_fail.png similarity index 100% rename from .themes/classic/source/images/bird_32_gray_fail.png rename to images/bird_32_gray_fail.png diff --git a/source/images/blog/2015-08-laundry-automation/data-graph.png b/images/blog/2015-08-laundry-automation/data-graph.png similarity index 100% rename from source/images/blog/2015-08-laundry-automation/data-graph.png rename to images/blog/2015-08-laundry-automation/data-graph.png diff --git a/source/images/blog/2015-08-laundry-automation/moteino-and-sensors.jpg b/images/blog/2015-08-laundry-automation/moteino-and-sensors.jpg similarity index 100% rename from source/images/blog/2015-08-laundry-automation/moteino-and-sensors.jpg rename to images/blog/2015-08-laundry-automation/moteino-and-sensors.jpg diff --git a/source/images/blog/2015-08-laundry-automation/moteino.jpg b/images/blog/2015-08-laundry-automation/moteino.jpg similarity index 100% rename from source/images/blog/2015-08-laundry-automation/moteino.jpg rename to images/blog/2015-08-laundry-automation/moteino.jpg diff --git a/source/images/blog/2015-08-laundry-automation/moteino2.jpg b/images/blog/2015-08-laundry-automation/moteino2.jpg similarity index 100% rename from source/images/blog/2015-08-laundry-automation/moteino2.jpg rename to images/blog/2015-08-laundry-automation/moteino2.jpg diff --git a/source/images/blog/2015-08-laundry-automation/reed-switch.jpg b/images/blog/2015-08-laundry-automation/reed-switch.jpg similarity index 100% rename from source/images/blog/2015-08-laundry-automation/reed-switch.jpg rename to images/blog/2015-08-laundry-automation/reed-switch.jpg diff --git a/source/images/blog/2015-08-laundry-automation/screenshot-ha.png b/images/blog/2015-08-laundry-automation/screenshot-ha.png similarity index 100% rename from source/images/blog/2015-08-laundry-automation/screenshot-ha.png rename to images/blog/2015-08-laundry-automation/screenshot-ha.png diff --git a/source/images/blog/2015-09-glances/sensors.png b/images/blog/2015-09-glances/sensors.png similarity index 100% rename from source/images/blog/2015-09-glances/sensors.png rename to images/blog/2015-09-glances/sensors.png diff --git a/source/images/blog/2015-09-glances/web-glances.png b/images/blog/2015-09-glances/web-glances.png similarity index 100% rename from source/images/blog/2015-09-glances/web-glances.png rename to images/blog/2015-09-glances/web-glances.png diff --git a/source/images/blog/2015-09-ifttt/og_facebook.png b/images/blog/2015-09-ifttt/og_facebook.png similarity index 100% rename from source/images/blog/2015-09-ifttt/og_facebook.png rename to images/blog/2015-09-ifttt/og_facebook.png diff --git a/source/images/blog/2015-09-ifttt/recipe-do.png b/images/blog/2015-09-ifttt/recipe-do.png similarity index 100% rename from source/images/blog/2015-09-ifttt/recipe-do.png rename to images/blog/2015-09-ifttt/recipe-do.png diff --git a/source/images/blog/2015-09-ifttt/recipe-geo.png b/images/blog/2015-09-ifttt/recipe-geo.png similarity index 100% rename from source/images/blog/2015-09-ifttt/recipe-geo.png rename to images/blog/2015-09-ifttt/recipe-geo.png diff --git a/source/images/blog/2015-09-ifttt/recipe-github.png b/images/blog/2015-09-ifttt/recipe-github.png similarity index 100% rename from source/images/blog/2015-09-ifttt/recipe-github.png rename to images/blog/2015-09-ifttt/recipe-github.png diff --git a/source/images/blog/2015-09-ifttt/recipe-twitter.png b/images/blog/2015-09-ifttt/recipe-twitter.png similarity index 100% rename from source/images/blog/2015-09-ifttt/recipe-twitter.png rename to images/blog/2015-09-ifttt/recipe-twitter.png diff --git a/source/images/blog/2015-09-ifttt/recipe-weather.png b/images/blog/2015-09-ifttt/recipe-weather.png similarity index 100% rename from source/images/blog/2015-09-ifttt/recipe-weather.png rename to images/blog/2015-09-ifttt/recipe-weather.png diff --git a/source/images/blog/2015-09-ifttt/splash.png b/images/blog/2015-09-ifttt/splash.png similarity index 100% rename from source/images/blog/2015-09-ifttt/splash.png rename to images/blog/2015-09-ifttt/splash.png diff --git a/source/images/blog/2015-09-mqtt/arduino-shield.png b/images/blog/2015-09-mqtt/arduino-shield.png similarity index 100% rename from source/images/blog/2015-09-mqtt/arduino-shield.png rename to images/blog/2015-09-mqtt/arduino-shield.png diff --git a/source/images/blog/2015-09-mqtt/arduino.png b/images/blog/2015-09-mqtt/arduino.png similarity index 100% rename from source/images/blog/2015-09-mqtt/arduino.png rename to images/blog/2015-09-mqtt/arduino.png diff --git a/source/images/blog/2015-09-mqtt/lottery.png b/images/blog/2015-09-mqtt/lottery.png similarity index 100% rename from source/images/blog/2015-09-mqtt/lottery.png rename to images/blog/2015-09-mqtt/lottery.png diff --git a/source/images/blog/2015-09-mqtt/mood.png b/images/blog/2015-09-mqtt/mood.png similarity index 100% rename from source/images/blog/2015-09-mqtt/mood.png rename to images/blog/2015-09-mqtt/mood.png diff --git a/source/images/blog/2015-10-esp8266-temp/ha-sensor.png b/images/blog/2015-10-esp8266-temp/ha-sensor.png similarity index 100% rename from source/images/blog/2015-10-esp8266-temp/ha-sensor.png rename to images/blog/2015-10-esp8266-temp/ha-sensor.png diff --git a/source/images/blog/2015-10-esp8266-temp/setup.png b/images/blog/2015-10-esp8266-temp/setup.png similarity index 100% rename from source/images/blog/2015-10-esp8266-temp/setup.png rename to images/blog/2015-10-esp8266-temp/setup.png diff --git a/source/images/blog/2015-11-survey/alarm-cameras.png b/images/blog/2015-11-survey/alarm-cameras.png similarity index 100% rename from source/images/blog/2015-11-survey/alarm-cameras.png rename to images/blog/2015-11-survey/alarm-cameras.png diff --git a/source/images/blog/2015-11-survey/components.png b/images/blog/2015-11-survey/components.png similarity index 100% rename from source/images/blog/2015-11-survey/components.png rename to images/blog/2015-11-survey/components.png diff --git a/source/images/blog/2015-11-survey/lights.png b/images/blog/2015-11-survey/lights.png similarity index 100% rename from source/images/blog/2015-11-survey/lights.png rename to images/blog/2015-11-survey/lights.png diff --git a/source/images/blog/2015-11-survey/notifications.png b/images/blog/2015-11-survey/notifications.png similarity index 100% rename from source/images/blog/2015-11-survey/notifications.png rename to images/blog/2015-11-survey/notifications.png diff --git a/source/images/blog/2015-11-survey/os.png b/images/blog/2015-11-survey/os.png similarity index 100% rename from source/images/blog/2015-11-survey/os.png rename to images/blog/2015-11-survey/os.png diff --git a/source/images/blog/2015-11-survey/platforms.png b/images/blog/2015-11-survey/platforms.png similarity index 100% rename from source/images/blog/2015-11-survey/platforms.png rename to images/blog/2015-11-survey/platforms.png diff --git a/source/images/blog/2015-11-survey/players.png b/images/blog/2015-11-survey/players.png similarity index 100% rename from source/images/blog/2015-11-survey/players.png rename to images/blog/2015-11-survey/players.png diff --git a/source/images/blog/2015-11-survey/releases.png b/images/blog/2015-11-survey/releases.png similarity index 100% rename from source/images/blog/2015-11-survey/releases.png rename to images/blog/2015-11-survey/releases.png diff --git a/source/images/blog/2015-11-survey/sensors.png b/images/blog/2015-11-survey/sensors.png similarity index 100% rename from source/images/blog/2015-11-survey/sensors.png rename to images/blog/2015-11-survey/sensors.png diff --git a/source/images/blog/2015-11-survey/switches.png b/images/blog/2015-11-survey/switches.png similarity index 100% rename from source/images/blog/2015-11-survey/switches.png rename to images/blog/2015-11-survey/switches.png diff --git a/source/images/blog/2015-11-survey/thermostats.png b/images/blog/2015-11-survey/thermostats.png similarity index 100% rename from source/images/blog/2015-11-survey/thermostats.png rename to images/blog/2015-11-survey/thermostats.png diff --git a/source/images/blog/2015-11-survey/trackers.png b/images/blog/2015-11-survey/trackers.png similarity index 100% rename from source/images/blog/2015-11-survey/trackers.png rename to images/blog/2015-11-survey/trackers.png diff --git a/source/images/blog/2015-12-community/hass-alexa.png b/images/blog/2015-12-community/hass-alexa.png similarity index 100% rename from source/images/blog/2015-12-community/hass-alexa.png rename to images/blog/2015-12-community/hass-alexa.png diff --git a/source/images/blog/2015-12-influxdb/grafana-graph.png b/images/blog/2015-12-influxdb/grafana-graph.png similarity index 100% rename from source/images/blog/2015-12-influxdb/grafana-graph.png rename to images/blog/2015-12-influxdb/grafana-graph.png diff --git a/source/images/blog/2015-12-influxdb/grafana-settings.png b/images/blog/2015-12-influxdb/grafana-settings.png similarity index 100% rename from source/images/blog/2015-12-influxdb/grafana-settings.png rename to images/blog/2015-12-influxdb/grafana-settings.png diff --git a/source/images/blog/2015-12-influxdb/influxdb-frontend.png b/images/blog/2015-12-influxdb/influxdb-frontend.png similarity index 100% rename from source/images/blog/2015-12-influxdb/influxdb-frontend.png rename to images/blog/2015-12-influxdb/influxdb-frontend.png diff --git a/source/images/blog/2015-12-lets-encrypt/letsencrypt-secured-fb.png b/images/blog/2015-12-lets-encrypt/letsencrypt-secured-fb.png similarity index 100% rename from source/images/blog/2015-12-lets-encrypt/letsencrypt-secured-fb.png rename to images/blog/2015-12-lets-encrypt/letsencrypt-secured-fb.png diff --git a/source/images/blog/2015-12-lets-encrypt/letsencrypt-secured.png b/images/blog/2015-12-lets-encrypt/letsencrypt-secured.png similarity index 100% rename from source/images/blog/2015-12-lets-encrypt/letsencrypt-secured.png rename to images/blog/2015-12-lets-encrypt/letsencrypt-secured.png diff --git a/source/images/blog/2015-12-philips-hue-3rd-party/mirror.png b/images/blog/2015-12-philips-hue-3rd-party/mirror.png similarity index 100% rename from source/images/blog/2015-12-philips-hue-3rd-party/mirror.png rename to images/blog/2015-12-philips-hue-3rd-party/mirror.png diff --git a/source/images/blog/2015-12-philips-hue-3rd-party/philips-hue-faq.png b/images/blog/2015-12-philips-hue-3rd-party/philips-hue-faq.png similarity index 100% rename from source/images/blog/2015-12-philips-hue-3rd-party/philips-hue-faq.png rename to images/blog/2015-12-philips-hue-3rd-party/philips-hue-faq.png diff --git a/source/images/blog/2015-12-philips-hue-3rd-party/philips-hue-reversed-faq.png b/images/blog/2015-12-philips-hue-3rd-party/philips-hue-reversed-faq.png similarity index 100% rename from source/images/blog/2015-12-philips-hue-3rd-party/philips-hue-reversed-faq.png rename to images/blog/2015-12-philips-hue-3rd-party/philips-hue-reversed-faq.png diff --git a/source/images/blog/2015-12-release-09/facebook-09.png b/images/blog/2015-12-release-09/facebook-09.png similarity index 100% rename from source/images/blog/2015-12-release-09/facebook-09.png rename to images/blog/2015-12-release-09/facebook-09.png diff --git a/source/images/blog/2015-12-release-10/alexa-fb.png b/images/blog/2015-12-release-10/alexa-fb.png similarity index 100% rename from source/images/blog/2015-12-release-10/alexa-fb.png rename to images/blog/2015-12-release-10/alexa-fb.png diff --git a/source/images/blog/2015-12-tasker/screenshot-1.png b/images/blog/2015-12-tasker/screenshot-1.png similarity index 100% rename from source/images/blog/2015-12-tasker/screenshot-1.png rename to images/blog/2015-12-tasker/screenshot-1.png diff --git a/source/images/blog/2015-12-tasker/screenshot-2.png b/images/blog/2015-12-tasker/screenshot-2.png similarity index 100% rename from source/images/blog/2015-12-tasker/screenshot-2.png rename to images/blog/2015-12-tasker/screenshot-2.png diff --git a/source/images/blog/2015-12-tasker/screenshot-3.png b/images/blog/2015-12-tasker/screenshot-3.png similarity index 100% rename from source/images/blog/2015-12-tasker/screenshot-3.png rename to images/blog/2015-12-tasker/screenshot-3.png diff --git a/source/images/blog/2015-12-tasker/tasker-logo.png b/images/blog/2015-12-tasker/tasker-logo.png similarity index 100% rename from source/images/blog/2015-12-tasker/tasker-logo.png rename to images/blog/2015-12-tasker/tasker-logo.png diff --git a/source/images/blog/2016-01-release-12/social.png b/images/blog/2016-01-release-12/social.png similarity index 100% rename from source/images/blog/2016-01-release-12/social.png rename to images/blog/2016-01-release-12/social.png diff --git a/source/images/blog/2016-01-release-12/views.png b/images/blog/2016-01-release-12/views.png similarity index 100% rename from source/images/blog/2016-01-release-12/views.png rename to images/blog/2016-01-release-12/views.png diff --git a/source/images/blog/2016-02-classifying-internet-of-things/social.png b/images/blog/2016-02-classifying-internet-of-things/social.png similarity index 100% rename from source/images/blog/2016-02-classifying-internet-of-things/social.png rename to images/blog/2016-02-classifying-internet-of-things/social.png diff --git a/source/images/blog/2016-02-community-highlights/garfield-nfc.png b/images/blog/2016-02-community-highlights/garfield-nfc.png similarity index 100% rename from source/images/blog/2016-02-community-highlights/garfield-nfc.png rename to images/blog/2016-02-community-highlights/garfield-nfc.png diff --git a/source/images/blog/2016-02-community-highlights/part-of-the-thing.png b/images/blog/2016-02-community-highlights/part-of-the-thing.png similarity index 100% rename from source/images/blog/2016-02-community-highlights/part-of-the-thing.png rename to images/blog/2016-02-community-highlights/part-of-the-thing.png diff --git a/source/images/blog/2016-02-release-13/input_select__input_boolean__weblink.png b/images/blog/2016-02-release-13/input_select__input_boolean__weblink.png similarity index 100% rename from source/images/blog/2016-02-release-13/input_select__input_boolean__weblink.png rename to images/blog/2016-02-release-13/input_select__input_boolean__weblink.png diff --git a/source/images/blog/2016-02-release-13/social-img.png b/images/blog/2016-02-release-13/social-img.png similarity index 100% rename from source/images/blog/2016-02-release-13/social-img.png rename to images/blog/2016-02-release-13/social-img.png diff --git a/source/images/blog/2016-02-release-14/screenshot-webcam.png b/images/blog/2016-02-release-14/screenshot-webcam.png similarity index 100% rename from source/images/blog/2016-02-release-14/screenshot-webcam.png rename to images/blog/2016-02-release-14/screenshot-webcam.png diff --git a/source/images/blog/2016-02-release-14/social.png b/images/blog/2016-02-release-14/social.png similarity index 100% rename from source/images/blog/2016-02-release-14/social.png rename to images/blog/2016-02-release-14/social.png diff --git a/source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png b/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png similarity index 100% rename from source/images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png rename to images/blog/2016-02-smartthings/SmartThings-HomeAssistant.png diff --git a/source/images/blog/2016-02-smartthings/social.png b/images/blog/2016-02-smartthings/social.png similarity index 100% rename from source/images/blog/2016-02-smartthings/social.png rename to images/blog/2016-02-smartthings/social.png diff --git a/source/images/blog/2016-02-smartthings/splash.png b/images/blog/2016-02-smartthings/splash.png similarity index 100% rename from source/images/blog/2016-02-smartthings/splash.png rename to images/blog/2016-02-smartthings/splash.png diff --git a/source/images/blog/2016-02-snapcast/diagram.png b/images/blog/2016-02-snapcast/diagram.png similarity index 100% rename from source/images/blog/2016-02-snapcast/diagram.png rename to images/blog/2016-02-snapcast/diagram.png diff --git a/source/images/blog/2016-04-display/ha-display.png b/images/blog/2016-04-display/ha-display.png similarity index 100% rename from source/images/blog/2016-04-display/ha-display.png rename to images/blog/2016-04-display/ha-display.png diff --git a/source/images/blog/2016-04-ibeacons/owntracks_beacon_setup.png b/images/blog/2016-04-ibeacons/owntracks_beacon_setup.png similarity index 100% rename from source/images/blog/2016-04-ibeacons/owntracks_beacon_setup.png rename to images/blog/2016-04-ibeacons/owntracks_beacon_setup.png diff --git a/source/images/blog/2016-04-ibeacons/owntracks_red_beacon.png b/images/blog/2016-04-ibeacons/owntracks_red_beacon.png similarity index 100% rename from source/images/blog/2016-04-ibeacons/owntracks_red_beacon.png rename to images/blog/2016-04-ibeacons/owntracks_red_beacon.png diff --git a/source/images/blog/2016-04-release-18/media_player.png b/images/blog/2016-04-release-18/media_player.png similarity index 100% rename from source/images/blog/2016-04-release-18/media_player.png rename to images/blog/2016-04-release-18/media_player.png diff --git a/source/images/blog/2016-04-release-18/social.png b/images/blog/2016-04-release-18/social.png similarity index 100% rename from source/images/blog/2016-04-release-18/social.png rename to images/blog/2016-04-release-18/social.png diff --git a/source/images/blog/2016-05-ibeacons/keys_device.png b/images/blog/2016-05-ibeacons/keys_device.png similarity index 100% rename from source/images/blog/2016-05-ibeacons/keys_device.png rename to images/blog/2016-05-ibeacons/keys_device.png diff --git a/source/images/blog/2016-05-ibeacons/keys_with_beacon.jpg b/images/blog/2016-05-ibeacons/keys_with_beacon.jpg similarity index 100% rename from source/images/blog/2016-05-ibeacons/keys_with_beacon.jpg rename to images/blog/2016-05-ibeacons/keys_with_beacon.jpg diff --git a/source/images/blog/2016-05-openiot/preview-video.png b/images/blog/2016-05-openiot/preview-video.png similarity index 100% rename from source/images/blog/2016-05-openiot/preview-video.png rename to images/blog/2016-05-openiot/preview-video.png diff --git a/source/images/blog/2016-05-video-all-in-one-installer/preview-video.jpg b/images/blog/2016-05-video-all-in-one-installer/preview-video.jpg similarity index 100% rename from source/images/blog/2016-05-video-all-in-one-installer/preview-video.jpg rename to images/blog/2016-05-video-all-in-one-installer/preview-video.jpg diff --git a/source/images/blog/2016-05-video-configuring-home-assistant/preview-video.png b/images/blog/2016-05-video-configuring-home-assistant/preview-video.png similarity index 100% rename from source/images/blog/2016-05-video-configuring-home-assistant/preview-video.png rename to images/blog/2016-05-video-configuring-home-assistant/preview-video.png diff --git a/source/images/blog/2016-06-community-highlights/video_preview.png b/images/blog/2016-06-community-highlights/video_preview.png similarity index 100% rename from source/images/blog/2016-06-community-highlights/video_preview.png rename to images/blog/2016-06-community-highlights/video_preview.png diff --git a/source/images/blog/2016-06-cranberry/cam.png b/images/blog/2016-06-cranberry/cam.png similarity index 100% rename from source/images/blog/2016-06-cranberry/cam.png rename to images/blog/2016-06-cranberry/cam.png diff --git a/source/images/blog/2016-06-cranberry/motion.png b/images/blog/2016-06-cranberry/motion.png similarity index 100% rename from source/images/blog/2016-06-cranberry/motion.png rename to images/blog/2016-06-cranberry/motion.png diff --git a/source/images/blog/2016-06-cranberry/social.png b/images/blog/2016-06-cranberry/social.png similarity index 100% rename from source/images/blog/2016-06-cranberry/social.png rename to images/blog/2016-06-cranberry/social.png diff --git a/source/images/blog/2016-06-pycon/crew.jpg b/images/blog/2016-06-pycon/crew.jpg similarity index 100% rename from source/images/blog/2016-06-pycon/crew.jpg rename to images/blog/2016-06-pycon/crew.jpg diff --git a/source/images/blog/2016-06-pycon/sprint.jpg b/images/blog/2016-06-pycon/sprint.jpg similarity index 100% rename from source/images/blog/2016-06-pycon/sprint.jpg rename to images/blog/2016-06-pycon/sprint.jpg diff --git a/source/images/blog/2016-07-data-exploration/graph.png b/images/blog/2016-07-data-exploration/graph.png similarity index 100% rename from source/images/blog/2016-07-data-exploration/graph.png rename to images/blog/2016-07-data-exploration/graph.png diff --git a/source/images/blog/2016-07-laundry-automation/block-diagram.png b/images/blog/2016-07-laundry-automation/block-diagram.png similarity index 100% rename from source/images/blog/2016-07-laundry-automation/block-diagram.png rename to images/blog/2016-07-laundry-automation/block-diagram.png diff --git a/source/images/blog/2016-07-laundry-automation/data-graph.png b/images/blog/2016-07-laundry-automation/data-graph.png similarity index 100% rename from source/images/blog/2016-07-laundry-automation/data-graph.png rename to images/blog/2016-07-laundry-automation/data-graph.png diff --git a/source/images/blog/2016-07-laundry-automation/protoboard.jpg b/images/blog/2016-07-laundry-automation/protoboard.jpg similarity index 100% rename from source/images/blog/2016-07-laundry-automation/protoboard.jpg rename to images/blog/2016-07-laundry-automation/protoboard.jpg diff --git a/source/images/blog/2016-07-laundry-automation/screenshot-ha.png b/images/blog/2016-07-laundry-automation/screenshot-ha.png similarity index 100% rename from source/images/blog/2016-07-laundry-automation/screenshot-ha.png rename to images/blog/2016-07-laundry-automation/screenshot-ha.png diff --git a/source/images/blog/2016-07-micropython/micropython.png b/images/blog/2016-07-micropython/micropython.png similarity index 100% rename from source/images/blog/2016-07-micropython/micropython.png rename to images/blog/2016-07-micropython/micropython.png diff --git a/source/images/blog/2016-07-micropython/social.png b/images/blog/2016-07-micropython/social.png similarity index 100% rename from source/images/blog/2016-07-micropython/social.png rename to images/blog/2016-07-micropython/social.png diff --git a/source/images/blog/2016-07-pocketchip/pocketchip-logo.png b/images/blog/2016-07-pocketchip/pocketchip-logo.png similarity index 100% rename from source/images/blog/2016-07-pocketchip/pocketchip-logo.png rename to images/blog/2016-07-pocketchip/pocketchip-logo.png diff --git a/source/images/blog/2016-07-pocketchip/pocketchip.png b/images/blog/2016-07-pocketchip/pocketchip.png similarity index 100% rename from source/images/blog/2016-07-pocketchip/pocketchip.png rename to images/blog/2016-07-pocketchip/pocketchip.png diff --git a/source/images/blog/2016-07-pocketchip/size.png b/images/blog/2016-07-pocketchip/size.png similarity index 100% rename from source/images/blog/2016-07-pocketchip/size.png rename to images/blog/2016-07-pocketchip/size.png diff --git a/source/images/blog/2016-07-pocketchip/social.png b/images/blog/2016-07-pocketchip/social.png similarity index 100% rename from source/images/blog/2016-07-pocketchip/social.png rename to images/blog/2016-07-pocketchip/social.png diff --git a/source/images/blog/2016-07-reporting/db-browser.png b/images/blog/2016-07-reporting/db-browser.png similarity index 100% rename from source/images/blog/2016-07-reporting/db-browser.png rename to images/blog/2016-07-reporting/db-browser.png diff --git a/source/images/blog/2016-07-reporting/libreoffice-graph.png b/images/blog/2016-07-reporting/libreoffice-graph.png similarity index 100% rename from source/images/blog/2016-07-reporting/libreoffice-graph.png rename to images/blog/2016-07-reporting/libreoffice-graph.png diff --git a/source/images/blog/2016-07-reporting/libreoffice-import.png b/images/blog/2016-07-reporting/libreoffice-import.png similarity index 100% rename from source/images/blog/2016-07-reporting/libreoffice-import.png rename to images/blog/2016-07-reporting/libreoffice-import.png diff --git a/source/images/blog/2016-07-reporting/mpl-sensor.png b/images/blog/2016-07-reporting/mpl-sensor.png similarity index 100% rename from source/images/blog/2016-07-reporting/mpl-sensor.png rename to images/blog/2016-07-reporting/mpl-sensor.png diff --git a/source/images/blog/2016-08-data-exploration/heatmap.png b/images/blog/2016-08-data-exploration/heatmap.png similarity index 100% rename from source/images/blog/2016-08-data-exploration/heatmap.png rename to images/blog/2016-08-data-exploration/heatmap.png diff --git a/source/images/blog/2016-08-optimizing-web-app/performance-diagram.png b/images/blog/2016-08-optimizing-web-app/performance-diagram.png similarity index 100% rename from source/images/blog/2016-08-optimizing-web-app/performance-diagram.png rename to images/blog/2016-08-optimizing-web-app/performance-diagram.png diff --git a/source/images/blog/2016-08-optimizing-web-app/performance-timeline-0.18.2.png b/images/blog/2016-08-optimizing-web-app/performance-timeline-0.18.2.png similarity index 100% rename from source/images/blog/2016-08-optimizing-web-app/performance-timeline-0.18.2.png rename to images/blog/2016-08-optimizing-web-app/performance-timeline-0.18.2.png diff --git a/source/images/blog/2016-08-optimizing-web-app/performance-timeline-0.26.png b/images/blog/2016-08-optimizing-web-app/performance-timeline-0.26.png similarity index 100% rename from source/images/blog/2016-08-optimizing-web-app/performance-timeline-0.26.png rename to images/blog/2016-08-optimizing-web-app/performance-timeline-0.26.png diff --git a/source/images/blog/2016-08-optimizing-web-app/timeline-corejs.png b/images/blog/2016-08-optimizing-web-app/timeline-corejs.png similarity index 100% rename from source/images/blog/2016-08-optimizing-web-app/timeline-corejs.png rename to images/blog/2016-08-optimizing-web-app/timeline-corejs.png diff --git a/source/images/blog/2016-08-optimizing-web-app/timeline-no-more-es2015.png b/images/blog/2016-08-optimizing-web-app/timeline-no-more-es2015.png similarity index 100% rename from source/images/blog/2016-08-optimizing-web-app/timeline-no-more-es2015.png rename to images/blog/2016-08-optimizing-web-app/timeline-no-more-es2015.png diff --git a/source/images/blog/2016-10-flash-briefing-updater-hacktoberfest/map.png b/images/blog/2016-10-flash-briefing-updater-hacktoberfest/map.png similarity index 100% rename from source/images/blog/2016-10-flash-briefing-updater-hacktoberfest/map.png rename to images/blog/2016-10-flash-briefing-updater-hacktoberfest/map.png diff --git a/source/images/blog/2016-10-flash-briefing-updater-hacktoberfest/stay-classy.jpg b/images/blog/2016-10-flash-briefing-updater-hacktoberfest/stay-classy.jpg similarity index 100% rename from source/images/blog/2016-10-flash-briefing-updater-hacktoberfest/stay-classy.jpg rename to images/blog/2016-10-flash-briefing-updater-hacktoberfest/stay-classy.jpg diff --git a/source/images/blog/2016-10-hacktoberfest/hacktoberfest.png b/images/blog/2016-10-hacktoberfest/hacktoberfest.png similarity index 100% rename from source/images/blog/2016-10-hacktoberfest/hacktoberfest.png rename to images/blog/2016-10-hacktoberfest/hacktoberfest.png diff --git a/source/images/blog/2016-10-hacktoberfest/social.png b/images/blog/2016-10-hacktoberfest/social.png similarity index 100% rename from source/images/blog/2016-10-hacktoberfest/social.png rename to images/blog/2016-10-hacktoberfest/social.png diff --git a/source/images/blog/2016-10-hassbian/social.png b/images/blog/2016-10-hassbian/social.png similarity index 100% rename from source/images/blog/2016-10-hassbian/social.png rename to images/blog/2016-10-hassbian/social.png diff --git a/source/images/blog/2016-11-0.33/social.png b/images/blog/2016-11-0.33/social.png similarity index 100% rename from source/images/blog/2016-11-0.33/social.png rename to images/blog/2016-11-0.33/social.png diff --git a/source/images/blog/2016-12-0.34/social.png b/images/blog/2016-12-0.34/social.png similarity index 100% rename from source/images/blog/2016-12-0.34/social.png rename to images/blog/2016-12-0.34/social.png diff --git a/source/images/blog/2016-12-0.35/social.png b/images/blog/2016-12-0.35/social.png similarity index 100% rename from source/images/blog/2016-12-0.35/social.png rename to images/blog/2016-12-0.35/social.png diff --git a/source/images/blog/2017-01-0.36/social.png b/images/blog/2017-01-0.36/social.png similarity index 100% rename from source/images/blog/2017-01-0.36/social.png rename to images/blog/2017-01-0.36/social.png diff --git a/source/images/blog/2017-01-0.37/social.png b/images/blog/2017-01-0.37/social.png similarity index 100% rename from source/images/blog/2017-01-0.37/social.png rename to images/blog/2017-01-0.37/social.png diff --git a/source/images/blog/2017-01-bruh-christmas/christmas-tree.gif b/images/blog/2017-01-bruh-christmas/christmas-tree.gif similarity index 100% rename from source/images/blog/2017-01-bruh-christmas/christmas-tree.gif rename to images/blog/2017-01-bruh-christmas/christmas-tree.gif diff --git a/source/images/blog/2017-01-bruh-christmas/stats.png b/images/blog/2017-01-bruh-christmas/stats.png similarity index 100% rename from source/images/blog/2017-01-bruh-christmas/stats.png rename to images/blog/2017-01-bruh-christmas/stats.png diff --git a/source/images/blog/2017-02-0.38/social.png b/images/blog/2017-02-0.38/social.png similarity index 100% rename from source/images/blog/2017-02-0.38/social.png rename to images/blog/2017-02-0.38/social.png diff --git a/source/images/blog/2017-02-0.39/config.png b/images/blog/2017-02-0.39/config.png similarity index 100% rename from source/images/blog/2017-02-0.39/config.png rename to images/blog/2017-02-0.39/config.png diff --git a/source/images/blog/2017-02-0.39/social.png b/images/blog/2017-02-0.39/social.png similarity index 100% rename from source/images/blog/2017-02-0.39/social.png rename to images/blog/2017-02-0.39/social.png diff --git a/source/images/blog/2017-02-babyphone/social.png b/images/blog/2017-02-babyphone/social.png similarity index 100% rename from source/images/blog/2017-02-babyphone/social.png rename to images/blog/2017-02-babyphone/social.png diff --git a/source/images/blog/2017-02-shirts/beard.png b/images/blog/2017-02-shirts/beard.png similarity index 100% rename from source/images/blog/2017-02-shirts/beard.png rename to images/blog/2017-02-shirts/beard.png diff --git a/source/images/blog/2017-02-shirts/family.png b/images/blog/2017-02-shirts/family.png similarity index 100% rename from source/images/blog/2017-02-shirts/family.png rename to images/blog/2017-02-shirts/family.png diff --git a/source/images/blog/2017-02-shirts/group.png b/images/blog/2017-02-shirts/group.png similarity index 100% rename from source/images/blog/2017-02-shirts/group.png rename to images/blog/2017-02-shirts/group.png diff --git a/source/images/blog/2017-02-shirts/kids.png b/images/blog/2017-02-shirts/kids.png similarity index 100% rename from source/images/blog/2017-02-shirts/kids.png rename to images/blog/2017-02-shirts/kids.png diff --git a/source/images/blog/2017-02-shirts/lollipop.png b/images/blog/2017-02-shirts/lollipop.png similarity index 100% rename from source/images/blog/2017-02-shirts/lollipop.png rename to images/blog/2017-02-shirts/lollipop.png diff --git a/source/images/blog/2017-02-shirts/pull-finger.png b/images/blog/2017-02-shirts/pull-finger.png similarity index 100% rename from source/images/blog/2017-02-shirts/pull-finger.png rename to images/blog/2017-02-shirts/pull-finger.png diff --git a/source/images/blog/2017-02-shirts/shout.png b/images/blog/2017-02-shirts/shout.png similarity index 100% rename from source/images/blog/2017-02-shirts/shout.png rename to images/blog/2017-02-shirts/shout.png diff --git a/source/images/blog/2017-02-shirts/social.png b/images/blog/2017-02-shirts/social.png similarity index 100% rename from source/images/blog/2017-02-shirts/social.png rename to images/blog/2017-02-shirts/social.png diff --git a/source/images/blog/2017-02-workshop/social.png b/images/blog/2017-02-workshop/social.png similarity index 100% rename from source/images/blog/2017-02-workshop/social.png rename to images/blog/2017-02-workshop/social.png diff --git a/source/images/blog/2017-03-0.40/ipwebcam.png b/images/blog/2017-03-0.40/ipwebcam.png similarity index 100% rename from source/images/blog/2017-03-0.40/ipwebcam.png rename to images/blog/2017-03-0.40/ipwebcam.png diff --git a/source/images/blog/2017-03-0.40/social.png b/images/blog/2017-03-0.40/social.png similarity index 100% rename from source/images/blog/2017-03-0.40/social.png rename to images/blog/2017-03-0.40/social.png diff --git a/source/images/blog/2017-03-0.41/social.png b/images/blog/2017-03-0.41/social.png similarity index 100% rename from source/images/blog/2017-03-0.41/social.png rename to images/blog/2017-03-0.41/social.png diff --git a/source/images/blog/2017-03-bridge/social.png b/images/blog/2017-03-bridge/social.png similarity index 100% rename from source/images/blog/2017-03-bridge/social.png rename to images/blog/2017-03-bridge/social.png diff --git a/source/images/blog/2017-03-opensourcecraft/social.jpg b/images/blog/2017-03-opensourcecraft/social.jpg similarity index 100% rename from source/images/blog/2017-03-opensourcecraft/social.jpg rename to images/blog/2017-03-opensourcecraft/social.jpg diff --git a/source/images/blog/2017-04-0.42/social.png b/images/blog/2017-04-0.42/social.png similarity index 100% rename from source/images/blog/2017-04-0.42/social.png rename to images/blog/2017-04-0.42/social.png diff --git a/source/images/blog/2017-04-0.43/components.png b/images/blog/2017-04-0.43/components.png similarity index 100% rename from source/images/blog/2017-04-0.43/components.png rename to images/blog/2017-04-0.43/components.png diff --git a/source/images/blog/2017-04-award/award.jpg b/images/blog/2017-04-award/award.jpg similarity index 100% rename from source/images/blog/2017-04-award/award.jpg rename to images/blog/2017-04-award/award.jpg diff --git a/source/images/blog/2017-04-award/social.png b/images/blog/2017-04-award/social.png similarity index 100% rename from source/images/blog/2017-04-award/social.png rename to images/blog/2017-04-award/social.png diff --git a/source/images/blog/2017-04-influxdb-grafana/add_data_source.png b/images/blog/2017-04-influxdb-grafana/add_data_source.png similarity index 100% rename from source/images/blog/2017-04-influxdb-grafana/add_data_source.png rename to images/blog/2017-04-influxdb-grafana/add_data_source.png diff --git a/source/images/blog/2017-04-influxdb-grafana/create_HA_database.png b/images/blog/2017-04-influxdb-grafana/create_HA_database.png similarity index 100% rename from source/images/blog/2017-04-influxdb-grafana/create_HA_database.png rename to images/blog/2017-04-influxdb-grafana/create_HA_database.png diff --git a/source/images/blog/2017-04-influxdb-grafana/influxdb-grafana-ha.png b/images/blog/2017-04-influxdb-grafana/influxdb-grafana-ha.png similarity index 100% rename from source/images/blog/2017-04-influxdb-grafana/influxdb-grafana-ha.png rename to images/blog/2017-04-influxdb-grafana/influxdb-grafana-ha.png diff --git a/source/images/blog/2017-04-influxdb-grafana/share_dashboard.png b/images/blog/2017-04-influxdb-grafana/share_dashboard.png similarity index 100% rename from source/images/blog/2017-04-influxdb-grafana/share_dashboard.png rename to images/blog/2017-04-influxdb-grafana/share_dashboard.png diff --git a/source/images/blog/2017-04-tradfri/discovery.png b/images/blog/2017-04-tradfri/discovery.png similarity index 100% rename from source/images/blog/2017-04-tradfri/discovery.png rename to images/blog/2017-04-tradfri/discovery.png diff --git a/source/images/blog/2017-04-tradfri/gateway.jpg b/images/blog/2017-04-tradfri/gateway.jpg similarity index 100% rename from source/images/blog/2017-04-tradfri/gateway.jpg rename to images/blog/2017-04-tradfri/gateway.jpg diff --git a/source/images/blog/2017-04-tradfri/prices.png b/images/blog/2017-04-tradfri/prices.png similarity index 100% rename from source/images/blog/2017-04-tradfri/prices.png rename to images/blog/2017-04-tradfri/prices.png diff --git a/source/images/blog/2017-05-0.44/components.png b/images/blog/2017-05-0.44/components.png similarity index 100% rename from source/images/blog/2017-05-0.44/components.png rename to images/blog/2017-05-0.44/components.png diff --git a/source/images/blog/2017-05-0.45/components.png b/images/blog/2017-05-0.45/components.png similarity index 100% rename from source/images/blog/2017-05-0.45/components.png rename to images/blog/2017-05-0.45/components.png diff --git a/source/images/blog/2017-05-0.45/power-meter.png b/images/blog/2017-05-0.45/power-meter.png similarity index 100% rename from source/images/blog/2017-05-0.45/power-meter.png rename to images/blog/2017-05-0.45/power-meter.png diff --git a/source/images/blog/2017-05-0.45/trigger.png b/images/blog/2017-05-0.45/trigger.png similarity index 100% rename from source/images/blog/2017-05-0.45/trigger.png rename to images/blog/2017-05-0.45/trigger.png diff --git a/source/images/blog/2017-05-0.45/zwave.png b/images/blog/2017-05-0.45/zwave.png similarity index 100% rename from source/images/blog/2017-05-0.45/zwave.png rename to images/blog/2017-05-0.45/zwave.png diff --git a/source/images/blog/2017-05-grazer-linuxtage/social.png b/images/blog/2017-05-grazer-linuxtage/social.png similarity index 100% rename from source/images/blog/2017-05-grazer-linuxtage/social.png rename to images/blog/2017-05-grazer-linuxtage/social.png diff --git a/source/images/blog/2017-05-hassbian-pi-zero/home_assistant_plus_rpi_600x315.png b/images/blog/2017-05-hassbian-pi-zero/home_assistant_plus_rpi_600x315.png similarity index 100% rename from source/images/blog/2017-05-hassbian-pi-zero/home_assistant_plus_rpi_600x315.png rename to images/blog/2017-05-hassbian-pi-zero/home_assistant_plus_rpi_600x315.png diff --git a/source/images/blog/2017-05-orangepi/orange-pi-running.png b/images/blog/2017-05-orangepi/orange-pi-running.png similarity index 100% rename from source/images/blog/2017-05-orangepi/orange-pi-running.png rename to images/blog/2017-05-orangepi/orange-pi-running.png diff --git a/source/images/blog/2017-05-orangepi/orangie-pi-setup.png b/images/blog/2017-05-orangepi/orangie-pi-setup.png similarity index 100% rename from source/images/blog/2017-05-orangepi/orangie-pi-setup.png rename to images/blog/2017-05-orangepi/orangie-pi-setup.png diff --git a/source/images/blog/2017-05-orangepi/social.png b/images/blog/2017-05-orangepi/social.png similarity index 100% rename from source/images/blog/2017-05-orangepi/social.png rename to images/blog/2017-05-orangepi/social.png diff --git a/source/images/blog/2017-05-podcast-init/podcast_init.png b/images/blog/2017-05-podcast-init/podcast_init.png similarity index 100% rename from source/images/blog/2017-05-podcast-init/podcast_init.png rename to images/blog/2017-05-podcast-init/podcast_init.png diff --git a/source/images/blog/2017-06-0.46/components.png b/images/blog/2017-06-0.46/components.png similarity index 100% rename from source/images/blog/2017-06-0.46/components.png rename to images/blog/2017-06-0.46/components.png diff --git a/source/images/blog/2017-06-0.47/components.png b/images/blog/2017-06-0.47/components.png similarity index 100% rename from source/images/blog/2017-06-0.47/components.png rename to images/blog/2017-06-0.47/components.png diff --git a/source/images/blog/2017-06-jupiter-broadcasting/social.jpg b/images/blog/2017-06-jupiter-broadcasting/social.jpg similarity index 100% rename from source/images/blog/2017-06-jupiter-broadcasting/social.jpg rename to images/blog/2017-06-jupiter-broadcasting/social.jpg diff --git a/source/images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png b/images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png similarity index 100% rename from source/images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png rename to images/blog/2017-06-senic-covi/covi-kickstarter-screenshot.png diff --git a/source/images/blog/2017-06-senic-covi/email-senic.png b/images/blog/2017-06-senic-covi/email-senic.png similarity index 100% rename from source/images/blog/2017-06-senic-covi/email-senic.png rename to images/blog/2017-06-senic-covi/email-senic.png diff --git a/source/images/blog/2017-06-senic-covi/senic-docs-screenshot.png b/images/blog/2017-06-senic-covi/senic-docs-screenshot.png similarity index 100% rename from source/images/blog/2017-06-senic-covi/senic-docs-screenshot.png rename to images/blog/2017-06-senic-covi/senic-docs-screenshot.png diff --git a/source/images/blog/2017-07-0.48/components.png b/images/blog/2017-07-0.48/components.png similarity index 100% rename from source/images/blog/2017-07-0.48/components.png rename to images/blog/2017-07-0.48/components.png diff --git a/source/images/blog/2017-07-0.49/components.png b/images/blog/2017-07-0.49/components.png similarity index 100% rename from source/images/blog/2017-07-0.49/components.png rename to images/blog/2017-07-0.49/components.png diff --git a/source/images/blog/2017-07-0.49/green-theme.png b/images/blog/2017-07-0.49/green-theme.png similarity index 100% rename from source/images/blog/2017-07-0.49/green-theme.png rename to images/blog/2017-07-0.49/green-theme.png diff --git a/source/images/blog/2017-07-0.50/components.png b/images/blog/2017-07-0.50/components.png similarity index 100% rename from source/images/blog/2017-07-0.50/components.png rename to images/blog/2017-07-0.50/components.png diff --git a/source/images/blog/2017-07-talk-python/logo.png b/images/blog/2017-07-talk-python/logo.png similarity index 100% rename from source/images/blog/2017-07-talk-python/logo.png rename to images/blog/2017-07-talk-python/logo.png diff --git a/source/images/blog/2017-08-0.51/components.png b/images/blog/2017-08-0.51/components.png similarity index 100% rename from source/images/blog/2017-08-0.51/components.png rename to images/blog/2017-08-0.51/components.png diff --git a/source/images/blog/2017-08-0.52/components.png b/images/blog/2017-08-0.52/components.png similarity index 100% rename from source/images/blog/2017-08-0.52/components.png rename to images/blog/2017-08-0.52/components.png diff --git a/source/images/blog/2017-09-0.53/components.png b/images/blog/2017-09-0.53/components.png similarity index 100% rename from source/images/blog/2017-09-0.53/components.png rename to images/blog/2017-09-0.53/components.png diff --git a/source/images/blog/2017-09-0.53/customize-editor.png b/images/blog/2017-09-0.53/customize-editor.png similarity index 100% rename from source/images/blog/2017-09-0.53/customize-editor.png rename to images/blog/2017-09-0.53/customize-editor.png diff --git a/source/images/blog/2017-09-0.54/components.png b/images/blog/2017-09-0.54/components.png similarity index 100% rename from source/images/blog/2017-09-0.54/components.png rename to images/blog/2017-09-0.54/components.png diff --git a/source/images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png b/images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png similarity index 100% rename from source/images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png rename to images/blog/2017-09-hacktoberfest/hacktoberfest-2017.png diff --git a/source/images/blog/2017-10-0.55/components.png b/images/blog/2017-10-0.55/components.png similarity index 100% rename from source/images/blog/2017-10-0.55/components.png rename to images/blog/2017-10-0.55/components.png diff --git a/source/images/blog/2017-10-0.56/components.png b/images/blog/2017-10-0.56/components.png similarity index 100% rename from source/images/blog/2017-10-0.56/components.png rename to images/blog/2017-10-0.56/components.png diff --git a/source/images/blog/2017-10-analog-sensor/analog-sensor.png b/images/blog/2017-10-analog-sensor/analog-sensor.png similarity index 100% rename from source/images/blog/2017-10-analog-sensor/analog-sensor.png rename to images/blog/2017-10-analog-sensor/analog-sensor.png diff --git a/source/images/blog/2017-10-interactive-demo/demo-platforms.png b/images/blog/2017-10-interactive-demo/demo-platforms.png similarity index 100% rename from source/images/blog/2017-10-interactive-demo/demo-platforms.png rename to images/blog/2017-10-interactive-demo/demo-platforms.png diff --git a/source/images/blog/2017-10-interactive-demo/demo-random.png b/images/blog/2017-10-interactive-demo/demo-random.png similarity index 100% rename from source/images/blog/2017-10-interactive-demo/demo-random.png rename to images/blog/2017-10-interactive-demo/demo-random.png diff --git a/source/images/blog/2017-10-interactive-demo/online-demo.png b/images/blog/2017-10-interactive-demo/online-demo.png similarity index 100% rename from source/images/blog/2017-10-interactive-demo/online-demo.png rename to images/blog/2017-10-interactive-demo/online-demo.png diff --git a/source/images/blog/2017-10-template/social.png b/images/blog/2017-10-template/social.png similarity index 100% rename from source/images/blog/2017-10-template/social.png rename to images/blog/2017-10-template/social.png diff --git a/source/images/blog/2017-11-0.57/components.png b/images/blog/2017-11-0.57/components.png similarity index 100% rename from source/images/blog/2017-11-0.57/components.png rename to images/blog/2017-11-0.57/components.png diff --git a/source/images/blog/2017-11-0.57/languages.png b/images/blog/2017-11-0.57/languages.png similarity index 100% rename from source/images/blog/2017-11-0.57/languages.png rename to images/blog/2017-11-0.57/languages.png diff --git a/source/images/blog/2017-11-0.57/pumpkin.jpeg b/images/blog/2017-11-0.57/pumpkin.jpeg similarity index 100% rename from source/images/blog/2017-11-0.57/pumpkin.jpeg rename to images/blog/2017-11-0.57/pumpkin.jpeg diff --git a/source/images/blog/2017-11-0.58/components.png b/images/blog/2017-11-0.58/components.png similarity index 100% rename from source/images/blog/2017-11-0.58/components.png rename to images/blog/2017-11-0.58/components.png diff --git a/source/images/blog/2017-11-0.58/system_log.png b/images/blog/2017-11-0.58/system_log.png similarity index 100% rename from source/images/blog/2017-11-0.58/system_log.png rename to images/blog/2017-11-0.58/system_log.png diff --git a/source/images/blog/2017-11-hassio-virtual/hassio.png b/images/blog/2017-11-hassio-virtual/hassio.png similarity index 100% rename from source/images/blog/2017-11-hassio-virtual/hassio.png rename to images/blog/2017-11-hassio-virtual/hassio.png diff --git a/source/images/blog/2017-11-hassio-virtual/social.png b/images/blog/2017-11-hassio-virtual/social.png similarity index 100% rename from source/images/blog/2017-11-hassio-virtual/social.png rename to images/blog/2017-11-hassio-virtual/social.png diff --git a/source/images/blog/2017-11-hassio-virtual/virtual-machine-manager.png b/images/blog/2017-11-hassio-virtual/virtual-machine-manager.png similarity index 100% rename from source/images/blog/2017-11-hassio-virtual/virtual-machine-manager.png rename to images/blog/2017-11-hassio-virtual/virtual-machine-manager.png diff --git a/source/images/blog/2017-11-mqtt-ttn/social-ha-ttn.png b/images/blog/2017-11-mqtt-ttn/social-ha-ttn.png similarity index 100% rename from source/images/blog/2017-11-mqtt-ttn/social-ha-ttn.png rename to images/blog/2017-11-mqtt-ttn/social-ha-ttn.png diff --git a/source/images/blog/2017-11-ssh/social.png b/images/blog/2017-11-ssh/social.png similarity index 100% rename from source/images/blog/2017-11-ssh/social.png rename to images/blog/2017-11-ssh/social.png diff --git a/source/images/blog/2017-11-tor/social.png b/images/blog/2017-11-tor/social.png similarity index 100% rename from source/images/blog/2017-11-tor/social.png rename to images/blog/2017-11-tor/social.png diff --git a/source/images/blog/2017-12-0.59/color-wheel.png b/images/blog/2017-12-0.59/color-wheel.png similarity index 100% rename from source/images/blog/2017-12-0.59/color-wheel.png rename to images/blog/2017-12-0.59/color-wheel.png diff --git a/source/images/blog/2017-12-0.59/components.png b/images/blog/2017-12-0.59/components.png similarity index 100% rename from source/images/blog/2017-12-0.59/components.png rename to images/blog/2017-12-0.59/components.png diff --git a/source/images/blog/2017-12-0.59/picker.png b/images/blog/2017-12-0.59/picker.png similarity index 100% rename from source/images/blog/2017-12-0.59/picker.png rename to images/blog/2017-12-0.59/picker.png diff --git a/source/images/blog/2017-12-0.60/components.png b/images/blog/2017-12-0.60/components.png similarity index 100% rename from source/images/blog/2017-12-0.60/components.png rename to images/blog/2017-12-0.60/components.png diff --git a/source/images/blog/2018-01-0.61/components.png b/images/blog/2018-01-0.61/components.png similarity index 100% rename from source/images/blog/2018-01-0.61/components.png rename to images/blog/2018-01-0.61/components.png diff --git a/source/images/blog/2018-01-0.62/components.png b/images/blog/2018-01-0.62/components.png similarity index 100% rename from source/images/blog/2018-01-0.62/components.png rename to images/blog/2018-01-0.62/components.png diff --git a/source/images/blog/2018-02-0.63/components.png b/images/blog/2018-02-0.63/components.png similarity index 100% rename from source/images/blog/2018-02-0.63/components.png rename to images/blog/2018-02-0.63/components.png diff --git a/source/images/blog/2018-02-0.64/components.png b/images/blog/2018-02-0.64/components.png similarity index 100% rename from source/images/blog/2018-02-0.64/components.png rename to images/blog/2018-02-0.64/components.png diff --git a/source/images/blog/2018-03-0.65/components.png b/images/blog/2018-03-0.65/components.png similarity index 100% rename from source/images/blog/2018-03-0.65/components.png rename to images/blog/2018-03-0.65/components.png diff --git a/source/images/blog/2018-03-0.65/entity-registry-name.gif b/images/blog/2018-03-0.65/entity-registry-name.gif similarity index 100% rename from source/images/blog/2018-03-0.65/entity-registry-name.gif rename to images/blog/2018-03-0.65/entity-registry-name.gif diff --git a/source/images/blog/2018-03-0.65/filter-example.png b/images/blog/2018-03-0.65/filter-example.png similarity index 100% rename from source/images/blog/2018-03-0.65/filter-example.png rename to images/blog/2018-03-0.65/filter-example.png diff --git a/source/images/blog/2018-03-0.65/voice-commands.png b/images/blog/2018-03-0.65/voice-commands.png similarity index 100% rename from source/images/blog/2018-03-0.65/voice-commands.png rename to images/blog/2018-03-0.65/voice-commands.png diff --git a/source/images/blog/ha-logo-history.png b/images/blog/ha-logo-history.png similarity index 100% rename from source/images/blog/ha-logo-history.png rename to images/blog/ha-logo-history.png diff --git a/source/images/blog/ha-logo-material-big.png b/images/blog/ha-logo-material-big.png similarity index 100% rename from source/images/blog/ha-logo-material-big.png rename to images/blog/ha-logo-material-big.png diff --git a/source/images/blog/ha-logo-material-small.png b/images/blog/ha-logo-material-small.png similarity index 100% rename from source/images/blog/ha-logo-material-small.png rename to images/blog/ha-logo-material-small.png diff --git a/source/images/blog/ha-logo-original.png b/images/blog/ha-logo-original.png similarity index 100% rename from source/images/blog/ha-logo-original.png rename to images/blog/ha-logo-original.png diff --git a/source/images/cast/splash.png b/images/cast/splash.png similarity index 100% rename from source/images/cast/splash.png rename to images/cast/splash.png diff --git a/.themes/classic/source/images/code_bg.png b/images/code_bg.png similarity index 100% rename from .themes/classic/source/images/code_bg.png rename to images/code_bg.png diff --git a/source/images/components/alexa/alexa-108x108.png b/images/components/alexa/alexa-108x108.png similarity index 100% rename from source/images/components/alexa/alexa-108x108.png rename to images/components/alexa/alexa-108x108.png diff --git a/source/images/components/alexa/alexa-512x512.png b/images/components/alexa/alexa-512x512.png similarity index 100% rename from source/images/components/alexa/alexa-512x512.png rename to images/components/alexa/alexa-512x512.png diff --git a/source/images/components/alexa/scene_slot.png b/images/components/alexa/scene_slot.png similarity index 100% rename from source/images/components/alexa/scene_slot.png rename to images/components/alexa/scene_slot.png diff --git a/source/images/components/alexa/scene_slot_synonyms.png b/images/components/alexa/scene_slot_synonyms.png similarity index 100% rename from source/images/components/alexa/scene_slot_synonyms.png rename to images/components/alexa/scene_slot_synonyms.png diff --git a/source/images/components/alexa/script_slot.png b/images/components/alexa/script_slot.png similarity index 100% rename from source/images/components/alexa/script_slot.png rename to images/components/alexa/script_slot.png diff --git a/source/images/components/apple_tv/auth_pin.jpg b/images/components/apple_tv/auth_pin.jpg similarity index 100% rename from source/images/components/apple_tv/auth_pin.jpg rename to images/components/apple_tv/auth_pin.jpg diff --git a/source/images/components/apple_tv/auth_start.jpg b/images/components/apple_tv/auth_start.jpg similarity index 100% rename from source/images/components/apple_tv/auth_start.jpg rename to images/components/apple_tv/auth_start.jpg diff --git a/source/images/components/apple_tv/authenticate.png b/images/components/apple_tv/authenticate.png similarity index 100% rename from source/images/components/apple_tv/authenticate.png rename to images/components/apple_tv/authenticate.png diff --git a/source/images/components/apple_tv/credentials.png b/images/components/apple_tv/credentials.png similarity index 100% rename from source/images/components/apple_tv/credentials.png rename to images/components/apple_tv/credentials.png diff --git a/source/images/components/apple_tv/scan_result.jpg b/images/components/apple_tv/scan_result.jpg similarity index 100% rename from source/images/components/apple_tv/scan_result.jpg rename to images/components/apple_tv/scan_result.jpg diff --git a/source/images/components/apple_tv/scan_start.jpg b/images/components/apple_tv/scan_start.jpg similarity index 100% rename from source/images/components/apple_tv/scan_start.jpg rename to images/components/apple_tv/scan_start.jpg diff --git a/source/images/components/automation/logbook.png b/images/components/automation/logbook.png similarity index 100% rename from source/images/components/automation/logbook.png rename to images/components/automation/logbook.png diff --git a/source/images/components/calendar/todoist-108x108.png b/images/components/calendar/todoist-108x108.png similarity index 100% rename from source/images/components/calendar/todoist-108x108.png rename to images/components/calendar/todoist-108x108.png diff --git a/source/images/components/calendar/todoist-512x512.png b/images/components/calendar/todoist-512x512.png similarity index 100% rename from source/images/components/calendar/todoist-512x512.png rename to images/components/calendar/todoist-512x512.png diff --git a/source/images/components/camera/generic-google-maps.png b/images/components/camera/generic-google-maps.png similarity index 100% rename from source/images/components/camera/generic-google-maps.png rename to images/components/camera/generic-google-maps.png diff --git a/source/images/components/free_mobile/token.png b/images/components/free_mobile/token.png similarity index 100% rename from source/images/components/free_mobile/token.png rename to images/components/free_mobile/token.png diff --git a/source/images/components/garadget/cover_garadget_details.png b/images/components/garadget/cover_garadget_details.png similarity index 100% rename from source/images/components/garadget/cover_garadget_details.png rename to images/components/garadget/cover_garadget_details.png diff --git a/source/images/components/gpslogger/custom-url.png b/images/components/gpslogger/custom-url.png similarity index 100% rename from source/images/components/gpslogger/custom-url.png rename to images/components/gpslogger/custom-url.png diff --git a/source/images/components/gpslogger/logging-details.png b/images/components/gpslogger/logging-details.png similarity index 100% rename from source/images/components/gpslogger/logging-details.png rename to images/components/gpslogger/logging-details.png diff --git a/source/images/components/gpslogger/performance.png b/images/components/gpslogger/performance.png similarity index 100% rename from source/images/components/gpslogger/performance.png rename to images/components/gpslogger/performance.png diff --git a/source/images/components/gpslogger/settings.png b/images/components/gpslogger/settings.png similarity index 100% rename from source/images/components/gpslogger/settings.png rename to images/components/gpslogger/settings.png diff --git a/source/images/components/haveibeenpwned/sensor.png b/images/components/haveibeenpwned/sensor.png similarity index 100% rename from source/images/components/haveibeenpwned/sensor.png rename to images/components/haveibeenpwned/sensor.png diff --git a/source/images/components/ifttt/IFTTT_manything_trigger.png b/images/components/ifttt/IFTTT_manything_trigger.png similarity index 100% rename from source/images/components/ifttt/IFTTT_manything_trigger.png rename to images/components/ifttt/IFTTT_manything_trigger.png diff --git a/source/images/components/ifttt/IFTTT_to_HA.png b/images/components/ifttt/IFTTT_to_HA.png similarity index 100% rename from source/images/components/ifttt/IFTTT_to_HA.png rename to images/components/ifttt/IFTTT_to_HA.png diff --git a/source/images/components/ifttt/finding_key.png b/images/components/ifttt/finding_key.png similarity index 100% rename from source/images/components/ifttt/finding_key.png rename to images/components/ifttt/finding_key.png diff --git a/source/images/components/ifttt/setup_service.png b/images/components/ifttt/setup_service.png similarity index 100% rename from source/images/components/ifttt/setup_service.png rename to images/components/ifttt/setup_service.png diff --git a/source/images/components/ifttt/setup_trigger.png b/images/components/ifttt/setup_trigger.png similarity index 100% rename from source/images/components/ifttt/setup_trigger.png rename to images/components/ifttt/setup_trigger.png diff --git a/source/images/components/ifttt/testing_service.png b/images/components/ifttt/testing_service.png similarity index 100% rename from source/images/components/ifttt/testing_service.png rename to images/components/ifttt/testing_service.png diff --git a/source/images/components/light/group.png b/images/components/light/group.png similarity index 100% rename from source/images/components/light/group.png rename to images/components/light/group.png diff --git a/source/images/components/opengarage/cover_opengarage_details.jpg b/images/components/opengarage/cover_opengarage_details.jpg similarity index 100% rename from source/images/components/opengarage/cover_opengarage_details.jpg rename to images/components/opengarage/cover_opengarage_details.jpg diff --git a/source/images/components/pyload/pyload_speed.png b/images/components/pyload/pyload_speed.png similarity index 100% rename from source/images/components/pyload/pyload_speed.png rename to images/components/pyload/pyload_speed.png diff --git a/source/images/components/rfxtrx/sensor.png b/images/components/rfxtrx/sensor.png similarity index 100% rename from source/images/components/rfxtrx/sensor.png rename to images/components/rfxtrx/sensor.png diff --git a/source/images/components/rfxtrx/switch.png b/images/components/rfxtrx/switch.png similarity index 100% rename from source/images/components/rfxtrx/switch.png rename to images/components/rfxtrx/switch.png diff --git a/source/images/components/thethingsnetwork/access_key.png b/images/components/thethingsnetwork/access_key.png similarity index 100% rename from source/images/components/thethingsnetwork/access_key.png rename to images/components/thethingsnetwork/access_key.png diff --git a/source/images/components/thethingsnetwork/add_integration.png b/images/components/thethingsnetwork/add_integration.png similarity index 100% rename from source/images/components/thethingsnetwork/add_integration.png rename to images/components/thethingsnetwork/add_integration.png diff --git a/source/images/components/thethingsnetwork/applications.png b/images/components/thethingsnetwork/applications.png similarity index 100% rename from source/images/components/thethingsnetwork/applications.png rename to images/components/thethingsnetwork/applications.png diff --git a/source/images/components/thethingsnetwork/choose_integration.png b/images/components/thethingsnetwork/choose_integration.png similarity index 100% rename from source/images/components/thethingsnetwork/choose_integration.png rename to images/components/thethingsnetwork/choose_integration.png diff --git a/source/images/components/thethingsnetwork/confirm_integration.png b/images/components/thethingsnetwork/confirm_integration.png similarity index 100% rename from source/images/components/thethingsnetwork/confirm_integration.png rename to images/components/thethingsnetwork/confirm_integration.png diff --git a/source/images/components/thethingsnetwork/devices.png b/images/components/thethingsnetwork/devices.png similarity index 100% rename from source/images/components/thethingsnetwork/devices.png rename to images/components/thethingsnetwork/devices.png diff --git a/source/images/components/thethingsnetwork/storage_integration.png b/images/components/thethingsnetwork/storage_integration.png similarity index 100% rename from source/images/components/thethingsnetwork/storage_integration.png rename to images/components/thethingsnetwork/storage_integration.png diff --git a/source/images/components/transmission/transmission.png b/images/components/transmission/transmission.png similarity index 100% rename from source/images/components/transmission/transmission.png rename to images/components/transmission/transmission.png diff --git a/source/images/components/transmission/transmission_perf.png b/images/components/transmission/transmission_perf.png similarity index 100% rename from source/images/components/transmission/transmission_perf.png rename to images/components/transmission/transmission_perf.png diff --git a/source/images/default-social.png b/images/default-social.png similarity index 100% rename from source/images/default-social.png rename to images/default-social.png diff --git a/source/images/docs/automation-editor/new-action.png b/images/docs/automation-editor/new-action.png similarity index 100% rename from source/images/docs/automation-editor/new-action.png rename to images/docs/automation-editor/new-action.png diff --git a/source/images/docs/automation-editor/new-automation.png b/images/docs/automation-editor/new-automation.png similarity index 100% rename from source/images/docs/automation-editor/new-automation.png rename to images/docs/automation-editor/new-automation.png diff --git a/source/images/docs/automation-editor/new-trigger.png b/images/docs/automation-editor/new-trigger.png similarity index 100% rename from source/images/docs/automation-editor/new-trigger.png rename to images/docs/automation-editor/new-trigger.png diff --git a/.themes/classic/source/images/dotted-border.png b/images/dotted-border.png similarity index 100% rename from .themes/classic/source/images/dotted-border.png rename to images/dotted-border.png diff --git a/.themes/classic/source/images/email.png b/images/email.png similarity index 100% rename from .themes/classic/source/images/email.png rename to images/email.png diff --git a/source/images/favicon-192x192.png b/images/favicon-192x192.png similarity index 100% rename from source/images/favicon-192x192.png rename to images/favicon-192x192.png diff --git a/source/images/favicon.ico b/images/favicon.ico similarity index 100% rename from source/images/favicon.ico rename to images/favicon.ico diff --git a/source/images/frontend/choose-language.png b/images/frontend/choose-language.png similarity index 100% rename from source/images/frontend/choose-language.png rename to images/frontend/choose-language.png diff --git a/source/images/frontend/choose-theme.png b/images/frontend/choose-theme.png similarity index 100% rename from source/images/frontend/choose-theme.png rename to images/frontend/choose-theme.png diff --git a/source/images/frontend/frontend-badges.png b/images/frontend/frontend-badges.png similarity index 100% rename from source/images/frontend/frontend-badges.png rename to images/frontend/frontend-badges.png diff --git a/source/images/frontend/frontend-cards.png b/images/frontend/frontend-cards.png similarity index 100% rename from source/images/frontend/frontend-cards.png rename to images/frontend/frontend-cards.png diff --git a/source/images/frontend/frontend-cards1.png b/images/frontend/frontend-cards1.png similarity index 100% rename from source/images/frontend/frontend-cards1.png rename to images/frontend/frontend-cards1.png diff --git a/source/images/frontend/frontend-more-info-light.png b/images/frontend/frontend-more-info-light.png similarity index 100% rename from source/images/frontend/frontend-more-info-light.png rename to images/frontend/frontend-more-info-light.png diff --git a/source/images/gravatar.jpg b/images/gravatar.jpg similarity index 100% rename from source/images/gravatar.jpg rename to images/gravatar.jpg diff --git a/source/images/hadashboard/alarm_panel.png b/images/hadashboard/alarm_panel.png similarity index 100% rename from source/images/hadashboard/alarm_panel.png rename to images/hadashboard/alarm_panel.png diff --git a/source/images/hadashboard/dash1.png b/images/hadashboard/dash1.png similarity index 100% rename from source/images/hadashboard/dash1.png rename to images/hadashboard/dash1.png diff --git a/source/images/hadashboard/dash2.png b/images/hadashboard/dash2.png similarity index 100% rename from source/images/hadashboard/dash2.png rename to images/hadashboard/dash2.png diff --git a/source/images/hadashboard/dash3.png b/images/hadashboard/dash3.png similarity index 100% rename from source/images/hadashboard/dash3.png rename to images/hadashboard/dash3.png diff --git a/source/images/hadashboard/dash4.png b/images/hadashboard/dash4.png similarity index 100% rename from source/images/hadashboard/dash4.png rename to images/hadashboard/dash4.png diff --git a/source/images/hadashboard/dash5.png b/images/hadashboard/dash5.png similarity index 100% rename from source/images/hadashboard/dash5.png rename to images/hadashboard/dash5.png diff --git a/source/images/hassio/architecture.png b/images/hassio/architecture.png similarity index 100% rename from source/images/hassio/architecture.png rename to images/hassio/architecture.png diff --git a/source/images/hassio/screenshots/adding_repositories.png b/images/hassio/screenshots/adding_repositories.png similarity index 100% rename from source/images/hassio/screenshots/adding_repositories.png rename to images/hassio/screenshots/adding_repositories.png diff --git a/source/images/hassio/screenshots/addon-hass-configurator.png b/images/hassio/screenshots/addon-hass-configurator.png similarity index 100% rename from source/images/hassio/screenshots/addon-hass-configurator.png rename to images/hassio/screenshots/addon-hass-configurator.png diff --git a/source/images/hassio/screenshots/dashboard.png b/images/hassio/screenshots/dashboard.png similarity index 100% rename from source/images/hassio/screenshots/dashboard.png rename to images/hassio/screenshots/dashboard.png diff --git a/source/images/hassio/screenshots/first-start.png b/images/hassio/screenshots/first-start.png similarity index 100% rename from source/images/hassio/screenshots/first-start.png rename to images/hassio/screenshots/first-start.png diff --git a/source/images/hassio/screenshots/local_repository.png b/images/hassio/screenshots/local_repository.png similarity index 100% rename from source/images/hassio/screenshots/local_repository.png rename to images/hassio/screenshots/local_repository.png diff --git a/source/images/hassio/screenshots/main_panel_addon_store.png b/images/hassio/screenshots/main_panel_addon_store.png similarity index 100% rename from source/images/hassio/screenshots/main_panel_addon_store.png rename to images/hassio/screenshots/main_panel_addon_store.png diff --git a/source/images/hassio/screenshots/ssh-upgrade.png b/images/hassio/screenshots/ssh-upgrade.png similarity index 100% rename from source/images/hassio/screenshots/ssh-upgrade.png rename to images/hassio/screenshots/ssh-upgrade.png diff --git a/source/images/hassio/tutorial/addon_hello_world_logs.png b/images/hassio/tutorial/addon_hello_world_logs.png similarity index 100% rename from source/images/hassio/tutorial/addon_hello_world_logs.png rename to images/hassio/tutorial/addon_hello_world_logs.png diff --git a/source/images/hassio/tutorial/python3-http-server.png b/images/hassio/tutorial/python3-http-server.png similarity index 100% rename from source/images/hassio/tutorial/python3-http-server.png rename to images/hassio/tutorial/python3-http-server.png diff --git a/source/images/hassio/tutorial/samba.png b/images/hassio/tutorial/samba.png similarity index 100% rename from source/images/hassio/tutorial/samba.png rename to images/hassio/tutorial/samba.png diff --git a/source/images/hassio/tutorial/ssh.png b/images/hassio/tutorial/ssh.png similarity index 100% rename from source/images/hassio/tutorial/ssh.png rename to images/hassio/tutorial/ssh.png diff --git a/source/images/hasspodcast.jpg b/images/hasspodcast.jpg similarity index 100% rename from source/images/hasspodcast.jpg rename to images/hasspodcast.jpg diff --git a/source/images/hero_screenshot.png b/images/hero_screenshot.png similarity index 100% rename from source/images/hero_screenshot.png rename to images/hero_screenshot.png diff --git a/source/images/home-assistant-logo-2164x2164.png b/images/home-assistant-logo-2164x2164.png similarity index 100% rename from source/images/home-assistant-logo-2164x2164.png rename to images/home-assistant-logo-2164x2164.png diff --git a/source/images/ios/NotificationActionFlow.png b/images/ios/NotificationActionFlow.png similarity index 100% rename from source/images/ios/NotificationActionFlow.png rename to images/ios/NotificationActionFlow.png diff --git a/source/images/ios/PushNotificationLayout.png b/images/ios/PushNotificationLayout.png similarity index 100% rename from source/images/ios/PushNotificationLayout.png rename to images/ios/PushNotificationLayout.png diff --git a/source/images/ios/actions.png b/images/ios/actions.png similarity index 100% rename from source/images/ios/actions.png rename to images/ios/actions.png diff --git a/source/images/ios/attachment.png b/images/ios/attachment.png similarity index 100% rename from source/images/ios/attachment.png rename to images/ios/attachment.png diff --git a/source/images/ios/control1.png b/images/ios/control1.png similarity index 100% rename from source/images/ios/control1.png rename to images/ios/control1.png diff --git a/source/images/ios/control2.png b/images/ios/control2.png similarity index 100% rename from source/images/ios/control2.png rename to images/ios/control2.png diff --git a/source/images/ios/example.png b/images/ios/example.png similarity index 100% rename from source/images/ios/example.png rename to images/ios/example.png diff --git a/source/images/ios/expanded_attachment.png b/images/ios/expanded_attachment.png similarity index 100% rename from source/images/ios/expanded_attachment.png rename to images/ios/expanded_attachment.png diff --git a/source/images/ios/map.png b/images/ios/map.png similarity index 100% rename from source/images/ios/map.png rename to images/ios/map.png diff --git a/source/images/isy994/isy994_CoverExample.png b/images/isy994/isy994_CoverExample.png similarity index 100% rename from source/images/isy994/isy994_CoverExample.png rename to images/isy994/isy994_CoverExample.png diff --git a/source/images/isy994/isy994_SensorExample.png b/images/isy994/isy994_SensorExample.png similarity index 100% rename from source/images/isy994/isy994_SensorExample.png rename to images/isy994/isy994_SensorExample.png diff --git a/source/images/isy994/isy994_SensorStatusExample.png b/images/isy994/isy994_SensorStatusExample.png similarity index 100% rename from source/images/isy994/isy994_SensorStatusExample.png rename to images/isy994/isy994_SensorStatusExample.png diff --git a/source/images/isy994/isy994_SwitchActionsExample.png b/images/isy994/isy994_SwitchActionsExample.png similarity index 100% rename from source/images/isy994/isy994_SwitchActionsExample.png rename to images/isy994/isy994_SwitchActionsExample.png diff --git a/source/images/isy994/isy994_SwitchExample.png b/images/isy994/isy994_SwitchExample.png similarity index 100% rename from source/images/isy994/isy994_SwitchExample.png rename to images/isy994/isy994_SwitchExample.png diff --git a/source/images/isy994/isy994_SwitchStatusExample.png b/images/isy994/isy994_SwitchStatusExample.png similarity index 100% rename from source/images/isy994/isy994_SwitchStatusExample.png rename to images/isy994/isy994_SwitchStatusExample.png diff --git a/.themes/classic/source/images/line-tile.png b/images/line-tile.png similarity index 100% rename from .themes/classic/source/images/line-tile.png rename to images/line-tile.png diff --git a/source/images/matrix.png b/images/matrix.png similarity index 100% rename from source/images/matrix.png rename to images/matrix.png diff --git a/source/images/merchandise/shirt-frontpage.png b/images/merchandise/shirt-frontpage.png similarity index 100% rename from source/images/merchandise/shirt-frontpage.png rename to images/merchandise/shirt-frontpage.png diff --git a/source/images/noise.png b/images/noise.png similarity index 100% rename from source/images/noise.png rename to images/noise.png diff --git a/source/images/press/LinuxMagazine.png b/images/press/LinuxMagazine.png similarity index 100% rename from source/images/press/LinuxMagazine.png rename to images/press/LinuxMagazine.png diff --git a/source/images/press/ct.png b/images/press/ct.png similarity index 100% rename from source/images/press/ct.png rename to images/press/ct.png diff --git a/source/images/press/linux.com.png b/images/press/linux.com.png similarity index 100% rename from source/images/press/linux.com.png rename to images/press/linux.com.png diff --git a/source/images/press/opensource.com.svg b/images/press/opensource.com.svg similarity index 100% rename from source/images/press/opensource.com.svg rename to images/press/opensource.com.svg diff --git a/source/images/press/producthunt.com.png b/images/press/producthunt.com.png similarity index 100% rename from source/images/press/producthunt.com.png rename to images/press/producthunt.com.png diff --git a/source/images/press/wired.com.svg b/images/press/wired.com.svg similarity index 100% rename from source/images/press/wired.com.svg rename to images/press/wired.com.svg diff --git a/.themes/classic/source/images/rss.png b/images/rss.png similarity index 100% rename from .themes/classic/source/images/rss.png rename to images/rss.png diff --git a/source/images/screenshots/android-homescreen-guide.gif b/images/screenshots/android-homescreen-guide.gif similarity index 100% rename from source/images/screenshots/android-homescreen-guide.gif rename to images/screenshots/android-homescreen-guide.gif diff --git a/source/images/screenshots/automation-switches.png b/images/screenshots/automation-switches.png similarity index 100% rename from source/images/screenshots/automation-switches.png rename to images/screenshots/automation-switches.png diff --git a/source/images/screenshots/badges-zone.png b/images/screenshots/badges-zone.png similarity index 100% rename from source/images/screenshots/badges-zone.png rename to images/screenshots/badges-zone.png diff --git a/source/images/screenshots/blink_example_frontend.png b/images/screenshots/blink_example_frontend.png similarity index 100% rename from source/images/screenshots/blink_example_frontend.png rename to images/screenshots/blink_example_frontend.png diff --git a/source/images/screenshots/component_history_24h.png b/images/screenshots/component_history_24h.png similarity index 100% rename from source/images/screenshots/component_history_24h.png rename to images/screenshots/component_history_24h.png diff --git a/source/images/screenshots/config-validation-url.png b/images/screenshots/config-validation-url.png similarity index 100% rename from source/images/screenshots/config-validation-url.png rename to images/screenshots/config-validation-url.png diff --git a/source/images/screenshots/config-validation.png b/images/screenshots/config-validation.png similarity index 100% rename from source/images/screenshots/config-validation.png rename to images/screenshots/config-validation.png diff --git a/source/images/screenshots/configuration-validation.png b/images/screenshots/configuration-validation.png similarity index 100% rename from source/images/screenshots/configuration-validation.png rename to images/screenshots/configuration-validation.png diff --git a/source/images/screenshots/create-component01.png b/images/screenshots/create-component01.png similarity index 100% rename from source/images/screenshots/create-component01.png rename to images/screenshots/create-component01.png diff --git a/source/images/screenshots/cups-sensor.png b/images/screenshots/cups-sensor.png similarity index 100% rename from source/images/screenshots/cups-sensor.png rename to images/screenshots/cups-sensor.png diff --git a/source/images/screenshots/custom-icons.png b/images/screenshots/custom-icons.png similarity index 100% rename from source/images/screenshots/custom-icons.png rename to images/screenshots/custom-icons.png diff --git a/source/images/screenshots/datadog-board-example.png b/images/screenshots/datadog-board-example.png similarity index 100% rename from source/images/screenshots/datadog-board-example.png rename to images/screenshots/datadog-board-example.png diff --git a/source/images/screenshots/datadog-event-stream.png b/images/screenshots/datadog-event-stream.png similarity index 100% rename from source/images/screenshots/datadog-event-stream.png rename to images/screenshots/datadog-event-stream.png diff --git a/source/images/screenshots/developer-tool-about-icon.png b/images/screenshots/developer-tool-about-icon.png similarity index 100% rename from source/images/screenshots/developer-tool-about-icon.png rename to images/screenshots/developer-tool-about-icon.png diff --git a/source/images/screenshots/developer-tool-events-icon.png b/images/screenshots/developer-tool-events-icon.png similarity index 100% rename from source/images/screenshots/developer-tool-events-icon.png rename to images/screenshots/developer-tool-events-icon.png diff --git a/source/images/screenshots/developer-tool-mqtt-icon.png b/images/screenshots/developer-tool-mqtt-icon.png similarity index 100% rename from source/images/screenshots/developer-tool-mqtt-icon.png rename to images/screenshots/developer-tool-mqtt-icon.png diff --git a/source/images/screenshots/developer-tool-services-icon.png b/images/screenshots/developer-tool-services-icon.png similarity index 100% rename from source/images/screenshots/developer-tool-services-icon.png rename to images/screenshots/developer-tool-services-icon.png diff --git a/source/images/screenshots/developer-tool-states-icon.png b/images/screenshots/developer-tool-states-icon.png similarity index 100% rename from source/images/screenshots/developer-tool-states-icon.png rename to images/screenshots/developer-tool-states-icon.png diff --git a/source/images/screenshots/developer-tool-templates-icon.png b/images/screenshots/developer-tool-templates-icon.png similarity index 100% rename from source/images/screenshots/developer-tool-templates-icon.png rename to images/screenshots/developer-tool-templates-icon.png diff --git a/source/images/screenshots/developer-tools.png b/images/screenshots/developer-tools.png similarity index 100% rename from source/images/screenshots/developer-tools.png rename to images/screenshots/developer-tools.png diff --git a/source/images/screenshots/discord-api.png b/images/screenshots/discord-api.png similarity index 100% rename from source/images/screenshots/discord-api.png rename to images/screenshots/discord-api.png diff --git a/source/images/screenshots/discord-auth.png b/images/screenshots/discord-auth.png similarity index 100% rename from source/images/screenshots/discord-auth.png rename to images/screenshots/discord-auth.png diff --git a/source/images/screenshots/discord-bot.png b/images/screenshots/discord-bot.png similarity index 100% rename from source/images/screenshots/discord-bot.png rename to images/screenshots/discord-bot.png diff --git a/source/images/screenshots/dsmr.png b/images/screenshots/dsmr.png similarity index 100% rename from source/images/screenshots/dsmr.png rename to images/screenshots/dsmr.png diff --git a/source/images/screenshots/dweet-freeboard.png b/images/screenshots/dweet-freeboard.png similarity index 100% rename from source/images/screenshots/dweet-freeboard.png rename to images/screenshots/dweet-freeboard.png diff --git a/source/images/screenshots/ecobee-sensor-badges.png b/images/screenshots/ecobee-sensor-badges.png similarity index 100% rename from source/images/screenshots/ecobee-sensor-badges.png rename to images/screenshots/ecobee-sensor-badges.png diff --git a/source/images/screenshots/ecobee-thermostat-card.png b/images/screenshots/ecobee-thermostat-card.png similarity index 100% rename from source/images/screenshots/ecobee-thermostat-card.png rename to images/screenshots/ecobee-thermostat-card.png diff --git a/source/images/screenshots/filter-sensor.png b/images/screenshots/filter-sensor.png similarity index 100% rename from source/images/screenshots/filter-sensor.png rename to images/screenshots/filter-sensor.png diff --git a/source/images/screenshots/frontier_silicon_info_dialog.png b/images/screenshots/frontier_silicon_info_dialog.png similarity index 100% rename from source/images/screenshots/frontier_silicon_info_dialog.png rename to images/screenshots/frontier_silicon_info_dialog.png diff --git a/source/images/screenshots/frontier_silicon_overview.png b/images/screenshots/frontier_silicon_overview.png similarity index 100% rename from source/images/screenshots/frontier_silicon_overview.png rename to images/screenshots/frontier_silicon_overview.png diff --git a/source/images/screenshots/geo-rss-incidents-group-screenshot.png b/images/screenshots/geo-rss-incidents-group-screenshot.png similarity index 100% rename from source/images/screenshots/geo-rss-incidents-group-screenshot.png rename to images/screenshots/geo-rss-incidents-group-screenshot.png diff --git a/source/images/screenshots/group-views.png b/images/screenshots/group-views.png similarity index 100% rename from source/images/screenshots/group-views.png rename to images/screenshots/group-views.png diff --git a/source/images/screenshots/history-line-graphs.png b/images/screenshots/history-line-graphs.png similarity index 100% rename from source/images/screenshots/history-line-graphs.png rename to images/screenshots/history-line-graphs.png diff --git a/source/images/screenshots/history_graph.png b/images/screenshots/history_graph.png similarity index 100% rename from source/images/screenshots/history_graph.png rename to images/screenshots/history_graph.png diff --git a/source/images/screenshots/hp_ilo.png b/images/screenshots/hp_ilo.png similarity index 100% rename from source/images/screenshots/hp_ilo.png rename to images/screenshots/hp_ilo.png diff --git a/source/images/screenshots/hp_ilo_sensors.png b/images/screenshots/hp_ilo_sensors.png similarity index 100% rename from source/images/screenshots/hp_ilo_sensors.png rename to images/screenshots/hp_ilo_sensors.png diff --git a/source/images/screenshots/html5-notify.png b/images/screenshots/html5-notify.png similarity index 100% rename from source/images/screenshots/html5-notify.png rename to images/screenshots/html5-notify.png diff --git a/source/images/screenshots/instapush.png b/images/screenshots/instapush.png similarity index 100% rename from source/images/screenshots/instapush.png rename to images/screenshots/instapush.png diff --git a/source/images/screenshots/ip-set.jpg b/images/screenshots/ip-set.jpg similarity index 100% rename from source/images/screenshots/ip-set.jpg rename to images/screenshots/ip-set.jpg diff --git a/source/images/screenshots/jupyter-graph.png b/images/screenshots/jupyter-graph.png similarity index 100% rename from source/images/screenshots/jupyter-graph.png rename to images/screenshots/jupyter-graph.png diff --git a/source/images/screenshots/jupyter-new.png b/images/screenshots/jupyter-new.png similarity index 100% rename from source/images/screenshots/jupyter-new.png rename to images/screenshots/jupyter-new.png diff --git a/source/images/screenshots/jupyter-notebook.png b/images/screenshots/jupyter-notebook.png similarity index 100% rename from source/images/screenshots/jupyter-notebook.png rename to images/screenshots/jupyter-notebook.png diff --git a/source/images/screenshots/locative.png b/images/screenshots/locative.png similarity index 100% rename from source/images/screenshots/locative.png rename to images/screenshots/locative.png diff --git a/source/images/screenshots/lock-and-rollershutter-card.png b/images/screenshots/lock-and-rollershutter-card.png similarity index 100% rename from source/images/screenshots/lock-and-rollershutter-card.png rename to images/screenshots/lock-and-rollershutter-card.png diff --git a/source/images/screenshots/logbook.png b/images/screenshots/logbook.png similarity index 100% rename from source/images/screenshots/logbook.png rename to images/screenshots/logbook.png diff --git a/source/images/screenshots/map.png b/images/screenshots/map.png similarity index 100% rename from source/images/screenshots/map.png rename to images/screenshots/map.png diff --git a/source/images/screenshots/media_player-card.png b/images/screenshots/media_player-card.png similarity index 100% rename from source/images/screenshots/media_player-card.png rename to images/screenshots/media_player-card.png diff --git a/source/images/screenshots/more-info-dialog-light.png b/images/screenshots/more-info-dialog-light.png similarity index 100% rename from source/images/screenshots/more-info-dialog-light.png rename to images/screenshots/more-info-dialog-light.png diff --git a/source/images/screenshots/more-info-dialog-sun.png b/images/screenshots/more-info-dialog-sun.png similarity index 100% rename from source/images/screenshots/more-info-dialog-sun.png rename to images/screenshots/more-info-dialog-sun.png diff --git a/source/images/screenshots/mpc-hc.png b/images/screenshots/mpc-hc.png similarity index 100% rename from source/images/screenshots/mpc-hc.png rename to images/screenshots/mpc-hc.png diff --git a/source/images/screenshots/mqtt-notify.png b/images/screenshots/mqtt-notify.png similarity index 100% rename from source/images/screenshots/mqtt-notify.png rename to images/screenshots/mqtt-notify.png diff --git a/source/images/screenshots/nest-thermostat-card.png b/images/screenshots/nest-thermostat-card.png similarity index 100% rename from source/images/screenshots/nest-thermostat-card.png rename to images/screenshots/nest-thermostat-card.png diff --git a/source/images/screenshots/netatmo_api.png b/images/screenshots/netatmo_api.png similarity index 100% rename from source/images/screenshots/netatmo_api.png rename to images/screenshots/netatmo_api.png diff --git a/source/images/screenshots/netatmo_app.png b/images/screenshots/netatmo_app.png similarity index 100% rename from source/images/screenshots/netatmo_app.png rename to images/screenshots/netatmo_app.png diff --git a/source/images/screenshots/netatmo_create.png b/images/screenshots/netatmo_create.png similarity index 100% rename from source/images/screenshots/netatmo_create.png rename to images/screenshots/netatmo_create.png diff --git a/source/images/screenshots/netatmo_module.png b/images/screenshots/netatmo_module.png similarity index 100% rename from source/images/screenshots/netatmo_module.png rename to images/screenshots/netatmo_module.png diff --git a/source/images/screenshots/nexus_7_dashboard.png b/images/screenshots/nexus_7_dashboard.png similarity index 100% rename from source/images/screenshots/nexus_7_dashboard.png rename to images/screenshots/nexus_7_dashboard.png diff --git a/source/images/screenshots/pandora_player.png b/images/screenshots/pandora_player.png similarity index 100% rename from source/images/screenshots/pandora_player.png rename to images/screenshots/pandora_player.png diff --git a/source/images/screenshots/persistent-notification.png b/images/screenshots/persistent-notification.png similarity index 100% rename from source/images/screenshots/persistent-notification.png rename to images/screenshots/persistent-notification.png diff --git a/source/images/screenshots/plex-configure.png b/images/screenshots/plex-configure.png similarity index 100% rename from source/images/screenshots/plex-configure.png rename to images/screenshots/plex-configure.png diff --git a/source/images/screenshots/plex-token.png b/images/screenshots/plex-token.png similarity index 100% rename from source/images/screenshots/plex-token.png rename to images/screenshots/plex-token.png diff --git a/source/images/screenshots/pushbullet_moto360.png b/images/screenshots/pushbullet_moto360.png similarity index 100% rename from source/images/screenshots/pushbullet_moto360.png rename to images/screenshots/pushbullet_moto360.png diff --git a/source/images/screenshots/sabnzbd-configure.png b/images/screenshots/sabnzbd-configure.png similarity index 100% rename from source/images/screenshots/sabnzbd-configure.png rename to images/screenshots/sabnzbd-configure.png diff --git a/source/images/screenshots/server-management.png b/images/screenshots/server-management.png similarity index 100% rename from source/images/screenshots/server-management.png rename to images/screenshots/server-management.png diff --git a/source/images/screenshots/snips_modules.png b/images/screenshots/snips_modules.png similarity index 100% rename from source/images/screenshots/snips_modules.png rename to images/screenshots/snips_modules.png diff --git a/source/images/screenshots/snips_nlu.png b/images/screenshots/snips_nlu.png similarity index 100% rename from source/images/screenshots/snips_nlu.png rename to images/screenshots/snips_nlu.png diff --git a/source/images/screenshots/ssocr.png b/images/screenshots/ssocr.png similarity index 100% rename from source/images/screenshots/ssocr.png rename to images/screenshots/ssocr.png diff --git a/source/images/screenshots/stats-sensor.png b/images/screenshots/stats-sensor.png similarity index 100% rename from source/images/screenshots/stats-sensor.png rename to images/screenshots/stats-sensor.png diff --git a/source/images/screenshots/streaming-updates.png b/images/screenshots/streaming-updates.png similarity index 100% rename from source/images/screenshots/streaming-updates.png rename to images/screenshots/streaming-updates.png diff --git a/source/images/screenshots/supervisor.png b/images/screenshots/supervisor.png similarity index 100% rename from source/images/screenshots/supervisor.png rename to images/screenshots/supervisor.png diff --git a/source/images/screenshots/time_date.png b/images/screenshots/time_date.png similarity index 100% rename from source/images/screenshots/time_date.png rename to images/screenshots/time_date.png diff --git a/source/images/screenshots/ui2015.png b/images/screenshots/ui2015.png similarity index 100% rename from source/images/screenshots/ui2015.png rename to images/screenshots/ui2015.png diff --git a/source/images/screenshots/voice-commands.png b/images/screenshots/voice-commands.png similarity index 100% rename from source/images/screenshots/voice-commands.png rename to images/screenshots/voice-commands.png diff --git a/source/images/screenshots/wsdot_sensor.png b/images/screenshots/wsdot_sensor.png similarity index 100% rename from source/images/screenshots/wsdot_sensor.png rename to images/screenshots/wsdot_sensor.png diff --git a/source/images/screenshots/wunderground_daily_forecast.png b/images/screenshots/wunderground_daily_forecast.png similarity index 100% rename from source/images/screenshots/wunderground_daily_forecast.png rename to images/screenshots/wunderground_daily_forecast.png diff --git a/source/images/screenshots/wunderground_weather_overview.png b/images/screenshots/wunderground_weather_overview.png similarity index 100% rename from source/images/screenshots/wunderground_weather_overview.png rename to images/screenshots/wunderground_weather_overview.png diff --git a/.themes/classic/source/images/search.png b/images/search.png similarity index 100% rename from .themes/classic/source/images/search.png rename to images/search.png diff --git a/source/images/supported_brands/abode.jpg b/images/supported_brands/abode.jpg similarity index 100% rename from source/images/supported_brands/abode.jpg rename to images/supported_brands/abode.jpg diff --git a/source/images/supported_brands/acer.png b/images/supported_brands/acer.png similarity index 100% rename from source/images/supported_brands/acer.png rename to images/supported_brands/acer.png diff --git a/source/images/supported_brands/actiontec.png b/images/supported_brands/actiontec.png similarity index 100% rename from source/images/supported_brands/actiontec.png rename to images/supported_brands/actiontec.png diff --git a/source/images/supported_brands/airvisual.jpg b/images/supported_brands/airvisual.jpg similarity index 100% rename from source/images/supported_brands/airvisual.jpg rename to images/supported_brands/airvisual.jpg diff --git a/source/images/supported_brands/alarmdecoder.png b/images/supported_brands/alarmdecoder.png similarity index 100% rename from source/images/supported_brands/alarmdecoder.png rename to images/supported_brands/alarmdecoder.png diff --git a/source/images/supported_brands/alarmdotcom.png b/images/supported_brands/alarmdotcom.png similarity index 100% rename from source/images/supported_brands/alarmdotcom.png rename to images/supported_brands/alarmdotcom.png diff --git a/source/images/supported_brands/alpha_vantage.png b/images/supported_brands/alpha_vantage.png similarity index 100% rename from source/images/supported_brands/alpha_vantage.png rename to images/supported_brands/alpha_vantage.png diff --git a/source/images/supported_brands/amazon-echo.png b/images/supported_brands/amazon-echo.png similarity index 100% rename from source/images/supported_brands/amazon-echo.png rename to images/supported_brands/amazon-echo.png diff --git a/source/images/supported_brands/amcrest.png b/images/supported_brands/amcrest.png similarity index 100% rename from source/images/supported_brands/amcrest.png rename to images/supported_brands/amcrest.png diff --git a/source/images/supported_brands/android_ip_webcam.png b/images/supported_brands/android_ip_webcam.png similarity index 100% rename from source/images/supported_brands/android_ip_webcam.png rename to images/supported_brands/android_ip_webcam.png diff --git a/source/images/supported_brands/anel.png b/images/supported_brands/anel.png similarity index 100% rename from source/images/supported_brands/anel.png rename to images/supported_brands/anel.png diff --git a/source/images/supported_brands/anthemav.png b/images/supported_brands/anthemav.png similarity index 100% rename from source/images/supported_brands/anthemav.png rename to images/supported_brands/anthemav.png diff --git a/source/images/supported_brands/antifurto365-ialarm.png b/images/supported_brands/antifurto365-ialarm.png similarity index 100% rename from source/images/supported_brands/antifurto365-ialarm.png rename to images/supported_brands/antifurto365-ialarm.png diff --git a/source/images/supported_brands/apcupsd.png b/images/supported_brands/apcupsd.png similarity index 100% rename from source/images/supported_brands/apcupsd.png rename to images/supported_brands/apcupsd.png diff --git a/source/images/supported_brands/apple-homekit.png b/images/supported_brands/apple-homekit.png similarity index 100% rename from source/images/supported_brands/apple-homekit.png rename to images/supported_brands/apple-homekit.png diff --git a/source/images/supported_brands/apple.png b/images/supported_brands/apple.png similarity index 100% rename from source/images/supported_brands/apple.png rename to images/supported_brands/apple.png diff --git a/source/images/supported_brands/archlinux.png b/images/supported_brands/archlinux.png similarity index 100% rename from source/images/supported_brands/archlinux.png rename to images/supported_brands/archlinux.png diff --git a/source/images/supported_brands/arduino.png b/images/supported_brands/arduino.png similarity index 100% rename from source/images/supported_brands/arduino.png rename to images/supported_brands/arduino.png diff --git a/source/images/supported_brands/arest.png b/images/supported_brands/arest.png similarity index 100% rename from source/images/supported_brands/arest.png rename to images/supported_brands/arest.png diff --git a/source/images/supported_brands/arlo.png b/images/supported_brands/arlo.png similarity index 100% rename from source/images/supported_brands/arlo.png rename to images/supported_brands/arlo.png diff --git a/source/images/supported_brands/armbian.png b/images/supported_brands/armbian.png similarity index 100% rename from source/images/supported_brands/armbian.png rename to images/supported_brands/armbian.png diff --git a/source/images/supported_brands/aruba.png b/images/supported_brands/aruba.png similarity index 100% rename from source/images/supported_brands/aruba.png rename to images/supported_brands/aruba.png diff --git a/source/images/supported_brands/asus.png b/images/supported_brands/asus.png similarity index 100% rename from source/images/supported_brands/asus.png rename to images/supported_brands/asus.png diff --git a/source/images/supported_brands/august.png b/images/supported_brands/august.png similarity index 100% rename from source/images/supported_brands/august.png rename to images/supported_brands/august.png diff --git a/source/images/supported_brands/automatic.png b/images/supported_brands/automatic.png similarity index 100% rename from source/images/supported_brands/automatic.png rename to images/supported_brands/automatic.png diff --git a/source/images/supported_brands/avahi.png b/images/supported_brands/avahi.png similarity index 100% rename from source/images/supported_brands/avahi.png rename to images/supported_brands/avahi.png diff --git a/source/images/supported_brands/avi-on.png b/images/supported_brands/avi-on.png similarity index 100% rename from source/images/supported_brands/avi-on.png rename to images/supported_brands/avi-on.png diff --git a/source/images/supported_brands/avm.png b/images/supported_brands/avm.png similarity index 100% rename from source/images/supported_brands/avm.png rename to images/supported_brands/avm.png diff --git a/source/images/supported_brands/aws_lambda.png b/images/supported_brands/aws_lambda.png similarity index 100% rename from source/images/supported_brands/aws_lambda.png rename to images/supported_brands/aws_lambda.png diff --git a/source/images/supported_brands/aws_sns.png b/images/supported_brands/aws_sns.png similarity index 100% rename from source/images/supported_brands/aws_sns.png rename to images/supported_brands/aws_sns.png diff --git a/source/images/supported_brands/aws_sqs.png b/images/supported_brands/aws_sqs.png similarity index 100% rename from source/images/supported_brands/aws_sqs.png rename to images/supported_brands/aws_sqs.png diff --git a/source/images/supported_brands/axis.png b/images/supported_brands/axis.png similarity index 100% rename from source/images/supported_brands/axis.png rename to images/supported_brands/axis.png diff --git a/source/images/supported_brands/baiducloud.png b/images/supported_brands/baiducloud.png similarity index 100% rename from source/images/supported_brands/baiducloud.png rename to images/supported_brands/baiducloud.png diff --git a/source/images/supported_brands/bbox.png b/images/supported_brands/bbox.png similarity index 100% rename from source/images/supported_brands/bbox.png rename to images/supported_brands/bbox.png diff --git a/source/images/supported_brands/beaglebone-black.png b/images/supported_brands/beaglebone-black.png similarity index 100% rename from source/images/supported_brands/beaglebone-black.png rename to images/supported_brands/beaglebone-black.png diff --git a/source/images/supported_brands/beckhoff.png b/images/supported_brands/beckhoff.png similarity index 100% rename from source/images/supported_brands/beckhoff.png rename to images/supported_brands/beckhoff.png diff --git a/source/images/supported_brands/belkin_wemo.png b/images/supported_brands/belkin_wemo.png similarity index 100% rename from source/images/supported_brands/belkin_wemo.png rename to images/supported_brands/belkin_wemo.png diff --git a/source/images/supported_brands/bitcoin.png b/images/supported_brands/bitcoin.png similarity index 100% rename from source/images/supported_brands/bitcoin.png rename to images/supported_brands/bitcoin.png diff --git a/source/images/supported_brands/blink.png b/images/supported_brands/blink.png similarity index 100% rename from source/images/supported_brands/blink.png rename to images/supported_brands/blink.png diff --git a/source/images/supported_brands/blinkstick.png b/images/supported_brands/blinkstick.png similarity index 100% rename from source/images/supported_brands/blinkstick.png rename to images/supported_brands/blinkstick.png diff --git a/source/images/supported_brands/blockchain.png b/images/supported_brands/blockchain.png similarity index 100% rename from source/images/supported_brands/blockchain.png rename to images/supported_brands/blockchain.png diff --git a/source/images/supported_brands/bloomsky.png b/images/supported_brands/bloomsky.png similarity index 100% rename from source/images/supported_brands/bloomsky.png rename to images/supported_brands/bloomsky.png diff --git a/source/images/supported_brands/bluesound.png b/images/supported_brands/bluesound.png similarity index 100% rename from source/images/supported_brands/bluesound.png rename to images/supported_brands/bluesound.png diff --git a/source/images/supported_brands/bluetooth.png b/images/supported_brands/bluetooth.png similarity index 100% rename from source/images/supported_brands/bluetooth.png rename to images/supported_brands/bluetooth.png diff --git a/source/images/supported_brands/bmw.png b/images/supported_brands/bmw.png similarity index 100% rename from source/images/supported_brands/bmw.png rename to images/supported_brands/bmw.png diff --git a/source/images/supported_brands/bom.png b/images/supported_brands/bom.png similarity index 100% rename from source/images/supported_brands/bom.png rename to images/supported_brands/bom.png diff --git a/source/images/supported_brands/bravia.png b/images/supported_brands/bravia.png similarity index 100% rename from source/images/supported_brands/bravia.png rename to images/supported_brands/bravia.png diff --git a/source/images/supported_brands/broadlink.png b/images/supported_brands/broadlink.png similarity index 100% rename from source/images/supported_brands/broadlink.png rename to images/supported_brands/broadlink.png diff --git a/source/images/supported_brands/browser.png b/images/supported_brands/browser.png similarity index 100% rename from source/images/supported_brands/browser.png rename to images/supported_brands/browser.png diff --git a/source/images/supported_brands/bt.png b/images/supported_brands/bt.png similarity index 100% rename from source/images/supported_brands/bt.png rename to images/supported_brands/bt.png diff --git a/source/images/supported_brands/buienradar.png b/images/supported_brands/buienradar.png similarity index 100% rename from source/images/supported_brands/buienradar.png rename to images/supported_brands/buienradar.png diff --git a/source/images/supported_brands/bus_scs.png b/images/supported_brands/bus_scs.png similarity index 100% rename from source/images/supported_brands/bus_scs.png rename to images/supported_brands/bus_scs.png diff --git a/source/images/supported_brands/camcorder.png b/images/supported_brands/camcorder.png similarity index 100% rename from source/images/supported_brands/camcorder.png rename to images/supported_brands/camcorder.png diff --git a/source/images/supported_brands/canary.png b/images/supported_brands/canary.png similarity index 100% rename from source/images/supported_brands/canary.png rename to images/supported_brands/canary.png diff --git a/source/images/supported_brands/centos.png b/images/supported_brands/centos.png similarity index 100% rename from source/images/supported_brands/centos.png rename to images/supported_brands/centos.png diff --git a/source/images/supported_brands/channels.png b/images/supported_brands/channels.png similarity index 100% rename from source/images/supported_brands/channels.png rename to images/supported_brands/channels.png diff --git a/source/images/supported_brands/chevy.png b/images/supported_brands/chevy.png similarity index 100% rename from source/images/supported_brands/chevy.png rename to images/supported_brands/chevy.png diff --git a/source/images/supported_brands/cisco.png b/images/supported_brands/cisco.png similarity index 100% rename from source/images/supported_brands/cisco.png rename to images/supported_brands/cisco.png diff --git a/source/images/supported_brands/ciscospark.png b/images/supported_brands/ciscospark.png similarity index 100% rename from source/images/supported_brands/ciscospark.png rename to images/supported_brands/ciscospark.png diff --git a/source/images/supported_brands/citybikes.png b/images/supported_brands/citybikes.png similarity index 100% rename from source/images/supported_brands/citybikes.png rename to images/supported_brands/citybikes.png diff --git a/source/images/supported_brands/clementine.png b/images/supported_brands/clementine.png similarity index 100% rename from source/images/supported_brands/clementine.png rename to images/supported_brands/clementine.png diff --git a/source/images/supported_brands/clickatell.png b/images/supported_brands/clickatell.png similarity index 100% rename from source/images/supported_brands/clickatell.png rename to images/supported_brands/clickatell.png diff --git a/source/images/supported_brands/clicksend.png b/images/supported_brands/clicksend.png similarity index 100% rename from source/images/supported_brands/clicksend.png rename to images/supported_brands/clicksend.png diff --git a/source/images/supported_brands/coinbase.png b/images/supported_brands/coinbase.png similarity index 100% rename from source/images/supported_brands/coinbase.png rename to images/supported_brands/coinbase.png diff --git a/source/images/supported_brands/coinmarketcap.png b/images/supported_brands/coinmarketcap.png similarity index 100% rename from source/images/supported_brands/coinmarketcap.png rename to images/supported_brands/coinmarketcap.png diff --git a/source/images/supported_brands/comed.png b/images/supported_brands/comed.png similarity index 100% rename from source/images/supported_brands/comed.png rename to images/supported_brands/comed.png diff --git a/source/images/supported_brands/command_line.png b/images/supported_brands/command_line.png similarity index 100% rename from source/images/supported_brands/command_line.png rename to images/supported_brands/command_line.png diff --git a/source/images/supported_brands/conversation.png b/images/supported_brands/conversation.png similarity index 100% rename from source/images/supported_brands/conversation.png rename to images/supported_brands/conversation.png diff --git a/source/images/supported_brands/cpu.png b/images/supported_brands/cpu.png similarity index 100% rename from source/images/supported_brands/cpu.png rename to images/supported_brands/cpu.png diff --git a/source/images/supported_brands/crimereports.png b/images/supported_brands/crimereports.png similarity index 100% rename from source/images/supported_brands/crimereports.png rename to images/supported_brands/crimereports.png diff --git a/source/images/supported_brands/cups.png b/images/supported_brands/cups.png similarity index 100% rename from source/images/supported_brands/cups.png rename to images/supported_brands/cups.png diff --git a/source/images/supported_brands/currencylayer.png b/images/supported_brands/currencylayer.png similarity index 100% rename from source/images/supported_brands/currencylayer.png rename to images/supported_brands/currencylayer.png diff --git a/source/images/supported_brands/daikin.png b/images/supported_brands/daikin.png similarity index 100% rename from source/images/supported_brands/daikin.png rename to images/supported_brands/daikin.png diff --git a/source/images/supported_brands/dark_sky.png b/images/supported_brands/dark_sky.png similarity index 100% rename from source/images/supported_brands/dark_sky.png rename to images/supported_brands/dark_sky.png diff --git a/source/images/supported_brands/datadog.png b/images/supported_brands/datadog.png similarity index 100% rename from source/images/supported_brands/datadog.png rename to images/supported_brands/datadog.png diff --git a/source/images/supported_brands/db.png b/images/supported_brands/db.png similarity index 100% rename from source/images/supported_brands/db.png rename to images/supported_brands/db.png diff --git a/source/images/supported_brands/ddwrt.png b/images/supported_brands/ddwrt.png similarity index 100% rename from source/images/supported_brands/ddwrt.png rename to images/supported_brands/ddwrt.png diff --git a/source/images/supported_brands/deconz.jpeg b/images/supported_brands/deconz.jpeg similarity index 100% rename from source/images/supported_brands/deconz.jpeg rename to images/supported_brands/deconz.jpeg diff --git a/source/images/supported_brands/deluge.png b/images/supported_brands/deluge.png similarity index 100% rename from source/images/supported_brands/deluge.png rename to images/supported_brands/deluge.png diff --git a/source/images/supported_brands/denon.png b/images/supported_brands/denon.png similarity index 100% rename from source/images/supported_brands/denon.png rename to images/supported_brands/denon.png diff --git a/source/images/supported_brands/dht.png b/images/supported_brands/dht.png similarity index 100% rename from source/images/supported_brands/dht.png rename to images/supported_brands/dht.png diff --git a/source/images/supported_brands/dialogflow.png b/images/supported_brands/dialogflow.png similarity index 100% rename from source/images/supported_brands/dialogflow.png rename to images/supported_brands/dialogflow.png diff --git a/source/images/supported_brands/digital_ocean.png b/images/supported_brands/digital_ocean.png similarity index 100% rename from source/images/supported_brands/digital_ocean.png rename to images/supported_brands/digital_ocean.png diff --git a/source/images/supported_brands/digitalloggers.png b/images/supported_brands/digitalloggers.png similarity index 100% rename from source/images/supported_brands/digitalloggers.png rename to images/supported_brands/digitalloggers.png diff --git a/source/images/supported_brands/directv.png b/images/supported_brands/directv.png similarity index 100% rename from source/images/supported_brands/directv.png rename to images/supported_brands/directv.png diff --git a/source/images/supported_brands/discogs.png b/images/supported_brands/discogs.png similarity index 100% rename from source/images/supported_brands/discogs.png rename to images/supported_brands/discogs.png diff --git a/source/images/supported_brands/discord.png b/images/supported_brands/discord.png similarity index 100% rename from source/images/supported_brands/discord.png rename to images/supported_brands/discord.png diff --git a/source/images/supported_brands/dlib.png b/images/supported_brands/dlib.png similarity index 100% rename from source/images/supported_brands/dlib.png rename to images/supported_brands/dlib.png diff --git a/source/images/supported_brands/dlink.png b/images/supported_brands/dlink.png similarity index 100% rename from source/images/supported_brands/dlink.png rename to images/supported_brands/dlink.png diff --git a/source/images/supported_brands/docker.png b/images/supported_brands/docker.png similarity index 100% rename from source/images/supported_brands/docker.png rename to images/supported_brands/docker.png diff --git a/source/images/supported_brands/dominos.png b/images/supported_brands/dominos.png similarity index 100% rename from source/images/supported_brands/dominos.png rename to images/supported_brands/dominos.png diff --git a/source/images/supported_brands/doorbird.png b/images/supported_brands/doorbird.png similarity index 100% rename from source/images/supported_brands/doorbird.png rename to images/supported_brands/doorbird.png diff --git a/source/images/supported_brands/dovado.png b/images/supported_brands/dovado.png similarity index 100% rename from source/images/supported_brands/dovado.png rename to images/supported_brands/dovado.png diff --git a/source/images/supported_brands/downloader.png b/images/supported_brands/downloader.png similarity index 100% rename from source/images/supported_brands/downloader.png rename to images/supported_brands/downloader.png diff --git a/source/images/supported_brands/dte_energy.png b/images/supported_brands/dte_energy.png similarity index 100% rename from source/images/supported_brands/dte_energy.png rename to images/supported_brands/dte_energy.png diff --git a/source/images/supported_brands/dublin_bus.png b/images/supported_brands/dublin_bus.png similarity index 100% rename from source/images/supported_brands/dublin_bus.png rename to images/supported_brands/dublin_bus.png diff --git a/source/images/supported_brands/duckdns.png b/images/supported_brands/duckdns.png similarity index 100% rename from source/images/supported_brands/duckdns.png rename to images/supported_brands/duckdns.png diff --git a/source/images/supported_brands/dunehd.png b/images/supported_brands/dunehd.png similarity index 100% rename from source/images/supported_brands/dunehd.png rename to images/supported_brands/dunehd.png diff --git a/source/images/supported_brands/dweet.png b/images/supported_brands/dweet.png similarity index 100% rename from source/images/supported_brands/dweet.png rename to images/supported_brands/dweet.png diff --git a/source/images/supported_brands/dyson.png b/images/supported_brands/dyson.png similarity index 100% rename from source/images/supported_brands/dyson.png rename to images/supported_brands/dyson.png diff --git a/source/images/supported_brands/ebox.png b/images/supported_brands/ebox.png similarity index 100% rename from source/images/supported_brands/ebox.png rename to images/supported_brands/ebox.png diff --git a/source/images/supported_brands/ecobee.png b/images/supported_brands/ecobee.png similarity index 100% rename from source/images/supported_brands/ecobee.png rename to images/supported_brands/ecobee.png diff --git a/source/images/supported_brands/econet.png b/images/supported_brands/econet.png similarity index 100% rename from source/images/supported_brands/econet.png rename to images/supported_brands/econet.png diff --git a/source/images/supported_brands/eddystone.png b/images/supported_brands/eddystone.png similarity index 100% rename from source/images/supported_brands/eddystone.png rename to images/supported_brands/eddystone.png diff --git a/source/images/supported_brands/edimax.png b/images/supported_brands/edimax.png similarity index 100% rename from source/images/supported_brands/edimax.png rename to images/supported_brands/edimax.png diff --git a/source/images/supported_brands/efergy.png b/images/supported_brands/efergy.png similarity index 100% rename from source/images/supported_brands/efergy.png rename to images/supported_brands/efergy.png diff --git a/source/images/supported_brands/eff.png b/images/supported_brands/eff.png similarity index 100% rename from source/images/supported_brands/eff.png rename to images/supported_brands/eff.png diff --git a/source/images/supported_brands/egardia.png b/images/supported_brands/egardia.png similarity index 100% rename from source/images/supported_brands/egardia.png rename to images/supported_brands/egardia.png diff --git a/source/images/supported_brands/eight_sleep.png b/images/supported_brands/eight_sleep.png similarity index 100% rename from source/images/supported_brands/eight_sleep.png rename to images/supported_brands/eight_sleep.png diff --git a/source/images/supported_brands/eliq.png b/images/supported_brands/eliq.png similarity index 100% rename from source/images/supported_brands/eliq.png rename to images/supported_brands/eliq.png diff --git a/source/images/supported_brands/emby.png b/images/supported_brands/emby.png similarity index 100% rename from source/images/supported_brands/emby.png rename to images/supported_brands/emby.png diff --git a/source/images/supported_brands/emoncms.png b/images/supported_brands/emoncms.png similarity index 100% rename from source/images/supported_brands/emoncms.png rename to images/supported_brands/emoncms.png diff --git a/source/images/supported_brands/enocean.png b/images/supported_brands/enocean.png similarity index 100% rename from source/images/supported_brands/enocean.png rename to images/supported_brands/enocean.png diff --git a/source/images/supported_brands/ephcontrolsember.png b/images/supported_brands/ephcontrolsember.png similarity index 100% rename from source/images/supported_brands/ephcontrolsember.png rename to images/supported_brands/ephcontrolsember.png diff --git a/source/images/supported_brands/eq3.gif b/images/supported_brands/eq3.gif similarity index 100% rename from source/images/supported_brands/eq3.gif rename to images/supported_brands/eq3.gif diff --git a/source/images/supported_brands/ethernet.png b/images/supported_brands/ethernet.png similarity index 100% rename from source/images/supported_brands/ethernet.png rename to images/supported_brands/ethernet.png diff --git a/source/images/supported_brands/etherscan.png b/images/supported_brands/etherscan.png similarity index 100% rename from source/images/supported_brands/etherscan.png rename to images/supported_brands/etherscan.png diff --git a/source/images/supported_brands/eyezon.png b/images/supported_brands/eyezon.png similarity index 100% rename from source/images/supported_brands/eyezon.png rename to images/supported_brands/eyezon.png diff --git a/source/images/supported_brands/facebook.png b/images/supported_brands/facebook.png similarity index 100% rename from source/images/supported_brands/facebook.png rename to images/supported_brands/facebook.png diff --git a/source/images/supported_brands/fail2ban.png b/images/supported_brands/fail2ban.png similarity index 100% rename from source/images/supported_brands/fail2ban.png rename to images/supported_brands/fail2ban.png diff --git a/source/images/supported_brands/fastdotcom.png b/images/supported_brands/fastdotcom.png similarity index 100% rename from source/images/supported_brands/fastdotcom.png rename to images/supported_brands/fastdotcom.png diff --git a/source/images/supported_brands/fedex.png b/images/supported_brands/fedex.png similarity index 100% rename from source/images/supported_brands/fedex.png rename to images/supported_brands/fedex.png diff --git a/source/images/supported_brands/fedora.png b/images/supported_brands/fedora.png similarity index 100% rename from source/images/supported_brands/fedora.png rename to images/supported_brands/fedora.png diff --git a/source/images/supported_brands/ffmpeg.png b/images/supported_brands/ffmpeg.png similarity index 100% rename from source/images/supported_brands/ffmpeg.png rename to images/supported_brands/ffmpeg.png diff --git a/source/images/supported_brands/fido.png b/images/supported_brands/fido.png similarity index 100% rename from source/images/supported_brands/fido.png rename to images/supported_brands/fido.png diff --git a/source/images/supported_brands/file.png b/images/supported_brands/file.png similarity index 100% rename from source/images/supported_brands/file.png rename to images/supported_brands/file.png diff --git a/source/images/supported_brands/firetv.png b/images/supported_brands/firetv.png similarity index 100% rename from source/images/supported_brands/firetv.png rename to images/supported_brands/firetv.png diff --git a/source/images/supported_brands/fitbit.png b/images/supported_brands/fitbit.png similarity index 100% rename from source/images/supported_brands/fitbit.png rename to images/supported_brands/fitbit.png diff --git a/source/images/supported_brands/fixer-io.png b/images/supported_brands/fixer-io.png similarity index 100% rename from source/images/supported_brands/fixer-io.png rename to images/supported_brands/fixer-io.png diff --git a/source/images/supported_brands/flexit.png b/images/supported_brands/flexit.png similarity index 100% rename from source/images/supported_brands/flexit.png rename to images/supported_brands/flexit.png diff --git a/source/images/supported_brands/flic.png b/images/supported_brands/flic.png similarity index 100% rename from source/images/supported_brands/flic.png rename to images/supported_brands/flic.png diff --git a/source/images/supported_brands/forecast.png b/images/supported_brands/forecast.png similarity index 100% rename from source/images/supported_brands/forecast.png rename to images/supported_brands/forecast.png diff --git a/source/images/supported_brands/foscam.png b/images/supported_brands/foscam.png similarity index 100% rename from source/images/supported_brands/foscam.png rename to images/supported_brands/foscam.png diff --git a/source/images/supported_brands/foursquare.png b/images/supported_brands/foursquare.png similarity index 100% rename from source/images/supported_brands/foursquare.png rename to images/supported_brands/foursquare.png diff --git a/source/images/supported_brands/free_mobile.png b/images/supported_brands/free_mobile.png similarity index 100% rename from source/images/supported_brands/free_mobile.png rename to images/supported_brands/free_mobile.png diff --git a/source/images/supported_brands/freenas.png b/images/supported_brands/freenas.png similarity index 100% rename from source/images/supported_brands/freenas.png rename to images/supported_brands/freenas.png diff --git a/source/images/supported_brands/garadget.png b/images/supported_brands/garadget.png similarity index 100% rename from source/images/supported_brands/garadget.png rename to images/supported_brands/garadget.png diff --git a/source/images/supported_brands/gearbest.png b/images/supported_brands/gearbest.png similarity index 100% rename from source/images/supported_brands/gearbest.png rename to images/supported_brands/gearbest.png diff --git a/source/images/supported_brands/geizhals.png b/images/supported_brands/geizhals.png similarity index 100% rename from source/images/supported_brands/geizhals.png rename to images/supported_brands/geizhals.png diff --git a/source/images/supported_brands/geofency.png b/images/supported_brands/geofency.png similarity index 100% rename from source/images/supported_brands/geofency.png rename to images/supported_brands/geofency.png diff --git a/source/images/supported_brands/github.png b/images/supported_brands/github.png similarity index 100% rename from source/images/supported_brands/github.png rename to images/supported_brands/github.png diff --git a/source/images/supported_brands/gitter.png b/images/supported_brands/gitter.png similarity index 100% rename from source/images/supported_brands/gitter.png rename to images/supported_brands/gitter.png diff --git a/source/images/supported_brands/glances.png b/images/supported_brands/glances.png similarity index 100% rename from source/images/supported_brands/glances.png rename to images/supported_brands/glances.png diff --git a/source/images/supported_brands/globalcache.png b/images/supported_brands/globalcache.png similarity index 100% rename from source/images/supported_brands/globalcache.png rename to images/supported_brands/globalcache.png diff --git a/source/images/supported_brands/gntp.png b/images/supported_brands/gntp.png similarity index 100% rename from source/images/supported_brands/gntp.png rename to images/supported_brands/gntp.png diff --git a/source/images/supported_brands/goalfeed.png b/images/supported_brands/goalfeed.png similarity index 100% rename from source/images/supported_brands/goalfeed.png rename to images/supported_brands/goalfeed.png diff --git a/source/images/supported_brands/google-assistant.png b/images/supported_brands/google-assistant.png similarity index 100% rename from source/images/supported_brands/google-assistant.png rename to images/supported_brands/google-assistant.png diff --git a/source/images/supported_brands/google.png b/images/supported_brands/google.png similarity index 100% rename from source/images/supported_brands/google.png rename to images/supported_brands/google.png diff --git a/source/images/supported_brands/google_calendar.png b/images/supported_brands/google_calendar.png similarity index 100% rename from source/images/supported_brands/google_calendar.png rename to images/supported_brands/google_calendar.png diff --git a/source/images/supported_brands/google_cast.png b/images/supported_brands/google_cast.png similarity index 100% rename from source/images/supported_brands/google_cast.png rename to images/supported_brands/google_cast.png diff --git a/source/images/supported_brands/google_domains.png b/images/supported_brands/google_domains.png similarity index 100% rename from source/images/supported_brands/google_domains.png rename to images/supported_brands/google_domains.png diff --git a/source/images/supported_brands/google_maps.png b/images/supported_brands/google_maps.png similarity index 100% rename from source/images/supported_brands/google_maps.png rename to images/supported_brands/google_maps.png diff --git a/source/images/supported_brands/google_wifi.png b/images/supported_brands/google_wifi.png similarity index 100% rename from source/images/supported_brands/google_wifi.png rename to images/supported_brands/google_wifi.png diff --git a/source/images/supported_brands/gpmdp.png b/images/supported_brands/gpmdp.png similarity index 100% rename from source/images/supported_brands/gpmdp.png rename to images/supported_brands/gpmdp.png diff --git a/source/images/supported_brands/gpsd.png b/images/supported_brands/gpsd.png similarity index 100% rename from source/images/supported_brands/gpsd.png rename to images/supported_brands/gpsd.png diff --git a/source/images/supported_brands/grafana.png b/images/supported_brands/grafana.png similarity index 100% rename from source/images/supported_brands/grafana.png rename to images/supported_brands/grafana.png diff --git a/source/images/supported_brands/graphite.png b/images/supported_brands/graphite.png similarity index 100% rename from source/images/supported_brands/graphite.png rename to images/supported_brands/graphite.png diff --git a/source/images/supported_brands/greenwavereality.png b/images/supported_brands/greenwavereality.png similarity index 100% rename from source/images/supported_brands/greenwavereality.png rename to images/supported_brands/greenwavereality.png diff --git a/source/images/supported_brands/gstreamer.png b/images/supported_brands/gstreamer.png similarity index 100% rename from source/images/supported_brands/gstreamer.png rename to images/supported_brands/gstreamer.png diff --git a/source/images/supported_brands/haveibeenpwned.png b/images/supported_brands/haveibeenpwned.png similarity index 100% rename from source/images/supported_brands/haveibeenpwned.png rename to images/supported_brands/haveibeenpwned.png diff --git a/source/images/supported_brands/hdmi.png b/images/supported_brands/hdmi.png similarity index 100% rename from source/images/supported_brands/hdmi.png rename to images/supported_brands/hdmi.png diff --git a/source/images/supported_brands/heat-control.png b/images/supported_brands/heat-control.png similarity index 100% rename from source/images/supported_brands/heat-control.png rename to images/supported_brands/heat-control.png diff --git a/source/images/supported_brands/heatmiser.png b/images/supported_brands/heatmiser.png similarity index 100% rename from source/images/supported_brands/heatmiser.png rename to images/supported_brands/heatmiser.png diff --git a/source/images/supported_brands/hewlett_packard_enterprise.png b/images/supported_brands/hewlett_packard_enterprise.png similarity index 100% rename from source/images/supported_brands/hewlett_packard_enterprise.png rename to images/supported_brands/hewlett_packard_enterprise.png diff --git a/source/images/supported_brands/hikvision.png b/images/supported_brands/hikvision.png similarity index 100% rename from source/images/supported_brands/hikvision.png rename to images/supported_brands/hikvision.png diff --git a/source/images/supported_brands/hipchat.png b/images/supported_brands/hipchat.png similarity index 100% rename from source/images/supported_brands/hipchat.png rename to images/supported_brands/hipchat.png diff --git a/source/images/supported_brands/hitron.png b/images/supported_brands/hitron.png similarity index 100% rename from source/images/supported_brands/hitron.png rename to images/supported_brands/hitron.png diff --git a/source/images/supported_brands/hive.png b/images/supported_brands/hive.png similarity index 100% rename from source/images/supported_brands/hive.png rename to images/supported_brands/hive.png diff --git a/source/images/supported_brands/home-assistant.png b/images/supported_brands/home-assistant.png similarity index 100% rename from source/images/supported_brands/home-assistant.png rename to images/supported_brands/home-assistant.png diff --git a/source/images/supported_brands/homematic.png b/images/supported_brands/homematic.png similarity index 100% rename from source/images/supported_brands/homematic.png rename to images/supported_brands/homematic.png diff --git a/source/images/supported_brands/honeywell-tc.png b/images/supported_brands/honeywell-tc.png similarity index 100% rename from source/images/supported_brands/honeywell-tc.png rename to images/supported_brands/honeywell-tc.png diff --git a/source/images/supported_brands/honeywell.png b/images/supported_brands/honeywell.png similarity index 100% rename from source/images/supported_brands/honeywell.png rename to images/supported_brands/honeywell.png diff --git a/source/images/supported_brands/hook.png b/images/supported_brands/hook.png similarity index 100% rename from source/images/supported_brands/hook.png rename to images/supported_brands/hook.png diff --git a/source/images/supported_brands/html5.png b/images/supported_brands/html5.png similarity index 100% rename from source/images/supported_brands/html5.png rename to images/supported_brands/html5.png diff --git a/source/images/supported_brands/http.png b/images/supported_brands/http.png similarity index 100% rename from source/images/supported_brands/http.png rename to images/supported_brands/http.png diff --git a/source/images/supported_brands/huawei.svg b/images/supported_brands/huawei.svg similarity index 100% rename from source/images/supported_brands/huawei.svg rename to images/supported_brands/huawei.svg diff --git a/source/images/supported_brands/hunter-douglas-powerview.png b/images/supported_brands/hunter-douglas-powerview.png similarity index 100% rename from source/images/supported_brands/hunter-douglas-powerview.png rename to images/supported_brands/hunter-douglas-powerview.png diff --git a/source/images/supported_brands/hydroquebec.svg b/images/supported_brands/hydroquebec.svg similarity index 100% rename from source/images/supported_brands/hydroquebec.svg rename to images/supported_brands/hydroquebec.svg diff --git a/source/images/supported_brands/hyperion.png b/images/supported_brands/hyperion.png similarity index 100% rename from source/images/supported_brands/hyperion.png rename to images/supported_brands/hyperion.png diff --git a/source/images/supported_brands/icann.png b/images/supported_brands/icann.png similarity index 100% rename from source/images/supported_brands/icann.png rename to images/supported_brands/icann.png diff --git a/source/images/supported_brands/icloud.png b/images/supported_brands/icloud.png similarity index 100% rename from source/images/supported_brands/icloud.png rename to images/supported_brands/icloud.png diff --git a/source/images/supported_brands/ifttt.png b/images/supported_brands/ifttt.png similarity index 100% rename from source/images/supported_brands/ifttt.png rename to images/supported_brands/ifttt.png diff --git a/source/images/supported_brands/iglo.png b/images/supported_brands/iglo.png similarity index 100% rename from source/images/supported_brands/iglo.png rename to images/supported_brands/iglo.png diff --git a/source/images/supported_brands/ihc.png b/images/supported_brands/ihc.png similarity index 100% rename from source/images/supported_brands/ihc.png rename to images/supported_brands/ihc.png diff --git a/source/images/supported_brands/ikea.svg b/images/supported_brands/ikea.svg similarity index 100% rename from source/images/supported_brands/ikea.svg rename to images/supported_brands/ikea.svg diff --git a/source/images/supported_brands/influxdb.png b/images/supported_brands/influxdb.png similarity index 100% rename from source/images/supported_brands/influxdb.png rename to images/supported_brands/influxdb.png diff --git a/source/images/supported_brands/instapush.png b/images/supported_brands/instapush.png similarity index 100% rename from source/images/supported_brands/instapush.png rename to images/supported_brands/instapush.png diff --git a/source/images/supported_brands/insteon.png b/images/supported_brands/insteon.png similarity index 100% rename from source/images/supported_brands/insteon.png rename to images/supported_brands/insteon.png diff --git a/source/images/supported_brands/interlogix.png b/images/supported_brands/interlogix.png similarity index 100% rename from source/images/supported_brands/interlogix.png rename to images/supported_brands/interlogix.png diff --git a/source/images/supported_brands/iota.png b/images/supported_brands/iota.png similarity index 100% rename from source/images/supported_brands/iota.png rename to images/supported_brands/iota.png diff --git a/source/images/supported_brands/irishrail.png b/images/supported_brands/irishrail.png similarity index 100% rename from source/images/supported_brands/irishrail.png rename to images/supported_brands/irishrail.png diff --git a/source/images/supported_brands/irobot_roomba.png b/images/supported_brands/irobot_roomba.png similarity index 100% rename from source/images/supported_brands/irobot_roomba.png rename to images/supported_brands/irobot_roomba.png diff --git a/source/images/supported_brands/iss.png b/images/supported_brands/iss.png similarity index 100% rename from source/images/supported_brands/iss.png rename to images/supported_brands/iss.png diff --git a/source/images/supported_brands/itunes.png b/images/supported_brands/itunes.png similarity index 100% rename from source/images/supported_brands/itunes.png rename to images/supported_brands/itunes.png diff --git a/source/images/supported_brands/joaoapps_join.png b/images/supported_brands/joaoapps_join.png similarity index 100% rename from source/images/supported_brands/joaoapps_join.png rename to images/supported_brands/joaoapps_join.png diff --git a/source/images/supported_brands/juicenet.png b/images/supported_brands/juicenet.png similarity index 100% rename from source/images/supported_brands/juicenet.png rename to images/supported_brands/juicenet.png diff --git a/source/images/supported_brands/jupyter.png b/images/supported_brands/jupyter.png similarity index 100% rename from source/images/supported_brands/jupyter.png rename to images/supported_brands/jupyter.png diff --git a/source/images/supported_brands/keene.png b/images/supported_brands/keene.png similarity index 100% rename from source/images/supported_brands/keene.png rename to images/supported_brands/keene.png diff --git a/source/images/supported_brands/keenetic.png b/images/supported_brands/keenetic.png similarity index 100% rename from source/images/supported_brands/keenetic.png rename to images/supported_brands/keenetic.png diff --git a/source/images/supported_brands/keyboard.png b/images/supported_brands/keyboard.png similarity index 100% rename from source/images/supported_brands/keyboard.png rename to images/supported_brands/keyboard.png diff --git a/source/images/supported_brands/knx.png b/images/supported_brands/knx.png similarity index 100% rename from source/images/supported_brands/knx.png rename to images/supported_brands/knx.png diff --git a/source/images/supported_brands/kodi.png b/images/supported_brands/kodi.png similarity index 100% rename from source/images/supported_brands/kodi.png rename to images/supported_brands/kodi.png diff --git a/source/images/supported_brands/kwb.png b/images/supported_brands/kwb.png similarity index 100% rename from source/images/supported_brands/kwb.png rename to images/supported_brands/kwb.png diff --git a/source/images/supported_brands/lametric.png b/images/supported_brands/lametric.png similarity index 100% rename from source/images/supported_brands/lametric.png rename to images/supported_brands/lametric.png diff --git a/source/images/supported_brands/lannouncer.png b/images/supported_brands/lannouncer.png similarity index 100% rename from source/images/supported_brands/lannouncer.png rename to images/supported_brands/lannouncer.png diff --git a/source/images/supported_brands/lastfm.png b/images/supported_brands/lastfm.png similarity index 100% rename from source/images/supported_brands/lastfm.png rename to images/supported_brands/lastfm.png diff --git a/source/images/supported_brands/letsencrypt.png b/images/supported_brands/letsencrypt.png similarity index 100% rename from source/images/supported_brands/letsencrypt.png rename to images/supported_brands/letsencrypt.png diff --git a/source/images/supported_brands/leviton.png b/images/supported_brands/leviton.png similarity index 100% rename from source/images/supported_brands/leviton.png rename to images/supported_brands/leviton.png diff --git a/source/images/supported_brands/lg.png b/images/supported_brands/lg.png similarity index 100% rename from source/images/supported_brands/lg.png rename to images/supported_brands/lg.png diff --git a/source/images/supported_brands/lifx.png b/images/supported_brands/lifx.png similarity index 100% rename from source/images/supported_brands/lifx.png rename to images/supported_brands/lifx.png diff --git a/source/images/supported_brands/limitlessled_logo.png b/images/supported_brands/limitlessled_logo.png similarity index 100% rename from source/images/supported_brands/limitlessled_logo.png rename to images/supported_brands/limitlessled_logo.png diff --git a/source/images/supported_brands/linksys.png b/images/supported_brands/linksys.png similarity index 100% rename from source/images/supported_brands/linksys.png rename to images/supported_brands/linksys.png diff --git a/source/images/supported_brands/linn.png b/images/supported_brands/linn.png similarity index 100% rename from source/images/supported_brands/linn.png rename to images/supported_brands/linn.png diff --git a/source/images/supported_brands/linode.png b/images/supported_brands/linode.png similarity index 100% rename from source/images/supported_brands/linode.png rename to images/supported_brands/linode.png diff --git a/source/images/supported_brands/linux_battery.png b/images/supported_brands/linux_battery.png similarity index 100% rename from source/images/supported_brands/linux_battery.png rename to images/supported_brands/linux_battery.png diff --git a/source/images/supported_brands/lirc.gif b/images/supported_brands/lirc.gif similarity index 100% rename from source/images/supported_brands/lirc.gif rename to images/supported_brands/lirc.gif diff --git a/source/images/supported_brands/llamalab_automate.png b/images/supported_brands/llamalab_automate.png similarity index 100% rename from source/images/supported_brands/llamalab_automate.png rename to images/supported_brands/llamalab_automate.png diff --git a/source/images/supported_brands/locative.png b/images/supported_brands/locative.png similarity index 100% rename from source/images/supported_brands/locative.png rename to images/supported_brands/locative.png diff --git a/source/images/supported_brands/lockitron.png b/images/supported_brands/lockitron.png similarity index 100% rename from source/images/supported_brands/lockitron.png rename to images/supported_brands/lockitron.png diff --git a/source/images/supported_brands/logbook.png b/images/supported_brands/logbook.png similarity index 100% rename from source/images/supported_brands/logbook.png rename to images/supported_brands/logbook.png diff --git a/source/images/supported_brands/logentries.png b/images/supported_brands/logentries.png similarity index 100% rename from source/images/supported_brands/logentries.png rename to images/supported_brands/logentries.png diff --git a/source/images/supported_brands/logitech.png b/images/supported_brands/logitech.png similarity index 100% rename from source/images/supported_brands/logitech.png rename to images/supported_brands/logitech.png diff --git a/source/images/supported_brands/london_underground.png b/images/supported_brands/london_underground.png similarity index 100% rename from source/images/supported_brands/london_underground.png rename to images/supported_brands/london_underground.png diff --git a/source/images/supported_brands/loop.png b/images/supported_brands/loop.png similarity index 100% rename from source/images/supported_brands/loop.png rename to images/supported_brands/loop.png diff --git a/source/images/supported_brands/luftdaten.png b/images/supported_brands/luftdaten.png similarity index 100% rename from source/images/supported_brands/luftdaten.png rename to images/supported_brands/luftdaten.png diff --git a/source/images/supported_brands/lutron.png b/images/supported_brands/lutron.png similarity index 100% rename from source/images/supported_brands/lutron.png rename to images/supported_brands/lutron.png diff --git a/source/images/supported_brands/lyft.png b/images/supported_brands/lyft.png similarity index 100% rename from source/images/supported_brands/lyft.png rename to images/supported_brands/lyft.png diff --git a/source/images/supported_brands/magic_light.png b/images/supported_brands/magic_light.png similarity index 100% rename from source/images/supported_brands/magic_light.png rename to images/supported_brands/magic_light.png diff --git a/source/images/supported_brands/mailgun.png b/images/supported_brands/mailgun.png similarity index 100% rename from source/images/supported_brands/mailgun.png rename to images/supported_brands/mailgun.png diff --git a/source/images/supported_brands/manything.png b/images/supported_brands/manything.png similarity index 100% rename from source/images/supported_brands/manything.png rename to images/supported_brands/manything.png diff --git a/source/images/supported_brands/marytts.png b/images/supported_brands/marytts.png similarity index 100% rename from source/images/supported_brands/marytts.png rename to images/supported_brands/marytts.png diff --git a/source/images/supported_brands/matrix.png b/images/supported_brands/matrix.png similarity index 100% rename from source/images/supported_brands/matrix.png rename to images/supported_brands/matrix.png diff --git a/source/images/supported_brands/maxcube.png b/images/supported_brands/maxcube.png similarity index 100% rename from source/images/supported_brands/maxcube.png rename to images/supported_brands/maxcube.png diff --git a/source/images/supported_brands/mclimate.png b/images/supported_brands/mclimate.png similarity index 100% rename from source/images/supported_brands/mclimate.png rename to images/supported_brands/mclimate.png diff --git a/source/images/supported_brands/mediaroom.png b/images/supported_brands/mediaroom.png similarity index 100% rename from source/images/supported_brands/mediaroom.png rename to images/supported_brands/mediaroom.png diff --git a/source/images/supported_brands/meraki.png b/images/supported_brands/meraki.png similarity index 100% rename from source/images/supported_brands/meraki.png rename to images/supported_brands/meraki.png diff --git a/source/images/supported_brands/mercedesme.png b/images/supported_brands/mercedesme.png similarity index 100% rename from source/images/supported_brands/mercedesme.png rename to images/supported_brands/mercedesme.png diff --git a/source/images/supported_brands/message_bird.png b/images/supported_brands/message_bird.png similarity index 100% rename from source/images/supported_brands/message_bird.png rename to images/supported_brands/message_bird.png diff --git a/source/images/supported_brands/metoffice.jpg b/images/supported_brands/metoffice.jpg similarity index 100% rename from source/images/supported_brands/metoffice.jpg rename to images/supported_brands/metoffice.jpg diff --git a/source/images/supported_brands/mhz19_logo.png b/images/supported_brands/mhz19_logo.png similarity index 100% rename from source/images/supported_brands/mhz19_logo.png rename to images/supported_brands/mhz19_logo.png diff --git a/source/images/supported_brands/microsoft.png b/images/supported_brands/microsoft.png similarity index 100% rename from source/images/supported_brands/microsoft.png rename to images/supported_brands/microsoft.png diff --git a/source/images/supported_brands/miflora.png b/images/supported_brands/miflora.png similarity index 100% rename from source/images/supported_brands/miflora.png rename to images/supported_brands/miflora.png diff --git a/source/images/supported_brands/mikrotik.png b/images/supported_brands/mikrotik.png similarity index 100% rename from source/images/supported_brands/mikrotik.png rename to images/supported_brands/mikrotik.png diff --git a/source/images/supported_brands/modbus.png b/images/supported_brands/modbus.png similarity index 100% rename from source/images/supported_brands/modbus.png rename to images/supported_brands/modbus.png diff --git a/source/images/supported_brands/monoprice.svg b/images/supported_brands/monoprice.svg similarity index 100% rename from source/images/supported_brands/monoprice.svg rename to images/supported_brands/monoprice.svg diff --git a/source/images/supported_brands/mopar.png b/images/supported_brands/mopar.png similarity index 100% rename from source/images/supported_brands/mopar.png rename to images/supported_brands/mopar.png diff --git a/source/images/supported_brands/mpchc.png b/images/supported_brands/mpchc.png similarity index 100% rename from source/images/supported_brands/mpchc.png rename to images/supported_brands/mpchc.png diff --git a/source/images/supported_brands/mpd.png b/images/supported_brands/mpd.png similarity index 100% rename from source/images/supported_brands/mpd.png rename to images/supported_brands/mpd.png diff --git a/source/images/supported_brands/mqtt.png b/images/supported_brands/mqtt.png similarity index 100% rename from source/images/supported_brands/mqtt.png rename to images/supported_brands/mqtt.png diff --git a/source/images/supported_brands/mvg.png b/images/supported_brands/mvg.png similarity index 100% rename from source/images/supported_brands/mvg.png rename to images/supported_brands/mvg.png diff --git a/source/images/supported_brands/mycroft.png b/images/supported_brands/mycroft.png similarity index 100% rename from source/images/supported_brands/mycroft.png rename to images/supported_brands/mycroft.png diff --git a/source/images/supported_brands/myq.png b/images/supported_brands/myq.png similarity index 100% rename from source/images/supported_brands/myq.png rename to images/supported_brands/myq.png diff --git a/source/images/supported_brands/mysensors.png b/images/supported_brands/mysensors.png similarity index 100% rename from source/images/supported_brands/mysensors.png rename to images/supported_brands/mysensors.png diff --git a/source/images/supported_brands/mystrom.png b/images/supported_brands/mystrom.png similarity index 100% rename from source/images/supported_brands/mystrom.png rename to images/supported_brands/mystrom.png diff --git a/source/images/supported_brands/nad.png b/images/supported_brands/nad.png similarity index 100% rename from source/images/supported_brands/nad.png rename to images/supported_brands/nad.png diff --git a/source/images/supported_brands/namecheap.png b/images/supported_brands/namecheap.png similarity index 100% rename from source/images/supported_brands/namecheap.png rename to images/supported_brands/namecheap.png diff --git a/source/images/supported_brands/nasa.png b/images/supported_brands/nasa.png similarity index 100% rename from source/images/supported_brands/nasa.png rename to images/supported_brands/nasa.png diff --git a/source/images/supported_brands/neato.png b/images/supported_brands/neato.png similarity index 100% rename from source/images/supported_brands/neato.png rename to images/supported_brands/neato.png diff --git a/source/images/supported_brands/nederlandse_spoorwegen.png b/images/supported_brands/nederlandse_spoorwegen.png similarity index 100% rename from source/images/supported_brands/nederlandse_spoorwegen.png rename to images/supported_brands/nederlandse_spoorwegen.png diff --git a/source/images/supported_brands/nello.png b/images/supported_brands/nello.png similarity index 100% rename from source/images/supported_brands/nello.png rename to images/supported_brands/nello.png diff --git a/source/images/supported_brands/nest.png b/images/supported_brands/nest.png similarity index 100% rename from source/images/supported_brands/nest.png rename to images/supported_brands/nest.png diff --git a/source/images/supported_brands/netatmo.png b/images/supported_brands/netatmo.png similarity index 100% rename from source/images/supported_brands/netatmo.png rename to images/supported_brands/netatmo.png diff --git a/source/images/supported_brands/netbeheernederland.jpg b/images/supported_brands/netbeheernederland.jpg similarity index 100% rename from source/images/supported_brands/netbeheernederland.jpg rename to images/supported_brands/netbeheernederland.jpg diff --git a/source/images/supported_brands/netdata.png b/images/supported_brands/netdata.png similarity index 100% rename from source/images/supported_brands/netdata.png rename to images/supported_brands/netdata.png diff --git a/source/images/supported_brands/netgear.png b/images/supported_brands/netgear.png similarity index 100% rename from source/images/supported_brands/netgear.png rename to images/supported_brands/netgear.png diff --git a/source/images/supported_brands/netio.png b/images/supported_brands/netio.png similarity index 100% rename from source/images/supported_brands/netio.png rename to images/supported_brands/netio.png diff --git a/source/images/supported_brands/network-snmp.png b/images/supported_brands/network-snmp.png similarity index 100% rename from source/images/supported_brands/network-snmp.png rename to images/supported_brands/network-snmp.png diff --git a/source/images/supported_brands/networx.png b/images/supported_brands/networx.png similarity index 100% rename from source/images/supported_brands/networx.png rename to images/supported_brands/networx.png diff --git a/source/images/supported_brands/neurio.png b/images/supported_brands/neurio.png similarity index 100% rename from source/images/supported_brands/neurio.png rename to images/supported_brands/neurio.png diff --git a/source/images/supported_brands/nfandroidtv.png b/images/supported_brands/nfandroidtv.png similarity index 100% rename from source/images/supported_brands/nfandroidtv.png rename to images/supported_brands/nfandroidtv.png diff --git a/source/images/supported_brands/nma.png b/images/supported_brands/nma.png similarity index 100% rename from source/images/supported_brands/nma.png rename to images/supported_brands/nma.png diff --git a/source/images/supported_brands/nmap.png b/images/supported_brands/nmap.png similarity index 100% rename from source/images/supported_brands/nmap.png rename to images/supported_brands/nmap.png diff --git a/source/images/supported_brands/noaa.png b/images/supported_brands/noaa.png similarity index 100% rename from source/images/supported_brands/noaa.png rename to images/supported_brands/noaa.png diff --git a/source/images/supported_brands/noip.png b/images/supported_brands/noip.png similarity index 100% rename from source/images/supported_brands/noip.png rename to images/supported_brands/noip.png diff --git a/source/images/supported_brands/nuheat.png b/images/supported_brands/nuheat.png similarity index 100% rename from source/images/supported_brands/nuheat.png rename to images/supported_brands/nuheat.png diff --git a/source/images/supported_brands/nuimo.png b/images/supported_brands/nuimo.png similarity index 100% rename from source/images/supported_brands/nuimo.png rename to images/supported_brands/nuimo.png diff --git a/source/images/supported_brands/nuki.png b/images/supported_brands/nuki.png similarity index 100% rename from source/images/supported_brands/nuki.png rename to images/supported_brands/nuki.png diff --git a/source/images/supported_brands/nut.png b/images/supported_brands/nut.png similarity index 100% rename from source/images/supported_brands/nut.png rename to images/supported_brands/nut.png diff --git a/source/images/supported_brands/nzbget.png b/images/supported_brands/nzbget.png similarity index 100% rename from source/images/supported_brands/nzbget.png rename to images/supported_brands/nzbget.png diff --git a/source/images/supported_brands/octoprint.png b/images/supported_brands/octoprint.png similarity index 100% rename from source/images/supported_brands/octoprint.png rename to images/supported_brands/octoprint.png diff --git a/source/images/supported_brands/oem.png b/images/supported_brands/oem.png similarity index 100% rename from source/images/supported_brands/oem.png rename to images/supported_brands/oem.png diff --git a/source/images/supported_brands/ohmconnect.png b/images/supported_brands/ohmconnect.png similarity index 100% rename from source/images/supported_brands/ohmconnect.png rename to images/supported_brands/ohmconnect.png diff --git a/source/images/supported_brands/onewire.png b/images/supported_brands/onewire.png similarity index 100% rename from source/images/supported_brands/onewire.png rename to images/supported_brands/onewire.png diff --git a/source/images/supported_brands/onkyo.png b/images/supported_brands/onkyo.png similarity index 100% rename from source/images/supported_brands/onkyo.png rename to images/supported_brands/onkyo.png diff --git a/source/images/supported_brands/onvif.png b/images/supported_brands/onvif.png similarity index 100% rename from source/images/supported_brands/onvif.png rename to images/supported_brands/onvif.png diff --git a/source/images/supported_brands/openalpr.png b/images/supported_brands/openalpr.png similarity index 100% rename from source/images/supported_brands/openalpr.png rename to images/supported_brands/openalpr.png diff --git a/source/images/supported_brands/opencv.png b/images/supported_brands/opencv.png similarity index 100% rename from source/images/supported_brands/opencv.png rename to images/supported_brands/opencv.png diff --git a/source/images/supported_brands/openevse.png b/images/supported_brands/openevse.png similarity index 100% rename from source/images/supported_brands/openevse.png rename to images/supported_brands/openevse.png diff --git a/source/images/supported_brands/openexchangerates.png b/images/supported_brands/openexchangerates.png similarity index 100% rename from source/images/supported_brands/openexchangerates.png rename to images/supported_brands/openexchangerates.png diff --git a/source/images/supported_brands/opengarage.png b/images/supported_brands/opengarage.png similarity index 100% rename from source/images/supported_brands/opengarage.png rename to images/supported_brands/opengarage.png diff --git a/source/images/supported_brands/openhardwaremonitor.png b/images/supported_brands/openhardwaremonitor.png similarity index 100% rename from source/images/supported_brands/openhardwaremonitor.png rename to images/supported_brands/openhardwaremonitor.png diff --git a/source/images/supported_brands/opensky.png b/images/supported_brands/opensky.png similarity index 100% rename from source/images/supported_brands/opensky.png rename to images/supported_brands/opensky.png diff --git a/source/images/supported_brands/openweathermap.png b/images/supported_brands/openweathermap.png similarity index 100% rename from source/images/supported_brands/openweathermap.png rename to images/supported_brands/openweathermap.png diff --git a/source/images/supported_brands/openwrt.png b/images/supported_brands/openwrt.png similarity index 100% rename from source/images/supported_brands/openwrt.png rename to images/supported_brands/openwrt.png diff --git a/source/images/supported_brands/orange.png b/images/supported_brands/orange.png similarity index 100% rename from source/images/supported_brands/orange.png rename to images/supported_brands/orange.png diff --git a/source/images/supported_brands/orvibo.png b/images/supported_brands/orvibo.png similarity index 100% rename from source/images/supported_brands/orvibo.png rename to images/supported_brands/orvibo.png diff --git a/source/images/supported_brands/osramlightify.png b/images/supported_brands/osramlightify.png similarity index 100% rename from source/images/supported_brands/osramlightify.png rename to images/supported_brands/osramlightify.png diff --git a/source/images/supported_brands/owntracks.png b/images/supported_brands/owntracks.png similarity index 100% rename from source/images/supported_brands/owntracks.png rename to images/supported_brands/owntracks.png diff --git a/source/images/supported_brands/panasonic.png b/images/supported_brands/panasonic.png similarity index 100% rename from source/images/supported_brands/panasonic.png rename to images/supported_brands/panasonic.png diff --git a/source/images/supported_brands/pandora.png b/images/supported_brands/pandora.png similarity index 100% rename from source/images/supported_brands/pandora.png rename to images/supported_brands/pandora.png diff --git a/source/images/supported_brands/pencil.png b/images/supported_brands/pencil.png similarity index 100% rename from source/images/supported_brands/pencil.png rename to images/supported_brands/pencil.png diff --git a/source/images/supported_brands/philips.png b/images/supported_brands/philips.png similarity index 100% rename from source/images/supported_brands/philips.png rename to images/supported_brands/philips.png diff --git a/source/images/supported_brands/philips_hue.png b/images/supported_brands/philips_hue.png similarity index 100% rename from source/images/supported_brands/philips_hue.png rename to images/supported_brands/philips_hue.png diff --git a/source/images/supported_brands/pi_hole.png b/images/supported_brands/pi_hole.png similarity index 100% rename from source/images/supported_brands/pi_hole.png rename to images/supported_brands/pi_hole.png diff --git a/source/images/supported_brands/pilight.png b/images/supported_brands/pilight.png similarity index 100% rename from source/images/supported_brands/pilight.png rename to images/supported_brands/pilight.png diff --git a/source/images/supported_brands/pioneer.png b/images/supported_brands/pioneer.png similarity index 100% rename from source/images/supported_brands/pioneer.png rename to images/supported_brands/pioneer.png diff --git a/source/images/supported_brands/plex.png b/images/supported_brands/plex.png similarity index 100% rename from source/images/supported_brands/plex.png rename to images/supported_brands/plex.png diff --git a/source/images/supported_brands/pocketcasts.png b/images/supported_brands/pocketcasts.png similarity index 100% rename from source/images/supported_brands/pocketcasts.png rename to images/supported_brands/pocketcasts.png diff --git a/source/images/supported_brands/pollen.jpg b/images/supported_brands/pollen.jpg similarity index 100% rename from source/images/supported_brands/pollen.jpg rename to images/supported_brands/pollen.jpg diff --git a/source/images/supported_brands/polly.png b/images/supported_brands/polly.png similarity index 100% rename from source/images/supported_brands/polly.png rename to images/supported_brands/polly.png diff --git a/source/images/supported_brands/proliphix.png b/images/supported_brands/proliphix.png similarity index 100% rename from source/images/supported_brands/proliphix.png rename to images/supported_brands/proliphix.png diff --git a/source/images/supported_brands/prometheus.png b/images/supported_brands/prometheus.png similarity index 100% rename from source/images/supported_brands/prometheus.png rename to images/supported_brands/prometheus.png diff --git a/source/images/supported_brands/prowl.png b/images/supported_brands/prowl.png similarity index 100% rename from source/images/supported_brands/prowl.png rename to images/supported_brands/prowl.png diff --git a/source/images/supported_brands/pulseaudio.png b/images/supported_brands/pulseaudio.png similarity index 100% rename from source/images/supported_brands/pulseaudio.png rename to images/supported_brands/pulseaudio.png diff --git a/source/images/supported_brands/pushbullet.png b/images/supported_brands/pushbullet.png similarity index 100% rename from source/images/supported_brands/pushbullet.png rename to images/supported_brands/pushbullet.png diff --git a/source/images/supported_brands/pushetta.png b/images/supported_brands/pushetta.png similarity index 100% rename from source/images/supported_brands/pushetta.png rename to images/supported_brands/pushetta.png diff --git a/source/images/supported_brands/pushover.png b/images/supported_brands/pushover.png similarity index 100% rename from source/images/supported_brands/pushover.png rename to images/supported_brands/pushover.png diff --git a/source/images/supported_brands/pushsafer.png b/images/supported_brands/pushsafer.png similarity index 100% rename from source/images/supported_brands/pushsafer.png rename to images/supported_brands/pushsafer.png diff --git a/source/images/supported_brands/pvoutput.png b/images/supported_brands/pvoutput.png similarity index 100% rename from source/images/supported_brands/pvoutput.png rename to images/supported_brands/pvoutput.png diff --git a/source/images/supported_brands/pyload.png b/images/supported_brands/pyload.png similarity index 100% rename from source/images/supported_brands/pyload.png rename to images/supported_brands/pyload.png diff --git a/source/images/supported_brands/python.svg b/images/supported_brands/python.svg similarity index 100% rename from source/images/supported_brands/python.svg rename to images/supported_brands/python.svg diff --git a/source/images/supported_brands/qnap.png b/images/supported_brands/qnap.png similarity index 100% rename from source/images/supported_brands/qnap.png rename to images/supported_brands/qnap.png diff --git a/images/supported_brands/qwikswitch.png b/images/supported_brands/qwikswitch.png new file mode 100644 index 0000000000..ada6158b54 Binary files /dev/null and b/images/supported_brands/qwikswitch.png differ diff --git a/source/images/supported_brands/rachio.png b/images/supported_brands/rachio.png similarity index 100% rename from source/images/supported_brands/rachio.png rename to images/supported_brands/rachio.png diff --git a/source/images/supported_brands/radarr.png b/images/supported_brands/radarr.png similarity index 100% rename from source/images/supported_brands/radarr.png rename to images/supported_brands/radarr.png diff --git a/source/images/supported_brands/radiotherm.png b/images/supported_brands/radiotherm.png similarity index 100% rename from source/images/supported_brands/radiotherm.png rename to images/supported_brands/radiotherm.png diff --git a/source/images/supported_brands/rainbird.png b/images/supported_brands/rainbird.png similarity index 100% rename from source/images/supported_brands/rainbird.png rename to images/supported_brands/rainbird.png diff --git a/source/images/supported_brands/raincloud.jpg b/images/supported_brands/raincloud.jpg similarity index 100% rename from source/images/supported_brands/raincloud.jpg rename to images/supported_brands/raincloud.jpg diff --git a/source/images/supported_brands/rainmachine.png b/images/supported_brands/rainmachine.png similarity index 100% rename from source/images/supported_brands/rainmachine.png rename to images/supported_brands/rainmachine.png diff --git a/source/images/supported_brands/raspberry-pi.png b/images/supported_brands/raspberry-pi.png similarity index 100% rename from source/images/supported_brands/raspberry-pi.png rename to images/supported_brands/raspberry-pi.png diff --git a/source/images/supported_brands/raspihats.png b/images/supported_brands/raspihats.png similarity index 100% rename from source/images/supported_brands/raspihats.png rename to images/supported_brands/raspihats.png diff --git a/source/images/supported_brands/rememberthemilk.png b/images/supported_brands/rememberthemilk.png similarity index 100% rename from source/images/supported_brands/rememberthemilk.png rename to images/supported_brands/rememberthemilk.png diff --git a/source/images/supported_brands/rest.png b/images/supported_brands/rest.png similarity index 100% rename from source/images/supported_brands/rest.png rename to images/supported_brands/rest.png diff --git a/source/images/supported_brands/restful.png b/images/supported_brands/restful.png similarity index 100% rename from source/images/supported_brands/restful.png rename to images/supported_brands/restful.png diff --git a/source/images/supported_brands/rflink.png b/images/supported_brands/rflink.png similarity index 100% rename from source/images/supported_brands/rflink.png rename to images/supported_brands/rflink.png diff --git a/source/images/supported_brands/rfxtrx.png b/images/supported_brands/rfxtrx.png similarity index 100% rename from source/images/supported_brands/rfxtrx.png rename to images/supported_brands/rfxtrx.png diff --git a/source/images/supported_brands/ring.png b/images/supported_brands/ring.png similarity index 100% rename from source/images/supported_brands/ring.png rename to images/supported_brands/ring.png diff --git a/source/images/supported_brands/ripple.png b/images/supported_brands/ripple.png similarity index 100% rename from source/images/supported_brands/ripple.png rename to images/supported_brands/ripple.png diff --git a/source/images/supported_brands/rocketchat.png b/images/supported_brands/rocketchat.png similarity index 100% rename from source/images/supported_brands/rocketchat.png rename to images/supported_brands/rocketchat.png diff --git a/source/images/supported_brands/roku.png b/images/supported_brands/roku.png similarity index 100% rename from source/images/supported_brands/roku.png rename to images/supported_brands/roku.png diff --git a/source/images/supported_brands/roth.png b/images/supported_brands/roth.png similarity index 100% rename from source/images/supported_brands/roth.png rename to images/supported_brands/roth.png diff --git a/source/images/supported_brands/rss.gif b/images/supported_brands/rss.gif similarity index 100% rename from source/images/supported_brands/rss.gif rename to images/supported_brands/rss.gif diff --git a/source/images/supported_brands/rss.png b/images/supported_brands/rss.png similarity index 100% rename from source/images/supported_brands/rss.png rename to images/supported_brands/rss.png diff --git a/source/images/supported_brands/russound.png b/images/supported_brands/russound.png similarity index 100% rename from source/images/supported_brands/russound.png rename to images/supported_brands/russound.png diff --git a/source/images/supported_brands/sabnzbd.png b/images/supported_brands/sabnzbd.png similarity index 100% rename from source/images/supported_brands/sabnzbd.png rename to images/supported_brands/sabnzbd.png diff --git a/source/images/supported_brands/samsung.png b/images/supported_brands/samsung.png similarity index 100% rename from source/images/supported_brands/samsung.png rename to images/supported_brands/samsung.png diff --git a/source/images/supported_brands/satel.jpg b/images/supported_brands/satel.jpg similarity index 100% rename from source/images/supported_brands/satel.jpg rename to images/supported_brands/satel.jpg diff --git a/source/images/supported_brands/sendgrid.png b/images/supported_brands/sendgrid.png similarity index 100% rename from source/images/supported_brands/sendgrid.png rename to images/supported_brands/sendgrid.png diff --git a/source/images/supported_brands/sense-hat.png b/images/supported_brands/sense-hat.png similarity index 100% rename from source/images/supported_brands/sense-hat.png rename to images/supported_brands/sense-hat.png diff --git a/source/images/supported_brands/sense.png b/images/supported_brands/sense.png similarity index 100% rename from source/images/supported_brands/sense.png rename to images/supported_brands/sense.png diff --git a/source/images/supported_brands/sensibo.png b/images/supported_brands/sensibo.png similarity index 100% rename from source/images/supported_brands/sensibo.png rename to images/supported_brands/sensibo.png diff --git a/source/images/supported_brands/serial_pm.png b/images/supported_brands/serial_pm.png similarity index 100% rename from source/images/supported_brands/serial_pm.png rename to images/supported_brands/serial_pm.png diff --git a/source/images/supported_brands/sesame.png b/images/supported_brands/sesame.png similarity index 100% rename from source/images/supported_brands/sesame.png rename to images/supported_brands/sesame.png diff --git a/source/images/supported_brands/sharp_aquos.png b/images/supported_brands/sharp_aquos.png similarity index 100% rename from source/images/supported_brands/sharp_aquos.png rename to images/supported_brands/sharp_aquos.png diff --git a/source/images/supported_brands/shiftr.png b/images/supported_brands/shiftr.png similarity index 100% rename from source/images/supported_brands/shiftr.png rename to images/supported_brands/shiftr.png diff --git a/source/images/supported_brands/shodan.png b/images/supported_brands/shodan.png similarity index 100% rename from source/images/supported_brands/shodan.png rename to images/supported_brands/shodan.png diff --git a/source/images/supported_brands/simplepush.png b/images/supported_brands/simplepush.png similarity index 100% rename from source/images/supported_brands/simplepush.png rename to images/supported_brands/simplepush.png diff --git a/source/images/supported_brands/simplisafe.png b/images/supported_brands/simplisafe.png similarity index 100% rename from source/images/supported_brands/simplisafe.png rename to images/supported_brands/simplisafe.png diff --git a/source/images/supported_brands/sky.png b/images/supported_brands/sky.png similarity index 100% rename from source/images/supported_brands/sky.png rename to images/supported_brands/sky.png diff --git a/source/images/supported_brands/skybell.png b/images/supported_brands/skybell.png similarity index 100% rename from source/images/supported_brands/skybell.png rename to images/supported_brands/skybell.png diff --git a/source/images/supported_brands/slack.png b/images/supported_brands/slack.png similarity index 100% rename from source/images/supported_brands/slack.png rename to images/supported_brands/slack.png diff --git a/source/images/supported_brands/sleepiq.png b/images/supported_brands/sleepiq.png similarity index 100% rename from source/images/supported_brands/sleepiq.png rename to images/supported_brands/sleepiq.png diff --git a/source/images/supported_brands/sma.png b/images/supported_brands/sma.png similarity index 100% rename from source/images/supported_brands/sma.png rename to images/supported_brands/sma.png diff --git a/source/images/supported_brands/smappee.png b/images/supported_brands/smappee.png similarity index 100% rename from source/images/supported_brands/smappee.png rename to images/supported_brands/smappee.png diff --git a/source/images/supported_brands/smartthings.png b/images/supported_brands/smartthings.png similarity index 100% rename from source/images/supported_brands/smartthings.png rename to images/supported_brands/smartthings.png diff --git a/source/images/supported_brands/smtp.png b/images/supported_brands/smtp.png similarity index 100% rename from source/images/supported_brands/smtp.png rename to images/supported_brands/smtp.png diff --git a/source/images/supported_brands/snapcast.png b/images/supported_brands/snapcast.png similarity index 100% rename from source/images/supported_brands/snapcast.png rename to images/supported_brands/snapcast.png diff --git a/source/images/supported_brands/snips.png b/images/supported_brands/snips.png similarity index 100% rename from source/images/supported_brands/snips.png rename to images/supported_brands/snips.png diff --git a/source/images/supported_brands/sochain.png b/images/supported_brands/sochain.png similarity index 100% rename from source/images/supported_brands/sochain.png rename to images/supported_brands/sochain.png diff --git a/source/images/supported_brands/sonarr.png b/images/supported_brands/sonarr.png similarity index 100% rename from source/images/supported_brands/sonarr.png rename to images/supported_brands/sonarr.png diff --git a/source/images/supported_brands/sonos.png b/images/supported_brands/sonos.png similarity index 100% rename from source/images/supported_brands/sonos.png rename to images/supported_brands/sonos.png diff --git a/source/images/supported_brands/sony.png b/images/supported_brands/sony.png similarity index 100% rename from source/images/supported_brands/sony.png rename to images/supported_brands/sony.png diff --git a/source/images/supported_brands/soundtouch.png b/images/supported_brands/soundtouch.png similarity index 100% rename from source/images/supported_brands/soundtouch.png rename to images/supported_brands/soundtouch.png diff --git a/source/images/supported_brands/speedtest.png b/images/supported_brands/speedtest.png similarity index 100% rename from source/images/supported_brands/speedtest.png rename to images/supported_brands/speedtest.png diff --git a/source/images/supported_brands/splunk.png b/images/supported_brands/splunk.png similarity index 100% rename from source/images/supported_brands/splunk.png rename to images/supported_brands/splunk.png diff --git a/source/images/supported_brands/spotify.png b/images/supported_brands/spotify.png similarity index 100% rename from source/images/supported_brands/spotify.png rename to images/supported_brands/spotify.png diff --git a/source/images/supported_brands/sql.png b/images/supported_brands/sql.png similarity index 100% rename from source/images/supported_brands/sql.png rename to images/supported_brands/sql.png diff --git a/source/images/supported_brands/squeezebox.png b/images/supported_brands/squeezebox.png similarity index 100% rename from source/images/supported_brands/squeezebox.png rename to images/supported_brands/squeezebox.png diff --git a/source/images/supported_brands/startca.png b/images/supported_brands/startca.png similarity index 100% rename from source/images/supported_brands/startca.png rename to images/supported_brands/startca.png diff --git a/source/images/supported_brands/statsd.png b/images/supported_brands/statsd.png similarity index 100% rename from source/images/supported_brands/statsd.png rename to images/supported_brands/statsd.png diff --git a/source/images/supported_brands/steam.png b/images/supported_brands/steam.png similarity index 100% rename from source/images/supported_brands/steam.png rename to images/supported_brands/steam.png diff --git a/source/images/supported_brands/sun.png b/images/supported_brands/sun.png similarity index 100% rename from source/images/supported_brands/sun.png rename to images/supported_brands/sun.png diff --git a/source/images/supported_brands/supervisord.png b/images/supported_brands/supervisord.png similarity index 100% rename from source/images/supported_brands/supervisord.png rename to images/supported_brands/supervisord.png diff --git a/source/images/supported_brands/swiss-hydrological-data.png b/images/supported_brands/swiss-hydrological-data.png similarity index 100% rename from source/images/supported_brands/swiss-hydrological-data.png rename to images/supported_brands/swiss-hydrological-data.png diff --git a/source/images/supported_brands/swisscom.png b/images/supported_brands/swisscom.png similarity index 100% rename from source/images/supported_brands/swisscom.png rename to images/supported_brands/swisscom.png diff --git a/source/images/supported_brands/synology.png b/images/supported_brands/synology.png similarity index 100% rename from source/images/supported_brands/synology.png rename to images/supported_brands/synology.png diff --git a/source/images/supported_brands/syslog.png b/images/supported_brands/syslog.png similarity index 100% rename from source/images/supported_brands/syslog.png rename to images/supported_brands/syslog.png diff --git a/source/images/supported_brands/system_monitor.png b/images/supported_brands/system_monitor.png similarity index 100% rename from source/images/supported_brands/system_monitor.png rename to images/supported_brands/system_monitor.png diff --git a/source/images/supported_brands/sytadin.png b/images/supported_brands/sytadin.png similarity index 100% rename from source/images/supported_brands/sytadin.png rename to images/supported_brands/sytadin.png diff --git a/source/images/supported_brands/tado.png b/images/supported_brands/tado.png similarity index 100% rename from source/images/supported_brands/tado.png rename to images/supported_brands/tado.png diff --git a/source/images/supported_brands/tahoma.png b/images/supported_brands/tahoma.png similarity index 100% rename from source/images/supported_brands/tahoma.png rename to images/supported_brands/tahoma.png diff --git a/source/images/supported_brands/tank_utility.png b/images/supported_brands/tank_utility.png similarity index 100% rename from source/images/supported_brands/tank_utility.png rename to images/supported_brands/tank_utility.png diff --git a/source/images/supported_brands/tapsaff.png b/images/supported_brands/tapsaff.png similarity index 100% rename from source/images/supported_brands/tapsaff.png rename to images/supported_brands/tapsaff.png diff --git a/source/images/supported_brands/tcp_ip.png b/images/supported_brands/tcp_ip.png similarity index 100% rename from source/images/supported_brands/tcp_ip.png rename to images/supported_brands/tcp_ip.png diff --git a/source/images/supported_brands/technicolor.png b/images/supported_brands/technicolor.png similarity index 100% rename from source/images/supported_brands/technicolor.png rename to images/supported_brands/technicolor.png diff --git a/source/images/supported_brands/ted.png b/images/supported_brands/ted.png similarity index 100% rename from source/images/supported_brands/ted.png rename to images/supported_brands/ted.png diff --git a/source/images/supported_brands/teksavvy.png b/images/supported_brands/teksavvy.png similarity index 100% rename from source/images/supported_brands/teksavvy.png rename to images/supported_brands/teksavvy.png diff --git a/source/images/supported_brands/telegram.png b/images/supported_brands/telegram.png similarity index 100% rename from source/images/supported_brands/telegram.png rename to images/supported_brands/telegram.png diff --git a/source/images/supported_brands/telldus.png b/images/supported_brands/telldus.png similarity index 100% rename from source/images/supported_brands/telldus.png rename to images/supported_brands/telldus.png diff --git a/source/images/supported_brands/telldus_tellstick.png b/images/supported_brands/telldus_tellstick.png similarity index 100% rename from source/images/supported_brands/telldus_tellstick.png rename to images/supported_brands/telldus_tellstick.png diff --git a/source/images/supported_brands/telstra.png b/images/supported_brands/telstra.png similarity index 100% rename from source/images/supported_brands/telstra.png rename to images/supported_brands/telstra.png diff --git a/source/images/supported_brands/tesla.png b/images/supported_brands/tesla.png similarity index 100% rename from source/images/supported_brands/tesla.png rename to images/supported_brands/tesla.png diff --git a/source/images/supported_brands/thethingsnetwork.png b/images/supported_brands/thethingsnetwork.png similarity index 100% rename from source/images/supported_brands/thethingsnetwork.png rename to images/supported_brands/thethingsnetwork.png diff --git a/source/images/supported_brands/thingspeak.png b/images/supported_brands/thingspeak.png similarity index 100% rename from source/images/supported_brands/thingspeak.png rename to images/supported_brands/thingspeak.png diff --git a/source/images/supported_brands/thinkingcleaner.png b/images/supported_brands/thinkingcleaner.png similarity index 100% rename from source/images/supported_brands/thinkingcleaner.png rename to images/supported_brands/thinkingcleaner.png diff --git a/source/images/supported_brands/tibber.png b/images/supported_brands/tibber.png similarity index 100% rename from source/images/supported_brands/tibber.png rename to images/supported_brands/tibber.png diff --git a/source/images/supported_brands/tikteck.png b/images/supported_brands/tikteck.png similarity index 100% rename from source/images/supported_brands/tikteck.png rename to images/supported_brands/tikteck.png diff --git a/source/images/supported_brands/tile.png b/images/supported_brands/tile.png similarity index 100% rename from source/images/supported_brands/tile.png rename to images/supported_brands/tile.png diff --git a/source/images/supported_brands/todoist.png b/images/supported_brands/todoist.png similarity index 100% rename from source/images/supported_brands/todoist.png rename to images/supported_brands/todoist.png diff --git a/source/images/supported_brands/tomato.png b/images/supported_brands/tomato.png similarity index 100% rename from source/images/supported_brands/tomato.png rename to images/supported_brands/tomato.png diff --git a/source/images/supported_brands/toon.png b/images/supported_brands/toon.png similarity index 100% rename from source/images/supported_brands/toon.png rename to images/supported_brands/toon.png diff --git a/source/images/supported_brands/tor.png b/images/supported_brands/tor.png similarity index 100% rename from source/images/supported_brands/tor.png rename to images/supported_brands/tor.png diff --git a/source/images/supported_brands/torque.png b/images/supported_brands/torque.png similarity index 100% rename from source/images/supported_brands/torque.png rename to images/supported_brands/torque.png diff --git a/source/images/supported_brands/tp-link.png b/images/supported_brands/tp-link.png similarity index 100% rename from source/images/supported_brands/tp-link.png rename to images/supported_brands/tp-link.png diff --git a/source/images/supported_brands/trackr.png b/images/supported_brands/trackr.png similarity index 100% rename from source/images/supported_brands/trackr.png rename to images/supported_brands/trackr.png diff --git a/source/images/supported_brands/train.png b/images/supported_brands/train.png similarity index 100% rename from source/images/supported_brands/train.png rename to images/supported_brands/train.png diff --git a/source/images/supported_brands/transmission.png b/images/supported_brands/transmission.png similarity index 100% rename from source/images/supported_brands/transmission.png rename to images/supported_brands/transmission.png diff --git a/source/images/supported_brands/travisci.svg b/images/supported_brands/travisci.svg similarity index 100% rename from source/images/supported_brands/travisci.svg rename to images/supported_brands/travisci.svg diff --git a/source/images/supported_brands/twilio.png b/images/supported_brands/twilio.png similarity index 100% rename from source/images/supported_brands/twilio.png rename to images/supported_brands/twilio.png diff --git a/source/images/supported_brands/twitch.png b/images/supported_brands/twitch.png similarity index 100% rename from source/images/supported_brands/twitch.png rename to images/supported_brands/twitch.png diff --git a/source/images/supported_brands/twitter.png b/images/supported_brands/twitter.png similarity index 100% rename from source/images/supported_brands/twitter.png rename to images/supported_brands/twitter.png diff --git a/source/images/supported_brands/uber.png b/images/supported_brands/uber.png similarity index 100% rename from source/images/supported_brands/uber.png rename to images/supported_brands/uber.png diff --git a/source/images/supported_brands/ubiquiti.png b/images/supported_brands/ubiquiti.png similarity index 100% rename from source/images/supported_brands/ubiquiti.png rename to images/supported_brands/ubiquiti.png diff --git a/source/images/supported_brands/ueradio.png b/images/supported_brands/ueradio.png similarity index 100% rename from source/images/supported_brands/ueradio.png rename to images/supported_brands/ueradio.png diff --git a/source/images/supported_brands/universal_devices.png b/images/supported_brands/universal_devices.png similarity index 100% rename from source/images/supported_brands/universal_devices.png rename to images/supported_brands/universal_devices.png diff --git a/source/images/supported_brands/upc.png b/images/supported_brands/upc.png similarity index 100% rename from source/images/supported_brands/upc.png rename to images/supported_brands/upc.png diff --git a/source/images/supported_brands/upcloud.png b/images/supported_brands/upcloud.png similarity index 100% rename from source/images/supported_brands/upcloud.png rename to images/supported_brands/upcloud.png diff --git a/source/images/supported_brands/updater.png b/images/supported_brands/updater.png similarity index 100% rename from source/images/supported_brands/updater.png rename to images/supported_brands/updater.png diff --git a/source/images/supported_brands/upnp.png b/images/supported_brands/upnp.png similarity index 100% rename from source/images/supported_brands/upnp.png rename to images/supported_brands/upnp.png diff --git a/source/images/supported_brands/ups.png b/images/supported_brands/ups.png similarity index 100% rename from source/images/supported_brands/ups.png rename to images/supported_brands/ups.png diff --git a/source/images/supported_brands/usps.png b/images/supported_brands/usps.png similarity index 100% rename from source/images/supported_brands/usps.png rename to images/supported_brands/usps.png diff --git a/source/images/supported_brands/vagrant.png b/images/supported_brands/vagrant.png similarity index 100% rename from source/images/supported_brands/vagrant.png rename to images/supported_brands/vagrant.png diff --git a/source/images/supported_brands/vanderbilt_spc.png b/images/supported_brands/vanderbilt_spc.png similarity index 100% rename from source/images/supported_brands/vanderbilt_spc.png rename to images/supported_brands/vanderbilt_spc.png diff --git a/source/images/supported_brands/vasttrafik.png b/images/supported_brands/vasttrafik.png similarity index 100% rename from source/images/supported_brands/vasttrafik.png rename to images/supported_brands/vasttrafik.png diff --git a/source/images/supported_brands/velbus.png b/images/supported_brands/velbus.png similarity index 100% rename from source/images/supported_brands/velbus.png rename to images/supported_brands/velbus.png diff --git a/source/images/supported_brands/velux.png b/images/supported_brands/velux.png similarity index 100% rename from source/images/supported_brands/velux.png rename to images/supported_brands/velux.png diff --git a/source/images/supported_brands/venstar.png b/images/supported_brands/venstar.png similarity index 100% rename from source/images/supported_brands/venstar.png rename to images/supported_brands/venstar.png diff --git a/source/images/supported_brands/vera.png b/images/supported_brands/vera.png similarity index 100% rename from source/images/supported_brands/vera.png rename to images/supported_brands/vera.png diff --git a/source/images/supported_brands/verisure.png b/images/supported_brands/verisure.png similarity index 100% rename from source/images/supported_brands/verisure.png rename to images/supported_brands/verisure.png diff --git a/source/images/supported_brands/verizon.png b/images/supported_brands/verizon.png similarity index 100% rename from source/images/supported_brands/verizon.png rename to images/supported_brands/verizon.png diff --git a/source/images/supported_brands/videolan.png b/images/supported_brands/videolan.png similarity index 100% rename from source/images/supported_brands/videolan.png rename to images/supported_brands/videolan.png diff --git a/source/images/supported_brands/view-dashboard.png b/images/supported_brands/view-dashboard.png similarity index 100% rename from source/images/supported_brands/view-dashboard.png rename to images/supported_brands/view-dashboard.png diff --git a/source/images/supported_brands/vizio-smartcast.png b/images/supported_brands/vizio-smartcast.png similarity index 100% rename from source/images/supported_brands/vizio-smartcast.png rename to images/supported_brands/vizio-smartcast.png diff --git a/source/images/supported_brands/voicerss.png b/images/supported_brands/voicerss.png similarity index 100% rename from source/images/supported_brands/voicerss.png rename to images/supported_brands/voicerss.png diff --git a/source/images/supported_brands/volumio.png b/images/supported_brands/volumio.png similarity index 100% rename from source/images/supported_brands/volumio.png rename to images/supported_brands/volumio.png diff --git a/source/images/supported_brands/volvo.png b/images/supported_brands/volvo.png similarity index 100% rename from source/images/supported_brands/volvo.png rename to images/supported_brands/volvo.png diff --git a/source/images/supported_brands/vultr.png b/images/supported_brands/vultr.png similarity index 100% rename from source/images/supported_brands/vultr.png rename to images/supported_brands/vultr.png diff --git a/source/images/supported_brands/waqi.png b/images/supported_brands/waqi.png similarity index 100% rename from source/images/supported_brands/waqi.png rename to images/supported_brands/waqi.png diff --git a/source/images/supported_brands/waterfurnace.png b/images/supported_brands/waterfurnace.png similarity index 100% rename from source/images/supported_brands/waterfurnace.png rename to images/supported_brands/waterfurnace.png diff --git a/source/images/supported_brands/webos.png b/images/supported_brands/webos.png similarity index 100% rename from source/images/supported_brands/webos.png rename to images/supported_brands/webos.png diff --git a/source/images/supported_brands/windows.png b/images/supported_brands/windows.png similarity index 100% rename from source/images/supported_brands/windows.png rename to images/supported_brands/windows.png diff --git a/source/images/supported_brands/wink.png b/images/supported_brands/wink.png similarity index 100% rename from source/images/supported_brands/wink.png rename to images/supported_brands/wink.png diff --git a/source/images/supported_brands/woonveilig.png b/images/supported_brands/woonveilig.png similarity index 100% rename from source/images/supported_brands/woonveilig.png rename to images/supported_brands/woonveilig.png diff --git a/source/images/supported_brands/worldtidesinfo.png b/images/supported_brands/worldtidesinfo.png similarity index 100% rename from source/images/supported_brands/worldtidesinfo.png rename to images/supported_brands/worldtidesinfo.png diff --git a/source/images/supported_brands/worx.png b/images/supported_brands/worx.png similarity index 100% rename from source/images/supported_brands/worx.png rename to images/supported_brands/worx.png diff --git a/source/images/supported_brands/wsdot.png b/images/supported_brands/wsdot.png similarity index 100% rename from source/images/supported_brands/wsdot.png rename to images/supported_brands/wsdot.png diff --git a/source/images/supported_brands/wunderground.png b/images/supported_brands/wunderground.png similarity index 100% rename from source/images/supported_brands/wunderground.png rename to images/supported_brands/wunderground.png diff --git a/source/images/supported_brands/x10.gif b/images/supported_brands/x10.gif similarity index 100% rename from source/images/supported_brands/x10.gif rename to images/supported_brands/x10.gif diff --git a/source/images/supported_brands/xbox-live.png b/images/supported_brands/xbox-live.png similarity index 100% rename from source/images/supported_brands/xbox-live.png rename to images/supported_brands/xbox-live.png diff --git a/source/images/supported_brands/xeoma.png b/images/supported_brands/xeoma.png similarity index 100% rename from source/images/supported_brands/xeoma.png rename to images/supported_brands/xeoma.png diff --git a/source/images/supported_brands/xiaomi.png b/images/supported_brands/xiaomi.png similarity index 100% rename from source/images/supported_brands/xiaomi.png rename to images/supported_brands/xiaomi.png diff --git a/source/images/supported_brands/xmpp.png b/images/supported_brands/xmpp.png similarity index 100% rename from source/images/supported_brands/xmpp.png rename to images/supported_brands/xmpp.png diff --git a/source/images/supported_brands/yahoo_finance.png b/images/supported_brands/yahoo_finance.png similarity index 100% rename from source/images/supported_brands/yahoo_finance.png rename to images/supported_brands/yahoo_finance.png diff --git a/source/images/supported_brands/yahooweather.png b/images/supported_brands/yahooweather.png similarity index 100% rename from source/images/supported_brands/yahooweather.png rename to images/supported_brands/yahooweather.png diff --git a/source/images/supported_brands/yamaha.png b/images/supported_brands/yamaha.png similarity index 100% rename from source/images/supported_brands/yamaha.png rename to images/supported_brands/yamaha.png diff --git a/source/images/supported_brands/yandex.png b/images/supported_brands/yandex.png similarity index 100% rename from source/images/supported_brands/yandex.png rename to images/supported_brands/yandex.png diff --git a/source/images/supported_brands/yeelight.png b/images/supported_brands/yeelight.png similarity index 100% rename from source/images/supported_brands/yeelight.png rename to images/supported_brands/yeelight.png diff --git a/source/images/supported_brands/yesssat.png b/images/supported_brands/yesssat.png similarity index 100% rename from source/images/supported_brands/yesssat.png rename to images/supported_brands/yesssat.png diff --git a/source/images/supported_brands/yi.png b/images/supported_brands/yi.png similarity index 100% rename from source/images/supported_brands/yi.png rename to images/supported_brands/yi.png diff --git a/source/images/supported_brands/yr.png b/images/supported_brands/yr.png similarity index 100% rename from source/images/supported_brands/yr.png rename to images/supported_brands/yr.png diff --git a/source/images/supported_brands/z-wave.png b/images/supported_brands/z-wave.png similarity index 100% rename from source/images/supported_brands/z-wave.png rename to images/supported_brands/z-wave.png diff --git a/source/images/supported_brands/zabbix.png b/images/supported_brands/zabbix.png similarity index 100% rename from source/images/supported_brands/zabbix.png rename to images/supported_brands/zabbix.png diff --git a/source/images/supported_brands/zamg.png b/images/supported_brands/zamg.png similarity index 100% rename from source/images/supported_brands/zamg.png rename to images/supported_brands/zamg.png diff --git a/source/images/supported_brands/zehnder.png b/images/supported_brands/zehnder.png similarity index 100% rename from source/images/supported_brands/zehnder.png rename to images/supported_brands/zehnder.png diff --git a/source/images/supported_brands/zengge.png b/images/supported_brands/zengge.png similarity index 100% rename from source/images/supported_brands/zengge.png rename to images/supported_brands/zengge.png diff --git a/source/images/supported_brands/zigbee.png b/images/supported_brands/zigbee.png similarity index 100% rename from source/images/supported_brands/zigbee.png rename to images/supported_brands/zigbee.png diff --git a/source/images/supported_brands/ziggo.png b/images/supported_brands/ziggo.png similarity index 100% rename from source/images/supported_brands/ziggo.png rename to images/supported_brands/ziggo.png diff --git a/source/images/supported_brands/zoneminder.png b/images/supported_brands/zoneminder.png similarity index 100% rename from source/images/supported_brands/zoneminder.png rename to images/supported_brands/zoneminder.png diff --git a/index.html b/index.html new file mode 100644 index 0000000000..d83c7a5bba --- /dev/null +++ b/index.html @@ -0,0 +1,315 @@ + + + + + + + + + Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + Home Assistant screenshot + +
+
+

Awaken your home

+

+Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Perfect to run on a Raspberry Pi. +

+

+ Get started + View demo + Browse code on GitHub +

+
+
+
+
+
+
+
+
+
+
+ + + + + +
+
+

Home Assistant in the press

+ ProductHunt.com logo + Linux.com logo + Wired.com logo + OpenSource.com logo + Linux Magazine logo + Ct logo +
+
+
+
+
+
+
+
+ + + + + + + diff --git a/.themes/classic/source/javascripts/github.js b/javascripts/github.js similarity index 100% rename from .themes/classic/source/javascripts/github.js rename to javascripts/github.js diff --git a/.themes/classic/source/javascripts/libs/jXHR.js b/javascripts/libs/jXHR.js similarity index 100% rename from .themes/classic/source/javascripts/libs/jXHR.js rename to javascripts/libs/jXHR.js diff --git a/.themes/classic/source/javascripts/libs/jquery.min.js b/javascripts/libs/jquery.min.js similarity index 100% rename from .themes/classic/source/javascripts/libs/jquery.min.js rename to javascripts/libs/jquery.min.js diff --git a/source/javascripts/libs/md5.js b/javascripts/libs/md5.js similarity index 100% rename from source/javascripts/libs/md5.js rename to javascripts/libs/md5.js diff --git a/.themes/classic/source/javascripts/libs/swfobject-dynamic.js b/javascripts/libs/swfobject-dynamic.js similarity index 100% rename from .themes/classic/source/javascripts/libs/swfobject-dynamic.js rename to javascripts/libs/swfobject-dynamic.js diff --git a/.themes/classic/source/javascripts/modernizr-2.0.js b/javascripts/modernizr-2.0.js similarity index 100% rename from .themes/classic/source/javascripts/modernizr-2.0.js rename to javascripts/modernizr-2.0.js diff --git a/source/javascripts/octopress.js b/javascripts/octopress.js similarity index 100% rename from source/javascripts/octopress.js rename to javascripts/octopress.js diff --git a/.themes/classic/source/javascripts/pinboard.js b/javascripts/pinboard.js similarity index 100% rename from .themes/classic/source/javascripts/pinboard.js rename to javascripts/pinboard.js diff --git a/.themes/classic/source/javascripts/twitter.js b/javascripts/twitter.js similarity index 100% rename from .themes/classic/source/javascripts/twitter.js rename to javascripts/twitter.js diff --git a/plugins/active_link.rb b/plugins/active_link.rb deleted file mode 100644 index bd5853f702..0000000000 --- a/plugins/active_link.rb +++ /dev/null @@ -1,19 +0,0 @@ -module Jekyll - class ActiveLinkTag < Liquid::Tag - def initialize(tag_name, text, token) - super - parts = text.split(' ', 2) - @href = parts[0] - @title = parts[1] - end - - def render(context) - href = Liquid::Template.parse(@href).render context - title = Liquid::Template.parse(@title).render context - cls = @href == context.registers[:page]["url"] ? "class='active'" : '' - "#{title}" - end - end -end - -Liquid::Template.register_tag('active_link', Jekyll::ActiveLinkTag) diff --git a/plugins/category_generator.rb b/plugins/category_generator.rb deleted file mode 100644 index c55d62f41c..0000000000 --- a/plugins/category_generator.rb +++ /dev/null @@ -1,193 +0,0 @@ -# encoding: utf-8 -# -# Jekyll category page generator. -# http://recursive-design.com/projects/jekyll-plugins/ -# -# Version: 0.1.4 (201101061053) -# -# Copyright (c) 2010 Dave Perrett, http://recursive-design.com/ -# Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php) -# -# A generator that creates category pages for jekyll sites. -# -# Included filters : -# - category_links: Outputs the list of categories as comma-separated links. -# - date_to_html_string: Outputs the post.date as formatted html, with hooks for CSS styling. -# -# Available _config.yml settings : -# - category_dir: The subfolder to build category pages in (default is 'categories'). -# - category_title_prefix: The string used before the category name in the page title (default is -# 'Category: '). - -require 'stringex' - -module Jekyll - - # The CategoryIndex class creates a single category page for the specified category. - class CategoryIndex < Page - - # Initializes a new CategoryIndex. - # - # +base+ is the String path to the . - # +category_dir+ is the String path between and the category folder. - # +category+ is the category currently being processed. - def initialize(site, base, category_dir, category) - @site = site - @base = base - @dir = category_dir - @name = 'index.html' - self.process(@name) - # Read the YAML data from the layout page. - self.read_yaml(File.join(base, '_layouts'), 'category_index.html') - self.data['category'] = category - # Set the title for this page. - title_prefix = site.config['category_title_prefix'] || 'Category: ' - self.data['title'] = "#{title_prefix}#{category}" - # Set the meta-description for this page. - meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: ' - self.data['description'] = "#{meta_description_prefix}#{category}" - end - - end - - # The CategoryFeed class creates an Atom feed for the specified category. - class CategoryFeed < Page - - # Initializes a new CategoryFeed. - # - # +base+ is the String path to the . - # +category_dir+ is the String path between and the category folder. - # +category+ is the category currently being processed. - def initialize(site, base, category_dir, category) - @site = site - @base = base - @dir = category_dir - @name = 'atom.xml' - self.process(@name) - # Read the YAML data from the layout page. - self.read_yaml(File.join(base, '_includes/custom'), 'category_feed.xml') - self.data['category'] = category - # Set the title for this page. - title_prefix = site.config['category_title_prefix'] || 'Category: ' - self.data['title'] = "#{title_prefix}#{category}" - # Set the meta-description for this page. - meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: ' - self.data['description'] = "#{meta_description_prefix}#{category}" - - # Set the correct feed URL. - self.data['feed_url'] = "#{category_dir}/#{name}" - end - - end - - # The Site class is a built-in Jekyll class with access to global site config information. - class Site - - # Creates an instance of CategoryIndex for each category page, renders it, and - # writes the output to a file. - # - # +category_dir+ is the String path to the category folder. - # +category+ is the category currently being processed. - def write_category_index(category_dir, category) - index = CategoryIndex.new(self, self.source, category_dir, category) - index.render(self.layouts, site_payload) - index.write(self.dest) - # Record the fact that this page has been added, otherwise Site::cleanup will remove it. - self.pages << index - - # Create an Atom-feed for each index. - feed = CategoryFeed.new(self, self.source, category_dir, category) - feed.render(self.layouts, site_payload) - feed.write(self.dest) - # Record the fact that this page has been added, otherwise Site::cleanup will remove it. - self.pages << feed - end - - # Loops through the list of category pages and processes each one. - def write_category_indexes - if self.layouts.key? 'category_index' - dir = self.config['category_dir'] || 'categories' - self.categories.keys.each do |category| - self.write_category_index(File.join(dir, category.to_url), category) - end - - # Throw an exception if the layout couldn't be found. - else - raise <<-ERR - - -=============================================== - Error for category_generator.rb plugin ------------------------------------------------ - No 'category_index.html' in source/_layouts/ - Perhaps you haven't installed a theme yet. -=============================================== - -ERR - end - end - - end - - - # Jekyll hook - the generate method is called by jekyll, and generates all of the category pages. - class GenerateCategories < Generator - safe true - priority :low - - def generate(site) - site.write_category_indexes - end - - end - - - # Adds some extra filters used during the category creation process. - module Filters - - # Outputs a list of categories as comma-separated links. This is used - # to output the category list for each post on a category page. - # - # +categories+ is the list of categories to format. - # - # Returns string - # - def category_links(categories) - categories = categories.sort!.map { |c| category_link c } - - case categories.length - when 0 - "" - when 1 - categories[0].to_s - else - "#{categories[0...-1].join(', ')}, #{categories[-1]}" - end - end - - # Outputs a single category as an link. - # - # +category+ is a category string to format as an link - # - # Returns string - # - def category_link(category) - dir = @context.registers[:site].config['category_dir'] - "#{category}" - end - - # Outputs the post.date as formatted html, with hooks for CSS styling. - # - # +date+ is the date object to format as HTML. - # - # Returns string - def date_to_html_string(date) - result = '' + date.strftime('%b').upcase + ' ' - result += date.strftime('%d ') - result += date.strftime('%Y ') - result - end - - end - -end diff --git a/plugins/configuration.rb b/plugins/configuration.rb deleted file mode 100644 index 30a5196d72..0000000000 --- a/plugins/configuration.rb +++ /dev/null @@ -1,114 +0,0 @@ -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/environment_variables.rb b/plugins/environment_variables.rb deleted file mode 100644 index 7d9203f164..0000000000 --- a/plugins/environment_variables.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Jekyll - class EnvironmentVariablesGenerator < Generator - def generate(site) - # https://www.netlify.com/docs/continuous-deployment/#build-environment-variables - repo_url = ENV['REPOSITORY_URL'] || 'https://github.com/home-assistant/home-assistant.github.io' - - # Rewrite urls if repo url is the ssh format. - if repo_url.start_with? 'git@github.com:' - repo_url = repo_url.sub 'git@github.com:', 'https://github.com/' - end - - # These values will be available as {{ site.NLY_REPOSITORY_URL }} - site.config['NLY_REPOSITORY_URL'] = repo_url - site.config['NLY_HEAD'] = ENV['HEAD'] || 'current' - end - end -end diff --git a/plugins/filters.rb b/plugins/filters.rb deleted file mode 100644 index 41ad3357a8..0000000000 --- a/plugins/filters.rb +++ /dev/null @@ -1,76 +0,0 @@ -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://www.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/plugins/include_array.rb b/plugins/include_array.rb deleted file mode 100644 index 000040fb0e..0000000000 --- a/plugins/include_array.rb +++ /dev/null @@ -1,58 +0,0 @@ -# Title: Include Array Tag for Jekyll -# Author: Jason Woodward http://www.woodwardjd.com -# Description: Import files on your filesystem as specified in a configuration variable in _config.yml. Mostly cribbed from Jekyll's include tag. -# Syntax: {% include_array variable_name_from_config.yml %} -# -# Example 1: -# {% include_array asides %} -# -# _config.yml snippet: -# asides: [asides/twitter.html, asides/custom/my_picture.html] -# -module Jekyll - - class IncludeArrayTag < Liquid::Tag - Syntax = /(#{Liquid::QuotedFragment}+)/ - def initialize(tag_name, markup, tokens) - if markup =~ Syntax - @array_name = $1 - else - raise SyntaxError.new("Error in tag 'include_array' - Valid syntax: include_array [array from _config.yml]") - end - - super - end - - def render(context) - includes_dir = File.join(context.registers[:site].source, '_includes') - - if File.symlink?(includes_dir) - return "Includes directory '#{includes_dir}' cannot be a symlink" - end - - rtn = '' - (context.environments.first['site'][@array_name] || []).each do |file| - if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./ - rtn = rtn + "Include file '#{file}' contains invalid characters or sequences" - end - - Dir.chdir(includes_dir) do - choices = Dir['**/*'].reject { |x| File.symlink?(x) } - if choices.include?(file) - source = File.read(file) - partial = Liquid::Template.parse(source) - context.stack do - rtn = rtn + partial.render(context) - end - else - rtn = rtn + "Included file '#{file}' not found in _includes directory" - end - end - end - rtn - end - end - -end - -Liquid::Template.register_tag('include_array', Jekyll::IncludeArrayTag) diff --git a/plugins/linkable_title.rb b/plugins/linkable_title.rb deleted file mode 100644 index 7a5ba4c2b0..0000000000 --- a/plugins/linkable_title.rb +++ /dev/null @@ -1,16 +0,0 @@ -module Jekyll - class LinkableTitleTag < Liquid::Tag - def initialize(tag_name, text, token) - super - @title = text - end - - def render(context) - title = Liquid::Template.parse(@title).render context - slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '') - " #{title}" - end - end -end - -Liquid::Template.register_tag('linkable_title', Jekyll::LinkableTitleTag) diff --git a/plugins/no_follow.rb b/plugins/no_follow.rb deleted file mode 100644 index 27da6c90f2..0000000000 --- a/plugins/no_follow.rb +++ /dev/null @@ -1,33 +0,0 @@ -# Jekyll Auto Nofollow Plugin -# Automatically adds rel='external nofollow' to outgoing links. - -require 'jekyll' -require 'nokogiri' - -module Jekyll - module NoFollow - def nofollow(content) - dom = Nokogiri::HTML.fragment(content) - - # Find all links - dom.css('a').each do |link| - rel = ['external', 'nofollow'] - - # All external links start with 'http', skip when this one does not - next unless link.get_attribute('href') =~ /\Ahttp/i - - # Play nice with our own links - next if link.get_attribute('href') =~ /\Ahttps?:\/\/\w*.?home-assistant.io/i - - # Play nice with links that already have a rel attribute set - rel.unshift(link.get_attribute('rel')) - - # Add rel attribute to link - link.set_attribute('rel', rel.join(' ').strip) - end - dom.to_s - end - end -end - -Liquid::Template.register_filter(Jekyll::NoFollow) diff --git a/plugins/titlecase.rb b/plugins/titlecase.rb deleted file mode 100644 index 7648932c9c..0000000000 --- a/plugins/titlecase.rb +++ /dev/null @@ -1,36 +0,0 @@ -class String - def titlecase - small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.) - - x = split(" ").map do |word| - # note: word could contain non-word characters! - # downcase all small_words, capitalize the rest - small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize! - word - end - # capitalize first and last words - x.first.to_s.smart_capitalize! - x.last.to_s.smart_capitalize! - # small words are capitalized after colon, period, exclamation mark, question mark - x.join(" ").gsub(/(:|\.|!|\?)\s?(\W*#{small_words.join("|")}\W*)\s/) { "#{$1} #{$2.smart_capitalize} " } - end - - def titlecase! - replace(titlecase) - end - - def smart_capitalize - # ignore any leading crazy characters and capitalize the first real character - if self =~ /^['"\(\[']*([a-z])/ - i = index($1) - x = self[i,self.length] - # word with capitals and periods mid-word are left alone - self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/ - end - self - end - - def smart_capitalize! - replace(smart_capitalize) - end -end diff --git a/privacy/index.html b/privacy/index.html new file mode 100644 index 0000000000..ed5bd0988e --- /dev/null +++ b/privacy/index.html @@ -0,0 +1,160 @@ + + + + + + + + + Privacy Policy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+

+ Privacy Policy +

+
+
+

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.

+

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.

+

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.

+

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.

+

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.

+

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.

+

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.

+

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.

+

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.

+

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.

+

Change log

+
    +
  • October 19, 2017: Initial version
  • +
+

This privacy policy has been adapted from the Automattic privacy policy and is licensed Creative Commons ShareAlike.

+
+
+
+
+ + + + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000000..76ad13f86c --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: + +Sitemap: https://home-assistant.io/sitemap.xml \ No newline at end of file diff --git a/sass/_base.scss b/sass/_base.scss deleted file mode 100644 index 05fdd005cb..0000000000 --- a/sass/_base.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "base/utilities"; -@import "base/solarized"; -@import "base/theme"; -@import "base/typography"; -@import "base/layout"; diff --git a/sass/_partials.scss b/sass/_partials.scss deleted file mode 100644 index 4336c71cdb..0000000000 --- a/sass/_partials.scss +++ /dev/null @@ -1,8 +0,0 @@ -@import "partials/header"; -@import "partials/navigation"; -@import "partials/blog"; -@import "partials/sharing"; -// @import "partials/syntax"; -@import "partials/archive"; -@import "partials/sidebar"; -@import "partials/footer"; diff --git a/sass/base/_layout.scss b/sass/base/_layout.scss deleted file mode 100644 index 81903428f5..0000000000 --- a/sass/base/_layout.scss +++ /dev/null @@ -1,192 +0,0 @@ -$max-width: 1200px !default; - -// Padding used for layout margins -$pad-min: 18px !default; -$pad-narrow: 25px !default; -$pad-medium: 35px !default; -$pad-wide: 55px !default; - -// Sidebar widths used in media queries -$sidebar-width-medium: 240px !default; -$sidebar-pad-medium: 15px !default; -$sidebar-pad-wide: 20px !default; -$sidebar-width-wide: 300px !default; - -$indented-lists: false !default; - -$header-font-size: 1em !default; -$header-padding-top: 1.5em !default; -$header-padding-bottom: 1.5em !default; - -.group { @include pie-clearfix; } - -@mixin collapse-sidebar { - float: none; - width: auto; - clear: left; - margin: 0; - padding: 0 $pad-medium 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid lighten($sidebar-border, 4); - section { - &.odd, &.even { float: left; width: 48%; } - &.odd { margin-left: 0; } - &.even { margin-left: 4%; } - } - &.thirds section { - width: 30%; - margin-left: 5%; - &.first { - margin-left: 0; - clear: both; - } - } -} - -body { - -webkit-text-size-adjust: none; - max-width: $max-width; - position: relative; - margin: 0 auto; - > header, > nav, > footer, #content > article, #content > div > article, #content > div > section { - @extend .group; - padding-left: $pad-min; - padding-right: $pad-min; - @media only screen and (min-width: 480px) { - padding-left: $pad-narrow; - padding-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - padding-left: $pad-medium; - padding-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - padding-left: $pad-wide; - padding-right: $pad-wide; - } - } - div.pagination { - @extend .group; - margin-left: $pad-min; - margin-right: $pad-min; - @media only screen and (min-width: 480px) { - margin-left: $pad-narrow; - margin-right: $pad-narrow; - } - @media only screen and (min-width: 768px) { - margin-left: $pad-medium; - margin-right: $pad-medium; - } - @media only screen and (min-width: 992px) { - margin-left: $pad-wide; - margin-right: $pad-wide; - } - } - > header { - font-size: $header-font-size; - padding-top: $header-padding-top; - padding-bottom: $header-padding-bottom; - } -} - -#content { - overflow: hidden; - > div, > article { width: 100%; } -} - -aside.sidebar { - float: none; - padding: 0 $pad-min 1px; - background-color: lighten($sidebar-bg, 2); - border-top: 1px solid $sidebar-border; - @extend .group; -} - -.flex-content { max-width: 100%; height: auto; } - -.basic-alignment { - &.left { float: left; margin-right: 1.5em; } - &.right { float: right; margin-left: 1.5em; } - &.center { display:block; margin: 0 auto 1.5em; } - &.left, &.right { margin-bottom: .8em; } -} - -.toggle-sidebar { &, .no-sidebar & { display: none; }} - -body.sidebar-footer { - @media only screen and (min-width: 750px) { - aside.sidebar{ @include collapse-sidebar; } - } - #content { margin-right: 0px; } - .toggle-sidebar { display: none; } -} - -@media only screen and (min-width: 550px) { - body > header { font-size: $header-font-size; } -} -@media only screen and (min-width: 750px) { - aside.sidebar { @include collapse-sidebar; } -} -#main, #content, .sidebar { - @extend .group; -} -@media only screen and (min-width: 768px) { - body { -webkit-text-size-adjust: auto; } - body > header { font-size: $header-font-size * 1.2; } - #main { - padding: 0; - margin: 0 auto; - } - #content { - overflow: visible; - margin-right: $sidebar-width-medium; - position: relative; - .no-sidebar & { margin-right: 0; border-right: 0; } - .collapse-sidebar & { margin-right: 20px; } - > div, > article { - padding-top: $pad-medium/2; - padding-bottom: $pad-medium/2; - float: left; - } - } - aside.sidebar { - width: $sidebar-width-medium - $sidebar-pad-medium*2; - padding: 0 $sidebar-pad-medium $sidebar-pad-medium; - background: none; - clear: none; - float: left; - margin: 0 -100% 0 0; - section { - width: auto; margin-left: 0; - &.odd, &.even { float: none; width: auto; margin-left: 0; } - } - .collapse-sidebar & { - @include collapse-sidebar; - } - } -} - -@media only screen and (min-width: 992px) { - body > header { font-size: $header-font-size * 1.3; } - #content { margin-right: $sidebar-width-wide; } - #content { - > div, > article { - padding-top: $pad-wide/2; - padding-bottom: $pad-wide/2; - } - } - aside.sidebar { - width: $sidebar-width-wide - $sidebar-pad-wide*2; - padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide; - .collapse-sidebar & { - padding: { left: $pad-wide; right: $pad-wide; } - } - } -} - -@if $indented-lists == false { - @media only screen and (min-width: 768px) { - ul, ol { margin-left: 0; } - } -} - diff --git a/sass/base/_solarized.scss b/sass/base/_solarized.scss deleted file mode 100644 index 45d8fc5eff..0000000000 --- a/sass/base/_solarized.scss +++ /dev/null @@ -1,46 +0,0 @@ -$base03: #002b36 !default; //darkest blue -$base02: #073642 !default; //dark blue -$base01: #586e75 !default; //darkest gray -$base00: #657b83 !default; //dark gray -$base0: #839496 !default; //medium gray -$base1: #93a1a1 !default; //medium light gray -$base2: #eee8d5 !default; //cream -$base3: #fdf6e3 !default; //white -$solar-yellow: #b58900 !default; -$solar-orange: #cb4b16 !default; -$solar-red: #dc322f !default; -$solar-magenta: #d33682 !default; -$solar-violet: #6c71c4 !default; -$solar-blue: #268bd2 !default; -$solar-cyan: #2aa198 !default; -$solar-green: #859900 !default; - -$solarized: dark !default; - -@if $solarized == light { - - $_base03: $base03; - $_base02: $base02; - $_base01: $base01; - $_base00: $base00; - $_base0: $base0; - $_base1: $base1; - $_base2: $base2; - $_base3: $base3; - - $base03: $_base3; - $base02: $_base2; - $base01: $_base1; - $base00: $_base0; - $base0: $_base00; - $base1: $_base01; - $base2: $_base02; - $base3: $_base03; -} - -/* non highlighted code colors */ -$pre-bg: $base03 !default; -$pre-border: darken($base02, 5) !default; -$pre-color: $base1 !default; - - diff --git a/sass/base/_theme.scss b/sass/base/_theme.scss deleted file mode 100644 index c35136d5ac..0000000000 --- a/sass/base/_theme.scss +++ /dev/null @@ -1,85 +0,0 @@ -$noise-bg: image-url('noise.png') top left !default; -$img-border: inline-image('dotted-border.png') !default; - -// Main Link Colors -$link-color: lighten(#165b94, 3) !default; -$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default; -$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default; -$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default; - -// Main Section Colors -$main-bg: #f8f8f8 !default; -$page-bg: #252525 !default; -$article-border: #eeeeee !default; - -$header-bg: #333 !default; -$header-border: lighten($header-bg, 15) !default; -$title-color: #f2f2f2 !default; -$subtitle-color: #aaa !default; - -$text-color: #222 !default; -$text-color-light: #aaa !default; -$type-border: #ddd !default; - -/* Navigation */ -$nav-bg: #ccc !default; -$nav-bg-front: image-url('noise.png') !default; -$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)) !default; -$nav-color: darken($nav-bg, 38) !default; -$nav-color-hover: darken($nav-color, 25) !default; -$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default; -$nav-border: darken($nav-bg, 10) !default; -$nav-border-top: lighten($nav-bg, 15) !default; -$nav-border-bottom: darken($nav-bg, 25) !default; -$nav-border-left: darken($nav-bg, 11) !default; -$nav-border-right: lighten($nav-bg, 7) !default; - -/* Sidebar colors */ -$sidebar-bg: #f2f2f2 !default; -$sidebar-link-color: $text-color !default; -$sidebar-link-color-hover: $link-color-hover !default; -$sidebar-link-color-active: $link-color-active !default; -$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default; -$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default; -$sidebar-border-hover: darken($sidebar-bg, 7) !default; -$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default; -$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default; - -$footer-color: #888 !default; -$footer-bg: #ccc !default; -$footer-bg-front: image-url('noise.png') !default; -$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)) !default; -$footer-color: darken($footer-bg, 38) !default; -$footer-color-hover: darken($footer-color, 10) !default; -$footer-border-top: lighten($footer-bg, 15) !default; -$footer-border-bottom: darken($footer-bg, 15) !default; -$footer-link-color: darken($footer-bg, 38) !default; -$footer-link-color-hover: darken($footer-color, 25) !default; -$page-border-bottom: darken($footer-bg, 5) !default; - - -/* Core theme application */ - -a { - @include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active); -} -aside.sidebar a { - @include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active); -} -a { - @include transition(color .3s); -} - -html { - background: $page-bg image-url('line-tile.png') top left; -} -body { - > div { - background: $sidebar-bg $noise-bg; - border-bottom: 1px solid $page-border-bottom; - > div { - background: $main-bg $noise-bg; - border-right: 1px solid $sidebar-border; - } - } -} diff --git a/sass/base/_typography.scss b/sass/base/_typography.scss deleted file mode 100644 index 9a6bbacd2a..0000000000 --- a/sass/base/_typography.scss +++ /dev/null @@ -1,164 +0,0 @@ -$blockquote: $type-border !default; -$sans: "PT Sans", "Helvetica Neue", Arial, sans-serif !default; -$serif: "PT Serif", Georgia, Times, "Times New Roman", serif !default; -$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; -$heading-font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif !default; -$header-title-font-family: $heading-font-family !default; -$header-subtitle-font-family: $heading-font-family !default; - -// Fonts -.heading { - font-family: $heading-font-family; -} -.sans { font-family: $sans; } -.serif { font-family: $serif; } -.mono { font-family: $mono; } - -body > header h1 { - font-size: 2.2em; - @extend .heading; - font-family: $header-title-font-family; - font-weight: normal; - line-height: 1.2em; - margin-bottom: 0.6667em; -} -body > header h2 { - font-family: $header-subtitle-font-family; -} - -body { - line-height: 1.5em; - color: $text-color; - @extend .serif; -} -h1 { - font-size: 2.2em; - line-height: 1.2em; -} - -@media only screen and (min-width: 992px) { - body { font-size: 1.15em; } - h1 { font-size: 2.6em; line-height: 1.2em; } -} - -#{headings()}{ - @extend .heading; - text-rendering: optimizelegibility; - margin-bottom: 1em; - font-weight: bold; -} -h2, section h1 { - font-size: 1.5em; -} -h3, section h2, section section h1 { - font-size: 1.3em; -} -h4, section h3, section section h2, section section section h1 { - font-size: 1em; -} -h5, section h4, section section h3 { - font-size: .9em; -} -h6, section h5, section section h4, section section section h3 { - font-size: .8em; -} - -p, article blockquote, ul, ol { margin-bottom: 1.5em; } - -ul { list-style-type: disc; - ul { list-style-type: circle; margin-bottom: 0px; - ul { list-style-type: square; margin-bottom: 0px; }}} - -ol { list-style-type: decimal; - ol { list-style-type: lower-alpha; margin-bottom: 0px; - ol { list-style-type: lower-roman; margin-bottom: 0px; }}} - -ul, ol { &, ul, ol { margin-left: 1.3em; }} -ul, ol { ul, ol { margin-bottom: 0em; }} - -strong { font-weight: bold; } - -em { font-style: italic; } - -sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;} -sup { top: -.5em; } -sub { bottom: -.5em; } - -a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; } - -q { font-style: italic; - &:before { content: "\201C"; } - &:after { content: "\201D"; } -} - -em, dfn { font-style: italic; } - -strong, dfn { font-weight: bold; } - -del, s { text-decoration: line-through; } - -abbr, acronym { border-bottom: 1px dotted; cursor: help; } - -pre, code, tt { @extend .mono; } - -hr { margin-bottom: 0.2em; } - -small { font-size: .8em; } - -big { font-size: 1.2em; } - -article blockquote { - $bq-margin: 1.2em; - font-style: italic; - position: relative; - font-size: 1.2em; - line-height: 1.5em; - padding-left: 1em; - border-left: 4px solid rgba($text-color-light, .5); - cite { - font-style: italic; - a { color: $text-color-light !important; word-wrap: break-word; } - &:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; } - } - @media only screen and (min-width: 992px) { - padding-left: 1.5em; - border-left-width: 4px; - } -} - -.pullquote-right:before, -.pullquote-left:before { - /* Reset metrics. */ - padding: 0; - border: none; - - /* Content */ - content: attr(data-pullquote); - - /* Pull out to the right, modular scale based margins. */ - float: right; - width: 45%; - margin: .5em 0 1em 1.5em; - - /* Baseline correction */ - position: relative; - top: 7px; - font-size: 1.4em; - line-height: 1.45em; -} - -.pullquote-left:before { - /* Make left pullquotes align properly. */ - float: left; - margin: .5em 1.5em 1em 0; -} - -/* @extend this to force long lines of continuous text to wrap */ -.force-wrap { - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - white-space: pre-wrap; - word-wrap: break-word; -} - diff --git a/sass/base/_utilities.scss b/sass/base/_utilities.scss deleted file mode 100644 index 2d49e659e7..0000000000 --- a/sass/base/_utilities.scss +++ /dev/null @@ -1,28 +0,0 @@ -@mixin mask-image($img, $repeat: no-repeat){ - @include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms); - @include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms); - width: image-width($img); - height: image-height($img); -} - -@mixin shadow-box($border: #fff .5em solid, $shadow: rgba(#000, .15) 0 1px 4px, $border-radius: .3em) { - @include border-radius($border-radius); - @include box-shadow($shadow); - @include box-sizing(border-box); - border: $border; -} - -@mixin selection($bg, $color: inherit, $text-shadow: none){ - * { - &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } - &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } - } -} - -@function text-color($color, $dark: dark, $light: light){ - $text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000; - $text-color: if($text-color >= 150, $dark, $light); - @return $text-color; -} - diff --git a/sass/custom/_colors.scss b/sass/custom/_colors.scss deleted file mode 100644 index 23af5e739d..0000000000 --- a/sass/custom/_colors.scss +++ /dev/null @@ -1,49 +0,0 @@ -// Here you can easily change your sites's color scheme. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. -// If you need a handy color picker try http://hslpicker.com - -$header-bg: #fff; -//$subtitle-color: lighten($header-bg, 58); -$nav-bg: #fff; -$nav-bg-front: none; -$nav-bg-back: #fff; -//$sidebar-bg: desaturate(#eceff5, 8); -//$sidebar-link-color: saturate(#526f9a, 10); -//$sidebar-link-color-hover: darken(#7ab662, 9); -$footer-bg: #fff; -$footer-bg-front: #fff; -$footer-bg-back: #fff; - -/* To use the light Solarized highlighting theme uncomment the following line */ -//$solarized: light; - -/* If you want to tweak the Solarized colors you can do that here */ -//$base03: #002b36; //darkest blue -//$base02: #073642; //dark blue -//$base01: #586e75; //darkest gray -//$base00: #657b83; //dark gray -//$base0: #839496; //medium gray -//$base1: #93a1a1; //medium light gray -//$base2: #eee8d5; //cream -//$base3: #fdf6e3; //white -//$solar-yellow: #b58900; -//$solar-orange: #cb4b16; -//$solar-red: #dc322f; -//$solar-magenta: #d33682; -//$solar-violet: #6c71c4; -//$solar-blue: #268bd2; -//$solar-cyan: #2aa198; -//$solar-green: #859900; - - -/* Non highlighted code colors */ -//$pre-bg: $base03; -//$pre-border: darken($base02, 5); -//$pre-color: $base1; - -$main-bg: #fff; -$page-bg: #fff; -$link-color: #268bd2; -$nav-color: $link-color; -$link-color-visited:darken($nav-color, 25); -$title-color: $link-color; diff --git a/sass/custom/_component_page.scss b/sass/custom/_component_page.scss deleted file mode 100644 index e3830dc2f8..0000000000 --- a/sass/custom/_component_page.scss +++ /dev/null @@ -1,259 +0,0 @@ -#components-page{ - .component-search{ - margin-bottom: 24px; - - input{ - width: 100%; - padding: 10px; - - background-color: #fefefe; - border-radius: 2px; - border: 1px solid; - border-color: #7c7c7c #c3c3c3 #ddd; - } - } -} - -@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 { - margin-bottom: 16px; - - .btn { - display: inline-block; - margin-right: 8px; - margin-bottom: 8px; - - &.current { - background-color: #3A5561; - background-image: linear-gradient(to bottom, #3A5561,#3F6B7D); - } - } - } - } -} - -@media only screen and (min-width: $desk-start) { - #components-page { - .filter-button-group { - .featured { - margin: 12px 0; - } - - .added_in_current_version { - margin-top: 12px; - } - - .added_two_versions_ago { - margin-bottom: 12px; - } - - .btn { - display: block; - background: 0; - color: black; - box-shadow: none; - text-shadow: none; - padding: 2px; - - &.current { - font-weight: bold; - } - } - } - } -} - -// styles for the cards -.hass-option-cards { - display: -ms-flexbox; - display: -webkit-box; - display: -webkit-flexbox; - display: -webkit-flex; - display: flex; - - flex-direction: row; - flex-wrap: wrap; - justify-content: flex-start; - align-items: flex-start; - margin: -4px; // grid trick, has to match option-card's margin - - p.note{ - width: 100%; - } - - .option-card { - flex: 0 0 auto; - width: 210px; - height: 142px; - display: inline-block; - background-color: #fefefe; - margin: 4px; - border-radius: 2px; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); - padding: 8px; - text-align: center; - text-decoration: none; - - .img-container { - height: 50px; - margin: 8px 0; - font: 0/0 a; - - &:before { /* create a full-height inline block pseudo=element */ - content: ' '; - display: inline-block; - vertical-align: middle; /* vertical alignment of the inline element */ - height: 100%; - } - - img { - max-width: 100%; - max-height: 50px; - box-shadow: none; - border: none; - vertical-align: middle; - } - } - - .title { - text-decoration: none; - font-size: 18px; - color: #000; - line-height: 1.3em; - height: 2.6em; - } - - .category { - font-size: 14px; - color: #AAA; - } - } - - // fade-in animation - &.show-items .option-card{ - opacity:0; - -webkit-animation:new-item-animation .2s linear forwards; - -o-animation:new-item-animation .2s linear forwards; - animation:new-item-animation .2s linear forwards; - } - - // fade-out animation - &.remove-items .option-card{ - -webkit-animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards; - -o-animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards; - animation:removed-item-animation .2s cubic-bezier(.55,-0.04,.91,.94) forwards - } -} - -// animations for fade-in and fade-out effects of option-cards -@keyframes new-item-animation { - from { - opacity:0; - -webkit-transform:scale(0); - -ms-transform:scale(0); - -o-transform:scale(0); - transform:scale(0) - } - to { - opacity:1; - -webkit-transform:scale(1); - -ms-transform:scale(1); - -o-transform:scale(1); - transform:scale(1) - } -} -@-webkit-keyframes new-item-animation { - from { - opacity:0; - -webkit-transform:scale(0); - transform:scale(0) - } - to { - opacity:1; - -webkit-transform:scale(1); - transform:scale(1) - } -} -@-o-keyframes new-item-animation { - from { - opacity:0; - -o-transform:scale(0); - transform:scale(0) - } - to { - opacity:1; - -o-transform:scale(1); - transform:scale(1) - } -} - -// space blocker animation -@keyframes openspace { - to { - height:auto - } -} - -@-webkit-keyframes openspace { - to { - height:auto - } -} -@-o-keyframes openspace { - to { - height:auto - } -} - -// removal animation -@keyframes removed-item-animation { - from { - opacity:1; - -webkit-transform:scale(1); - -ms-transform:scale(1); - -o-transform:scale(1); - transform:scale(1) - } - to { - -webkit-transform:scale(0); - -ms-transform:scale(0); - -o-transform:scale(0); - transform:scale(0); - opacity:0 - } -} -@-webkit-keyframes removed-item-animation { - from { - opacity:1; - -webkit-transform:scale(1); - transform:scale(1) - } - to { - -webkit-transform:scale(0); - transform:scale(0); - opacity:0 - } -} -@-o-keyframes removed-item-animation { - from { - opacity:1; - -o-transform:scale(1); - transform:scale(1) - } - to { - -o-transform:scale(0); - transform:scale(0); - opacity:0 - } -} diff --git a/sass/custom/_fonts.scss b/sass/custom/_fonts.scss deleted file mode 100644 index 0d51f6843a..0000000000 --- a/sass/custom/_fonts.scss +++ /dev/null @@ -1,10 +0,0 @@ -// Here you can easily change font faces which are used in your site. -// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites's. -// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html - -$sans: "Open Sans", sans-serif; -$serif: "Noto Serif", serif; -//$mono: "Courier", monospace; -$heading-font-family: $sans; -//$header-title-font-family: "Futura", sans-serif; -//$header-subtitle-font-family: "Futura", sans-serif; diff --git a/sass/custom/_layout.scss b/sass/custom/_layout.scss deleted file mode 100644 index 74c7de9d42..0000000000 --- a/sass/custom/_layout.scss +++ /dev/null @@ -1,21 +0,0 @@ -// Here you can easily change your sites's layout. -// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works. - -//$header-font-size: 1em; -//$header-padding-top: 1.5em; -//$header-padding-bottom: 1.5em; - -//$max-width: 1350px; -//$indented-lists: true; - -// Padding used for layout margins -//$pad-min: 18px; -//$pad-narrow: 25px; -//$pad-medium: 35px; -//$pad-wide: 55px; - -// Sidebar widths used in media queries -//$sidebar-width-medium: 240px; -//$sidebar-pad-medium: 15px; -//$sidebar-pad-wide: 20px; -//$sidebar-width-wide: 300px; diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss deleted file mode 100644 index c64bdb7da2..0000000000 --- a/sass/custom/_paulus.scss +++ /dev/null @@ -1,519 +0,0 @@ -@charset "UTF-8"; - -$primary-color: #049cdb; - -.site-header { - position: relative; - - .site-title { - font-weight: normal; - } -} - -.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; - - .lead { - margin-bottom: 16px; - } - - .hero-buttons a { - color: white; - text-transform: uppercase; - white-space: nowrap; - display: inline-block; - font-weight: 500; - } -} - -.material-card { - background-color: #fefefe; - border-radius: 2px; - box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12),0 3px 1px -2px rgba(0,0,0,0.2); - - h1 { - font-family: Roboto, Noto, sans-serif; - -webkit-font-smoothing: antialiased; - font-size: 24px; - font-weight: 400; - letter-spacing: -.012em; - line-height: 40px; - color: #212121; - padding: 20px 16px 12px; - text-transform: capitalize; - margin: 0; - } - - &.text { - padding: 16px; - - h1 { - padding: 4px 0px 12px; - } - } - - .links { - margin-top: 8px; - margin-left: -8px; - - a { - text-decoration: none; - font-weight: 500; - text-transform: uppercase; - display: inline-block; - margin: 0 8px; - } - } -} - -.frontpage { - .material-card { - margin-bottom: 24px; - } - - .current-version { - .release-date { - white-space: nowrap; - } - } - - .recent-posts { - .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%; - background-image: url(/images/merchandise/shirt-frontpage.png); - background-size: cover; - background-position: center; - text-decoration: none; - - .caption { - padding: 16px 12px 12px; - background-color: rgba(0, 0, 0, .54); - color: white; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - - .title { - font-size: 20px; - font-weight: 400; - } - - .subtitle { - font-size: 12px; - font-weight: initial; - } - } - } - - .supported-brands { - text-align: center; - - a { - text-decoration: none; - } - - img { - border: none !important; - box-shadow: none !important; - max-height: 50px; - max-width: 140px; - margin: 10px; - vertical-align: middle; - } - } - - .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/ - -h1:hover a.title-link, -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, -dt:hover a.title-link { - position: relative; - - &::before { - position: absolute; - top: 2px; - left: -25px; - padding-right: 40px; - font-family: "FontAwesome"; - font-size: 15px; - color: #999; - content: "\f0c1" - } -} - -.ha-title { - white-space: nowrap; - - img { - width: 40px; - } - - a > * { - vertical-align: middle; - } -} - -.usp { - ul { - text-align: left; - margin-left: 27px; - margin-top: -18px; - } - - .icon i { - border: none !important; - } -} - -.hero-buttons a { - margin: 0 30px 10px 0; - - &:last-child { - margin: 0; - } -} - -article.post, article.page, article.listing { - font-size: 1.125em; - line-height: 1.6; - - img, table { - border-radius: 3px; - box-shadow: rgba(0,0,0,0.06) 0 0 10px; - vertical-align: middle; - } - - img.no-shadow { - border: 0; - box-shadow: none; - } - - & > table, & > .entry-content > table { - background-color: #F3FCF5; - } - - p.img { - background-color: #FFF; - border-radius: 5px; - text-align: center; - padding-bottom: 3px; - font-size: .9rem; - box-shadow: rgba(0,0,0,0.06) 0 0 10px; - - img { - display: block; - box-shadow: none; - margin: 0 auto; - } - } - - li { - margin-bottom: 10px; - - & > p:last-child { - margin-bottom: 0; - } - - &:last-child { - margin-bottom: 0; - } - } - - a { - text-decoration: underline; - - &.btn { - text-decoration: none; - } - } - - h1 { - - } - - 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 { - text-transform: uppercase; - 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; - } -} - -p.note { - position: relative; - - background: #e7f2fa; - - padding: 40px 12px 6px 12px; - box-shadow: rgba(0,0,0,0.06) 0 0 10px; - - &::before { - font-family: "FontAwesome", sans-serif; - content: "\f05a" " Note " attr(data-title); - background-color: #6ab0de; - color: white; - font-weight: bold; - - border-top-left-radius: 3px; - border-top-right-radius: 3px; - padding: 6px 14px; - - line-height: 1.5em; - - position: absolute; - top: 0; - left: 0; - right: 0; - } - - &.warning { - background-color: #F7F9E1; - - &::before { - background-color: rgb(187, 185, 13);; - content: "\f071" " Warning " attr(data-title); - } - } - -} - -.copyright { - text-align: left; - - .company { - .title { - font-size: 1.5em; - } - - img { - vertical-align: middle; - } - - i { - font-size: 2em; - padding: 0 5px; - } - } - - ul { - margin: 0; - list-style: none; - } -} - -.aside-module { - .section { - margin-bottom: 10px; - } - - .brand-logo-container { - text-align: center; - height: 87px; - - img { - max-height: 67px; - } - } -} - -// Responsive YouTube embeds. -// https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php -.videoWrapper { - position: relative; - padding-bottom: 56.25%; /* 16:9 */ - height: 0; - margin-bottom: 25px; - background: #000; - - iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } -} - -.edit-github { - float: right; - margin-left: 8px; - margin-bottom: 8px; - font-size: .8em; -} - -ul.sidebar-menu { - a.active { - color: #000; - font-weight: bold; - } - - ul { - margin-left: 30px; - } -} - -a code { - color: $primary-color; -} - -twitterwidget { - margin-left: auto; - margin-right: auto; -} - -.text-center { - text-align: center; -} - -.aside-module { - 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 deleted file mode 100644 index fcf30d87d1..0000000000 --- a/sass/custom/_print.scss +++ /dev/null @@ -1,39 +0,0 @@ -@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/custom/_styles.scss b/sass/custom/_styles.scss deleted file mode 100644 index d35472805b..0000000000 --- a/sass/custom/_styles.scss +++ /dev/null @@ -1,142 +0,0 @@ -// This File is imported last, and will override other styles in the cascade -// Add styles here to make changes without digging in too much -html { - background:$page-bg; -} -body { - line-height: 1.8em; - font-size:1.1em; - max-width:1320px; - > div { - background: #fff !important; - border-bottom:2px solid #f2f2f2; - > div { - border-right:2px solid #f2f2f2; - background: #fff !important; - } - } - > nav { - border-bottom:2px solid #f2f2f2; - li+li { - border-left:2px solid #f2f2f2; - } - a { - font-family: $serif; - } - } - >header { - h1 a { - font-weight: bold; - } - } - - #content .blog-index article { - table { - font-size: 90%; - margin-bottom: 1.5em; - thead tr { - border-bottom: 1px solid $sidebar-border; - } - th { - font-weight: bold; - padding-right: 20px; - } - td { - padding: 0 20px 10px 0; - vertical-align: top; - } - } - - header { - h1 { - margin: 0; - a { text-decoration: none; - &:hover { - text-decoration: none; - color:$link-color; - } - } - } - } - } - #blog-archives { - h1 { - a { text-decoration: none; - &:hover { text-decoration:none; } } - } - } - aside.sidebar { - background:#fff; - border-left:2px solid #f2f2f2; - height:100%; - form .search { - padding: .3em .5em 0; - font-size: .85em; - font-family: $serif; - line-height: 1.1em; - width: 95%; - background-color: #fff; - border: 2px solid #f2f2f2; - color: #000; - } - input[type=text]:focus, textarea:focus { - box-shadow: 0 0 0 rgba(255,255,255,1); - } - } - - .toggle-sidebar { - display:none; - } -} -@media only screen and (max-width: 749px) { - aside.sidebar { - padding-top:15px; - padding-bottom:15px; - } -} -@media only screen and (min-width: 750px) { - aside.sidebar { - border-top:0px solid black; - } -} -@media only screen and (min-width:992px) { - body { - font-size: 1.3em; - } - .collapse-sidebar aside.sidebar { - background: #fff; - } -} -.meta { - font-family: $serif; -} -.sticky { - position: fixed; - width:100%; - left: 0; - top: 0; - z-index: 100; -} -::-webkit-input-placeholder { - color: $link-color; -} -:-moz-placeholder { /* Firefox 18- */ - color: $link-color; -} -::-moz-placeholder { /* Firefox 19+ */ - color: $link-color; -} -:-ms-input-placeholder { - color: $link-color; -} - -.highlight, html .gist .gist-file .gist-syntax .gist-highlight { - table { - margin: 0; - td { - padding: 0; - &.code { width: 100%; } - } - } - border: 1px solid $pre-border !important; -} diff --git a/sass/custom/_syntax.scss b/sass/custom/_syntax.scss deleted file mode 100644 index 2d100df285..0000000000 --- a/sass/custom/_syntax.scss +++ /dev/null @@ -1,83 +0,0 @@ -/* https://github.com/richleland/pygments-css/blob/master/github.css */ - -code.highlighter-rouge { - background: #fff; - font-size: .8em; - line-height: 1.5em; - color: #555; - border: 1px solid #ddd; - -webkit-border-radius: 0.4em; - -moz-border-radius: 0.4em; - border-radius: 0.4em; - padding: 0 .3em; -} - -.highlight { - background-color: #FFF; - border: 1px solid #CCC; - font-family: "Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; - color: #000; - padding: 1em 0px 1em 1em; - font-size: 15px; -} -.highlight .hll { background-color: #ffffcc } -.highlight .c { color: #999988; font-style: italic } /* Comment */ -.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ -.highlight .k { color: #000000; font-weight: bold } /* Keyword */ -.highlight .o { color: #000000; font-weight: bold } /* Operator */ -.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */ -.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ -.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ -.highlight .gr { color: #aa0000 } /* Generic.Error */ -.highlight .gh { color: #999999 } /* Generic.Heading */ -.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ -.highlight .go { color: #888888 } /* Generic.Output */ -.highlight .gp { color: #555555 } /* Generic.Prompt */ -.highlight .gs { font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ -.highlight .gt { color: #aa0000 } /* Generic.Traceback */ -.highlight .kc { color: #000000; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */ -.highlight .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ -.highlight .m { color: #009999 } /* Literal.Number */ -.highlight .s { color: #d01040 } /* Literal.String */ -.highlight .na { color: #008080 } /* Name.Attribute */ -.highlight .nb { color: #0086B3 } /* Name.Builtin */ -.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ -.highlight .no { color: #008080 } /* Name.Constant */ -.highlight .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */ -.highlight .ni { color: #800080 } /* Name.Entity */ -.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ -.highlight .nl { color: #990000; font-weight: bold } /* Name.Label */ -.highlight .nn { color: #555555 } /* Name.Namespace */ -.highlight .nt { color: #000080 } /* Name.Tag */ -.highlight .nv { color: #008080 } /* Name.Variable */ -.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */ -.highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mf { color: #009999 } /* Literal.Number.Float */ -.highlight .mh { color: #009999 } /* Literal.Number.Hex */ -.highlight .mi { color: #009999 } /* Literal.Number.Integer */ -.highlight .mo { color: #009999 } /* Literal.Number.Oct */ -.highlight .sb { color: #d01040 } /* Literal.String.Backtick */ -.highlight .sc { color: #d01040 } /* Literal.String.Char */ -.highlight .sd { color: #d01040 } /* Literal.String.Doc */ -.highlight .s2 { color: #d01040 } /* Literal.String.Double */ -.highlight .se { color: #d01040 } /* Literal.String.Escape */ -.highlight .sh { color: #d01040 } /* Literal.String.Heredoc */ -.highlight .si { color: #d01040 } /* Literal.String.Interpol */ -.highlight .sx { color: #d01040 } /* Literal.String.Other */ -.highlight .sr { color: #009926 } /* Literal.String.Regex */ -.highlight .s1 { color: #d01040 } /* Literal.String.Single */ -.highlight .ss { color: #990073 } /* Literal.String.Symbol */ -.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ -.highlight .vc { color: #008080 } /* Name.Variable.Class */ -.highlight .vg { color: #008080 } /* Name.Variable.Global */ -.highlight .vi { color: #008080 } /* Name.Variable.Instance */ -.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ diff --git a/sass/fontawesome/_core.scss b/sass/fontawesome/_core.scss deleted file mode 100644 index 0189c73dfb..0000000000 --- a/sass/fontawesome/_core.scss +++ /dev/null @@ -1,129 +0,0 @@ -/* FONT AWESOME CORE - * -------------------------- */ - -[class^="icon-"], -[class*=" icon-"] { - @include icon-FontAwesome(); -} - -[class^="icon-"]:before, -[class*=" icon-"]:before { - text-decoration: inherit; - display: inline-block; - speak: none; -} - -/* makes the font 33% larger relative to the icon container */ -.icon-large:before { - vertical-align: -10%; - font-size: (4em/3); -} - -/* makes sure icons active on rollover in links */ -a { - [class^="icon-"], - [class*=" icon-"] { - display: inline; - } -} - -/* increased font size for icon-large */ -[class^="icon-"], -[class*=" icon-"] { - &.icon-fixed-width { - display: inline-block; - width: (16em/14); - text-align: right; - padding-right: (4em/14); - &.icon-large { - width: (20em/14); - } - } -} - -.icons-ul { - margin-left: $icons-li-width; - list-style-type: none; - - > li { position: relative; } - - .icon-li { - position: absolute; - left: -$icons-li-width; - width: $icons-li-width; - text-align: center; - line-height: inherit; - } -} - -// allows usage of the hide class directly on font awesome icons -[class^="icon-"], -[class*=" icon-"] { - &.hide { - display: none; - } -} - -.icon-muted { color: $iconMuted; } -.icon-light { color: $iconLight; } -.icon-dark { color: $iconDark; } - -// Icon Borders -// ------------------------- - -.icon-border { - border: solid 1px $borderColor; - padding: .2em .25em .15em; - @include border-radius(3px); -} - -// Icon Sizes -// ------------------------- - -.icon-2x { - font-size: 2em; - &.icon-border { - border-width: 2px; - @include border-radius(4px); - } -} -.icon-3x { - font-size: 3em; - &.icon-border { - border-width: 3px; - @include border-radius(5px); - } -} -.icon-4x { - font-size: 4em; - &.icon-border { - border-width: 4px; - @include border-radius(6px); - } -} - -.icon-5x { - font-size: 5em; - &.icon-border { - border-width: 5px; - @include border-radius(7px); - } -} - - -// Floats & Margins -// ------------------------- - -// Quick floats -.pull-right { float: right; } -.pull-left { float: left; } - -[class^="icon-"], -[class*=" icon-"] { - &.pull-left { - margin-right: .3em; - } - &.pull-right { - margin-left: .3em; - } -} diff --git a/sass/fontawesome/_extras.scss b/sass/fontawesome/_extras.scss deleted file mode 100644 index 9a25845d8d..0000000000 --- a/sass/fontawesome/_extras.scss +++ /dev/null @@ -1,93 +0,0 @@ -/* EXTRAS - * -------------------------- */ - -/* Stacked and layered icon */ -@include icon-stack(); - -/* Animated rotating icon */ -.icon-spin { - display: inline-block; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - -webkit-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} - -/* Prevent stack and spinners from being taken inline when inside a link */ -a .icon-stack, -a .icon-spin { - display: inline-block; - text-decoration: none; -} - -@-moz-keyframes spin { - 0% { -moz-transform: rotate(0deg); } - 100% { -moz-transform: rotate(359deg); } -} -@-webkit-keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(359deg); } -} -@-o-keyframes spin { - 0% { -o-transform: rotate(0deg); } - 100% { -o-transform: rotate(359deg); } -} -@-ms-keyframes spin { - 0% { -ms-transform: rotate(0deg); } - 100% { -ms-transform: rotate(359deg); } -} -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(359deg); } -} - -/* Icon rotations and mirroring */ -.icon-rotate-90:before { - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.icon-rotate-180:before { - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); -} - -.icon-rotate-270:before { - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.icon-flip-horizontal:before { - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.icon-flip-vertical:before { - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); -} - -/* ensure rotation occurs inside anchor tags */ -a { - .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { - &:before { display: inline-block; } - } -} diff --git a/sass/fontawesome/_font-awesome.scss b/sass/fontawesome/_font-awesome.scss deleted file mode 100644 index 379dfd00f0..0000000000 --- a/sass/fontawesome/_font-awesome.scss +++ /dev/null @@ -1,32 +0,0 @@ -/*! - * Font Awesome 3.2.1 - * the iconic font designed for Bootstrap - * ------------------------------------------------------------------------------ - * The full suite of pictographic icons, examples, and documentation can be - * found at http://fontawesome.io. Stay up to date on Twitter at - * http://twitter.com/fontawesome. - * - * License - * ------------------------------------------------------------------------------ - * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL - * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html - * - Font Awesome documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ - * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fontawesome.io" - * - * Author - Dave Gandy - * ------------------------------------------------------------------------------ - * Email: dave@fontawesome.io - * Twitter: http://twitter.com/davegandy - * Work: Lead Product Designer @ Kyruus - http://kyruus.com - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "extras"; -@import "icons"; diff --git a/sass/fontawesome/_icons.scss b/sass/fontawesome/_icons.scss deleted file mode 100644 index eefda0c9ef..0000000000 --- a/sass/fontawesome/_icons.scss +++ /dev/null @@ -1,381 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - * readers do not read off random characters that represent icons */ - -.icon-glass:before { content: $glass; } -.icon-music:before { content: $music; } -.icon-search:before { content: $search; } -.icon-envelope-alt:before { content: $envelope-alt; } -.icon-heart:before { content: $heart; } -.icon-star:before { content: $star; } -.icon-star-empty:before { content: $star-empty; } -.icon-user:before { content: $user; } -.icon-film:before { content: $film; } -.icon-th-large:before { content: $th-large; } -.icon-th:before { content: $th; } -.icon-th-list:before { content: $th-list; } -.icon-ok:before { content: $ok; } -.icon-remove:before { content: $remove; } -.icon-zoom-in:before { content: $zoom-in; } -.icon-zoom-out:before { content: $zoom-out; } -.icon-power-off:before, -.icon-off:before { content: $off; } -.icon-signal:before { content: $signal; } -.icon-gear:before, -.icon-cog:before { content: $cog; } -.icon-trash:before { content: $trash; } -.icon-home:before { content: $home; } -.icon-file-alt:before { content: $file-alt; } -.icon-time:before { content: $time; } -.icon-road:before { content: $road; } -.icon-download-alt:before { content: $download-alt; } -.icon-download:before { content: $download; } -.icon-upload:before { content: $upload; } -.icon-inbox:before { content: $inbox; } -.icon-play-circle:before { content: $play-circle; } -.icon-rotate-right:before, -.icon-repeat:before { content: $repeat; } -.icon-refresh:before { content: $refresh; } -.icon-list-alt:before { content: $list-alt; } -.icon-lock:before { content: $lock; } -.icon-flag:before { content: $flag; } -.icon-headphones:before { content: $headphones; } -.icon-volume-off:before { content: $volume-off; } -.icon-volume-down:before { content: $volume-down; } -.icon-volume-up:before { content: $volume-up; } -.icon-qrcode:before { content: $qrcode; } -.icon-barcode:before { content: $barcode; } -.icon-tag:before { content: $tag; } -.icon-tags:before { content: $tags; } -.icon-book:before { content: $book; } -.icon-bookmark:before { content: $bookmark; } -.icon-print:before { content: $print; } -.icon-camera:before { content: $camera; } -.icon-font:before { content: $font; } -.icon-bold:before { content: $bold; } -.icon-italic:before { content: $italic; } -.icon-text-height:before { content: $text-height; } -.icon-text-width:before { content: $text-width; } -.icon-align-left:before { content: $align-left; } -.icon-align-center:before { content: $align-center; } -.icon-align-right:before { content: $align-right; } -.icon-align-justify:before { content: $align-justify; } -.icon-list:before { content: $list; } -.icon-indent-left:before { content: $indent-left; } -.icon-indent-right:before { content: $indent-right; } -.icon-facetime-video:before { content: $facetime-video; } -.icon-picture:before { content: $picture; } -.icon-pencil:before { content: $pencil; } -.icon-map-marker:before { content: $map-marker; } -.icon-adjust:before { content: $adjust; } -.icon-tint:before { content: $tint; } -.icon-edit:before { content: $edit; } -.icon-share:before { content: $share; } -.icon-check:before { content: $check; } -.icon-move:before { content: $move; } -.icon-step-backward:before { content: $step-backward; } -.icon-fast-backward:before { content: $fast-backward; } -.icon-backward:before { content: $backward; } -.icon-play:before { content: $play; } -.icon-pause:before { content: $pause; } -.icon-stop:before { content: $stop; } -.icon-forward:before { content: $forward; } -.icon-fast-forward:before { content: $fast-forward; } -.icon-step-forward:before { content: $step-forward; } -.icon-eject:before { content: $eject; } -.icon-chevron-left:before { content: $chevron-left; } -.icon-chevron-right:before { content: $chevron-right; } -.icon-plus-sign:before { content: $plus-sign; } -.icon-minus-sign:before { content: $minus-sign; } -.icon-remove-sign:before { content: $remove-sign; } -.icon-ok-sign:before { content: $ok-sign; } -.icon-question-sign:before { content: $question-sign; } -.icon-info-sign:before { content: $info-sign; } -.icon-screenshot:before { content: $screenshot; } -.icon-remove-circle:before { content: $remove-circle; } -.icon-ok-circle:before { content: $ok-circle; } -.icon-ban-circle:before { content: $ban-circle; } -.icon-arrow-left:before { content: $arrow-left; } -.icon-arrow-right:before { content: $arrow-right; } -.icon-arrow-up:before { content: $arrow-up; } -.icon-arrow-down:before { content: $arrow-down; } -.icon-mail-forward:before, -.icon-share-alt:before { content: $share-alt; } -.icon-resize-full:before { content: $resize-full; } -.icon-resize-small:before { content: $resize-small; } -.icon-plus:before { content: $plus; } -.icon-minus:before { content: $minus; } -.icon-asterisk:before { content: $asterisk; } -.icon-exclamation-sign:before { content: $exclamation-sign; } -.icon-gift:before { content: $gift; } -.icon-leaf:before { content: $leaf; } -.icon-fire:before { content: $fire; } -.icon-eye-open:before { content: $eye-open; } -.icon-eye-close:before { content: $eye-close; } -.icon-warning-sign:before { content: $warning-sign; } -.icon-plane:before { content: $plane; } -.icon-calendar:before { content: $calendar; } -.icon-random:before { content: $random; } -.icon-comment:before { content: $comment; } -.icon-magnet:before { content: $magnet; } -.icon-chevron-up:before { content: $chevron-up; } -.icon-chevron-down:before { content: $chevron-down; } -.icon-retweet:before { content: $retweet; } -.icon-shopping-cart:before { content: $shopping-cart; } -.icon-folder-close:before { content: $folder-close; } -.icon-folder-open:before { content: $folder-open; } -.icon-resize-vertical:before { content: $resize-vertical; } -.icon-resize-horizontal:before { content: $resize-horizontal; } -.icon-bar-chart:before { content: $bar-chart; } -.icon-twitter-sign:before { content: $twitter-sign; } -.icon-facebook-sign:before { content: $facebook-sign; } -.icon-camera-retro:before { content: $camera-retro; } -.icon-key:before { content: $key; } -.icon-gears:before, -.icon-cogs:before { content: $cogs; } -.icon-comments:before { content: $comments; } -.icon-thumbs-up-alt:before { content: $thumbs-up-alt; } -.icon-thumbs-down-alt:before { content: $thumbs-down-alt; } -.icon-star-half:before { content: $star-half; } -.icon-heart-empty:before { content: $heart-empty; } -.icon-signout:before { content: $signout; } -.icon-linkedin-sign:before { content: $linkedin-sign; } -.icon-pushpin:before { content: $pushpin; } -.icon-external-link:before { content: $external-link; } -.icon-signin:before { content: $signin; } -.icon-trophy:before { content: $trophy; } -.icon-github-sign:before { content: $github-sign; } -.icon-upload-alt:before { content: $upload-alt; } -.icon-lemon:before { content: $lemon; } -.icon-phone:before { content: $phone; } -.icon-unchecked:before, -.icon-check-empty:before { content: $check-empty; } -.icon-bookmark-empty:before { content: $bookmark-empty; } -.icon-phone-sign:before { content: $phone-sign; } -.icon-twitter:before { content: $twitter; } -.icon-facebook:before { content: $facebook; } -.icon-github:before { content: $github; } -.icon-unlock:before { content: $unlock; } -.icon-credit-card:before { content: $credit-card; } -.icon-rss:before { content: $rss; } -.icon-hdd:before { content: $hdd; } -.icon-bullhorn:before { content: $bullhorn; } -.icon-bell:before { content: $bell; } -.icon-certificate:before { content: $certificate; } -.icon-hand-right:before { content: $hand-right; } -.icon-hand-left:before { content: $hand-left; } -.icon-hand-up:before { content: $hand-up; } -.icon-hand-down:before { content: $hand-down; } -.icon-circle-arrow-left:before { content: $circle-arrow-left; } -.icon-circle-arrow-right:before { content: $circle-arrow-right; } -.icon-circle-arrow-up:before { content: $circle-arrow-up; } -.icon-circle-arrow-down:before { content: $circle-arrow-down; } -.icon-globe:before { content: $globe; } -.icon-wrench:before { content: $wrench; } -.icon-tasks:before { content: $tasks; } -.icon-filter:before { content: $filter; } -.icon-briefcase:before { content: $briefcase; } -.icon-fullscreen:before { content: $fullscreen; } -.icon-group:before { content: $group; } -.icon-link:before { content: $link; } -.icon-cloud:before { content: $cloud; } -.icon-beaker:before { content: $beaker; } -.icon-cut:before { content: $cut; } -.icon-copy:before { content: $copy; } -.icon-paperclip:before, -.icon-paper-clip:before { content: $paper-clip; } -.icon-save:before { content: $save; } -.icon-sign-blank:before { content: $sign-blank; } -.icon-reorder:before { content: $reorder; } -.icon-list-ul:before { content: $list-ul; } -.icon-list-ol:before { content: $list-ol; } -.icon-strikethrough:before { content: $strikethrough; } -.icon-underline:before { content: $underline; } -.icon-table:before { content: $table; } -.icon-magic:before { content: $magic; } -.icon-truck:before { content: $truck; } -.icon-pinterest:before { content: $pinterest; } -.icon-pinterest-sign:before { content: $pinterest-sign; } -.icon-google-plus-sign:before { content: $google-plus-sign; } -.icon-google-plus:before { content: $google-plus; } -.icon-money:before { content: $money; } -.icon-caret-down:before { content: $caret-down; } -.icon-caret-up:before { content: $caret-up; } -.icon-caret-left:before { content: $caret-left; } -.icon-caret-right:before { content: $caret-right; } -.icon-columns:before { content: $columns; } -.icon-sort:before { content: $sort; } -.icon-sort-down:before { content: $sort-down; } -.icon-sort-up:before { content: $sort-up; } -.icon-envelope:before { content: $envelope; } -.icon-linkedin:before { content: $linkedin; } -.icon-rotate-left:before, -.icon-undo:before { content: $undo; } -.icon-legal:before { content: $legal; } -.icon-dashboard:before { content: $dashboard; } -.icon-comment-alt:before { content: $comment-alt; } -.icon-comments-alt:before { content: $comments-alt; } -.icon-bolt:before { content: $bolt; } -.icon-sitemap:before { content: $sitemap; } -.icon-umbrella:before { content: $umbrella; } -.icon-paste:before { content: $paste; } -.icon-lightbulb:before { content: $lightbulb; } -.icon-exchange:before { content: $exchange; } -.icon-cloud-download:before { content: $cloud-download; } -.icon-cloud-upload:before { content: $cloud-upload; } -.icon-user-md:before { content: $user-md; } -.icon-stethoscope:before { content: $stethoscope; } -.icon-suitcase:before { content: $suitcase; } -.icon-bell-alt:before { content: $bell-alt; } -.icon-coffee:before { content: $coffee; } -.icon-food:before { content: $food; } -.icon-file-text-alt:before { content: $file-text-alt; } -.icon-building:before { content: $building; } -.icon-hospital:before { content: $hospital; } -.icon-ambulance:before { content: $ambulance; } -.icon-medkit:before { content: $medkit; } -.icon-fighter-jet:before { content: $fighter-jet; } -.icon-beer:before { content: $beer; } -.icon-h-sign:before { content: $h-sign; } -.icon-plus-sign-alt:before { content: $plus-sign-alt; } -.icon-double-angle-left:before { content: $double-angle-left; } -.icon-double-angle-right:before { content: $double-angle-right; } -.icon-double-angle-up:before { content: $double-angle-up; } -.icon-double-angle-down:before { content: $double-angle-down; } -.icon-angle-left:before { content: $angle-left; } -.icon-angle-right:before { content: $angle-right; } -.icon-angle-up:before { content: $angle-up; } -.icon-angle-down:before { content: $angle-down; } -.icon-desktop:before { content: $desktop; } -.icon-laptop:before { content: $laptop; } -.icon-tablet:before { content: $tablet; } -.icon-mobile-phone:before { content: $mobile-phone; } -.icon-circle-blank:before { content: $circle-blank; } -.icon-quote-left:before { content: $quote-left; } -.icon-quote-right:before { content: $quote-right; } -.icon-spinner:before { content: $spinner; } -.icon-circle:before { content: $circle; } -.icon-mail-reply:before, -.icon-reply:before { content: $reply; } -.icon-github-alt:before { content: $github-alt; } -.icon-folder-close-alt:before { content: $folder-close-alt; } -.icon-folder-open-alt:before { content: $folder-open-alt; } -.icon-expand-alt:before { content: $expand-alt; } -.icon-collapse-alt:before { content: $collapse-alt; } -.icon-smile:before { content: $smile; } -.icon-frown:before { content: $frown; } -.icon-meh:before { content: $meh; } -.icon-gamepad:before { content: $gamepad; } -.icon-keyboard:before { content: $keyboard; } -.icon-flag-alt:before { content: $flag-alt; } -.icon-flag-checkered:before { content: $flag-checkered; } -.icon-terminal:before { content: $terminal; } -.icon-code:before { content: $code; } -.icon-reply-all:before { content: $reply-all; } -.icon-mail-reply-all:before { content: $mail-reply-all; } -.icon-star-half-full:before, -.icon-star-half-empty:before { content: $star-half-empty; } -.icon-location-arrow:before { content: $location-arrow; } -.icon-crop:before { content: $crop; } -.icon-code-fork:before { content: $code-fork; } -.icon-unlink:before { content: $unlink; } -.icon-question:before { content: $question; } -.icon-info:before { content: $info; } -.icon-exclamation:before { content: $exclamation; } -.icon-superscript:before { content: $superscript; } -.icon-subscript:before { content: $subscript; } -.icon-eraser:before { content: $eraser; } -.icon-puzzle-piece:before { content: $puzzle-piece; } -.icon-microphone:before { content: $microphone; } -.icon-microphone-off:before { content: $microphone-off; } -.icon-shield:before { content: $shield; } -.icon-calendar-empty:before { content: $calendar-empty; } -.icon-fire-extinguisher:before { content: $fire-extinguisher; } -.icon-rocket:before { content: $rocket; } -.icon-maxcdn:before { content: $maxcdn; } -.icon-chevron-sign-left:before { content: $chevron-sign-left; } -.icon-chevron-sign-right:before { content: $chevron-sign-right; } -.icon-chevron-sign-up:before { content: $chevron-sign-up; } -.icon-chevron-sign-down:before { content: $chevron-sign-down; } -.icon-html5:before { content: $html5; } -.icon-css3:before { content: $css3; } -.icon-anchor:before { content: $anchor; } -.icon-unlock-alt:before { content: $unlock-alt; } -.icon-bullseye:before { content: $bullseye; } -.icon-ellipsis-horizontal:before { content: $ellipsis-horizontal; } -.icon-ellipsis-vertical:before { content: $ellipsis-vertical; } -.icon-rss-sign:before { content: $rss-sign; } -.icon-play-sign:before { content: $play-sign; } -.icon-ticket:before { content: $ticket; } -.icon-minus-sign-alt:before { content: $minus-sign-alt; } -.icon-check-minus:before { content: $check-minus; } -.icon-level-up:before { content: $level-up; } -.icon-level-down:before { content: $level-down; } -.icon-check-sign:before { content: $check-sign; } -.icon-edit-sign:before { content: $edit-sign; } -.icon-external-link-sign:before { content: $external-link-sign; } -.icon-share-sign:before { content: $share-sign; } -.icon-compass:before { content: $compass; } -.icon-collapse:before { content: $collapse; } -.icon-collapse-top:before { content: $collapse-top; } -.icon-expand:before { content: $expand; } -.icon-euro:before, -.icon-eur:before { content: $eur; } -.icon-gbp:before { content: $gbp; } -.icon-dollar:before, -.icon-usd:before { content: $usd; } -.icon-rupee:before, -.icon-inr:before { content: $inr; } -.icon-yen:before, -.icon-jpy:before { content: $jpy; } -.icon-renminbi:before, -.icon-cny:before { content: $cny; } -.icon-won:before, -.icon-krw:before { content: $krw; } -.icon-bitcoin:before, -.icon-btc:before { content: $btc; } -.icon-file:before { content: $file; } -.icon-file-text:before { content: $file-text; } -.icon-sort-by-alphabet:before { content: $sort-by-alphabet; } -.icon-sort-by-alphabet-alt:before { content: $sort-by-alphabet-alt; } -.icon-sort-by-attributes:before { content: $sort-by-attributes; } -.icon-sort-by-attributes-alt:before { content: $sort-by-attributes-alt; } -.icon-sort-by-order:before { content: $sort-by-order; } -.icon-sort-by-order-alt:before { content: $sort-by-order-alt; } -.icon-thumbs-up:before { content: $thumbs-up; } -.icon-thumbs-down:before { content: $thumbs-down; } -.icon-youtube-sign:before { content: $youtube-sign; } -.icon-youtube:before { content: $youtube; } -.icon-xing:before { content: $xing; } -.icon-xing-sign:before { content: $xing-sign; } -.icon-youtube-play:before { content: $youtube-play; } -.icon-dropbox:before { content: $dropbox; } -.icon-stackexchange:before { content: $stackexchange; } -.icon-instagram:before { content: $instagram; } -.icon-flickr:before { content: $flickr; } -.icon-adn:before { content: $adn; } -.icon-bitbucket:before { content: $bitbucket; } -.icon-bitbucket-sign:before { content: $bitbucket-sign; } -.icon-tumblr:before { content: $tumblr; } -.icon-tumblr-sign:before { content: $tumblr-sign; } -.icon-long-arrow-down:before { content: $long-arrow-down; } -.icon-long-arrow-up:before { content: $long-arrow-up; } -.icon-long-arrow-left:before { content: $long-arrow-left; } -.icon-long-arrow-right:before { content: $long-arrow-right; } -.icon-apple:before { content: $apple; } -.icon-windows:before { content: $windows; } -.icon-android:before { content: $android; } -.icon-linux:before { content: $linux; } -.icon-dribbble:before { content: $dribbble; } -.icon-skype:before { content: $skype; } -.icon-foursquare:before { content: $foursquare; } -.icon-trello:before { content: $trello; } -.icon-female:before { content: $female; } -.icon-male:before { content: $male; } -.icon-gittip:before { content: $gittip; } -.icon-sun:before { content: $sun; } -.icon-moon:before { content: $moon; } -.icon-archive:before { content: $archive; } -.icon-bug:before { content: $bug; } -.icon-vk:before { content: $vk; } -.icon-weibo:before { content: $weibo; } -.icon-renren:before { content: $renren; } diff --git a/sass/fontawesome/_mixins.scss b/sass/fontawesome/_mixins.scss deleted file mode 100644 index ca9c5931b3..0000000000 --- a/sass/fontawesome/_mixins.scss +++ /dev/null @@ -1,48 +0,0 @@ -// Mixins -// -------------------------- - -@mixin icon($icon) { - @include icon-FontAwesome(); - content: $icon; -} - -@mixin icon-FontAwesome() { - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - text-decoration: inherit; - -webkit-font-smoothing: antialiased; - *margin-right: .3em; // fixes ie7 issues -} - -@mixin border-radius($radius) { - -webkit-border-radius: $radius; - -moz-border-radius: $radius; - border-radius: $radius; -} - -@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) { - .icon-stack { - position: relative; - display: inline-block; - width: $width; - height: $height; - line-height: $width; - vertical-align: -35%; - [class^="icon-"], - [class*=" icon-"] { - display: block; - text-align: center; - position: absolute; - width: 100%; - height: 100%; - font-size: $top-font-size; - line-height: inherit; - *line-height: $height; - } - .icon-stack-base { - font-size: $base-font-size; - *line-height: #{$height / $base-font-size}em; - } - } -} diff --git a/sass/fontawesome/_path.scss b/sass/fontawesome/_path.scss deleted file mode 100644 index bb3f36b70b..0000000000 --- a/sass/fontawesome/_path.scss +++ /dev/null @@ -1,14 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}'); - src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'), - url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'), - url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'), - url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg'); -// src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/sass/fontawesome/_variables.scss b/sass/fontawesome/_variables.scss deleted file mode 100644 index 7d6bbc5b1d..0000000000 --- a/sass/fontawesome/_variables.scss +++ /dev/null @@ -1,734 +0,0 @@ -// Variables -// -------------------------- - -$FontAwesomePath: "../font" !default; -$FontAwesomeVersion: "3.2.1" !default; -$borderColor: #eeeeee !default; -$iconMuted: #eeeeee !default; -$iconLight: white !default; -$iconDark: #333333 !default; -$icons-li-width: (30em/14); - - -$glass: "\f000"; - -$music: "\f001"; - -$search: "\f002"; - -$envelope-alt: "\f003"; - -$heart: "\f004"; - -$star: "\f005"; - -$star-empty: "\f006"; - -$user: "\f007"; - -$film: "\f008"; - -$th-large: "\f009"; - -$th: "\f00a"; - -$th-list: "\f00b"; - -$ok: "\f00c"; - -$remove: "\f00d"; - -$zoom-in: "\f00e"; - -$zoom-out: "\f010"; - -$off: "\f011"; - -$signal: "\f012"; - -$cog: "\f013"; - -$trash: "\f014"; - -$home: "\f015"; - -$file-alt: "\f016"; - -$time: "\f017"; - -$road: "\f018"; - -$download-alt: "\f019"; - -$download: "\f01a"; - -$upload: "\f01b"; - -$inbox: "\f01c"; - -$play-circle: "\f01d"; - -$repeat: "\f01e"; - -$refresh: "\f021"; - -$list-alt: "\f022"; - -$lock: "\f023"; - -$flag: "\f024"; - -$headphones: "\f025"; - -$volume-off: "\f026"; - -$volume-down: "\f027"; - -$volume-up: "\f028"; - -$qrcode: "\f029"; - -$barcode: "\f02a"; - -$tag: "\f02b"; - -$tags: "\f02c"; - -$book: "\f02d"; - -$bookmark: "\f02e"; - -$print: "\f02f"; - -$camera: "\f030"; - -$font: "\f031"; - -$bold: "\f032"; - -$italic: "\f033"; - -$text-height: "\f034"; - -$text-width: "\f035"; - -$align-left: "\f036"; - -$align-center: "\f037"; - -$align-right: "\f038"; - -$align-justify: "\f039"; - -$list: "\f03a"; - -$indent-left: "\f03b"; - -$indent-right: "\f03c"; - -$facetime-video: "\f03d"; - -$picture: "\f03e"; - -$pencil: "\f040"; - -$map-marker: "\f041"; - -$adjust: "\f042"; - -$tint: "\f043"; - -$edit: "\f044"; - -$share: "\f045"; - -$check: "\f046"; - -$move: "\f047"; - -$step-backward: "\f048"; - -$fast-backward: "\f049"; - -$backward: "\f04a"; - -$play: "\f04b"; - -$pause: "\f04c"; - -$stop: "\f04d"; - -$forward: "\f04e"; - -$fast-forward: "\f050"; - -$step-forward: "\f051"; - -$eject: "\f052"; - -$chevron-left: "\f053"; - -$chevron-right: "\f054"; - -$plus-sign: "\f055"; - -$minus-sign: "\f056"; - -$remove-sign: "\f057"; - -$ok-sign: "\f058"; - -$question-sign: "\f059"; - -$info-sign: "\f05a"; - -$screenshot: "\f05b"; - -$remove-circle: "\f05c"; - -$ok-circle: "\f05d"; - -$ban-circle: "\f05e"; - -$arrow-left: "\f060"; - -$arrow-right: "\f061"; - -$arrow-up: "\f062"; - -$arrow-down: "\f063"; - -$share-alt: "\f064"; - -$resize-full: "\f065"; - -$resize-small: "\f066"; - -$plus: "\f067"; - -$minus: "\f068"; - -$asterisk: "\f069"; - -$exclamation-sign: "\f06a"; - -$gift: "\f06b"; - -$leaf: "\f06c"; - -$fire: "\f06d"; - -$eye-open: "\f06e"; - -$eye-close: "\f070"; - -$warning-sign: "\f071"; - -$plane: "\f072"; - -$calendar: "\f073"; - -$random: "\f074"; - -$comment: "\f075"; - -$magnet: "\f076"; - -$chevron-up: "\f077"; - -$chevron-down: "\f078"; - -$retweet: "\f079"; - -$shopping-cart: "\f07a"; - -$folder-close: "\f07b"; - -$folder-open: "\f07c"; - -$resize-vertical: "\f07d"; - -$resize-horizontal: "\f07e"; - -$bar-chart: "\f080"; - -$twitter-sign: "\f081"; - -$facebook-sign: "\f082"; - -$camera-retro: "\f083"; - -$key: "\f084"; - -$cogs: "\f085"; - -$comments: "\f086"; - -$thumbs-up-alt: "\f087"; - -$thumbs-down-alt: "\f088"; - -$star-half: "\f089"; - -$heart-empty: "\f08a"; - -$signout: "\f08b"; - -$linkedin-sign: "\f08c"; - -$pushpin: "\f08d"; - -$external-link: "\f08e"; - -$signin: "\f090"; - -$trophy: "\f091"; - -$github-sign: "\f092"; - -$upload-alt: "\f093"; - -$lemon: "\f094"; - -$phone: "\f095"; - -$check-empty: "\f096"; - -$bookmark-empty: "\f097"; - -$phone-sign: "\f098"; - -$twitter: "\f099"; - -$facebook: "\f09a"; - -$github: "\f09b"; - -$unlock: "\f09c"; - -$credit-card: "\f09d"; - -$rss: "\f09e"; - -$hdd: "\f0a0"; - -$bullhorn: "\f0a1"; - -$bell: "\f0a2"; - -$certificate: "\f0a3"; - -$hand-right: "\f0a4"; - -$hand-left: "\f0a5"; - -$hand-up: "\f0a6"; - -$hand-down: "\f0a7"; - -$circle-arrow-left: "\f0a8"; - -$circle-arrow-right: "\f0a9"; - -$circle-arrow-up: "\f0aa"; - -$circle-arrow-down: "\f0ab"; - -$globe: "\f0ac"; - -$wrench: "\f0ad"; - -$tasks: "\f0ae"; - -$filter: "\f0b0"; - -$briefcase: "\f0b1"; - -$fullscreen: "\f0b2"; - -$group: "\f0c0"; - -$link: "\f0c1"; - -$cloud: "\f0c2"; - -$beaker: "\f0c3"; - -$cut: "\f0c4"; - -$copy: "\f0c5"; - -$paper-clip: "\f0c6"; - -$save: "\f0c7"; - -$sign-blank: "\f0c8"; - -$reorder: "\f0c9"; - -$list-ul: "\f0ca"; - -$list-ol: "\f0cb"; - -$strikethrough: "\f0cc"; - -$underline: "\f0cd"; - -$table: "\f0ce"; - -$magic: "\f0d0"; - -$truck: "\f0d1"; - -$pinterest: "\f0d2"; - -$pinterest-sign: "\f0d3"; - -$google-plus-sign: "\f0d4"; - -$google-plus: "\f0d5"; - -$money: "\f0d6"; - -$caret-down: "\f0d7"; - -$caret-up: "\f0d8"; - -$caret-left: "\f0d9"; - -$caret-right: "\f0da"; - -$columns: "\f0db"; - -$sort: "\f0dc"; - -$sort-down: "\f0dd"; - -$sort-up: "\f0de"; - -$envelope: "\f0e0"; - -$linkedin: "\f0e1"; - -$undo: "\f0e2"; - -$legal: "\f0e3"; - -$dashboard: "\f0e4"; - -$comment-alt: "\f0e5"; - -$comments-alt: "\f0e6"; - -$bolt: "\f0e7"; - -$sitemap: "\f0e8"; - -$umbrella: "\f0e9"; - -$paste: "\f0ea"; - -$lightbulb: "\f0eb"; - -$exchange: "\f0ec"; - -$cloud-download: "\f0ed"; - -$cloud-upload: "\f0ee"; - -$user-md: "\f0f0"; - -$stethoscope: "\f0f1"; - -$suitcase: "\f0f2"; - -$bell-alt: "\f0f3"; - -$coffee: "\f0f4"; - -$food: "\f0f5"; - -$file-text-alt: "\f0f6"; - -$building: "\f0f7"; - -$hospital: "\f0f8"; - -$ambulance: "\f0f9"; - -$medkit: "\f0fa"; - -$fighter-jet: "\f0fb"; - -$beer: "\f0fc"; - -$h-sign: "\f0fd"; - -$plus-sign-alt: "\f0fe"; - -$double-angle-left: "\f100"; - -$double-angle-right: "\f101"; - -$double-angle-up: "\f102"; - -$double-angle-down: "\f103"; - -$angle-left: "\f104"; - -$angle-right: "\f105"; - -$angle-up: "\f106"; - -$angle-down: "\f107"; - -$desktop: "\f108"; - -$laptop: "\f109"; - -$tablet: "\f10a"; - -$mobile-phone: "\f10b"; - -$circle-blank: "\f10c"; - -$quote-left: "\f10d"; - -$quote-right: "\f10e"; - -$spinner: "\f110"; - -$circle: "\f111"; - -$reply: "\f112"; - -$github-alt: "\f113"; - -$folder-close-alt: "\f114"; - -$folder-open-alt: "\f115"; - -$expand-alt: "\f116"; - -$collapse-alt: "\f117"; - -$smile: "\f118"; - -$frown: "\f119"; - -$meh: "\f11a"; - -$gamepad: "\f11b"; - -$keyboard: "\f11c"; - -$flag-alt: "\f11d"; - -$flag-checkered: "\f11e"; - -$terminal: "\f120"; - -$code: "\f121"; - -$reply-all: "\f122"; - -$mail-reply-all: "\f122"; - -$star-half-empty: "\f123"; - -$location-arrow: "\f124"; - -$crop: "\f125"; - -$code-fork: "\f126"; - -$unlink: "\f127"; - -$question: "\f128"; - -$info: "\f129"; - -$exclamation: "\f12a"; - -$superscript: "\f12b"; - -$subscript: "\f12c"; - -$eraser: "\f12d"; - -$puzzle-piece: "\f12e"; - -$microphone: "\f130"; - -$microphone-off: "\f131"; - -$shield: "\f132"; - -$calendar-empty: "\f133"; - -$fire-extinguisher: "\f134"; - -$rocket: "\f135"; - -$maxcdn: "\f136"; - -$chevron-sign-left: "\f137"; - -$chevron-sign-right: "\f138"; - -$chevron-sign-up: "\f139"; - -$chevron-sign-down: "\f13a"; - -$html5: "\f13b"; - -$css3: "\f13c"; - -$anchor: "\f13d"; - -$unlock-alt: "\f13e"; - -$bullseye: "\f140"; - -$ellipsis-horizontal: "\f141"; - -$ellipsis-vertical: "\f142"; - -$rss-sign: "\f143"; - -$play-sign: "\f144"; - -$ticket: "\f145"; - -$minus-sign-alt: "\f146"; - -$check-minus: "\f147"; - -$level-up: "\f148"; - -$level-down: "\f149"; - -$check-sign: "\f14a"; - -$edit-sign: "\f14b"; - -$external-link-sign: "\f14c"; - -$share-sign: "\f14d"; - -$compass: "\f14e"; - -$collapse: "\f150"; - -$collapse-top: "\f151"; - -$expand: "\f152"; - -$eur: "\f153"; - -$gbp: "\f154"; - -$usd: "\f155"; - -$inr: "\f156"; - -$jpy: "\f157"; - -$cny: "\f158"; - -$krw: "\f159"; - -$btc: "\f15a"; - -$file: "\f15b"; - -$file-text: "\f15c"; - -$sort-by-alphabet: "\f15d"; - -$sort-by-alphabet-alt: "\f15e"; - -$sort-by-attributes: "\f160"; - -$sort-by-attributes-alt: "\f161"; - -$sort-by-order: "\f162"; - -$sort-by-order-alt: "\f163"; - -$thumbs-up: "\f164"; - -$thumbs-down: "\f165"; - -$youtube-sign: "\f166"; - -$youtube: "\f167"; - -$xing: "\f168"; - -$xing-sign: "\f169"; - -$youtube-play: "\f16a"; - -$dropbox: "\f16b"; - -$stackexchange: "\f16c"; - -$instagram: "\f16d"; - -$flickr: "\f16e"; - -$adn: "\f170"; - -$bitbucket: "\f171"; - -$bitbucket-sign: "\f172"; - -$tumblr: "\f173"; - -$tumblr-sign: "\f174"; - -$long-arrow-down: "\f175"; - -$long-arrow-up: "\f176"; - -$long-arrow-left: "\f177"; - -$long-arrow-right: "\f178"; - -$apple: "\f179"; - -$windows: "\f17a"; - -$android: "\f17b"; - -$linux: "\f17c"; - -$dribbble: "\f17d"; - -$skype: "\f17e"; - -$foursquare: "\f180"; - -$trello: "\f181"; - -$female: "\f182"; - -$male: "\f183"; - -$gittip: "\f184"; - -$sun: "\f185"; - -$moon: "\f186"; - -$archive: "\f187"; - -$bug: "\f188"; - -$vk: "\f189"; - -$weibo: "\f18a"; - -$renren: "\f18b"; - diff --git a/sass/inuitcss/CHANGELOG.md b/sass/inuitcss/CHANGELOG.md deleted file mode 100644 index 53949c7eff..0000000000 --- a/sass/inuitcss/CHANGELOG.md +++ /dev/null @@ -1,26 +0,0 @@ -# Changelog - -This changelog only exists as of v5.0 onward, for previous inuit.css versions’ -history please browse the commit logs. - -## v5.0.0 - -This major version bump saw the introduction of the -[inuit.css web template](https://github.com/csswizardry/inuit.css-web-template), -a means of including inuit.css as a submodule through which you can easily pull -updates from GitHub whilst avoiding having to touch any library code. - -* Use [beautons](https://github.com/csswizardry/beautons) for button styling -* Use [csswizardry-grids](https://github.com/csswizardry/csswizardry-grids) for - inuit.css’ built-in grid system. -* Removed [Batch](http://adamwhitcroft.com/batch/) -* Moved over to [HTML5 Boilerplate](http://html5boilerplate.com/) style helper - classes. -* Added a few more helper classes and mixins. -* Introduced switches to turn objects and abstractions on/off. - -## v5.1.1 - -* Convert special character to unicode. -* Fix/change the `headings` mixin. -* Fix some typos pertaining to the renaming of the spriting object. diff --git a/sass/inuitcss/CONTRIBUTING.md b/sass/inuitcss/CONTRIBUTING.md deleted file mode 100644 index e98e6a2740..0000000000 --- a/sass/inuitcss/CONTRIBUTING.md +++ /dev/null @@ -1,42 +0,0 @@ -# Contributing to inuit.css - -So, you want to contribute to inuit.css? That’s awesome! - -However, I do ask that you follow a few small rules… - -## Bugs and issues - -If you believe you have a bug or issue that needs investigating: - -* Search existing issues to avoid opening a duplicate. -* Please open an issue and be as descriptive as possible. -* If you can, accompany the report with a reduced test case via - [jsFiddle](http://jsfiddle.net/) or similar. - -## Pull requests - -If submitting a pull request: - -* Follow the predefined code style used in the framework (I’m afraid that means - no spaces before opening braces and after colons (I’m weird like that)). -* Read my [Git workflow for inuit.css](http://csswizardry.com/2012/12/my-git-workflow-for-inuit-css/) - and try and keep as close to that as possible. -* Carry out all your work in a topic branch with a suitable name, e.g. - `fix/grids`, `feature/new-object` etc. -* Commit sensibly and, if needs be, rebase your branch to tidy your commits up. -* Ensure inuit.css still compiles without error through both the standalone - library and the web template. -* Submit all pull requests against the `incoming` branch. Any pull requests - submitted against `master` **will** be declined. -* Advise on versioning if possible; if the changes require a version bump or - merely a patch bump, please let me know. - -## Feature requests - -I am open to requests for adding new features, but please bear in mind: - -* Make sure it fits in the with ideals and scope of the project; inuit.css has a - very specific purpose and all features need tp tie in with this. -* Have a go at adding the new functionality yourself and opening a pull request. -* **Discuss any features before attempting to develop them yourself;** I would - hate for anyone to spend a tonne of time on something that I end up rejecting. diff --git a/sass/inuitcss/LICENSE b/sass/inuitcss/LICENSE deleted file mode 100644 index 00c3fc5023..0000000000 --- a/sass/inuitcss/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2012 Harry Roberts - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/sass/inuitcss/README.md b/sass/inuitcss/README.md deleted file mode 100644 index 77155d091d..0000000000 --- a/sass/inuitcss/README.md +++ /dev/null @@ -1,368 +0,0 @@ -![inuit.css](http://inuitcss.com/img/content/logo.png) - -# inuit.css – v5.0 - -inuit.css is a powerful little framework designed for _serious_ developers. - -It is a Sass based, Object Oriented framework that is full of objects and -abstractions. inuit.css provides little-to-no design which means no undoing -things, no deleting CSS and no adhering to other peoples’ design decisions. - -inuit.css is built on a [BEM](http://bem.info/)-style naming convention and -honed based on [work done by Nicolas Gallagher](https://gist.github.com/1309546). - -inuit.css is ideally suited to designers who want to focus on the creative and -not code, and developers who understand the need for abstraction and an OO -approach. - -inuit.css gives you design patterns, not design decisions. It features nestable, -fluid grids; a double-stranded heading hierarchy; sprites; buttons and a lot, -_lot_ more. - - -**Use inuit.css if:** - -* You need a powerful library of objects and abstractions. -* You understand/appreciate the value of OO code and the need for scalability - and reuse. -* You are a confident/competent developer comfortable with OOCSS and Sass, as - well as familiarity with OO principles in general. - -**Do not use inuit.css if:** - -* You need a framework that supplies design (I’d recommend - [Bootstrap](http://twitter.github.com/bootstrap/) for that). - -## Browser support - -inuit.css is a modern framework for modern browsers. It takes advantage of -[normalize.css](http://necolas.github.com/normalize.css/) and global -`box-sizing:border-box;` (optional). As such, inuit.css is intended for **IE8** -and above only. The last release to support IE7 was -[v4.1.5](https://github.com/csswizardry/inuit.css/archive/v4.1.5.zip). - -## The developer - -There are a million-and-one different CSS frameworks out there so this rather -cringeworthy section is an attempt to validate inuit.css and give it some -credibility… - -I am [Harry Roberts](http://hry.rbrts.me), I am a 22 year old developer and -front-end architect from the UK. I work as a Senior UI Developer for -[BSkyB](http://en.wikipedia.org/wiki/BSkyB) where it is my job to build scalable -front-ends, write internally used CSS frameworks and libraries, and to architect -CSS and front-end builds. - -I [write](http://csswizardry.com), [tweet](http://twitter.com/csswizardry) and -[speak](http://speakerdeck.com/u/csswizardry/) about OOCSS, scalable CSS, -maintainability, working in large teams, CSS performance, CSS architecture and a -whole lot more. - -inuit.css is the result of years of my specialism in CSS (as CSS is all I do). -It is a collection of design patterns, objects, and abstractions that have been -refined and bulletproofed over hours of development across an array of projects -of varying sizes. inuit.css is the result of hundreds of hours of work all -condensed into one powerful little framework. - -## Installation - -**Requires Sass 3.2** - -inuit.css v5.0+ is designed to be even more advanced than previous versions of -your favourite CSS framework! inuit.css’ core library is now intended to be used -as a submodule which means you can always get inuit.css’ latest updates without -ever having to touch a line of library code. - -This works by having this, the inuit.css core library, and the -[inuit.css-web-template](https://github.com/csswizardry/inuit.css-web-template). -The web template is very un-opinionated and simply houses your site, however -you wish to build it. It has a `css/` directory which contains your -project-specific variables and any stylesheets that extend inuit.css, as well as -housing inuit.css as an updatable submodule. Any of inuit.css’ default settings -can be simply overridden from the web template which means you no longer have to -edit a single line of the framework (which in turn means that incorporating -inuit.css updates is as simple as a `$ git pull`). - -### Install via command line (recommended) - -The command line install of inuit.css is _incredibly_ simple: - - $ git clone --recursive git@github.com:csswizardry/inuit.css-web-template.git your-project-folder - $ cd your-project-folder - $ ./go - -What we are doing here is cloning an instance of the inuit.css-web-template and -its submodules (that’s what the `--recursive` does) into a directory which you -specify. Next we `cd` into that directory and run [our `go` script](https://github.com/csswizardry/inuit.css-web-template/blob/master/go). -This script (courtesy of [Nick Payne](http://twitter.com/makeusabrew)) simply -removes the web template’s Git instance and replaces it with a fresh one for -your project, whilst also maintaining your inuit.css submodule. - -### Install via zip - -Though not tested, using inuit.css from its GitHub zip _should_ be fairly -simple. Using inuit.css from zipped source does mean that you can’t update -inuit.css as a submodule, but you may well be able to drop fresh zip files into -the `css/inuit.css/` directory provided you don’t edit any library code. - -Firstly you need to download [the web template](https://github.com/csswizardry/inuit.css-web-template) -zip and unpack it to a location of your choosing. Next you need to download the -inuit.css core zip and unpack that into `css/inuit.css/` in your new project. - -## Getting started - -Once you have your project set up, you should be looking at a directory -structure a little like this: - - your-project-folder/ - css/ - inuit.css/ - _vars.scss - style.scss - watch - index.html - -Your CSS directory holds everything you need to get building: - -* Everything in `css/inuit.css/` is library code which **should not** be edited. - If you `cd` into here you should see that this submodule will initially be on - `(no branch)`, this is because the submodule points at a specific commit and - not a branch. You can treat this directory like any other Git project which - means you can `$ git checkout master` to get your submodule on the most - up-to-date stable version of inuit.css. To grab any new changes simply run - `$ git pull` on the `master` branch. -* `_vars.scss` contains any project variables you need, as well as any overrides - you wish to make to the inuit.css library. It also houses feature switches to - turn inuit.css’ objects and abstractions on and off as you need them. -* `style.scss` is your master Sass stylesheet which will concatenate any other - stylesheets from inuit.css and your extensions when it is compiled. -* `watch` is a handy little script which makes it easier for you to watch your - Sass from the command line; instead of the `$ sass --watch ...` command, you - now need only type `$ ./watch` and the script will do the rest. Running this - will compile your project into `style[.min].css`. - -## How inuit.css works - -inuit.css works in ‘layers’, not dissimilar to [SMACSS](http://smacss.com/). The -principle of inuit.css’ architecture is levels of extension; each layer of code -extends the layer below. - -We start in `inuit.css/generic/`, with our most generic, low-level styling, -things like a clearfix, [normalize.css](http://necolas.github.com/normalize.css/), -our reset and any shared styling like margins (for vertical rythmn). - -On top of that we lay our base styles, found in `inuit.css/base/`; these are -things like unclassed headings, what our basic forms look like, how simple -tables appear. These are all design-free HTML elements that you can extend with -your own styles later on. - -Next up, in `inuit.css/objects/`, we have our objects and abstractions; these -are all scaffolding type constructs that hold no styling, but do heavy lifting. -In here we have things like -[the media object](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/), -[the nav abstraction](http://csswizardry.com/2011/09/the-nav-abstraction/) and -other unstyled objects that you can use to construct design patterns _without_ -design (that bit is left up to you). - -Finally we have our helper classes (though these live back in the `inuit.css/generic/` -directory); these are things like margin helper classes, width classes and other -‘style trumps’ which need to take precedence over any things that have gone -before them. These classes are used to modify your objects and abstractions on a -case-by-case basis. - -## Overriding inuit.css’ defaults - -inuit.css has a file called `_defaults.scss` which contains all the Sass -variables required for the library to compile without failing. These variables -are preset because Sass will error without them, however they are **not** set in -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 -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: - - $h1-size: 36px!default; // .alpha - $h2-size: 30px!default; // .beta - $h3-size: 24px!default; // .gamma - $h4-size: 20px!default; // .delta - $h5-size: 16px!default; // .epsilon - $h6-size: 14px!default; // .zeta - -Let’s say we want our `h1`s to be `48px` and not `36px`; instead of modifying -the value of `$h1-size` here, pop open your `_vars.scss` file and add this in -the overrides section: - - /*------------------------------------*\ - $OVERRIDES - \*------------------------------------*/ - /** - * Place any variables that should override inuit.css’ defaults here. - */ - $h1-size:48px; - -Now when you compile your CSS, inuit.css will know to ignore its preset value -(that is what `!default` is for) in favour of your own. By doing things this way -you can change the values that inuit.css uses without having to modify inuit.css -itself, thus leaving it free to be updated. - -In this file you will also see your feature switches needed to turn objects and -abstractions on and off. Feature switches are only preset for objects and -abstractions; you will **not** initially find switches for things like -`$debug-mode` in here, but they can be turned on and off by adding an override -as outlined above, e.g.: - - /*------------------------------------*\ - $OVERRIDES - \*------------------------------------*/ - /** - * Place any variables that should override inuit.css’ defaults here. - */ - $h1-size:48px; - $push:true; - $palm-push:true; - -This file can also house any custom variables that you wish to use in extending -inuit.css, as covered in the next section. - -## Extending inuit.css - -inuit.css is, by design, a very design-free framework. This means that the -style and design of your site is left entirely up to you (as it should be). -Because inuit.css gives you lots of customisable foundations, you need to add -the final layer: UI. - -How you go about this step is largely left up to you, but it is common practice -to create another directory in `css/` called `ui/`, leaving you with: - - your-project-folder/ - css/ - inuit.css/ - ui/ - _vars.scss - style.scss - watch - index.html - -In here you can place your own Sass files which hold your UI’s CSS, for example: - - ui/ - _contact-form.scss - _footer.scss - _pricing-table.scss - -You then include these from `style.scss`, like so: - - /** - * She’s all yours, cap’n... Begin importing your stuff here. - */ - //@import "ui/example"; - @import "ui/footer"; - @import "ui/contact-form"; - @import "ui/pricing-table"; - -Now, when you run `$ ./watch`, `style.scss` will be calling: - -1. Your variables -2. The inuit.css core library (as outlined above) -3. Your custom/UI CSS - -…and building a concatenated stylesheet out of it all. Neat, huh?! - -## Footprint - -Out of the box, inuit.css is very small, however it is **imperative** that you -only ever deploy a minified version of your compiled stylesheet to your live -environment. inuit.css compiles stright to minified output by default, but you -can change this in `watch` if you have a build process in place. - -It is also **highly** recommended that you enable gzip compression on any text -assets being served from your site; doing so will further reduce the footprint -of inuit.css and greatly help your site’s performance. - -## Documentation - -There are no official docs for inuit.css because the code _is_ the -documentation. Everything is heavily commented with example HTML. If you -struggle with anything please tweet at [@inuitcss](http://twitter.com/inuitcss) -and/or [open an issue](https://github.com/csswizardry/inuit.css/issues) and I’ll -try help out and use your feedback to improve the documentation. - -It is strongly encouraged that you thoroughly read the source of inuit.css’ -files, particularly `_inuit.scss`. - -### Demos - -Although there are no docs as such, there is [a dedicated inuit.css jsFiddle -account](http://jsfiddle.net/user/inuitcss/fiddles/) which houses plenty of -demos of various aspects of the framework. - -### Development - -You can keep up-to-date with upcoming features, suggestions and fixes by looking -at the [inuit.css Trello board](https://trello.com/board/inuit-css/50a16487543dea585502f3d2). - -## Looking for a little LESS? - -[Peter Wilson](http://twitter.com/pwcc) and -[Nicolas Carlo](https://twitter.com/nicoespeon) are maintaining a LESS port of -inuit.css: check [the GitHub repo](https://github.com/peterwilsoncc/inuit.css). - -## Using Compass? - -[Stephen Way](http://github.com/stephenway) is maintaining a Compass port of -inuit.css: check [the GitHub repo](https://github.com/stephenway/compass-inuit). - -## Test-drive - -If you would like to try inuit.css out before you download anything there is a -compiled version [on jsFiddle](http://jsfiddle.net/inuitcss/a6yS3/) that you -are encouraged to fork and play with. Refer back to -[the source here on GitHub](https://github.com/csswizardry/inuit.css/blob/master/inuit.css/_inuit.scss) -for documentation. - -## As used by - -* [BSkyB](http://en.wikipedia.org/wiki/BSkyB) -* [pr.ofile.me](http://pr.ofile.me) -* [Lukas Bestle](http://lu-x.me) -* [Matthew Tyas](http://matthewtyas.com/) - -### Using inuit.css? - -If you use inuit.css on a live project then [tweet at me](http://twitter.com/inuitcss) -and I’ll send you some inuit.css stickers! - -## Support inuit.css - -If you use and/or like inuit.css, perhaps you might consider [supporting it -through Gumroad](http://gum.co/nOoht). - -## Credits - -inuit.css, although produced and maintained by one developer, could not have -been possible without inspiration and work from an array of other people. - -* **[Nicole Sullivan](https://twitter.com/stubbornella)** for her work on OOCSS -* **[Jonathan Snook](https://twitter.com/snookca)** for his work on SMACSS -* **[Nicolas Gallagher](https://twitter.com/necolas)** for his work on numerous - CSS things -* **[Bryan James](https://twitter.com/WengersToyBus)** for the inuit.css logo -* **[Nick Payne](https://twitter.com/makeusabrew)** for helping with v5.0’s - submodule architecture. - -And probably more… - -## License - -Copyright 2013 Harry Roberts - -Licensed under the Apache License, Version 2.0. - ---- - -**inuit.css is the most powerful little framework out there, and it’s ready to -go!** diff --git a/sass/inuitcss/_defaults.scss b/sass/inuitcss/_defaults.scss deleted file mode 100644 index 37b47eca3d..0000000000 --- a/sass/inuitcss/_defaults.scss +++ /dev/null @@ -1,226 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $DEFAULTS -\*------------------------------------*/ -/** - * inuit.css’ default variables. Redefine these in your `_vars.scss` file (found - * in the inuit.css-web-template) to override them. - */ - - - - - -/*------------------------------------*\ - $DEBUG -\*------------------------------------*/ -/** - * Debug mode will visually highlight any potential markup/accessibility quirks - * in the browser. Set to `true` or `false`. - */ -$debug-mode: false!default; - - - - - -/*------------------------------------*\ - $BORDER-BOX -\*------------------------------------*/ -/** - * Do you want all elements to adopt `box-sizing:border-box;` as per - * paulirish.com/2012/box-sizing-border-box-ftw ? - */ -$global-border-box: true!default; - - - - - -/*------------------------------------*\ - $BASE -\*------------------------------------*/ -/** - * Base stuff - */ -$base-font-size: 16px!default; -$base-line-height: 24px!default; - -/** - * Base font-family. - */ -$base-font-family: sans-serif!default; - -/** - * Default colour for objects’ borders etc. - */ -$base-ui-color: #ccc!default; - - - - - -/*------------------------------------*\ - $RESPONSIVE -\*------------------------------------*/ -/** - * Responsiveness? - */ -$responsive: true!default; - -/** - * Responsiveness for widescreen/high resolution desktop monitors and beyond? - * Note: `$responsive` variable above must be set to true before enabling this. - */ -$responsive-extra: false!default; - -/** - * Responsive push and pull produce a LOT of code, only turn them on if you - * definitely need them. - */ -$push: false!default; -/** - * Note: `$push` variable above must be set to true before enabling these. - */ -$palm-push: false!default; -$lap-push: false!default; -$lap-and-up-push: false!default; -$portable-push: false!default; -$desk-push: false!default; - -$pull: false!default; -/** - * Note: `$pull` variable above must be set to true before enabling these. - */ -$palm-pull: false!default; -$lap-pull: false!default; -$lap-and-up-pull: false!default; -$portable-pull: false!default; -$desk-pull: false!default; - -/** - * Tell inuit.css when breakpoints start. - */ -$lap-start: 481px!default; -$desk-start: 1024px!default; -$desk-wide-start: 1200px!default; - - - - - -/*------------------------------------*\ - $FONT-SIZES -\*------------------------------------*/ -/** - * Font-sizes (in pixels). Refer to relevant sections for their implementations. - */ -$giga-size: 96px!default; -$mega-size: 72px!default; -$kilo-size: 48px!default; - -$h1-size: 36px!default; // .alpha -$h2-size: 30px!default; // .beta -$h3-size: 24px!default; // .gamma -$h4-size: 20px!default; // .delta -$h5-size: 16px!default; // .epsilon -$h6-size: 14px!default; // .zeta - -$milli-size: 12px!default; -$micro-size: 10px!default; - - - - - -/*------------------------------------*\ - $QUOTES -\*------------------------------------*/ -/** - * English quote marks? - */ -$english-quotes: true!default; - -/** - * If you want English quotes then please do not edit these; they’re only here - * because Sass needs them. - */ -$open-quote: null; -$close-quote: null; - -/** - * If you need non-English quotes, please alter the following values accordingly: - */ -@if $english-quotes != true{ - $open-quote: \00AB; - $close-quote: \00BB; -} - - - - - -/*------------------------------------*\ - $BRAND -\*------------------------------------*/ -/** - * Brand stuff - */ -$brand-color: #4a8ec2!default; -$brand-face: "Helvetica Neue", sans-serif!default; - -/** - * How big would you like round corners to be by default? - */ -$brand-round: 4px!default; - - - - - -/*------------------------------------*\ - $OBJECTS AND ABSTRACTIONS -\*------------------------------------*/ -/** - * Which objects and abstractions would you like to use? - */ -$use-grids: false!default; -$use-flexbox: false!default; -$use-columns: false!default; -$use-nav: false!default; -$use-options: false!default; -$use-pagination: false!default; -$use-breadcrumb: false!default; -$use-media: false!default; -$use-marginalia: false!default; -$use-island: false!default; -$use-block-list: false!default; -$use-matrix: false!default; -$use-split: false!default; -$use-this-or-this: false!default; -$use-link-complex: false!default; -$use-flyout: false!default; -$use-arrows: false!default; -$use-sprite: false!default; -$use-icon-text: false!default; -$use-beautons: false!default; -$use-lozenges: false!default; -$use-rules: false!default; -$use-stats: false!default; -$use-greybox: false!default; - - - - - -/*------------------------------------*\ - $FRAMEWORK -\*------------------------------------*/ -/** - * inuit.css will work these next ones out for use within the framework. - * - * Assign our `$base-line-height` to a new spacing var for more transparency. - */ -$base-spacing-unit: $base-line-height!default; -$half-spacing-unit: $base-spacing-unit / 2!default; -$line-height-ratio: $base-line-height / $base-font-size; diff --git a/sass/inuitcss/_inuit.scss b/sass/inuitcss/_inuit.scss deleted file mode 100644 index ee0160f050..0000000000 --- a/sass/inuitcss/_inuit.scss +++ /dev/null @@ -1,214 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - INUIT.CSS -\*------------------------------------*/ -/*!* - * - * inuitcss.com -- @inuitcss -- @csswizardry - * - */ -/** - * inuit.css acts as a base stylesheet which you should extend with your own - * theme stylesheet. - * - * inuit.css aims to do the heavy lifting; sorting objects and abstractions, - * design patterns and fiddly bits of CSS, whilst leaving as much design as - * possible to you. inuit.css is the scaffolding to your decorator. - * - * This stylesheet is heavily documented and contains lots of comments, please - * take care to read and refer to them as you build. For further support please - * tweet at @inuitcss. - * - * Owing to the amount of comments please only ever use minified CSS in - * production. This file is purely a dev document. - * - * The table of contents below maps to section titles of the same name, to jump - * to any section simply run a find for $[SECTION-TITLE]. - * - * Most objects and abstractions come with a chunk of markup that you should be - * able to paste into any view to quickly see how the CSS works in conjunction - * with the correct HTML. - * - * inuit.css is written to this standard: github.com/csswizardry/CSS-Guidelines - * - * LICENSE - * - * Copyright 2013 Harry Roberts - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Thank you for choosing inuit.css. May your web fonts render perfectly. - */ - - - - - -/*------------------------------------*\ - $CONTENTS -\*------------------------------------*/ -/** - * CONTENTS............You’re reading it! - * WARNING.............Here be dragons! - * IMPORTS.............Begin importing the sections below - * - * MIXINS..............Super-simple Sass stuff - * NORMALIZE...........normalize.css - * RESET...............Set some defaults - * CLEARFIX............ - * SHARED..............Shared declarations - * - * MAIN................High-level elements like `html`, `body`, etc. - * HEADINGS............Double-stranded heading hierarchy - * PARAGRAPHS.......... - * SMALLPRINT..........Smaller text elements like `small` - * QUOTES.............. - * CODE................ - * LISTS............... - * IMAGES.............. - * TABLES.............. - * FORMS............... - * - * GRIDS...............Fluid, proportional and nestable grids - * FLEXBOX.............Crudely emulate flexbox - * COLUMNS.............CSS3 columns - * NAV.................A simple abstraction to put a list in horizontal nav mode - * OPTIONS.............Grouped nav items - * PAGINATION..........Very stripped back, basic paginator - * BREADCRUMB..........Simple breadcrumb trail object - * MEDIA...............Media object - * MARGINALIA..........Simple marginalia content - * ISLAND..............Boxed off content - * BLOCK-LIST..........Blocky lists of content - * MATRIX..............Gridded lists - * SPLIT...............A simple split-in-two object - * THIS-OR-THIS........Options object - * LINK-COMPLEX........ - * FLYOUT..............Flyout-on-hover object - * ARROWS..............CSS arrows - * SPRITE..............Generic spriting element - * ICON-TEXT...........Icon and text couplings - * BEAUTONS............Use the beautons micro library - * LOZENGES............Basic lozenge styles - * RULES...............Horizontal rules - * STATS...............Simple stats object - * GREYBOX.............Wireframing styles - * - * WIDTHS..............Width classes for use alongside the grid system etc. - * PUSH................Push classes for manipulating grids - * PULL................Pull classes for manipulating grids - * BRAND...............Helper class to apply brand treatment to elements - * HELPER..............A series of helper classes to use arbitrarily - * DEBUG...............Enable to add visual flags for debugging purposes - */ - - - - - -/*------------------------------------*\ - $WARNING -\*------------------------------------*/ -/* - * inuit.css, being an OO framework, works in keeping with the open/closed - * principle. The variables you set previously are now being used throughout - * inuit.css to style everything we need for a base. Any custom styles SHOULD - * NOT be added or modified in inuit.css directly, but added via your theme - * stylesheet as per the open/closed principle: - * - * csswizardry.com/2012/06/the-open-closed-principle-applied-to-css - * - * Try not to edit any CSS beyond this point; if you find you need to do so - * it is a failing of the framework so please tweet at @inuitcss. - */ - - - - - -/*------------------------------------*\ - $IMPORTS -\*------------------------------------*/ -/** - * Generic utility styles etc. - */ -@import "defaults"; -@import "generic/mixins"; -@import "generic/normalize"; -@import "generic/reset"; -@import "generic/clearfix"; -@import "generic/shared"; - - - - - -/** - * Base styles; unclassed HTML elements etc. - */ -@import "base/main"; -@import "base/headings"; -@import "base/paragraphs"; -@import "base/smallprint"; -@import "base/quotes"; -@import "base/code"; -@import "base/images"; -@import "base/lists"; -@import "base/tables"; -@import "base/forms"; - - - - - -/** - * Objects and abstractions - */ -@import "objects/grids"; -@import "objects/flexbox"; -@import "objects/columns"; -@import "objects/nav"; -@import "objects/options"; -@import "objects/pagination"; -@import "objects/breadcrumb"; -@import "objects/media"; -@import "objects/marginalia"; -@import "objects/island"; -@import "objects/block-list"; -@import "objects/matrix"; -@import "objects/split"; -@import "objects/this-or-this"; -@import "objects/link-complex"; -@import "objects/flyout"; -@import "objects/arrows"; -@import "objects/sprite"; -@import "objects/icon-text"; -@import "objects/beautons"; -@import "objects/lozenges"; -@import "objects/rules"; -@import "objects/stats"; -@import "objects/greybox"; - - - - - -/** - * Style trumps; helper and brand classes - */ -@import "generic/widths"; -@import "generic/push"; -@import "generic/pull"; -@import "generic/brand"; -@import "generic/helper"; -@import "generic/debug"; diff --git a/sass/inuitcss/base/_code.scss b/sass/inuitcss/base/_code.scss deleted file mode 100644 index 883cef7fa0..0000000000 --- a/sass/inuitcss/base/_code.scss +++ /dev/null @@ -1,64 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $CODE -\*------------------------------------*/ -/** - * Use an explicit font stack to ensure browsers render correct `line-height`. - */ -pre{ - overflow:auto; -} - pre mark{ - background:none; - border-bottom:1px solid; - color:inherit; - } - - -/** - * Add comments to your code examples, e.g.: - * - </div><!-- /wrapper --> - * - */ -.code-comment{ - /** - * Override this setting in your theme stylesheet - */ - opacity:0.75; - filter:alpha(opacity=75); -} - - -/** - * You can add line numbers to your code examples but be warned, it requires - * some pretty funky looking markup, e.g.: - * -
    -
  1. .nav{
  2. -
  3. list-style:none;
  4. -
  5. margin-left:0;
  6. -
  7. }
  8. -
  9. .nav > li,
  10. -
  11. .nav > li > a{
  12. -
  13. display:inline-block;
  14. -
  15. *display:inline-block;
  16. -
  17. zoom:1;
  18. -
  19. }
  20. -
- * - * 1. Make the list look like code. - * 2. Give the list flush numbers with a leading zero. - * 3. Make sure lines of code don’t wrap. - * 4. Give the code form by forcing the `code` to honour white-space. - */ -.line-numbers{ - font-family:monospace, sans-serif; /* [1] */ - list-style:decimal-leading-zero inside; /* [2] */ - white-space:nowrap; /* [3] */ - overflow:auto; /* [3] */ - margin-left:0; -} - .line-numbers code{ - white-space:pre; /* [4] */ - } diff --git a/sass/inuitcss/base/_forms.scss b/sass/inuitcss/base/_forms.scss deleted file mode 100644 index 6ac305dc71..0000000000 --- a/sass/inuitcss/base/_forms.scss +++ /dev/null @@ -1,175 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $FORMS -\*------------------------------------*/ -/** - * - * Demo: jsfiddle.net/inuitcss/MhHHU - * - */ -fieldset{ - padding:$base-spacing-unit; -} - - -/** - * Text inputs - * - * Instead of a `[type]` selector for each kind of form input, we just use a - * class to target any/every one, e.g.: - - - - * - */ -.text-input, -textarea{ - /** - * Style these via your theme stylesheet. - */ -} - - -/** - * Group sets of form fields in a list, e.g.: - * -
    -
  • -
  • -
  • -
  • -
- * - */ -.form-fields{ - list-style:none; - margin:0; -} - .form-fields > li{ - @extend %sass-margin-bottom; - } - .form-fields > li:last-child{ - margin-bottom:0; - } - - -/** - * Labels - * - * Define a `.label` class as well as a `label` element. This means we can apply - * label-like styling to meta-labels for groups of options where a `label` - * element is not suitable, e.g.: - * -
  • - Select an option below: -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • - * - */ -label, -.label{ - display:block; -} - /** - * Extra help text in `label`s, e.g.: - * - - * - */ - .additional{ - display:block; - font-weight:normal; - } - - -/* - * Groups of checkboxes and radios, e.g.: - * -
  • -
      -
    • -
    • -
    • -
    • -
    -
  • - * - */ -.check-list{ - list-style:none; - margin:0; -} - /* - * Labels in check-lists - */ - .check-label, - .check-list label, - .check-list .label{ - display:inline-block; - } - - -/** - * Spoken forms are for forms that read like spoken word, e.g.: - * -
  • - Hello, my is - . My home - is - -
  • - * - */ -.spoken-form label{ - display:inline-block; - font:inherit; -} - - -/** - * Extra help text displayed after a field when that field is in focus, e.g.: - * - - - .edu emails only - * - * We leave the help text in the document flow and merely set it to - * `visibility:hidden;`. This means that it won’t interfere with anything once - * it reappears. - * - */ -/*small*/.extra-help{ - display:inline-block; - visibility:hidden; -} -.text-input:active + .extra-help, -.text-input:focus + .extra-help{ - visibility:visible; -} diff --git a/sass/inuitcss/base/_headings.scss b/sass/inuitcss/base/_headings.scss deleted file mode 100644 index d834871f8f..0000000000 --- a/sass/inuitcss/base/_headings.scss +++ /dev/null @@ -1,61 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $HEADINGS -\*------------------------------------*/ -/** - * As per: csswizardry.com/2012/02/pragmatic-practical-font-sizing-in-css - * - * When we define a heading we also define a corresponding class to go with it. - * This allows us to apply, say, `class=alpha` to a `h3`; a double-stranded - * heading hierarchy. - */ -h1,.alpha{ - @include font-size($h1-size); -} -h2,.beta{ - @include font-size($h2-size); -} -h3,.gamma{ - @include font-size($h3-size); -} -h4,.delta{ - @include font-size($h4-size); -} -h5,.epsilon{ - @include font-size($h5-size); -} -h6,.zeta{ - @include font-size($h6-size); -} - - -/** - * Heading groups and generic any-heading class. - * To target any heading of any level simply apply a class of `.hN`, e.g.: - * -
    -

    inuit.css

    -

    Best. Framework. Ever!

    -
    - * - */ -.hN{ -} -hgroup .hN{ - margin-bottom:0; -} - - -/** - * A series of classes for setting massive type; for use in heroes, mastheads, - * promos, etc. - */ -.giga{ - @include font-size($giga-size); -} -.mega{ - @include font-size($mega-size); -} -.kilo{ - @include font-size($kilo-size); -} diff --git a/sass/inuitcss/base/_images.scss b/sass/inuitcss/base/_images.scss deleted file mode 100644 index 59efcbb986..0000000000 --- a/sass/inuitcss/base/_images.scss +++ /dev/null @@ -1,74 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $IMAGES -\*------------------------------------*/ -/** - * Demo: jsfiddle.net/inuitcss/yMtur - */ -/** - * Fluid images. - */ -img{ - max-width:100%; -} - - -/** - * Non-fluid images if you specify `width` and/or `height` attributes. - */ -img[width], -img[height]{ - max-width:none; -} - - -/** - * Rounded images. - */ -.img--round { border-radius:$brand-round; } - - -/** - * Image placement variations. - */ -.img--right{ - float:right; - margin-bottom:$base-spacing-unit; - margin-left:$base-spacing-unit; -} -.img--left{ - float:left; - margin-right:$base-spacing-unit; - margin-bottom:$base-spacing-unit; -} -.img--center{ - display:block; - margin-right:auto; - margin-bottom:$base-spacing-unit; - margin-left:auto; -} - - -/** - * Keep your images on your baseline. - * - * Please note, these will not work too nicely with fluid images and will - * distort when resized below a certain width. Use with caution. - */ -.img--short{ - height:5 * $base-spacing-unit; -} -.img--medium{ - height:10 * $base-spacing-unit; -} -.img--tall{ - height:15 * $base-spacing-unit; -} - - -/** - * Images in `figure` elements. - */ -figure > img{ - display:block; -} diff --git a/sass/inuitcss/base/_lists.scss b/sass/inuitcss/base/_lists.scss deleted file mode 100644 index 29ffc4cc57..0000000000 --- a/sass/inuitcss/base/_lists.scss +++ /dev/null @@ -1,20 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $LISTS -\*------------------------------------*/ -/** - * Remove vertical spacing from nested lists. - */ -li{ - > ul, - > ol{ - margin-bottom:0; - } -} - -/** - * Have a numbered `ul` without the semantics implied by using an `ol`. - */ -/*ul*/.numbered-list{ - list-style-type:decimal; -} diff --git a/sass/inuitcss/base/_main.scss b/sass/inuitcss/base/_main.scss deleted file mode 100644 index 12c7f111c6..0000000000 --- a/sass/inuitcss/base/_main.scss +++ /dev/null @@ -1,9 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $MAIN -\*------------------------------------*/ -html{ - font:#{($base-font-size/16px)*1em}/#{$line-height-ratio} $base-font-family; - overflow-y:scroll; - min-height:100%; -} diff --git a/sass/inuitcss/base/_paragraphs.scss b/sass/inuitcss/base/_paragraphs.scss deleted file mode 100644 index 5dcdfe79de..0000000000 --- a/sass/inuitcss/base/_paragraphs.scss +++ /dev/null @@ -1,12 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $PARAGRAPHS -\*------------------------------------*/ -/** - * The `.lede` class is used to make the introductory text (usually a paragraph) - * of a document slightly larger. - */ -.lede, -.lead{ - @include font-size($base-font-size * 1.125); -} diff --git a/sass/inuitcss/base/_quotes.scss b/sass/inuitcss/base/_quotes.scss deleted file mode 100644 index 490948ec44..0000000000 --- a/sass/inuitcss/base/_quotes.scss +++ /dev/null @@ -1,97 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $QUOTES -\*------------------------------------*/ -/** - * If English quotes are set in `_vars.scss`, define them here. - */ -@if $english-quotes == true{ - $open-quote: \201C; - $close-quote: \201D; -} - - -/** - * Big up @boblet: html5doctor.com/blockquote-q-cite - */ - -/** - * Inline quotes. - */ -q{ - quotes:"\2018" "\2019" "#{$open-quote}" "#{$close-quote}"; - - &:before{ - content:"\2018"; - content:open-quote; - } - &:after{ - content:"\2019"; - content:close-quote; - } - - q:before{ - content:"\201C"; - content:open-quote; - } - q:after{ - content:"\201D"; - content:close-quote; - } -} - -blockquote{ - quotes:"#{$open-quote}" "#{$close-quote}"; - - p:before{ - content:"#{$open-quote}"; - content:open-quote; - } - p:after{ - content:""; - content:no-close-quote; - } - p:last-of-type:after{ - content:"#{$close-quote}"; - content:close-quote; - } - - q:before{ - content:"\2018"; - content:open-quote; - } - q:after{ - content:"\2019"; - content:close-quote; - } -} - - -/** - * -
    -

    Insanity: doing the same thing over and over again and expecting - different results.

    - Albert Einstein -
    - * - */ -blockquote{ - /** - * .4em is roughly equal to the width of the opening “ that we wish to hang. - */ - text-indent:-0.41em; - - p:last-of-type{ - margin-bottom:0; - } -} - -.source{ - display:block; - text-indent:0; - - &:before{ - content:"\2014"; - } -} diff --git a/sass/inuitcss/base/_smallprint.scss b/sass/inuitcss/base/_smallprint.scss deleted file mode 100644 index dc57e798e2..0000000000 --- a/sass/inuitcss/base/_smallprint.scss +++ /dev/null @@ -1,14 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $SMALLPRINT -\*------------------------------------*/ -/** - * A series of classes for setting tiny type; for use in smallprint etc. - */ -.smallprint, -.milli{ - @include font-size($milli-size); -} -.micro{ - @include font-size($micro-size); -} diff --git a/sass/inuitcss/base/_tables.scss b/sass/inuitcss/base/_tables.scss deleted file mode 100644 index bd223ba833..0000000000 --- a/sass/inuitcss/base/_tables.scss +++ /dev/null @@ -1,164 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $TABLES -\*------------------------------------*/ -/** - * We have a lot at our disposal for making very complex table constructs, e.g.: - * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FooBar
    LoremIpsumDolorSit
    SitDolor03.788Lorem
    Dolor32.210Lorem
    Dolor47.797Lorem
    SitDolor09.640Lorem
    Dolor12.117Lorem
    - * - */ -table{ - width:100%; -} -th, -td{ - padding:$base-spacing-unit / 4; - @media screen and (min-width:480px){ - padding:$half-spacing-unit; - } - text-align:left; -} - - -/** - * Cell alignments - */ -[colspan]{ - text-align:center; -} -[colspan="1"]{ - text-align:left; -} -[rowspan]{ - vertical-align:middle; -} -[rowspan="1"]{ - vertical-align:top; -} -.numerical{ - text-align:right; -} - -/** - * In the HTML above we see several `col` elements with classes whose numbers - * represent a percentage width for that column. We leave one column free of a - * class so that column can soak up the effects of any accidental breakage in - * the table. - */ -.t5 { width: 5% } -.t10 { width:10% } -.t12 { width:12.5% } /* 1/8 */ -.t15 { width:15% } -.t20 { width:20% } -.t25 { width:25% } /* 1/4 */ -.t30 { width:30% } -.t33 { width:33.333% } /* 1/3 */ -.t35 { width:35% } -.t37 { width:37.5% } /* 3/8 */ -.t40 { width:40% } -.t45 { width:45% } -.t50 { width:50% } /* 1/2 */ -.t55 { width:55% } -.t60 { width:60% } -.t62 { width:62.5% } /* 5/8 */ -.t65 { width:65% } -.t66 { width:66.666% } /* 2/3 */ -.t70 { width:70% } -.t75 { width:75% } /* 3/4*/ -.t80 { width:80% } -.t85 { width:85% } -.t87 { width:87.5% } /* 7/8 */ -.t90 { width:90% } -.t95 { width:95% } - - -/** - * Bordered tables - */ -.table--bordered{ - - th, - td{ - border:1px solid $base-ui-color; - - &:empty{ - border:none; - } - } - - thead tr:last-child th{ - border-bottom-width:2px; - } - - tbody tr th:last-of-type{ - border-right-width:2px; - } -} - - -/** - * Striped tables - */ -.table--striped{ - - tbody tr:nth-of-type(odd){ - background-color:#ffc; /* Override this color in your theme stylesheet */ - } -} - - -/** - * Data table - */ -.table--data{ - font:12px/1.5 sans-serif; -} diff --git a/sass/inuitcss/component.json b/sass/inuitcss/component.json deleted file mode 100644 index d746826dcf..0000000000 --- a/sass/inuitcss/component.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "inuit.css", - "version": "5.0.1", - "dependencies": {} -} diff --git a/sass/inuitcss/generic/_brand.scss b/sass/inuitcss/generic/_brand.scss deleted file mode 100644 index 2da6001e77..0000000000 --- a/sass/inuitcss/generic/_brand.scss +++ /dev/null @@ -1,19 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $BRAND -\*------------------------------------*/ -/** - * `.brand` is a quick and simple way to apply your brand face and/or color to - * any element using a handy helper class. - */ -.brand{ - font-family:$brand-face +!important; - color:$brand-color +!important; -} -.brand-face{ - font-family:$brand-face +!important; -} -.brand-color, -.brand-colour{ - color:$brand-color +!important; -} \ No newline at end of file diff --git a/sass/inuitcss/generic/_clearfix.scss b/sass/inuitcss/generic/_clearfix.scss deleted file mode 100644 index e02390ba2b..0000000000 --- a/sass/inuitcss/generic/_clearfix.scss +++ /dev/null @@ -1,16 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $CLEARFIX -\*------------------------------------*/ -/** - * Micro clearfix, as per: css-101.org/articles/clearfix/latest-new-clearfix-so-far.php - * Extend the clearfix class with Sass to avoid the `.cf` class appearing over - * and over in your markup. - */ -.cf{ - &:after{ - content:""; - display:table; - clear:both; - } -} diff --git a/sass/inuitcss/generic/_debug.scss b/sass/inuitcss/generic/_debug.scss deleted file mode 100644 index 0f1d83f858..0000000000 --- a/sass/inuitcss/generic/_debug.scss +++ /dev/null @@ -1,169 +0,0 @@ -@charset "UTF-8"; -@if $debug-mode == true{ -/*------------------------------------*\ - $DEBUG -\*------------------------------------*/ -/** - * Enable this stylesheet to visually detect any improperly nested or - * potentially invalid markup, or any potentially inaccessible code. - * - * Red == definite error - * Yellow == double-check - * None == should be fine - * - * Please note that this method of checking markup quality should not be relied - * upon entirely. Validate your markup! - */ - - -/** - * Are there any empty elements in your page? - */ -:empty{ - outline:5px solid yellow; -} - - -/** - * Images require `alt` attributes, empty `alt`s are fine but should be - * double-checked, no `alt` is bad and is flagged red. - */ -img{ - outline:5px solid red; -} -img[alt]{ - outline:none; -} -img[alt=""]{ - outline:5px solid yellow; -} - - -/** - * Links sometimes, though not always, benefit from `title` attributes. Links - * without are never invalid but it’s a good idea to check. - */ -a{ - outline:5px solid yellow; -} -a[title]{ - outline:none; -} - - -/** - * Double-check any links whose `href` is something questionable. - */ -a[href="#"], -a[href*="javascript"]{ - outline:5px solid yellow; -} - - -/** - * The `target` attribute ain’t too nice... - */ -a[target]{ - outline:5px solid yellow; -} - - -/** - * Ensure any lists only contain `li`s as children. - */ -ul, -ol{ - > *:not(li){ - outline:5px solid red; - } -} - - -/** - * It’s always nice to give `th`s `scope` attributes. - */ -th{ - outline:5px solid yellow; -} -th[scope]{ - outline:none; -} - - -/** - * `tr`s as children of `table`s ain’t great, did you need a `thead`/`tbody`? - */ -table > tr{ - outline:5px solid yellow; -} - - -/** - * `tfoot` needs to come *before* `tbody`. - */ -tbody + tfoot{ - outline:5px solid yellow; -} - - -/** - * Forms require `action` attributes - */ -form{ - outline:5px solid red; -} -form[action]{ - outline:none; -} - - -/** - * Various form-field types have required attributes. `input`s need `type` - * attributes, `textarea`s need `rows` and `cols` attributes and submit buttons - * need a `value` attribute. - */ -textarea, -input{ - outline:5px solid red; -} -input[type]{ - outline:none; -} -textarea[rows][cols]{ - outline:none; -} -input[type=submit]{ - outline:5px solid red; -} -input[type=submit][value]{ - outline:none; -} - - -/** - * Avoid inline styles where possible. - */ -[style]{ - outline:5px solid yellow; -} - - -/** - * You should avoid using IDs for CSS, is this doing any styling? - */ -[id]{ - outline:5px solid yellow; -} - - -/** - * Are you using the grid system correctly? - */ -.gw > :not(.g), -.grid-wrapper > :not(.grid), -.gw--rev > :not(.g), -.grid-wrapper--rev > :not(.grid){ - outline:5px solid red; -} - -}/* endif */ diff --git a/sass/inuitcss/generic/_helper.scss b/sass/inuitcss/generic/_helper.scss deleted file mode 100644 index 3a488142ba..0000000000 --- a/sass/inuitcss/generic/_helper.scss +++ /dev/null @@ -1,185 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $HELPER -\*------------------------------------*/ -/** - * A series of helper classes to use arbitrarily. Only use a helper class if an - * element/component doesn’t already have a class to which you could apply this - * styling, e.g. if you need to float `.main-nav` left then add `float:left;` to - * that ruleset as opposed to adding the `.float--left` class to the markup. - * - * A lot of these classes carry `!important` as you will always want them to win - * out over other selectors. - */ - - -/** - * Add/remove floats - */ -.float--right { float:right!important; } -.float--left { float:left !important; } -.float--none { float:none !important; } - - -/** - * Text alignment - */ -.text--left { text-align:left !important; } -.text--center { text-align:center!important; } -.text--right { text-align:right !important; } - - -/** - * Font weights - */ -.weight--light { font-weight:300!important; } -.weight--normal { font-weight:400!important; } -.weight--semibold { font-weight:600!important; } - - -/** - * Add/remove margins - */ -.push { margin: $base-spacing-unit!important; } -.push--top { margin-top: $base-spacing-unit!important; } -.push--right { margin-right: $base-spacing-unit!important; } -.push--bottom { margin-bottom:$base-spacing-unit!important; } -.push--left { margin-left: $base-spacing-unit!important; } -.push--ends { margin-top: $base-spacing-unit!important; margin-bottom:$base-spacing-unit!important; } -.push--sides { margin-right: $base-spacing-unit!important; margin-left: $base-spacing-unit!important; } - -.push-half { margin: $half-spacing-unit!important; } -.push-half--top { margin-top: $half-spacing-unit!important; } -.push-half--right { margin-right: $half-spacing-unit!important; } -.push-half--bottom { margin-bottom:$half-spacing-unit!important; } -.push-half--left { margin-left: $half-spacing-unit!important; } -.push-half--ends { margin-top: $half-spacing-unit!important; margin-bottom:$half-spacing-unit!important; } -.push-half--sides { margin-right: $half-spacing-unit!important; margin-left: $half-spacing-unit!important; } - -.flush { margin: 0!important; } -.flush--top { margin-top: 0!important; } -.flush--right { margin-right: 0!important; } -.flush--bottom { margin-bottom:0!important; } -.flush--left { margin-left: 0!important; } -.flush--ends { margin-top: 0!important; margin-bottom:0!important; } -.flush--sides { margin-right: 0!important; margin-left: 0!important; } - - -/** - * Add/remove paddings - */ -.soft { padding: $base-spacing-unit!important; } -.soft--top { padding-top: $base-spacing-unit!important; } -.soft--right { padding-right: $base-spacing-unit!important; } -.soft--bottom { padding-bottom:$base-spacing-unit!important; } -.soft--left { padding-left: $base-spacing-unit!important; } -.soft--ends { padding-top: $base-spacing-unit!important; padding-bottom:$base-spacing-unit!important; } -.soft--sides { padding-right: $base-spacing-unit!important; padding-left: $base-spacing-unit!important; } - -.soft-half { padding: $half-spacing-unit!important; } -.soft-half--top { padding-top: $half-spacing-unit!important; } -.soft-half--right { padding-right: $half-spacing-unit!important; } -.soft-half--bottom { padding-bottom:$half-spacing-unit!important; } -.soft-half--left { padding-left: $half-spacing-unit!important; } -.soft-half--ends { padding-top: $half-spacing-unit!important; padding-bottom:$half-spacing-unit!important; } -.soft-half--sides { padding-right: $half-spacing-unit!important; padding-left: $half-spacing-unit!important; } - -.hard { padding: 0!important; } -.hard--top { padding-top: 0!important; } -.hard--right { padding-right: 0!important; } -.hard--bottom { padding-bottom:0!important; } -.hard--left { padding-left: 0!important; } -.hard--ends { padding-top: 0!important; padding-bottom:0!important; } -.hard--sides { padding-right: 0!important; padding-left: 0!important; } - - -/** - * Pull items full width of `.island` parents. - */ -.full-bleed{ - margin-right:-$base-spacing-unit!important; - margin-left: -$base-spacing-unit!important; - - .islet &{ - margin-right:-($half-spacing-unit)!important; - margin-left: -($half-spacing-unit)!important; - } -} - - -/** - * Add a help cursor to any element that gives the user extra information on - * `:hover`. - */ -.informative{ - cursor:help!important; -} - - -/** - * Mute an object by reducing its opacity. - */ -.muted{ - opacity:0.5!important; - filter:alpha(opacity = 50)!important; -} - - -/** - * Align items to the right where they imply progression/movement forward, e.g.: - * -

    Read more...

    - * - */ -.proceed{ - text-align:right!important; -} - - -/** - * Add a right-angled quote to links that imply movement, e.g.: - * - Read more - * - */ -.go:after{ - content:"\00A0" "\00BB"!important; -} - - -/** - * Apply capital case to an element (usually a `strong`). - */ -.caps{ - text-transform:uppercase!important; -} - - -/** - * Hide content off-screen without resorting to `display:none;`, also provide - * breakpoint specific hidden elements. - */ -@mixin accessibility{ - border:0!important; - clip:rect(0 0 0 0)!important; - height:1px!important; - margin:-1px!important; - overflow:hidden!important; - padding:0!important; - position: absolute!important; - width:1px!important; -} -.accessibility, -.visuallyhidden{ - @include accessibility; -} -@if $responsive{ - @each $state in palm, lap, lap-and-up, portable, desk, desk-wide{ - @include media-query(#{$state}){ - .accessibility--#{$state}, - .visuallyhidden--#{$state}{ - @include accessibility; - } - } - } -} diff --git a/sass/inuitcss/generic/_mixins.scss b/sass/inuitcss/generic/_mixins.scss deleted file mode 100644 index 6815c2f469..0000000000 --- a/sass/inuitcss/generic/_mixins.scss +++ /dev/null @@ -1,329 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $MIXINS -\*------------------------------------*/ -/** - * Create a fully formed type style (sizing and vertical rhythm) by passing in a - * single value, e.g.: - * - `@include font-size(10px);` - * - * Thanks to @redclov3r for the `line-height` Sass: - * twitter.com/redclov3r/status/250301539321798657 - */ -@mixin font-size($font-size, $line-height:true){ - font-size:$font-size; - font-size:($font-size / $base-font-size)*1rem; - @if $line-height == true{ - line-height:ceil($font-size / $base-line-height) * ($base-line-height / $font-size); - } -} - - -/** - * Style any number of headings in one fell swoop, e.g.: - * - .foo{ - @include headings(1, 3){ - color:#BADA55; - } - } - * - * With thanks to @lar_zzz, @paranoida, @rowanmanning and ultimately - * @thierrylemoulec for refining and improving my initial mixin. - */ -@mixin headings($from: 1, $to: 6){ - %base-heading { - @content - } - - @if $from >= 1 and $to <= 6{ - @for $i from $from through $to{ - h#{$i}{ - @extend %base-heading; - } - } - } -} - - -/** - * Create vendor-prefixed CSS in one go, e.g. - * - `@include vendor(border-radius, 4px);` - * - */ -@mixin vendor($property, $value...){ - -webkit-#{$property}:$value; - -moz-#{$property}:$value; - -ms-#{$property}:$value; - -o-#{$property}:$value; - #{$property}:$value; -} - - -/** - * Create CSS keyframe animations for all vendors in one go, e.g.: - * - .foo{ - @include vendor(animation, shrink 3s); - } - - @include keyframe(shrink){ - from{ - font-size:5em; - } - } - * - * Courtesy of @integralist: twitter.com/integralist/status/260484115315437569 - */ -@mixin keyframe ($animation-name){ - @-webkit-keyframes $animation-name{ - @content; - } - - @-moz-keyframes $animation-name{ - @content; - } - - @-ms-keyframes $animation-name{ - @content; - } - - @-o-keyframes $animation-name{ - @content; - } - - @keyframes $animation-name{ - @content; - } -} - - -/** - * Force overly long spans of text to truncate, e.g.: - * - `@include truncate(100%);` - * - * Where `$truncation-boundary` is a united measurement. - */ -@mixin truncate($truncation-boundary){ - max-width:$truncation-boundary; - white-space:nowrap; - overflow:hidden; - text-overflow:ellipsis; -} - - -/** - * CSS arrows!!! But... before you read on, you might want to grab a coffee... - * - * This mixin creates a CSS arrow on a given element. We can have the arrow - * appear in one of 12 locations, thus: - * - * 01 02 03 - * +------------------+ - * 12 | | 04 - * | | - * 11 | | 05 - * | | - * 10 | | 06 - * +------------------+ - * 09 08 07 - * - * You pass this position in along with a desired arrow color and optional - * border color, for example: - * - * `@include arrow(top, left, red)` - * - * for just a single, red arrow, or: - * - * `@include arrow(bottom, center, red, black)` - * - * which will create a red triangle with a black border which sits at the bottom - * center of the element. Call the mixin thus: - * - .foo{ - background-color:#BADA55; - border:1px solid #ACE; - @include arrow(top, left, #BADA55, #ACE); - } - * - */ -@mixin arrow($arrow-edge, $arrow-location, $arrow-color, $border-color: $arrow-color){ - - @if $arrow-edge == top{ - - @extend %arrow--top; - - &:before{ - border-bottom-color:$border-color!important; - } - - &:after{ - border-bottom-color:$arrow-color!important; - } - - @if $arrow-location == left{ - @extend %arrow--left; - } - - @if $arrow-location == center{ - @extend %arrow--center; - } - - @if $arrow-location == right{ - @extend %arrow--right; - } - - } - - @if $arrow-edge == right{ - - @extend %arrow--far; - - &:before{ - border-left-color:$border-color!important; - } - - &:after{ - border-left-color:$arrow-color!important; - } - - @if $arrow-location == top{ - @extend %arrow--upper; - } - - @if $arrow-location == center{ - @extend %arrow--middle; - } - - @if $arrow-location == bottom{ - @extend %arrow--lower; - } - - } - - @if $arrow-edge == bottom{ - - @extend %arrow--bottom; - - &:before{ - border-top-color:$border-color!important; - } - - &:after{ - border-top-color:$arrow-color!important; - } - - @if $arrow-location == left{ - @extend %arrow--left; - } - - @if $arrow-location == center{ - @extend %arrow--center; - } - - @if $arrow-location == right{ - @extend %arrow--right; - } - - } - - @if $arrow-edge == left{ - - @extend %arrow--near; - - &:before{ - border-right-color:$border-color!important; - } - - &:after{ - border-right-color:$arrow-color!important; - } - - @if $arrow-location == top{ - @extend %arrow--upper; - } - - @if $arrow-location == center{ - @extend %arrow--middle; - } - - @if $arrow-location == bottom{ - @extend %arrow--lower; - } - - } - -} - - -/** - * Media query mixin. - * - * It’s not great practice to define solid breakpoints up-front, preferring to - * modify your design when it needs it, rather than assuming you’ll want a - * change at ‘mobile’. However, as inuit.css is required to take a hands off - * approach to design decisions, this is the closest we can get to baked-in - * responsiveness. It’s flexible enough to allow you to set your own breakpoints - * but solid enough to be frameworkified. - * - * We define some broad breakpoints in our vars file that are picked up here - * for use in a simple media query mixin. Our options are: - * - * palm - * lap - * lap-and-up - * portable - * desk - * desk-wide - * - * Not using a media query will, naturally, serve styles to all devices. - * - * `@include media-query(palm){ [styles here] }` - * - * We work out your end points for you: - */ -$palm-end: $lap-start - 1px; -$lap-end: $desk-start - 1px; - -@mixin media-query($media-query){ - - @if $media-query == palm{ - - @media only screen and (max-width:$palm-end) { @content; } - - } - - @if $media-query == lap{ - - @media only screen and (min-width:$lap-start) and (max-width:$lap-end) { @content; } - - } - - @if $media-query == lap-and-up{ - - @media only screen and (min-width:$lap-start) { @content; } - - } - - @if $media-query == portable{ - - @media only screen and (max-width:$lap-end) { @content; } - - } - - @if $media-query == desk{ - - @media only screen and (min-width:$desk-start) { @content; } - - } - - @if $media-query == desk-wide{ - - @media only screen and (min-width: $desk-wide-start) { @content; } - - } - -} diff --git a/sass/inuitcss/generic/_normalize.scss b/sass/inuitcss/generic/_normalize.scss deleted file mode 100644 index 12da46699f..0000000000 --- a/sass/inuitcss/generic/_normalize.scss +++ /dev/null @@ -1,397 +0,0 @@ -@charset "UTF-8"; -/*! normalize.css v2.1.0 | MIT License | git.io/normalize */ - -/* ========================================================================== - HTML5 display definitions - ========================================================================== */ - -/* - * Correct `block` display not defined in IE 8/9. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; -} - -/* - * Correct `inline-block` display not defined in IE 8/9. - */ - -audio, -canvas, -video { - display: inline-block; -} - -/* - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/* - * Address styling not present in IE 8/9. - */ - -[hidden] { - display: none; -} - -/* ========================================================================== - Base - ========================================================================== */ - -/* - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - -ms-text-size-adjust: 100%; /* 2 */ -} - -/* - * Remove default margin. - */ - -body { - margin: 0; -} - -/* ========================================================================== - Links - ========================================================================== */ - -/* - * Address `outline` inconsistency between Chrome and other browsers. - */ - -a:focus { - outline: thin dotted; -} - -/* - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* ========================================================================== - Typography - ========================================================================== */ - -/* - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari 5, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/* - * Address styling not present in IE 8/9, Safari 5, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/* - * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/* - * Address styling not present in Safari 5 and Chrome. - */ - -dfn { - font-style: italic; -} - -/* - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/* - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/* - * Correct font family set oddly in Safari 5 and Chrome. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, sans-serif; - font-size: 1em; -} - -/* - * Improve readability of pre-formatted text in all browsers. - */ - -pre { - white-space: pre-wrap; -} - -/* - * Set consistent quote types. - */ - -q { - quotes: "\201C" "\201D" "\2018" "\2019"; -} - -/* - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/* - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== - Embedded content - ========================================================================== */ - -/* - * Remove border when inside `a` element in IE 8/9. - */ - -img { - border: 0; -} - -/* - * Correct overflow displayed oddly in IE 9. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== - Figures - ========================================================================== */ - -/* - * Address margin not present in IE 8/9 and Safari 5. - */ - -figure { - margin: 0; -} - -/* ========================================================================== - Forms - ========================================================================== */ - -/* - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/* - * 1. Correct `color` not being inherited in IE 8/9. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/* - * 1. Correct font family not being inherited in all browsers. - * 2. Correct font size not being inherited in all browsers. - * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. - */ - -button, -input, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 2 */ - margin: 0; /* 3 */ -} - -/* - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -button, -input { - line-height: normal; -} - -/* - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. - * Correct `select` style inheritance in Firefox 4+ and Opera. - */ - -button, -select { - text-transform: none; -} - -/* - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/* - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/* - * 1. Address box sizing set to `content-box` in IE 8/9. - * 2. Remove excess padding in IE 8/9. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/* - * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/* - * Remove inner padding and search cancel button in Safari 5 and Chrome - * on OS X. - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/* - * 1. Remove default vertical scrollbar in IE 8/9. - * 2. Improve readability and alignment in all browsers. - */ - -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== - Tables - ========================================================================== */ - -/* - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} diff --git a/sass/inuitcss/generic/_pull.scss b/sass/inuitcss/generic/_pull.scss deleted file mode 100644 index 2a27352442..0000000000 --- a/sass/inuitcss/generic/_pull.scss +++ /dev/null @@ -1,148 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $PULL -\*------------------------------------*/ -/** - * Pull classes, to move grid items over to the right by certain amounts. - */ - -@mixin pull-setup($namespace: "") { - - /** - * Whole - */ - .pull--#{$namespace}one-whole { right:100%; } - - - /** - * Halves - */ - .pull--#{$namespace}one-half { right:50%; } - - - /** - * Thirds - */ - .pull--#{$namespace}one-third { right:33.333%; } - .pull--#{$namespace}two-thirds { right:66.666%; } - - - /** - * Quarters - */ - .pull--#{$namespace}one-quarter { right:25%; } - .pull--#{$namespace}two-quarters { @extend .pull--#{$namespace}one-half; } - .pull--#{$namespace}three-quarters { right:75%; } - - - /** - * Fifths - */ - .pull--#{$namespace}one-fifth { right:20%; } - .pull--#{$namespace}two-fifths { right:40%; } - .pull--#{$namespace}three-fifths { right:60%; } - .pull--#{$namespace}four-fifths { right:80%; } - - - /** - * Sixths - */ - .pull--#{$namespace}one-sixth { right:16.666%; } - .pull--#{$namespace}two-sixths { @extend .pull--#{$namespace}one-third; } - .pull--#{$namespace}three-sixths { @extend .pull--#{$namespace}one-half; } - .pull--#{$namespace}four-sixths { @extend .pull--#{$namespace}two-thirds; } - .pull--#{$namespace}five-sixths { right:83.333%; } - - - /** - * Eighths - */ - .pull--#{$namespace}one-eighth { right:12.5%; } - .pull--#{$namespace}two-eighths { @extend .pull--#{$namespace}one-quarter; } - .pull--#{$namespace}three-eighths { right:37.5%; } - .pull--#{$namespace}four-eighths { @extend .pull--#{$namespace}one-half; } - .pull--#{$namespace}five-eighths { right:62.5%; } - .pull--#{$namespace}six-eighths { @extend .pull--#{$namespace}three-quarters; } - .pull--#{$namespace}seven-eighths { right:87.5%; } - - - /** - * Tenths - */ - .pull--#{$namespace}one-tenth { right:10%; } - .pull--#{$namespace}two-tenths { @extend .pull--#{$namespace}one-fifth; } - .pull--#{$namespace}three-tenths { right:30%; } - .pull--#{$namespace}four-tenths { @extend .pull--#{$namespace}two-fifths; } - .pull--#{$namespace}five-tenths { @extend .pull--#{$namespace}one-half; } - .pull--#{$namespace}six-tenths { @extend .pull--#{$namespace}three-fifths; } - .pull--#{$namespace}seven-tenths { right:70%; } - .pull--#{$namespace}eight-tenths { @extend .pull--#{$namespace}four-fifths; } - .pull--#{$namespace}nine-tenths { right:90%; } - - - /** - * Twelfths - */ - .pull--#{$namespace}one-twelfth { right:8.333%; } - .pull--#{$namespace}two-twelfths { @extend .pull--#{$namespace}one-sixth; } - .pull--#{$namespace}three-twelfths { @extend .pull--#{$namespace}one-quarter; } - .pull--#{$namespace}four-twelfths { @extend .pull--#{$namespace}one-third; } - .pull--#{$namespace}five-twelfths { right:41.666% } - .pull--#{$namespace}six-twelfths { @extend .pull--#{$namespace}one-half; } - .pull--#{$namespace}seven-twelfths { right:58.333%; } - .pull--#{$namespace}eight-twelfths { @extend .pull--#{$namespace}two-thirds; } - .pull--#{$namespace}nine-twelfths { @extend .pull--#{$namespace}three-quarters; } - .pull--#{$namespace}ten-twelfths { @extend .pull--#{$namespace}five-sixths; } - .pull--#{$namespace}eleven-twelfths { right:91.666%; } -} - -@if $pull == true{ - -/** - * Not a particularly great selector, but the DRYest way to do things. - */ -[class*="pull--"]{ position:relative; } - -@include pull-setup(); - -@if $palm-pull == true{ - - @include media-query(palm){ - @include pull-setup("palm-"); - } - -} - -@if $lap-pull == true{ - - @include media-query(lap){ - @include pull-setup("lap-"); - } - -} - -@if $lap-and-up-pull == true{ - - @include media-query(lap-and-up){ - @include pull-setup("lap-and-up-"); - } - -} - -@if $portable-pull == true{ - - @include media-query(portable){ - @include pull-setup("portable-"); - } - -} - -@if $desk-pull == true{ - - @include media-query(desk){ - @include pull-setup("desk-"); - } - -} - -}//endif diff --git a/sass/inuitcss/generic/_push.scss b/sass/inuitcss/generic/_push.scss deleted file mode 100644 index 2921d65e74..0000000000 --- a/sass/inuitcss/generic/_push.scss +++ /dev/null @@ -1,148 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $PUSH -\*------------------------------------*/ -/** - * Push classes, to move grid items over to the right by certain amounts. - */ - -@mixin push-setup($namespace: "") { - - /** - * Whole - */ - .push--#{$namespace}one-whole { left:100%; } - - - /** - * Halves - */ - .push--#{$namespace}one-half { left:50%; } - - - /** - * Thirds - */ - .push--#{$namespace}one-third { left:33.333%; } - .push--#{$namespace}two-thirds { left:66.666%; } - - - /** - * Quarters - */ - .push--#{$namespace}one-quarter { left:25%; } - .push--#{$namespace}two-quarters { @extend .push--#{$namespace}one-half; } - .push--#{$namespace}three-quarters { left:75%; } - - - /** - * Fifths - */ - .push--#{$namespace}one-fifth { left:20%; } - .push--#{$namespace}two-fifths { left:40%; } - .push--#{$namespace}three-fifths { left:60%; } - .push--#{$namespace}four-fifths { left:80%; } - - - /** - * Sixths - */ - .push--#{$namespace}one-sixth { left:16.666%; } - .push--#{$namespace}two-sixths { @extend .push--#{$namespace}one-third; } - .push--#{$namespace}three-sixths { @extend .push--#{$namespace}one-half; } - .push--#{$namespace}four-sixths { @extend .push--#{$namespace}two-thirds; } - .push--#{$namespace}five-sixths { left:83.333%; } - - - /** - * Eighths - */ - .push--#{$namespace}one-eighth { left:12.5%; } - .push--#{$namespace}two-eighths { @extend .push--#{$namespace}one-quarter; } - .push--#{$namespace}three-eighths { left:37.5%; } - .push--#{$namespace}four-eighths { @extend .push--#{$namespace}one-half; } - .push--#{$namespace}five-eighths { left:62.5%; } - .push--#{$namespace}six-eighths { @extend .push--#{$namespace}three-quarters; } - .push--#{$namespace}seven-eighths { left:87.5%; } - - - /** - * Tenths - */ - .push--#{$namespace}one-tenth { left:10%; } - .push--#{$namespace}two-tenths { @extend .push--#{$namespace}one-fifth; } - .push--#{$namespace}three-tenths { left:30%; } - .push--#{$namespace}four-tenths { @extend .push--#{$namespace}two-fifths; } - .push--#{$namespace}five-tenths { @extend .push--#{$namespace}one-half; } - .push--#{$namespace}six-tenths { @extend .push--#{$namespace}three-fifths; } - .push--#{$namespace}seven-tenths { left:70%; } - .push--#{$namespace}eight-tenths { @extend .push--#{$namespace}four-fifths; } - .push--#{$namespace}nine-tenths { left:90%; } - - - /** - * Twelfths - */ - .push--#{$namespace}one-twelfth { left:8.333%; } - .push--#{$namespace}two-twelfths { @extend .push--#{$namespace}one-sixth; } - .push--#{$namespace}three-twelfths { @extend .push--#{$namespace}one-quarter; } - .push--#{$namespace}four-twelfths { @extend .push--#{$namespace}one-third; } - .push--#{$namespace}five-twelfths { left:41.666% } - .push--#{$namespace}six-twelfths { @extend .push--#{$namespace}one-half; } - .push--#{$namespace}seven-twelfths { left:58.333%; } - .push--#{$namespace}eight-twelfths { @extend .push--#{$namespace}two-thirds; } - .push--#{$namespace}nine-twelfths { @extend .push--#{$namespace}three-quarters; } - .push--#{$namespace}ten-twelfths { @extend .push--#{$namespace}five-sixths; } - .push--#{$namespace}eleven-twelfths { left:91.666%; } -} - -@if $push == true{ - -@include push-setup(); - -/** - * Not a particularly great selector, but the DRYest way to do things. - */ -[class*="push--"]{ position:relative; } - -@if $palm-push == true{ - - @include media-query(palm){ - @include push-setup("palm-"); - } - -} - -@if $lap-push == true{ - - @include media-query(lap){ - @include push-setup("lap-"); - } - -} - -@if $lap-and-up-push == true{ - - @include media-query(lap-and-up){ - @include push-setup("lap-and-up-"); - } - -} - -@if $portable-push == true{ - - @include media-query(portable){ - @include push-setup("portable-"); - } - -} - -@if $desk-push == true{ - - @include media-query(desk){ - @include push-setup("desk-"); - } - -} - -}//endif diff --git a/sass/inuitcss/generic/_reset.scss b/sass/inuitcss/generic/_reset.scss deleted file mode 100644 index 660a1def97..0000000000 --- a/sass/inuitcss/generic/_reset.scss +++ /dev/null @@ -1,81 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $RESET -\*------------------------------------*/ -/** - * A more considered reset; more of a restart... - * As per: csswizardry.com/2011/10/reset-restarted - */ - -@if $global-border-box == true{ - /** - * Let’s make the box model all nice, shall we...? - */ - *{ - &, - &:before, - &:after{ - @include vendor(box-sizing, border-box); - } - } -} - -/** - * The usual... - */ -h1,h2,h3,h4,h5,h6, -p,blockquote,pre, -dl,dd,ol,ul, -form,fieldset,legend, -table,th,td,caption, -hr{ - margin:0; - padding:0; -} - -/** - * Give a help cursor to elements that give extra info on `:hover`. - */ -abbr[title],dfn[title]{ - cursor:help; -} - -/** - * Remove underlines from potentially troublesome elements. - */ -u,ins{ - text-decoration:none; -} - -/** - * Apply faux underline via `border-bottom`. - */ -ins{ - border-bottom:1px solid; -} - -/** - * So that `alt` text is visually offset if images don’t load. - */ -img{ - font-style:italic; -} - -/** - * Give form elements some cursor interactions... - */ -label, -input, -textarea, -button, -select, -option{ - cursor:pointer; -} - .text-input:active, - .text-input:focus, - textarea:active, - textarea:focus{ - cursor:text; - outline:none; - } diff --git a/sass/inuitcss/generic/_shared.scss b/sass/inuitcss/generic/_shared.scss deleted file mode 100644 index 450238578a..0000000000 --- a/sass/inuitcss/generic/_shared.scss +++ /dev/null @@ -1,62 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $SHARED -\*------------------------------------*/ -/** - * Where `margin-bottom` is concerned, this value will be the same as the - * base line-height. This allows us to keep a consistent vertical rhythm. - * As per: csswizardry.com/2012/06/single-direction-margin-declarations - */ -/** - * Base elements - */ -h1,h2,h3,h4,h5,h6,hgroup, -ul,ol,dl, -blockquote,p,address, -table, -fieldset,figure, -pre, -/** - * Objects and abstractions - */ -%sass-margin-bottom, -.media, -.island, -.islet{ - margin-bottom:$base-spacing-unit; - margin-bottom:($base-spacing-unit / $base-font-size)*1rem; - - .islet &{ - margin-bottom:$base-spacing-unit / 2; - margin-bottom:(($base-spacing-unit / $base-font-size) / 2)*1rem; - } -} - - -/** - * Doubled up `margin-bottom` helper class. - */ -.landmark{ - margin-bottom:2 * $base-spacing-unit; - margin-bottom:(2 * $base-spacing-unit / $base-font-size)*1rem; -} - - -/** - * `hr` elements only take up a few pixels, so we need to give them special - * treatment regarding vertical rhythm. - */ -hr{ - margin-bottom:$base-spacing-unit - 2px; - margin-bottom:(($base-spacing-unit - 2px) / $base-font-size)*1rem; -} - - -/** - * Where `margin-left` is concerned we want to try and indent certain elements - * by a consistent amount. Define that amount once, here. - */ -ul,ol,dd{ - margin-left:2 * $base-spacing-unit; - margin-left:(2 * $base-spacing-unit / $base-font-size)*1rem; -} diff --git a/sass/inuitcss/generic/_widths.scss b/sass/inuitcss/generic/_widths.scss deleted file mode 100644 index 66d76f1a61..0000000000 --- a/sass/inuitcss/generic/_widths.scss +++ /dev/null @@ -1,159 +0,0 @@ -@charset "UTF-8"; -/*------------------------------------*\ - $WIDTHS -\*------------------------------------*/ -/** - * Sizes in human readable format. These are used in conjunction with other - * objects and abstractions found in inuit.css, most commonly the grid system - * and faux flexbox. - * - * We have a mixin to generate our widths and their breakpoint-specific - * variations. - */ - -@mixin grid-setup($namespace: "") { - /** - * Whole - */ - .#{$namespace}one-whole { width:100%; } - - - /** - * Halves - */ - .#{$namespace}one-half { width:50%; } - - - /** - * Thirds - */ - .#{$namespace}one-third { width:33.333%; } - .#{$namespace}two-thirds { width:66.666%; } - - - /** - * Quarters - */ - .#{$namespace}one-quarter { width:25%; } - .#{$namespace}two-quarters { @extend .#{$namespace}one-half; } - .#{$namespace}three-quarters { width:75%; } - - - /** - * Fifths - */ - .#{$namespace}one-fifth { width:20%; } - .#{$namespace}two-fifths { width:40%; } - .#{$namespace}three-fifths { width:60%; } - .#{$namespace}four-fifths { width:80%; } - - - /** - * Sixths - */ - .#{$namespace}one-sixth { width:16.666%; } - .#{$namespace}two-sixths { @extend .#{$namespace}one-third; } - .#{$namespace}three-sixths { @extend .#{$namespace}one-half; } - .#{$namespace}four-sixths { @extend .#{$namespace}two-thirds; } - .#{$namespace}five-sixths { width:83.333%; } - - - /** - * Eighths - */ - .#{$namespace}one-eighth { width:12.5%; } - .#{$namespace}two-eighths { @extend .#{$namespace}one-quarter; } - .#{$namespace}three-eighths { width:37.5%; } - .#{$namespace}four-eighths { @extend .#{$namespace}one-half; } - .#{$namespace}five-eighths { width:62.5%; } - .#{$namespace}six-eighths { @extend .#{$namespace}three-quarters; } - .#{$namespace}seven-eighths { width:87.5%; } - - - /** - * Tenths - */ - .#{$namespace}one-tenth { width:10%; } - .#{$namespace}two-tenths { @extend .#{$namespace}one-fifth; } - .#{$namespace}three-tenths { width:30%; } - .#{$namespace}four-tenths { @extend .#{$namespace}two-fifths; } - .#{$namespace}five-tenths { @extend .#{$namespace}one-half; } - .#{$namespace}six-tenths { @extend .#{$namespace}three-fifths; } - .#{$namespace}seven-tenths { width:70%; } - .#{$namespace}eight-tenths { @extend .#{$namespace}four-fifths; } - .#{$namespace}nine-tenths { width:90%; } - - - /** - * Twelfths - */ - .#{$namespace}one-twelfth { width:8.333%; } - .#{$namespace}two-twelfths { @extend .#{$namespace}one-sixth; } - .#{$namespace}three-twelfths { @extend .#{$namespace}one-quarter; } - .#{$namespace}four-twelfths { @extend .#{$namespace}one-third; } - .#{$namespace}five-twelfths { width:41.666% } - .#{$namespace}six-twelfths { @extend .#{$namespace}one-half; } - .#{$namespace}seven-twelfths { width:58.333%; } - .#{$namespace}eight-twelfths { @extend .#{$namespace}two-thirds; } - .#{$namespace}nine-twelfths { @extend .#{$namespace}three-quarters; } - .#{$namespace}ten-twelfths { @extend .#{$namespace}five-sixths; } - .#{$namespace}eleven-twelfths { width:91.666%; } -} - -@include grid-setup(); - - - -/** - * If you have set `$responsive` to ‘true’ in `_vars.scss` then you now have - * access to these classes. You can define at which breakpoint you’d like an - * element to be a certain size, e.g.: - * - * `
    ...
    ` - * - * This would create a `div` that, at ‘desktop’ sizes, takes up a quarter of the - * horizontal space, a half of that space at ‘tablet’ sizes, and goes full width - * at ‘mobile’ sizes. - * - * Demo: jsfiddle.net/inuitcss/WS4Ge - * - */ - -@if $responsive == true{ - -@include media-query(palm){ - @include grid-setup("palm-"); -} - -@include media-query(lap){ - @include grid-setup("lap-"); -} - -@include media-query(lap-and-up){ - @include grid-setup("lap-and-up-"); -} - -@include media-query(portable){ - @include grid-setup("portable-"); -} - -@include media-query(desk){ - @include grid-setup("desk-"); -} - - -/** - * If you have set the additional `$responsive-extra` variable to ‘true’ in - * `_vars.scss` then you now have access to the following class available to - * accomodate much larger screen resolutions. - */ - -@if $responsive-extra == true{ - -@include media-query(desk-wide){ - @include grid-setup("desk-wide-"); -} - -} - -} /* endif */ diff --git a/sass/inuitcss/objects/_arrows.scss b/sass/inuitcss/objects/_arrows.scss deleted file mode 100644 index ff81397523..0000000000 --- a/sass/inuitcss/objects/_arrows.scss +++ /dev/null @@ -1,148 +0,0 @@ -@charset "UTF-8"; -@if $use-arrows == true{ - -/*------------------------------------*\ - $ARROWS -\*------------------------------------*/ -/** - * It is a common design treatment to give an element a triangular points-out - * arrow, we typically build these with CSS. These following classes allow us to - * generate these arbitrarily with a mixin, `@arrow()`. - */ - -$arrow-size: $half-spacing-unit!default; -$arrow-border: 1!default; -$border: $arrow-size; -$arrow: $arrow-size - $arrow-border; - -/** - * Forms the basis for any/all CSS arrows. - */ -%arrow{ - position:relative; - - &:before, - &:after{ - content:""; - position:absolute; - border-collapse:separate; - } - &:before{ - border:$border solid transparent; - } - &:after{ - border:$arrow solid transparent; - } -} - - -/** - * Define individual edges so we can combine what we need, when we need. - */ -%arrow--top{ - @extend %arrow; - - &:before, - &:after{ - bottom:100%; - } -} - -%arrow--upper{ - @extend %arrow; - - &:before{ - top:$arrow; - } - &:after{ - top:$border; - } -} - -%arrow--middle{ - @extend %arrow; - - &:before, - &:after{ - top:50%; - margin-top:-$border; - } - &:after{ - margin-top:-$arrow; - } -} - -%arrow--lower{ - @extend %arrow; - - &:before{ - bottom:$arrow; - } - &:after{ - bottom:$border; - } -} - -%arrow--bottom{ - @extend %arrow; - - &:before, - &:after{ - top:100%; - } -} - -%arrow--near{ - @extend %arrow; - - &:before, - &:after{ - right:100%; - } -} - -%arrow--left{ - @extend %arrow; - - &:before{ - left:$arrow; - } - &:after{ - left:$border; - } -} - -%arrow--center{ - @extend %arrow; - - &:before, - &:after{ - left:50%; - margin-left:-$border; - } - &:after{ - margin-left:-$arrow; - } -} - -%arrow--right{ - @extend %arrow; - - &:before{ - right:$arrow; - } - &:after{ - right:$border; - } -} - -%arrow--far{ - @extend %arrow; - - &:before, - &:after{ - left:100%; - } -} - -}//endif diff --git a/sass/inuitcss/objects/_beautons.scss b/sass/inuitcss/objects/_beautons.scss deleted file mode 100644 index cdb9a3becf..0000000000 --- a/sass/inuitcss/objects/_beautons.scss +++ /dev/null @@ -1,227 +0,0 @@ -@charset "UTF-8"; -@if $use-beautons == true{ - -/*------------------------------------*\ - $BEAUTONS.CSS -\*------------------------------------*/ -/** - * beautons is a beautifully simple button toolkit. - * - * LICENSE - * - * Copyright 2013 Harry Roberts - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - - -/*!* - * - * @csswizardry -- csswizardry.com/beautons - * - */ - - - - - -/*------------------------------------*\ - $BASE -\*------------------------------------*/ -/** - * Base button styles. - * - * 1. Allow us to better style box model properties. - * 2. Line different sized buttons up a little nicer. - * 3. Stop buttons wrapping and looking broken. - * 4. Make buttons inherit font styles. - * 5. Force all elements using beautons to appear clickable. - * 6. Normalise box model styles. - * 7. If the button’s text is 1em, and the button is (3 * font-size) tall, then - * there is 1em of space above and below that text. We therefore apply 1em - * of space to the left and right, as padding, to keep consistent spacing. - * 8. Basic cosmetics for default buttons. Change or override at will. - * 9. Don’t allow buttons to have underlines; it kinda ruins the illusion. - */ -.btn{ - display:inline-block; /* [1] */ - vertical-align:middle; /* [2] */ - white-space:nowrap; /* [3] */ - font-family:inherit; /* [4] */ - font-size:100%; /* [4] */ - cursor:pointer; /* [5] */ - border:none; /* [6] */ - margin:0; /* [6] */ - padding-top: 0; /* [6] */ - padding-bottom:0; /* [6] */ - line-height:3; /* [7] */ - padding-right:1em; /* [7] */ - padding-left: 1em; /* [7] */ - border-radius:$brand-round; /* [8] */ -} - -.btn{ - - &, - &:hover{ - text-decoration:none; /* [9] */ - } - - &:active, - &:focus{ - outline:none; - } -} - - - - - -/*------------------------------------*\ - $SIZES -\*------------------------------------*/ -/** - * Button size modifiers. - * - * These all follow the same sizing rules as above; text is 1em, space around it - * remains uniform. - */ -.btn--small{ - padding-right:0.5em; - padding-left: 0.5em; - line-height:2; -} - -.btn--large{ - padding-right:1.5em; - padding-left: 1.5em; - line-height:4; -} - -.btn--huge{ - padding-right:2em; - padding-left: 2em; - line-height:5; -} - -/** - * These buttons will fill the entirety of their container. - * - * 1. Remove padding so that widths and paddings don’t conflict. - */ -.btn--full{ - width:100%; - padding-right:0; /* [1] */ - padding-left: 0; /* [1] */ - text-align:center; -} - - - - - -/*------------------------------------*\ - $FONT-SIZES -\*------------------------------------*/ -/** - * Button font-size modifiers. - */ -.btn--alpha{ - font-size:3rem; -} - -.btn--beta{ - font-size:2rem; -} - -.btn--gamma{ - font-size:1rem; -} - -/** - * Make the button inherit sizing from its parent. - */ -.btn--natural{ - vertical-align:baseline; - font-size:inherit; - line-height:inherit; - padding-right:0.5em; - padding-left: 0.5em; -} - - - - - -/*------------------------------------*\ - $FUNCTIONS -\*------------------------------------*/ -/** - * Button function modifiers. - */ -.btn--primary{} -.btn--secondary{} -.btn--tertiary{} - -/** - * Positive actions; e.g. sign in, purchase, submit, etc. - */ -.btn--positive{ - background-color:#4A993E; - color:#fff; -} - -/** - * Negative actions; e.g. close account, delete photo, remove friend, etc. - */ -.btn--negative{ - background-color:#b33630; - color:#fff; -} - -/** - * Inactive, disabled buttons. - * - * 1. Make the button look like normal text when hovered. - */ -.btn--inactive, - .btn--inactive:hover, - .btn--inactive:active, - .btn--inactive:focus{ - background-color:#ddd; - color:#777; - cursor:text; /* [1] */ - } - - - - - -/*------------------------------------*\ - $STYLES -\*------------------------------------*/ -/** - * Button style modifiers. - * - * 1. Use an overly-large number to ensure completely rounded, pill-like ends. - */ -.btn--soft{ - border-radius:200px; /* [1] */ -} - -.btn--hard{ - border-radius:0; -} - -}//endif diff --git a/sass/inuitcss/objects/_block-list.scss b/sass/inuitcss/objects/_block-list.scss deleted file mode 100644 index d1a414b5d8..0000000000 --- a/sass/inuitcss/objects/_block-list.scss +++ /dev/null @@ -1,45 +0,0 @@ -@charset "UTF-8"; -@if $use-block-list == true or $use-matrix == true{ - -/*------------------------------------*\ - $BLOCK-LIST -\*------------------------------------*/ -/** - * Create big blocky lists of content, e.g.: - * - - * - * Extend this object in your theme stylesheet. - * - * Demo: jsfiddle.net/inuitcss/hR57q - * - */ -.block-list{ - - &, - > li{ - border:0 solid $base-ui-color; - } -} -.block-list{ - list-style:none; - margin-left:0; - border-top-width:1px; - - > li{ - border-bottom-width:1px; - padding:$half-spacing-unit; - } -} - .block-list__link{ - display:block; - padding:$half-spacing-unit; - margin:-$half-spacing-unit; - } - -}//endif diff --git a/sass/inuitcss/objects/_breadcrumb.scss b/sass/inuitcss/objects/_breadcrumb.scss deleted file mode 100644 index 1741b952ea..0000000000 --- a/sass/inuitcss/objects/_breadcrumb.scss +++ /dev/null @@ -1,64 +0,0 @@ -@charset "UTF-8"; -@if $use-breadcrumb == true{ - -/*------------------------------------*\ - $BREADCRUMB -\*------------------------------------*/ -/** - * Simple breadcrumb styling to apply to (ordered) lists. Extends `.nav`, e.g.: - * - - * - * Demo: jsfiddle.net/inuitcss/rkAY9 - * - */ -.breadcrumb > li + li:before{ - content:"\00BB" "\00A0"; -} - - -/** - * For denoting a path-like structure, GitHub style, e.g.: - * - - * - */ -.breadcrumb--path > li + li:before{ - content:"\002F" "\00A0"; -} - - -/** - * Assign a delimiter on the fly through a data attribute, e.g.: - * - - * - */ -.breadcrumb > li + li[data-breadcrumb]:before{ - content:attr(data-breadcrumb) "\00A0"; -} - - -/** - * Denote the root of the tree. - */ -.breadcrumb__root{ - font-weight:bold; -} - -}//endif diff --git a/sass/inuitcss/objects/_columns.scss b/sass/inuitcss/objects/_columns.scss deleted file mode 100644 index 07ff09ab90..0000000000 --- a/sass/inuitcss/objects/_columns.scss +++ /dev/null @@ -1,23 +0,0 @@ -@charset "UTF-8"; -@if $use-columns == true{ - -/*------------------------------------*\ - $COLUMNS -\*------------------------------------*/ -/** - * Here we can set elements in columns of text using CSS3, e.g.: - * -

    - * - * Demo: jsfiddle.net/inuitcss/E26Yd - * - */ -%text-cols{ - @include vendor(column-gap, $base-spacing-unit); -} -.text-cols--2 { @extend %text-cols; @include vendor(column-count, 2); } -.text-cols--3 { @extend %text-cols; @include vendor(column-count, 3); } -.text-cols--4 { @extend %text-cols; @include vendor(column-count, 4); } -.text-cols--5 { @extend %text-cols; @include vendor(column-count, 5); } - -}//endif diff --git a/sass/inuitcss/objects/_flexbox.scss b/sass/inuitcss/objects/_flexbox.scss deleted file mode 100644 index 7675a5a195..0000000000 --- a/sass/inuitcss/objects/_flexbox.scss +++ /dev/null @@ -1,56 +0,0 @@ -@charset "UTF-8"; -@if $use-flexbox == true{ - -/*------------------------------------*\ - $FLEXBOX -\*------------------------------------*/ -/** - * Until we can utilise flexbox natively we can kinda, sorta, attempt to emulate - * it, in a way... e.g.: - * -

    - -
    - Welcome to -
    - -
    - inuit.css -
    - -
    - * - * We can also combine our grid system classes with `.flexbox__item` classes, - * e.g.: - * -
    -
    -
    -
    -
    -
    - * - * It’s pretty poorly named I’m afraid, but it works... - * - * Demo: jsfiddle.net/inuitcss/ufUh2 - * - */ -.flexbox{ - display:table; - width:100%; -} - -/** - * Nasty hack to circumvent Modernizr conflicts. - */ -html.flexbox{ - display:block; - width:auto; -} - - .flexbox__item{ - display:table-cell; - vertical-align:middle; - } - -}//endif diff --git a/sass/inuitcss/objects/_flyout.scss b/sass/inuitcss/objects/_flyout.scss deleted file mode 100644 index ed53c7eef6..0000000000 --- a/sass/inuitcss/objects/_flyout.scss +++ /dev/null @@ -1,64 +0,0 @@ -@charset "UTF-8"; -@if $use-flyout == true{ - -/*------------------------------------*\ - $FLYOUT -\*------------------------------------*/ -/** - * Flyouts are pieces of content that fly out of a parent when said parent is - * hovered. They typically appear bottom-left of the parent. - * -
    - Foo -
    -

    Lorem

    -

    Ipsum

    -
    -
    - * - * Extend these objects in your theme stylesheet. - * - * Demo: jsfiddle.net/inuitcss/B52HG - * - */ -.flyout, -.flyout--alt{ - position:relative; - overflow:hidden; -} - .flyout__content{ - /** - * Position the flyouts off-screen. This is typically better than - * `display:none;`. - */ - position:absolute; - top:100%; - left:-99999px; - } - - /** - * Bring the flyouts into view when you hover their parents. - * Two different types of flyout; ‘regular’ (`.flyout`) and ‘alternative’ - * (`.flyout--alt`). - */ - .flyout:hover, - .flyout--alt:hover{ - overflow:visible; - } - - /** - * Regular flyouts sit all the way from the top, flush left. - */ - .flyout:hover > .flyout__content{ - left:0; - } - - /** - * Alternative flyouts sit all the way from the left, flush top. - */ - .flyout--alt:hover > .flyout__content{ - top:0; - left:100%; - } - -}//endif diff --git a/sass/inuitcss/objects/_greybox.scss b/sass/inuitcss/objects/_greybox.scss deleted file mode 100644 index b824a5db63..0000000000 --- a/sass/inuitcss/objects/_greybox.scss +++ /dev/null @@ -1,59 +0,0 @@ -@charset "UTF-8"; -@if $use-greybox == true{ - -/*------------------------------------*\ - $GREYBOX -\*------------------------------------*/ -/** - * Quickly throw together greybox wireframes. Use in conjunction with other - * inuit.css objects to create simple greybox prototypes, e.g.: - * -
    Header
    - - - * - * The beauty of combining the greyboxing with inuit.css objects is that any - * prototyping can quickly be converted into/used as production code. - * - * For a more complete prototyping framework, consider Adam Whitcroft’s Proto: - * adamwhitcroft.com/proto - * - * Demo: jsfiddle.net/inuitcss/qCXfh/ - * - */ -.greybox, -.graybox{ - @include font-size(12px); - font-family:sans-serif; - text-align:center; - background-color:rgba(0,0,0,0.2); - color:#fff; -} - .greybox a, - .graybox a{ - color:#fff; - text-decoration:underline; - } - - -/** - * All greyboxes will occupy 100% of their parent’s width, but to alter their - * heights we apply incrementally larger line-heights: - */ -.greybox--small, -.graybox--small { line-height: 2 * $base-line-height; } -.greybox--medium, -.graybox--medium { line-height: 4 * $base-line-height; } -.greybox--large, -.graybox--large { line-height: 8 * $base-line-height; } -.greybox--huge, -.graybox--huge { line-height:16 * $base-line-height; } -.greybox--gigantic, -.graybox--gigantic { line-height:32 * $base-line-height; } - -}//endif diff --git a/sass/inuitcss/objects/_grids.scss b/sass/inuitcss/objects/_grids.scss deleted file mode 100644 index 9499e5ed61..0000000000 --- a/sass/inuitcss/objects/_grids.scss +++ /dev/null @@ -1,69 +0,0 @@ -@if $use-grids == true{ - -/*------------------------------------*\ - $GRIDS -\*------------------------------------*/ -/** - * Fluid and nestable grid system, e.g.: - * -
    - -
    -

    Two thirds grid

    -
    -

    One half grid

    -
    -

    One quarter grid

    -
    -

    One quarter grid

    -
    - -
    - * - * Demo: jsfiddle.net/inuitcss/CLYUC - * - */ - - -/** - * Grid wrapper - */ -.grid{ - margin-left:-$base-spacing-unit; - list-style:none; - margin-bottom:0; -} - - - /** - * Very infrequently occuring grid wrappers as children of grid wrappers. - */ - .grid > .grid{ - margin-left:0; - } - - - /** - * Grid - */ - .grid__item{ - display:inline-block; - width:100%; - padding-left:$base-spacing-unit; - vertical-align:top; - @if $global-border-box == false{ - @include vendor(box-sizing, border-box); - } - } - -}//endif diff --git a/sass/inuitcss/objects/_icon-text.scss b/sass/inuitcss/objects/_icon-text.scss deleted file mode 100644 index 0f8250ff3b..0000000000 --- a/sass/inuitcss/objects/_icon-text.scss +++ /dev/null @@ -1,40 +0,0 @@ -@if $use-icon-text == true{ - -/*------------------------------------*\ - $ICON-TEXT -\*------------------------------------*/ -/** - * For text-links etc that have an icon with them. Sometimes whitespace would - * suffice in creating a gap between the icon and text, for example: - * - - Help & support - - * - * However we will sometimes want a larger, explicity set gap: - - Help & support - - * - * Demo: jsfiddle.net/inuitcss/Q6Lbf - * - */ -.icon-text > .icon-text__icon{ - margin-right:$half-spacing-unit / 2; -} - - -/** - * We can also reverse the direction of the margin for icons that appear to the - * right of the text content, thus: - * - - Help & support - - * - */ -.icon-text--rev > .icon-text__icon{ - margin-left:$half-spacing-unit / 2; -} - -}//endif diff --git a/sass/inuitcss/objects/_island.scss b/sass/inuitcss/objects/_island.scss deleted file mode 100644 index 0b2c3ec1cf..0000000000 --- a/sass/inuitcss/objects/_island.scss +++ /dev/null @@ -1,38 +0,0 @@ -@if $use-island == true{ - -/*------------------------------------*\ - $ISLAND -\*------------------------------------*/ -/** - * Simple, boxed off content, as per: csswizardry.com/2011/10/the-island-object - * E.g.: - * -
    - I am boxed off. -
    - * - * Demo: jsfiddle.net/inuitcss/u8pV3 - * - */ -.island, -.islet{ - display:block; - @extend .cf; -} -.island{ - padding:$base-spacing-unit; -} - .island > :last-child, - .islet > :last-child{ - margin-bottom:0; - } - - -/** - * Just like `.island`, only smaller. - */ -.islet{ - padding:$half-spacing-unit; -} - -}//endif diff --git a/sass/inuitcss/objects/_link-complex.scss b/sass/inuitcss/objects/_link-complex.scss deleted file mode 100644 index d2ef9c03d7..0000000000 --- a/sass/inuitcss/objects/_link-complex.scss +++ /dev/null @@ -1,32 +0,0 @@ -@if $use-link-complex == true{ - -/*------------------------------------*\ - $LINK-COMPLEX -\*------------------------------------*/ -/** - * As inspired by @necolas: - * github.com/necolas/suit-utils/blob/master/link.css#L18 - * - * Add hover behaviour to only selected items within links, e.g.: - * - - - Log in - - * - * Demo: jsfiddle.net/inuitcss/rt9M3 - * - */ -.link-complex, -.link-complex:hover, -.link-complex:active, -.link-complex:focus{ - text-decoration:none; -} - .link-complex:hover .link-complex__target, - .link-complex:active .link-complex__target, - .link-complex:focus .link-complex__target{ - text-decoration:underline; - } - -}//endif diff --git a/sass/inuitcss/objects/_lozenges.scss b/sass/inuitcss/objects/_lozenges.scss deleted file mode 100644 index ecfdf11db8..0000000000 --- a/sass/inuitcss/objects/_lozenges.scss +++ /dev/null @@ -1,47 +0,0 @@ -@charset "UTF-8"; -@if $use-lozenges == true{ - -/*------------------------------------*\ - $LOZENGES -\*------------------------------------*/ -/** - * Create pill- and lozenge-like runs of text, e.g.: - * -

    This here is a pill!

    - * -

    This here is also a lozenge!

    - * - * Pills have fully rounded ends, lozenges have only their corners rounded. - * - * Demo: jsfiddle.net/inuitcss/N3pGm - * - */ -.pill{ - display:inline-block; - /** - * These numbers set in ems mean that, at its narrowest, a lozenge will be - * the same width as the `line-height` set on the `html` element. - * This allows us to use the `.loz` in almost any `font-size` we wish. - */ - min-width: ($line-height-ratio * 0.666667) * 1em; - padding-right:($line-height-ratio * 0.166667) * 1em; - padding-left: ($line-height-ratio * 0.166667) * 1em; - /* =1.50em */ - text-align:center; - background-color:$base-ui-color; - color:#fff; /* Override this color in your theme stylesheet */ - - /** - * Normally we’d use border-radius:100%; but instead here we just use an - * overly large number; `border-radius:100%;` would create an oval on - * non-square elements whereas we just want to round the ends of an element. - */ - border-radius:100px; -} - -.loz{ - @extend .pill; - border-radius:$brand-round; -} - -}//endif diff --git a/sass/inuitcss/objects/_marginalia.scss b/sass/inuitcss/objects/_marginalia.scss deleted file mode 100644 index b61bce31c4..0000000000 --- a/sass/inuitcss/objects/_marginalia.scss +++ /dev/null @@ -1,53 +0,0 @@ -@charset "UTF-8"; -@if $use-marginalia == true{ - -/*------------------------------------*\ - $MARGINALIA -\*------------------------------------*/ -/** - * Marginalia are, per definition, notes in the margin of a document. The - * `marginalia__body` class can be applied to all kinds of content, like text or - * images, and is joined by a width class: - * -
    -
    -
    - * - * Demo: jsfiddle.net/inuitcss/AemkH - * - */ -.marginalia{ - @include font-size($milli-size); -} - -/** - * Wait for a certain breakpoint to trigger ‘proper' marginalia. Up to this point, - * marginalia are inline with the other text. - */ -@media (min-width: $desk-start){ - .marginalia{ - position:relative; - } - - .marginalia__body, - .marginalia__body--right{ - position:absolute; - } - - .marginalia__body{ - right:100%; - padding-right:$base-spacing-unit; - text-align:right; - } - - /** - * Align marginalia to the right of the text. - */ - .marginalia__body--right{ - left:100%; - padding-left:$base-spacing-unit; - text-align:left; - } -} - -}//endif diff --git a/sass/inuitcss/objects/_matrix.scss b/sass/inuitcss/objects/_matrix.scss deleted file mode 100644 index cbf5cad832..0000000000 --- a/sass/inuitcss/objects/_matrix.scss +++ /dev/null @@ -1,89 +0,0 @@ -@if $use-matrix == true{ - -/*------------------------------------*\ - $MATRIX -\*------------------------------------*/ -/** - * Create a grid of items out of a single list, e.g.: - * -
      -
    • Lorem
    • -
    • Ipsum dolor
    • -
    • Sit
    • -
    • Amet
    • -
    • Consectetuer
    • -
    - * - * Extend this object in your theme stylesheet. - * - * Demo: jsfiddle.net/inuitcss/Y2zrU - * - */ -.matrix{ - @extend .block-list; - border-left-width:1px; - @extend .cf; - - > li{ - float:left; - border-right-width:1px; - @if $global-border-box == false{ - @include vendor(box-sizing, border-box); - } - } -} - .matrix__link{ - @extend .block-list__link; - } - - -/** - * The `.multi-list` object is a lot like the `.matrix` object only without the - * blocky borders and padding. - * -
      -
    • Lorem
    • -
    • Ipsum
    • -
    • Dolor
    • -
    • Sit
    • -
    - * - * Demo: jsfiddle.net/inuitcss/Y2zrU - * - */ -.multi-list{ - list-style:none; - margin-left:0; - @extend .cf; -} - .multi-list > li{ - float:left; - } - - - /** - * Apply these classes alongside the `.matrix` or `.multi-list` classes on - * lists to determine how wide their columns are. - */ - .two-cols > li{ - width:50%; - } - .three-cols > li{ - width:33.333%; - } - .four-cols > li{ - width:25%; - } - .five-cols > li{ - width:20%; - } - /** - * Unfortunately we have to qualify this selector in order to bring its - * specificity above the `.[number]-cols > li` selectors above. - */ - .matrix > .all-cols, - .multi-list > .all-cols{ - width:100%; - } - -}//endif diff --git a/sass/inuitcss/objects/_media.scss b/sass/inuitcss/objects/_media.scss deleted file mode 100644 index a88cd0bad8..0000000000 --- a/sass/inuitcss/objects/_media.scss +++ /dev/null @@ -1,60 +0,0 @@ -@if $use-media == true{ - -/*------------------------------------*\ - $MEDIA -\*------------------------------------*/ -/** - * Place any image- and text-like content side-by-side, as per: - * stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code - * E.g.: - * -
    - -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, - sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

    -
    - * - * Demo: jsfiddle.net/inuitcss/cf4Qs - * - */ -.media{ - display:block; - @extend .cf; -} - .media__img{ - float:left; - margin-right:$base-spacing-unit; - } - /** - * Reversed image location (right instead of left). - */ - .media__img--rev{ - float:right; - margin-left:$base-spacing-unit; - } - - .media__img img, - .media__img--rev img{ - display:block; - } - - .media__body{ - overflow:hidden; - } - .media__body, - .media__body > :last-child{ - margin-bottom:0; - } - - - /** - * `.img`s in `.islet`s need an appropriately sized margin. - */ - .islet .media__img{ - margin-right:$half-spacing-unit; - } - .islet .media__img--rev{ - margin-left:$half-spacing-unit; - } - -}//endif diff --git a/sass/inuitcss/objects/_nav.scss b/sass/inuitcss/objects/_nav.scss deleted file mode 100644 index 67d4835c39..0000000000 --- a/sass/inuitcss/objects/_nav.scss +++ /dev/null @@ -1,155 +0,0 @@ -@if $use-nav == true or $use-options == true or $use-pagination == true or $use-breadcrumb == true{ - -/*------------------------------------*\ - $NAV -\*------------------------------------*/ -/** - * Nav abstraction as per: csswizardry.com/2011/09/the-nav-abstraction - * When used on an `ol` or `ul`, this class throws the list into horizontal mode - * e.g.: - * - - * - * Demo: jsfiddle.net/inuitcss/Vnph4 - * - */ -.nav{ - list-style:none; - margin-left:0; - @extend .cf; - - > li{ - - &, - > a{ - display:inline-block; - *display:inline; - zoom:1; - } - } -} - - -/** - * `.nav--stacked` extends `.nav` and throws the list into vertical mode, e.g.: - * - - * - */ -.nav--stacked{ - - > li{ - display:list-item; - - > a{ - display:block; - } - } -} - - -/** - * `.nav--banner` extends `.nav` and centres the list, e.g.: - * - - * - */ -.nav--banner{ - text-align:center; -} - - -/** - * Give nav links a big, blocky hit area. Extends `.nav`, e.g.: - * - - * - */ -.nav--block{ - line-height:1; - /** - * Remove whitespace caused by `inline-block`. - */ - letter-spacing:-0.31em; - word-spacing:-0.43em; - white-space:nowrap; - - > li{ - letter-spacing:normal; - word-spacing:normal; - - > a{ - padding:$half-spacing-unit; - } - } -} - - -/** - * Force a nav to occupy 100% of the available width of its parent. Extends - * `.nav`, e.g.: - * - - * - * Thanks to @pimpl for this idea! - */ -.nav--fit{ - display:table; - width:100%; - - > li{ - display:table-cell; - - > a{ - display:block; - } - } -} - - -/** - * Make a list of keywords. Extends `.nav`, e.g.: - * - ` - * - * Demo: jsfiddle.net/inuitcss/vwfaf - * - */ -.options{ - @extend .nav--block; - - > li{ - - > a{ - border:0 solid $base-ui-color; - border-width:1px; - border-left-width:0; - } - - &:first-child > a{ - border-left-width:1px; - border-top-left-radius:$brand-round; - border-bottom-left-radius:$brand-round; - } - - &:last-child > a{ - border-top-right-radius:$brand-round; - border-bottom-right-radius:$brand-round; - } - } -} - -}//endif diff --git a/sass/inuitcss/objects/_pagination.scss b/sass/inuitcss/objects/_pagination.scss deleted file mode 100644 index 999f94f6e2..0000000000 --- a/sass/inuitcss/objects/_pagination.scss +++ /dev/null @@ -1,50 +0,0 @@ -@if $use-pagination == true{ - -/*------------------------------------*\ - $PAGINATION -\*------------------------------------*/ -/** - * Basic pagination object, extends `.nav`. - * Requires some funky commenting to collapse any white-space caused by the - * `display:inline-block;` rules. - * - - * - * Demo: jsfiddle.net/inuitcss/9Y6PU - * - */ -.pagination{ - text-align:center; - /** - * Remove whitespace caused by `inline-block`. - */ - letter-spacing:-0.31em; - word-spacing:-0.43em; -} - .pagination > li{ - padding:$base-spacing-unit / 2; - letter-spacing:normal; - word-spacing:normal; - } - .pagination > li > a{ - padding:$base-spacing-unit / 2; - margin:-$base-spacing-unit / 2; - } - .pagination__first a:before{ - content:"\00AB" "\00A0"; - } - .pagination__last a:after{ - content:"\00A0" "\00BB"; - } - -}//endif diff --git a/sass/inuitcss/objects/_rules.scss b/sass/inuitcss/objects/_rules.scss deleted file mode 100644 index 12844f7bda..0000000000 --- a/sass/inuitcss/objects/_rules.scss +++ /dev/null @@ -1,66 +0,0 @@ -@charset "UTF-8"; -@if $use-rules == true{ - -/*------------------------------------*\ - $RULES -\*------------------------------------*/ -/** - * Horizontal rules, extend `hr`. - * - * Demo: jsfiddle.net/inuitcss/L6GuZ - * - */ -.rule{ - color:$base-ui-color; - border:none; - border-bottom-width:1px; - border-bottom-style:solid; - margin-bottom:$base-spacing-unit - 1px; - margin-bottom:(($base-spacing-unit - 1px) / $base-font-size)*1rem; -} - - -/** - * Dotted rules - */ -.rule--dotted{ - border-bottom-style:dotted; -} - - -/** - * Dashed rules - */ -.rule--dashed{ - border-bottom-style:dashed; -} - - -/** - * Ornamental rules. Places a § over the rule. - */ -.rule--ornament{ - position:relative; - - &:after{ - content:"\00A7"; - position:absolute; - top: 0; - right: 0; - left: 0; - line-height:0; - text-align:center; - } - - /** - * Pass in an arbitrary ornament though a data attribute, e.g.: - * -
    - * - */ - &[data-ornament]:after{ - content:attr(data-ornament); - } -} - -}//endif diff --git a/sass/inuitcss/objects/_split.scss b/sass/inuitcss/objects/_split.scss deleted file mode 100644 index 6023bafb39..0000000000 --- a/sass/inuitcss/objects/_split.scss +++ /dev/null @@ -1,40 +0,0 @@ -@charset "UTF-8"; -@if $use-split == true{ - -/*------------------------------------*\ - $SPLIT -\*------------------------------------*/ -/** - * Simple split item for creating two elements floated away from one another, - * e.g.: - * -
    -
    Burger and fries
    -
    £5.99
    -
    Fillet steak
    -
    £19.99
    -
    Ice cream
    -
    £2.99
    -
    - * -
      -
    1. 1st place Bob
    2. -
    3. 2nd place Lilly
    4. -
    5. 3rd place Ted
    6. -
    ​ - * - * Demo: jsfiddle.net/inuitcss/9gZW7 - * - */ -.split{ - text-align:right; - list-style:none; - margin-left:0; -} - .split__title{ - text-align:left; - float:left; - clear:left; - } - -}//endif diff --git a/sass/inuitcss/objects/_sprite.scss b/sass/inuitcss/objects/_sprite.scss deleted file mode 100644 index 898646bc7c..0000000000 --- a/sass/inuitcss/objects/_sprite.scss +++ /dev/null @@ -1,99 +0,0 @@ -@charset "UTF-8"; -@if $use-sprite == true{ - -/*------------------------------------*\ - $SPRITE -\*------------------------------------*/ -/** - * Giving an element a class of `.sprite` will throw it into ‘sprite’ mode and apply - * a background image e.g.: - * - More info… - * - * or - * - Help and FAQ - * - * Giving an element a class of `.icon` will throw it into ‘icon’ mode and will - * not add a background, but should be used for icon fonts and is populated - * through a `data-icon` attribute and the `:after` pseudo-element, e.g.: - * - View your favourites - * - * Where ‘’ might map to a star in your particular icon font. - * - * These all require extension in your theme stylesheet, e.g. in your own CSS: - * - .sprite{ - background-image:url(path/to/your/sprite.png); - } - .sprite--link{ background-position:0 0 ; } - .sprite--star{ background-position:0 -16px; } - * - * Demo: jsfiddle.net/inuitcss/6TKuS - * - */ -.sprite, -.icon{ - display:inline-block; - line-height:1; - position:relative; - vertical-align:middle; - zoom:1; - /** - * So using `.icon` on certain elements doesn’t make a visual difference. - */ - font-style:normal; - font-weight:normal; - /** - * So icons added using `.icon` sit in the centre of the element. - */ - text-align:center; -} -.sprite{ - /** - * The typical size of most icons. Override in your theme stylesheet. - */ - width: 16px; - height:16px; - top:-1px; - - /* - * H5BP method image replacement: - * github.com/h5bp/html5-boilerplate/commit/adecc5da035d6d76b77e3fa95c6abde841073da2 - */ - overflow:hidden; - *text-indent:-9999px; - - &:before{ - content:""; - display:block; - width:0; - height:100%; - } -} - -/** - * Set up icon font - */ -.icon{ - font-size:16px; - /** - * Place the icon in a box the exact same dimensions as the icon itself. - */ - width:1em; - height:1em; - - &:before{ - content:attr(data-icon); - } -} - -/** - * Icon size modifiers. - */ -.icon--large { font-size:32px; } -.icon--huge { font-size:64px; } -.icon--natural { font-size:inherit; } - -}//endif diff --git a/sass/inuitcss/objects/_stats.scss b/sass/inuitcss/objects/_stats.scss deleted file mode 100644 index 9445ca8129..0000000000 --- a/sass/inuitcss/objects/_stats.scss +++ /dev/null @@ -1,53 +0,0 @@ -@charset "UTF-8"; -@if $use-stats == true{ - - /*------------------------------------*\ - $STATS - \*------------------------------------*/ - /** - * Simple object to display key–value statistic-like information, e.g.: - * -
    -
    -
    Tweets
    -
    27,740
    -
    - -
    -
    Following
    -
    11,529
    -
    - -
    -
    Followers
    -
    12,105
    -
    -
    - * - * Demo: jsfiddle.net/inuitcss/Bpwu6 - * - */ - .stat-group{ - @extend .cf; - margin-left:-$base-spacing-unit; -} - .stat{ - float:left; - margin-left:$base-spacing-unit; - display:-ms-flexbox; - display:-webkit-flex; - display: -moz-flex; - display: flex; - @include vendor(flex-direction, column); - } - .stat__title{ - @include vendor(order, 2); - -ms-flex-order:2; - } - .stat__value{ - margin-left:0; - @include vendor(order, 1); - -ms-flex-order:1; - } - -}//endif diff --git a/sass/inuitcss/objects/_this-or-this.scss b/sass/inuitcss/objects/_this-or-this.scss deleted file mode 100644 index 62a2413b64..0000000000 --- a/sass/inuitcss/objects/_this-or-this.scss +++ /dev/null @@ -1,38 +0,0 @@ -@if $use-this-or-this == true{ - -/*------------------------------------*\ - $THIS-OR-THIS -\*------------------------------------*/ -/** - * Simple options object to provide multiple choices, e.g.: - * -

    - - Free - - - or - - - Pro - -

    - * - * The `.this-or-this__this` and `.this-or-this__or` objects can be sized using - * the grid-system classes. - * - * Demo: jsfiddle.net/inuitcss/R3sks - * - */ -.this-or-this{ - display:table; - width:100%; - text-align:center; -} - .this-or-this__this, - .this-or-this__or{ - display:table-cell; - vertical-align:middle; - } - -}//endif diff --git a/sass/oscailte/_mixins.scss b/sass/oscailte/_mixins.scss deleted file mode 100644 index 01885fe6b5..0000000000 --- a/sass/oscailte/_mixins.scss +++ /dev/null @@ -1,57 +0,0 @@ -@mixin content-columns($columnCount, $columnGap: $gridGutterWidth) { - -webkit-column-count: $columnCount; - -moz-column-count: $columnCount; - column-count: $columnCount; - -webkit-column-gap: $columnGap; - -moz-column-gap: $columnGap; - column-gap: $columnGap; -} - -@mixin transition($transition...) { - -webkit-transition: $transition; - -moz-transition: $transition; - -o-transition: $transition; - transition: $transition; -} - -@mixin box-sizing($boxmodel) { - -webkit-box-sizing: $boxmodel; - -moz-box-sizing: $boxmodel; - box-sizing: $boxmodel; -} - -@mixin border-radius($radius) { - -webkit-border-radius: $radius; - -moz-border-radius: $radius; - border-radius: $radius; -} - -@mixin box-shadow($shadow...) { - -webkit-box-shadow: $shadow; - -moz-box-shadow: $shadow; - -ms-box-shadow: $shadow; - -o-box-shadow: $shadow; - box-shadow: $shadow; -} - -@mixin gradient-horizontal($startColor: $button-color, $endColor: darken($button-color, 5%)) { - background-color: $endColor; - background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+ - background-image: -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ - background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+ - background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10 - background-image: linear-gradient(to right, $startColor, $endColor); // Standard, IE10 - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=1); // IE9 and down -} - -@mixin gradient-vertical($startColor: $button-color, $endColor: darken($button-color, 5%)) { - background-color: mix($startColor, $endColor, 60%); - background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+ - background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+ - background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+ - background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10 - background-image: linear-gradient(to bottom, $startColor, $endColor); // Standard, IE10 - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=0); // IE9 and down -} \ No newline at end of file diff --git a/sass/oscailte/_oscailte.scss b/sass/oscailte/_oscailte.scss deleted file mode 100644 index 972226c6fa..0000000000 --- a/sass/oscailte/_oscailte.scss +++ /dev/null @@ -1,28 +0,0 @@ -@import "variables"; -@import "mixins"; - -@import "../inuitcss/_inuit"; -@import "../fontawesome/font-awesome"; - -@import "base/global"; -@import "base/grid"; -@import "base/header"; -@import "base/navigation"; -@import "base/footer"; -@import "base/post"; -@import "base/archive_list"; -@import "base/solarized"; - -@import "base/sidebar"; -@import "aside/recent_posts"; -@import "aside/github"; -@import "aside/pinboard"; -@import "aside/social"; - -@import "homepage/home"; -@import "homepage/hero_unit"; - -@import "helpers/classes"; -@import "helpers/grid-fix"; - -@import "custom/**/*" diff --git a/sass/oscailte/_variables.scss b/sass/oscailte/_variables.scss deleted file mode 100644 index 3d629649b7..0000000000 --- a/sass/oscailte/_variables.scss +++ /dev/null @@ -1,64 +0,0 @@ -$use-grids: true; -$site-width: 1100px; -$responsive: true; -$use-gridfix: true; - -// Fonts & Font Families -$serif: Georgia, 'Times New Roman', Times, serif !default; -$sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default; - -// Grays -// ------------------------- -$black: #000 !default; -$grayDarker: #222 !default; -$grayDark: #333 !default; -$gray: #555 !default; -$grayLight: #999 !default; -$grayLighter: #eee !default; -$white: #fff !default; - -// Accent colors -// ------------------------- -$blue: #049cdb !default; -$blueDark: #0064cd !default; -$green: #46a546 !default; -$red: #9d261d !default; -$yellow: #ffc40d !default; -$orange: #f89406 !default; -$pink: #c3325f !default; -$purple: #7a43b6 !default; - -// Social network colors -// Organised in a key-value pair list for dynamic SASS -// Can be infinitely extended by adding more as required -// ------------------------- -$sites: - adn #4A484C, - dribbble #EA4C89, - facebook #3B5998, - github #333333, - gplus #db4a39, - linkedin #4875b4, - pinterest #CC2127, - stackoverflow #FE7A15, - twitter #00a0d1, - youtube #CC181E; - -// Site footer -// ------------------------- -$footer-height: 100px; - -// Site colors -// ------------------------- -$primary-color: $blue; -$secondary-color: $green; -// ------------------------- -$site-background: #F5F5F5; -$header-background: $white; -$footer-background: $header-background; -$text-color: $grayDarker; -$title-color: $primary-color; -$link-color: $primary-color; -$button-color: $primary-color; -$button-text: $white; -$navigation-color: $link-color; diff --git a/sass/oscailte/aside/_github.scss b/sass/oscailte/aside/_github.scss deleted file mode 100644 index 1bc1a29b33..0000000000 --- a/sass/oscailte/aside/_github.scss +++ /dev/null @@ -1,8 +0,0 @@ -#github-repos { - li { - p { - font-size: 0.6em; - margin-bottom: 0; - } - } -} \ No newline at end of file diff --git a/sass/oscailte/aside/_pinboard.scss b/sass/oscailte/aside/_pinboard.scss deleted file mode 100644 index 16936079c4..0000000000 --- a/sass/oscailte/aside/_pinboard.scss +++ /dev/null @@ -1,16 +0,0 @@ -#pinboard { - .pin-item > p { - margin-bottom: 0; - a { - &:hover { - text-decoration: underline; - } - &::after { - content: ","; - } - &:last-child::after { - content: ""; - } - } - } -} \ No newline at end of file diff --git a/sass/oscailte/aside/_recent_posts.scss b/sass/oscailte/aside/_recent_posts.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sass/oscailte/aside/_social.scss b/sass/oscailte/aside/_social.scss deleted file mode 100644 index c8b8d68239..0000000000 --- a/sass/oscailte/aside/_social.scss +++ /dev/null @@ -1,76 +0,0 @@ -.social { - ul { - @media only screen and (min-width: $lap-start){ - @include content-columns(2, 10px); - } - } - - a { - @include box-sizing(border-box); - background-color: darken($site-background, 5%); - border: 1px solid darken($site-background, 10%); - border-radius: 4px; - color: #222; - display: inline-block; - font-size: 0.8em; - margin-bottom: 7px; - padding: 1em; - padding-right: 0.5em; - position: relative; - text-decoration: none; - width: 100%; - z-index: 5; - @include transition( - box-shadow 200ms, - color 400ms, - transform 400ms - ); - - &:hover { - color: $white !important; - text-decoration: none; - text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.25); - z-index: 7; - &::before { - border: 1px solid #000; - height: 100%; - top: 0; - width: 100%; - } - } - - &::before { - background-color: #222; - border-radius: 4px; - content: ""; - height: 1px; - position: absolute; - top: 50%; left: 0%; - width: 0; - z-index: -1; - @include transition( - border 200ms, - height 200ms 200ms, - top 200ms 200ms, - width 200ms - ); - } - - i { - font-size: 2em; - line-height: 0.8em; - margin-right: 0.35em; - } - - @each $kvp in $sites { - &.#{nth($kvp, 1)} { - color: nth($kvp, 2); - &::before { - background-color: nth($kvp, 2); - border-color: darken(nth($kvp, 2), 5%); - } - } - } - - } -} \ No newline at end of file diff --git a/sass/oscailte/base/_archive_list.scss b/sass/oscailte/base/_archive_list.scss deleted file mode 100644 index 8523372ff0..0000000000 --- a/sass/oscailte/base/_archive_list.scss +++ /dev/null @@ -1,7 +0,0 @@ -#archive-list { - article { - h1 { - margin-bottom: 0; - } - } -} \ No newline at end of file diff --git a/sass/oscailte/base/_footer.scss b/sass/oscailte/base/_footer.scss deleted file mode 100644 index b50da8d193..0000000000 --- a/sass/oscailte/base/_footer.scss +++ /dev/null @@ -1,22 +0,0 @@ -#page-wrap { - min-height: 100%; - margin-bottom: -$footer-height; - &::after { - content: ""; - display: block; - height: $footer-height; - } -} - -body > footer { - @include box-shadow(0 0 3px rgba(0, 0, 0, 0.25)); - background-color: $footer-background; - // height: $footer-height; - margin-top: 3em; -} - -.copyright { - margin: 0; - padding: 20px 0; - text-align: center; -} diff --git a/sass/oscailte/base/_global.scss b/sass/oscailte/base/_global.scss deleted file mode 100644 index 5c3712590f..0000000000 --- a/sass/oscailte/base/_global.scss +++ /dev/null @@ -1,58 +0,0 @@ -body, html { - background-color: $site-background; - color: $text-color; - font-family: $sans-serif; - height: 100%; -} - -a { - color: $link-color; - text-decoration: none; - &:visited { - color: darken($link-color, 10%); - } - .menu & { - color: $link-color; - } -} - -.gist { - font-size: 0.75em; -} - -.title.indent { - @media only screen and (max-width: $palm-end){ - &::before { - display: none; - } - } - &::before { - content: "// "; - color: $primary-color; - } -} - -.divider { - border: none; - border-bottom: 2px solid $primary-color; - clear: both; - margin: 2em 0; -} - -article.post, -article.page, -article.listing { - img { - border: 5px solid #fff; - border-radius: 3px; - box-shadow: 0 0 3px rgba(0, 0, 0, 0.25); - &.right { - float: right; - margin: 0 0 10px 20px; - } - &.left { - float: left; - margin: 0 20px 10px 0; - } - } -} diff --git a/sass/oscailte/base/_grid.scss b/sass/oscailte/base/_grid.scss deleted file mode 100644 index 17a08c7c78..0000000000 --- a/sass/oscailte/base/_grid.scss +++ /dev/null @@ -1,12 +0,0 @@ -.grid-wrapper { - margin: auto; - max-width: $site-width; - padding: 0 25px; -} - -.grid-center { - text-align: center; - > .grid__item { - text-align: left; - } -} \ No newline at end of file diff --git a/sass/oscailte/base/_header.scss b/sass/oscailte/base/_header.scss deleted file mode 100644 index 08043bdac6..0000000000 --- a/sass/oscailte/base/_header.scss +++ /dev/null @@ -1,12 +0,0 @@ -body > header { - @include box-shadow(0 0 3px rgba(0, 0, 0, 0.25)); - background-color: $header-background; - margin-bottom: 2em; - - .site-title { - color: $grayDarker; - font-size: 1.7em; - font-weight: bold; - line-height: 2.5em; - } -} \ No newline at end of file diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss deleted file mode 100644 index 24f68005e6..0000000000 --- a/sass/oscailte/base/_navigation.scss +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Navigataur: A pure CSS responsive navigation menu - * Author: Mike King (@micjamking) - */ - -/*-------------------------------- - Functional Styles (Required) ----------------------------------*/ -/* Tim Pietrusky advanced checkbox hack (Android <= 4.1.2) */ -body{ -webkit-animation: bugfix infinite 1s; } -@-webkit-keyframes bugfix { from {padding:0;} to {padding:0;} } - -.header { position: relative; } -#toggle, .toggle { display: none; } -.menu li { list-style: none; float:left; } - -$menu-collapse: 944px; - -// @media only screen and (max-width: $lap-end){ -@media only screen and (max-width: $menu-collapse){ - .menu { display: none; opacity: 0; width: 100%; position: absolute; right: 0; } - .menu li { display: block; width: 100%; margin: 0; } - .menu li a { display: block; width: 100%; text-decoration: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } - .menu li a .icon { display: none; } - .toggle { display: block; position: relative; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } - #toggle:checked ~ .menu { display: block; opacity: 1; z-index: 999; } -} - -/* support for submenus */ -ul.menu li { - position: relative; - - &:hover ul { - display: block; - } - - ul { - display: none; - - z-index: 10; - position: absolute; - top: 68px; - - margin-left: 0; - background-color: white; - - li { - white-space: nowrap; - float: none; - - a { - display: block; - padding: 20px 10px; - - &:hover, &:focus { - background: $grayLighter; - } - } - } - } -} - -/*-------------------------------- - Presentation Styles (Editable) ----------------------------------*/ -header .grid { - height: 68px; -} - -.menu { - margin: 0; - top: 68px; -} - -.menu li a{ - @include box-sizing(border-box); - @include transition(all 0.25s linear); - display: block; - padding: 32px 12px; - text-decoration: none; - 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-top: 40px; - padding-bottom: 24px; -} - -.toggle{ - z-index: 20; -} - -@media only screen and (max-width: $menu-collapse){ - .menu{ - background: $white; - border-top: 1px solid $navigation-color; - border-bottom: 4px solid $navigation-color; - } - - .menu, .menu li, .menu li a{ - height: auto; - } - - .menu li a{ - padding: 15px 15px !important; - } - - .menu li a:hover, .menu li a:focus{ - background: $grayLighter; - box-shadow: inset 5px 0px $navigation-color; - padding: 15px 15px 15px 25px; - } - - .toggle { - position: absolute; - top: 17px; - right: 10px; - } - - .toggle::after { - @include border-radius(2px); - @include box-sizing(border-box); - @include transition(all 0.5s linear); - font-family: "FontAwesome"; - content: "\f0c9"; - display: inline-block; - width: 100%; - padding: 10px 15px; - background: $navigation-color; - text-align: center; - font-size: 12px; - color: $white; - white-space: nowrap; - } - - .toggle:hover::after{ - background: darken($navigation-color, 7%); - } - - #toggle:checked + .toggle::after{ - content: attr(data-close); - } - - /* submenus */ - ul.menu li ul { - display: block; - position: relative; - top: 0; - } -} diff --git a/sass/oscailte/base/_post.scss b/sass/oscailte/base/_post.scss deleted file mode 100644 index 15e3aed12f..0000000000 --- a/sass/oscailte/base/_post.scss +++ /dev/null @@ -1,122 +0,0 @@ -$meta-color: lighten($text-color, 20%); - -article { - - blockquote { - @extend .clearfix; - border-left: 2px solid $primary-color; - color: lighten($text-color, 15%); - font-family: $serif; - font-size: 1.25em; - font-style: italic; - padding-left: 15px; - - footer { - float: right; - font-family: $sans-serif; - font-size: 0.8em; - strong::after { - content: " \2014 "; - } - a { - text-decoration: underline; - } - } - } - - .pullquote-left::before, .pullquote-right::before { - @media only screen and (max-width: $palm-end){ - border-top: 1px dotted $primary-color; - border-bottom: 1px dotted $primary-color; - padding: 0 10px; - width: 100%; - } - border: medium none; - color: $primary-color; - content: "\201C" attr(data-pullquote) "\201D"; - float: right; - font-family: $serif; - font-size: 1.4em; - font-style: italic; - line-height: 1.45em; - margin: 0.3em 0 1em 1.5em; - padding: 0; - position: relative; - top: 7px; - width: 45%; - } - - .tags { - @extend .inline; - display: inline; - li { - margin-right: 2px; - &::after { - content: ","; - } - &:last-child::after { - content: ""; - } - a { - color: $meta-color; - text-decoration: none; - &:hover {text-decoration: underline;} - } - } - } - - .meta { - $meta-color: $site-background; - font-size: 12px; - padding: 0 0 5px; - > * { - margin-right: 15px; - white-space: nowrap; - - &:last-child { - margin-right: 0; - } - } - - .comments::before { - content: "\f075"; - font-family: "FontAwesome"; - padding-right: 3px; - } - } - - // Blog listings, index page - &.listing { - margin-bottom: 20px; - h1 { - margin-bottom: 0; - a { - color: $title-color; - text-decoration: none; - } - } - .entry-content { - margin: 10px 0; - } - + hr { - border: none; - border-bottom: 1px solid $primary-color; - } - } - - &.post { - @media only screen and (max-width: $palm-end){ - .tags { - clear: both; - margin-top: 7px; - } - } - h1 { - margin-bottom: 0; - } - .meta { - border-bottom: 1px solid $primary-color; - margin-bottom: 20px; - } - } -} diff --git a/sass/oscailte/base/_sidebar.scss b/sass/oscailte/base/_sidebar.scss deleted file mode 100644 index ea35944aef..0000000000 --- a/sass/oscailte/base/_sidebar.scss +++ /dev/null @@ -1,46 +0,0 @@ -// #sidebar { -// .title { -// border-bottom: 1px solid $blue; -// color: $grayDark; -// margin: 1em 0 0.5em; -// padding-bottom: 5px; -// } -// .social { -// ul { -// @include content-columns(2, 10px); -// } -// } - -// @media only screen and (min-width: $desk-start){ -// section:first-child { -// h3 {margin-top: 0;} -// } -// } -// } - -.aside-module { - @media only screen and (min-width: $desk-start){ - &:first-child { - .title {margin-top: 0;} - } - } - .title { - border-bottom: 1px solid $blue; - color: $grayDark; - margin: 1em 0 0.5em; - padding-bottom: 5px; - - .btn { - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - padding: 5px 10px; - text-decoration: none; - } - } - - .loading { - display: block; - font-size: 2em; - text-align: center; - } -} \ No newline at end of file diff --git a/sass/oscailte/base/_solarized.scss b/sass/oscailte/base/_solarized.scss deleted file mode 100644 index 086044990e..0000000000 --- a/sass/oscailte/base/_solarized.scss +++ /dev/null @@ -1,333 +0,0 @@ -// // This file is just a butchered version fo the one included in the default Octopress theme. -// // It could most definitely do with some cleaning up in the future. - -// @mixin selection($bg, $color: inherit, $text-shadow: none){ -// * { -// &::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; } -// &::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; } -// &::selection { background: $bg; color: $color; text-shadow: $text-shadow; } -// } -// } - -// $base03: #002b36 !default; //darkest blue -// $base02: #073642 !default; //dark blue -// $base01: #586e75 !default; //darkest gray -// $base00: #657b83 !default; //dark gray -// $base0: #839496 !default; //medium gray -// $base1: #93a1a1 !default; //medium light gray -// $base2: #eee8d5 !default; //cream -// $base3: #fdf6e3 !default; //white -// $solar-yellow: #b58900 !default; -// $solar-orange: #cb4b16 !default; -// $solar-red: #dc322f !default; -// $solar-magenta: #d33682 !default; -// $solar-violet: #6c71c4 !default; -// $solar-blue: #268bd2 !default; -// $solar-cyan: #2aa198 !default; -// $solar-green: #859900 !default; - -// $solarized: dark !default; - -// @if $solarized == light { - -// $_base03: $base03; -// $_base02: $base02; -// $_base01: $base01; -// $_base00: $base00; -// $_base0: $base0; -// $_base1: $base1; -// $_base2: $base2; -// $_base3: $base3; - -// $base03: $_base3; -// $base02: $_base2; -// $base01: $_base1; -// $base00: $_base0; -// $base0: $_base00; -// $base1: $_base01; -// $base2: $_base02; -// $base3: $_base03; -// } - -// /* non highlighted code colors */ -// $pre-bg: $base03 !default; -// $pre-border: darken($base02, 5) !default; -// $pre-color: $base1 !default; - -// $noise-bg: image-url('noise.png') top left !default; -// $sans: "Helvetica Neue", Arial, sans-serif !default; -// $mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default; -// .sans { font-family: $sans; } -// .mono { font-family: $mono; } - -// .highlight { -// table {margin-bottom: 0;} -// .gutter, .code { -// padding: 0; -// } -// .gutter { -// .line-number { -// display: block; -// } -// } -// } - -// .highlight, html .gist .gist-file .gist-syntax .gist-highlight { -// table td.code { width: 100%; } -// border: 1px solid $pre-border !important; -// } -// .highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { -// text-align: right; -// font-size: 13px; -// line-height: 1.45em; -// @if $solarized == light { -// background: lighten($base03, 1) $noise-bg !important; -// border-right: 1px solid darken($base02, 2) !important; -// @include box-shadow(lighten($base03, 2) -1px 0 inset); -// text-shadow: lighten($base02, 2) 0 -1px; -// } @else { -// background: $base02 $noise-bg !important; -// border-right: 1px solid darken($base03, 2) !important; -// @include box-shadow(lighten($base02, 2) -1px 0 inset); -// text-shadow: darken($base02, 10) 0 -1px; -// } -// span { color: $base01 !important; } -// padding: .8em !important; -// @include border-radius(0); -// } - -// figure.code, .gist-file, pre { -// @include box-shadow(rgba(#000, .06) 0 0 10px); -// .highlight pre { @include box-shadow(none); } -// } - -// .gist .highlight, figure.code .highlight { -// @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); -// } -// html .gist .gist-file { -// margin-bottom: 1.8em; -// position: relative; -// border: none; -// padding-top: image-height("code_bg.png") !important; -// .highlight { -// margin-bottom: 0; -// } -// .gist-syntax { -// border-bottom: 0 !important; -// background: none !important; -// .gist-highlight { -// background: $base03 !important; -// } -// .highlight pre { -// @extend .pre-code; -// padding: 0; -// } -// } -// .gist-meta { -// padding: .6em 0.8em; -// border: 1px solid lighten($base02, 2) !important; -// color: $base01; -// font-size: .7em !important; -// @if $solarized == light { -// background: lighten($base03, 2) $noise-bg; -// border: 1px solid $pre-border !important; -// border-top: 1px solid lighten($base03, 2) !important; -// } @else { -// background: $base02 $noise-bg; -// } -// @extend .sans; -// line-height: 1.5em; -// a { -// color: mix($base1, $base01) !important; -// &:hover { color: $base1 !important; } -// } -// a[href*='#file'] { -// position: absolute; top: 0; left:0; right:-10px; -// color: #474747 !important; -// @extend .code-title; -// &:hover { color: $link-color !important; } -// } -// a[href*=raw]{ -// @extend .download-source; -// top: .4em; -// } -// } -// } -// pre { -// background: $pre-bg $noise-bg; -// @include border-radius(.4em); -// @extend .mono; -// border: 1px solid $pre-border; -// line-height: 1.45em; -// font-size: 13px; -// margin-bottom: 2.1em; -// padding: .8em 1em; -// color: $pre-color; -// overflow: auto; -// } -// h3.filename { -// @extend .code-title; -// + pre { @include border-radius(0px); } -// } - -// p, li { -// code { -// @extend .mono; -// display: inline-block; -// white-space: no-wrap; -// background: #fff; -// font-size: .8em; -// line-height: 1.5em; -// color: #555; -// border: 1px solid #ddd; -// @include border-radius(.4em); -// padding: 0 .3em; -// margin: -1px 0; -// } -// pre code { font-size: 1em !important; background: none; border: none; } -// } - -// .pre-code { -// font-family: $mono !important; -// overflow: scroll; -// overflow-y: hidden; -// display: block; -// padding: .8em; -// overflow-x: auto; -// line-height: 1.45em; -// background: $base03 $noise-bg !important; -// color: $base1 !important; -// span { color: $base1 !important; } -// span { font-style: normal !important; font-weight: normal !important; } - -// .c { color: $base01 !important; font-style: italic !important; } /* Comment */ -// .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ -// .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ -// .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ -// .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ -// .err { color: $solar-red !important; background: none !important; } /* Error */ -// .k { color: $solar-orange !important; } /* Keyword */ -// .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ -// .p { color: $base1 !important; } /* Operator */ -// .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ -// .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ -// .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ -// .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ -// //.gr { color: #aa0000 } /* Generic.Error */ -// .gh { color: $base01 !important; } /* Generic.Heading */ -// .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ -// .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ -// //.go { color: #888888 } /* Generic.Output */ -// //.gp { color: #555555 } /* Generic.Prompt */ -// .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ -// .gu { color: $solar-violet !important; } /* Generic.Subheading */ -// //.gt { color: #aa0000 } /* Generic.Traceback */ -// .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ -// .kd { color: $solar-blue !important; } /* Keyword.Declaration */ -// .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ -// .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ -// .kt { color: $solar-cyan !important; } /* Keyword.Type */ -// .n { color: $solar-blue !important; } -// .na { color: $solar-blue !important; } /* Name.Attribute */ -// .nb { color: $solar-green !important; } /* Name.Builtin */ -// .nc { color: $solar-magenta !important;} /* Name.Class */ -// .no { color: $solar-yellow !important; } /* Name.Constant */ -// //.ni { color: #800080 } /* Name.Entity */ -// .nl { color: $solar-green !important; } -// .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ -// .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ -// .nn { color: $solar-yellow !important; } /* Name.Namespace */ -// .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ -// .nx { color: $solar-yellow !Important; } -// //.bp { color: #999999 } /* Name.Builtin.Pseudo */ -// //.vc { color: #008080 } /* Name.Variable.Class */ -// .vg { color: $solar-blue !important; } /* Name.Variable.Global */ -// .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ -// .nv { color: $solar-blue !important; } /* Name.Variable */ -// //.w { color: #bbbbbb } /* Text.Whitespace */ -// .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ -// .m { color: $solar-cyan !important; } /* Literal.Number */ -// .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ -// .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ -// //.mo { color: #009999 } /* Literal.Number.Oct */ -// .s { color: $solar-cyan !important; } /* Literal.String */ -// //.sb { color: #d14 } /* Literal.String.Backtick */ -// //.sc { color: #d14 } /* Literal.String.Char */ -// .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ -// .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ -// .se { color: $solar-red !important; } /* Literal.String.Escape */ -// //.sh { color: #d14 } /* Literal.String.Heredoc */ -// .si { color: $solar-blue !important; } /* Literal.String.Interpol */ -// //.sx { color: #d14 } /* Literal.String.Other */ -// .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ -// .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ -// //.ss { color: #990073 } /* Literal.String.Symbol */ -// //.il { color: #009999 } /* Literal.Number.Integer.Long */ -// div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} -// } - -// .highlight, .gist-highlight { -// pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } -// margin-bottom: 1.8em; -// background: $base03; -// overflow-y: hidden; -// overflow-x: auto; -// } - -// $solar-scroll-bg: rgba(#fff, .15); -// $solar-scroll-thumb: rgba(#fff, .2); -// @if $solarized == light { -// $solar-scroll-bg: rgba(#000, .15); -// $solar-scroll-thumb: rgba(#000, .15); -// } - -// pre, .highlight, .gist-highlight { -// &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } -// &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } -// } - -// .highlight code { -// @extend .pre-code; background: #000; -// } -// figure.code { -// background: none; -// padding: 0; -// border: 0; -// margin-bottom: 1.5em; -// pre { margin-bottom: 0; } -// figcaption { -// position: relative; -// @extend .code-title; -// a { @extend .download-source; } -// } -// .highlight { -// margin-bottom: 0; -// } -// } - -// .code-title { -// text-align: center; -// font-size: 13px; -// line-height: 2em; -// text-shadow: #cbcccc 0 1px 0; -// color: #474747; -// font-weight: normal; -// margin-bottom: 0; -// @include border-radius(5px 5px 0 0); -// font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; -// background: #aaaaaa image-url("code_bg.png") top repeat-x; -// border: 1px solid #565656; -// border-top-color: #cbcbcb; -// border-left-color: #a5a5a5; -// border-right-color: #a5a5a5; -// border-bottom: 0; -// } - -// .download-source { -// position: absolute; right: .8em; -// color: #666 !important; -// z-index: 1; -// font-size: 13px; -// text-shadow: #cbcccc 0 1px 0; -// padding-left: 3em; -// } diff --git a/sass/oscailte/custom/_README.scss b/sass/oscailte/custom/_README.scss deleted file mode 100644 index 8f1caadd6c..0000000000 --- a/sass/oscailte/custom/_README.scss +++ /dev/null @@ -1,6 +0,0 @@ -// You can freely create SCSS files within this Custom directory -// and they will be imported into the end of the theme's output CSS. -// The directory is loaded to increase abstraction and reduce the amount of -// changes to be made to the Oscailte theme itself. - -// THESE FILES AREA LOADED ALPHABETICALLY \ No newline at end of file diff --git a/sass/oscailte/helpers/_classes.scss b/sass/oscailte/helpers/_classes.scss deleted file mode 100644 index 8f71f33ed3..0000000000 --- a/sass/oscailte/helpers/_classes.scss +++ /dev/null @@ -1,60 +0,0 @@ -.pull-left {float: left;} -.pull-right {float: right;} - -.clearfix { - *zoom: 1; - &::before, - &::after { - display: table; - content: ""; - line-height: 0; - } - &::after { - clear: both; - } -} - -ul, ol { - &.unstyled { - list-style-type: none; - margin: 0; - } - - &.inline { - @extend .unstyled; - list-style-type: none; - > li {display: inline;} - } - - &.divided { - @extend .unstyled; - > li { - border-top: 1px solid lighten($site-background, 5%); - border-bottom: 1px solid darken($site-background, 5%); - padding: 0.5em 0; - - &:first-child { - border-top: none; - padding-top: 0; - } - &:last-child {border-bottom: none;} - } - } -} - -.btn { - @include gradient-vertical; - @include box-shadow(0 0 3px rgba(0, 0, 0, 0.25)); - border-radius: 3px; - color: $button-text; - display: inline-block; - padding: 7px 15px; - text-decoration: none; - text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.25); - &:hover { - text-decoration: underline; - } - &:visited { - color: $button-text; - } -} \ No newline at end of file diff --git a/sass/oscailte/helpers/_grid-fix.scss b/sass/oscailte/helpers/_grid-fix.scss deleted file mode 100644 index 8b98103e5b..0000000000 --- a/sass/oscailte/helpers/_grid-fix.scss +++ /dev/null @@ -1,76 +0,0 @@ -/* - * A modified version of @kevva solution https://github.com/csswizardry/inuit.css/issues/170#issuecomment-14859371 - * Letter spacing hack to remove the necessity of using empty HTML comments between columns. - * - */ - -@if $use-gridfix == true { - .grid { - letter-spacing: -1rem; - } - - /* Opera hack */ - .opera:-o-prefocus, - .grid { - word-spacing: -1rem; - } - - .grid__item { - letter-spacing: normal; - word-spacing: normal; - } -} - -/* - * An implementation of flexbox which can be applied to the grid items - * - */ - -@media only screen and (min-width: $lap-start){ - .flex { - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; - -webkit-box-direction: normal; - -moz-box-direction: normal; - -webkit-box-orient: horizontal; - -moz-box-orient: horizontal; - -webkit-flex-direction: row; - -ms-flex-direction: row; - flex-direction: row; - -webkit-flex-wrap: nowrap; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - -webkit-box-pack: start; - -moz-box-pack: start; - -webkit-justify-content: flex-start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-align-content: stretch; - -ms-flex-line-pack: stretch; - align-content: stretch; - -webkit-box-align: start; - -moz-box-align: start; - -webkit-align-items: flex-start; - -ms-flex-align: start; - align-items: flex-start; - } - - .flex__item { - -webkit-box-ordinal-group: 1; - -moz-box-ordinal-group: 1; - -webkit-order: 0; - -ms-flex-order: 0; - order: 0; - -webkit-box-flex: 0; - -moz-box-flex: 0; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - -webkit-align-self: center; - -ms-flex-item-align: center; - align-self: center; - } -} \ No newline at end of file diff --git a/sass/oscailte/homepage/_hero_unit.scss b/sass/oscailte/homepage/_hero_unit.scss deleted file mode 100644 index ca41c37a58..0000000000 --- a/sass/oscailte/homepage/_hero_unit.scss +++ /dev/null @@ -1,75 +0,0 @@ -.hero { - background-color: rgb(11, 107, 148); - background-position: 0 50%; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; - border-bottom: 1px solid $white; - color: $white; - margin-top: -2em; - margin-bottom: 1.5em; - padding: 50px 0; - position: relative; - - // &::before { - // background: url("../images/matrix.png") 0 0 rgba(0, 0, 0, 0.35); - // box-shadow: inset 0 0 5px $black; - // content: ""; - // display: block; - // position: absolute; - // top: 0; right: 0; bottom: 0; left: 0; - // z-index: 5; - // } - - > .grid-wrapper { - position: relative; - z-index: 7; - } - - .credit { - font-size: 0.75em; - font-style: italic; - position: absolute; - bottom: 0; right: 10px; - z-index: 7; - a { - border-bottom: 1px solid; - color: $white; - text-decoration: none; - } - .licence { - border: none; - } - } - - .avatar { - @media only screen and (max-width: $lap-end){ - margin-bottom: 30px; - } - text-align: center; - img { - @include border-radius(100%); - border: 10px solid $primary-color; - } - } - - h1 { - font-size: 3.5em; - line-height: 1em; - text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.75); - } - - hr { - @extend .divider; - box-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); - } - - p { - text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); - small { - color: $grayLighter; - font-size: .65em; - } - } -} \ No newline at end of file diff --git a/sass/oscailte/homepage/_home.scss b/sass/oscailte/homepage/_home.scss deleted file mode 100644 index 2b8228fd74..0000000000 --- a/sass/oscailte/homepage/_home.scss +++ /dev/null @@ -1,44 +0,0 @@ -.usp { - text-align: center; - - @media only screen and (min-width: $lap-start) and (max-width: $lap-end){ - margin-bottom: 25px; - } - - .icon { - i { - @include border-radius(50%); - border: 10px solid $blue; - color: $grayDarker; - display: inline-block; - font-size: 6em; - height: 1.85em; - line-height: normal; - padding: 0.3em; - width: 1.85em; - } - } - - .title { - color: $grayDarker; - font-size: 1.1em; - line-height: 3em; - margin: 0; - text-align: center; - text-transform: capitalize; - - + hr { - margin: 0; - margin-bottom: 1em; - } - } - - hr { - @extend .divider; - margin-bottom: 1em; - } - - p { - text-align: left; - } -} \ No newline at end of file diff --git a/sass/partials/_archive.scss b/sass/partials/_archive.scss deleted file mode 100644 index 9ef1e82449..0000000000 --- a/sass/partials/_archive.scss +++ /dev/null @@ -1,72 +0,0 @@ -#archive { - #content > div { &, > article { padding-top: 0; } } -} -#blog-archives { - article { - padding: 1em 0 1em; - position: relative; - background: $img-border bottom left repeat-x; - &:last-child { - background: none; - } - footer { padding: 0; margin: 0;} - } - h1 { color: $text-color; margin-bottom: .3em; } - h2 { display: none; } - h1 { - font-size: 1.5em; - a { - @include hover-link; - color: inherit; - &:hover { color: $link-color-hover; } - font-weight: normal; - display: inline-block; - } - } - a.category, time { - @extend .sans; - color: $text-color-light; - } - color: $text-color-light; - .entry-content { display: none; } - time { - font-size: .9em; - line-height: 1.2em; - .month, .day { display: inline-block; } - .month { text-transform: uppercase; } - } - p { margin-bottom: 1em; } - &, .entry-content { a { @include link-colors(inherit, $link-color-hover); }} - a:hover { color: $link-color-hover; } - @media only screen and (min-width: 550px) { - article { margin-left: 5em; } - h2 { - margin-bottom: .3em; - font-weight: normal; - display: inline-block; - position: relative; top: -1px; - float: left; - &:first-child { padding-top: .75em; } - } - time { - position: absolute; - text-align: right; - left: 0em; - top: 1.8em; - } - .year { display: none; } - article { - padding:{left: 4.5em; bottom: .7em;} - } - a.category { - line-height: 1.1em; - } - } -} -#content > .category { - article { - margin-left: 0; - padding-left: 6.8em; - } - .year { display: inline; } -} diff --git a/sass/partials/_blog.scss b/sass/partials/_blog.scss deleted file mode 100644 index 57fe7a8aec..0000000000 --- a/sass/partials/_blog.scss +++ /dev/null @@ -1,141 +0,0 @@ -article { - padding-top: 1em; - a { @extend .force-wrap; } - header { - position: relative; - padding-top: 2em; - padding-bottom: 1em; - margin-bottom: 1em; - background: $img-border bottom left repeat-x; - h1 { - margin: 0; - a { text-decoration: none; - &:hover { text-decoration: underline; } } - } - p { - font-size: .9em; - color: $text-color-light; - margin: 0; - &.meta { - @extend .sans; - text-transform: uppercase; - position: absolute; top: 0; - } - } - @media only screen and (min-width: 768px) { - margin-bottom: 1.5em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - } - } - h2 { - padding-top: 0.8em; - background: $img-border top left repeat-x; - } - .entry-content & h2:first-child, header + h2 { padding-top: 0; } - h2:first-child, header + h2 { background: none; } - .feature { - padding-top: .5em; - margin-bottom: 1em; - padding-bottom: 1em; - background: $img-border bottom left repeat-x; - font-size: 2.0em; font-style: italic; - line-height: 1.3em; - } - img, video, .flash-video { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box; - } - video, .flash-video { margin: 0 auto 1.5em; } - video { display: block; width: 100%; } - .flash-video { - > div { - position: relative; - display: block; - padding-bottom: 56.25%; - padding-top: 1px; - height: 0; - overflow: hidden; - iframe, object, embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } - } - > footer { - padding-bottom: 2.5em; - margin-top: 2em; - @extend .sans; - p.meta { - margin-bottom: .8em; - font-size: .85em; - clear: both; - overflow: hidden; - } - .byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before { - @extend .separator; - } - } - -} -article + article { - .blog-index & { - background: $img-border top left repeat-x; - } -} -#content .blog-index { - padding: { top: 0; bottom: 0; } - article { padding-top: 2em; } - article header { background: none; padding-bottom: 0; } - article h1 { - font-size: 2.2em; - a { color: inherit; &:hover { color: $link-color-hover; } } - } - a[rel=full-article] { - background: darken($main-bg, 5); - display: inline-block; - padding: .4em .8em; - margin-right: .5em; - text-decoration: none; - color: mix($text-color, $text-color-light); - @extend .serif; - @include transition(background-color .5s); - &:hover { - background: $link-color-hover; - text-shadow: none; - color: $main-bg; - } - } - footer { - @extend .sans; - margin-top: 1em; - } -} - -.separator { - content: "\2022 "; - padding: 0 .4em 0 .2em; - display: inline-block; -} - -#content div.pagination { - text-align: center; - font-size: .95em; - position: relative; - background: $img-border top left repeat-x; - padding: {top: 1.5em; bottom: 1.5em;} - a { - text-decoration: none; - color: $text-color-light; - &.prev { position: absolute; left: 0; } - &.next { position: absolute; right: 0; } - &:hover { color: $link-color-hover; } - &[href*=archive] { - &:before, &:after { content: '\2014'; padding: 0 .3em; } - } - } -} diff --git a/sass/partials/_footer.scss b/sass/partials/_footer.scss deleted file mode 100644 index 3741122512..0000000000 --- a/sass/partials/_footer.scss +++ /dev/null @@ -1,19 +0,0 @@ -body > footer { - @extend .sans; - font-size: .8em; - color: $footer-color; - text-shadow: lighten($footer-bg, 5) 0 1px; - background-color: $footer-bg; - @include background($footer-bg-front, $footer-bg-back); - border-top: 1px solid $footer-border-top; - position: relative; - padding-top: 1em; - padding-bottom: 1em; - margin-bottom: 3em; - @include border-bottom-radius(.4em); - z-index: 1; - a { - @include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color); - } - p:last-child { margin-bottom: 0; } -} diff --git a/sass/partials/_header.scss b/sass/partials/_header.scss deleted file mode 100644 index e3c6c020c2..0000000000 --- a/sass/partials/_header.scss +++ /dev/null @@ -1,18 +0,0 @@ -body > header { - background: $header-bg; - h1 { - display: inline-block; - margin: 0; - a, a:visited, a:hover { - color: $title_color; - text-decoration: none; - } - } - h2 { - margin: .2em 0 0; - @extend .sans; - font-size: 1em; - color: $subtitle-color; - font-weight: normal; - } -} diff --git a/sass/partials/_navigation.scss b/sass/partials/_navigation.scss deleted file mode 100644 index 30fa011d18..0000000000 --- a/sass/partials/_navigation.scss +++ /dev/null @@ -1,137 +0,0 @@ -body > nav { - position: relative; - background-color: $nav-bg; - @include background($nav-bg-front, $nav-bg-back); - border: { - top: 1px solid $nav-border-top; - bottom: 1px solid $nav-border-bottom; } - padding-top: .35em; - padding-bottom: .35em; - form { - @include background-clip(padding-box); - margin: 0; padding: 0; - .search { - padding: .3em .5em 0; - font-size: .85em; - font-family: $sans; - line-height: 1.1em; - width: 95%; - @include border-radius(.5em); - @include background-clip(padding-box); - @include box-shadow(lighten($nav-bg, 2) 0 1px); - background-color: lighten($nav-bg, 15); - border: 1px solid $nav-border; - color: #888; - &:focus { - color: #444; - border-color: #80b1df; - @include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset); - background-color: #fff; - outline: none; - } - } - } - fieldset[role=search]{ float: right; width: 48%; } - fieldset.mobile-nav{ float: left; width: 48%; - select{ width: 100%; font-size: .8em; border: 1px solid #888;} - } - ul { display: none; } - @media only screen and (min-width: 550px) { - font-size: .9em; - ul { - @include horizontal-list(0); - float: left; - display: block; - padding-top: .15em; - } - ul.subscription { - margin-left: .8em; - float: right; - li:last-child a { padding-right: 0; } - } - ul li { - margin: 0; - } - a { - @include link-colors($nav-color, $nav-color-hover, $visited: $nav-color); - font-family: $sans; - text-shadow: lighten($nav-bg, 12) 0 1px; - float: left; - text-decoration: none; - font-size: 1.1em; - padding: .1em 0; - line-height: 1.5em; - } - li + li { - border-left: 1px solid $nav-border-left; - margin-left: .8em; - a { - padding-left: .8em; - border-left: 1px solid $nav-border-right; - } - } - form { - float: right; - text-align: left; - padding-left: .8em; - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px; - .search { - width: 93%; - font-size: .95em; - line-height: 1.2em; - } - } - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px; - .search { width: 91%; } - } - fieldset.mobile-nav { display: none; } - fieldset[role=search]{ width: 99%; } - } - @media only screen and (min-width: 992px) { - form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px; - } - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px; - } - } -} -.no-placeholder { - body > nav .search { - background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat; - text-indent: 1.3em; - } -} -@mixin mask-subscription-nav($feed: 'rss.png'){ - position: relative; top: 0px; - text-indent: -999999em; - background-color: $nav-border-right; - border: 0; - padding: 0; - &,&:after { @include mask-image($feed); } - &:after { - content: ""; - position: absolute; top: -1px; left: 0; - background-color: lighten($nav-color, 25); - } - &:hover:after { background-color: lighten($nav-color, 20); } -} -.maskImage { - body > nav { - @media only screen and (min-width: 550px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px; - } - } - @media only screen and (min-width: 992px) { - ul[data-subscription$=email] + form { - width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px; - } - } - } - ul.subscription { position: relative; top: .2em; li, a { border: 0; padding: 0; }} - a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); } - a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); } -} - diff --git a/sass/partials/_sharing.scss b/sass/partials/_sharing.scss deleted file mode 100644 index 3eecb488e8..0000000000 --- a/sass/partials/_sharing.scss +++ /dev/null @@ -1,8 +0,0 @@ -.sharing { - p.meta + & { - padding: { top: 1em; left: 0; } - background: $img-border top left repeat-x; - } -} - -#fb-root { display: none; } diff --git a/sass/partials/_sidebar.scss b/sass/partials/_sidebar.scss deleted file mode 100644 index cd8c1ca263..0000000000 --- a/sass/partials/_sidebar.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import "sidebar/base"; -@import "sidebar/googleplus"; -@import "sidebar/pinboard"; -@import "sidebar/delicious"; diff --git a/sass/partials/_syntax.scss b/sass/partials/_syntax.scss deleted file mode 100644 index 416de7fb67..0000000000 --- a/sass/partials/_syntax.scss +++ /dev/null @@ -1,261 +0,0 @@ -.highlight, html .gist .gist-file .gist-syntax .gist-highlight { - table td.code { width: 100%; } - border: 1px solid $pre-border !important; -} -.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers { - text-align: right; - font-size: 13px; - line-height: 1.45em; - @if $solarized == light { - background: lighten($base03, 1) $noise-bg !important; - border-right: 1px solid darken($base02, 2) !important; - @include box-shadow(lighten($base03, 2) -1px 0 inset); - text-shadow: lighten($base02, 2) 0 -1px; - } @else { - background: $base02 $noise-bg !important; - border-right: 1px solid darken($base03, 2) !important; - @include box-shadow(lighten($base02, 2) -1px 0 inset); - text-shadow: darken($base02, 10) 0 -1px; - } - span { color: $base01 !important; } - padding: .8em !important; - @include border-radius(0); -} - -figure.code, .gist-file, pre { - @include box-shadow(rgba(#000, .06) 0 0 10px); - .highlight pre { @include box-shadow(none); } -} - -.gist .highlight, figure.code .highlight { - @include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px); -} -html .gist .gist-file { - margin-bottom: 1.8em; - position: relative; - border: none; - padding-top: image-height("code_bg.png") !important; - .highlight { - margin-bottom: 0; - } - .gist-syntax { - border-bottom: 0 !important; - background: none !important; - .gist-highlight { - background: $base03 !important; - } - .highlight pre { - @extend .pre-code; - padding: 0; - } - } - .gist-meta { - padding: .6em 0.8em; - border: 1px solid lighten($base02, 2) !important; - color: $base01; - font-size: .7em !important; - @if $solarized == light { - background: lighten($base03, 2) $noise-bg; - border: 1px solid $pre-border !important; - border-top: 1px solid lighten($base03, 2) !important; - } @else { - background: $base02 $noise-bg; - } - @extend .sans; - line-height: 1.5em; - a { - color: mix($base1, $base01) !important; - @include hover-link; - &:hover { color: $base1 !important; } - } - a[href*='#file'] { - position: absolute; top: 0; left:0; right:-10px; - color: #474747 !important; - @extend .code-title; - &:hover { color: $link-color !important; } - } - a[href*=raw]{ - @extend .download-source; - top: .4em; - } - } -} -pre { - background: $pre-bg $noise-bg; - @include border-radius(.4em); - @extend .mono; - border: 1px solid $pre-border; - line-height: 1.45em; - font-size: 13px; - margin-bottom: 2.1em; - padding: .8em 1em; - color: $pre-color; - overflow: auto; -} -h3.filename { - @extend .code-title; - + pre { @include border-top-radius(0px); } -} - -p, li { - code { - @extend .mono; - display: inline-block; - white-space: no-wrap; - background: #fff; - font-size: .8em; - line-height: 1.5em; - color: #555; - border: 1px solid #ddd; - @include border-radius(.4em); - padding: 0 .3em; - margin: -1px 0; - } - pre code { font-size: 1em !important; background: none; border: none; } -} - -.pre-code { - font-family: $mono !important; - overflow: scroll; - overflow-y: hidden; - display: block; - padding: .8em; - overflow-x: auto; - line-height: 1.45em; - background: $base03 $noise-bg !important; - color: $base1 !important; - span { color: $base1 !important; } - span { font-style: normal !important; font-weight: normal !important; } - - .c { color: $base01 !important; font-style: italic !important; } /* Comment */ - .cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */ - .cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */ - .c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */ - .cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */ - .err { color: $solar-red !important; background: none !important; } /* Error */ - .k { color: $solar-orange !important; } /* Keyword */ - .o { color: $base1 !important; font-weight: bold !important; } /* Operator */ - .p { color: $base1 !important; } /* Operator */ - .ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */ - .gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */ - .gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */ - .ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */ - //.gr { color: #aa0000 } /* Generic.Error */ - .gh { color: $base01 !important; } /* Generic.Heading */ - .gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */ - .gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */ - //.go { color: #888888 } /* Generic.Output */ - //.gp { color: #555555 } /* Generic.Prompt */ - .gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */ - .gu { color: $solar-violet !important; } /* Generic.Subheading */ - //.gt { color: #aa0000 } /* Generic.Traceback */ - .kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */ - .kd { color: $solar-blue !important; } /* Keyword.Declaration */ - .kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */ - .kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */ - .kt { color: $solar-cyan !important; } /* Keyword.Type */ - .n { color: $solar-blue !important; } - .na { color: $solar-blue !important; } /* Name.Attribute */ - .nb { color: $solar-green !important; } /* Name.Builtin */ - .nc { color: $solar-magenta !important;} /* Name.Class */ - .no { color: $solar-yellow !important; } /* Name.Constant */ - //.ni { color: #800080 } /* Name.Entity */ - .nl { color: $solar-green !important; } - .ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */ - .nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */ - .nn { color: $solar-yellow !important; } /* Name.Namespace */ - .nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */ - .nx { color: $solar-yellow !Important; } - //.bp { color: #999999 } /* Name.Builtin.Pseudo */ - //.vc { color: #008080 } /* Name.Variable.Class */ - .vg { color: $solar-blue !important; } /* Name.Variable.Global */ - .vi { color: $solar-blue !important; } /* Name.Variable.Instance */ - .nv { color: $solar-blue !important; } /* Name.Variable */ - //.w { color: #bbbbbb } /* Text.Whitespace */ - .mf { color: $solar-cyan !important; } /* Literal.Number.Float */ - .m { color: $solar-cyan !important; } /* Literal.Number */ - .mh { color: $solar-cyan !important; } /* Literal.Number.Hex */ - .mi { color: $solar-cyan !important; } /* Literal.Number.Integer */ - //.mo { color: #009999 } /* Literal.Number.Oct */ - .s { color: $solar-cyan !important; } /* Literal.String */ - //.sb { color: #d14 } /* Literal.String.Backtick */ - //.sc { color: #d14 } /* Literal.String.Char */ - .sd { color: $solar-cyan !important; } /* Literal.String.Doc */ - .s2 { color: $solar-cyan !important; } /* Literal.String.Double */ - .se { color: $solar-red !important; } /* Literal.String.Escape */ - //.sh { color: #d14 } /* Literal.String.Heredoc */ - .si { color: $solar-blue !important; } /* Literal.String.Interpol */ - //.sx { color: #d14 } /* Literal.String.Other */ - .sr { color: $solar-cyan !important; } /* Literal.String.Regex */ - .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ - //.ss { color: #990073 } /* Literal.String.Symbol */ - //.il { color: #009999 } /* Literal.Number.Integer.Long */ - div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} -} - -.highlight, .gist-highlight { - pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; } - margin-bottom: 1.8em; - background: $base03; - overflow-y: hidden; - overflow-x: auto; -} - -$solar-scroll-bg: rgba(#fff, .15); -$solar-scroll-thumb: rgba(#fff, .2); -@if $solarized == light { - $solar-scroll-bg: rgba(#000, .15); - $solar-scroll-thumb: rgba(#000, .15); -} - -pre, .highlight, .gist-highlight { - &::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; } - &::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px } -} - -.highlight code { - @extend .pre-code; background: #000; -} -figure.code { - background: none; - padding: 0; - border: 0; - margin-bottom: 1.5em; - pre { margin-bottom: 0; } - figcaption { - position: relative; - @extend .code-title; - a { @extend .download-source; } - } - .highlight { - margin-bottom: 0; - } -} - -.code-title { - text-align: center; - font-size: 13px; - line-height: 2em; - text-shadow: #cbcccc 0 1px 0; - color: #474747; - font-weight: normal; - margin-bottom: 0; - @include border-top-radius(5px); - font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif; - background: #aaaaaa image-url("code_bg.png") top repeat-x; - border: 1px solid #565656; - border-top-color: #cbcbcb; - border-left-color: #a5a5a5; - border-right-color: #a5a5a5; - border-bottom: 0; -} - -.download-source { - position: absolute; right: .8em; - @include hover-link; - color: #666 !important; - z-index: 1; - font-size: 13px; - text-shadow: #cbcccc 0 1px 0; - padding-left: 3em; -} diff --git a/sass/partials/sidebar/_base.scss b/sass/partials/sidebar/_base.scss deleted file mode 100644 index 5441304e27..0000000000 --- a/sass/partials/sidebar/_base.scss +++ /dev/null @@ -1,106 +0,0 @@ -.side-shadow-border { - @include box-shadow(lighten($sidebar-bg, 5) 0 1px); -} -aside.sidebar { - overflow: hidden; - color: $sidebar-color; - text-shadow: lighten($sidebar-bg, 8) 0 1px; - a { @extend .force-wrap; } - section { - @extend .sans; - font-size: .8em; - line-height: 1.4em; - margin-bottom: 1.5em; - h1 { - margin: 1.5em 0 0; - padding-bottom: .2em; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - + p { - padding-top: .4em; - } - } - } - img { - @extend .flex-content; - @extend .basic-alignment; - @include shadow-box($border: #fff .3em solid); - } - ul { - margin-bottom: 0.5em; - margin-left: 0; - } - li { - list-style: none; - padding: .5em 0; - margin: 0; - border-bottom: 1px solid $sidebar-border; - @extend .side-shadow-border; - p:last-child { - margin-bottom: 0; - } - } - a { - color: inherit; - @include transition(color .5s); - } - &:hover a { - color: $sidebar-link-color; - &:hover { color: $sidebar-link-color-hover; } - } -} -.aside-alt-link { - color: $sidebar-link-color-subdued; - &:hover { - color: $sidebar-link-color-subdued-hover; - } -} - -@media only screen and (min-width: 768px) { - .toggle-sidebar { - outline: none; - position: absolute; right: -10px; top: 0; bottom: 0; - display: inline-block; - text-decoration: none; - color: mix($text-color-light, $sidebar-bg); - width: 9px; - cursor: pointer; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - @include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0))); - } - &:after { - position: absolute; right: -11px; top: 0; - width: 20px; - font-size: 1.2em; - line-height: 1.1em; - padding-bottom: .15em; - @include border-bottom-right-radius(.3em); - text-align: center; - background: $main-bg $noise-bg; - border-bottom: 1px solid $sidebar-border; - border-right: 1px solid $sidebar-border; - content: "\00BB"; - text-indent: -1px; - } - .collapse-sidebar & { - text-indent: 0px; - right: -20px; - width: 19px; - &:hover { - background: mix($sidebar-border, $sidebar-bg); - } - &:after { - border-left: 1px solid $sidebar-border; - text-shadow: #fff 0 1px; - content: "\00AB"; - left: 0px; right: 0; - text-align: center; - text-indent: 0; - border: 0; - border-right-width: 0; - background: none; - } - } - } -} diff --git a/sass/partials/sidebar/_delicious.scss b/sass/partials/sidebar/_delicious.scss deleted file mode 100644 index e962702e5f..0000000000 --- a/sass/partials/sidebar/_delicious.scss +++ /dev/null @@ -1,4 +0,0 @@ -.delicious-posts { - a.delicious-link { margin-bottom: .5em; display: block; } - p { font-size: 1em; } -} diff --git a/sass/partials/sidebar/_googleplus.scss b/sass/partials/sidebar/_googleplus.scss deleted file mode 100644 index c2a693ee7f..0000000000 --- a/sass/partials/sidebar/_googleplus.scss +++ /dev/null @@ -1,26 +0,0 @@ -.googleplus { - h1 { - -moz-box-shadow: none !important; - -webkit-box-shadow: none !important; - -o-box-shadow: none !important; - box-shadow: none !important; - border-bottom: 0px none !important; - } - a { - text-decoration: none; - white-space: normal !important; - line-height: 32px; - - img { - float: left; - margin-right: 0.5em; - border: 0 none; - } - } -} - -.googleplus-hidden { - position: absolute; - top: -1000em; - left: -1000em; -} diff --git a/sass/partials/sidebar/_pinboard.scss b/sass/partials/sidebar/_pinboard.scss deleted file mode 100644 index 9f9ab46114..0000000000 --- a/sass/partials/sidebar/_pinboard.scss +++ /dev/null @@ -1,12 +0,0 @@ -#pinboard_linkroll { - .pin-title, .pin-description { - display: block; - margin-bottom: .5em; - } - .pin-tag { - @include hover-link; - @extend .aside-alt-link; - &:after { content: ','; } - &:last-child:after { content: ''; } - } -} diff --git a/sass/plugins/_plugins.scss b/sass/plugins/_plugins.scss deleted file mode 100644 index 3b4ba0b8a8..0000000000 --- a/sass/plugins/_plugins.scss +++ /dev/null @@ -1,6 +0,0 @@ -/* - Add plugin stylesheets to this directory and they will be automatically - Imported. Load order is alphabetical and styles can be overriden in - custom/_style.scss which is loaded after all plugin stylesheets. -*/ - diff --git a/sass/screen.scss b/sass/screen.scss deleted file mode 100644 index 78c73c19af..0000000000 --- a/sass/screen.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import 'oscailte/oscailte'; -@import 'custom/paulus'; -@import 'custom/component_page'; -@import 'custom/syntax'; -@import 'custom/print'; \ No newline at end of file diff --git a/source/service_worker.js b/service_worker.js similarity index 100% rename from source/service_worker.js rename to service_worker.js diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000000..1c99fd4bd7 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,6231 @@ + + + +https://home-assistant.io/addons/bluetooth_bcm43xx/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/cec_scan/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/check_config/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/dhcp_server/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/dnsmasq/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/duckdns/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/google_assistant/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/homematic/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/lets_encrypt/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/mariadb/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/mosquitto/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/nginx_proxy/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/samba/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/snips/ +2017-04-30T13:28:00+00:00 + + +https://home-assistant.io/addons/configurator/ +2017-09-25T14:00:00+00:00 + + +https://home-assistant.io/addons/git_pull/ +2017-09-25T14:00:00+00:00 + + +https://home-assistant.io/addons/rpc_shutdown/ +2017-09-25T14:00:00+00:00 + + +https://home-assistant.io/addons/ssh/ +2017-11-03T22:25:00+00:00 + + +https://home-assistant.io/addons/tellstick/ +2017-12-04T21:31:00+00:00 + + +https://home-assistant.io/components/automation/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/binary_sensor.wink/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/device_sun_light_trigger/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/device_tracker/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/isy994/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/light.wink/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/notify/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/notify.pushbullet/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/notify.pushover/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/octoprint/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/sensor.juicenet/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/sensor.wink/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/switch.wink/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/wink/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/components/browser/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/discovery/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/downloader/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/keyboard/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/light/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/media_player/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/sensor/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/sun/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/switch/ +2015-01-24T14:39:00+00:00 + + +https://home-assistant.io/components/conversation/ +2015-03-15T00:39:00+00:00 + + +https://home-assistant.io/components/configurator/ +2015-03-15T00:51:00+00:00 + + +https://home-assistant.io/components/climate.generic_thermostat/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/climate.nest/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.luci/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.netgear/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.nmap_tracker/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.tomato/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.ubus/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/group/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/history/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/media_player.cast/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/scene/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/script/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/sensor.sabnzbd/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/sensor.systemmonitor/ +2015-03-23T19:59:00+00:00 + + +https://home-assistant.io/components/vera/ +2015-03-23T20:04:00+00:00 + + +https://home-assistant.io/components/light.hue/ +2015-03-23T20:09:00+00:00 + + +https://home-assistant.io/components/tellstick/ +2015-03-28T13:06:00+00:00 + + +https://home-assistant.io/components/sensor.openweathermap/ +2015-04-25T09:06:00+00:00 + + +https://home-assistant.io/components/sensor.transmission/ +2015-04-25T09:06:00+00:00 + + +https://home-assistant.io/components/modbus/ +2015-04-25T09:16:00+00:00 + + +https://home-assistant.io/components/logbook/ +2015-04-25T09:23:00+00:00 + + +https://home-assistant.io/components/notify.instapush/ +2015-05-01T18:00:00+00:00 + + +https://home-assistant.io/components/notify.nma/ +2015-05-01T18:00:00+00:00 + + +https://home-assistant.io/components/calendar.google/ +2015-05-08T17:15:00+00:00 + + +https://home-assistant.io/components/sensor.bitcoin/ +2015-05-08T17:15:00+00:00 + + +https://home-assistant.io/components/sensor.time_date/ +2015-05-08T17:15:00+00:00 + + +https://home-assistant.io/components/notify.xmpp/ +2015-05-08T18:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.ddwrt/ +2015-05-11T09:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.mqtt/ +2015-05-30T23:21:00+00:00 + + +https://home-assistant.io/components/sensor.mqtt/ +2015-05-30T23:21:00+00:00 + + +https://home-assistant.io/components/switch.transmission/ +2015-06-02T09:00:00+00:00 + + +https://home-assistant.io/components/sensor.deutsche_bahn/ +2015-06-02T21:45:00+00:00 + + +https://home-assistant.io/components/sensor.swiss_public_transport/ +2015-06-02T21:45:00+00:00 + + +https://home-assistant.io/components/notify.smtp/ +2015-06-03T18:00:00+00:00 + + +https://home-assistant.io/components/notify.syslog/ +2015-06-09T16:00:00+00:00 + + +https://home-assistant.io/components/switch.command_line/ +2015-06-10T22:41:00+00:00 + + +https://home-assistant.io/components/switch.pilight/ +2015-06-10T22:41:00+00:00 + + +https://home-assistant.io/components/switch.edimax/ +2015-06-10T22:54:00+00:00 + + +https://home-assistant.io/components/switch.hikvisioncam/ +2015-06-10T22:54:00+00:00 + + +https://home-assistant.io/components/notify.file/ +2015-06-22T10:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.tplink/ +2015-06-22T10:30:00+00:00 + + +https://home-assistant.io/components/media_player.itunes/ +2015-06-22T11:00:00+00:00 + + +https://home-assistant.io/components/media_player.kodi/ +2015-06-22T11:00:00+00:00 + + +https://home-assistant.io/components/arduino/ +2015-06-27T10:28:00+00:00 + + +https://home-assistant.io/components/sensor.efergy/ +2015-07-11T00:15:00+00:00 + + +https://home-assistant.io/components/sensor.eliqonline/ +2015-07-11T00:15:00+00:00 + + +https://home-assistant.io/components/camera.android_ip_webcam/ +2015-07-11T00:36:00+00:00 + + +https://home-assistant.io/components/camera.generic/ +2015-07-11T00:36:00+00:00 + + +https://home-assistant.io/components/panel_iframe/ +2015-07-17T18:00:00+00:00 + + +https://home-assistant.io/components/light.flux_led/ +2015-07-17T20:09:00+00:00 + + +https://home-assistant.io/components/sensor.rfxtrx/ +2015-08-06T17:15:00+00:00 + + +https://home-assistant.io/components/notify.slack/ +2015-08-06T18:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.asuswrt/ +2015-08-06T19:00:00+00:00 + + +https://home-assistant.io/components/light.tellstick/ +2015-08-06T19:00:00+00:00 + + +https://home-assistant.io/components/sensor.tellstick/ +2015-08-06T19:00:00+00:00 + + +https://home-assistant.io/components/sensor.temper/ +2015-08-06T19:00:00+00:00 + + +https://home-assistant.io/components/switch.tellstick/ +2015-08-06T19:00:00+00:00 + + +https://home-assistant.io/components/switch.rpi_gpio/ +2015-08-07T14:00:00+00:00 + + +https://home-assistant.io/components/mqtt/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/components/pilight/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/components/panel_custom/ +2015-08-08T11:00:00+00:00 + + +https://home-assistant.io/components/media_player.squeezebox/ +2015-08-09T11:00:00+00:00 + + +https://home-assistant.io/components/verisure/ +2015-08-17T20:28:00+00:00 + + +https://home-assistant.io/components/device_tracker.automatic/ +2015-08-28T19:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.rpi_gpio/ +2015-08-30T19:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.actiontec/ +2015-08-30T19:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.thomson/ +2015-08-30T19:00:00+00:00 + + +https://home-assistant.io/components/sensor.dht/ +2015-08-30T19:15:00+00:00 + + +https://home-assistant.io/components/sensor.modbus/ +2015-08-30T23:38:00+00:00 + + +https://home-assistant.io/components/switch.modbus/ +2015-08-30T23:38:00+00:00 + + +https://home-assistant.io/components/switch.mqtt/ +2015-08-30T23:38:00+00:00 + + +https://home-assistant.io/components/device_tracker.aruba/ +2015-08-31T08:45:00+00:00 + + +https://home-assistant.io/components/ifttt.manything/ +2015-09-07T18:00:00+00:00 + + +https://home-assistant.io/components/ifttt/ +2015-09-07T18:00:00+00:00 + + +https://home-assistant.io/components/sensor.arest/ +2015-09-07T18:15:00+00:00 + + +https://home-assistant.io/components/media_player.denon/ +2015-09-08T09:00:00+00:00 + + +https://home-assistant.io/components/media_player.denonavr/ +2015-09-08T09:00:00+00:00 + + +https://home-assistant.io/components/switch.arest/ +2015-09-11T23:15:00+00:00 + + +https://home-assistant.io/components/media_player.sonos/ +2015-09-12T13:00:00+00:00 + + +https://home-assistant.io/components/sensor.command_line/ +2015-09-13T10:10:00+00:00 + + +https://home-assistant.io/components/sensor.arduino/ +2015-09-14T18:28:00+00:00 + + +https://home-assistant.io/components/switch.arduino/ +2015-09-14T18:28:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.mqtt/ +2015-09-14T19:10:00+00:00 + + +https://home-assistant.io/components/sensor.glances/ +2015-09-14T19:10:00+00:00 + + +https://home-assistant.io/components/sensor.rest/ +2015-09-14T19:10:00+00:00 + + +https://home-assistant.io/components/switch.rest/ +2015-09-14T19:10:00+00:00 + + +https://home-assistant.io/components/camera.foscam/ +2015-09-17T08:01:00+00:00 + + +https://home-assistant.io/components/device_tracker.mqtt/ +2015-09-19T20:41:00+00:00 + + +https://home-assistant.io/components/device_tracker.owntracks/ +2015-09-22T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.worldclock/ +2015-10-02T11:15:00+00:00 + + +https://home-assistant.io/components/zone/ +2015-10-04T09:23:00+00:00 + + +https://home-assistant.io/components/media_player.plex/ +2015-10-05T21:21:00+00:00 + + +https://home-assistant.io/components/light.blinksticklight/ +2015-10-08T10:00:00+00:00 + + +https://home-assistant.io/components/light.rfxtrx/ +2015-10-08T10:15:00+00:00 + + +https://home-assistant.io/components/rfxtrx/ +2015-10-08T10:15:00+00:00 + + +https://home-assistant.io/components/switch.rfxtrx/ +2015-10-08T10:15:00+00:00 + + +https://home-assistant.io/components/device_tracker.snmp/ +2015-10-08T12:00:00+00:00 + + +https://home-assistant.io/components/notify.telegram/ +2015-10-09T18:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.locative/ +2015-10-13T19:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.manual/ +2015-10-13T19:10:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel/ +2015-10-13T19:10:00+00:00 + + +https://home-assistant.io/components/shell_command/ +2015-10-13T19:10:00+00:00 + + +https://home-assistant.io/components/sensor.cpuspeed/ +2015-10-15T11:00:00+00:00 + + +https://home-assistant.io/components/climate.radiotherm/ +2015-10-18T17:15:00+00:00 + + +https://home-assistant.io/components/light.vera/ +2015-10-20T21:00:00+00:00 + + +https://home-assistant.io/components/sensor.vera/ +2015-10-20T21:00:00+00:00 + + +https://home-assistant.io/components/switch.vera/ +2015-10-20T21:00:00+00:00 + + +https://home-assistant.io/components/media_player.firetv/ +2015-10-23T18:00:00+00:00 + + +https://home-assistant.io/components/introduction/ +2015-10-25T15:15:00+00:00 + + +https://home-assistant.io/components/light.hyperion/ +2015-10-25T22:43:00+00:00 + + +https://home-assistant.io/components/litejet/ +2015-10-26T09:37:00+00:00 + + +https://home-assistant.io/components/camera/ +2015-11-09T08:36:00+00:00 + + +https://home-assistant.io/components/camera.mjpeg/ +2015-11-09T08:36:00+00:00 + + +https://home-assistant.io/components/notify.pushetta/ +2015-11-10T18:00:00+00:00 + + +https://home-assistant.io/components/light.zwave/ +2015-11-11T13:00:00+00:00 + + +https://home-assistant.io/components/logger/ +2015-11-12T17:00:00+00:00 + + +https://home-assistant.io/components/light.mqtt/ +2015-11-13T08:30:00+00:00 + + +https://home-assistant.io/components/sensor.zwave/ +2015-11-15T13:00:00+00:00 + + +https://home-assistant.io/components/switch.zwave/ +2015-11-15T13:00:00+00:00 + + +https://home-assistant.io/components/switch.orvibo/ +2015-11-15T18:15:00+00:00 + + +https://home-assistant.io/components/updater/ +2015-11-15T20:40:00+00:00 + + +https://home-assistant.io/components/lock.wink/ +2015-11-20T12:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor/ +2015-11-20T14:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.arest/ +2015-11-20T18:15:00+00:00 + + +https://home-assistant.io/components/lock/ +2015-11-21T08:10:00+00:00 + + +https://home-assistant.io/components/switch.mystrom/ +2015-11-25T22:00:00+00:00 + + +https://home-assistant.io/components/ecobee/ +2015-11-30T17:54:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ecobee/ +2015-11-30T18:00:00+00:00 + + +https://home-assistant.io/components/sensor.ecobee/ +2015-11-30T18:00:00+00:00 + + +https://home-assistant.io/components/light.limitlessled/ +2015-12-03T13:00:00+00:00 + + +https://home-assistant.io/components/frontend/ +2015-12-06T21:35:00+00:00 + + +https://home-assistant.io/components/http/ +2015-12-06T21:35:00+00:00 + + +https://home-assistant.io/components/sensor.dweet/ +2015-12-10T10:15:00+00:00 + + +https://home-assistant.io/components/climate.heatmiser/ +2015-12-11T12:35:00+00:00 + + +https://home-assistant.io/components/alexa/ +2015-12-13T13:02:00+00:00 + + +https://home-assistant.io/components/device_tracker.fritz/ +2015-12-13T19:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.icloud/ +2015-12-15T00:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.rest/ +2015-12-17T19:10:00+00:00 + + +https://home-assistant.io/components/sensor.twitch/ +2015-12-19T09:00:00+00:00 + + +https://home-assistant.io/components/sensor.torque/ +2015-12-20T18:00:00+00:00 + + +https://home-assistant.io/components/sensor.sma/ +2015-12-28T21:45:00+00:00 + + +https://home-assistant.io/components/light.rflink/ +2016-01-04T00:00:00+00:00 + + +https://home-assistant.io/components/rflink/ +2016-01-04T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.rflink/ +2016-01-04T00:00:00+00:00 + + +https://home-assistant.io/components/switch.rflink/ +2016-01-04T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.yr/ +2016-01-04T14:00:00+00:00 + + +https://home-assistant.io/components/media_player.nad/ +2016-01-05T20:00:00+00:00 + + +https://home-assistant.io/components/notify.free_mobile/ +2016-01-12T08:36:00+00:00 + + +https://home-assistant.io/components/media_player.universal/ +2016-01-12T22:00:00+00:00 + + +https://home-assistant.io/components/mqtt_eventstream/ +2016-01-13T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.command_line/ +2016-01-13T12:15:00+00:00 + + +https://home-assistant.io/components/sensor.nest/ +2016-01-13T19:59:00+00:00 + + +https://home-assistant.io/components/sensor.nest_weather/ +2016-01-13T19:59:00+00:00 + + +https://home-assistant.io/components/notify.discord/ +2016-01-14T15:15:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.alarmdotcom/ +2016-01-14T22:00:00+00:00 + + +https://home-assistant.io/components/climate.proliphix/ +2016-01-15T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.tellduslive/ +2016-01-17T15:49:00+00:00 + + +https://home-assistant.io/components/switch.tellduslive/ +2016-01-17T15:49:00+00:00 + + +https://home-assistant.io/components/tellduslive/ +2016-01-17T16:00:00+00:00 + + +https://home-assistant.io/components/input_boolean/ +2016-01-17T16:58:00+00:00 + + +https://home-assistant.io/components/statsd/ +2016-01-25T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.nest/ +2016-01-26T08:00:00+00:00 + + +https://home-assistant.io/components/notify.twitter/ +2016-01-27T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.template/ +2016-01-27T07:00:00+00:00 + + +https://home-assistant.io/components/insteon_hub/ +2016-01-27T08:00:00+00:00 + + +https://home-assistant.io/components/light.lifx/ +2016-01-27T08:00:00+00:00 + + +https://home-assistant.io/components/zigbee/ +2016-01-27T17:10:00+00:00 + + +https://home-assistant.io/components/sensor.zigbee/ +2016-01-28T10:08:00+00:00 + + +https://home-assistant.io/components/switch.zigbee/ +2016-01-28T11:52:00+00:00 + + +https://home-assistant.io/components/binary_sensor.zigbee/ +2016-01-28T12:38:00+00:00 + + +https://home-assistant.io/components/light.zigbee/ +2016-01-28T12:38:00+00:00 + + +https://home-assistant.io/components/nest/ +2016-01-29T21:57:00+00:00 + + +https://home-assistant.io/components/scsgate/ +2016-01-31T19:20:00+00:00 + + +https://home-assistant.io/components/light.scsgate/ +2016-01-31T19:30:00+00:00 + + +https://home-assistant.io/components/switch.scsgate/ +2016-01-31T22:15:00+00:00 + + +https://home-assistant.io/components/notify.mqtt/ +2016-02-01T08:00:00+00:00 + + +https://home-assistant.io/components/media_player.snapcast/ +2016-02-01T19:00:00+00:00 + + +https://home-assistant.io/components/input_select/ +2016-02-02T17:00:00+00:00 + + +https://home-assistant.io/components/weblink/ +2016-02-02T20:00:00+00:00 + + +https://home-assistant.io/components/bloomsky/ +2016-02-03T20:00:00+00:00 + + +https://home-assistant.io/components/camera.bloomsky/ +2016-02-03T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.bloomsky/ +2016-02-03T20:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.http/ +2016-02-05T12:15:00+00:00 + + +https://home-assistant.io/components/sensor.http/ +2016-02-05T12:15:00+00:00 + + +https://home-assistant.io/components/splunk/ +2016-02-05T15:31:00+00:00 + + +https://home-assistant.io/components/switch.template/ +2016-02-07T07:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.nx584/ +2016-02-07T10:00:00+00:00 + + +https://home-assistant.io/components/camera.uvc/ +2016-02-07T10:00:00+00:00 + + +https://home-assistant.io/components/proximity/ +2016-02-07T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.mfi/ +2016-02-07T10:00:00+00:00 + + +https://home-assistant.io/components/switch.mfi/ +2016-02-07T10:00:00+00:00 + + +https://home-assistant.io/components/climate.honeywell/ +2016-02-07T22:01:00+00:00 + + +https://home-assistant.io/components/apcupsd/ +2016-02-10T17:11:00+00:00 + + +https://home-assistant.io/components/graphite/ +2016-02-10T17:11:00+00:00 + + +https://home-assistant.io/components/intent_script/ +2016-02-10T17:11:00+00:00 + + +https://home-assistant.io/components/sensor.apcupsd/ +2016-02-10T18:28:00+00:00 + + +https://home-assistant.io/components/binary_sensor.apcupsd/ +2016-02-10T18:47:00+00:00 + + +https://home-assistant.io/components/sensor.mold_indicator/ +2016-02-11T22:00:00+00:00 + + +https://home-assistant.io/components/lock.verisure/ +2016-02-12T06:00:00+00:00 + + +https://home-assistant.io/components/notify.rest/ +2016-02-12T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.speedtest/ +2016-02-12T09:06:00+00:00 + + +https://home-assistant.io/components/media_player.samsungtv/ +2016-02-13T12:02:00+00:00 + + +https://home-assistant.io/components/sensor.neurio_energy/ +2016-02-15T21:50:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.verisure/ +2016-02-15T22:00:00+00:00 + + +https://home-assistant.io/components/switch.verisure/ +2016-02-15T22:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.nx584/ +2016-02-18T20:47:00+00:00 + + +https://home-assistant.io/components/device_tracker.unifi/ +2016-02-19T20:59:00+00:00 + + +https://home-assistant.io/components/wemo/ +2016-02-20T00:41:00+00:00 + + +https://home-assistant.io/components/light.wemo/ +2016-02-20T00:45:00+00:00 + + +https://home-assistant.io/components/switch.wemo/ +2016-02-20T00:47:00+00:00 + + +https://home-assistant.io/components/switch.dlink/ +2016-02-21T09:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.bloomsky/ +2016-02-22T07:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.zwave/ +2016-02-22T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.tcp/ +2016-02-22T10:03:00+00:00 + + +https://home-assistant.io/components/binary_sensor.tcp/ +2016-02-22T11:05:00+00:00 + + +https://home-assistant.io/components/notify.command_line/ +2016-02-22T20:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.verisure/ +2016-02-23T20:31:00+00:00 + + +https://home-assistant.io/components/sensor.verisure/ +2016-02-23T20:31:00+00:00 + + +https://home-assistant.io/components/demo/ +2016-02-24T07:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.template/ +2016-02-25T15:00:00+00:00 + + +https://home-assistant.io/components/notify.sendgrid/ +2016-02-27T18:00:00+00:00 + + +https://home-assistant.io/components/zwave/ +2016-02-27T19:59:00+00:00 + + +https://home-assistant.io/components/lock.mqtt/ +2016-02-28T15:00:00+00:00 + + +https://home-assistant.io/components/discoverable/ +2016-03-01T07:00:00+00:00 + + +https://home-assistant.io/components/scene.hunterdouglas_powerview/ +2016-03-11T16:00:00+00:00 + + +https://home-assistant.io/components/input_text/ +2016-03-15T06:00:00+00:00 + + +https://home-assistant.io/components/notify.message_bird/ +2016-03-15T17:00:00+00:00 + + +https://home-assistant.io/components/media_player.panasonic_viera/ +2016-03-17T13:04:00+00:00 + + +https://home-assistant.io/components/switch.wake_on_lan/ +2016-03-18T18:00:00+00:00 + + +https://home-assistant.io/components/switch.pulseaudio_loopback/ +2016-03-22T21:00:00+00:00 + + +https://home-assistant.io/components/sensor.uber/ +2016-03-24T23:04:00+00:00 + + +https://home-assistant.io/components/notify.gntp/ +2016-03-25T18:18:00+00:00 + + +https://home-assistant.io/components/media_player.yamaha/ +2016-03-26T07:58:00+00:00 + + +https://home-assistant.io/components/binary_sensor.vera/ +2016-03-26T23:00:00+00:00 + + +https://home-assistant.io/components/sensor.google_travel_time/ +2016-03-28T10:19:00+00:00 + + +https://home-assistant.io/components/sensor.gtfs/ +2016-03-28T10:19:00+00:00 + + +https://home-assistant.io/components/media_player.onkyo/ +2016-03-30T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.loop_energy/ +2016-04-02T22:00:00+00:00 + + +https://home-assistant.io/components/climate.zwave/ +2016-04-03T09:52:00+00:00 + + +https://home-assistant.io/components/camera.rpi_camera/ +2016-04-08T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.nzbget/ +2016-04-08T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.bluetooth_tracker/ +2016-04-10T17:24:00+00:00 + + +https://home-assistant.io/components/sensor.thinkingcleaner/ +2016-04-10T17:24:00+00:00 + + +https://home-assistant.io/components/switch.thinkingcleaner/ +2016-04-10T17:24:00+00:00 + + +https://home-assistant.io/components/zeroconf/ +2016-04-10T18:50:00+00:00 + + +https://home-assistant.io/components/upnp/ +2016-04-10T19:16:00+00:00 + + +https://home-assistant.io/components/binary_sensor.mysensors/ +2016-04-13T13:20:00+00:00 + + +https://home-assistant.io/components/climate.eq3btsmart/ +2016-04-18T22:00:00+00:00 + + +https://home-assistant.io/components/feedreader/ +2016-04-18T22:00:00+00:00 + + +https://home-assistant.io/components/media_player.webostv/ +2016-04-18T23:24:00+00:00 + + +https://home-assistant.io/components/notify.webostv/ +2016-04-18T23:24:00+00:00 + + +https://home-assistant.io/components/logentries/ +2016-04-29T16:50:00+00:00 + + +https://home-assistant.io/components/sensor.steam_online/ +2016-04-30T09:00:00+00:00 + + +https://home-assistant.io/components/light.qwikswitch/ +2016-05-04T00:00:00+00:00 + + +https://home-assistant.io/components/qwikswitch/ +2016-05-04T00:00:00+00:00 + + +https://home-assistant.io/components/switch.qwikswitch/ +2016-05-04T00:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.octoprint/ +2016-05-05T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.octoprint/ +2016-05-05T08:00:00+00:00 + + +https://home-assistant.io/components/switch.acer_projector/ +2016-05-07T07:00:00+00:00 + + +https://home-assistant.io/components/dweet/ +2016-05-07T07:08:00+00:00 + + +https://home-assistant.io/components/lock.zwave/ +2016-05-07T08:00:00+00:00 + + +https://home-assistant.io/components/media_player.pioneer/ +2016-05-07T08:00:00+00:00 + + +https://home-assistant.io/components/plant/ +2016-05-07T23:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.rpi_pfio/ +2016-05-08T15:00:00+00:00 + + +https://home-assistant.io/components/rpi_pfio/ +2016-05-08T15:00:00+00:00 + + +https://home-assistant.io/components/switch.rpi_pfio/ +2016-05-08T15:00:00+00:00 + + +https://home-assistant.io/components/media_player.gpmdp/ +2016-05-09T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.fitbit/ +2016-05-09T15:01:00+00:00 + + +https://home-assistant.io/components/switch.rpi_rf/ +2016-05-10T09:00:00+00:00 + + +https://home-assistant.io/components/notify.ecobee/ +2016-05-12T09:00:00+00:00 + + +https://home-assistant.io/components/media_player.lg_netcast/ +2016-05-12T23:22:00+00:00 + + +https://home-assistant.io/components/sensor.supervisord/ +2016-05-13T22:00:00+00:00 + + +https://home-assistant.io/components/notify.twilio_sms/ +2016-05-14T14:14:00+00:00 + + +https://home-assistant.io/components/twilio/ +2016-05-14T14:14:00+00:00 + + +https://home-assistant.io/components/notify.aws_lambda/ +2016-05-14T16:35:00+00:00 + + +https://home-assistant.io/components/notify.aws_sns/ +2016-05-14T16:35:00+00:00 + + +https://home-assistant.io/components/notify.aws_sqs/ +2016-05-14T16:35:00+00:00 + + +https://home-assistant.io/components/media_player.roku/ +2016-05-16T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.lastfm/ +2016-05-18T09:00:00+00:00 + + +https://home-assistant.io/components/light.template/ +2016-05-18T20:32:00+00:00 + + +https://home-assistant.io/components/lirc/ +2016-05-22T19:59:00+00:00 + + +https://home-assistant.io/components/enocean/ +2016-05-25T23:39:00+00:00 + + +https://home-assistant.io/components/binary_sensor.enocean/ +2016-05-25T23:49:00+00:00 + + +https://home-assistant.io/components/light.enocean/ +2016-05-25T23:49:00+00:00 + + +https://home-assistant.io/components/switch.enocean/ +2016-05-25T23:49:00+00:00 + + +https://home-assistant.io/components/sensor.enocean/ +2016-05-26T01:00:00+00:00 + + +https://home-assistant.io/components/light.osramlightify/ +2016-05-29T08:00:00+00:00 + + +https://home-assistant.io/components/camera.arlo/ +2016-05-30T10:00:00+00:00 + + +https://home-assistant.io/components/switch.flux/ +2016-06-01T17:41:00+00:00 + + +https://home-assistant.io/components/camera.netatmo/ +2016-06-02T08:10:00+00:00 + + +https://home-assistant.io/components/netatmo/ +2016-06-02T08:10:00+00:00 + + +https://home-assistant.io/components/sensor.plex/ +2016-06-03T08:19:00+00:00 + + +https://home-assistant.io/components/sensor.snmp/ +2016-06-05T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.dte_energy_bridge/ +2016-06-07T08:10:00+00:00 + + +https://home-assistant.io/components/knx/ +2016-06-08T12:00:00+00:00 + + +https://home-assistant.io/components/media_player.pandora/ +2016-06-10T19:59:00+00:00 + + +https://home-assistant.io/components/camera.local_file/ +2016-06-12T17:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.bt_home_hub_5/ +2016-06-13T13:00:00+00:00 + + +https://home-assistant.io/components/sensor.swiss_hydrological_data/ +2016-06-17T17:00:00+00:00 + + +https://home-assistant.io/components/media_player.cmus/ +2016-06-17T18:45:00+00:00 + + +https://home-assistant.io/components/sensor.fixer/ +2016-06-20T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.openexchangerates/ +2016-06-23T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.netatmo/ +2016-06-23T11:10:00+00:00 + + +https://home-assistant.io/components/climate.knx/ +2016-06-24T12:00:00+00:00 + + +https://home-assistant.io/components/light.knx/ +2016-06-24T12:00:00+00:00 + + +https://home-assistant.io/components/switch.knx/ +2016-06-24T12:00:00+00:00 + + +https://home-assistant.io/components/hdmi_cec/ +2016-06-24T19:59:00+00:00 + + +https://home-assistant.io/components/persistent_notification/ +2016-06-25T10:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.homematic/ +2016-06-28T08:30:00+00:00 + + +https://home-assistant.io/components/climate.homematic/ +2016-06-28T08:30:00+00:00 + + +https://home-assistant.io/components/light.homematic/ +2016-06-28T08:30:00+00:00 + + +https://home-assistant.io/components/sensor.homematic/ +2016-06-28T08:30:00+00:00 + + +https://home-assistant.io/components/switch.homematic/ +2016-06-28T08:30:00+00:00 + + +https://home-assistant.io/components/cover.command_line/ +2016-06-28T17:30:00+00:00 + + +https://home-assistant.io/components/cover/ +2016-06-28T17:30:00+00:00 + + +https://home-assistant.io/components/cover.scsgate/ +2016-06-28T17:30:00+00:00 + + +https://home-assistant.io/components/cover.wink/ +2016-06-28T17:30:00+00:00 + + +https://home-assistant.io/components/lock.vera/ +2016-06-29T15:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.envisalink/ +2016-07-01T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.envisalink/ +2016-07-01T08:00:00+00:00 + + +https://home-assistant.io/components/media_player.braviatv/ +2016-07-01T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.envisalink/ +2016-07-01T10:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.egardia/ +2016-07-02T22:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.simplisafe/ +2016-07-02T22:00:00+00:00 + + +https://home-assistant.io/components/sensor.yweather/ +2016-07-06T09:06:00+00:00 + + +https://home-assistant.io/components/weather.yweather/ +2016-07-06T09:06:00+00:00 + + +https://home-assistant.io/components/sensor.imap/ +2016-07-11T06:00:00+00:00 + + +https://home-assistant.io/components/notify.joaoapps_join/ +2016-07-12T09:00:00+00:00 + + +https://home-assistant.io/components/joaoapps_join/ +2016-07-12T10:49:00+00:00 + + +https://home-assistant.io/components/binary_sensor.knx/ +2016-07-13T07:00:00+00:00 + + +https://home-assistant.io/components/switch.tplink/ +2016-07-13T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.gpsd/ +2016-07-18T07:00:00+00:00 + + +https://home-assistant.io/components/media_player.directv/ +2016-07-19T01:00:00+00:00 + + +https://home-assistant.io/components/media_player.russound_rnet/ +2016-07-21T22:00:00+00:00 + + +https://home-assistant.io/components/light.x10/ +2016-07-27T00:00:00+00:00 + + +https://home-assistant.io/components/media_player.mpchc/ +2016-07-27T21:21:00+00:00 + + +https://home-assistant.io/components/sensor.ohmconnect/ +2016-08-08T17:05:00+00:00 + + +https://home-assistant.io/components/foursquare/ +2016-08-08T17:20:00+00:00 + + +https://home-assistant.io/components/light.mqtt_json/ +2016-08-09T08:30:00+00:00 + + +https://home-assistant.io/components/sensor.fastdotcom/ +2016-08-10T17:30:00+00:00 + + +https://home-assistant.io/components/sensor.serial_pm/ +2016-08-11T12:00:00+00:00 + + +https://home-assistant.io/components/camera.ffmpeg/ +2016-08-13T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.fritzbox_callmonitor/ +2016-08-13T15:00:00+00:00 + + +https://home-assistant.io/components/sensor.hp_ilo/ +2016-08-15T19:00:00+00:00 + + +https://home-assistant.io/components/notify.html5/ +2016-08-17T21:58:00+00:00 + + +https://home-assistant.io/components/sensor.wunderground/ +2016-08-18T00:00:00+00:00 + + +https://home-assistant.io/components/notify.group/ +2016-08-18T00:12:00+00:00 + + +https://home-assistant.io/components/sensor.knx/ +2016-08-20T22:24:00+00:00 + + +https://home-assistant.io/components/sensor.mqtt_room/ +2016-08-21T03:58:00+00:00 + + +https://home-assistant.io/components/notify.llamalab_automate/ +2016-08-21T13:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.bluetooth_le_tracker/ +2016-08-24T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.mhz19/ +2016-08-24T00:00:00+00:00 + + +https://home-assistant.io/components/cover.homematic/ +2016-08-24T14:25:00+00:00 + + +https://home-assistant.io/components/cover.rpi_gpio/ +2016-08-24T14:28:00+00:00 + + +https://home-assistant.io/components/cover.rfxtrx/ +2016-08-24T14:30:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ffmpeg_motion/ +2016-08-25T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ffmpeg_noise/ +2016-08-25T08:00:00+00:00 + + +https://home-assistant.io/components/emulated_hue/ +2016-08-26T08:00:00+00:00 + + +https://home-assistant.io/components/climate.ecobee/ +2016-08-26T18:00:00+00:00 + + +https://home-assistant.io/components/climate/ +2016-08-26T19:00:00+00:00 + + +https://home-assistant.io/components/fan/ +2016-08-26T19:00:00+00:00 + + +https://home-assistant.io/components/fan.mqtt/ +2016-08-27T09:00:00+00:00 + + +https://home-assistant.io/components/sensor.xbox_live/ +2016-08-28T02:45:00+00:00 + + +https://home-assistant.io/components/binary_sensor.sleepiq/ +2016-08-28T08:56:00+00:00 + + +https://home-assistant.io/components/sensor.sleepiq/ +2016-08-28T08:56:00+00:00 + + +https://home-assistant.io/components/sleepiq/ +2016-08-28T08:56:00+00:00 + + +https://home-assistant.io/components/nuimo_controller/ +2016-08-30T12:00:00+00:00 + + +https://home-assistant.io/components/rpi_gpio/ +2016-08-30T19:00:00+00:00 + + +https://home-assistant.io/components/sensor.coinmarketcap/ +2016-08-31T08:15:00+00:00 + + +https://home-assistant.io/components/switch.netio/ +2016-09-02T19:00:00+00:00 + + +https://home-assistant.io/components/sensor.pi_hole/ +2016-09-03T16:30:00+00:00 + + +https://home-assistant.io/components/notify.knx/ +2016-09-03T17:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/cover.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/fan.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/light.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/lock.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/sensor.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/switch.isy994/ +2016-09-03T23:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.trend/ +2016-09-05T10:00:00+00:00 + + +https://home-assistant.io/components/notify.apns/ +2016-09-05T23:00:00+00:00 + + +https://home-assistant.io/components/sensor.linux_battery/ +2016-09-06T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.emoncms/ +2016-09-08T00:15:00+00:00 + + +https://home-assistant.io/components/sensor.imap_email_content/ +2016-09-09T12:30:00+00:00 + + +https://home-assistant.io/components/light.insteon_hub/ +2016-09-10T08:00:00+00:00 + + +https://home-assistant.io/components/notify.simplepush/ +2016-09-11T18:00:00+00:00 + + +https://home-assistant.io/components/notify.kodi/ +2016-09-12T16:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.modbus/ +2016-09-13T12:02:00+00:00 + + +https://home-assistant.io/components/sensor.bom/ +2016-09-13T18:00:00+00:00 + + +https://home-assistant.io/components/ffmpeg/ +2016-09-14T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.yahoo_finance/ +2016-09-18T21:00:00+00:00 + + +https://home-assistant.io/components/sensor.miflora/ +2016-09-19T12:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.netatmo/ +2016-09-19T15:10:00+00:00 + + +https://home-assistant.io/components/climate.vera/ +2016-09-19T21:00:00+00:00 + + +https://home-assistant.io/components/cover.vera/ +2016-09-19T21:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.digital_ocean/ +2016-09-24T08:00:00+00:00 + + +https://home-assistant.io/components/switch.digital_ocean/ +2016-09-24T08:00:00+00:00 + + +https://home-assistant.io/components/digital_ocean/ +2016-09-24T20:00:00+00:00 + + +https://home-assistant.io/components/emoncms_history/ +2016-09-25T12:50:00+00:00 + + +https://home-assistant.io/components/sensor.darksky/ +2016-09-26T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.ted5000/ +2016-09-27T11:19:00+00:00 + + +https://home-assistant.io/components/sensor.statistics/ +2016-09-28T12:10:00+00:00 + + +https://home-assistant.io/components/weather/ +2016-09-28T14:00:00+00:00 + + +https://home-assistant.io/components/keyboard_remote/ +2016-09-28T14:39:00+00:00 + + +https://home-assistant.io/components/cover.mqtt/ +2016-09-28T17:30:00+00:00 + + +https://home-assistant.io/components/weather.bom/ +2016-09-29T09:00:00+00:00 + + +https://home-assistant.io/components/weather.darksky/ +2016-09-29T09:00:00+00:00 + + +https://home-assistant.io/components/weather.openweathermap/ +2016-09-29T09:00:00+00:00 + + +https://home-assistant.io/components/sensor.haveibeenpwned/ +2016-09-29T18:00:00+00:00 + + +https://home-assistant.io/components/envisalink/ +2016-09-30T22:45:00+00:00 + + +https://home-assistant.io/components/media_player.mpd/ +2016-09-30T23:06:00+00:00 + + +https://home-assistant.io/components/climate.mysensors/ +2016-10-01T13:00:00+00:00 + + +https://home-assistant.io/components/cover.mysensors/ +2016-10-01T13:00:00+00:00 + + +https://home-assistant.io/components/light.mysensors/ +2016-10-01T13:00:00+00:00 + + +https://home-assistant.io/components/mysensors/ +2016-10-01T13:00:00+00:00 + + +https://home-assistant.io/components/sensor.mysensors/ +2016-10-01T13:00:00+00:00 + + +https://home-assistant.io/components/switch.mysensors/ +2016-10-01T13:00:00+00:00 + + +https://home-assistant.io/components/switch.digitalloggers/ +2016-10-02T10:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.volvooncall/ +2016-10-02T17:00:00+00:00 + + +https://home-assistant.io/components/switch.volvooncall/ +2016-10-02T17:00:00+00:00 + + +https://home-assistant.io/components/volvooncall/ +2016-10-02T17:00:00+00:00 + + +https://home-assistant.io/components/switch.anel_pwrctrl/ +2016-10-02T19:04:00+00:00 + + +https://home-assistant.io/components/sensor.vasttrafik/ +2016-10-05T08:45:00+00:00 + + +https://home-assistant.io/components/sensor.pilight/ +2016-10-08T23:21:00+00:00 + + +https://home-assistant.io/components/neato/ +2016-10-09T20:15:00+00:00 + + +https://home-assistant.io/components/climate.netatmo/ +2016-10-11T08:10:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.concord232/ +2016-10-11T10:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.concord232/ +2016-10-11T10:00:00+00:00 + + +https://home-assistant.io/components/notify.matrix/ +2016-10-11T23:51:00+00:00 + + +https://home-assistant.io/components/sensor.scrape/ +2016-10-12T09:10:00+00:00 + + +https://home-assistant.io/components/camera.synology/ +2016-10-13T08:01:00+00:00 + + +https://home-assistant.io/components/sensor.min_max/ +2016-10-13T12:00:00+00:00 + + +https://home-assistant.io/components/media_player.emby/ +2016-10-13T22:00:00+00:00 + + +https://home-assistant.io/components/sensor.zoneminder/ +2016-10-13T22:57:00+00:00 + + +https://home-assistant.io/components/switch.zoneminder/ +2016-10-13T22:57:00+00:00 + + +https://home-assistant.io/components/zoneminder/ +2016-10-13T22:57:00+00:00 + + +https://home-assistant.io/components/device_tracker.bbox/ +2016-10-13T23:00:00+00:00 + + +https://home-assistant.io/components/notify.telstra/ +2016-10-19T10:00:00+00:00 + + +https://home-assistant.io/components/switch.neato/ +2016-10-19T17:10:00+00:00 + + +https://home-assistant.io/components/sensor.arwn/ +2016-10-20T15:15:00+00:00 + + +https://home-assistant.io/components/mochad/ +2016-10-20T17:09:00+00:00 + + +https://home-assistant.io/components/switch.mochad/ +2016-10-20T21:13:00+00:00 + + +https://home-assistant.io/components/notify.nfandroidtv/ +2016-10-21T13:00:00+00:00 + + +https://home-assistant.io/components/sensor.bbox/ +2016-10-22T01:00:00+00:00 + + +https://home-assistant.io/components/camera.verisure/ +2016-10-22T09:00:00+00:00 + + +https://home-assistant.io/components/cover.garadget/ +2016-10-24T14:25:00+00:00 + + +https://home-assistant.io/components/thingspeak/ +2016-10-24T15:45:00+00:00 + + +https://home-assistant.io/components/sensor.currencylayer/ +2016-10-26T10:00:00+00:00 + + +https://home-assistant.io/components/light.litejet/ +2016-10-26T13:00:00+00:00 + + +https://home-assistant.io/components/switch.litejet/ +2016-10-26T13:00:00+00:00 + + +https://home-assistant.io/components/scene.litejet/ +2016-10-26T16:00:00+00:00 + + +https://home-assistant.io/components/sensor.influxdb/ +2016-10-26T23:15:00+00:00 + + +https://home-assistant.io/components/sensor.hddtemp/ +2016-10-28T07:00:00+00:00 + + +https://home-assistant.io/components/light.yeelight/ +2016-10-29T00:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.swisscom/ +2016-10-29T23:30:00+00:00 + + +https://home-assistant.io/components/sensor.cups/ +2016-10-30T12:10:00+00:00 + + +https://home-assistant.io/components/sensor.random/ +2016-10-30T12:10:00+00:00 + + +https://home-assistant.io/components/sensor.synologydsm/ +2016-10-30T23:21:00+00:00 + + +https://home-assistant.io/components/media_player.philips_js/ +2016-11-01T13:00:00+00:00 + + +https://home-assistant.io/components/climate.wink/ +2016-11-01T22:36:00+00:00 + + +https://home-assistant.io/components/media_player.aquostv/ +2016-11-02T12:02:00+00:00 + + +https://home-assistant.io/components/media_player.vlc/ +2016-11-02T12:02:00+00:00 + + +https://home-assistant.io/components/sensor.dovado/ +2016-11-05T08:00:00+00:00 + + +https://home-assistant.io/components/remote.harmony/ +2016-11-05T17:00:00+00:00 + + +https://home-assistant.io/components/remote/ +2016-11-05T19:39:00+00:00 + + +https://home-assistant.io/components/sensor.pvoutput/ +2016-11-06T10:00:00+00:00 + + +https://home-assistant.io/components/media_player.soundtouch/ +2016-11-06T13:00:00+00:00 + + +https://home-assistant.io/components/light.mqtt_template/ +2016-11-06T21:16:00+00:00 + + +https://home-assistant.io/components/device_tracker.cisco_ios/ +2016-11-07T19:59:00+00:00 + + +https://home-assistant.io/components/sensor.dsmr/ +2016-11-12T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.waqi/ +2016-11-17T06:00:00+00:00 + + +https://home-assistant.io/components/calendar/ +2016-11-19T08:36:00+00:00 + + +https://home-assistant.io/components/sensor.api_stream/ +2016-11-19T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.sonarr/ +2016-11-19T13:35:00+00:00 + + +https://home-assistant.io/components/switch.broadlink/ +2016-11-22T22:41:00+00:00 + + +https://home-assistant.io/components/sensor.nut/ +2016-11-23T00:00:00+00:00 + + +https://home-assistant.io/components/camera.amcrest/ +2016-11-24T10:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.gpslogger/ +2016-11-25T15:00:00+00:00 + + +https://home-assistant.io/components/media_player.dunehd/ +2016-11-26T09:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.threshold/ +2016-11-26T12:10:00+00:00 + + +https://home-assistant.io/components/binary_sensor.flic/ +2016-12-02T22:03:00+00:00 + + +https://home-assistant.io/components/camera.nest/ +2016-12-03T08:10:00+00:00 + + +https://home-assistant.io/components/sensor.broadlink/ +2016-12-03T21:59:00+00:00 + + +https://home-assistant.io/components/sensor.netdata/ +2016-12-05T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.zamg/ +2016-12-06T08:00:00+00:00 + + +https://home-assistant.io/components/weather.zamg/ +2016-12-06T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.hikvision/ +2016-12-08T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.hydroquebec/ +2016-12-10T00:15:00+00:00 + + +https://home-assistant.io/components/tts.google/ +2016-12-13T07:00:00+00:00 + + +https://home-assistant.io/components/tts/ +2016-12-13T07:00:00+00:00 + + +https://home-assistant.io/components/tts.voicerss/ +2016-12-13T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.zabbix/ +2016-12-13T22:57:00+00:00 + + +https://home-assistant.io/components/zabbix/ +2016-12-13T22:57:00+00:00 + + +https://home-assistant.io/components/device_tracker.linksys_ap/ +2016-12-16T01:40:00+00:00 + + +https://home-assistant.io/components/insteon_local/ +2016-12-18T08:00:00+00:00 + + +https://home-assistant.io/components/light.insteon_local/ +2016-12-18T08:00:00+00:00 + + +https://home-assistant.io/components/switch.insteon_local/ +2016-12-18T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.iss/ +2016-12-18T10:00:00+00:00 + + +https://home-assistant.io/components/cover.zwave/ +2016-12-18T19:41:00+00:00 + + +https://home-assistant.io/components/device_tracker.trackr/ +2016-12-22T00:00:00+00:00 + + +https://home-assistant.io/components/switch.kankun/ +2016-12-28T01:50:00+00:00 + + +https://home-assistant.io/components/device_tracker.upc_connect/ +2016-12-30T00:00:00+00:00 + + +https://home-assistant.io/components/notify.facebook/ +2016-12-31T14:14:00+00:00 + + +https://home-assistant.io/components/media_player.anthemav/ +2016-12-31T23:11:00+00:00 + + +https://home-assistant.io/components/sensor.fido/ +2017-01-01T17:17:00+00:00 + + +https://home-assistant.io/components/tts.picotts/ +2017-01-03T16:00:00+00:00 + + +https://home-assistant.io/components/light.tikteck/ +2017-01-04T16:32:00+00:00 + + +https://home-assistant.io/components/melissa/ +2017-01-05T17:30:00+00:00 + + +https://home-assistant.io/components/device_tracker.ping/ +2017-01-06T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.usps/ +2017-01-06T08:00:00+00:00 + + +https://home-assistant.io/components/notify.lannouncer/ +2017-01-06T10:00:00+00:00 + + +https://home-assistant.io/components/notify.mysensors/ +2017-01-07T14:00:00+00:00 + + +https://home-assistant.io/components/image_processing/ +2017-01-09T00:00:00+00:00 + + +https://home-assistant.io/components/image_processing.openalpr_cloud/ +2017-01-09T00:00:00+00:00 + + +https://home-assistant.io/components/image_processing.openalpr_local/ +2017-01-09T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.dublin_bus_transport/ +2017-01-09T21:45:00+00:00 + + +https://home-assistant.io/components/device_tracker.xiaomi/ +2017-01-12T12:04:00+00:00 + + +https://home-assistant.io/components/sensor.amcrest/ +2017-01-13T10:00:00+00:00 + + +https://home-assistant.io/components/light.piglow/ +2017-01-13T18:00:00+00:00 + + +https://home-assistant.io/components/light.zengge/ +2017-01-14T08:00:00+00:00 + + +https://home-assistant.io/components/bbb_gpio/ +2017-01-14T10:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.bbb_gpio/ +2017-01-14T10:00:00+00:00 + + +https://home-assistant.io/components/switch.bbb_gpio/ +2017-01-14T10:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.wink/ +2017-01-14T12:00:00+00:00 + + +https://home-assistant.io/components/fan.wink/ +2017-01-14T12:00:00+00:00 + + +https://home-assistant.io/components/alert/ +2017-01-15T20:00:00+00:00 + + +https://home-assistant.io/components/tts.yandextts/ +2017-01-17T03:04:00+00:00 + + +https://home-assistant.io/components/sensor.skybeacon/ +2017-01-17T10:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.tado/ +2017-01-17T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.fritzbox_netmonitor/ +2017-01-17T22:00:00+00:00 + + +https://home-assistant.io/components/light.avion/ +2017-01-17T23:17:00+00:00 + + +https://home-assistant.io/components/light.decora/ +2017-01-18T22:45:00+00:00 + + +https://home-assistant.io/components/sensor.wsdot/ +2017-01-21T18:00:00+00:00 + + +https://home-assistant.io/components/switch.fritzdect/ +2017-01-24T21:00:00+00:00 + + +https://home-assistant.io/components/image_processing.dlib_face_identify/ +2017-01-25T00:00:00+00:00 + + +https://home-assistant.io/components/image_processing.microsoft_face_detect/ +2017-01-25T00:00:00+00:00 + + +https://home-assistant.io/components/image_processing.microsoft_face_identify/ +2017-01-25T00:00:00+00:00 + + +https://home-assistant.io/components/image_processing.opencv/ +2017-01-25T00:00:00+00:00 + + +https://home-assistant.io/components/microsoft_face/ +2017-01-25T00:00:00+00:00 + + +https://home-assistant.io/components/media_player.liveboxplaytv/ +2017-01-25T07:27:00+00:00 + + +https://home-assistant.io/components/remote.xiaomi_miio/ +2017-01-25T17:08:00+00:00 + + +https://home-assistant.io/components/notify.twilio_call/ +2017-01-27T00:09:00+00:00 + + +https://home-assistant.io/components/climate.oem/ +2017-01-27T11:15:00+00:00 + + +https://home-assistant.io/components/dialogflow/ +2017-01-27T11:28:00+00:00 + + +https://home-assistant.io/components/device_tracker.sky_hub/ +2017-01-28T09:00:00+00:00 + + +https://home-assistant.io/components/tts.amazon_polly/ +2017-01-28T09:00:00+00:00 + + +https://home-assistant.io/components/lutron/ +2017-01-28T13:00:00+00:00 + + +https://home-assistant.io/components/lutron_caseta/ +2017-01-28T13:00:00+00:00 + + +https://home-assistant.io/components/sensor.qnap/ +2017-02-02T06:39:00+00:00 + + +https://home-assistant.io/components/lock.nuki/ +2017-02-02T09:35:00+00:00 + + +https://home-assistant.io/components/sensor.openevse/ +2017-02-02T22:09:00+00:00 + + +https://home-assistant.io/components/sensor.moon/ +2017-02-03T07:10:00+00:00 + + +https://home-assistant.io/components/media_player.frontier_silicon/ +2017-02-04T00:01:00+00:00 + + +https://home-assistant.io/components/binary_sensor.maxcube/ +2017-02-04T22:00:00+00:00 + + +https://home-assistant.io/components/climate.maxcube/ +2017-02-04T22:00:00+00:00 + + +https://home-assistant.io/components/maxcube/ +2017-02-04T22:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.mysensors/ +2017-02-06T14:00:00+00:00 + + +https://home-assistant.io/components/mailgun/ +2017-02-06T16:52:00+00:00 + + +https://home-assistant.io/components/notify.mailgun/ +2017-02-06T16:52:00+00:00 + + +https://home-assistant.io/components/media_player.apple_tv/ +2017-02-08T07:11:00+00:00 + + +https://home-assistant.io/components/sensor.history_stats/ +2017-02-10T12:00:00+00:00 + + +https://home-assistant.io/components/light.yeelightsunflower/ +2017-02-11T00:00:00+00:00 + + +https://home-assistant.io/components/media_player.clementine/ +2017-02-11T17:15:00+00:00 + + +https://home-assistant.io/components/remote.itach/ +2017-02-12T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.fedex/ +2017-02-14T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.pocketcasts/ +2017-02-14T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.ups/ +2017-02-14T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.aurora/ +2017-02-14T10:00:00+00:00 + + +https://home-assistant.io/components/cover.myq/ +2017-02-14T14:21:00+00:00 + + +https://home-assistant.io/components/sensor.ebox/ +2017-02-15T17:17:00+00:00 + + +https://home-assistant.io/components/media_player.gstreamer/ +2017-02-16T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.crimereports/ +2017-02-16T11:00:00+00:00 + + +https://home-assistant.io/components/insteon_plm/ +2017-02-19T16:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.insteon_plm/ +2017-02-19T17:00:00+00:00 + + +https://home-assistant.io/components/fan.insteon_plm/ +2017-02-19T17:00:00+00:00 + + +https://home-assistant.io/components/light.insteon_plm/ +2017-02-19T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.insteon_plm/ +2017-02-19T17:00:00+00:00 + + +https://home-assistant.io/components/switch.insteon_plm/ +2017-02-19T17:00:00+00:00 + + +https://home-assistant.io/components/camera.zoneminder/ +2017-02-19T18:11:00+00:00 + + +https://home-assistant.io/components/notify.ciscospark/ +2017-02-20T15:00:00+00:00 + + +https://home-assistant.io/components/sensor.modem_callerid/ +2017-02-20T22:10:00+00:00 + + +https://home-assistant.io/components/media_player.openhome/ +2017-02-21T22:40:00+00:00 + + +https://home-assistant.io/components/binary_sensor.zha/ +2017-02-22T00:00:00+00:00 + + +https://home-assistant.io/components/light.zha/ +2017-02-22T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.zha/ +2017-02-22T00:00:00+00:00 + + +https://home-assistant.io/components/switch.zha/ +2017-02-22T00:00:00+00:00 + + +https://home-assistant.io/components/zha/ +2017-02-22T19:59:00+00:00 + + +https://home-assistant.io/components/config/ +2017-02-24T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.dnsip/ +2017-02-25T11:05:00+00:00 + + +https://home-assistant.io/components/sensor.comed_hourly_pricing/ +2017-03-02T00:15:00+00:00 + + +https://home-assistant.io/components/media_player.volumio/ +2017-03-04T00:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.blink/ +2017-03-05T22:13:00+00:00 + + +https://home-assistant.io/components/blink/ +2017-03-05T22:13:00+00:00 + + +https://home-assistant.io/components/camera.blink/ +2017-03-05T22:13:00+00:00 + + +https://home-assistant.io/components/sensor.blink/ +2017-03-05T22:13:00+00:00 + + +https://home-assistant.io/components/sensor.kwb/ +2017-03-06T14:10:00+00:00 + + +https://home-assistant.io/components/camera.dispatcher/ +2017-03-08T00:00:00+00:00 + + +https://home-assistant.io/components/android_ip_webcam/ +2017-03-10T00:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.android_ip_webcam/ +2017-03-10T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.android_ip_webcam/ +2017-03-10T00:00:00+00:00 + + +https://home-assistant.io/components/switch.android_ip_webcam/ +2017-03-10T00:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.workday/ +2017-03-13T21:30:00+00:00 + + +https://home-assistant.io/components/influxdb/ +2017-03-13T22:09:00+00:00 + + +https://home-assistant.io/components/sensor.lyft/ +2017-03-19T21:05:00+00:00 + + +https://home-assistant.io/components/climate.tado/ +2017-03-20T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.tado/ +2017-03-20T12:00:00+00:00 + + +https://home-assistant.io/components/tado/ +2017-03-20T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.mvglive/ +2017-03-21T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.metoffice/ +2017-03-23T22:00:00+00:00 + + +https://home-assistant.io/components/weather.metoffice/ +2017-03-23T22:00:00+00:00 + + +https://home-assistant.io/components/lock.lockitron/ +2017-03-24T00:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.pilight/ +2017-03-24T20:41:00+00:00 + + +https://home-assistant.io/components/sensor.eddystone_temperature/ +2017-03-26T01:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.rfxtrx/ +2017-03-26T12:45:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ring/ +2017-04-01T10:00:00+00:00 + + +https://home-assistant.io/components/ring/ +2017-04-01T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.ring/ +2017-04-01T10:00:00+00:00 + + +https://home-assistant.io/components/climate.sensibo/ +2017-04-01T13:00:00+00:00 + + +https://home-assistant.io/components/scene.wink/ +2017-04-01T16:45:00+00:00 + + +https://home-assistant.io/components/binary_sensor.axis/ +2017-04-01T19:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.alarmdecoder/ +2017-04-02T13:28:00+00:00 + + +https://home-assistant.io/components/alarmdecoder/ +2017-04-02T13:28:00+00:00 + + +https://home-assistant.io/components/binary_sensor.alarmdecoder/ +2017-04-02T13:28:00+00:00 + + +https://home-assistant.io/components/lametric/ +2017-04-02T13:28:00+00:00 + + +https://home-assistant.io/components/notify.lametric/ +2017-04-02T13:28:00+00:00 + + +https://home-assistant.io/components/sensor.alarmdecoder/ +2017-04-02T13:28:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.totalconnect/ +2017-04-02T22:00:00+00:00 + + +https://home-assistant.io/components/light.rpi_gpio_pwm/ +2017-04-04T13:00:00+00:00 + + +https://home-assistant.io/components/camera.neato/ +2017-04-05T13:10:00+00:00 + + +https://home-assistant.io/components/telegram_bot/ +2017-04-05T18:50:00+00:00 + + +https://home-assistant.io/components/telegram_bot.polling/ +2017-04-05T18:50:00+00:00 + + +https://home-assistant.io/components/telegram_bot.webhooks/ +2017-04-05T18:50:00+00:00 + + +https://home-assistant.io/components/fan.insteon_local/ +2017-04-06T11:00:00+00:00 + + +https://home-assistant.io/components/cover.opengarage/ +2017-04-07T14:25:00+00:00 + + +https://home-assistant.io/components/tts.marytts/ +2017-04-08T16:49:00+00:00 + + +https://home-assistant.io/components/media_player.spotify/ +2017-04-10T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ping/ +2017-04-11T08:00:00+00:00 + + +https://home-assistant.io/components/rss_feed_template/ +2017-04-11T20:42:00+00:00 + + +https://home-assistant.io/components/light.tradfri/ +2017-04-12T00:00:00+00:00 + + +https://home-assistant.io/components/tradfri/ +2017-04-12T00:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.mqtt_json/ +2017-04-12T20:41:00+00:00 + + +https://home-assistant.io/components/camera.mqtt/ +2017-04-14T00:45:00+00:00 + + +https://home-assistant.io/components/binary_sensor.mystrom/ +2017-04-14T08:15:00+00:00 + + +https://home-assistant.io/components/sensor.opensky/ +2017-04-14T10:00:00+00:00 + + +https://home-assistant.io/components/scene.lifx_cloud/ +2017-04-15T23:00:00+00:00 + + +https://home-assistant.io/components/datadog/ +2017-04-18T00:00:00+00:00 + + +https://home-assistant.io/components/light.mystrom/ +2017-04-18T06:00:00+00:00 + + +https://home-assistant.io/components/sensor.pushbullet/ +2017-04-20T16:44:00+00:00 + + +https://home-assistant.io/components/media_player.bluesound/ +2017-04-21T19:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.eight_sleep/ +2017-04-24T00:00:00+00:00 + + +https://home-assistant.io/components/eight_sleep/ +2017-04-24T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.eight_sleep/ +2017-04-24T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.cert_expiry/ +2017-04-24T14:14:00+00:00 + + +https://home-assistant.io/components/device_tracker.mikrotik/ +2017-04-28T16:03:00+00:00 + + +https://home-assistant.io/components/light.sensehat/ +2017-04-29T16:00:00+00:00 + + +https://home-assistant.io/components/light.blinkt/ +2017-04-30T09:00:00+00:00 + + +https://home-assistant.io/components/light.lutron/ +2017-04-30T09:00:00+00:00 + + +https://home-assistant.io/components/light.lutron_caseta/ +2017-04-30T09:00:00+00:00 + + +https://home-assistant.io/components/switch.lutron_caseta/ +2017-04-30T09:00:00+00:00 + + +https://home-assistant.io/components/axis/ +2017-04-30T23:04:00+00:00 + + +https://home-assistant.io/components/raspihats/ +2017-05-01T04:06:00+00:00 + + +https://home-assistant.io/components/binary_sensor.raspihats/ +2017-05-01T04:09:00+00:00 + + +https://home-assistant.io/components/camera.axis/ +2017-05-01T19:09:00+00:00 + + +https://home-assistant.io/components/lock.sesame/ +2017-05-02T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.envirophat/ +2017-05-03T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.radarr/ +2017-05-04T00:00:00+00:00 + + +https://home-assistant.io/components/image_processing.dlib_face_detect/ +2017-05-05T00:00:00+00:00 + + +https://home-assistant.io/components/vacuum.xiaomi_miio/ +2017-05-05T18:11:00+00:00 + + +https://home-assistant.io/components/kira/ +2017-05-07T00:00:00+00:00 + + +https://home-assistant.io/components/remote.kira/ +2017-05-07T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.kira/ +2017-05-07T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.file/ +2017-05-13T12:10:00+00:00 + + +https://home-assistant.io/components/switch.raspihats/ +2017-05-15T04:20:00+00:00 + + +https://home-assistant.io/components/sensor.buienradar/ +2017-05-15T14:00:00+00:00 + + +https://home-assistant.io/components/weather.buienradar/ +2017-05-15T14:00:00+00:00 + + +https://home-assistant.io/components/image_processing.seven_segments/ +2017-05-18T08:00:00+00:00 + + +https://home-assistant.io/components/spc/ +2017-05-18T08:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.spc/ +2017-05-18T22:01:00+00:00 + + +https://home-assistant.io/components/binary_sensor.spc/ +2017-05-18T22:05:00+00:00 + + +https://home-assistant.io/components/cover.lutron_caseta/ +2017-05-20T09:00:00+00:00 + + +https://home-assistant.io/components/juicenet/ +2017-05-20T22:00:00+00:00 + + +https://home-assistant.io/components/fan.zwave/ +2017-05-25T17:00:00+00:00 + + +https://home-assistant.io/components/dyson/ +2017-05-27T10:00:00+00:00 + + +https://home-assistant.io/components/fan.dyson/ +2017-05-27T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.dyson/ +2017-05-27T10:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.tapsaff/ +2017-05-28T18:00:00+00:00 + + +https://home-assistant.io/components/switch.rachio/ +2017-05-29T09:00:00+00:00 + + +https://home-assistant.io/components/arlo/ +2017-05-30T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.arlo/ +2017-05-30T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.blockchain/ +2017-06-01T16:20:00+00:00 + + +https://home-assistant.io/components/sensor.etherscan/ +2017-06-01T16:20:00+00:00 + + +https://home-assistant.io/components/sensor.sochain/ +2017-06-01T16:20:00+00:00 + + +https://home-assistant.io/components/climate.flexit/ +2017-06-02T14:30:00+00:00 + + +https://home-assistant.io/components/sensor.sensehat/ +2017-06-03T04:00:00+00:00 + + +https://home-assistant.io/components/sensor.ripple/ +2017-06-06T16:20:00+00:00 + + +https://home-assistant.io/components/media_player.nadtcp/ +2017-06-07T20:00:00+00:00 + + +https://home-assistant.io/components/camera.onvif/ +2017-06-09T21:00:00+00:00 + + +https://home-assistant.io/components/sensor.bh1750/ +2017-06-10T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.bme280/ +2017-06-10T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.htu21d/ +2017-06-10T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.gitter/ +2017-06-11T09:00:00+00:00 + + +https://home-assistant.io/components/python_script/ +2017-06-15T19:59:00+00:00 + + +https://home-assistant.io/components/sensor.openhardwaremonitor/ +2017-06-16T00:00:00+00:00 + + +https://home-assistant.io/components/shiftr/ +2017-06-16T07:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.velbus/ +2017-06-17T00:00:00+00:00 + + +https://home-assistant.io/components/fan.velbus/ +2017-06-17T00:00:00+00:00 + + +https://home-assistant.io/components/light.velbus/ +2017-06-17T00:00:00+00:00 + + +https://home-assistant.io/components/switch.velbus/ +2017-06-17T00:00:00+00:00 + + +https://home-assistant.io/components/velbus/ +2017-06-17T00:00:00+00:00 + + +https://home-assistant.io/components/cover.knx/ +2017-06-18T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.upnp/ +2017-06-18T12:00:00+00:00 + + +https://home-assistant.io/components/cover.template/ +2017-06-19T20:32:00+00:00 + + +https://home-assistant.io/components/notify.clicksend/ +2017-06-22T00:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.linksys_smart/ +2017-06-22T01:40:00+00:00 + + +https://home-assistant.io/components/snips/ +2017-06-22T12:00:00+00:00 + + +https://home-assistant.io/components/amcrest/ +2017-06-24T10:00:00+00:00 + + +https://home-assistant.io/components/telegram_bot.broadcast/ +2017-06-24T11:20:00+00:00 + + +https://home-assistant.io/components/prometheus/ +2017-06-25T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.citybikes/ +2017-06-25T14:20:00+00:00 + + +https://home-assistant.io/components/apple_tv/ +2017-06-26T20:47:00+00:00 + + +https://home-assistant.io/components/remote.apple_tv/ +2017-06-26T20:50:00+00:00 + + +https://home-assistant.io/components/comfoconnect/ +2017-06-28T18:00:00+00:00 + + +https://home-assistant.io/components/fan.comfoconnect/ +2017-06-28T18:00:00+00:00 + + +https://home-assistant.io/components/sensor.comfoconnect/ +2017-06-28T18:00:00+00:00 + + +https://home-assistant.io/components/asterisk_mbox/ +2017-06-30T18:30:00+00:00 + + +https://home-assistant.io/components/mailbox.asterisk_mbox/ +2017-06-30T18:30:00+00:00 + + +https://home-assistant.io/components/mailbox/ +2017-06-30T18:30:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.manual_mqtt/ +2017-07-02T09:10:00+00:00 + + +https://home-assistant.io/components/sensor.otp/ +2017-07-04T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.season/ +2017-07-04T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.uk_transport/ +2017-07-07T18:00:00+00:00 + + +https://home-assistant.io/components/wake_on_lan/ +2017-07-08T15:00:00+00:00 + + +https://home-assistant.io/components/scene.velux/ +2017-07-09T12:00:00+00:00 + + +https://home-assistant.io/components/velux/ +2017-07-09T12:00:00+00:00 + + +https://home-assistant.io/components/media_player.vizio/ +2017-07-10T19:00:00+00:00 + + +https://home-assistant.io/components/media_extractor/ +2017-07-12T07:00:00+00:00 + + +https://home-assistant.io/components/media_player.russound_rio/ +2017-07-12T22:00:00+00:00 + + +https://home-assistant.io/components/light.mochad/ +2017-07-14T11:29:00+00:00 + + +https://home-assistant.io/components/sensor.geizhals/ +2017-07-15T14:15:00+00:00 + + +https://home-assistant.io/components/sensor.london_underground/ +2017-07-15T18:45:00+00:00 + + +https://home-assistant.io/components/sensor.google_wifi/ +2017-07-15T21:22:00+00:00 + + +https://home-assistant.io/components/device_tracker.huawei_router/ +2017-07-16T01:40:00+00:00 + + +https://home-assistant.io/components/cover.tahoma/ +2017-07-18T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.tahoma/ +2017-07-18T12:00:00+00:00 + + +https://home-assistant.io/components/tahoma/ +2017-07-18T12:00:00+00:00 + + +https://home-assistant.io/components/light.decora_wifi/ +2017-07-19T12:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.xiaomi_aqara/ +2017-07-21T16:34:00+00:00 + + +https://home-assistant.io/components/cover.xiaomi_aqara/ +2017-07-21T16:34:00+00:00 + + +https://home-assistant.io/components/light.xiaomi_aqara/ +2017-07-21T16:34:00+00:00 + + +https://home-assistant.io/components/sensor.xiaomi_aqara/ +2017-07-21T16:34:00+00:00 + + +https://home-assistant.io/components/switch.xiaomi_aqara/ +2017-07-21T16:34:00+00:00 + + +https://home-assistant.io/components/xiaomi_aqara/ +2017-07-21T16:34:00+00:00 + + +https://home-assistant.io/components/light.tplink/ +2017-07-25T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.dwd_weather_warnings/ +2017-07-26T22:00:00+00:00 + + +https://home-assistant.io/components/vacuum/ +2017-07-28T15:00:00+00:00 + + +https://home-assistant.io/components/scene.lutron_caseta/ +2017-07-28T16:00:00+00:00 + + +https://home-assistant.io/components/camera.usps/ +2017-07-28T20:00:00+00:00 + + +https://home-assistant.io/components/usps/ +2017-07-28T20:00:00+00:00 + + +https://home-assistant.io/components/shopping_list/ +2017-07-29T13:00:00+00:00 + + +https://home-assistant.io/components/sensor.geo_rss_events/ +2017-07-31T00:00:00+00:00 + + +https://home-assistant.io/components/climate.mqtt/ +2017-07-31T19:59:00+00:00 + + +https://home-assistant.io/components/device_tracker.tesla/ +2017-08-02T12:20:00+00:00 + + +https://home-assistant.io/components/sensor.london_air/ +2017-08-02T18:00:00+00:00 + + +https://home-assistant.io/components/vacuum.roomba/ +2017-08-04T20:43:00+00:00 + + +https://home-assistant.io/components/vacuum.dyson/ +2017-08-06T10:30:00+00:00 + + +https://home-assistant.io/components/camera.doorbird/ +2017-08-06T11:30:00+00:00 + + +https://home-assistant.io/components/doorbird/ +2017-08-06T11:30:00+00:00 + + +https://home-assistant.io/components/switch.doorbird/ +2017-08-06T11:30:00+00:00 + + +https://home-assistant.io/components/cover.rflink/ +2017-08-08T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.shodan/ +2017-08-09T10:30:00+00:00 + + +https://home-assistant.io/components/sensor.version/ +2017-08-10T10:30:00+00:00 + + +https://home-assistant.io/components/notify.hipchat/ +2017-08-10T15:00:00+00:00 + + +https://home-assistant.io/components/switch.telnet/ +2017-08-10T19:19:00+00:00 + + +https://home-assistant.io/components/lock.nello/ +2017-08-13T17:25:00+00:00 + + +https://home-assistant.io/components/switch.rainmachine/ +2017-08-14T13:30:00+00:00 + + +https://home-assistant.io/components/notify.prowl/ +2017-08-17T18:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.geofency/ +2017-08-22T19:00:00+00:00 + + +https://home-assistant.io/components/sensor.worldtidesinfo/ +2017-08-23T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.tank_utility/ +2017-08-24T08:21:00+00:00 + + +https://home-assistant.io/components/sensor.rainbird/ +2017-08-25T12:00:00+00:00 + + +https://home-assistant.io/components/switch.rainbird/ +2017-08-25T12:00:00+00:00 + + +https://home-assistant.io/components/abode/ +2017-08-26T00:28:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.abode/ +2017-08-26T00:28:00+00:00 + + +https://home-assistant.io/components/binary_sensor.abode/ +2017-08-26T00:28:00+00:00 + + +https://home-assistant.io/components/counter/ +2017-08-26T06:00:00+00:00 + + +https://home-assistant.io/components/fan.insteon_hub/ +2017-08-26T08:00:00+00:00 + + +https://home-assistant.io/components/light.xiaomi_miio/ +2017-08-26T08:45:00+00:00 + + +https://home-assistant.io/components/switch.xiaomi_miio/ +2017-08-26T10:18:00+00:00 + + +https://home-assistant.io/components/camera.abode/ +2017-08-26T13:28:00+00:00 + + +https://home-assistant.io/components/cover.abode/ +2017-08-26T13:28:00+00:00 + + +https://home-assistant.io/components/light.abode/ +2017-08-26T13:28:00+00:00 + + +https://home-assistant.io/components/lock.abode/ +2017-08-26T13:28:00+00:00 + + +https://home-assistant.io/components/switch.abode/ +2017-08-26T13:28:00+00:00 + + +https://home-assistant.io/components/mycroft/ +2017-08-26T17:00:00+00:00 + + +https://home-assistant.io/components/notify.mycroft/ +2017-08-26T17:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.bayesian/ +2017-08-27T20:05:00+00:00 + + +https://home-assistant.io/components/mychevy/ +2017-08-28T17:00:00+00:00 + + +https://home-assistant.io/components/tesla/ +2017-08-28T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.mopar/ +2017-08-30T10:00:00+00:00 + + +https://home-assistant.io/components/climate.tesla/ +2017-08-30T12:20:00+00:00 + + +https://home-assistant.io/components/lock.tesla/ +2017-08-30T12:20:00+00:00 + + +https://home-assistant.io/components/sensor.melissa/ +2017-08-30T12:21:00+00:00 + + +https://home-assistant.io/components/sensor.tesla/ +2017-08-30T12:21:00+00:00 + + +https://home-assistant.io/components/binary_sensor.tesla/ +2017-08-30T12:29:00+00:00 + + +https://home-assistant.io/components/calendar.todoist/ +2017-08-31T02:22:00+00:00 + + +https://home-assistant.io/components/media_player.yamaha_musiccast/ +2017-09-02T21:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.raincloud/ +2017-09-04T10:00:00+00:00 + + +https://home-assistant.io/components/raincloud/ +2017-09-04T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.raincloud/ +2017-09-04T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.travisci/ +2017-09-04T10:00:00+00:00 + + +https://home-assistant.io/components/switch.raincloud/ +2017-09-04T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.airvisual/ +2017-09-06T12:15:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.satel_integra/ +2017-09-07T13:28:00+00:00 + + +https://home-assistant.io/components/binary_sensor.satel_integra/ +2017-09-07T13:28:00+00:00 + + +https://home-assistant.io/components/satel_integra/ +2017-09-07T13:28:00+00:00 + + +https://home-assistant.io/components/vacuum.mqtt/ +2017-09-11T20:26:00+00:00 + + +https://home-assistant.io/components/sensor.worxlandroid/ +2017-09-12T13:23:00+00:00 + + +https://home-assistant.io/components/input_datetime/ +2017-09-14T16:01:00+00:00 + + +https://home-assistant.io/components/sensor.onewire/ +2017-09-15T10:10:00+00:00 + + +https://home-assistant.io/components/device_tracker.keenetic_ndms2/ +2017-09-15T15:40:00+00:00 + + +https://home-assistant.io/components/input_number/ +2017-09-19T03:30:00+00:00 + + +https://home-assistant.io/components/switch.tesla/ +2017-09-19T12:20:00+00:00 + + +https://home-assistant.io/components/history_graph/ +2017-09-20T15:00:00+00:00 + + +https://home-assistant.io/components/duckdns/ +2017-09-23T07:08:00+00:00 + + +https://home-assistant.io/components/notify.rocketchat/ +2017-09-23T20:00:00+00:00 + + +https://home-assistant.io/components/recorder/ +2017-09-24T09:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.hive/ +2017-09-24T21:00:00+00:00 + + +https://home-assistant.io/components/climate.hive/ +2017-09-24T21:00:00+00:00 + + +https://home-assistant.io/components/hive/ +2017-09-24T21:00:00+00:00 + + +https://home-assistant.io/components/light.hive/ +2017-09-24T21:00:00+00:00 + + +https://home-assistant.io/components/sensor.hive/ +2017-09-24T21:00:00+00:00 + + +https://home-assistant.io/components/switch.hive/ +2017-09-24T21:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.owntracks_http/ +2017-09-28T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.thethingsnetwork/ +2017-09-30T08:00:00+00:00 + + +https://home-assistant.io/components/thethingsnetwork/ +2017-09-30T08:00:00+00:00 + + +https://home-assistant.io/components/mqtt_statestream/ +2017-10-01T20:00:00+00:00 + + +https://home-assistant.io/components/media_player.monoprice/ +2017-10-02T11:45:00+00:00 + + +https://home-assistant.io/components/device_tracker.hitron_coda/ +2017-10-03T15:40:00+00:00 + + +https://home-assistant.io/components/binary_sensor.skybell/ +2017-10-03T16:00:00+00:00 + + +https://home-assistant.io/components/camera.skybell/ +2017-10-03T16:00:00+00:00 + + +https://home-assistant.io/components/light.skybell/ +2017-10-03T16:00:00+00:00 + + +https://home-assistant.io/components/sensor.skybell/ +2017-10-03T16:00:00+00:00 + + +https://home-assistant.io/components/skybell/ +2017-10-03T16:00:00+00:00 + + +https://home-assistant.io/components/switch.skybell/ +2017-10-03T16:00:00+00:00 + + +https://home-assistant.io/components/sensor.tibber/ +2017-10-03T17:00:00+00:00 + + +https://home-assistant.io/components/notify.clicksend_tts/ +2017-10-04T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.abode/ +2017-10-05T14:00:00+00:00 + + +https://home-assistant.io/components/sensor.sytadin/ +2017-10-05T14:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.arlo/ +2017-10-05T17:45:00+00:00 + + +https://home-assistant.io/components/climate.ephember/ +2017-10-07T12:40:00+00:00 + + +https://home-assistant.io/components/notify.clickatell/ +2017-10-09T00:00:00+00:00 + + +https://home-assistant.io/components/remember_the_milk/ +2017-10-10T10:10:00+00:00 + + +https://home-assistant.io/components/camera.yi/ +2017-10-10T13:00:00+00:00 + + +https://home-assistant.io/components/map/ +2017-10-11T10:01:00+00:00 + + +https://home-assistant.io/components/namecheapdns/ +2017-10-11T20:16:00+00:00 + + +https://home-assistant.io/components/switch.snmp/ +2017-10-12T08:00:00+00:00 + + +https://home-assistant.io/components/sensor.serial/ +2017-10-13T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.uptime/ +2017-10-13T10:30:00+00:00 + + +https://home-assistant.io/components/fan.xiaomi_miio/ +2017-10-13T12:35:00+00:00 + + +https://home-assistant.io/components/sensor.irish_rail_transport/ +2017-10-15T16:50:00+00:00 + + +https://home-assistant.io/components/google_assistant/ +2017-10-17T12:30:00+00:00 + + +https://home-assistant.io/components/binary_sensor.vultr/ +2017-10-17T21:00:00+00:00 + + +https://home-assistant.io/components/sensor.vultr/ +2017-10-17T21:00:00+00:00 + + +https://home-assistant.io/components/switch.vultr/ +2017-10-17T21:00:00+00:00 + + +https://home-assistant.io/components/vultr/ +2017-10-17T21:00:00+00:00 + + +https://home-assistant.io/components/vacuum.neato/ +2017-10-18T16:11:00+00:00 + + +https://home-assistant.io/components/switch.deluge/ +2017-10-19T09:00:00+00:00 + + +https://home-assistant.io/components/sensor.fail2ban/ +2017-10-19T10:30:00+00:00 + + +https://home-assistant.io/components/binary_sensor.linode/ +2017-10-20T08:00:00+00:00 + + +https://home-assistant.io/components/linode/ +2017-10-20T08:00:00+00:00 + + +https://home-assistant.io/components/camera.ring/ +2017-10-20T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.whois/ +2017-10-22T00:00:00+00:00 + + +https://home-assistant.io/components/climate.toon/ +2017-10-22T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.toon/ +2017-10-22T12:00:00+00:00 + + +https://home-assistant.io/components/switch.toon/ +2017-10-22T12:00:00+00:00 + + +https://home-assistant.io/components/toon/ +2017-10-22T12:00:00+00:00 + + +https://home-assistant.io/components/timer/ +2017-10-23T06:00:00+00:00 + + +https://home-assistant.io/components/sensor.pyload/ +2017-10-23T09:00:00+00:00 + + +https://home-assistant.io/components/google_domains/ +2017-10-23T12:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.tellduslive/ +2017-10-24T10:09:00+00:00 + + +https://home-assistant.io/components/sensor.deluge/ +2017-10-24T17:06:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ads/ +2017-10-25T10:00:00+00:00 + + +https://home-assistant.io/components/light.ads/ +2017-10-25T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.ads/ +2017-10-25T10:00:00+00:00 + + +https://home-assistant.io/components/switch.ads/ +2017-10-25T10:00:00+00:00 + + +https://home-assistant.io/components/sensor.nederlandse_spoorwegen/ +2017-10-25T13:35:00+00:00 + + +https://home-assistant.io/components/gc100/ +2017-10-26T17:20:00+00:00 + + +https://home-assistant.io/components/binary_sensor.random/ +2017-10-27T08:00:00+00:00 + + +https://home-assistant.io/components/no_ip/ +2017-10-27T12:00:00+00:00 + + +https://home-assistant.io/components/notify.yessssms/ +2017-10-27T16:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.gc100/ +2017-10-27T17:26:00+00:00 + + +https://home-assistant.io/components/switch.gc100/ +2017-10-27T17:26:00+00:00 + + +https://home-assistant.io/components/sensor.lacrosse/ +2017-10-29T15:00:00+00:00 + + +https://home-assistant.io/components/sensor.luftdaten/ +2017-11-01T00:00:00+00:00 + + +https://home-assistant.io/components/dominos/ +2017-11-05T17:30:00+00:00 + + +https://home-assistant.io/components/tts.microsoft/ +2017-11-07T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.viaggiatreno/ +2017-11-07T14:35:00+00:00 + + +https://home-assistant.io/components/device_tracker.tile/ +2017-11-08T20:40:00+00:00 + + +https://home-assistant.io/components/media_player.ziggo_mediabox_xl/ +2017-11-10T20:00:00+00:00 + + +https://home-assistant.io/components/climate.nuheat/ +2017-11-11T18:00:00+00:00 + + +https://home-assistant.io/components/nuheat/ +2017-11-11T18:00:00+00:00 + + +https://home-assistant.io/components/system_log/ +2017-11-11T18:00:00+00:00 + + +https://home-assistant.io/components/ihc/ +2017-11-11T22:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.deconz/ +2017-11-12T16:30:00+00:00 + + +https://home-assistant.io/components/deconz/ +2017-11-12T16:30:00+00:00 + + +https://home-assistant.io/components/light.deconz/ +2017-11-12T16:30:00+00:00 + + +https://home-assistant.io/components/sensor.deconz/ +2017-11-12T16:30:00+00:00 + + +https://home-assistant.io/components/sensor.gearbest/ +2017-11-13T09:08:00+00:00 + + +https://home-assistant.io/components/device_tracker.unifi_direct/ +2017-11-17T14:59:00+00:00 + + +https://home-assistant.io/components/light.greenwave/ +2017-11-17T18:50:00+00:00 + + +https://home-assistant.io/components/cloud/ +2017-11-17T20:00:00+00:00 + + +https://home-assistant.io/components/scene.deconz/ +2017-11-19T20:00:00+00:00 + + +https://home-assistant.io/components/scene.vera/ +2017-11-20T20:00:00+00:00 + + +https://home-assistant.io/components/tts.baidu/ +2017-11-21T09:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.meraki/ +2017-11-22T08:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.ihc/ +2017-11-27T13:35:00+00:00 + + +https://home-assistant.io/components/light.ihc/ +2017-11-27T13:35:00+00:00 + + +https://home-assistant.io/components/sensor.ihc/ +2017-11-27T13:35:00+00:00 + + +https://home-assistant.io/components/switch.ihc/ +2017-11-27T13:35:00+00:00 + + +https://home-assistant.io/components/calendar.caldav/ +2017-11-27T23:14:00+00:00 + + +https://home-assistant.io/components/cover.tellstick/ +2017-11-29T16:23:00+00:00 + + +https://home-assistant.io/components/weather.ecobee/ +2017-11-29T21:00:00+00:00 + + +https://home-assistant.io/components/hue/ +2017-11-29T23:51:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.ialarm/ +2017-11-30T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.alpha_vantage/ +2017-12-02T12:00:00+00:00 + + +https://home-assistant.io/components/climate.daikin/ +2017-12-03T05:00:00+00:00 + + +https://home-assistant.io/components/sensor.daikin/ +2017-12-03T05:00:00+00:00 + + +https://home-assistant.io/components/sensor.discogs/ +2017-12-04T22:00:00+00:00 + + +https://home-assistant.io/components/ads/ +2017-12-05T12:00:00+00:00 + + +https://home-assistant.io/components/rainbird/ +2017-12-07T12:00:00+00:00 + + +https://home-assistant.io/components/alarm_control_panel.canary/ +2017-12-07T22:00:00+00:00 + + +https://home-assistant.io/components/camera.canary/ +2017-12-07T22:00:00+00:00 + + +https://home-assistant.io/components/canary/ +2017-12-07T22:00:00+00:00 + + +https://home-assistant.io/components/sensor.canary/ +2017-12-07T22:00:00+00:00 + + +https://home-assistant.io/components/coinbase/ +2017-12-08T17:54:00+00:00 + + +https://home-assistant.io/components/sensor.coinbase/ +2017-12-08T18:00:00+00:00 + + +https://home-assistant.io/components/media_player.ue_smart_radio/ +2017-12-09T20:00:00+00:00 + + +https://home-assistant.io/components/daikin/ +2017-12-10T21:00:00+00:00 + + +https://home-assistant.io/components/goalfeed/ +2017-12-13T17:30:00+00:00 + + +https://home-assistant.io/components/sensor.teksavvy/ +2017-12-17T00:00:00+00:00 + + +https://home-assistant.io/components/light.iglo/ +2017-12-17T08:00:00+00:00 + + +https://home-assistant.io/components/climate.econet/ +2017-12-28T14:51:00+00:00 + + +https://home-assistant.io/components/iota/ +2017-12-31T13:29:00+00:00 + + +https://home-assistant.io/components/sensor.iota/ +2017-12-31T13:29:00+00:00 + + +https://home-assistant.io/components/climate.touchline/ +2018-01-03T12:35:00+00:00 + + +https://home-assistant.io/components/notify.pushsafer/ +2018-01-05T11:15:00+00:00 + + +https://home-assistant.io/components/climate.melissa/ +2018-01-08T20:21:00+00:00 + + +https://home-assistant.io/components/sensor.pollen/ +2018-01-10T19:20:00+00:00 + + +https://home-assistant.io/components/bmw_connected_drive/ +2018-01-10T23:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.bmw_connected_drive/ +2018-01-10T23:00:00+00:00 + + +https://home-assistant.io/components/sensor.bmw_connected_drive/ +2018-01-10T23:00:00+00:00 + + +https://home-assistant.io/components/sensor.sense/ +2018-01-11T13:50:00+00:00 + + +https://home-assistant.io/components/cover.lutron/ +2018-01-11T20:00:00+00:00 + + +https://home-assistant.io/components/camera.xeoma/ +2018-01-12T20:05:00+00:00 + + +https://home-assistant.io/components/climate.venstar/ +2018-01-14T00:04:00+00:00 + + +https://home-assistant.io/components/sensor.bme680/ +2018-01-16T00:00:00+00:00 + + +https://home-assistant.io/components/waterfurnace/ +2018-01-19T17:00:00+00:00 + + +https://home-assistant.io/components/api/ +2018-01-21T08:00:00+00:00 + + +https://home-assistant.io/components/websocket_api/ +2018-01-21T08:00:00+00:00 + + +https://home-assistant.io/components/media_player.mediaroom/ +2018-01-22T22:00:00+00:00 + + +https://home-assistant.io/components/device_tracker.mercedesme/ +2018-01-27T10:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.mercedesme/ +2018-01-27T17:00:00+00:00 + + +https://home-assistant.io/components/mercedesme/ +2018-01-27T17:00:00+00:00 + + +https://home-assistant.io/components/sensor.mercedesme/ +2018-01-27T17:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.upcloud/ +2018-01-28T20:00:00+00:00 + + +https://home-assistant.io/components/switch.upcloud/ +2018-01-28T20:00:00+00:00 + + +https://home-assistant.io/components/upcloud/ +2018-01-28T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.sql/ +2018-02-03T00:22:00+00:00 + + +https://home-assistant.io/components/media_player.songpal/ +2018-02-03T09:00:00+00:00 + + +https://home-assistant.io/components/scene.knx/ +2018-02-03T20:00:00+00:00 + + +https://home-assistant.io/components/sensor.filesize/ +2018-02-06T14:00:00+00:00 + + +https://home-assistant.io/components/sensor.startca/ +2018-02-12T00:00:00+00:00 + + +https://home-assistant.io/components/media_player.xiaomi_tv/ +2018-02-12T19:00:00+00:00 + + +https://home-assistant.io/components/homematic/ +2018-02-13T19:10:00+00:00 + + +https://home-assistant.io/components/notify.synology_chat/ +2018-02-15T07:00:00+00:00 + + +https://home-assistant.io/components/sensor.spotcrime/ +2018-02-16T09:30:00+00:00 + + +https://home-assistant.io/components/august/ +2018-02-17T22:00:00+00:00 + + +https://home-assistant.io/components/binary_sensor.august/ +2018-02-17T22:00:00+00:00 + + +https://home-assistant.io/components/camera.august/ +2018-02-17T22:00:00+00:00 + + +https://home-assistant.io/components/lock.august/ +2018-02-17T22:00:00+00:00 + + +https://home-assistant.io/components/scene.tahoma/ +2018-02-18T12:00:00+00:00 + + +https://home-assistant.io/components/sensor.filter/ +2018-02-20T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.simulated/ +2018-02-20T08:00:00+00:00 + + +https://home-assistant.io/components/homekit/ +2018-02-20T17:30:00+00:00 + + +https://home-assistant.io/components/sensor.folder/ +2018-02-21T14:00:00+00:00 + + +https://home-assistant.io/components/light.group/ +2018-02-23T11:41:00+00:00 + + +https://home-assistant.io/components/rest_command/ +2018-02-24T00:00:00+00:00 + + +https://home-assistant.io/components/sensor.smappee/ +2018-02-26T08:37:00+00:00 + + +https://home-assistant.io/components/smappee/ +2018-02-26T08:37:00+00:00 + + +https://home-assistant.io/components/switch.smappee/ +2018-02-26T08:37:00+00:00 + + +https://home-assistant.io/components/sensor.zestimate/ +2018-03-02T03:10:00+00:00 + + +https://home-assistant.io/components/binary_sensor.egardia/ +2018-03-02T09:00:00+00:00 + + +https://home-assistant.io/components/egardia/ +2018-03-02T09:00:00+00:00 + + +https://home-assistant.io/components/media_player.channels/ +2018-03-06T11:00:00+00:00 + + +https://home-assistant.io/components/camera.proxy/ +2018-03-08T19:00:00+00:00 + + +https://home-assistant.io/components/switch.hook/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/cookbook/automation_for_rainy_days/ +2015-10-08T19:05:00+00:00 + + +https://home-assistant.io/cookbook/automation_sun/ +2015-10-08T19:05:00+00:00 + + +https://home-assistant.io/cookbook/turn_on_light_for_10_minutes_when_motion_detected/ +2015-10-08T19:05:00+00:00 + + +https://home-assistant.io/cookbook/dim_lights_when_playing_media/ +2015-10-15T19:05:00+00:00 + + +https://home-assistant.io/cookbook/send_a_reminder/ +2015-12-16T08:00:00+00:00 + + +https://home-assistant.io/cookbook/restart_ha_if_wemo_switch_is_not_detected/ +2016-01-29T08:00:00+00:00 + + +https://home-assistant.io/cookbook/track_battery_level/ +2016-01-29T09:00:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_happyleavesaoc/ +2016-02-07T11:45:00+00:00 + + +https://home-assistant.io/cookbook/python_component_mqtt_basic/ +2016-02-07T12:13:00+00:00 + + +https://home-assistant.io/cookbook/automation_using_timeinterval_inputboolean/ +2016-02-07T14:35:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_greenturtwig/ +2016-02-13T06:51:00+00:00 + + +https://home-assistant.io/cookbook/python_component_automation/ +2016-02-14T08:40:00+00:00 + + +https://home-assistant.io/cookbook/python_component_simple_alarm/ +2016-02-14T08:40:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_danichispa/ +2016-02-20T10:19:00+00:00 + + +https://home-assistant.io/cookbook/notify_if_over_threshold/ +2016-02-25T15:00:00+00:00 + + +https://home-assistant.io/cookbook/perform_actions_based_on_input_select/ +2016-03-07T12:05:00+00:00 + + +https://home-assistant.io/cookbook/foscam_away_mode_PTZ/ +2016-03-10T13:05:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_oakbrad/ +2016-03-14T11:45:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_from_bassclarinetl2/ +2016-03-24T17:00:00+00:00 + + +https://home-assistant.io/cookbook/automation_flashing_lights/ +2016-03-30T08:00:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_geekofweek/ +2016-04-23T06:51:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_cbulock/ +2016-06-29T15:30:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_gstevenson/ +2016-07-13T21:58:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_bah2830/ +2016-07-14T20:00:00+00:00 + + +https://home-assistant.io/cookbook/notify_if__new_ha_release/ +2016-07-17T10:00:00+00:00 + + +https://home-assistant.io/cookbook/custom_panel_using_react/ +2016-07-29T12:00:00+00:00 + + +https://home-assistant.io/cookbook/google_maps_card/ +2016-08-20T19:05:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_teagan42/ +2016-08-24T23:00:00+00:00 + + +https://home-assistant.io/cookbook/owntracks_two_mqtt_broker/ +2016-08-27T10:05:00+00:00 + + +https://home-assistant.io/cookbook/automation_enocean_phue/ +2016-09-02T14:35:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_instagraeme/ +2016-09-08T21:30:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_mertenats/ +2016-10-08T19:00:00+00:00 + + +https://home-assistant.io/cookbook/automation_first_light/ +2016-10-08T19:05:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_carlo_costanzo/ +2016-10-11T11:45:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_daniel_hoyer_iversen/ +2016-10-11T11:45:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_alok_saboo/ +2016-10-25T10:45:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_cy1701/ +2016-12-28T20:00:00+00:00 + + +https://home-assistant.io/cookbook/sonos_say/ +2017-01-18T00:00:00+00:00 + + +https://home-assistant.io/cookbook/custom_ui_by_andrey-git/ +2017-02-04T10:45:00+00:00 + + +https://home-assistant.io/cookbook/automation_telegram_presence_alert/ +2017-02-12T19:05:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_jjmontesl/ +2017-02-22T23:00:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_scottocs11/ +2017-02-23T16:00:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_aneisch/ +2017-02-23T20:27:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_stanvx/ +2017-04-09T21:35:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_skalavala/ +2017-04-19T12:00:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_fredsmith/ +2017-04-28T18:30:00+00:00 + + +https://home-assistant.io/cookbook/automation_kodi_dynamic_input_select/ +2017-05-16T19:05:00+00:00 + + +https://home-assistant.io/cookbook/fail2ban/ +2017-05-24T10:05:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_ciquattrofpv/ +2017-06-13T12:00:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_shortbloke/ +2017-08-10T01:45:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_lancehaynie/ +2017-08-18T18:33:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_vasiley/ +2017-09-04T13:50:00+00:00 + + +https://home-assistant.io/cookbook/dim_and_brighten_lights/ +2017-09-06T18:30:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_mf_social/ +2017-10-11T11:45:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_ntalekt/ +2017-10-26T20:08:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_chriskacerguis/ +2017-12-12T09:14:00+00:00 + + +https://home-assistant.io/cookbook/configuration_yaml_by_silvrr/ +2018-01-18T13:08:00+00:00 + + +https://home-assistant.io/docs/installation/python/ +2014-12-18T22:57:00+00:00 + + +https://home-assistant.io/docs/configuration/troubleshooting/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/docs/installation/troubleshooting/ +2015-01-20T22:36:00+00:00 + + +https://home-assistant.io/docs/frontend/mobile/ +2015-03-08T21:36:00+00:00 + + +https://home-assistant.io/docs/configuration/ +2015-03-23T12:50:00+00:00 + + +https://home-assistant.io/docs/configuration/basic/ +2015-03-23T12:50:00+00:00 + + +https://home-assistant.io/docs/configuration/remote/ +2015-03-23T12:50:00+00:00 + + +https://home-assistant.io/docs/configuration/yaml/ +2015-03-23T12:50:00+00:00 + + +https://home-assistant.io/docs/mqtt/birth_will/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/broker/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/certificate/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/discovery/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/logging/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/processing_json/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/service/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/testing/ +2015-08-07T18:00:00+00:00 + + +https://home-assistant.io/docs/autostart/ +2015-09-01T22:57:00+00:00 + + +https://home-assistant.io/docs/autostart/macos/ +2015-09-01T22:57:00+00:00 + + +https://home-assistant.io/docs/autostart/synology/ +2015-09-01T22:57:00+00:00 + + +https://home-assistant.io/docs/autostart/systemd/ +2015-09-01T22:57:00+00:00 + + +https://home-assistant.io/docs/autostart/upstart/ +2015-09-01T22:57:00+00:00 + + +https://home-assistant.io/docs/automation/ +2015-09-19T09:40:00+00:00 + + +https://home-assistant.io/docs/configuration/devices/ +2015-09-19T09:40:00+00:00 + + +https://home-assistant.io/docs/configuration/templating/ +2015-12-12T12:00:00+00:00 + + +https://home-assistant.io/docs/configuration/platform_options/ +2016-02-13T07:17:00+00:00 + + +https://home-assistant.io/docs/configuration/events/ +2016-03-12T20:00:00+00:00 + + +https://home-assistant.io/docs/configuration/state_object/ +2016-03-12T20:00:00+00:00 + + +https://home-assistant.io/docs/scripts/service-calls/ +2016-03-12T20:00:00+00:00 + + +https://home-assistant.io/docs/z-wave/controllers/ +2016-03-24T15:49:00+00:00 + + +https://home-assistant.io/docs/z-wave/device-specific/ +2016-03-24T15:49:00+00:00 + + +https://home-assistant.io/docs/configuration/splitting_configuration/ +2016-03-25T23:30:00+00:00 + + +https://home-assistant.io/docs/installation/docker/ +2016-04-16T11:36:00+00:00 + + +https://home-assistant.io/docs/installation/synology/ +2016-04-16T11:36:00+00:00 + + +https://home-assistant.io/docs/installation/virtualenv/ +2016-04-16T16:40:00+00:00 + + +https://home-assistant.io/docs/configuration/customizing-devices/ +2016-04-20T06:00:00+00:00 + + +https://home-assistant.io/docs/configuration/entity-registry/ +2016-04-20T06:00:00+00:00 + + +https://home-assistant.io/docs/automation/action/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/automation/condition/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/automation/editor/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/automation/examples/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/automation/templating/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/automation/trigger/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/automation/troubleshooting/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/scripts/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/scripts/conditions/ +2016-04-24T07:30:00+00:00 + + +https://home-assistant.io/docs/installation/updating/ +2016-05-04T10:00:00+00:00 + + +https://home-assistant.io/docs/installation/raspberry-pi-all-in-one/ +2016-05-12T01:39:00+00:00 + + +https://home-assistant.io/docs/installation/vagrant/ +2016-05-28T10:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/apache/ +2016-06-20T13:05:00+00:00 + + +https://home-assistant.io/docs/ecosystem/nginx_subdomain/ +2016-06-20T13:05:00+00:00 + + +https://home-assistant.io/docs/frontend/browsers/ +2016-06-25T08:00:00+00:00 + + +https://home-assistant.io/docs/configuration/secrets/ +2016-07-01T08:30:00+00:00 + + +https://home-assistant.io/docs/ecosystem/tor/ +2016-07-06T13:05:00+00:00 + + +https://home-assistant.io/docs/ecosystem/notebooks/api/ +2016-07-23T09:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/notebooks/database/ +2016-07-23T09:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/notebooks/graph/ +2016-07-23T09:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/notebooks/installation/ +2016-07-23T09:00:00+00:00 + + +https://home-assistant.io/docs/scripts/editor/ +2016-08-26T03:30:00+00:00 + + +https://home-assistant.io/docs/installation/raspberry-pi/ +2016-09-05T16:00:00+00:00 + + +https://home-assistant.io/docs/installation/hassbian/ +2016-09-26T21:00:00+00:00 + + +https://home-assistant.io/docs/installation/hassbian/common-tasks/ +2016-09-26T21:00:00+00:00 + + +https://home-assistant.io/docs/installation/hassbian/customization/ +2016-09-26T21:00:00+00:00 + + +https://home-assistant.io/docs/installation/hassbian/installation/ +2016-09-26T21:00:00+00:00 + + +https://home-assistant.io/docs/installation/hassbian/integrations/ +2016-09-26T21:00:00+00:00 + + +https://home-assistant.io/docs/installation/hassbian/upgrading/ +2016-09-26T21:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/notebooks/stats/ +2016-10-03T09:00:00+00:00 + + +https://home-assistant.io/docs/configuration/securing/ +2016-10-06T06:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/ +2016-10-06T08:00:00+00:00 + + +https://home-assistant.io/docs/frontend/webserver/ +2016-10-06T08:00:00+00:00 + + +https://home-assistant.io/docs/backend/database/ +2016-10-10T10:00:00+00:00 + + +https://home-assistant.io/docs/backend/updater/ +2016-10-22T08:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/devices_file/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/integration/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/location/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/actions/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/architecture/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/attachments/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/basic/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/content_extensions/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/privacy_security_rate_limits/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/requesting_location_updates/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/notifications/sounds/ +2016-10-25T22:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/ +2016-10-26T00:46:00+00:00 + + +https://home-assistant.io/docs/configuration/group_visibility/ +2016-10-29T13:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/backup/backup_github/ +2017-01-05T18:00:00+00:00 + + +https://home-assistant.io/docs/configuration/packages/ +2017-01-10T18:00:00+00:00 + + +https://home-assistant.io/docs/frontend/ +2017-02-13T12:50:00+00:00 + + +https://home-assistant.io/docs/backend/ +2017-02-14T12:50:00+00:00 + + +https://home-assistant.io/docs/installation/ +2017-02-15T08:00:00+00:00 + + +https://home-assistant.io/docs/mqtt/ +2017-02-15T08:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/certificates/tls_domain_certificate/ +2017-02-17T08:00:00+00:00 + + +https://home-assistant.io/docs/installation/armbian/ +2017-02-23T11:00:00+00:00 + + +https://home-assistant.io/docs/installation/windows/ +2017-02-23T11:00:00+00:00 + + +https://home-assistant.io/docs/installation/archlinux/ +2017-03-01T07:00:00+00:00 + + +https://home-assistant.io/docs/installation/centos/ +2017-03-01T07:00:00+00:00 + + +https://home-assistant.io/docs/installation/fedora/ +2017-03-01T07:00:00+00:00 + + +https://home-assistant.io/docs/installation/macos/ +2017-03-01T07:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/certificates/lets_encrypt/ +2017-03-16T17:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/backup/backup_dropbox/ +2017-04-24T18:00:00+00:00 + + +https://home-assistant.io/docs/ecosystem/backup/backup_usb/ +2017-04-29T08:00:00+00:00 + + +https://home-assistant.io/docs/installation/freenas/ +2017-06-20T11:00:00+00:00 + + +https://home-assistant.io/docs/asterisk_mbox/ +2017-06-30T18:30:00+00:00 + + +https://home-assistant.io/docs/ecosystem/caddy/ +2017-08-22T22:20:00+00:00 + + +https://home-assistant.io/docs/z-wave/installation/ +2017-09-21T10:00:00+00:00 + + +https://home-assistant.io/docs/z-wave/ +2017-09-21T10:59:00+00:00 + + +https://home-assistant.io/docs/z-wave/entities/ +2017-09-21T10:59:00+00:00 + + +https://home-assistant.io/docs/z-wave/events/ +2017-09-21T10:59:00+00:00 + + +https://home-assistant.io/docs/z-wave/services/ +2017-09-21T10:59:00+00:00 + + +https://home-assistant.io/docs/z-wave/devices/ +2017-09-21T11:49:00+00:00 + + +https://home-assistant.io/docs/z-wave/query-stage/ +2017-09-21T11:49:00+00:00 + + +https://home-assistant.io/docs/z-wave/control-panel/ +2017-09-21T12:49:00+00:00 + + +https://home-assistant.io/docs/glossary/ +2017-10-08T08:30:00+00:00 + + +https://home-assistant.io/docs/z-wave/adding/ +2017-11-08T19:06:00+00:00 + + +https://home-assistant.io/docs/autostart/init.d/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/api/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/configuration/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/example_apps/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/installation/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/operation/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/reboot/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/running/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/tutorial/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/updating/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/appdaemon/windows/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/certificates/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/hadashboard/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/hass-configurator/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/ios/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/nginx/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/notebooks/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/scenegen/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/ecosystem/synology/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/benchmark/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/check_config/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/credstash/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/db_migrator/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/dev-tools/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/ensure_config/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/hass/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/influxdb_import/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/influxdb_migrator/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/keyring/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/docs/tools/scripts/ +2018-03-11T22:06:17+00:00 + + +https://home-assistant.io/faq/after-upgrading/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/browser/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/component/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/configuration-file/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/connection-error/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/dependencies/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/distutils/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/documentation-tool/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/libyaml/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/missing-documentation/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/pip/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/pip3/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/problems-with-dependencies/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/python/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/release/ +2017-06-18T09:00:00+00:00 + + +https://home-assistant.io/faq/ha-vs-hassio/ +2018-02-12T09:00:00+00:00 + + +https://home-assistant.io/blog/2014/12/18/website-launched/ +2014-12-18T23:24:45+00:00 + + +https://home-assistant.io/blog/2014/12/26/home-control-home-automation-and-the-smart-home/ +2014-12-26T18:23:13+00:00 + + +https://home-assistant.io/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/ +2015-01-04T21:29:07+00:00 + + +https://home-assistant.io/blog/2015/01/11/bootstrapping-your-setup-with-discovery/ +2015-01-11T21:49:08+00:00 + + +https://home-assistant.io/blog/2015/01/13/nest-in-da-house/ +2015-01-13T16:29:04+00:00 + + +https://home-assistant.io/blog/2015/01/24/release-notes/ +2015-01-24T18:36:00+00:00 + + +https://home-assistant.io/blog/2015/02/08/looking-at-the-past/ +2015-02-08T17:01:23+00:00 + + +https://home-assistant.io/blog/2015/02/24/streaming-updates/ +2015-02-24T22:41:27+00:00 + + +https://home-assistant.io/blog/2015/03/01/home-assistant-migrating-to-yaml/ +2015-03-01T19:38:00+00:00 + + +https://home-assistant.io/blog/2015/03/08/new-logo/ +2015-03-08T22:16:10+00:00 + + +https://home-assistant.io/blog/2015/03/11/release-notes/ +2015-03-11T18:36:00+00:00 + + +https://home-assistant.io/blog/2015/03/22/release-notes/ +2015-03-22T08:21:00+00:00 + + +https://home-assistant.io/blog/2015/04/25/release-notes/ +2015-04-25T13:57:00+00:00 + + +https://home-assistant.io/blog/2015/05/09/utc-time-zone-awareness/ +2015-05-09T23:08:00+00:00 + + +https://home-assistant.io/blog/2015/05/14/release-notes/ +2015-05-14T22:25:00+00:00 + + +https://home-assistant.io/blog/2015/06/10/release-notes/ +2015-06-10T18:54:00+00:00 + + +https://home-assistant.io/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/ +2015-07-11T08:37:00+00:00 + + +https://home-assistant.io/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/ +2015-08-09T18:01:00+00:00 + + +https://home-assistant.io/blog/2015/08/17/verisure-and-modern-tp-link-router-support/ +2015-08-17T20:00:00+00:00 + + +https://home-assistant.io/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/ +2015-08-26T15:12:00+00:00 + + +https://home-assistant.io/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/ +2015-08-31T21:12:00+00:00 + + +https://home-assistant.io/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/ +2015-09-11T09:19:38+00:00 + + +https://home-assistant.io/blog/2015/09/13/home-assistant-meets-ifttt/ +2015-09-13T16:28:00+00:00 + + +https://home-assistant.io/blog/2015/09/18/monitoring-with-glances-and-home-assistant/ +2015-09-18T09:00:00+00:00 + + +https://home-assistant.io/blog/2015/09/19/alarm-sonos-and-itunes-support/ +2015-09-19T21:47:00+00:00 + + +https://home-assistant.io/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/ +2015-10-05T21:49:00+00:00 + + +https://home-assistant.io/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/ +2015-10-11T17:10:00+00:00 + + +https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/ +2015-10-11T19:10:00+00:00 + + +https://home-assistant.io/blog/2015/10/26/firetv-and-radiotherm-now-supported/ +2015-10-26T18:10:00+00:00 + + +https://home-assistant.io/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/ +2015-11-16T21:27:00+00:00 + + +https://home-assistant.io/blog/2015/11/22/survey-november-2015/ +2015-11-22T14:51:18+00:00 + + +https://home-assistant.io/blog/2015/12/05/community-highlights/ +2015-12-05T23:39:00+00:00 + + +https://home-assistant.io/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/ +2015-12-06T19:29:00+00:00 + + +https://home-assistant.io/blog/2015/12/07/influxdb-and-grafana/ +2015-12-07T14:15:13+00:00 + + +https://home-assistant.io/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/ +2015-12-10T10:39:41+00:00 + + +https://home-assistant.io/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/ +2015-12-12T18:44:00+00:00 + + +https://home-assistant.io/blog/2015/12/13/setup-encryption-using-lets-encrypt/ +2015-12-13T18:05:00+00:00 + + +https://home-assistant.io/blog/2015/12/22/amazon-echo-icloud-and-templates/ +2015-12-22T09:30:00+00:00 + + +https://home-assistant.io/blog/2016/01/17/extended-support-for-diy-solutions/ +2016-01-17T23:20:00+00:00 + + +https://home-assistant.io/blog/2016/01/19/perfect-home-automation/ +2016-01-19T08:20:00+00:00 + + +https://home-assistant.io/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/ +2016-01-30T08:22:00+00:00 + + +https://home-assistant.io/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/ +2016-02-09T07:44:00+00:00 + + +https://home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things/ +2016-02-12T22:31:00+00:00 + + +https://home-assistant.io/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/ +2016-02-13T22:15:00+00:00 + + +https://home-assistant.io/blog/2016/02/18/multi-room-audio-with-snapcast/ +2016-02-18T05:10:56+00:00 + + +https://home-assistant.io/blog/2016/02/20/community-highlights/ +2016-02-20T09:06:00+00:00 + + +https://home-assistant.io/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/ +2016-02-27T22:15:00+00:00 + + +https://home-assistant.io/blog/2016/03/12/z-wave-pep257-templated-service-calls/ +2016-03-12T18:55:00+00:00 + + +https://home-assistant.io/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/ +2016-03-26T07:10:00+00:00 + + +https://home-assistant.io/blog/2016/04/05/your-hub-should-be-local-and-open/ +2016-04-05T21:11:00+00:00 + + +https://home-assistant.io/blog/2016/04/07/static-website/ +2016-04-07T06:28:00+00:00 + + +https://home-assistant.io/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/ +2016-04-09T23:10:00+00:00 + + +https://home-assistant.io/blog/2016/04/17/updated-documentation/ +2016-04-17T23:09:00+00:00 + + +https://home-assistant.io/blog/2016/04/19/to-infinity-and-beyond/ +2016-04-19T22:44:00+00:00 + + +https://home-assistant.io/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/ +2016-04-20T23:10:00+00:00 + + +https://home-assistant.io/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/ +2016-04-30T06:50:09+00:00 + + +https://home-assistant.io/blog/2016/05/06/open-iot-summit-talk/ +2016-05-06T14:09:00+00:00 + + +https://home-assistant.io/blog/2016/05/07/empowering-scripts-and-alexa/ +2016-05-07T18:06:00+00:00 + + +https://home-assistant.io/blog/2016/05/12/video-configuring-home-assistant/ +2016-05-12T00:09:00+00:00 + + +https://home-assistant.io/blog/2016/05/18/why-we-use-polymer/ +2016-05-18T00:09:00+00:00 + + +https://home-assistant.io/blog/2016/05/21/release-020/ +2016-05-21T18:06:00+00:00 + + +https://home-assistant.io/blog/2016/05/22/get-started-with-all-in-one-installer/ +2016-05-22T16:06:00+00:00 + + +https://home-assistant.io/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/ +2016-05-26T11:06:12+00:00 + + +https://home-assistant.io/blog/2016/06/01/community-highlights/ +2016-06-01T18:34:00+00:00 + + +https://home-assistant.io/blog/2016/06/08/super-fast-web-enocean-lirc/ +2016-06-08T01:06:00+00:00 + + +https://home-assistant.io/blog/2016/06/13/home-assistant-at-pycon-2016/ +2016-06-13T01:06:00+00:00 + + +https://home-assistant.io/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/ +2016-06-18T18:06:00+00:00 + + +https://home-assistant.io/blog/2016/06/23/usb-webcams-and-home-assistant/ +2016-06-23T06:00:00+00:00 + + +https://home-assistant.io/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/ +2016-07-01T00:31:00+00:00 + + +https://home-assistant.io/blog/2016/07/06/pocketchip-running-home-assistant/ +2016-07-06T05:00:00+00:00 + + +https://home-assistant.io/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/ +2016-07-16T12:00:00+00:00 + + +https://home-assistant.io/blog/2016/07/19/visualizing-your-iot-data/ +2016-07-19T16:00:00+00:00 + + +https://home-assistant.io/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/ +2016-07-23T18:00:00+00:00 + + +https://home-assistant.io/blog/2016/07/28/esp8266-and-micropython-part1/ +2016-07-28T04:00:00+00:00 + + +https://home-assistant.io/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/ +2016-07-30T12:00:00+00:00 + + +https://home-assistant.io/blog/2016/08/03/laundry-automation-update/ +2016-08-03T17:22:00+00:00 + + +https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/ +2016-08-07T19:36:00+00:00 + + +https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/ +2016-08-13T19:00:00+00:00 + + +https://home-assistant.io/blog/2016/08/16/we-have-apps-now/ +2016-08-16T10:00:00+00:00 + + +https://home-assistant.io/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/ +2016-08-19T06:00:00+00:00 + + +https://home-assistant.io/blog/2016/08/28/notifications-hue-fake-unification/ +2016-08-28T20:30:25+00:00 + + +https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2/ +2016-08-31T04:17:25+00:00 + + +https://home-assistant.io/blog/2016/09/10/notify-group-reload-api-pihole/ +2016-09-10T06:00:00+00:00 + + +https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks/ +2016-09-29T03:04:05+00:00 + + +https://home-assistant.io/blog/2016/10/01/we-have-raspberry-image-now/ +2016-10-01T05:00:00+00:00 + + +https://home-assistant.io/blog/2016/10/02/hacktoberfest/ +2016-10-02T00:04:05+00:00 + + +https://home-assistant.io/blog/2016/10/08/hassbian-rest-digital-ocean/ +2016-10-08T03:04:05+00:00 + + +https://home-assistant.io/blog/2016/10/22/flash-briefing-updater-hacktoberfest/ +2016-10-22T20:00:00+00:00 + + +https://home-assistant.io/blog/2016/10/25/explaining-the-updater/ +2016-10-25T21:30:00+00:00 + + +https://home-assistant.io/blog/2016/11/05/hacktoberfest-influxdb-weather/ +2016-11-05T03:04:05+00:00 + + +https://home-assistant.io/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/ +2016-11-20T00:04:05+00:00 + + +https://home-assistant.io/blog/2016/12/03/remote-websockets-sonarr/ +2016-12-03T08:04:05+00:00 + + +https://home-assistant.io/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/ +2016-12-17T08:04:05+00:00 + + +https://home-assistant.io/blog/2016/12/19/thank-you/ +2016-12-19T21:04:05+00:00 + + +https://home-assistant.io/blog/2017/01/03/control-my-christmas-tree-stats/ +2017-01-03T18:00:00+00:00 + + +https://home-assistant.io/blog/2017/01/14/iss-usps-images-packages/ +2017-01-14T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/01/18/numbers/ +2017-01-18T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/01/21/home-assistant-governance/ +2017-01-21T23:05:00+00:00 + + +https://home-assistant.io/blog/2017/01/28/face-coffee-wink/ +2017-01-28T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/02/03/babyphone/ +2017-02-03T01:00:00+00:00 + + +https://home-assistant.io/blog/2017/02/04/hassbian-toybox/ +2017-02-04T09:00:00+00:00 + + +https://home-assistant.io/blog/2017/02/11/alert-appletv-mqtt-yeelight/ +2017-02-11T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/02/14/clt-workshop/ +2017-02-14T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/02/22/home-assistant-tshirts-have-arrived/ +2017-02-22T00:04:05+00:00 + + +https://home-assistant.io/blog/2017/02/25/config-panel-and-state-restoration/ +2017-02-25T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/03/11/repurpose-any-android-phone-as-ip-camera/ +2017-03-11T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/03/22/broken-dependencies/ +2017-03-22T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/ +2017-03-23T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/03/25/todo-volumio-workday/ +2017-03-25T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/03/28/http-to-mqtt-bridge/ +2017-03-28T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/04/01/thomas-krenn-award/ +2017-04-01T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/04/08/eddystone-beacons-lockitron-locks-total-connect/ +2017-04-08T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/04/15/ios/ +2017-04-15T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/ +2017-04-17T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/04/22/ikea-tradfri-spotify/ +2017-04-22T01:04:05+00:00 + + +https://home-assistant.io/blog/2017/04/24/hardware-contest-2017/ +2017-04-24T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/04/25/influxdb-grafana-docker/ +2017-04-25T08:04:05+00:00 + + +https://home-assistant.io/blog/2017/04/30/hassbian-1.21-its-about-time/ +2017-04-30T15:00:00+00:00 + + +https://home-assistant.io/blog/2017/05/01/home-assistant-on-raspberry-pi-zero-in-30-minutes/ +2017-05-01T09:00:00+00:00 + + +https://home-assistant.io/blog/2017/05/05/podcast-init-interview/ +2017-05-05T02:00:00+00:00 + + +https://home-assistant.io/blog/2017/05/06/zigbee-opencv-dlib/ +2017-05-06T01:04:05+00:00 + + +https://home-assistant.io/blog/2017/05/07/grazer-linuxtage-2017-talk-python-everywhere/ +2017-05-07T02:00:00+00:00 + + +https://home-assistant.io/blog/2017/05/13/home-assistant-on-orange-pi-zero/ +2017-05-13T09:00:00+00:00 + + +https://home-assistant.io/blog/2017/05/19/home-assistant-at-pycon-us-2017/ +2017-05-19T00:00:01+00:00 + + +https://home-assistant.io/blog/2017/05/20/automation-editor-zwave-panel-ocr/ +2017-05-20T13:00:00+00:00 + + +https://home-assistant.io/blog/2017/06/02/home-assistant-podcast-1/ +2017-06-02T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/06/04/release-46/ +2017-06-04T01:04:05+00:00 + + +https://home-assistant.io/blog/2017/06/10/interview-with-jupiter-broadcasting/ +2017-06-10T01:04:05+00:00 + + +https://home-assistant.io/blog/2017/06/15/zwave-entity-ids/ +2017-06-15T12:00:00+00:00 + + +https://home-assistant.io/blog/2017/06/17/release-47/ +2017-06-17T01:04:05+00:00 + + +https://home-assistant.io/blog/2017/06/20/things-you-should-know-about-senic-covi/ +2017-06-20T01:04:05+00:00 + + +https://home-assistant.io/blog/2017/07/02/release-48/ +2017-07-02T00:02:05+00:00 + + +https://home-assistant.io/blog/2017/07/03/home-assistant-is-moving-to-discord/ +2017-07-03T23:28:01+00:00 + + +https://home-assistant.io/blog/2017/07/05/hasspodcast-ep-3/ +2017-07-05T00:01:00+00:00 + + +https://home-assistant.io/blog/2017/07/15/release-49/ +2017-07-15T00:02:05+00:00 + + +https://home-assistant.io/blog/2017/07/17/hasspodcast-ep-4/ +2017-07-17T00:01:00+00:00 + + +https://home-assistant.io/blog/2017/07/25/introducing-hassio/ +2017-07-25T00:02:05+00:00 + + +https://home-assistant.io/blog/2017/07/27/talk-python-podcast/ +2017-07-27T02:00:00+00:00 + + +https://home-assistant.io/blog/2017/07/29/release-50/ +2017-07-29T00:11:05+00:00 + + +https://home-assistant.io/blog/2017/08/01/hasspodcast-ep-5/ +2017-08-01T00:01:00+00:00 + + +https://home-assistant.io/blog/2017/08/12/release-51/ +2017-08-12T00:11:05+00:00 + + +https://home-assistant.io/blog/2017/08/26/release-0-52/ +2017-08-26T00:11:05+00:00 + + +https://home-assistant.io/blog/2017/09/09/release-53/ +2017-09-09T00:11:05+00:00 + + +https://home-assistant.io/blog/2017/09/16/hassbian-1.3-a-bit-of-a-stretch/ +2017-09-16T15:00:00+00:00 + + +https://home-assistant.io/blog/2017/09/23/release-54/ +2017-09-23T00:11:05+00:00 + + +https://home-assistant.io/blog/2017/09/26/new-hassio-build-system/ +2017-09-26T03:00:00+00:00 + + +https://home-assistant.io/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/ +2017-09-27T00:05:00+00:00 + + +https://home-assistant.io/blog/2017/09/29/hacktoberfest/ +2017-09-29T08:00:00+00:00 + + +https://home-assistant.io/blog/2017/10/01/hass-podcast-ep9/ +2017-10-01T00:01:00+00:00 + + +https://home-assistant.io/blog/2017/10/06/deprecating-python-3.4-support/ +2017-10-06T00:36:00+00:00 + + +https://home-assistant.io/blog/2017/10/07/release-55/ +2017-10-07T10:00:00+00:00 + + +https://home-assistant.io/blog/2017/10/15/templating-date-time/ +2017-10-15T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/10/18/hasspodcast-ep-10/ +2017-10-18T00:01:00+00:00 + + +https://home-assistant.io/blog/2017/10/21/release-56/ +2017-10-21T10:00:00+00:00 + + +https://home-assistant.io/blog/2017/10/23/simple-analog-sensor/ +2017-10-23T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/10/28/demo/ +2017-10-28T08:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/02/secure-shell-tunnel/ +2017-11-02T08:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/04/release-57/ +2017-11-04T04:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/05/frontend-translations/ +2017-11-06T01:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/10/ttn-with-mqtt/ +2017-11-10T12:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/12/tor/ +2017-11-12T08:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/18/release-58/ +2017-11-18T04:00:00+00:00 + + +https://home-assistant.io/blog/2017/11/29/hassio-virtual-machine/ +2017-11-29T06:00:00+00:00 + + +https://home-assistant.io/blog/2017/12/03/release-59/ +2017-12-03T02:00:00+00:00 + + +https://home-assistant.io/blog/2017/12/17/release-60/ +2017-12-17T02:00:00+00:00 + + +https://home-assistant.io/blog/2017/12/17/introducing-home-assistant-cloud/ +2017-12-17T03:00:00+00:00 + + +https://home-assistant.io/blog/2017/12/28/thank-you/ +2017-12-28T22:00:00+00:00 + + +https://home-assistant.io/blog/2018/01/14/release-61/ +2018-01-14T18:00:00+00:00 + + +https://home-assistant.io/blog/2018/01/21/clarification-emulated-hue/ +2018-01-21T01:00:00+00:00 + + +https://home-assistant.io/blog/2018/01/27/release-62/ +2018-01-27T01:00:00+00:00 + + +https://home-assistant.io/blog/2018/02/09/disabling-disqus/ +2018-02-09T01:00:00+00:00 + + +https://home-assistant.io/blog/2018/02/10/release-63/ +2018-02-10T01:00:00+00:00 + + +https://home-assistant.io/blog/2018/02/19/cloud-update/ +2018-02-19T01:00:00+00:00 + + +https://home-assistant.io/blog/2018/02/26/release-64/ +2018-02-26T00:01:00+00:00 + + +https://home-assistant.io/blog/2018/03/09/release-65/ +2018-03-09T00:01:00+00:00 + + +https://home-assistant.io/developers/add_new_platform/ + + +https://home-assistant.io/developers/hassio/addon_communication/ + + +https://home-assistant.io/developers/hassio/addon_config/ + + +https://home-assistant.io/developers/hassio/addon_development/ + + +https://home-assistant.io/developers/hassio/addon_presentation/ + + +https://home-assistant.io/developers/hassio/addon_publishing/ + + +https://home-assistant.io/developers/hassio/addon_repository/ + + +https://home-assistant.io/developers/hassio/addon_testing/ + + +https://home-assistant.io/developers/hassio/addon_tutorial/ + + +https://home-assistant.io/cloud/alexa/ + + +https://home-assistant.io/developers/api/ + + +https://home-assistant.io/developers/hassio/architecture/ + + +https://home-assistant.io/developers/architecture/ + + +https://home-assistant.io/developers/architecture_components/ + + +https://home-assistant.io/developers/asyncio/ + + +https://home-assistant.io/developers/asyncio_101/ + + +https://home-assistant.io/developers/asyncio_categorizing_functions/ + + +https://home-assistant.io/developers/asyncio_misc/ + + +https://home-assistant.io/developers/asyncio_working_with_async/ + + +https://home-assistant.io/getting-started/automation-2/ + + +https://home-assistant.io/getting-started/automation/ + + +https://home-assistant.io/developers/internationalization/backend_localization/ + + +https://home-assistant.io/developers/cla/ + + +https://home-assistant.io/developers/cla_sign/ + + +https://home-assistant.io/developers/cla_sign_start/ + + +https://home-assistant.io/developers/code_review_component/ + + +https://home-assistant.io/developers/code_review_platform/ + + +https://home-assistant.io/developers/component_deps_and_reqs/ + + +https://home-assistant.io/developers/component_discovery/ + + +https://home-assistant.io/developers/component_events/ + + +https://home-assistant.io/developers/component_generic_discovery/ + + +https://home-assistant.io/developers/component_loading/ + + +https://home-assistant.io/developers/component_states/ + + +https://home-assistant.io/developers/component_visibility/ + + +https://home-assistant.io/getting-started/configuration/ + + +https://home-assistant.io/developers/intent/conversation/ + + +https://home-assistant.io/developers/documentation/create_page/ + + +https://home-assistant.io/developers/creating_components/ + + +https://home-assistant.io/developers/credits/ + + +https://home-assistant.io/developers/internationalization/custom_component_localization/ + + +https://home-assistant.io/developers/hassio/debugging/ + + +https://home-assistant.io/developers/development/ + + +https://home-assistant.io/developers/development_101/ + + +https://home-assistant.io/developers/development_catching_up/ + + +https://home-assistant.io/developers/development_checklist/ + + +https://home-assistant.io/developers/development_config/ + + +https://home-assistant.io/developers/development_environment/ + + +https://home-assistant.io/developers/development_events/ + + +https://home-assistant.io/developers/development_guidelines/ + + +https://home-assistant.io/developers/development_hass_object/ + + +https://home-assistant.io/developers/development_services/ + + +https://home-assistant.io/developers/development_states/ + + +https://home-assistant.io/developers/development_submitting/ + + +https://home-assistant.io/developers/development_testing/ + + +https://home-assistant.io/developers/development_validation/ + + +https://home-assistant.io/hassio/external_storage/ + + +https://home-assistant.io/developers/intent/firing/ + + +https://home-assistant.io/developers/frontend/ + + +https://home-assistant.io/developers/frontend_add_card/ + + +https://home-assistant.io/developers/frontend_add_more_info/ + + +https://home-assistant.io/developers/frontend_creating_custom_panels/ + + +https://home-assistant.io/developers/frontend_creating_custom_ui/ + + +https://home-assistant.io/developers/intent/handling/ + + +https://home-assistant.io/developers/helpers/ + + +https://home-assistant.io/addons/ + + +https://home-assistant.io/blog/archives/ + + +https://home-assistant.io/blog/ + + +https://home-assistant.io/components/ + + +https://home-assistant.io/ + + +https://home-assistant.io/cloud/ + + +https://home-assistant.io/code_of_conduct/ + + +https://home-assistant.io/cookbook/ + + +https://home-assistant.io/developers/documentation/ + + +https://home-assistant.io/developers/intent/ + + +https://home-assistant.io/developers/internationalization/ + + +https://home-assistant.io/developers/ + + +https://home-assistant.io/docs/ + + +https://home-assistant.io/faq/ + + +https://home-assistant.io/getting-started/ + + +https://home-assistant.io/hassio/ + + +https://home-assistant.io/help/ + + +https://home-assistant.io/privacy/ + + +https://home-assistant.io/tos/ + + +https://home-assistant.io/hassio/installation/ + + +https://home-assistant.io/hassio/installing_third_party_addons/ + + +https://home-assistant.io/developers/license/ + + +https://home-assistant.io/developers/maintenance/ + + +https://home-assistant.io/developers/multiple_instances/ + + +https://home-assistant.io/developers/platform_example_light/ + + +https://home-assistant.io/developers/platform_example_sensor/ + + +https://home-assistant.io/getting-started/presence-detection/ + + +https://home-assistant.io/developers/python_api/ + + +https://home-assistant.io/developers/releasing/ + + +https://home-assistant.io/developers/rest_api/ + + +https://home-assistant.io/hassio/run_local/ + + +https://home-assistant.io/developers/server_sent_events/ + + +https://home-assistant.io/developers/documentation/standards/ + + +https://home-assistant.io/help/talking-points/ + + +https://home-assistant.io/developers/internationalization/translation/ + + +https://home-assistant.io/help/trivia/ + + +https://home-assistant.io/getting-started/use/ + + +https://home-assistant.io/developers/websocket_api/ + + +https://home-assistant.io/hassio/zwave/ + + +https://home-assistant.io/blog/categories/website/ + + +https://home-assistant.io/blog/categories/internet-of-things/ + + +https://home-assistant.io/blog/categories/release-notes/ + + +https://home-assistant.io/blog/categories/organization/ + + +https://home-assistant.io/blog/categories/user-stories/ + + +https://home-assistant.io/blog/categories/how-to/ + + +https://home-assistant.io/blog/categories/mqtt/ + + +https://home-assistant.io/blog/categories/esp8266/ + + +https://home-assistant.io/blog/categories/survey/ + + +https://home-assistant.io/blog/categories/community/ + + +https://home-assistant.io/blog/categories/video/ + + +https://home-assistant.io/blog/categories/public-service-announcement/ + + +https://home-assistant.io/blog/categories/ibeacons/ + + +https://home-assistant.io/blog/categories/presence-detection/ + + +https://home-assistant.io/blog/categories/owntracks/ + + +https://home-assistant.io/blog/categories/talks/ + + +https://home-assistant.io/blog/categories/technology/ + + +https://home-assistant.io/blog/categories/device-tracking/ + + +https://home-assistant.io/blog/categories/iot-data/ + + +https://home-assistant.io/blog/categories/micropython/ + + +https://home-assistant.io/blog/categories/merchandise/ + + +https://home-assistant.io/blog/categories/media/ + + +https://home-assistant.io/blog/categories/announcements/ + + +https://home-assistant.io/blog/categories/cloud/ + + +https://home-assistant.io/blog/posts/2/ + + +https://home-assistant.io/blog/posts/3/ + + +https://home-assistant.io/blog/posts/4/ + + +https://home-assistant.io/blog/posts/5/ + + +https://home-assistant.io/blog/posts/6/ + + +https://home-assistant.io/blog/posts/7/ + + +https://home-assistant.io/blog/posts/8/ + + +https://home-assistant.io/blog/posts/9/ + + +https://home-assistant.io/blog/posts/10/ + + +https://home-assistant.io/blog/posts/11/ + + +https://home-assistant.io/blog/posts/12/ + + +https://home-assistant.io/blog/posts/13/ + + +https://home-assistant.io/blog/posts/14/ + + +https://home-assistant.io/blog/posts/15/ + + +https://home-assistant.io/blog/posts/16/ + + +https://home-assistant.io/blog/posts/17/ + + +https://home-assistant.io/blog/posts/18/ + + +https://home-assistant.io/demo/frontend.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/index.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-dev-event.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-dev-info.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-dev-service.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-dev-state.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-dev-template.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-history.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-iframe.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-logbook.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/demo/panels/ha-panel-map.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/googlef4f3693c209fe788.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html +2018-03-11T22:05:15+00:00 + + +https://home-assistant.io/static/mdi-demo.html +2018-03-11T22:05:15+00:00 + + diff --git a/source/_addons/bluetooth_bcm43xx.markdown b/source/_addons/bluetooth_bcm43xx.markdown deleted file mode 100644 index 6051a694bb..0000000000 --- a/source/_addons/bluetooth_bcm43xx.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Bluetooth BCM43xx" -description: "Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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 deleted file mode 100644 index a17d0ff09d..0000000000 --- a/source/_addons/cec_scan.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -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 the log to see all connected device on HDMI. diff --git a/source/_addons/check_config.markdown b/source/_addons/check_config.markdown deleted file mode 100644 index f10f69848f..0000000000 --- a/source/_addons/check_config.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Check Home Assistant configuration" -description: "Check your current Home Assistant configuration against a new version." -date: 2017-04-30 13:28 -sidebar: true -comments: false -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 installation. This addon will help you avoid errors due to breaking changes, resulting in a smooth update. - -```json -{ - "version": "latest" -} -``` - -Configuration variables: - -- **version** (*Required*): Version of Home Assistant that you plan to install. diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown deleted file mode 100644 index d402488270..0000000000 --- a/source/_addons/configurator.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -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. The 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"], - "banlimit": 0, - "ignore_pattern": ["__pycache__"], - "dirsfirst": false, - "sesame": "somesecretnobodycanguess" -} -``` - -- **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. -- **banlimit** (*Optional*): Ban access from IPs after `banlimit` failed login attempts. The default value `0` disables this feature. Restart the add-on to clear the list of banned IP addresses. -- **ignore_pattern** (*Optional*): Files and folders to ignore in the UI. -- **dirsfirst** (*Optional*): List directories before files in the file browser. -- **sesame** (*Optional*): Secret token to dynamically allow access from the IP the request originates from. Open your bookmark https://hassio.yourdomain.com:8123/somesecretnobodycanguess while `allowed_networks` is set to `[]` and boom! Open Sesame! You can use the _Network status_ menu to revoke IP addresses for which access has been granted. - -### {% linkable_title Embedding into Home-Assistant %} - -Using the Home Assistant component [panel_iframe](/components/panel_iframe/) it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration from 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 deleted file mode 100644 index 1f0df69183..0000000000 --- a/source/_addons/dhcp_server.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "DHCP server" -description: "A simple DHCP server." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Create a simple DHCP server for your network and allow setting fixed IPs for devices. - -```json -{ - "domain": "mynetwork.local", - "dns": ["8.8.8.8", "8.8.4.4"], - "networks": [ - { - "subnet": "192.168.1.0", - "netmask": "255.255.255.0", - "range_start": "192.168.1.100", - "range_end": "192.168.1.200", - "broadcast": "192.168.1.255", - "gateway": "192.168.1.1", - "interface": "eth0" - } - ], - "hosts": [ - { - "name": "webcam_xy", - "mac": "aa:bb:ee:cc", - "ip": "192.168.1.40" - } - ] -} -``` - -Configuration variables: - -- **domain** (*Required*): Your network domain name. -- **dns** (*Required*): A list of DNS server for your network. -- **networks** (*Optional*): A list of network to provide DHCP. -  - **subnet** (*Required*): Your network schema. -  - **netmask** (*Required*): Your network netmask. -  - **range_start** (*Required*): Start address for dhcp leases. -  - **range_end** (*Required*): End address for dhcp leases. -  - **broadcast** (*Required*): Network broadcast address. -  - **gateway** (*Required*): A List of gateways. - - **interface** (*Required*): Interface on that will be listen. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. -- **hosts** (*Optional*): A list of fixed IPs for devices. - - **name** (*Required*): Name/hostname of your device. -  - **mac** (*Required*): Mac address of your device. -  - **ip** (*Required*): Fix ip address for device. diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown deleted file mode 100644 index d894320ab0..0000000000 --- a/source/_addons/dnsmasq.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Dnsmasq" -description: "A simple DNS server." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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. - -```json -{ - "defaults": ["8.8.8.8", "8.8.4.4"], - "forwards": [ - {"domain": "mystuff.local", "server": "192.168.1.40"} - ], - "hosts": [ - {"host": "home.mydomain.io", "ip": "192.168.1.10"} - ] -} -``` - -Configuration variables: - -- **defaults** (*Required*): A list of DNS servers to forward default requests to. -- **forwards** (*Optional*): A list of domains that will forward to a specific server. -- **hosts** (*Optional*): A list of hosts to resolve statically. diff --git a/source/_addons/duckdns.markdown b/source/_addons/duckdns.markdown deleted file mode 100644 index 123e975e97..0000000000 --- a/source/_addons/duckdns.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -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://www.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, - "certfile": "fullchain.pem", - "keyfile": "privkey.pem" - }, - "token": "sdfj-2131023-dslfjsd-12321", - "domains": ["my-domain.duckdns.org"] -} -``` - -Configuration variables: - -- **lets_encrypt.accept_terms** (*Optional*): If you accept the [Let's Encrypt Subscriber Agreement][le], it will generate and update Let's Encrypt certificates for your DuckDNS domain. -- **token** (*Required*): Your Duck DNS API key. -- **domains** (*Required*): A list of domains to update DNS. -- **seconds** (*Required*): Seconds between updates to Duck DNS. - -[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 port other than `8123` or an SSL proxy, change the port number accordingly. - -## {% 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. - -Ensure that you allocate the Home Assistant system a fixed IP on your network before you configure port forwarding. You can do this either on the computer itself (see the [install guide](/hassio/installation/) or via a static lease on your router. - -Restart Home Assistant for the configured changes to take effect. When you access the Home Assistant frontend you will now need to use `https`, even when accessing local instances, for example at `https://192.168.0.1:8123`. diff --git a/source/_addons/git_pull.markdown b/source/_addons/git_pull.markdown deleted file mode 100644 index bf8324628c..0000000000 --- a/source/_addons/git_pull.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -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.git", - "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. You have to add .git to your GITHub-Repository-URL (see example Config) -- **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_user** (*Optional*): Username to use when authenticating to a repo with a username and password. -- **deployment_password** (*Optional*): Password to use when authenticating to a repo. Ignored if deployment_user is not set. -- **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. - -

    -You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a git repository. If the script does not find the necessary git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a `.git` folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is `ls -a /config`. -

    diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown deleted file mode 100644 index f48415638e..0000000000 --- a/source/_addons/google_assistant.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -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 ---- - -

    - If you want to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant, then you want the [Google Assistant component](/components/google_assistant/). -

    - -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact via the [DialogFlow][comp] integration 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 -1. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. -1. 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 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 [DialogFlow component][comp] to integrate the add-on into Home Assistant. - -[GoogleAssistant]: https://assistant.google.com/ -[GoogleActions]: https://actions.google.com/ -[Samba]: /addons/samba/ -[comp]: /components/dialogflow/ -[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/homematic.markdown b/source/_addons/homematic.markdown deleted file mode 100644 index 6a92bbff81..0000000000 --- a/source/_addons/homematic.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "HomeMatic" -description: "HomeMatic hardware support to turn you Home-Assistant into a CCU." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Set up a [HomeMatic](https://github.com/eq-3/occu) hardware layer. At the moment we don't support hmIP, but that is in progress. For learning and handling devices use our internal HomeMatic panel and services (in progress) or use [Homematic-Manager](https://github.com/hobbyquaker/homematic-manager) > 2.0. - -The logic layer will be Home-Assistant. There is no ReGa or other logic layer installed. You can't import an existing configuration, you'll need re-learn it into Home-Assistant. - -Follow devices will be supported and tested: -- [HM-MOD-RPI-PCB](https://www.elv.ch/homematic-funkmodul-fuer-raspberry-pi-bausatz.html) - -```json -{ - "rf_enable": true, - "rf": [ - { - "type": "CCU2", - "device": "/dev/ttyAMA0" - } - ], - "wired_enable": false, - "wired": [ - { - "serial": "xy", - "key": "abc", - "ip": "192.168.0.0" - } - ] -} -``` - -Configuration variables: - -- **rf_enable** (*Require*): Boolean. Enable or disable BidCoS-RF. -- **wired_enable** (*Require*): Boolean. Enable or disable BidCoS-Wired. - -For RF devices -- **type** (*Require*): Device type for RFD service. Look into the manual of your device. -- **device** (*Require*): Device on the host. - -For RF devices -- **serial** (*Require*): Serial number of the device. -- **key** (*Require*): Encrypted key. -- **ip** (*Require*): IP address of LAN gateway. - -## {% linkable_title Home Assistant configuration %} - -Use the following configuration in Home Assistant to use it: - -```yaml -homematic: - interfaces: - rf: - host: core-homematic - port: 2001 -``` - -## {% linkable_title Raspberry Pi3 %} - -With HM-MOD-PRI-PCB you need to add follow into your `config.txt` on boot partition: -``` -dtoverlay=pi3-miniuart-bt -``` diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown deleted file mode 100644 index 0ac8d01994..0000000000 --- a/source/_addons/lets_encrypt.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "Let's Encrypt" -description: "Automatically manage your SSL certificate using Let's Encrypt." -date: 2018-04-18 10:55 -sidebar: true -comments: false -sharing: true -footer: true -featured: false ---- - -

    -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 addon will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. This add-on uses port 80 to verify the certificate request. You will need to stop all other add-ons that also use this port. - -```json -{ - "email": "example@example.com", - "domains": ["example.com", "mqtt.example.com", "hass.example.com"] -} -``` - -Configuration variables: - -- **email** (*Required*): Your email address for registration on Let's Encrypt. -- **domains** (*Required*): A list of domains to create/renew the certificate. - -## {% linkable_title Home Assistant configuration %} - -Use the following configuration in Home Assistant to use the generated certificate: - -```yaml -http: - base_url: https://my-domain.tld:8123 - ssl_certificate: /ssl/fullchain.pem - ssl_key: /ssl/privkey.pem -``` - -If you use another port such as `8123` or an SSL proxy, change the port number. - -## {% linkable_title Enabling auto-renewals %} - -Out of the box, the add-on will not automatically renew your certificate. In fact, it only starts, tries to get/renew your certificte, and then stops. It's up to you to manually start it again whenever your certificate comes close to expiry. - -However, you can automate this process using Home Assistant. - -Use this in your `automations.yaml` to attempt certificate renewal each day at midnight: - -```yaml -- id: letsencrypt-renewal - alias: "Let's Encrypt Renewal" - trigger: - - platform: time - at: '00:00:00' - action: - - service: hassio.addon_restart - data: - addon: core_letsencrypt -``` - -[DuckDNS add-on]: /addons/duckdns/ diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown deleted file mode 100644 index 66df1440c6..0000000000 --- a/source/_addons/mariadb.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -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*): List of databases. -- **logins** (*Require*): List of SQL accounts to create or update. - - **username** (*Require*): Username for account. - - **host** (*Require*): Host for account. If you need an account on multiple hosts, use '%'. - - **password** (*Require*): Password for account. -- **rights** (*Require*): List of rights to be granted. - - **username** (*Require*): Username for granted rights. - - **host** (*Require*): Host is a part of username like above. - - **database** (*Require*): Database name on which to grant user rights. - - **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 deleted file mode 100644 index f143d9ac34..0000000000 --- a/source/_addons/mosquitto.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Mosquitto MQTT broker" -description: "Fast and reliable MQTT broker." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true -featured: true ---- - -Set up [Mosquitto](https://mosquitto.org/) as MQTT broker. - -```json -{ - "plain": true, - "ssl": false, - "anonymous": true, - "logins": [ - {"username": "testuser", "password": "mypw"} - ], - "customize": { - "active": false, - "folder": "mosquitto" - }, - "certfile": "fullchain.pem", - "keyfile": "privkey.pem" -} -``` - -

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

    - -Configuration variables: - -- **plain** (*Optional*): Listen on port 1883 without SSL/TLS. Defaults to `true`. -- **ssl** (*Optional*): Listen on port 8883 with SSL/TLS. This requires certificates. Defaults to `false`. -- **anonymous** (*Optional*): Allow anonymous connections. If *logins* is set, the anonymous user can only read data. Defaults to `true`. -- **logins** (*Optional*): A list of users that will be created with *username* and *password*. -- **customize** (*Optional*): If you enable it, it reads additional configuration files (`*.conf`) from `/share/mosquitto`. - -### {% linkable_title Home Assistant 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 -``` - -If username and password are set up in add-on, your `configuration.yaml` file should contain that data. - -```yaml -mqtt: - broker: core-mosquitto - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -### {% linkable_title Listening simultaneously on SSL/TLS (8883) and insecure (1883) ports %} - -1. Configure SSL/TLS as normal. -2. Set `customize` flag to `true` in your configuration. -3. Create a file in `/share/mosquitto` named `insecure.conf` with the following contents: - -```text -listener 1883 -protocol mqtt -``` - -4. Restart MQTT - -

    -It's recommened that you only open your firewall to the SSL/TLS port (8883) and only use the insecure port (1883) for local devices. -

    diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown deleted file mode 100644 index e1d8a5f01c..0000000000 --- a/source/_addons/nginx_proxy.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "NGINX SSL proxy" -description: "NGINX Home Assistant SSL proxy." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Setup an 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 an HTTP 502 error. - -```json -{ - "domain": "home.example.com", - "certfile": "fullchain.pem", - "keyfile": "privkey.pem", - "hsts": "max-age=31536000; includeSubDomains", - "customize": { - "active": false, - "default": "nginx_proxy_default*.conf", - "servers": "nginx_proxy/*.conf" - } -} -``` - -Configuration variables: - -- **domain** (*Required*): Domain they will proxy run with it. -- **certfile** (*Required*): Certificate file to use in the /ssl dir. -- **keyfile** (*Required*): Private key file to use in the /ssl dir. -- **hsts** (*Optional*): Value for the [`Strict-Transport-Security`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) HTTP header to send. If empty or `null`, the header is not sent. -- **customize** (*Optional*): If true, additional NGINX configuration files for the default server and additional servers are read from files in the /share dir specified by the `default` and `servers` variables. - -

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

    diff --git a/source/_addons/rpc_shutdown.markdown b/source/_addons/rpc_shutdown.markdown deleted file mode 100644 index a4d2d6689a..0000000000 --- a/source/_addons/rpc_shutdown.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -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 ---- - -Allows you to shut down 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 objects to shutdown from Home-Assistant. -- **computers/alias** (*Required*): Set an alias for this record which becomes the name for the input. -- **computers/address** (*Required*): IP address or NetBIOS name of the computer for the shutdown. -- **computers/credentials** (*Required*): Credentials for logging into computer. Use a `%` as the 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 deleted file mode 100644 index 9d0f18923f..0000000000 --- a/source/_addons/samba.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Samba" -description: "Manage your Home Assistant and custom add-ons over Samba." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true -featured: true ---- - -This addon 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, - "addons": true, - "share": true, - "backup": true, - "ssl": false - }, - "username": "", - "password": "", - "interface": "eth0" -} -``` - -Configuration variables: - -- **name** (*Optional*): Set netbios name of Hass.io device. Default is `hassio`. -- **workgroup** (*Optional*): Set network workgroup name. Default is `WORKGROUP`. -- **guest** (*Optional*): Allow login without a username or password. Default is `true`. -- **map** (*Optional*): Control which folders will be exposed. `config` shares the Home Assistant configuration folder. `addons` shares the local custom repository. `share` shares a folder that can be accessed by add-ons and Home Assistant. `backup` shares access to snapshot files. `ssl` shares certificate storage. Be careful with the `ssl` option! Defaults are all set to `true`, except for `ssl`. -- **username** (*Optional*): Username for logging in if guest login is not used. -- **password** (*Optional*): Password for `username`. An empty password is not supported. -- **interface** (*Optional*): Interface that will start the share. Normally this is `eth0` for ethernet wired connection and `wlan0` for wireless connection. diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown deleted file mode 100644 index 851afd8e7d..0000000000 --- a/source/_addons/snips.markdown +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: page -title: "Snips.ai" -description: "Enhance your Hass.io installation with a local voice assistant." -date: 2018-05-02 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -[Snips.ai](https://snips.ai/) is an AI-powered voice assistant that runs on the Raspberry Pi 3 and x86 platforms. It runs on-device and is Private by Design. - -The Snips add-on depends on the Mosquitto add on to bridge to Home Assistant, so make sure that is installed. - -HomeAssistant comes with certain Intents builtin to handle common tasks. A complete list of Intents can be found in this wiki [Hass Snips Bundle](https://github.com/tschmidty69/hass-snips-bundle-intents/wiki). - -The Snips addon by default comes with an assistant that allows you to turn on lights or switches, open covers, or add and list items to a shopping list if that component is enabled. - -If using a USB microphone and speakers plugged into the Raspberry Pi output, Snips will work without any change to the configuration. Trying saying things like: - -``` -Turn on kitchen light -Open garage door -What is on my shopping list -``` - -To get started creating your own configuration, follow [their tutorial](https://snips.gitbook.io/documentation/console) to create an assistant and download the training data. You can also add the HomeAssistant Skill to your assistant to enable the built-in intents, and add or create your own intents to do more complex tasks. - -Now install and activate the [Samba](/addons/samba/) add-on so you can upload your training data. Connect to the "share" Samba share and copy your assistant over. Name the file `assistant.zip` or whatever you have configured in the configuration options. - -Now it's time to start Snips for the first time. You can configure the microphone and sound card using the Add-on interface. Now start the add-on. - -### {% linkable_title Add-On configuration %} - -```json -{ - "mqtt_bridge": { - "active": true, - "host": "172.17.0.1", - "port": 1883, - "user": "", - "password": "" - }, - "assistant": "assistant.zip", - "language": "en", - "custom_tts": false, - "tts_platform": "amazon_polly" -} -``` - -Configuration variables: - -- **mqtt_bridge**: Snips uses MQTT to communicate and defaults to their own broker. Use this config option to bridge their broker to your the Mosquitto add-on. -- **assistant**: The name of your custom assistant in `/share`. If no assistant is found then a default assistant will be used. -- **language**: Language. This is used to select the default custom assistant, Currently `en`, `de` and `fr` are supported. -- **custom_tts**: Whether to use a TTS provider from Home Assistant for a variety of voices. -- **tts_platform**: Which TTS platform to use. - -### {% linkable_title Home Assistant configuration %} - -A simple configuration just requires this. Consult [Snips.ai component](/components/snips/) for more options. - -```yaml -snips: -``` - -### {% linkable_title Home Assistant configuration %} - -There is an active [discord](https://discordapp.com/invite/3939Kqx) channel for further support. - -### {% linkable_title Examples %} - -So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your HassIO installation using the Samba addon. - -Next create a weather sensor, e.g., one for (Dark Sky)[/components/sensor.darksky/] and put the `api_key` in your `secrets.yaml` file. - -```yaml -- platform: darksky - name: "Dark Sky Weather" - api_key: !secret dark_sky_key - update_interval: - minutes: 10 - monitored_conditions: - - summary - - hourly_summary - - temperature - - temperature_max - - temperature_min -``` -Next add this to your `configuration.yaml` file to reference a new `intent_script` component. This is a good practice to [split your configuration files](/docs/configuration/splitting_configuration/) up. - -```yaml -intent_script: !include intent_script.yaml -``` - -Finally, create this `intent_script.yaml` file in your configuration directory. - -{% raw %} -```yaml -searchWeatherForecast: - speech: - type: plain - text: > - The weather is currently - {{ states('sensor.dark_sky_weather_temperature') | round(0) }} - degrees outside and {{ states('sensor.dark_sky_weather_summary') }}. - The high today will be - {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}} - and {{ states('sensor.dark_sky_weather_hourly_summary') }} -``` -{% endraw %} - -Now just restart HassIO and ask it what the weather is like. - -[their tutorial]: https://github.com/snipsco/snips-platform-documentation/wiki/2.-Create-an-assistant-using-an-existing-bundle - diff --git a/source/_addons/ssh.markdown b/source/_addons/ssh.markdown deleted file mode 100644 index a21a019650..0000000000 --- a/source/_addons/ssh.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "SSH Server" -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. 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 variants at the same time. - -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** (*Optional*): Your public keys for the authorized key file. Every element will be a line inside that file. -- **password** (*Optional*): Set a password for login. We do not recommend this variant. - - -
    - -
    - -[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 if Hass.io was installed via the generic Linux installer.

    diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown deleted file mode 100644 index 49764d93da..0000000000 --- a/source/_addons/tellstick.markdown +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: page -title: "TellStick" -description: "Telldus TellStick service enabler and tools." -date: 2017-12-04 21:31 -sidebar: true -comments: false -sharing: true -footer: true -featured: false ---- - -Setting up the [Tellstick](http://telldus.com) service and tools contained in the [telldus-core](http://developer.telldus.com/) package and adding configuration to enable Tellstick and Tellstick Duo to work on your Hass.io. - -To use this add-on, you first install it from the list of Built-in add-ons in Hass.io. -After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the [valid parameters for Tellstick configuration file (tellstick.conf)](https://developer.telldus.com/wiki/TellStick_conf). - -After any changes have been made to the configuration, you need to restart the add-on for the changes to take effect. - -Configuration variables: - -- **id** (*Required*): A number and must be unique for each device. -- **name** (*Required*): A name for easy identification of the device. -- **protocol** (*Required*): This is the protocol the device uses. More on the different protocols later down. -- **model** (*Optional*): The model parameter is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus self-learning, etc. -- **house** (*Optional*): Depending on protocol the values here can vary a lot to identify or group per house or type. -- **unit** (*Optional*): Unit identifier, in most cases a value between 1 to 16 and often used in combination with the house. -- **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if it should fade smooth or instant between values (only for IKEA protocol as it seems). -- **code** (*Optional*): A number series based on ones and zeroes often used for dip-switch based devices. - -You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. - - -```yaml -# Example configuration.yaml entry - -tellstick: - host: core-tellstick - port: [50800, 50801] - -``` - -To add [lights](/components/light.tellstick/), [sensors](/components/sensor.tellstick/) and [switches](/components/switch.tellstick/) you follow the guidelines for each type individually that is [described for Home Assistant](/components/tellstick/) - -The add-on will also enable you to interact with the `tdtool` via a Home Assistant services call, see example below for self-learning device. - -## {% linkable_title Examples %} - -Example for adding more devices in the add-on configuration (note the comma separator between devices): - -```json -{ - "devices": [ - { - "id": 1, - "name": "Outdoor light", - "protocol": "everflourish", - "model": "selflearning-switch", - "house": "A", - "unit": "1" - }, - { - "id": 2, - "name": "Hallway dimmer", - "protocol": "risingsun", - "model": "selflearning-dimmer", - "house": "A", - "unit": "2" - } - ] -} -``` - -## Service calls - -If you wish to teach a selflearning device in your TellStick configuration: - -Go to Home Assistant [service call](http://hassio.local:8123/dev-service) in Developer tools and select. -- Service: `hassio.addon_stdin` -- Enter service Data: - `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` - -Replace `1` with the corresponding ID of the device in your TellStick configuration. - -You can also use this to list devices or sensors and read the output in the add-on log: -`{"addon":"core_tellstick","input":{"function":"list-sensors"}}` - - -#### Supported service commands - -- `"function":"list"`: List currently configured devices with name and device id and all discovered sensors. - -- `"function":"list-sensors"` -- `"function":"list-devices"`: Alternative devices/sensors listing: Shows devices and/or sensors using key=value format (with tabs as separators, one device/sensor per line, no header lines.) - -- `"function":"on","device":"x"`: Turns on device. ’x’ could either be an integer of the device-id, or the name of the device. - -- `"function":"off","device":"x"`: Turns off device. ’x’ could either be an integer of the device-id, or the name of the device. - -- `"function":"bell","device":"x"`: Sends bell command to devices supporting this. ’x’ could either be an integer of the device-id, or the name of the device. - -- `"function":"learn","device":"x"`: Sends a special learn command to devices supporting this. This is normally devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device. diff --git a/source/_components/abode.markdown b/source/_components/abode.markdown deleted file mode 100644 index 87b689230b..0000000000 --- a/source/_components/abode.markdown +++ /dev/null @@ -1,110 +0,0 @@ ---- -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 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/ads.markdown b/source/_components/ads.markdown deleted file mode 100644 index 9e8463add0..0000000000 --- a/source/_components/ads.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "ADS" -description: Connect Home Assistant to TwinCAT devices via the ADS interface -date: 2017-12-05 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beckhoff.png -ha_category: Hub -ha_release: "0.60" -ha_iot_class: "Local Push" ---- - -The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](http://www.beckhoff.hu/english.asp?twincat/default.htm) and other devices implementing this interface. - -To enable ADS, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -ads: - device: '127.0.0.1.1.1' - port: 48898 -``` - -{% configuration %} - device: - required: true - description: The AMS NetId that identifies the device. - type: string - port: - required: true - description: The port that runs the AMS server on the device, typically this would be 801 or 851. - type: int - ip_address: - required: false - description: The IP address of the ADS device, if not set the first 4 bytes of the device id will be used. - type: string -{% endconfiguration %} - -## {% linkable_title Service %} - -The ADS component will register the service `write_by_name` allowing you to write a value to a variable on your ADS device. - -```json -{ - "adsvar": ".myvariable", - "adstype": "int", - "value": 123 -} -``` - -Service parameters: - -- **adsvar**: Name of the variable on the ADS device. To access global variables on *TwinCAT2* use a prepending dot `.myvariable`, for TwinCAT3 use `GBL.myvariable`. -- **adstype**: Specify the type of the variable. Use one of the following: `int`, `byte`, `uint`, `bool` -- **value**: The value that will be written in the variable. diff --git a/source/_components/alarm_control_panel.abode.markdown b/source/_components/alarm_control_panel.abode.markdown deleted file mode 100644 index 588eb46f40..0000000000 --- a/source/_components/alarm_control_panel.abode.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Abode Alarm Control Panel" -description: "Instructions on 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.alarmdecoder.markdown b/source/_components/alarm_control_panel.alarmdecoder.markdown deleted file mode 100644 index 98810aaa2a..0000000000 --- a/source/_components/alarm_control_panel.alarmdecoder.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "AlarmDecoder Alarm Control Panel" -description: "Instructions on how to setup the AlarmDecoder Alarm control panel within Home Assistant." -date: 2017-04-02 13:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: alarmdecoder.png -ha_category: Alarm -ha_release: 0.43 -ha_iot_class: "Local Push" ---- - -The `alarmdecoder` alarm control panel platform allows you to control your [AlarmDecoder](https://www.alarmdecoder.com) alarms. - -The requirement is that you have setup your [AlarmDecoder hub](/components/alarmdecoder/). - -### {% linkable_title Services %} - -The Alarm Decoder component gives you access to several services for you to control your alarm with. - -- `alarm_arm_away`: Arms the alarm in away mode; all faults will trigger the alarm. -- `alarm_arm_home`: Arms the alarm in stay mode; faults to the doors or windows will trigger the alarm. -- `alarm_arm_night`: Arms the alarm in instant mode; all faults will trigger the alarm. Additionally, the entry delay is turned off on the doors. -- `alarm_disarm`: Disarms the alarm from any state. Also clears a `check_zone` flag after an alarm was triggered. -- `alarmdecoder_alarm_toggle_chime`: Toggles the alarm's chime state. - -

    -`alarm_arm_custom_bypass` and `alarm_trigger`, while available in the services list in Home Assistant, are not currently implemented in the Alarm Decoder platform. -

    - -### {% linkable_title Attributes %} - -There are several attributes available on the alarm panel to give you more information about your alarm. - -- `ac_power`: Set to `true` if your system has AC power supplying it. -- `backlight_on`: Set to `true` if your keypad's backlight is on. -- `battery_low`: Set to `true` if your system's back-up battery is low. -- `check_zone`: Set to `true` if your system was recently triggered. When `check_zone` is `true`, it must be cleared by entering your code + 1 before attempting to rearm your alarm. -- `chime`: Set to `true` if your system's chime is activated. When activated, your system will beep anytime a door or window is faulted while the alarm is disarmed. -- `entry_delay_off`: Set to `true` if your system is in "Instant" mode, meaning the alarm will sound on any faults. -- `programming_mode`: Set to `true` if your system is in programming mode. -- `ready`: Set to `true` if your system is ready to be armed. Any faults, including motions sensors, will make this value `false`. -- `zone_bypassed`: Set to `true` if your system is currently bypassing a zone. - -### {% linkable_title Examples %} - -Using a combination of the available services and attributes, you can create switch templates. - -#### {% linkable_title Chime Status and Control %} - -{% raw %} -```yaml -- platform: template - switches: - alarm_chime: - friendly_name: Chime - value_template: "{{ is_state_attr('alarm_control_panel.alarm_panel', 'chime', true) }}" - turn_on: - service: alarm_control_panel.alarmdecoder_alarm_toggle_chime - data: - code: !secret alarm_code - turn_off: - service: alarm_control_panel.alarmdecoder_alarm_toggle_chime - data: - code: !secret alarm_code - icon_template: >- - {% if is_state_attr('alarm_control_panel.alarm_panel', 'chime', true) %} - mdi:bell-ring - {% else %} - mdi:bell-off - {% endif %} -``` -{% endraw %} diff --git a/source/_components/alarm_control_panel.alarmdotcom.markdown b/source/_components/alarm_control_panel.alarmdotcom.markdown deleted file mode 100644 index 82e1a7774e..0000000000 --- a/source/_components/alarm_control_panel.alarmdotcom.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Alarm.com Alarm Control Panel" -description: "Instructions on how to integrate Alarm.com into Home Assistant." -date: 2016-01-14 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: alarmdotcom.png -ha_category: Alarm -ha_release: 0.11 ---- - -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`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - platform: alarmdotcom - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **username** (*Required*): Username for the Alarm.com account. -- **password** (*Required*): Password for Alarm.com account. -- **name** (*Optional*): The name of the alarm. Default is 'Alarm.com'. -- **code** (*Optional*): Specifies a code to enable or disable the alarm in the frontend. diff --git a/source/_components/alarm_control_panel.arlo.markdown b/source/_components/alarm_control_panel.arlo.markdown deleted file mode 100644 index e47a6322d6..0000000000 --- a/source/_components/alarm_control_panel.arlo.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "Arlo Control Panel" -description: "Instructions on 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` alarm control panel allows you to control your [Arlo](https://arlo.netgear.com/) base stations. You can use it to switch modes and trigger alarms from Home Assistant. - -To get your [Arlo](https://arlo.netgear.com/) base stations working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo). - -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 %} -home_mode_name: - description: "Arlo base station does not have a built-in home mode. You can map one of your custom modes to Home Assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app." - required: false - type: string -away_mode_name: - description: "Arlo base station does not have a built-in away mode. You can map one of your custom modes to Home Assistant's away mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match eactly as you set it up in the Arlo app." - required: false - type: string - default: "`Armed` mode in Arlo" -{% endconfiguration %} - -## {% linkable_title Examples %} - -These examples are based on an Arlo base station named `my_arlo_base_station`. Replace this with the name of your base station's `entity_id`. - -Arming the Arlo Base Station when leaving. - -```yaml -- id: arm_arlo_when_leaving - alias: Arm Arlo cameras when leaving - trigger: - platform: state - entity_id: group.family - from: home - to: not_home - action: - service: alarm_control_panel.alarm_arm_away - entity_id: alarm_control_panel.my_arlo_base_station -``` - -Setting Arlo to a custom mode (mapped to `home_mode_name` in `configuration.yaml`) when arriving. - -```yaml -- id: disarm_arlo_when_arriving - alias: Set Arlo cameras to Home mode when arriving - trigger: - platform: state - entity_id: group.family - from: not_home - to: home - action: - service: alarm_control_panel.alarm_arm_home - entity_id: alarm_control_panel.my_arlo_base_station -``` - -You can also completely disarm the Arlo base station by calling the `alarm_control_panel.alarm_disarm` service, and trigger the alarm by calling the `alarm_control_panel.alarm_trigger` service. - -More examples and configuration options can be found on the [Manual Alarm Control page](/components/alarm_control_panel.manual/#examples). diff --git a/source/_components/alarm_control_panel.canary.markdown b/source/_components/alarm_control_panel.canary.markdown deleted file mode 100644 index 59125f8746..0000000000 --- a/source/_components/alarm_control_panel.canary.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Canary Alarm Control Panel" -description: "Instructions on how to integrate your Canary devices into Home Assistant." -date: 2017-12-07 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: canary.png -ha_category: Alarm -ha_release: "0.60" -ha_iot_class: "Cloud Polling" ---- - -The `canary` alarm control panel platform allows you to integrate your [Canary](https://canary.is) alarm system in Home Assistant. - -To add `canary` alarm control panel to your installation, follow instructions in [Canary component](/components/canary/). diff --git a/source/_components/alarm_control_panel.concord232.markdown b/source/_components/alarm_control_panel.concord232.markdown deleted file mode 100644 index 36f897e21e..0000000000 --- a/source/_components/alarm_control_panel.concord232.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Concord232 Alarm Control Panel" -description: "Instructions on how to integrate Interlogix/GE Concord4 with RS-232 Automation Control Module into Home Assistant." -date: 2016-10-11 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: interlogix.png -ha_category: Alarm -ha_release: 0.31 ---- - -The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4. - -To use this platform, you will need to have the external concord232 client and server installed. The server must be running on the device which is connected to the automation module's serial port. The client must be installed on the machine running Home Assistant. These may often be the same machine, but do not have to be. For additional details in setting up and testing the client and server, see - -To enable this platform in Home Assistant, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: concord232 -``` - -Configuration variables: - -- **host** (*Optional*): The host where the concord232 server process is running. Defaults to localhost. -- **port** (*Optional*): The port where the Alarm panel is listening. Defaults to 5007. diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown deleted file mode 100644 index bef700af16..0000000000 --- a/source/_components/alarm_control_panel.egardia.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Egardia / Woonveilig Alarm Control Panel" -description: "Instructions on 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 allows you to integrate your [Egardia](http://www.egardia.com)/[Woonveilig](http://www.woonveilig.nl) alarm control panel in Home Assistant. -You will need to set up your [Egardia hub](/components/egardia/). diff --git a/source/_components/alarm_control_panel.envisalink.markdown b/source/_components/alarm_control_panel.envisalink.markdown deleted file mode 100644 index fe58c6fb4d..0000000000 --- a/source/_components/alarm_control_panel.envisalink.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Envisalink Alarm" -description: "Instructions on how to setup the Envisalink Alarm control panel within Home Assistant." -date: 2016-07-01 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eyezon.png -ha_category: Alarm -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - - -The `envisalink` alarm control panel platform allows you to control your [Envisalink](http://www.eyezon.com) alarms. - -The requirement is that you have setup your [Envisalink hub](/components/envisalink/). - diff --git a/source/_components/alarm_control_panel.ialarm.markdown b/source/_components/alarm_control_panel.ialarm.markdown deleted file mode 100644 index d72261c908..0000000000 --- a/source/_components/alarm_control_panel.ialarm.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Antifurto365 iAlarm Control Panel" -description: "Instructions on how to integrate iAlarms alarms into Home Assistant." -date: 2017-11-30 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: antifurto365-ialarm.png -ha_category: Alarm -ha_release: "0.60" ---- - -The `ialarm` platform provides connectivity with the [Antifurto365](https://www.antifurtocasa365.it/) iAlarm alarm systems. - -This platform supports the following services: `alarm_arm_away`, `alarm_arm_home` and `alarm_disarm`. - -To enable this, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: ialarm - host: ALARM_SYSTEM_IP - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} - host: - description: The IP address of the iAlarm device on your home network. - required: true - type: string - username: - description: Username used to sign into the iAlarm web client (should be admin by default). - required: true - type: string - password: - description: Password used to sign into the iAlarm web client. If it has a leading zero you need to put the password within quotes. - required: true - type: string - name: - description: Name of device in Home Assistant. - required: false - type: string -{% endconfiguration %} - diff --git a/source/_components/alarm_control_panel.ifttt.markdown b/source/_components/alarm_control_panel.ifttt.markdown deleted file mode 100644 index 9dcf52521f..0000000000 --- a/source/_components/alarm_control_panel.ifttt.markdown +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: page -title: "IFTTT Alarm Control Panel" -description: "Instructions on how to integrate IFTTT-controlled security systems into Home Assistant." -date: 2018-03-10 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ifttt.png -ha_category: Alarm -ha_release: 0.66 ---- - -The `ifttt` platform allows you to integrate security systems that have no open API but can be controlled through [IFTTT](https://ifttt.com/discover). - -This platform depends on the [IFTTT](/components/ifttt/) Home Assistant component. See the component's documentation to set it up. - -

    -It is important to note that this platform fully relies on IFTTT to receive updates when the security system's state changes. Therefore, this platform shows an assumed state. -

    - -To enable this, setup the required IFTTT applets as listed below and add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -ifttt: - key: YOUR_WEBHOOK_KEY - -alarm_control_panel: - - platform: ifttt - name: YOUR_ALARM_NAME - code: YOUR_ALARM_CODE - event_arm_away: YOUR_ARM_AWAY_EVENT - event_arm_home: YOUR_ARM_HOME_EVENT - event_arm_night: YOUR_ARM_NIGHT_EVENT - event_disarm: YOUR_DISARM_EVENT -``` - -

    -It is strongly discouraged to use this platform when you don't use encryption; otherwise, your API password will be send unprotected through the IFTTT Webhooks. It is adviced to [setup encryption using Let's Encrypt](https://home-assistant.io/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/). -

    - -{% linkable_title Required IFTTT applets %} - -This platform supports the services `alarm_disarm`, `alarm_arm_away`, `alarm_arm_home` and `alarm_arm_night`. For each of these services, an IFTTT webhook will be triggered. - -For this system to operate correctly, the following IFTTT applets have to be setup. Obviously, if your alarm device does not support some states, no applets have to be provided for those. -* **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** disarm the alarm system. -* **IF** Webhook event `YOUR_ARM_HOME_EVENT` is called, **THEN** set the alarm system to armed home. -* **IF** Webhook event `YOUR_ARM_NIGHT_EVENT` is called, **THEN** set the alarm system to armed away. -* **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** set the alarm system to armed night. -* **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. -* **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. -* **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. -* **IF** the alarm system state changed to armed night, **THEN** perform a Webhook `POST` web request to url `https://HASS_URL/api/services/alarm_control_panel/ifttt_push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_night"}`. - - -{% configuration %} - name: - description: The name of your Home Assistant alarm control panel. - required: false - type: string - code: - description: The code for the alarm control panel. - required: false - type: string - event_arm_away: - description: IFTTT webhook event to call when the state is set to armed away. - required: false - type: string - default: alarm_arm_away - event_arm_home: - description: IFTTT webhook event to call when the state is set to armed home. - required: false - type: string - default: alarm_arm_home - event_arm_night: - description: IFTTT webhook event to call when the state is set to armed night. - required: false - type: string - default: alarm_arm_night - event_disarm: - description: IFTTT webhook event to call when the state is set to disarmed. - required: false - type: string - default: alarm_disarm - optimistic: - description: Specify if the state will be updated by a ifttt_push_alarm_state call (false) or can be set immediately (true). - required: false - type: boolean - default: false -{% endconfiguration %} diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown deleted file mode 100644 index feeda4b768..0000000000 --- a/source/_components/alarm_control_panel.manual.markdown +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: page -title: "Manual Alarm Control Panel" -description: "Instructions on how to integrate manual alarms into Home Assistant." -date: 2015-10-13 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Alarm -ha_release: 0.7.6 ---- - - -This platform enables you to set manual alarms in Home Assistant. - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: manual -``` - -Configuration variables: - -- **name** (*Optional*): The name of the alarm. Default is "HA Alarm". -- **code** (*Optional*): If defined, specifies a code to enable or disable the alarm in the frontend. -- **code_template** (*Optional*): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables **from_state** and **to_state** identify the current and desired state. Only one of **code** and **code_template** can be specified. -- **delay_time** (*Optional*): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds. -- **pending_time** (*Optional*): The time in seconds of the pending time before effecting a state change. Default is 60 seconds. -- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds. -- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. -- **armed_custom_bypass/armed_home/armed_away/armed_night/disarmed/triggered** (*Optional*): State specific settings - - **delay_time** (*Optional*): State specific setting for **delay_time** (all states except **triggered**) - - **pending_time** (*Optional*): State specific setting for **pending_time** (all states except **disarmed**) - - **trigger_time** (*Optional*): State specific setting for **trigger_time** (all states except **triggered**) - -## {% linkable_title State machine %} - -The state machine of the manual alarm component is complex but powerful. The -transitions are timed according to three values, **delay_time**, **pending_time** -and **trigger_time**. The values in turn can come from the default configuration -variable or from a state-specific override. - -When the alarm is armed, its state first goes to **pending** for a number -of seconds equal to the destination state's **pending_time**, and then -transitions to one of the "armed" states. Note that **code_template** -never receives "pending" in the **to_state** variable; instead, -**to_state** contains the state which the user has requested. However, -**from_state** *can* contain "pending". - -When the alarm is triggered, its state goes to **pending** for a number of -seconds equal to the previous state's **delay_time** plus the triggered -state's **pending_time**. Then the alarm transitions to the "triggered" -states. The code is never checked when triggering the alarm, so the -**to_state** variable of **code_template** cannot ever contain "triggered" -either; again, **from_state** *can* contain "triggered". - -The alarm remains in the "triggered" state for a number of seconds equal to the -previous state's **trigger_time**. Then, depending on **disarm_after_trigger**, -it goes back to either the previous state or **disarmed**. If the previous -state's **trigger_time** is zero, the transition to "triggered" is entirely -blocked and the alarm remains in the armed state. - -Each of the settings is useful in different scenarios. **pending_time** gives -you some time to leave the building (for "armed" states) or to disarm the alarm -(for the "triggered" state). - -**delay_time** can also be used to allow some time to disarm the alarm, but with -more flexibility. For example, you could specify a delay time for the -"armed away" state, in order to avoid triggering the alarm while the -garage door opens, but not for the "armed home" state. - -**trigger_time** is useful to disable the alarm when disarmed, but it can also -be used for example to sound the siren for a shorter time during the night. - -In the config example below: - -- the disarmed state never triggers the alarm; - -- the armed_home state will leave no time to leave the building or disarm the alarm; - -- while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back. - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: manual - name: Home Alarm - code: 1234 - pending_time: 30 - delay_time: 20 - trigger_time: 4 - disarmed: - trigger_time: 0 - armed_home: - pending_time: 0 - delay_time: 0 -``` - -## {% linkable_title Examples %} - -In this section, you find some real-life examples of how to use this panel. - -### {% linkable_title Sensors %} - -Using sensors to trigger the alarm. - -```yaml -automation: -- alias: 'Trigger alarm while armed away' - trigger: - - platform: state - entity_id: sensor.pir1 - to: 'active' - - platform: state - entity_id: sensor.pir2 - to: 'active' - - platform: state - entity_id: sensor.door - to: 'open' - - platform: state - entity_id: sensor.window - to: 'open' - condition: - - condition: state - entity_id: alarm_control_panel.ha_alarm - state: armed_away - action: - 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 deleted file mode 100644 index 5ceaa64e3a..0000000000 --- a/source/_components/alarm_control_panel.manual_mqtt.markdown +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: page -title: "Manual Alarm Control Panel with MQTT Support" -description: "Instructions on 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' - -To use your panel in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: manual_mqtt - state_topic: home/alarm - command_topic: home/alarm/set -``` - -Configuration variables: - -The following configuration variables from the base manual alarm platform are available: - -- **name** (*Optional*): The name of the alarm. Default is "HA Alarm". -- **code** (*Optional*): If defined, specifies a code to enable or disable the alarm in the frontend. This code is not required for MQTT interactions. -- **code_template** (*Optional*): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables **from_state** and **to_state** identify the current and desired state. Only one of **code** and **code_template** can be specified. -- **delay_time** (*Optional*): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds. -- **pending_time** (*Optional*): The time in seconds of the pending time before effecting a state change. Default is 60 seconds. -- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds. -- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. -- **armed_home/armed_away/armed_night/disarmed/triggered** (*Optional*): State specific settings - - **delay_time** (*Optional*): State specific setting for **delay_time** (all states except **triggered**) - - **pending_time** (*Optional*): State specific setting for **pending_time** (all states except **disarmed**) - - **trigger_time** (*Optional*): State specific setting for **trigger_time** (all states except **triggered**) - -See the documentation for the [manual alarm platform](/components/alarm_control_panel.manual/) for a description. - -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 configuration example below: - -- The disarmed state never triggers the alarm. -- The armed_home state will leave no time to leave the building or disarm the alarm. -- While other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back. - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: manual_mqtt - state_topic: home/alarm - command_topic: home/alarm/set - pending_time: 30 - delay_time: 20 - trigger_time: 4 - disarmed: - trigger_time: 0 - armed_home: - pending_time: 0 - delay_time: 0 -``` - -## {% 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.markdown b/source/_components/alarm_control_panel.markdown deleted file mode 100644 index bdc1adf398..0000000000 --- a/source/_components/alarm_control_panel.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Alarm Control Panels" -description: "Instructions on how to integrate Alarm Control Panels into Home Assistant." -date: 2015-10-13 19:10 -sidebar: true -comments: false -sharing: true -footer: true ---- - - -Home Assistant can give you an interface with is similar to a classic alarm system. There are several panels supported: - -- [Alarm.com](/components/alarm_control_panel.alarmdotcom/) -- [Manual](/components/alarm_control_panel.manual/) -- [MQTT](/components/alarm_control_panel.mqtt/) -- [Verisure](/components/verisure/) - diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown deleted file mode 100644 index cb93a1b595..0000000000 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: page -title: "MQTT Alarm Control Panel" -description: "Instructions on how to integrate MQTT capable Alarm Panels into Home Assistant." -date: 2015-09-14 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Alarm -ha_release: 0.7.4 -ha_iot_class: depends ---- - -The `mqtt` alarm panel platform enables the possibility to control MQTT capable alarm panels. The Alarm icon will change state after receiving a new state from `state_topic`. If these messages are published with *RETAIN* flag, the MQTT alarm panel will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state will be `unknown`. - -The component will accept the following states from your Alarm Panel (in lower case): - -- 'disarmed' -- 'armed_home' -- 'armed_away' -- 'pending' -- 'triggered' - -The component can control your Alarm Panel by publishing to the `command_topic` when a user interacts with the Home Assistant frontend. - -To enable this platform, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: mqtt - state_topic: "home/alarm" - command_topic: "home/alarm/set" -``` - -{% configuration %} -name: - description: The name of the alarm. - required: false - type: string - default: MQTT Alarm -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: true - type: string -command_topic: - description: The MQTT topic to publish commands to change the alarm state. - required: true - type: string -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -payload_disarm: - description: The payload to disarm your Alarm Panel. - required: false - type: string - default: DISARM -payload_arm_home: - description: The payload to set armed-home mode on your Alarm Panel. - required: false - type: string - default: ARM_HOME -payload_arm_away: - description: The payload to set armed-away mode on your Alarm Panel. - required: false - type: string - default: ARM_AWAY -code: - description: If defined, specifies a code to enable or disable the alarm in the frontend. - required: false - type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} diff --git a/source/_components/alarm_control_panel.nx584.markdown b/source/_components/alarm_control_panel.nx584.markdown deleted file mode 100644 index a98ad9050a..0000000000 --- a/source/_components/alarm_control_panel.nx584.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "NX584 Alarm Control Panel" -description: "Instructions on how to integrate NX584 into Home Assistant." -date: 2016-02-07 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: networx.png -ha_category: Alarm -ha_release: 0.13 ---- - -The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](http://github.com/kk7ds/pynx584) which is required for this to work. - -To enable this, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: nx584 -``` - -Configuration variables: - -- **host** (*Optional*): The host where the nx584 server process is running. Defaults to `localhost`. -- **port** (*Optional*): The port where the Alarm panel is listening. Defaults to `5007`. - diff --git a/source/_components/alarm_control_panel.satel_integra.markdown b/source/_components/alarm_control_panel.satel_integra.markdown deleted file mode 100644 index a5f8915d08..0000000000 --- a/source/_components/alarm_control_panel.satel_integra.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Satel Integra Alarm Control Panel" -description: "Instructions on 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.simplisafe.markdown b/source/_components/alarm_control_panel.simplisafe.markdown deleted file mode 100644 index ac5c14183a..0000000000 --- a/source/_components/alarm_control_panel.simplisafe.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "SimpliSafe Alarm Control Panel" -description: "Instructions on how to integrate SimpliSafe into Home Assistant." -date: 2016-07-02 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: simplisafe.png -ha_release: 0.24 -ha_category: Alarm ---- - -The `simplisafe` platform enables the ability to control a SimpliSafe control panel. [simplisafe.com](http://simplisafe.com/). - -To enable this, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - platform: simplisafe - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **username** (*Required*): Username for the SimpliSafe account. -- **password** (*Required*): Password for SimpliSafe account. -- **name** (*Optional*): The name of the alarm. Default is the SimpliSafe alarm id. -- **code** (*Optional*): Specifies a code to enable or disable the alarm in the frontend. - diff --git a/source/_components/alarm_control_panel.spc.markdown b/source/_components/alarm_control_panel.spc.markdown deleted file mode 100644 index 5cc4025f00..0000000000 --- a/source/_components/alarm_control_panel.spc.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Vanderbilt SPC Alarm" -description: "Instructions on how to setup the Vanderbilt SPC Alarm control panel within Home Assistant." -date: 2017-05-18 22:01 -sidebar: true -comments: false -sharing: true -footer: true -logo: vanderbilt_spc.png -ha_category: Alarm -ha_release: 0.47 -ha_iot_class: "Local Push" ---- - - -The `spc` alarm control panel platform allows you to control your [Vanderbilt SPC](http://www.spc-intruder-detection.com/ssp-spc/) alarms. - -The requirement is that you have setup your [SPC hub](/components/spc/). - -The `changed_by` attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in [automation](/getting-started/automation/). - -```yaml -automation: - - alias: Alarm status changed - trigger: - - platform: state - entity_id: alarm_control_panel.alarm_1 - action: - - service: notify.notify - data_template: - message: > - {% raw %}Alarm changed from {{ trigger.from_state.state }} - to {{ trigger.to_state.state }} - by {{ trigger.to_state.attributes.changed_by }}{% endraw %} -``` diff --git a/source/_components/alarm_control_panel.totalconnect.markdown b/source/_components/alarm_control_panel.totalconnect.markdown deleted file mode 100644 index 821d38075e..0000000000 --- a/source/_components/alarm_control_panel.totalconnect.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Honeywell TotalConnect Alarm Control Panel" -description: "Instructions on how to integrate TotalConnect alarms into Home Assistant." -date: 2017-04-02 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: honeywell-tc.png -ha_category: Alarm -ha_release: 0.42 ---- - -The `totalconnect` platform provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies. - -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`: - -```yaml -# Example configuration.yaml entry -alarm_control_panel: - - platform: totalconnect - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **name** (*Optional*): Name of device in Home Assistant. -- **username** (*Required*): Username used to sign into the TotalConnect app/web client. -- **password** (*Required*): Password used to sign into the TotalConnect app/web client. - diff --git a/source/_components/alarm_control_panel.verisure.markdown b/source/_components/alarm_control_panel.verisure.markdown deleted file mode 100644 index 669de86761..0000000000 --- a/source/_components/alarm_control_panel.verisure.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Verisure Alarm" -description: "Instructions on how to setup the Verisure Alarm control panel within Home Assistant." -date: 2016-02-15 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: verisure.png -ha_category: Alarm -ha_release: 0.7.3 -ha_iot_class: "Cloud Polling" ---- - - -The Verisure alarm control panel platform allows you to control your [Verisure](https://www.verisure.com/) Alarms. - -The requirement is that you have setup your [Verisure hub](/components/verisure/). - -The `changed_by` attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in [automation](/getting-started/automation/). - -```yaml -automation: - - alias: Alarm status changed - trigger: - - platform: state - entity_id: alarm_control_panel.alarm_1 - action: - - service: notify.notify - data_template: - message: > - {% raw %}Alarm changed from {{ trigger.from_state.state }} - to {{ trigger.to_state.state }} - by {{ trigger.to_state.attributes.changed_by }}{% endraw %} -``` diff --git a/source/_components/alarm_control_panel.wink.markdown b/source/_components/alarm_control_panel.wink.markdown deleted file mode 100644 index e6fee5cdb5..0000000000 --- a/source/_components/alarm_control_panel.wink.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Wink Alarm" -description: "Instructions on how to setup the Wink alarms within Home Assistant." -date: 2017-01-14 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Alarm -ha_release: 0.37 ---- - -No Wink hub is required to support these devices. - - -The Wink alarm platform allows you to control your [Wink](http://www.wink.com/) Canary all-in-one security camera. - -The requirement is that you have setup [Wink](/components/wink/). - - -### {% linkable_title Supported devices %} - -- Canary all-in-one security camera - - -

    -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 deleted file mode 100644 index 8cfc24d215..0000000000 --- a/source/_components/alarmdecoder.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "AlarmDecoder Alarm" -description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device." -date: 2017-04-02 13:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: alarmdecoder.png -ha_category: Hub -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 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. - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](/components/binary_sensor.alarmdecoder/): Reports on zone status -- [Sensor](/components/sensor.alarmdecoder/): Emulates a keypad display -- [Alarm Control Panel](/components/alarm_control_panel.alarmdecoder/): Reports on alarm status, and can be used to arm/disarm the system - -This is a fully event-based component. Any event sent by the AlarmDecoder device will be immediately reflected within Home Assistant. - -An `alarmdecoder` section must be present in the `configuration.yaml` file and contain the following options as required: - -```yaml -# Example configuration.yaml entry -alarmdecoder: - device: - type: socket - host: 192.168.1.20 - port: 10000 - panel_display: On - zones: - 01: - name: 'Smoke Detector' - type: 'smoke' - rfid: '0123456' - 02: - name: 'Front Door' - type: 'opening' -``` - -Configuration variables: - -- **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` -- **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.* -- **rfid** (*Optional*): The RF serial-number associated with RF zones. Providing this field allows Home Assistant to associate raw sensor data to a given zone, allowing direct monitoring of the state, battery, and supervision status. diff --git a/source/_components/alert.markdown b/source/_components/alert.markdown deleted file mode 100644 index 4c59259cde..0000000000 --- a/source/_components/alert.markdown +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: page -title: "Alert" -description: "Instructions on how to setup automatic alerts within Home Assistant." -date: 2017-01-15 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -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 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 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 %} - -The `alert` component makes use of any of the `notifications` components. To setup the `alert` component, first, you must setup a `notification` component. Then, add the following to your configuration file: - -```yaml -# Example configuration.yaml entry -alert: - garage_door: - name: Garage is open - done_message: Garage is closed - entity_id: input_boolean.garage_door - state: 'on' - repeat: 30 - can_acknowledge: True - skip_first: True - notifiers: - - ryans_phone - - kristens_phone -``` -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 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. - -In this example, the garage door status (`input_boolean.garage_door`) is watched and this alert will be triggered when its status is equal to `on`. This indicates that the door has been opened. Because the `skip_first` option was set to `True`, the first notification will not be delivered immediately. However, every 30 minutes, a notification will be delivered until either `input_boolean.garage_door` no longer has a state of `on` or until the alert is acknowledged using the Home Assistant frontend. - -For notifiers that require other parameters (such as `twilio_sms` which requires you specify a `target` parameter when sending the notification), you can use the `group` notification to wrap them for an alert. Simply create a `group` notification type with a single notification member (such as `twilio_sms`) specifying the required parameters other than `message` provided by the `alert` component: - -```yaml -- platform: group - name: john_phone_sms - services: - - service: twilio_sms - data: - target: !secret john_phone -``` - -```yaml -freshwater_temp_alert: - name: "Warning: I have detected a problem with the freshwater tank temperature" - entity_id: binary_sensor.freshwater_temperature_status - state: 'on' - repeat: 5 - can_acknowledge: true - skip_first: false - notifiers: - - john_phone_sms -``` - -### {% linkable_title Complex Alert Criteria %} - -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: - - platform: template - sensors: - motion_battery_low: - value_template: {% raw %}'{{ states.sensor.motion.attributes.battery < 15 }}'{% endraw %} - friendly_name: 'Motion battery is low' - -alert: - motion_battery: - name: Motion Battery is Low - entity_id: binary_sensor.motion_battery_low - repeat: 30 - notifiers: - - ryans_phone - - kristens_phone -``` - -This example will begin firing as soon as the entity `sensor.motion`'s `battery` attribute falls below 15. It will continue to fire until the battery attribute raises above 15 or the alert is acknowledged on the frontend. - -### {% linkable_title Dynamic Notification Delay Times %} - -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 -alert: - garage_door: - name: Garage is open - entity_id: input_boolean.garage_door - state: 'on' # Optional, 'on' is the default value - repeat: - - 15 - - 30 - - 60 - can_acknowledge: True # Optional, default is True - skip_first: True # Optional, false is the default - notifiers: - - ryans_phone - - kristens_phone -``` - -Now the first message will be sent after a 15 minute delay, the second will be sent 30 minutes after that, and a 60 minute delay will fall between every following notification. For example, if the garage door opens at 2:00, a notification will be sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes. diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown deleted file mode 100644 index 23c8bc9c86..0000000000 --- a/source/_components/alexa.markdown +++ /dev/null @@ -1,388 +0,0 @@ ---- -layout: page -title: "Alexa / Amazon Echo" -description: "Instructions on how to connect Alexa/Amazon Echo to Home Assistant." -date: 2015-12-13 13:02 -sidebar: true -comments: false -sharing: true -footer: true -logo: amazon-echo.png -ha_category: Voice -featured: true -ha_release: '0.10' ---- - -

    - Use [Home Assistant Cloud](/components/cloud/) to integrate with Alexa without any effort. -

    - -There are a few ways that you can use Amazon Echo and Home Assistant together. - -- [Build custom commands to use](#i-want-to-build-custom-commands-to-use-with-echo) -- [Create a new Flash Briefing source](#flash-briefing-skills) -- [Use the Smart Home API to control lights, etc](#smart-home) -- 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 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. - -
    - -
    - -### {% 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. 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]: /blog/2015/12/13/setup-encryption-using-lets-encrypt/ - -To get started with Alexa skills: - - - Log in to [Amazon developer console][amazon-dev-console] - - Click the Alexa button at the top of the console - - Click the yellow "Add a new skill" button in the top right - - Skill Type: Custom Interaction Model (default) - - Name: Home Assistant - - Invocation name: home assistant (or be creative, up to you) - - Version: 1.0 - - Endpoint: - - https - - `https://YOUR_HOST/api/alexa?api_password=YOUR_API_PASSWORD` - -You can use this [specially sized Home Assistant logo][large-icon] as the large icon and [this one][small-icon] as the small one. - -### {% linkable_title Configuring your Amazon Alexa skill %} - -Alexa works based on intents. Each intent has a name and variable slots. For example, a `LocateIntent` with a slot that contains a `User`. Example intent schema: - -```json -{ - "intents": [ - { - "intent": "LocateIntent", - "slots": [ - { - "name": "User", - "type": "AMAZON.US_FIRST_NAME" - }] - }, - { - "intent": "WhereAreWeIntent", - "slots": [] - } - ] -} -``` - -To bind these intents to sentences said by users you define utterances. Example utterances can look like this: - -```text -LocateIntent Where is {User} -LocateIntent Where's {User} -LocateIntent Where {User} is -LocateIntent Where did {User} go - -WhereAreWeIntent where we are -``` - -This means that we can now ask Alexa things like: - - - Alexa, ask Home Assistant where Paul is - - Alexa, ask Home Assistant where we are - -## {% linkable_title Configuring Home Assistant %} - -When activated, the Alexa component will have Home Assistant's native intent support handle the incoming intents. If you want to run actions based on intents, use the [`intent_script`](/components/intent_script) component. - -To enable Alexa add the following entry to your `configuration.yaml` file: - -```yaml -alexa: -``` - -### {% 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: - -```json -{ - "intent": "ActivateSceneIntent", - "slots": - [ - { - "name" : "Scene", - "type" : "Scenes" - } - ] -} -``` - -Then create a custom slot type called `Scenes` listing every scene you want to control: - -

    - -Custom slot type for scene support. -

    - -The names must exactly match the scene names (minus underscores - amazon discards them anyway and we later map them back in with the template). - -In the new Alexa Skills Kit, you can also create synonyms for slot type values, which can be used in place of the base value in utterances. Synonyms will be replaced with their associated slot value in the intent request sent to the Alexa API endpoint, but only if there are not multiple synonym matches. Otherwise, the value of the synonym that was spoken will be used. - -

    - -Custom slot values with synonyms. -

    - -Add a sample utterance: - -```text -ActivateSceneIntent activate {Scene} -``` - -Then add the intent to your intent_script section in your HA config file: - -```yaml -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 Home Assistant to activate ` and Alexa will activate that scene for you. - -### {% linkable_title Adding Scripts %} - -We can easily extend the above idea to work with scripts as well. As before, add an intent for scripts: - -```json -{ - "intent": "RunScriptIntent", - "slots": - [ - { - "name" : "Script", - "type" : "Scripts" - } - ] -} -``` - -Create a custom slot type called `Scripts` listing every script you want to run: - -

    - -Custom slot type for script support. -

    - -Add a sample utterance: - -```text -RunScriptIntent run {Script} -``` - -Then add the intent to your intent_script section in your HA config file: - -```yaml -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 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 %} - -In the examples above, we told Alexa to say `OK` when she successfully completed the task. This is effective but a little dull! We can again use [templates] to spice things up a little. - -First create a file called `alexa_confirm.yaml` with something like the following in it (go on, be creative!): - -```text -{% raw %} > - {{ [ - "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" - ] | random }} {% endraw %} -``` - -Then, wherever you would put some simple text for a response like `OK`, replace it with a reference to the file so that: - -``` -text: OK -``` - -becomes: - -``` -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. - -## {% 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. - -### {% linkable_title Configuring a Flash Briefing skill in Home Assistant %} - -You can use [templates] for the `title`, `audio`, `text` and `display_url` configuration parameters. - -Here's an example configuration of a Flash briefing skill that will tell you who is at home: - -```yaml -{% raw %}# Example configuration.yaml entry -alexa: - flash_briefings: - whoishome: - - title: Who's at home? - 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 %}{% 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. - -Please refer to the [Amazon documentation][flash-briefing-api-docs] for more information about allowed configuration parameters and formats. - -### {% linkable_title Configuring your Flash Briefing skill %} - -- Log in to [Amazon developer console][amazon-dev-console] -- Click the Alexa navigation tab at the top of the console -- Click on the "Get Started >" button under "Alexa Skills Kit" -- Click the yellow "Add a new skill" button in the top right - - Skill Information - - For Skill Type select "Flash Briefing Skill API" - - You can enter whatever name you want - - Hit "Next" - - Interaction Model - - Nothing to do here - - Configuration - - Add new feed - - For URL, enter `https://YOUR_HOST/api/alexa/flash_briefings/BRIEFING_ID?api_password=YOUR_API_PASSWORD` where `BRIEFING_ID` is the key you entered in your configuration (such as `whoishome` in the above example). **NOTE:** Do not use a non-standard http or https port, AWS will not connect to it. - - You can use this [specially sized Home Assistant logo][large-icon] as the Feed Icon - - 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. -- To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Settings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". - - -## {% linkable_title Smart Home %} - -While the Skills API described above allows for arbitrary intents, all -utterances must begin with "Alexa, tell $invocation_name ..." - -The [Emulated Hue component][emulated-hue-component] provides a simpler -interface such as, "Alexa, turn on the kitchen light". However it has some -limitations since everything looks like a light bulb. - -Amazon provides a Smart Home API for richer home automation control. It takes -considerable effort to configure. The easy solution is to use -[Home Assistant Cloud](/components/cloud/). - -If you don't want to use Home Assistant Cloud and are willing to do the -integration work yourself, Home Assistant can expose an HTTP API which makes -the integration work easier. Example configuration: - -```yaml -alexa: - smart_home: - filter: - include_entities: - - light.kitchen - - light.kitchen_left - include_domains: - - switch - exclude_entities: - - switch.outside - entity_config: - light.kitchen: - name: Custom Name for Alexa - description: The light in the kitchen - switch.stairs: - display_categories: LIGHT -``` - -This exposes an HTTP POST endpoint at `http://your_hass_ip/api/alexa/smart_home` -which accepts and returns messages conforming to the -[Smart Home v3 payload](https://developer.amazon.com/docs/smarthome/smart-home-skill-api-message-reference.html). -You must then create an Amazon developer account with an Alexa skill and Lambda -function to integrate this endpoint. See -[Haaska](https://github.com/mike-grant/haaska) for an example. - -[amazon-dev-console]: https://developer.amazon.com -[flash-briefing-api]: https://developer.amazon.com/alexa-skills-kit/flash-briefing -[flash-briefing-api-docs]: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/flash-briefing-skill-api-feed-reference -[large-icon]: /images/components/alexa/alexa-512x512.png -[small-icon]: /images/components/alexa/alexa-108x108.png -[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 deleted file mode 100644 index 74c76e70dd..0000000000 --- a/source/_components/amcrest.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "Amcrest IP Camera" -description: "Instructions on 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` camera platform allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. - -## {% linkable_title Configuration %} - -To enable your camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -amcrest: - - host: IP_ADDRESS_CAMERA_1 - username: YOUR_USERNAME - password: YOUR_PASSWORD - sensors: - - motion_detector - - sdcard - switches: - - motion_detection - - motion_recording - - - host: IP_ADDRESS_CAMERA_2 - username: YOUR_USERNAME - password: YOUR_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 -- **switches** array (*Optional*): Switches to display in the frontend. By default, *none* of the switches are shown. The following switches can be monitored. - - **motion_detection**: Enable/disable motion detection setting - - **motion_recording**: Enable/disable recording on motion detection setting - -**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](/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 deleted file mode 100644 index c616b33a35..0000000000 --- a/source/_components/android_ip_webcam.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: page -title: "Android IP Webcam" -description: "Connect Android devices as an IP webcam to Home Assistant" -date: 2017-03-10 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: android_ip_webcam.png -ha_category: Hub -ha_release: "0.40" -ha_iot_class: "Local Polling" ---- - -The `android_ip_webcam` component turns an Android phone into a network camera with multiple viewing options. - -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: - -```yaml -# Example configuration.yaml entry -android_ip_webcam: - - host: 192.168.1.10 -``` - -Configuration variables: - -- **host** (*Required*): The IP Address of the phone on the network. -- **port** (*Optional*): Default is set 8080. The port the IP Webcam listens on. -- **name** (*Optional*): Override the name of the phone. -- **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 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 %} - -Sensors: - -- audio_connections -- battery_level -- battery_temp -- battery_voltage -- light -- motion -- pressure -- proximity -- sound -- video_connections - -Settings (Switches): - -- exposure_lock -- ffc -- focus -- gps_active -- night_vision -- overlay -- torch -- 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 - - proximity - - sound - - video_connections - 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/apcupsd.markdown b/source/_components/apcupsd.markdown deleted file mode 100644 index fd25d00d0d..0000000000 --- a/source/_components/apcupsd.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "APCUPSd" -description: "Instructions on how to integrate APCUPSd status with Home Assistant." -date: 2016-02-10 17:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: apcupsd.png -ha_category: Hub -ha_release: 0.13 ---- - -[APCUPSd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) is enabled on the APC device. - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -apcupsd: -``` - -Configuration variables: - -- **host** (*Optional*): The hostname/IP address on which the APCUPSd NIS is being served. Defaults to `localhost`. -- **port** (*Optional*): The port on which the APCUPSd NIS is listening. Defaults to `3551`. - diff --git a/source/_components/api.markdown b/source/_components/api.markdown deleted file mode 100644 index ba1097738e..0000000000 --- a/source/_components/api.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "API" -description: "Instructions on how to setup the RESTful API within Home Assistant." -date: 2018-01-21 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: "Other" ---- - -The `api` component exposes a RESTful API and allows one to interact with a Home Assistant instance that is running headless. This component depends on the [`http` component](/components/http/). - -

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

    - -```yaml -# Example configuration.yaml entry -api: -``` - -For details to use the API, please refer to the [REST API](/developers/rest_api/) or the [Python REST API documentation](/developers/python_api/) in the "Developer" section. diff --git a/source/_components/apple_tv.markdown b/source/_components/apple_tv.markdown deleted file mode 100644 index 93d192a00c..0000000000 --- a/source/_components/apple_tv.markdown +++ /dev/null @@ -1,145 +0,0 @@ ---- -layout: page -title: "Apple TV" -description: "Instructions on 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 %} - -Make sure Home Sharing is enabled on the Apple TV. - -To scan for devices and determine the `login_id`, 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 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 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 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 deleted file mode 100644 index ca16dd32b7..0000000000 --- a/source/_components/arduino.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Arduino" -description: "Instructions on how to setup an Arduino boards within Home Assistant." -date: 2015-06-27 10:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: arduino.png -ha_category: DIY -featured: true -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 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. - -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. - -To integrate an Arduino boards with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -arduino: - port: /dev/ttyACM0 -``` - -{% configuration %} -port: - description: 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*`. - required: true - type: string -{% endconfiguration %} - -The exact number can be determined with the command shown below. - -```bash -$ 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 (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. -

    - -Add the user who is used to run Home Assistant to the groups to allow access to the serial port. - -```bash -$ sudo usermod -a -G dialout,lock $USER -``` - diff --git a/source/_components/arlo.markdown b/source/_components/arlo.markdown deleted file mode 100644 index e82ade68d1..0000000000 --- a/source/_components/arlo.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "Arlo" -description: "Instructions on how to integrate your Netgear Arlo cameras within Home Assistant." -date: 2017-05-30 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: arlo.png -ha_category: Hub -ha_release: 0.46 -ha_iot_class: "Cloud Polling" ---- - -The `arlo` implementation allows you to integrate your [Arlo](https://arlo.netgear.com/) devices in Home Assistant. - -## {% linkable_title Configuration %} - -To enable device linked in your [Arlo](https://arlo.netgear.com/) account, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -arlo: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username for accessing your Arlo account. - required: true - type: string -password: - description: The password for accessing your Arlo account. - required: true - type: string -{% endconfiguration %} - -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/) 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 deleted file mode 100644 index 2361dfe0c9..0000000000 --- a/source/_components/asterisk_mbox.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Asterisk Voicemail" -description: "Instructions on how to integrate your existing Asterisk voicemail within Home Assistant." -date: 2017-06-30 18:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: asterisk.png -ha_category: Other -ha_version: 0.51 -ha_iot_class: "Local Push" ---- - -The `asterisk_mbox `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/august.markdown b/source/_components/august.markdown deleted file mode 100644 index 818002e14c..0000000000 --- a/source/_components/august.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "August" -description: "Instructions on how to integrate your August devices into Home Assistant." -date: 2018-02-17 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: august.png -ha_category: Hub -ha_release: "0.64" -ha_iot_class: "Cloud Polling" ---- - -The `august` component allows you to integrate your [August](http://august.com) devices in Home Assistant. Currently this component supports August Lock and Doorbell. - -

    -August Lock 2nd Gen will need either August Connect or Doorbell to connect to Home Assistant. -

    - -## {% linkable_title Configuration %} - -You will need your August login information (username (either phone# or email), and password) to use this module. - -To set it up, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -august: - login_method: phone - username: "+16041234567" - password: YOUR_PASSWORD -``` - -{% configuration %} -login_method: - description: Method to login to your August account, either "email" or "phone". A verification code will be sent to your email or phone during setup. - required: true - type: string -username: - description: The username for accessing your August account. This depends on your login_method, if login_method is email, this will be your email of the account. Otherwise, this will be your phone number. - required: true - type: string -password: - description: The password for accessing your August account. - required: true - type: string -timeout: - description: Timeout to wait for connections. - required: false - type: int - default: 10 -{% endconfiguration %} - -Once Home Assistant is started, a configurator will pop up asking you to enter verification code that is sent to your phone number or email. diff --git a/source/_components/automation.markdown b/source/_components/automation.markdown deleted file mode 100644 index 658c0ebc63..0000000000 --- a/source/_components/automation.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Automation" -description: "Instructions on how to setup automation within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Automation ---- - -Please see the [docs section](/docs/automation/) for in-depth documentation on how to use the automation component. - -Starting with 0.28 your automation rules can be controlled with the frontend. - -

    - -

    - -This allows one to reload the automation without restarting Home Assistant itself. If you don't want to see the automation rule in your frontend use `hide_entity: True` to hide it. You can also use `initial_state: 'off'` so that the automation is not automatically turned on after a Home Assistant reboot. - -```yaml -automation: - - alias: Door alarm - hide_entity: True - initial_state: 'off' - trigger: - - platform: state - ... -``` diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown deleted file mode 100644 index 6f9a2cc482..0000000000 --- a/source/_components/axis.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: page -title: "Axis" -description: "Instructions on how to setup devices from Axis Communications within Home Assistant." -date: 2017-04-30 23:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: axis.png -ha_category: Hub -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. - -Home Assistant will automatically discover their presence on your network. - -You can also manually configure your devices by adding the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -axis: - m1065lw: - host: IP ADDRESS - include: - - camera -``` - -Configuration variables: - -## {% 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: - -```yaml -# Example configuration.yaml entry -axis: - m1065lw: - host: IP ADDRESS - username: USERNAME - password: PASSWORD - include: - - camera - - motion - - pir - - sound - - daynight - trigger_time: 0 - location: köket -``` - -

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

    - -## {% 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/bbb_gpio.markdown b/source/_components/bbb_gpio.markdown deleted file mode 100644 index 785aec4f2d..0000000000 --- a/source/_components/bbb_gpio.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "BeagleBone Black GPIO" -description: "Instructions on how to integrate the GPIO capability of a BeagleBone Black into Home Assistant." -date: 2017-01-14 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beaglebone-black.png -ha_category: DIY -ha_release: 0.36 -ha_iot_class: "Local Push" ---- - -The `bbb_gpio` component is the base for all [BeagleBone Black](https://beagleboard.org/black) related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. - diff --git a/source/_components/binary_sensor.abode.markdown b/source/_components/binary_sensor.abode.markdown deleted file mode 100644 index def5cabb19..0000000000 --- a/source/_components/binary_sensor.abode.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Abode Binary Sensor" -description: "Instructions on 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.ads.markdown b/source/_components/binary_sensor.ads.markdown deleted file mode 100644 index 753858d973..0000000000 --- a/source/_components/binary_sensor.ads.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "ADS Binary Sensor" -description: "Instructions on how to set up ADS binary sensors within Home Assistant." -date: 2017-10-25 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beckhoff.png -ha_category: Binary Sensor -ha_release: "0.60" -ha_iot_class: "Local Push" ---- - -The `ads` binary sensor platform can be used to monitor a boolean value on your ADS device. - -To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` -file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ads - adsvar: .boolean1 -``` - -{% configuration %} - adsvar: - required: true - description: The name of the variable which you want to access on the ADS device. - type: string - name: - required: false - description: An identifier for the light in the frontend. - type: string - device_class: - required: false - description: The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - type: string -{% endconfiguration %} diff --git a/source/_components/binary_sensor.alarmdecoder.markdown b/source/_components/binary_sensor.alarmdecoder.markdown deleted file mode 100644 index 92cfa7fa4e..0000000000 --- a/source/_components/binary_sensor.alarmdecoder.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "AlarmDecoder Binary Sensor" -description: "Instructions on how to integrate AlarmDecoder binary sensors into Home Assistant." -date: 2017-04-02 13:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: alarmdecoder.png -ha_release: 0.43 -ha_category: Binary Sensor -ha_iot_class: "Local Push" ---- - -The `alarmdecoder` alarm control panel platform allows you to control your [AlarmDecoder](https://www.alarmdecoder.com) alarms. - -Check the [type/class](/components/binary_sensor/) list for a possible visualization of your zone. - -The requirement is that you have setup your [AlarmDecoder hub](/components/alarmdecoder/). diff --git a/source/_components/binary_sensor.android_ip_webcam.markdown b/source/_components/binary_sensor.android_ip_webcam.markdown deleted file mode 100644 index 0c5c2abbe8..0000000000 --- a/source/_components/binary_sensor.android_ip_webcam.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Android IP Webcam Binary Sensor" -description: "Instructions on how to integrate binary motion sensors for Android IP webcam within Home Assistant." -date: 2017-03-10 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: android_ip_webcam.png -ha_category: Binary Sensor -ha_release: "0.40" -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.apcupsd.markdown b/source/_components/binary_sensor.apcupsd.markdown deleted file mode 100644 index 6c599b75b1..0000000000 --- a/source/_components/binary_sensor.apcupsd.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: APCUPSd Binary Sensor -description: "Instructions on how to set up an APCUPSd binary sensor within Home Assistant." -date: 2016-02-10 18:47 -sidebar: true -comments: false -sharing: true -footer: true -logo: apcupsd.png -ha_category: System Monitor -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - -In addition to the [APCUPSd Sensor](/components/sensor.apcupsd/) devices, you may also create a device which is simply "on" when the UPS status is online and "off" at all other times. - -To enable this sensor, you first have to set up [apcupsd](/components/apcupsd/), and add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: apcupsd -``` - -Configuration variables: - -- **name** (*Optional*): Name to use in the front end. diff --git a/source/_components/binary_sensor.arest.markdown b/source/_components/binary_sensor.arest.markdown deleted file mode 100644 index d18a2d321a..0000000000 --- a/source/_components/binary_sensor.arest.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "aREST Binary Sensor" -description: "Instructions on how to integrate aREST binary sensors within Home Assistant." -date: 2015-11-20 18:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: arest.png -ha_category: Binary Sensor -ha_iot_class: "Local Polling" -ha_release: 0.9 ---- - - -The `arest` binary sensor platform allows you to get all data from your devices (like Arduinos with an ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. - -To use your aREST binary sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: arest - resource: http://IP_ADDRESS - pin: 8 -``` - -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 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`. - -```bash -$ curl -X GET http://192.168.0.5/digital/9 -{"return_value": 0, "id": "office1", "name": "Office", "connected": true} -``` - -An example for Pin 9 inspired by the command above could look like this: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: arest - resource: http://192.168.0.5/digital/9 - pin: 9 - name: Office -``` - -

    -This sensor is not suitable for fast state changes because there is a high possibility that the change took place between two update cycle. -

    diff --git a/source/_components/binary_sensor.august.markdown b/source/_components/binary_sensor.august.markdown deleted file mode 100644 index be793af19b..0000000000 --- a/source/_components/binary_sensor.august.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "August Binary Sensor" -description: "Instructions on how to integrate your August devices into Home Assistant." -date: 2018-02-17 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: august.png -ha_category: Binary Sensor -ha_release: "0.64" -ha_iot_class: "Cloud Polling" ---- - -To get your [August](http://august.com) doorbell binary sensors working within Home Assistant, please follow the instructions for the general [August component](/components/august/). - -If you have August Doorbell, once you have enabled the [August component](/components/august/), you should see following sensors: - -* Doorbell ding sensor -* Doorbell motion sensor -* Doorbell online sensor diff --git a/source/_components/binary_sensor.aurora.markdown b/source/_components/binary_sensor.aurora.markdown deleted file mode 100644 index 08c485a37c..0000000000 --- a/source/_components/binary_sensor.aurora.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Aurora sensor" -description: "Know when auroras might be visible at your location" -date: 2017-02-14 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Binary Sensor -ha_release: 0.39 -logo: noaa.png ---- - -The `aurora` platform uses the [NOAA aurora forecast](http://www.swpc.noaa.gov/products/aurora-30-minute-forecast) service to let you know if an aurora might be visible at your home location in the next 30 minutes, based off of current solar flare activity. - -This service gives a number 0-100 representing the current likelihood of visible auroras at your latitude/longitude. By default this sensor is set up to trigger when the reported likelihood for your location is > 75. It updates every 5 minutes. - -You can check the attributes of the sensor to see your exact forecast. - -To add the aurora binary sensor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: aurora -``` - -Configuration variables: - -- **forecast_threshold** (*Optional*): Provide your own threshold number above which the sensor will trigger. Defaults to 75. -- **name** (*Optional*): The name of the sensor. Default is 'Aurora Visibility'. - -```yaml - binary_sensor: - - platform: aurora - forecast_threshold: 50 -``` diff --git a/source/_components/binary_sensor.axis.markdown b/source/_components/binary_sensor.axis.markdown deleted file mode 100644 index 939cc8f76d..0000000000 --- a/source/_components/binary_sensor.axis.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "Axis Binary Sensor" -description: "Instructions on how to integrate Axis binary sensors into Home Assistant." -date: 2017-04-01 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: axis.png -ha_category: Binary Sensor -ha_iot_class: "Local Push" -ha_release: "0.45" ---- - -The `Axis` platform allows you to get data from your [Axis](https://www.axis.com/) devices from within Home Assistant. - -See the [Axis main component](/components/axis/) for configuration instructions. - -The following sensor types are supported: - - - * Motion detection - * Passive IR motion detection - * Sound detection - * Day/night mode - * Tampering detection - * Input port diff --git a/source/_components/binary_sensor.bayesian.markdown b/source/_components/binary_sensor.bayesian.markdown deleted file mode 100644 index ad52a8e85f..0000000000 --- a/source/_components/binary_sensor.bayesian.markdown +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: page -title: "Bayesian Binary Sensor" -description: "Instructions on 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.bbb_gpio.markdown b/source/_components/binary_sensor.bbb_gpio.markdown deleted file mode 100644 index be2a9bd9fb..0000000000 --- a/source/_components/binary_sensor.bbb_gpio.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "BeagleBone Black GPIO Binary Sensor" -description: "Instructions on how to integrate the GPIO sensor capability of a BeagleBone Black into Home Assistant." -date: 2017-01-14 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beaglebone-black.png -ha_category: Binary Sensor -ha_release: 0.37 -ha_iot_class: "Local Push" ---- - -The `bbb_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your [BeagleBone Black](https://beagleboard.org/black). - -To use your BeagleBone Black's GPIO in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: bbb_gpio - pins: - P8_12: - name: Door - GPIO0_26: - name: Window -``` - -Configuration variables: - -- **pins** array (*Required*): Array of used pins. - - **pin_name** (*Required*): Pin numbers and corresponding names. - - **name** (*Required*): Friendly name to use for the frontend. - - **bouncetime** (*Optional*): Debounce time for reading input pin defined in milliseconds [ms]. Defaults to `50 ms`. - - **invert_logic** (*Optional*): If `true`, inverts the input logic to ACTIVE LOW. Default is `false` (ACTIVE HIGH). - - **pull_mode** (*Optional*): Type of internal pull resistor connected to input. Options are `UP` - pull-up resistor and `DOWN` - pull-down resistor. Defaults to `UP`. - -For more details about the GPIO layout, visit the [article](http://elinux.org/Beagleboard:BeagleBoneBlack) about the BeagleBone Black. - diff --git a/source/_components/binary_sensor.blink.markdown b/source/_components/binary_sensor.blink.markdown deleted file mode 100644 index e8ef564044..0000000000 --- a/source/_components/binary_sensor.blink.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Blink Binary Sensor" -description: "Instructions for how to setup Blink binary sensors within Home Assistant." -date: 2017-03-05 22:13 -sidebar: true -comments: false -sharing: true -footer: true -logo: blink.png -ha_category: Binary Sensor -ha_release: "0.40" ---- - -

    -To get your Blink binary sensors working with Home Assistant, follow the instructions for the general [Blink component](/components/blink/). -

    \ No newline at end of file diff --git a/source/_components/binary_sensor.bloomsky.markdown b/source/_components/binary_sensor.bloomsky.markdown deleted file mode 100644 index 2a4ba02d57..0000000000 --- a/source/_components/binary_sensor.bloomsky.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "BloomSky Binary Sensor" -description: "Instructions on how to set up BloomSky binary sensors within Home Assistant." -date: 2016-02-22 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bloomsky.png -ha_category: Binary Sensor -ha_release: 0.14 -ha_iot_class: "Cloud Polling" ---- - -The `bloomsky` binary sensor platform allows you to get data from your BloomSky device. - -To get your BloomSky binary sensors working with Home Assistant, follow the instructions for the [BloomSky component](/components/bloomsky/) first. - -To use your BloomSky binary sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: bloomsky - monitored_conditions: - - Night - - Rain -``` - -Configuration variables: - -- **monitored_conditions** array (*Required*): The sensors that you wish to monitor on all of your devices. Select from these options: - - Night - - Rain diff --git a/source/_components/binary_sensor.bmw_connected_drive.markdown b/source/_components/binary_sensor.bmw_connected_drive.markdown deleted file mode 100755 index 74330ec563..0000000000 --- a/source/_components/binary_sensor.bmw_connected_drive.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "BMW Connected Drive Binary Sensor" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." -date: 2018-02-22 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bmw.png -ha_category: Binary Sensor -ha_release: 0.66 ---- - - -The `bmw_connected_drive` platform allows you to import data on your BMW into Home Assistant. - -The binary sensors will be automatically configured if `bmw_connected_drive` component is configured. - -For more configuration information see the [`bmw_connected_drive` component](/components/bmw_connected_drive/) documentation. diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/binary_sensor.command_line.markdown deleted file mode 100644 index b37d6e40bb..0000000000 --- a/source/_components/binary_sensor.command_line.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: page -title: "Command line Binary Sensor" -description: "Instructions on how to integrate Command binary sensors within Home Assistant." -date: 2016-01-13 12:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: command_line.png -ha_category: Binary Sensor -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - - -The `command_line` binary sensor platform issues specific commands to get data. - -To use your Command binary sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: command_line - command: cat /proc/sys/net/ipv4/ip_forward -``` - -Configuration variables: - -- **command** (*Required*): The action to take to get the value. -- **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 %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title SickRage %} - -Check the state of an [SickRage](https://github.com/sickragetv/sickrage) instance. - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: command_line - command: netstat -na | find "33322" | find /c "LISTENING" > nul && (echo "Running") || (echo "Not running") - name: 'sickragerunning' - device_class: moving - payload_on: "Running" - payload_off: "Not running" -``` - -### {% linkable_title Check RasPlex %} - -Check if [RasPlex](http://www.rasplex.com/) is `online`. - -```yaml -binary_sensor: - - platform: command_line - command: 'ping -c 1 rasplex.local | grep "1 received" | wc -l' - name: 'is_rasplex_online' - device_class: connectivity - payload_on: 1 - payload_off: 0 -``` - -An alternative solution could look like this: - -```yaml -binary_sensor: - - platform: command_line - name: Printer - command: ping -W 1 -c 1 192.168.1.10 > /dev/null 2>&1 && echo success || echo fail - device_class: connectivity - payload_on: "success" - payload_off: "fail" -``` - -Consider to use the [`ping` sensor ](/components/binary_sensor.ping/) as an alternative to the samples above. diff --git a/source/_components/binary_sensor.concord232.markdown b/source/_components/binary_sensor.concord232.markdown deleted file mode 100644 index 39320bb672..0000000000 --- a/source/_components/binary_sensor.concord232.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "Concord232 Binary Sensor" -description: "Instructions on how to integrate Interlogix/GE Concord4 binary sensors into Home Assistant." -date: 2016-10-11 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: interlogix.png -ha_category: Binary Sensor -ha_release: 0.31 ---- - -The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4. - -To enable this, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: concord232 -``` - -Configuration variables: - -- **host** (*Optional*): The host where the concord232 server process is running. Defaults to `localhost`. -- **port** (*Optional*): The port where the Alarm panel is listening. Defaults to 5007. - diff --git a/source/_components/binary_sensor.deconz.markdown b/source/_components/binary_sensor.deconz.markdown deleted file mode 100644 index f049948283..0000000000 --- a/source/_components/binary_sensor.deconz.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "deCONZ Binary Sensor" -description: "Instructions on how to integrate Zigbee binary sensors from deCONZ into Home Assistant." -date: 2017-11-12 16:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: deconz.jpeg -ha_category: Binary Sensor -ha_release: "0.61" -ha_iot_class: "Local Push" ---- - -See the [deCONZ main component](/components/deconz/) for configuration instructions. - -The following sensor types are supported: - - * Fire/Smoke detection - * Open/Close detection - * Presence detection - * Water leakage detection - -Entity ids will be binary_sensor.device_name, where device_name is defined in deCONZ. - -#### {% linkable_title Verified to be supported binary sensors %} - -- Open/Close Detection - - Xiaomi Smart Home Security Door & Window Contact Sensor -- Presence Detection - - IKEA Trådfri Motion Sensor - - Philips Hue Motion Sensor - - Xiaomi Motion Sensor - - Xiaomi Smart Home Aqara Human Body Sensor diff --git a/source/_components/binary_sensor.digital_ocean.markdown b/source/_components/binary_sensor.digital_ocean.markdown deleted file mode 100644 index e4bc04ac1c..0000000000 --- a/source/_components/binary_sensor.digital_ocean.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Digital Ocean Binary Sensor" -description: "Instructions on how to set up Digital Ocean binary sensors within Home Assistant." -date: 2016-09-24 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: System Monitor -logo: digital_ocean.png -ha_release: "0.30" -ha_iot_class: "Local Polling" ---- - -The `digital_ocean` binary sensor platform allows you to monitor your Digital Ocean droplets. - -To use your Digital Ocean droplets, you first have to set up your [Digital Ocean hub](/components/digital_ocean/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: digital_ocean - droplets: - - 'fedora-512mb-nyc3-01' - - 'coreos-512mb-nyc3-01' -``` - -{% configuration %} -droplets: - description: List of droplets you want to monitor. - required: true - type: list -{% endconfiguration %} - diff --git a/source/_components/binary_sensor.ecobee.markdown b/source/_components/binary_sensor.ecobee.markdown deleted file mode 100644 index 25f58c42cb..0000000000 --- a/source/_components/binary_sensor.ecobee.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Ecobee Binary Sensor" -description: "Instructions on 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 binary sensors working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/). diff --git a/source/_components/binary_sensor.egardia.markdown b/source/_components/binary_sensor.egardia.markdown deleted file mode 100644 index d418559f8e..0000000000 --- a/source/_components/binary_sensor.egardia.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Egardia Binary Sensor" -description: "Instructions on how to integrate Egardia / Woonveilig binary sensors into Home Assistant." -date: 2018-03-02 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: egardia.png -ha_release: 0.65 -ha_category: Binary Sensor -ha_iot_class: "Polling" ---- - -The `egardia` platform allows you to get data from your [Egardia](http://www.egardia.com)/[Woonveilig](http://www.woonveilig.nl) binary sensors from within Home Assistant. -Currently only door contacts are supported. IR sensors are not supported and will probably never be since their status cannot be read outside of the alarm control panel. Smoke sensors and others might be added but currently are not supported. - -You will need to set up your [Egardia hub](/components/egardia/). diff --git a/source/_components/binary_sensor.eight_sleep.markdown b/source/_components/binary_sensor.eight_sleep.markdown deleted file mode 100644 index cf9f2c52bf..0000000000 --- a/source/_components/binary_sensor.eight_sleep.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Eight Sleep Binary Sensor" -description: "Instructions on how to integrate binary motion sensors for Eight Sleep within Home Assistant." -date: 2017-04-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eight_sleep.png -ha_category: Binary Sensor -ha_release: "0.44" -ha_iot_class: "Cloud Polling" ---- - - -The `eight_sleep` binary sensor platform lets you observe the presence state of a [Eight Sleep](https://eightsleep.com/) cover/mattress through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/eight_sleep/) configuration on how to setup. diff --git a/source/_components/binary_sensor.enocean.markdown b/source/_components/binary_sensor.enocean.markdown deleted file mode 100644 index 32f3fc3340..0000000000 --- a/source/_components/binary_sensor.enocean.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "EnOcean Binary Sensor" -description: "Instructions on how to set up EnOcean binary sensors within Home Assistant." -date: 2016-05-25 23:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: enocean.png -ha_category: Binary Sensor -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - -This can typically be one of those batteryless wall switches. Currently only one type has been tested: Eltako FT55 which uses the EnOcean PTM 215 module. All switches using this module are expected to work. Other devices will most likely not work without changing the Home Assistant code. - -To use your EnOcean device, you first have to set up your [EnOcean hub](/components/enocean/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: enocean - id: [0x01,0x90,0x84,0x3C] -``` - -Configuration variables: - -- **id** (*Required*): The ID of the device. This is the 4 bytes long number written on the dimmer. -- **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 following four fields: - - - **id**: The ID of the device (see configuration). - - **pushed**: `1` for a button press, `0` for a button release. - - **which**: Always `0` when using the single rocket. `0` or `1` when using the dual rocket switch. - - **onoff**: `0` or `1` for either side of the rocket. - -Sample automation to switch lights on and off: - -```yaml -# Example automation to turn lights on/off on button release -automation: - - alias: hall light switches - trigger: - platform: event - event_type: button_pressed - event_data: - id: [0xYY, 0xYY, 0xYY, 0xYY] - pushed: 0 - action: - service_template: "{% raw %}{% if trigger.event.data.onoff %} light.turn_on {% else %} light.turn_off {%endif %}{% endraw %}" - data_template: - entity_id: "{% raw %}{% if trigger.event.data.which == 1 %} light.hall_left {% else %} light.hall_right {%endif %}{% endraw %}" -``` diff --git a/source/_components/binary_sensor.envisalink.markdown b/source/_components/binary_sensor.envisalink.markdown deleted file mode 100644 index 52735a8dbf..0000000000 --- a/source/_components/binary_sensor.envisalink.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Envisalink Binary Sensor" -description: "Instructions on how to integrate Envisalink binary sensors into Home Assistant." -date: 2016-07-01 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eyezon.png -ha_release: 0.23 -ha_category: Binary Sensor -ha_iot_class: "Local Push" ---- - -The `envisalink` platform allows you to get data from your [Envisalink](http://www.eyezon.com/) binary sensors from within Home Assistant. - -Check the [type/class](/components/binary_sensor/) list for a possible visualization of your zone. - -The requirement is that you have setup your [Envisalink hub](/components/envisalink/). diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/binary_sensor.ffmpeg_motion.markdown deleted file mode 100644 index 6635bae9e6..0000000000 --- a/source/_components/binary_sensor.ffmpeg_motion.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "FFmpeg Motion Binary Sensor" -description: "Instructions on how to integrate an FFmpeg-based motion binary sensor" -date: 2016-08-25 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ffmpeg.png -ha_category: Binary Sensor -ha_release: 0.27 -redirect_from: /components/binary_sensor.ffmpeg/ ---- - - -The `ffmpeg` platform allows you to use any video feed with [FFmpeg](http://www.ffmpeg.org/) for motion sensors in Home Assistant. - -

    -If the `ffmpeg` process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*. -

    - -### {% linkable_title Motion %} - -FFmpeg doesn't have a motion detection filter, but can use a scene filter to detect a new scene/motion. You can set how much needs to change in order to detect motion with the option 'changes', the percent value of change between frames. If you want a really small value for 'changes', you can also add a denoise filter. - -To add FFmpeg with motion detection to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ffmpeg_motion - input: FFMPEG_SUPPORTED_INPUT -``` - -Configuration variables: - -- **input** (*Required*): An FFmpeg-compatible input file, stream, or feed. -- **name** (*Optional*): Override the name of your camera for the frontend. -- **initial_state** (*Optional*): Start `ffmpeg` with Home Assistant. Defaults to `true`. -- **changes** (*Optional*): How much needs to change between two frames to detect it as motion (a lower value is more sensitive). Defaults to 10%. -- **reset** (*Optional*): The time to reset the state after no new motion is detected. Defaults to 20 seconds. -- **repeat** (*Optional*): How many events need to be detected in *repeat_time* in order to trigger a motion. Defaults to 0 repeats (deactivated). -- **repeat_time** (*Optional*): The span of time *repeat* events need to occur in before triggering a motion. Defaults to 0 seconds (deactivated). -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g., video denoise filtering. - -To experiment with values (changes/100 is the scene value in `ffmpeg`): - -```bash -$ 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 Tips %} - -- 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.ffmpeg_noise.markdown b/source/_components/binary_sensor.ffmpeg_noise.markdown deleted file mode 100644 index d68ec7d163..0000000000 --- a/source/_components/binary_sensor.ffmpeg_noise.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "FFmpeg Noise Binary Sensor" -description: "Instructions on how to integrate an FFmpeg-based noise binary sensor" -date: 2016-08-25 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ffmpeg.png -ha_category: Binary Sensor -ha_release: 0.27 ---- - - -The `ffmpeg` platform allows you to use any video or audio feed with [FFmpeg](http://www.ffmpeg.org/) for various sensors in Home Assistant. - -

    -If the `ffmpeg` process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*. -

    - -### {% linkable_title Noise %} - -To add FFmpeg with noise detection to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ffmpeg_noise - input: FFMPEG_SUPPORTED_INPUT -``` - -Configuration variables: - -- **input** (*Required*): An FFmpeg-compatible input file, stream, or feed. -- **name** (*Optional*): Override the name of your camera. -- **initial_state** (*Optional*): Default true. Start ffmpeg with home-assistant. -- **peak** (*Optional*): Default -30. The threshold of detecting noise, in dB. 0 is very loud and -100 is low. -- **duration** (*Optional*): Default 1 second. How long the noise needs to be over the peak to trigger the state. -- **reset** (*Optional*): Default 20 seconds. The time to reset the state after no new noise is over the peak. -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, like audio frequency filtering. -- **output** (*Optional*): Allows you to send the audio output of this sensor to an Icecast server or other FFmpeg-supported output, e.g., to stream with Sonos after a state is triggered. - -To experiment with values: - -```bash -$ ffmpeg -i YOUR_INPUT -vn -filter:a silencedetect=n=-30dB:d=1 -f null - -``` diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/binary_sensor.flic.markdown deleted file mode 100644 index 3767ed7476..0000000000 --- a/source/_components/binary_sensor.flic.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: Flic Smart Button -description: "Instructions on how to integrate flic buttons within Home Assistant." -date: 2016-12-02 22:03 -sidebar: true -comments: false -sharing: true -footer: true -logo: flic.png -ha_category: Binary Sensor -ha_iot_class: "Local Push" -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). - -To use your flic buttons in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: flic -``` - -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 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 %} - -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. - -#### {% linkable_title Events %} - -The flic component fires `flic_click` events on the bus. You can capture the events and respond to them in automation scripts like this: - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: Turn on lights in living room if flic is pressed once - trigger: - platform: event - event_type: flic_click - event_data: - button_name: flic_81e4ac74b6d2 - click_type: single - action: - service: homeassistant.turn_off - entity_id: group.lights_livingroom -``` - -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. -- **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. - -##### {% linkable_title Ignoring Click Types %} - -For some purposes it might make sense to exclude a specific click type from triggering click events. For example when ignoring double clicks, pressing the button twice fast results in two `single` instead of a `double` click event. This is very useful for applications where you want to click fast. diff --git a/source/_components/binary_sensor.gc100.markdown b/source/_components/binary_sensor.gc100.markdown deleted file mode 100644 index 80d828723b..0000000000 --- a/source/_components/binary_sensor.gc100.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: gc100 Binary Sensor -description: "Instructions on how to set up a 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 deleted file mode 100644 index 7e93130271..0000000000 --- a/source/_components/binary_sensor.hikvision.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: page -title: Hikvision Binary Sensor -description: "Instructions on how to set up Hikvision camera binary sensors within Home Assistant." -date: 2016-12-08 -sidebar: true -comments: false -sharing: true -footer: true -logo: hikvision.png -ha_category: Binary Sensor -ha_release: 0.35 -ha_iot_class: "Local Push" ---- - -The Hikvision Binary Sensor is a platform that parses the event stream of a [Hikvision IP Camera or NVR](http://www.hikvision.com/) and presents the camera/nvr events to Home Assistant as binary sensors with either an "off" or "on" state. - -The platform will automatically add all sensors to Home Assistant that are configured within the camera/nvr interface to "Notify the surveillance center" as a trigger. If you would like to hide a sensor type you can do so by either unchecking "Notify the surveillance center" in the camera configuration or by using the "ignored" customize option detailed below. - -

    -In order for the sensors to work the hikvision user must have the 'Remote: Notify Surveillance Center/Trigger Alarm Output' permission which can be enabled from the user management section of the web interface. Also the 'WEB Authentication' needs to be set to 'digest/basic' in the security/authentication section. -

    - -For example, if you configure a camera with the name "Front Porch" that has motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant: - -```text -binary_sensor.front_porch_motion -binary_sensor.front_port_line_crossing -``` - -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: - -```text -binary_sensor.home_motion_1 -binary_sensor.home_motion_2 -binary_sensor.home_line_crossing_1 -binary_sensor.home_line_crossing_2 -``` - -This platform should work with all Hikvision cameras and nvrs, and has been confirmed to work with the following models: - -- DS-2CD3132-I -- DS-2CD2232-I5 -- DS-2CD2032-I -- DS-2CD2042WD-I -- DS-2CD2142FWD-I - -To enable this sensor, the following lines are required in your `configuration.yaml` file: - -```yaml -binary_sensor: - - platform: hikvision - host: IP_ADDRESS - username: user - password: pass -``` - -Configuration options for a Hikvision Sensor: - -- **host** (*Required*): The IP address of the camera you would like to connect to. -- **username** (*Required*): The username to authenticate with. -- **password** (*Required*): The password to authenticate with. -- **name** (*Optional*): The name you'd like to give the camera in Home Assistant, defaults to name defined in the camera. -- **port** (*Optional*): The port to connect to the camera on, defaults to 80. -- **ssl** (*Optional*): True if you want to connect with https. Be sure to set the port also. -- **customize** (*Optional*): This attribute contains sensor-specific override values. Only sensor name needs defined: - - **ignored** (*Optional*): Ignore this sensor completely. It won't be shown in the Web Interface and no events are generated for it. - - **delay** (*Optional*): Specify the delay to wait after a sensor event ends before notifying Home Assistant. This is useful to catch multiple quick trips in one window without the state toggling on and off. The default delay is 5 seconds. - -Supported sensor/event types are: - -- Motion -- Line Crossing -- Field Detection -- Video Loss -- Tamper Detection -- Shelter Alarm -- Disk Full -- Disk Error -- Net Interface Broken -- IP Conflict -- Illegal Access -- Video Mismatch -- Bad Video -- PIR Alarm -- Face Detection -- Scene Change Detection - -Example of a configuration in your `configuration.yaml` that utilizes the customize options for a camera: - -```yaml -binary_sensor: - - platform: hikvision - host: 192.168.X.X - port: 80 - ssl: False - username: user - password: pass - customize: - motion: - delay: 30 - line_crossing: - ignored: True -``` - -Example of a configuration in your `configuration.yaml` that utilizes the customize options for a nvr: - -```yaml -binary_sensor: - - platform: hikvision - host: 192.168.X.X - port: 80 - ssl: False - username: user - password: pass - customize: - motion_1: - delay: 30 - field_detection_2: - ignored: True -``` diff --git a/source/_components/binary_sensor.hive.markdown b/source/_components/binary_sensor.hive.markdown deleted file mode 100644 index 49486d62d7..0000000000 --- a/source/_components/binary_sensor.hive.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "Hive Binary Sensor" -description: "Instructions on how to integrate Hive Sensors with Home Assistant." -date: 2017-09-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hive.png -ha_category: Binary Sensor -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `hive` binary sensor component integrates your Hive sensors into Home Assistant. - -The platform supports the following Hive products: - -- Hive Window or Door Sensor -- Hive Motion Sensor - - -

    -Full configuration details can be found on the main [Hive component](/components/hive/) page. -

    - - diff --git a/source/_components/binary_sensor.homematic.markdown b/source/_components/binary_sensor.homematic.markdown deleted file mode 100644 index 5155aedeea..0000000000 --- a/source/_components/binary_sensor.homematic.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Homematic Binary Sensor" -description: "Instructions on how to integrate binary Homematic sensors within Home Assistant." -date: 2016-06-28 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Binary Sensor -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - - -The `homematic` binary sensor platform lets you observe the state changes of binary [Homematic](http://www.homematic.com/) sensors through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. \ No newline at end of file diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown deleted file mode 100644 index c2442aa881..0000000000 --- a/source/_components/binary_sensor.http.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "HTTP Binary Sensor" -description: "Instructions on how to integrate HTTP binary sensors within Home Assistant." -date: 2016-02-05 12:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: http.png -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 -http://IP_ADDRESS:8123/api/states/binary_sensor.DEVICE_NAME -``` - -

    -You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices. -

    - -The JSON payload must contain the new state and can have a friendly name. The friendly name is used in the frontend to name the sensor. - -```json -{"state": "on", "attributes": {"friendly_name": "Radio"}} -``` - -For a quick test `curl` can be useful to "simulate" a device. - -```bash -$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - -d '{"state": "off", "attributes": {"friendly_name": "Radio"}}' \ - http://localhost:8123/api/states/binary_sensor.radio -``` - -To check if the sensor is working, use again `curl` to retrieve the [current state](/developers/rest_api/#get-apistatesltentity_id). - -```bash -$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - http://localhost:8123/api/states/binary_sensor.radio -{ - "attributes": { - "friendly_name": "Radio" - }, - "entity_id": "binary_sensor.radio", - "last_changed": "16:45:51 05-02-2016", - "last_updated": "16:45:51 05-02-2016", - "state": "off" -} -``` - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. Beside `curl`. - -### {% linkable_title Using Python request module %} - -As already shown on the [API](/developers/rest_api/) page, it's very simple to use Python and the [Requests](http://docs.python-requests.org/en/latest/) module for the interaction with Home Assistant. - -```python -response = requests.post( - 'http://localhost:8123/api/states/binary_sensor.radio', - headers={'x-ha-access': 'YOUR_PASSWORD', 'content-type': 'application/json'}, - data=json.dumps({'state': 'on', 'attributes': {'friendly_name': 'Radio'}})) -print(response.text) -``` - -### {% linkable_title Using `httpie` %} - -[`httpie`](https://github.com/jkbrzt/httpie) is a user-friendly CLI HTTP client. - -```bash -$ http -v POST http://localhost:8123/api/states/binary_sensor.radio \ - x-ha-access:YOUR_PASSWORD content-type:application/json state=off \ - attributes:='{"friendly_name": "Radio"}' -``` diff --git a/source/_components/binary_sensor.ihc.markdown b/source/_components/binary_sensor.ihc.markdown deleted file mode 100644 index da5aac7615..0000000000 --- a/source/_components/binary_sensor.ihc.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "IHC Binary Sensor" -description: "Instructions on how to integrate IHC Binary Sensors within Home Assistant." -date: 2017-11-27 13:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: ihc.png -ha_category: Binary Sensor -ha_release: 0.62 -ha_iot_class: "Local Push" ---- - -Before you can use the IHC Binary Sensor platform, you must setup the [IHC Component](/components/ihc/) - -When auto setup is enabled the following products will be found in the IHC project and setup as binary sensors: - -* Dataline magnet contacts -* Dataline Pir sensors -* Dataline Pir sensors with twilight detection -* Dataline Pir alarm sensor -* Dataline smoke detector -* Dataline gas detector -* Dataline light sensor - -To manually configure IHC Binary Sensors insert this section in your configuration: - -```yaml -binary_sensor: - - platform: ihc - binary_sensors: - - id: 12345 - name: mysensor - type: opening - inverting: True - - id: 12346 - ... -``` - -{% configuration %} -binary_sensors: - description: List of binary sensors to setup manually. - required: false - type: map - keys: - id: - description: The IHC resource id. - required: true - type: int - inverting: - description: If True the sensor will be inverted. - required: false - type: bool - default: false - name: - description: The name of the component - required: false - type: string - type: - description: The binary sensor type. See [Home Assistant binary sensor](/components/binary_sensor/) for available types. - required: false - type: string -{% endconfiguration %} - -The resource id should be an id of a boolean IHC resource. -For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) - diff --git a/source/_components/binary_sensor.insteon_plm.markdown b/source/_components/binary_sensor.insteon_plm.markdown deleted file mode 100644 index d06c324a44..0000000000 --- a/source/_components/binary_sensor.insteon_plm.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Insteon PLM Binary Sensor" -description: "Instructions on how to setup the Insteon PLM binary sensors locally within Home Assistant." -date: 2017-02-19 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Binary Sensor -ha_iot_class: "Local Push" -ha_version: 0.39 ---- - -The `insteon_plm` binary sensor platform lets you control your sensors through -an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a -USB or serial port. To add support, set up the primary [insteon_plm] -component. - -[insteon_plm]: /components/insteon_plm/ - diff --git a/source/_components/binary_sensor.iss.markdown b/source/_components/binary_sensor.iss.markdown deleted file mode 100644 index c206170688..0000000000 --- a/source/_components/binary_sensor.iss.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "International Space Station" -description: "Know if or when ISS will be above your home location" -date: 2016-12-18 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nasa.png -ha_category: Binary Sensor -ha_release: 0.36 -redirect_from: /components/sensor.iss/ ---- - -The `iss` platform uses the [Open Notify API](http://open-notify.org/Open-Notify-API/ISS-Location-Now/) to let you know if the station is above your home location. This means that ISS is 10° above the horizon of your home. - -You can check in the attributes of the sensor to see the timestamp for the next rise of the station, its current coordinates, and the number of people in space. - -To add ISS binary sensor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: iss -``` - -{% configuration %} -show_on_map: - description: Option to show the position of the ISS on the map. - required: optional - default: false - type: string -{% endconfiguration %} - -

    -If you set `show_on_map` `True` then the location attributes are named `latitude` and `longitude`. The default name of the location attributes is `lat` and `long` to avoid showing them on the map. -

    - - -### {% linkable_title Show position on map with camera platform %} - -The [generic camera platform](/components/camera.mjpeg/) offers the possibility to show the location of the ISS on Google Maps. - -```yaml -# Example configuration.yaml entry -camera: - - platform: generic - name: ISS - still_image_url: {% raw %}https://maps.googleapis.com/maps/api/staticmap?center={{ states.binary_sensor.iss.attributes.lat }},{{ states.binary_sensor.iss.attributes.long }}&zoom=5&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ states.binary_sensor.iss.attributes.lat }},{{ states.binary_sensor.iss.attributes.long }}{% endraw %} - limit_refetch_to_url_change: true -``` diff --git a/source/_components/binary_sensor.isy994.markdown b/source/_components/binary_sensor.isy994.markdown deleted file mode 100644 index 2cb7345d0e..0000000000 --- a/source/_components/binary_sensor.isy994.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "ISY994 Binary Sensor" -description: "Instructions on how to integrate ISY994 binary sensors into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Binary Sensor -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) binary sensors from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/binary_sensor.knx.markdown b/source/_components/binary_sensor.knx.markdown deleted file mode 100644 index d51c9effbb..0000000000 --- a/source/_components/binary_sensor.knx.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "KNX Binary Sensor" -description: "Instructions on how to setup the KNX binary sensors within Home Assistant." -date: 2016-07-13 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: knx.png -ha_category: Binary Sensor -ha_release: 0.24 -ha_iot_class: "Local Polling" ---- - -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 - #reset_after: 100 -``` - -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. -- **reset_after** (Optional): Reset back to OFF state after specified milliseconds. - -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 deleted file mode 100644 index 0ffbddb581..0000000000 --- a/source/_components/binary_sensor.linode.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -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 deleted file mode 100644 index fe8f4a5107..0000000000 --- a/source/_components/binary_sensor.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Binary Sensor" -description: "Instructions on how-to setup binary sensors with Home Assistant." -date: 2015-11-20 14:00 -sidebar: true -comments: false -sharing: true -footer: 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. - -### {% linkable_title Device Class %} - -The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - -- **None**: Generic on/off. This is the default and doesn't need to be set. -- **battery**: `On` means low, `Off` means normal -- **cold**: `On` means cold, `Off` means normal -- **connectivity**: `On` means connected, `Off` means disconnected -- **door**: `On` means open, `Off` means closed -- **garage_door**: `On` means open, `Off` means closed -- **gas**: `On` means gas detected, `Off` means no gas (clear) -- **heat**: `On` means hot, `Off` means normal -- **light**: `On` means light detected, `Off` means no light -- **lock**: `On` means open (unlocked), `Off` means closed (locked) -- **moisture**: `On` means moisture detected (wet), `Off` means no moisture (dry) -- **motion**: `On` means motion detected, `Off` means no motion (clear) -- **moving**: `On` means moving, `Off` means not moving (stopped) -- **occupancy**: `On` means occupied, `Off` means not occupied (clear) -- **opening**: `On` means open, `Off` means closed -- **plug**: `On` means device is plugged in, `Off` means device is unplugged -- **power**: `On` means power detected, `Off` means no power -- **presence**: `On` means home, `Off` means away -- **problem**: `On` means problem detected, `Off` means no problem (OK) -- **safety**: `On` means unsafe, `Off` means safe -- **smoke**: `On` means smoke detected, `Off` means no smoke (clear) -- **sound**: `On` means sound detected, `Off` means no sound (clear) -- **vibration**: `On` means vibration detected, `Off` means no vibration (clear) -- **window**: `On` means open, `Off` means closed - -For analog sensors please check the [component overview](/components/#sensor). - -

    - -Example of various device classes icons in `On` and `Off` state. -

    diff --git a/source/_components/binary_sensor.maxcube.markdown b/source/_components/binary_sensor.maxcube.markdown deleted file mode 100644 index ac6e5299ba..0000000000 --- a/source/_components/binary_sensor.maxcube.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "eQ-3 MAX! Cube binary sensors" -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 -comments: false -sharing: true -footer: true -logo: maxcube.png -ha_category: Climate -ha_release: "0.40" -ha_iot_class: "Local Polling" ---- - -See instructions at the [main component](/components/maxcube/). diff --git a/source/_components/binary_sensor.mercedesme.markdown b/source/_components/binary_sensor.mercedesme.markdown deleted file mode 100644 index e1df898d49..0000000000 --- a/source/_components/binary_sensor.mercedesme.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Mercedes me Binary Sensor" -description: "Instructions on how to integrate Mercedes me binary sensors into Home Assistant." -date: 2018-01-27 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mercedesme.png -ha_category: Binary Sensor -ha_iot_class: "Cloud polling" -ha_release: 0.63 ---- - -The `Mercedes me` platform allows you to get data from your [Mercedes me connected car](https://www.mercedes-benz.com/en/mercedes-me/) sensors like windows, doors, lock, tire warnings from within Home Assistant. - -They will be automatically discovered if the Mercedes me component is loaded. - -For more configuration information see the [Mercedes me component](/components/mercedesme/) documentation. diff --git a/source/_components/binary_sensor.modbus.markdown b/source/_components/binary_sensor.modbus.markdown deleted file mode 100644 index 62f5765dd3..0000000000 --- a/source/_components/binary_sensor.modbus.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Modbus Binary Sensor" -description: "Instructions on how to set up Modbus binary sensors within Home Assistant." -date: 2016-09-13 12:02 -sidebar: true -comments: false -sharing: true -footer: true -logo: modbus.png -ha_category: Binary Sensor -ha_release: 0.28 -ha_iot_class: "Local Push" ---- - -The `modbus` binary sensor allows you to gather data from [Modbus](http://www.modbus.org/) coils. - -## {% linkable_title Configuration %} - -To use your Modbus binary sensors in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: modbus - coils: - - name: Sensor1 - slave: 1 - coil: 100 - - name: Sensor2 - slave: 1 - coil: 110 -``` - -Configuration variables: - -- **coils** array (*Required*): The array contains a list of coils to read from. - - **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 deleted file mode 100644 index 92ac12ccb0..0000000000 --- a/source/_components/binary_sensor.mqtt.markdown +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: page -title: "MQTT Binary Sensor" -description: "Instructions on how to integrate MQTT binary sensors within Home Assistant." -date: 2015-05-30 23:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Binary Sensor -ha_release: 0.9 -ha_iot_class: "depends" ---- - -The `mqtt` binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: `on` or `off`. - -The binary sensor state will be updated only after a new message is published on `state_topic` matching `payload_on` or `payload_off`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. - -## {% linkable_title Configuration %} - -The `mqtt` binary sensor platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT cover device goes offline (i.e., publishes `payload_not_available` to `availability_topic`), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability_topic` 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 -binary_sensor: - - platform: mqtt - state_topic: "home-assistant/window/contact" -``` - -{% configuration %} -name: - description: The name of the binary sensor. - required: false - type: string - default: MQTT Binary Sensor -state_topic: - description: The MQTT topic subscribed to receive sensor values. - required: true - type: string -payload_on: - description: The payload that represents the on state. - required: false - type: string - default: "ON" -payload_off: - description: The payload that represents the off state. - required: false - type: string - default: "OFF" -availability_topic: - description: "The MQTT topic subscribed to receive birth and LWT messages from the MQTT device. If `availability_topic` is not defined, the binary sensor availability state will always be `available`. If `availability_topic` is defined, the binary sensor availability state will be `unavailable` by default." - required: false - type: string -payload_available: - description: The payload that represents the online state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the offline state. - required: false - type: string - default: offline -qos: - description: The maximum QoS level to be used when receiving messages. - required: false - type: integer - default: 0 -device_class: - description: "The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend." - required: false - type: string -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." - required: false - type: string -force_update: - description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. - reqired: false - type: boolean - default: False -{% endconfiguration %} - - -## {% linkable_title Examples %} - -In this section, you will find some real-life examples of how to use this sensor. - -### {% linkable_title Full configuration %} - -To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. To set the state of the binary sensor manually: - -```bash -$ mosquitto_pub -h 127.0.0.1 -t home-assistant/window/contact -m "OFF" -``` - -The example below shows a full configuration for a binary sensor: - -{% raw %} -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: mqtt - name: "Window Contact Sensor" - state_topic: "home-assistant/window/contact" - payload_on: "ON" - payload_off: "OFF" - availability_topic: "home-assistant/window/availability" - payload_available: "online" - payload_not_available: "offline" - qos: 0 - device_class: opening - value_template: '{{ value.x }}' -``` -{% endraw %} - -### {% linkable_title Get the state of a device with ESPEasy %} - -Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" is a name ("Unit Name:") set for your device (here it's "bathroom"). A configuration for a "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example, the topics are prefixed with "home". Also, add a "Switch Input" in the "Devices" tap with the name "switch" and "button" as value. - -As soon as the unit is online, you will get the state of the attached button. - -```bash -home/bathroom/status Connected -... -home/bathroom/switch/button 1 -``` - -The configuration will look like the example below: - -{% raw %} -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: mqtt - name: Bathroom - state_topic: "home/bathroom/switch/button" - payload_on: "1" - payload_off: "0" -``` -{% endraw %} diff --git a/source/_components/binary_sensor.mysensors.markdown b/source/_components/binary_sensor.mysensors.markdown deleted file mode 100644 index 6138b927af..0000000000 --- a/source/_components/binary_sensor.mysensors.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: page -title: "MySensors Binary Sensor" -description: "Instructions on how to integrate MySensors binary sensors into Home Assistant." -date: 2016-04-13 14:20 +0100 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Binary Sensor -ha_release: 0.14 -ha_iot_class: "Local Push" ---- - -Integrates MySensors binary sensors into Home Assistant. See the [main component] for configuration instructions. - -The following sensor types are supported: - -#### MySensors version 1.4 and higher - -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_DOOR | V_TRIPPED -S_MOTION | V_TRIPPED -S_SMOKE | V_TRIPPED - -#### MySensors version 1.5 and higher - -S_TYPE | V_TYPE ----------------|---------------------------------- -S_SPRINKLER | V_TRIPPED -S_WATER_LEAK | V_TRIPPED -S_SOUND | V_TRIPPED -S_VIBRATION | V_TRIPPED -S_MOISTURE | V_TRIPPED - -For more information, visit the [serial api] of MySensors. - -### {% linkable_title Example sketch %} - -```cpp -/** - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/binary - */ - - -#include -#include -#include - -#define SN "BinarySensor" -#define SV "1.0" -#define CHILD_ID 1 -#define BUTTON_PIN 3 // Arduino Digital I/O pin for button/reed switch. - -MySensor gw; -Bounce debouncer = Bounce(); -MyMessage msg(CHILD_ID, V_TRIPPED); - -void setup() -{ - gw.begin(); - gw.sendSketchInfo(SN, SV); - // Setup the button. - pinMode(BUTTON_PIN, INPUT_PULLUP); - // After setting up the button, setup debouncer. - debouncer.attach(BUTTON_PIN); - debouncer.interval(5); - gw.present(CHILD_ID, S_DOOR); - gw.send(msg.set(0)); -} - -void loop() -{ - if (debouncer.update()) { - // Get the update value. - int value = debouncer.read(); - // Send in the new value. - gw.send(msg.set(value == LOW ? 1 : 0)); - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: http://www.mysensors.org/download diff --git a/source/_components/binary_sensor.mystrom.markdown b/source/_components/binary_sensor.mystrom.markdown deleted file mode 100644 index f46df4afc1..0000000000 --- a/source/_components/binary_sensor.mystrom.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "myStrom Binary Sensor" -description: "Instructions on how to integrate myStrom buttons into Home Assistant." -date: 2017-04-14 08:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: mystrom.png -ha_category: Binary Sensor -ha_iot_class: "Local Polling" -ha_release: 0.45 ---- - - -The `mystrom` binary sensor platform allows you to use [myStrom Wifi Buttons](https://mystrom.ch/wifi-button/) with Home Assistant. The myStrom Wifi Buttons support three and the myStrom WiFi Button + four different push pattern: - -- `single`: Short push (approx. 1/2 seconds) -- `double`: 2x sequential short pushes (within 2 seconds) -- `long`: Long push (approx. 2 seconds) -- `touch`: Touch of the button's surface (only affective for WiFi Button +) - -The first usage of the pattern will create the binary sensor for the pattern. If the WiFi Button is pushed one time then a binary sensor for the `single` pattern will be created. The same applies for the other patterns. With the second usage of the pattern the binary sensors become fully functional. - -The buttons will give you feedback with its built-in LED: - -- white then green: Pattern was submitted successfully -- white then red: There is a problem with the communication - -To use your myStrom WiFi Button in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: mystrom -``` - -### {% 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. 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 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] -{ - "[MAC address of the button]": { - "type": "button", - "battery": true, - "reachable": true, - "meshroot": false, - "charge": true, - "voltage": 4.292, - "fw_version": "2.26", - "single": "get://[IP address Home Assistant]:8123/api/mystrom?single=[id of the button]", - "double": "", - "long": "", - "touch": "" - } -} -``` - -A complete command to set the URL for a double click could look like the example below: - -```bash -$ curl -d "double=get://192.168.1.3:8123/api/mystrom?double%3DButton1" http://192.168.1.12/api/v1/device/4D5F5D5CD553 -``` - -

    -The firmware version 2.26 doesn't support TLS/SSL. This means that you are only able to use the WiFi Buttons if you are using plain-text communication between Home Assistant and the clients/entities. -

    diff --git a/source/_components/binary_sensor.nest.markdown b/source/_components/binary_sensor.nest.markdown deleted file mode 100644 index 4cb47776c6..0000000000 --- a/source/_components/binary_sensor.nest.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Nest Binary Sensor" -description: "Instructions on how to integrate Nest binary sensors within Home Assistant." -date: 2016-01-26 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nest.png -ha_category: Binary Sensor -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -The `nest` binary sensor platform lets you monitor various states of your [Nest](https://nest.com) devices. - -

    -You must have the [Nest component](/components/nest/) configured to use these sensors. The binary sensors will be setup if the `nest` component is configured and the required configuration for the `nest binary sensor` is set. -

    - -To enable binary sensors and customize which sensors are setup, you can extend the [Nest component](/components/nest/) configuration in your `configuration.yaml` file with the following settings: - -```yaml -# Example configuration.yaml entry -nest: - binary_sensors: - monitored_conditions: - - 'fan' - - 'target' -``` - -By default all binary sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all binary sensors for the [Nest component](/components/nest/). - -Configuration variables: - -- **monitored_conditions** array (*Optional*): States to monitor. - -The following conditions are available by device: - -- Nest Thermostat: - - online - - fan - - is\_using\_emergency\_heat - - is\_locked - - has\_leaf -- Nest Protect: - - online -- Nest Camera: - - online - - motion\_detected - - person\_detected - - sound\_detected diff --git a/source/_components/binary_sensor.netatmo.markdown b/source/_components/binary_sensor.netatmo.markdown deleted file mode 100644 index da2f8ab1fe..0000000000 --- a/source/_components/binary_sensor.netatmo.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "Netatmo Binary Sensor" -description: "Instructions on how to integrate Netatmo binary sensor into Home Assistant." -date: 2016-09-19 15:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: netatmo.png -ha_category: Binary Sensor -ha_release: 0.31 ---- - -### {% linkable_title Basic Configuration %} - -The `netatmo` binary sensor platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) camera. This component allows you to get the latest event seen by the camera. - -To enable the Netatmo binary sensor, you have to set up [netatmo](/components/netatmo/), this will use discovery to add your binary sensor. - -### {% linkable_title Advanced configuration %} - -If you want to select a specific sensor, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - platform: netatmo - home: home_name - timeout: 90 - cameras: - - camera_name1 - welcome_sensors: - - Someone known - - Someone unknown - - Motion - presence_sensors: - - Outdoor motion - - Outdoor human - - Outdoor animal - - Outdoor vehicle -``` - -Configuration variables: - -- **home** (*Optional*): Will use the cameras of this home only. -- **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. - - 'Someone known' - - 'Someone unknown' - - 'Motion' -- **presence_sensors** array (*Optional*): List of monitored conditions. - - 'Outdoor motion' - - 'Outdoor human' - - 'Outdoor animal' - - 'Outdoor vehicle' - -If **home** and **cameras** is not provided, all cameras will be used. If multiple cameras are available then each monitored conditions will create a specific sensor for each camera diff --git a/source/_components/binary_sensor.nx584.markdown b/source/_components/binary_sensor.nx584.markdown deleted file mode 100644 index cce9c46eb0..0000000000 --- a/source/_components/binary_sensor.nx584.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: NX584 zones -description: "Instructions on how to set up nx584 zones as sensors" -date: 2016-02-18 20:47 -sidebar: true -comments: false -sharing: true -footer: true -logo: networx.png -ha_category: Binary Sensor -ha_iot_class: "Local Push" -ha_release: 0.14 ---- - -The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](http://github.com/kk7ds/pynx584) which is required for this to work. - -Enabling this sensor platform exposes all of your zones as binary sensors, which provides visibility through the UI as well as the ability to trigger automation actions instantly when something happens like a door opening, or a motion sensor trigger. - -To enable this feature, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - platform: nx584 -``` - -Configuration variables: - -- **host** (*Optional*): This is the host where the nx584 server process is running. If unset, it is assumed to be `localhost`, which will work if the server process is running on the same system as Home Assistant. -- **port** (*Optional*): The port where the server process is running. Defaults to `5007`. -- **exclude_zones** (*Optional*): This is a list of zone numbers that should be excluded. Use this to avoid exposing a zone that is of no interest, unconnected, etc. -- **zone_types** (*Optional*): This is a list of zone numbers mapped to zone types. Use this to designate zones as doors, motion sensors, smoke detectors, etc. The list of available zone types relevant to alarm zones are: `opening`, `motion`, `gas`, `smoke`, `moisture`, `safety`. - -An extended configuration entry could look like this: - -```yaml -# Full example configuration.yaml entry -binary_sensor: - platform: nx584 - host: 192.168.1.10 - port: 5007 - exclude_zones: - - 3 - - 5 - zone_types: - 1: opening - 2: opening - 4: motion - 6: moisture -``` diff --git a/source/_components/binary_sensor.octoprint.markdown b/source/_components/binary_sensor.octoprint.markdown deleted file mode 100644 index 369205ad94..0000000000 --- a/source/_components/binary_sensor.octoprint.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "OctoPrint Binary Sensor" -description: "Instructions on how to integrate OctoPrint binary sensors within Home Assistant." -date: 2016-05-05 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: octoprint.png -ha_category: Binary Sensor -ha_release: 0.19 -ha_iot_class: "Local Polling" ---- - - -The `octoprint` binary sensor platform let you monitor if your 3D printer is printing or if there was a printing error. - -

    -You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor. -

    - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -binary_sensor: - - platform: octoprint - monitored_conditions: - - Printing - - Printing Error -``` - -Configuration variables: - -- **monitored_conditions** array (*Required*): States to monitor. - - **Printing**: State of the printer. - - **Printing Error**: Error while printing. -- **name** (*Optional*): The name of the sensor. Default is 'OctoPrint'. diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown deleted file mode 100644 index ee7a729196..0000000000 --- a/source/_components/binary_sensor.pilight.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Pilight Binary Sensor" -description: "Instructions on how to integrate Pilight binary sensors within Home Assistant." -date: 2017-03-24 20:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: pilight.png -ha_category: Binary Sensor -ha_release: 0.44 -ha_iot_class: "Local Polling" ---- - -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.yaml 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 -binary_sensor: - - platform: pilight - name: 'Motion' - variable: 'state' - payload: - unitcode: 371399 - payload_on: 'closed' - disarm_after_trigger: True - reset_delay_sec: 30 -``` diff --git a/source/_components/binary_sensor.ping.markdown b/source/_components/binary_sensor.ping.markdown deleted file mode 100644 index b0be627136..0000000000 --- a/source/_components/binary_sensor.ping.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Ping (ICMP) Binary sensor" -description: "Instructions on how to integrate Ping (ICMP)-based binary sensors into Home Assistant." -date: 2017-04-11 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Binary Sensor -ha_release: 0.43 ---- - - -The `ping` binary sensor platform allows you to using `ping` to send ICMP echo requests. This way you can check if a given host is online and determine the round trip times from your Home Assistant instance to that system. - -To use this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ping - host: 192.168.0.1 -``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of the system you want to track. -- **count** (*Optional*): Number of packets to send. Defaults to 5. -- **name** (*Optional*): Let you overwrite the name of the device. Defaults to `Ping Binary sensor`. - -The sensor exposes the different round trip times values measured by `ping` as attributes: - -- `round trip time mdev` -- `round trip time avg` -- `round trip time min` -- `round trip time max` - -The default polling interval is 5 minutes. As many components [based on the entity class](/docs/configuration/platform_options), it is possible to overwrite this scan interval by specifying a `scan_interval` configuration key (value in seconds). In the example below we setup the `ping` binary sensor to poll the devices every 30 seconds. - -```yaml -# Example configuration.yaml entry to ping host 192.168.0.1 with 2 packets every 30 seconds. -binary_sensor: - - platform: ping - host: 192.168.0.1 - count: 2 - scan_interval: 30 -``` - -

    -When run on Windows systems, the round trip time attributes are rounded to the nearest millisecond and the mdev value is unavailable. -

    - diff --git a/source/_components/binary_sensor.qwikswitch.markdown b/source/_components/binary_sensor.qwikswitch.markdown deleted file mode 100644 index e3fd446a3b..0000000000 --- a/source/_components/binary_sensor.qwikswitch.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "QwikSwitch Binary Sensor" -description: "Instructions on how to integrate Qwikswitch dimmers and relays as sensors into Home Assistant." -date: 2016-05-04 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: qwikswitch.png -ha_category: Sensor -ha_iot_class: "Local Push" -ha_release: "0.68" ---- - -The `qwikswitch` binary_sensor platform allows you to use your [QwikSwitch](http://www.qwikswitch.co.za/) sensors within Home Assistant. - -The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/binary_sensor.raincloud.markdown b/source/_components/binary_sensor.raincloud.markdown deleted file mode 100644 index b5e1678d53..0000000000 --- a/source/_components/binary_sensor.raincloud.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -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 deleted file mode 100644 index b1208681a8..0000000000 --- a/source/_components/binary_sensor.random.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Random Binary Sensor" -description: "Instructions on 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. - -## {% linkable_title Configuration %} - -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 deleted file mode 100644 index 50d031c457..0000000000 --- a/source/_components/binary_sensor.raspihats.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: page -title: "Raspihats Binary Sensor" -description: "Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant as a binary_sensor." -date: 2017-05-01 04:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspihats.png -ha_category: Binary Sensor -ha_release: 0.44 -ha_iot_class: "Local Push" ---- - -The `raspihats` binary sensor platform allows you to read sensor values ​​using the digital inputs of the [raspihats](http://www.raspihats.com/) boards. - -To use your `raspihats` boards in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: raspihats - i2c_hats: - - board: DI6acDQ6rly - address: 0x60 - channels: - - index: 0 - name: PIR Office - invert_logic: true - device_class: motion - - index: 1 - name: PIR Bedroom -``` - -Configuration variables: - -- **i2c_hats** (*Optional*): Array of used I2C-HATs. - - **board** (*Required*): The board name [Di16, Di6Rly6, DI16ac, DI6acDQ6rly]. - - **address** (*Required*): The board I2C address, hex value. - - **channels** (*Required*): Array of used digital input channels. - - **index** (*Required*): Digital input channel index. - - **name** (*Required*): Friendly name to use for the frontend. - - **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.rest.markdown b/source/_components/binary_sensor.rest.markdown deleted file mode 100644 index d882e5b406..0000000000 --- a/source/_components/binary_sensor.rest.markdown +++ /dev/null @@ -1,148 +0,0 @@ ---- -layout: page -title: "RESTful Binary Sensor" -description: "Instructions on how to integrate REST binary sensors into Home Assistant." -date: 2015-12-17 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: restful.png -ha_category: Binary Sensor -ha_release: "0.10" -ha_iot_class: "Local Polling" ---- - - -The `rest` binary sensor platform is consuming a given endpoint which is exposed by a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) of a device, an application, or a web service. The binary sensor has support for GET and POST requests. - -The JSON messages can contain different values like `1`, `"1"`, `TRUE`, `true`, `on`, or `open`. If the value is nested then use a [template](/docs/configuration/templating/#processing-incoming-data). - -```json -{ - "name": "Binary sensor", - "state": { - "open": "true", - "timestamp": "2016-06-20 15:42:52.926733" - } -} -``` - -To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: rest - resource: http://IP_ADDRESS/ENDPOINT -``` - -or for a POST request: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: rest - resource: http://IP_ADDRESS/ENDPOINT - method: POST -``` - -{% configuration %} -resource: - description: The resource or endpoint that contains the value. - required: true - type: string - default: string -method: - description: The method of the request. - required: false - type: string - default: GET -name: - description: Name of the REST binary sensor. - required: false - type: string - default: REST Binary Sensor -device_class: - description: "The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend." - required: false - type: string -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." - required: false - type: template -payload: - description: The payload to send with a POST request. Usually formed as a dictionary. - required: false - type: string -verify_ssl: - description: Verify the certification of the endpoint. - required: false - type: boolean - default: True -authentication: - description: Type of the HTTP authentication. `basic` or `digest`. - required: false - type: string -username: - description: The username for accessing the REST endpoint. - required: false - type: string -password: - description: The password for accessing the REST endpoint. - required: false - type: string -headers: - description: The headers for the requests. - required: false - type: list, string -{% endconfiguration %} - -

    -Make sure that the URL exactly matches your endpoint or resource. -

    - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title aREST sensor %} - -Instead of using an [aREST](/components/binary_sensor.arest/) binary sensor, you could retrieve the value of a device supporting aREST directly with a REST binary sensor. - -```yaml -binary_sensor: - - platform: rest - resource: http://192.168.0.5/digital/9 - method: GET - name: Light - device_class: light - value_template: {% raw %}'{{ value_json.return_value }}'{% endraw %} -``` - -### {% linkable_title Accessing an HTTP authentication protected endpoint %} - -The REST sensor supports HTTP authentication and customized headers. - -```yaml -binary_sensor: - - platform: rest - resource: http://IP_ADDRESS:5000/binary_sensor - username: ha1 - password: test1 - authentication: basic - headers: - User-Agent: Home Assistant - Content-Type: application/json -``` - -The headers will contain all relevant details. This will also give you the ability to access endpoints that are protected by tokens. - -```bash -Content-Length: 1024 -Host: IP_ADDRESS1:5000 -Authorization: Basic aGExOnRlc3Qx -Accept-Encoding: identity -Content-Type: application/json -User-Agent: Home Assistant -``` diff --git a/source/_components/binary_sensor.rfxtrx.markdown b/source/_components/binary_sensor.rfxtrx.markdown deleted file mode 100644 index 296af16317..0000000000 --- a/source/_components/binary_sensor.rfxtrx.markdown +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: page -title: "RFXtrx Binary Sensor" -description: "Instructions on 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 deleted file mode 100644 index e663d6838c..0000000000 --- a/source/_components/binary_sensor.ring.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Ring Binary Sensor" -description: "Instructions on how to integrate your Ring.com devices within Home Assistant." -date: 2017-04-01 10:00 -sidebar: true -comments: false -sharing: true -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). - -Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: ring -``` - -Configuration variables: - -- **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 movement was detected by the Ring doorbell. - -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 deleted file mode 100644 index a59333d82c..0000000000 --- a/source/_components/binary_sensor.rpi_gpio.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Raspberry Pi GPIO Binary Sensor" -description: "Instructions on how to integrate the GPIO sensor capability of a Raspberry Pi into Home Assistant." -date: 2015-08-30 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Binary Sensor -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - -The `rpi_gpio` binary sensor platform allows you to read sensor values of the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). - -To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: rpi_gpio - ports: - 11: PIR Office - 12: PIR Bedroom -``` - -Configuration variables: - -- **ports** array (*Required*): Array of used ports. - - **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). - -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. - diff --git a/source/_components/binary_sensor.rpi_pfio.markdown b/source/_components/binary_sensor.rpi_pfio.markdown deleted file mode 100644 index d02cfaf2da..0000000000 --- a/source/_components/binary_sensor.rpi_pfio.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "PiFace Digital I/O Binary Sensor" -description: "Instructions on how to integrate the PiFace Digital I/O module into Home Assistant as a binary sensor." -date: 2016-05-08 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Binary Sensor -ha_release: 0.45 -ha_iot_class: "Local Push" ---- - -The `rpi_pfio` binary sensor platform allows you to read sensor values of the [PiFace Digital I/O](http://www.piface.org.uk/products/piface_digital/) . - -To use your PiFace Digital I/O module in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: rpi_pfio - ports: - 0: - name: PIR Office - invert_logic: true - 1: - name: Doorbell - settle_time: 50 -``` - -Configuration variables: - -- **ports** array (*Required*): Array of used ports. - - **num** (*Required*): Port number. - - **name** (*Required*): Port name. - - **settle_time** (*Optional*): The time in milliseconds for port debouncing. Default is 2 0ms. - - **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 deleted file mode 100644 index 5d879e4966..0000000000 --- a/source/_components/binary_sensor.satel_integra.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Satel Integra Binary Sensor" -description: "Instructions on 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 deleted file mode 100644 index d16766f316..0000000000 --- a/source/_components/binary_sensor.skybell.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -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.sleepiq.markdown b/source/_components/binary_sensor.sleepiq.markdown deleted file mode 100644 index 0d2170b84c..0000000000 --- a/source/_components/binary_sensor.sleepiq.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "SleepIQ Binary Sensor" -description: "Instructions for how to integrate SleepIQ sensors within Home Assistant." -date: 2016-08-28 8:56 -sidebar: true -comments: false -sharing: true -footer: true -logo: sleepiq.png -ha_category: Binary Sensor -ha_release: 0.29 -ha_iot_class: "Local Polling" ---- - -To get your SleepIQ binary sensors working with Home Assistant, follow the instructions for the general [SleepIQ component](/components/sleepiq/). diff --git a/source/_components/binary_sensor.spc.markdown b/source/_components/binary_sensor.spc.markdown deleted file mode 100644 index 624bebfff2..0000000000 --- a/source/_components/binary_sensor.spc.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "SPC Binary Sensor" -description: "Instructions on how to integrate Vanderbilt SPC binary sensors into Home Assistant." -date: 2017-05-18 22:05 -sidebar: true -comments: false -sharing: true -footer: true -logo: vanderbilt_spc.png -ha_release: 0.47 -ha_category: Binary Sensor -ha_iot_class: "Local Push" ---- - -The `spc` platform allows you to get data from your [Vanderbilt SPC](http://www.spc-intruder-detection.com/ssp-spc/) binary sensors from within Home Assistant. - -Check the [type/class](/components/binary_sensor/) list for a possible visualization of your zone. Currently motion, smoke and door sensors are supported. - -The requirement is that you have setup your [SPC hub](/components/spc/). diff --git a/source/_components/binary_sensor.tapsaff.markdown b/source/_components/binary_sensor.tapsaff.markdown deleted file mode 100644 index 233596e6bd..0000000000 --- a/source/_components/binary_sensor.tapsaff.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Taps Aff" -description: "Instructions on how to use the Taps Aff binary sensor in Home Assistant." -date: 2017-05-28 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tapsaff.png -ha_category: Weather -featured: false -ha_release: 0.47 -ha_iot_class: "Local Polling" ---- - - -The `tapsaff` binary sensor provides the 'Taps Aff' status for a given location within the UK using [Taps Aff](http://www.taps-aff.co.uk). - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: tapsaff - location: glasgow -``` - -Configuration variables: - -- **location** (*Required*): The location for the Taps Aff. It must be configured with a UK postcode or city to work. -- **name** (*Optional*): The name to use when displaying this sensor. diff --git a/source/_components/binary_sensor.tcp.markdown b/source/_components/binary_sensor.tcp.markdown deleted file mode 100644 index ff5aed010c..0000000000 --- a/source/_components/binary_sensor.tcp.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: TCP Binary Sensor -description: "Instructions on how to set up TCP binary sensors within Home Assistant." -date: 2016-02-22 11:05 -sidebar: true -comments: false -sharing: true -footer: true -logo: tcp_ip.png -ha_category: Binary Sensor -ha_release: 0.14 ---- - -The TCP Binary Sensor is a type of [TCP Sensor](/components/sensor.tcp/) which is either "off" or "on". In order to use this sensor type, in addition to the configuration for the TCP Sensor, you must supply a `value_on` value to represent what is returned when the device is turned on. - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -binary_sensor: -# Example configuration.yaml entry - platform: tcp - name: TCP Binary Sensor - host: IP_ADDRESS - port: PORT - payload: "r State\n" - value_on: 1 - timeout: 5 -``` - -Configuration options for the a TCP Sensor: - -- **name** (*Required*): The name you'd like to give the sensor in Home Assistant. -- **host** (*Required*): The hostname/IP address to connect to. -- **port** (*Required*): The port to connect to the host on. -- **payload** (*Required*): What to send to the host in order to get the response we're interested in. -- **value_on** (*Required*): The value returned when the device is "on". -- **timeout** (*Optional*): How long in seconds to wait for a response from the service before giving up and disconnecting. Defaults to 10. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. By default it's assumed that the entire response is the value. -- **buffer_size** (*Optional*): The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default. Defaults to 1024. - diff --git a/source/_components/binary_sensor.tellduslive.markdown b/source/_components/binary_sensor.tellduslive.markdown deleted file mode 100644 index fc0b988bbf..0000000000 --- a/source/_components/binary_sensor.tellduslive.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Telldus Binary Sensor" -description: "Instructions on 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 deleted file mode 100644 index 7cc7af6285..0000000000 --- a/source/_components/binary_sensor.template.markdown +++ /dev/null @@ -1,204 +0,0 @@ ---- -layout: page -title: "Template Binary Sensor" -description: "Instructions on 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`. - -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: - friendly_name: "Sun is up" - value_template: >- - {{ states.sun.sun.attributes.elevation|float > 0 }} -``` -{% endraw %} - -{% configuration binary_sensor.template %} - sensors: - description: List of your sensors. - required: true - type: map - keys: - sensor_name: - description: The slug of the sensor. - required: true - type: map - keys: - friendly_name: - description: Name to use in the frontend. - required: false - type: string - entity_id: - description: A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. - required: false - type: string, list - 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 - icon_template: - description: Defines a template for the icon of the sensor. - required: false - type: template - entity_picture_template: - description: Defines a template for the entity picture of the sensor. - required: false - 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 %} - -## {% 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 %} - -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: - friendly_name: "Furnace Running" - device_class: heat - value_template: "{{ states('sensor.furnace')|float > 2.5 }}" -``` -{% endraw %} - -### {% 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/). - -{% raw %} -```yaml -binary_sensor: - - platform: template - sensors: - movement: - device_class: motion - value_template: "{{ is_state('switch.movement', 'on') }}" - door: - device_class: opening - value_template: "{{ is_state('switch.door', 'on') }}" -``` -{% endraw %} - -### {% linkable_title Combining Multiple Sensors %} - -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. - -{% raw %} -```yaml -binary_sensor: - - platform: template - sensors: - co: - friendly_name: "CO" - device_class: gas - 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') }} -``` -{% endraw %} - -### {% 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 `delay_off`, we can have this sensor only turn off if -there has been no washer activity for 5 minutes. - -{% raw %} -```yaml -# Determine when the washing machine has a load running. -binary_sensor: - - platform: template - sensors: - 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: - 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 deleted file mode 100644 index c7c1948ae3..0000000000 --- a/source/_components/binary_sensor.tesla.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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 deleted file mode 100644 index 21cc02b9fd..0000000000 --- a/source/_components/binary_sensor.threshold.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "Threshold Binary Sensor" -description: "Instructions on how to integrate threshold binary sensors into Home Assistant." -date: 2016-11-26 12:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Binary Sensor -ha_iot_class: "Local Polling" -ha_release: 0.34 ---- - - -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. It support also a range if `lower` and `upper` are given. - -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. - -{% raw %} -```yaml -{{ states.sensor.furnace.state > 2.5 }} -``` -{% endraw %} - -To enable the threshold sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: threshold - entity_id: sensor.random - lower: 20 -``` - -{% configuration %} -entity_id: - description: "The entity to monitor. Only [sensors](/components/sensor/) are supported." - required: true - type: entity_id -lower: - description: The lower threshold which the observed value is compared against. - required: false - type: float -upper: - description: The upper threshold which the observed value is compared against. - required: false - type: float -hysteresis: - description: The distance the observed value must be from the threshold before the state is changed. - required: false - type: float - default: 0.0 -name: - description: Name of the sensor to use in the frontend. - required: false - type: string - default: -{% endconfiguration %} - diff --git a/source/_components/binary_sensor.trend.markdown b/source/_components/binary_sensor.trend.markdown deleted file mode 100644 index ae8e37c55a..0000000000 --- a/source/_components/binary_sensor.trend.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: page -title: "Trend Binary Sensor" -description: "Instructions on how to integrate Trend binary sensors into Home Assistant." -date: 2016-09-05 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Binary Sensor -logo: home-assistant.png -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 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: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: trend - sensors: - solar_angle: - entity_id: sensor.cpu_speed -``` - -Configuration variables: - -- **sensors** array (*Required*): List of your sensors. - - **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. - - **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. - -This example indicates `true` if the sun is still rising: - -```yaml -binary_sensor: - - platform: trend - sensors: - sun_rising: - entity_id: sensor.cpu_speed -``` - -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 -``` diff --git a/source/_components/binary_sensor.upcloud.markdown b/source/_components/binary_sensor.upcloud.markdown deleted file mode 100644 index 6cae22e876..0000000000 --- a/source/_components/binary_sensor.upcloud.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: UpCloud Binary Sensor -description: Instructions on how to set up UpCloud binary sensors within Home Assistant. -date: 2018-01-28 20:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: System Monitor -logo: upcloud.png -ha_release: 0.65 -ha_iot_class: Cloud Polling ---- - -The `upcloud` binary sensor platform allows you to monitor your UpCloud servers. - -To use your UpCloud servers, you first have to set up your [UpCloud hub](/components/upcloud/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: upcloud - servers: - - 002167b7-4cb1-44b7-869f-e0900ddeeae1 - - 00886296-6137-4074-afe3-068e16d89d00 -``` - -{% configuration %} -servers: - description: List of servers you want to monitor. - required: true - type: list -{% endconfiguration %} diff --git a/source/_components/binary_sensor.velbus.markdown b/source/_components/binary_sensor.velbus.markdown deleted file mode 100644 index 7c9c9ef62d..0000000000 --- a/source/_components/binary_sensor.velbus.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -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.vera.markdown b/source/_components/binary_sensor.vera.markdown deleted file mode 100644 index d5e5d9fb14..0000000000 --- a/source/_components/binary_sensor.vera.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Vera Binary Sensor" -description: "Instructions on how to integrate Vera binary sensors into Home Assistant." -date: 2016-03-26 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Binary Sensor -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -The `vera` platform allows you to get data from your [Vera](http://getvera.com/) binary sensors from within Home Assistant. - -They will be automatically discovered if the vera component is loaded. diff --git a/source/_components/binary_sensor.verisure.markdown b/source/_components/binary_sensor.verisure.markdown deleted file mode 100644 index 1f9b9f0f4e..0000000000 --- a/source/_components/binary_sensor.verisure.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Verisure Binary Sensor" -description: "Instructions on 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 deleted file mode 100644 index a78cb30dc3..0000000000 --- a/source/_components/binary_sensor.vultr.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -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 deleted file mode 100644 index 1d23f5bf7c..0000000000 --- a/source/_components/binary_sensor.wink.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Wink Binary Sensor" -description: "Instructions on how to setup the Wink binary sensors within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Binary Sensor -ha_release: 0.14 -ha_iot_class: "Cloud Polling" ---- - - -The Wink binary sensor platform allows you to get data from your [Wink](http://www.wink.com/) binary sensors. - -The requirement is that you have setup [Wink](/components/wink/). - - -### {% linkable_title Supported Binary sensor devices %} - -- Smoke and CO detectors (No Wink hub required for Nest) -- Window/Door sensors -- Motion sensors -- Ring Door bells (No hub required) -- Liquid presence sensors -- Z-wave lock key codes -- Lutron connected bulb remote buttons -- 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 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 deleted file mode 100644 index 1ba1f8bd8c..0000000000 --- a/source/_components/binary_sensor.workday.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "Workday Binary Sensor" -description: "Steps to configure the binary workday sensor." -date: 2017-03-13 21:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Binary Sensor -ha_iot_class: "Local Polling" -ha_release: 0.41 ---- - -The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also uses the python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays. - -## {% linkable_title Configuration %} - -Check the [country list](https://github.com/dr-prodigy/python-holidays#available-countries) for available province. - -To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: workday - country: DE - workdays: [mon, wed, fri] -``` - -Configuration variables: - -- **name** (*Optional*): A name for this sensor. Defaults to *Workday Sensor* -- **country** (*Required*): Country code according to [holidays](https://pypi.python.org/pypi/holidays/0.9.4) notation. -- **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.9.4) 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. - -

    -If you use the sensor for Norway (`NO`) you need to wrap `NO`in quotes or write the name in full. Otherwise the value is evaluated as `False`. -If you use the sensor for Canada (`CA`) with Ontario (`ON`) as `province:` then you need to wrap `ON` in quotes. Otherwise the value is evaluated as `True` (check the YAML documentation for further details) and the sensor will not work. -

    - -Example usage for automation: - -```yaml -automation: - alias: Turn on heater on workdays - trigger: - platform: time - at: '08:00:00' - condition: - condition: state - entity_id: 'binary_sensor.workday_sensor' - state: 'on' - action: - service: switch.turn_on - entity_id: switch.heater -``` diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown deleted file mode 100644 index 6f33659f78..0000000000 --- a/source/_components/binary_sensor.xiaomi_aqara.markdown +++ /dev/null @@ -1,310 +0,0 @@ ---- -layout: page -title: "Xiaomi Binary Sensor" -description: "Instructions on 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 (through 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 deleted file mode 100644 index df5853d670..0000000000 --- a/source/_components/binary_sensor.zha.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "ZigBee Home Automation Binary Sensor" -description: "Instructions on how to setup ZigBee Home Automation binary sensors within Home Assistant." -date: 2017-02-22 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Binary Sensor -ha_iot_class: "Local Polling" ---- - -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/binary_sensor.zigbee.markdown b/source/_components/binary_sensor.zigbee.markdown deleted file mode 100644 index 233ebb2a91..0000000000 --- a/source/_components/binary_sensor.zigbee.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "ZigBee Binary Sensor" -description: "Instructions on how to set up ZigBee binary sensors within Home Assistant." -date: 2016-01-28 12:38 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Binary Sensor -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - -A `zigbee` binary sensor in this context is a device connected to one of the digital input pins on a [ZigBee](http://www.zigbee.org/) module. The states reported by such a device are limited to `on` or `off`. By default, a binary sensor is considered `on` when the ZigBee device's digital input pin is held 'high' and considered `off` when it is held `low`. This behavior can be inverted by setting the `on_state` configuration variable to `low`. - -To enable a digital input pin as binary sensor in your installation, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: zigbee - name: Hallway PIR Sensor - pin: 0 -``` - -Configuration variables: - -- **name** (*Required*): The name you would like to give the binary sensor in Home Assistant. -- **pin** (*Required*): The number identifying which pin to use. -- **address** (*Optional*): The long 64-bit address of the remote ZigBee device whose digital input pin you'd like to sample. Do not include this variable if you want to sample the local ZigBee device's pins. -- **on_state** (*Optional*): Either `high` (default) or `low`, depicting whether the binary sensor is considered `on` when the pin is `high` or `low`. - diff --git a/source/_components/binary_sensor.zwave.markdown b/source/_components/binary_sensor.zwave.markdown deleted file mode 100644 index 85c4cc30bb..0000000000 --- a/source/_components/binary_sensor.zwave.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Z-Wave Binary Sensor" -description: "Instructions on how to setup the Z-Wave binary sensors within Home Assistant." -date: 2016-02-22 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Binary Sensor -ha_release: 0.14 -ha_iot_class: "Local Push" ---- - -To get your Z-Wave binary sensors working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown deleted file mode 100644 index 217dcce743..0000000000 --- a/source/_components/blink.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "Blink" -description: "Instructions for how to integrate Blink camera/security system within Home Assistant." -date: 2017-03-05 22:13 -sidebar: true -comments: false -sharing: true -footer: true -logo: blink.png -ha_category: Hub -ha_release: "0.40" -ha_iot_class: "Cloud Polling" ---- - -The `blink` component lets you view camera images and motion events from [Blink](http://blinkforhome.com) camera and security systems. - -You will need your Blink login information (username, usually you email address, and password) to use this module. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -blink: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **username** (*Required*): Your username to login to Blink. -- **password** (*Required*): Your password to login to Blink. - -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 sensor per camera that reports temperature. -* A sensor per camera that reports battery level. -* 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. - -Services: - -This services are available for the `blink` component: - -- arm_system -- arm_camera -- snap_picture - - -For `arm_system`, the value sent can be either `True` or `False` and will arm and disarm the whole Blink system. Arm system example: - -```json -{ - "device_armed": "True" -} -``` - -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 -{ - "friendly_name": "Living Room", - "device_armed": "False" -} -``` - -The `snap_picture` service takes the camera name as the payload and with take a new picture with your camera. - -```json -{ - "friendly_name": "Living Room" -} -``` - -

    - -

    diff --git a/source/_components/bloomsky.markdown b/source/_components/bloomsky.markdown deleted file mode 100644 index 90ebd17355..0000000000 --- a/source/_components/bloomsky.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "BloomSky" -description: "Instructions on how to integrate the BloomSky within Home Assistant." -date: 2016-02-03 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bloomsky.png -ha_category: Hub -ha_release: 0.14 -ha_iot_class: "Cloud Polling" ---- - - -The `bloomsky` component allows you to access your [BloomSky](https://www.bloomsky.com/) weather station's [sensors](/components/sensor.bloomsky), [binary sensors](/components/binary_sensor.bloomsky), and [camera](/components/camera.bloomsky) from Home Assistant. - -Obtain your API key from your [BloomSky dashboard](https://dashboard.bloomsky.com). Click `developers` in the bottom left of the screen. - -To integrate your BloomSky hub with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -bloomsky: - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **api_key** (*Required*): Your BloomSky API key. diff --git a/source/_components/bmw_connected_drive.markdown b/source/_components/bmw_connected_drive.markdown deleted file mode 100644 index 94f493ff24..0000000000 --- a/source/_components/bmw_connected_drive.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: page -title: "BMW Connected Drive" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." -date: 2018-01-10 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bmw.png -ha_category: Hub -ha_release: 0.64 ---- - -This component lets you retrieve data on your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account, and a Connected Drive enabled vehicle for this to work. - -For compatibility with your BMW vehicle check the [bimmer_connected page](https://github.com/m1n3rva/bimmer_connected) on github. - -To enable this component in your installation, add the following to your -`configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -bmw_connected_drive: - name: - username: USERNAME_BMW_CONNECTED_DRIVE - password: PASSWORD_BMW_CONNECTED_DRIVE - region: one of "north_america", "china" , "rest_of_world" -``` - -{% configuration %} -bmw_connected_drive: - description: configuration - required: true - type: map - keys: - name: - description: Name of your account in Home Assistant. - required: true - type: string - username: - description: Your BMW Connected Drive username. - required: true - type: string - password: - description: Your BMW Connected Drive password. - required: true - type: string - region: - description: "The region of your Connected Drive account. Please use of these values: `north_america`, `china`, `rest_of_world`" - required: true - type: string -{% endconfiguration %} - -## {% linkable_title Services %} - -The `bmw_connected_drive` component offers several services. In case you need to provide the vehicle identification number (VIN) as a parameter, you can see the VIN in the attributes of the device tracker for the vehicle. The VIN is a 17 digit alphanumeric string, e.g., `WBANXXXXXX1234567`. - -Using these services will impact the state of your vehicle. So use these services with care! - -### {% linkable_title Locking and unlocking %} - -The vehicle can be locked and unlocked via the lock component that is created automatically for each vehicle. Before invoking these services, make sure it's safe to lock/unlock the vehicle in the current situation. - -### {% linkable_title Air condition %} - -The air condition of the vehicle can be activated with the service `bmw_connected_drive.activate_air_conditioning`. - -What exactly is started here depends on the type of vehicle. It might range from just ventilation over auxiliary heating to real air conditioning. If your vehicle is equipped with auxiliary heating, only trigger this service if the vehicle is parked in a location where it is safe to use it (e.g., not in an underground parking or closed garage). - -The vehicle is identified via the parameter `vin`. - -### {% linkable_title Sound the horn %} - -The service `bmw_connected_drive.sound_horn` sounds the horn of the vehicle. Use this feature responsibly, as it might annoy your neighbors. The vehicle is identified via the parameter `vin`. - -### {% linkable_title Flash the lights %} - -The service `bmw_connected_drive.light_flash' flashes the lights of the vehicle. The vehicle is identified via the parameter `vin`. - -### {% linkable_title Update the state %} - -The service `bmw_connected_drive.update_state`fetches the last state of the vehicles of all your accounts from the BMW server. This does *not* trigger an update from the vehicle; it gets the data from the BMW servers. So this service does *not* interact with your vehicles. - -This service does not require any attributes. - -## {% linkable_title Disclaimer %} - -This software is not affiliated with or endorsed by BMW Group. diff --git a/source/_components/browser.markdown b/source/_components/browser.markdown deleted file mode 100644 index 6325fef367..0000000000 --- a/source/_components/browser.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Browser" -description: "Instructions on how to setup the browser component with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Utility ---- - - -The `browser` component provides a service to open URLs in the default browser on the host machine. - -To load this component, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -browser: -``` - -#### {% linkable_title Service `browser/browse_url` %} - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `url` | no | The URL to open. - - -### {% linkable_title Usage %} - -To use this service, choose **Call Service** from the **Developer Tools**. Choose the service *browser/browse_url* from the list of **Available services:** and enter the URL into the **Service Data** field and hit **CALL SERVICE**. - -```json -{"url": "http://www.google.com"} -``` - -This will open the given URL on the host machine. diff --git a/source/_components/calendar.caldav.markdown b/source/_components/calendar.caldav.markdown deleted file mode 100644 index 8ea6b6ad08..0000000000 --- a/source/_components/calendar.caldav.markdown +++ /dev/null @@ -1,169 +0,0 @@ ---- -layout: page -title: "CalDav" -description: "Instructions on how to integrate a WebDav calendar into Home Assistant." -date: 2017-11-27 23:14 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Calendar -ha_iot_class: "Cloud Polling" -ha_release: "0.60" ---- - - -The `caldav` platform allows you to connect to your WebDav calendar and generate binary sensors. A different sensor will be created for each individual calendar, or you can specify custom calendars which match a criteria you define (more on that below). These sensors will be `on` if you have an on going event in that calendar or `off` if the event is later in time, or if there is no event at all. The WebDav calendar get updated roughly every 15 minutes. - -### {% linkable_title Prerequisites %} - -You need to have a CalDav server and credentials for it. This component was tested against [Baikal](http://sabre.io/baikal/) but any component complying with the RFC4791 should work. [Nextcloud](https://nextcloud.com/) and [Owncloud](https://owncloud.org/) work fine. - -You might need some additional system packages to compile the Python caldav library. On a Debian based system, install them by: - -```bash -$ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev -``` - -### {% linkable_title Basic Setup %} - -To integrate a WebDav calendar in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry for baikal -calendar: - - platform: caldav - username: john.doe@test.com - password: !secret caldav - url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default -``` - -```yaml -# Example configuration.yaml entry for nextcloud, calendars will be found automatically -calendar: - - platform: caldav - username: john.doe - password: !secret caldav - url: https://nextcloud.example.com/remote.php/dav -``` - -This example will generate default binary sensors for each calendar you have in your account. Those calendars will be `on` when there is an ongoing event and `off` if not. Events that last a whole day are ignored in those calendars. You have to setup custom calendars in order to take them into account or for advanced event filtering. - - -### {% linkable_title Custom calendars %} - -You have the possibility to create multiple binary sensors for events that match certain conditions. - -```yaml -# Example configuration.yaml entry -calendar: - - platform: caldav - username: john.doe@test.com - password: !secret caldav - url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default - custom_calendars: - - name: 'HomeOffice' - calendar: 'Agenda' - search: 'HomeOffice' - - name: 'WarmupFlat' - calendar: 'Agenda' - search: 'Warmup' -``` - -This will create two binary sensors for the calendar name Agenda: "HomeOffice" and "WarmupFlat". Those sensors will be `on` if there is an ongoing event matching the regular expression specified in `search`. In custom calendars, events that last a whole day are taken into account. - -Please note that when you configure custom calendars, the default ones are not created anymore. - -{% configuration %} -url: - required: true - description: The full URL to your calendars. - type: string -username: - required: false - description: Username for authentication. - type: string -password: - required: false - description: Password for authentication. - type: string -calendars: - required: false - description: List of the calendars to filter. Empty or absent means no filtering, i.e. all calendars will be added. - type: list -custom_calendars: - required: false - description: Details on any custom binary sensor calendars you want to create. - type: list - keys: - name: - required: true - description: The name of your custom calendar. - type: string - calendar: - required: true - description: The source calendar to search on. - type: string - search: - required: true - description: Regular expression for filtering the events based on the content of their summary, description or location. - type: string -{% endconfiguration %} - - -### {% linkable_title Sensor attributes %} - - - **offset_reached**: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting !!-10 would trigger this attribute to be on 10 minutes before the event starts. - - **all_day**: `True/False` if this is an all day event. Will be `False` if there is no event found. - - **message**: The event title with the `search` values extracted. So in the above example for `offset_reached` the message would be set to Very important meeting - - **description**: The event description. - - **location**: The event Location. - - **start_time**: Start time of event. - - **end_time**: End time of event. - -### {% linkable_title Examples %} - -All events of the calendars "private" and "holidays". Note that all day events are not included. -```yaml -# Example configuration.yaml entry for nextcloud -calendar: - - platform: caldav - url: https://nextcloud.example.com/remote.php/dav - username: 'me' - password: !secret caldav - calendars: - - private - - holidays -``` - -Full example with automation to wake up to music if not holiday. Prerequisite: you have a calendar named "work" where you create calendar entries containing "Holiday". - -Custom calendar names are built from the main calendar + name of the custom calendar. - -```yaml -# configuration.yaml -calendar: - - platform: caldav - url: https://nextcloud.example.com/remote.php/dav - username: 'me' - password: !secret caldav - custom_calendars: - - name: holiday - calendar: work - search: 'Holiday' - -# automations.yaml -- id: wakeup - alias: worktime wakeup - trigger: - platform: time - at: 06:40:00 - action: - - service: media_player.media_play - entity_id: media_player.bedroom - condition: - - condition: state - entity_id: calendar.work_holiday - state: 'off' - -``` diff --git a/source/_components/calendar.google.markdown b/source/_components/calendar.google.markdown deleted file mode 100644 index 9825c5f9cc..0000000000 --- a/source/_components/calendar.google.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: page -title: "Google Calendar Event" -description: "Instructions on how to use Google Calendars in Home Assistant." -date: 2015-05-08 17:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: google_calendar.png -ha_category: Calendar -ha_iot_class: "Cloud Polling" -ha_release: 0.33 ---- - - -The `google` calendar platform allows you to connect to your [Google Calendars](https://calendar.google.com) and generate binary sensors. The sensors created can trigger based on any event on the calendar or only for matching events. When you first setup this component it will generate a new configuration file `google_calendars.yaml` that will contain information about all of the calendars you can see. - -## {% linkable_title Prerequisites %} - -Generate a Client ID and Client Secret on [Google Developers Console](https://console.developers.google.com/start/api?id=calendar). - -1. Follow the wizard using the following information. -1. When it gets to the point of asking _Which API are you using?_ just click cancel. -1. Under APIs & Services > Credentials, click on the tab 'OAuth consent screen'. -1. Set 'Product name shown to users' to anything you want. We suggest Home-Assistant. -1. Save this page. You don't have to fill out anything else there. -1. Click 'Create credentials' -> OAuth client ID. -1. Set the Application type to 'Other' and give this credential set a name then click Create. -1. Save the client ID and secret as you will need to put these in your `configuration.yaml` file. -1. Click on "Library", search for "Google Calendar API" and enable it. - -## {% linkable_title Configuration %} - -To integrate Google Calendar in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -google: - client_id: YOUR_CLIENT_ID - client_secret: YOUR_CLIENT_SECRET -``` - -{% configuration %} -client_id: - description: Use the value you generated in the Prerequisites stage. - required: true - type: string -minimum: - description: Use the value you generated in the Prerequisites stage. - required: true - type: string -track_new_calendar: - description: Will automatically generate a binary sensor when a new calendar is detected. The system scans for new calendars only on startup. - required: false - type: boolean - default: true -{% endconfiguration %} - -The next steps will require you to have Home Assistant running. - -After you have it running complete the Google authentication that pops up. It will give you a URL and a code to enter. This will grant your Home Assistant service access to all the Google Calendars that the account you authenticate with can read. This is a Read-Only view of these calendars. - -## {% linkable_title Calendar Configuration %} - -Editing the `google_calendars.yaml` file. - -A basic entry for a single calendar looks like: - -```yaml -- cal_id: "*****@group.calendar.google.com" - entities: - - device_id: test_everything - name: Give me everything - track: true -- cal_id: "*****@group.calendar.google.com" - entities: - - device_id: test_important - name: Important Stuff - track: true - search: "#Important" - offset: "!!" - - device_id: test_unimportant - name: UnImportant Stuff - track: true - search: "#UnImportant" -``` - -Variables: - -- **cal_id**: The Google generated unique id for this calendar. **DO NOT CHANGE** -- **entities**: Yes, you can have multiple sensors for a calendar! - - **device_id**: (*Required*): The name that all your automations/scripts will use to reference this device. - - **name**: (*Required*): What is the name of your sensor that you'll see in the frontend. - - **track**: (*Required*): Should we create a sensor `True` or ignore it `False`? - - **search**: (*Optional*): If set will only trigger for matched events. - - **offset**: (*Optional*): A set of characters that precede a number in the event title for designating a pre-trigger state change on the sensor. (Default: `!!`) -  - **ignore_availablilty**: (*Optional*): Should we respect `free`/`busy` flags? (Defaults to `true`) -   -From this we will end up with the binary sensors `calendar.test_unimportant` and `calendar.test_important` which will toggle themselves on/off based on events on the same calendar that match the search value set for each. You'll also have a sensor `calendar.test_everything` that will not filter events out and always show the next event available. - -But what if you only wanted it to toggle based on all events? Just leave out the *search* parameter. - -

    -If you use a `#` sign for `search` then wrap the whole search term in quotes. Otherwise everything following the hash sign would be considered a YAML comment. -

    - -### {% linkable_title Sensor attributes %} - - - **offset_reached**: If set in the event title and parsed out will be `on`/`off` once the offset in the title in minutes is reached. So the title `Very important meeting #Important !!-10` would trigger this attribute to be `on` 10 minutes before the event starts. - - **all_day**: `True`/`False` if this is an all day event. Will be `False` if there is no event found. - - **message**: The event title with the `search` and `offset` values extracted. So in the above example for **offset_reached** the **message** would be set to `Very important meeting` - - **description**: The event description. - - **location**: The event Location. - - **start_time**: Start time of event. - - **end_time**: End time of event. diff --git a/source/_components/calendar.markdown b/source/_components/calendar.markdown deleted file mode 100644 index 4b69b5e6fe..0000000000 --- a/source/_components/calendar.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Calendar" -description: "Instructions on how to integrate calendars within Home Assistant." -date: 2016-11-19 08:36 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The calendar component allows you to integrate your calendars into Home Assistant. diff --git a/source/_components/calendar.todoist.markdown b/source/_components/calendar.todoist.markdown deleted file mode 100644 index c416ddb50d..0000000000 --- a/source/_components/calendar.todoist.markdown +++ /dev/null @@ -1,152 +0,0 @@ ---- -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](/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, `calendar.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 are two example JSON payloads resulting in the same task: - -```json -{ - "content": "Pick up the mail", - "project": "Errands", - "labels":"Homework,School", - "priority":3, - "due_date":"2017-09-12 14:00" -} -``` - -```json -{ - "content": "Pick up the mail", - "project": "Errands", - "labels":"Homework,School", - "priority":3, - "due_date_string":"tomorrow at 14:00", - "due_date_lang":"en" -} -``` - -- **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_string** (*Optional*): When the task should be due, in [natural language](https://support.todoist.com/hc/en-us/articles/205325931-Dates-and-Times). Mutually exclusive with `due_date` - -- **due_date_lang** (*Optional*): When `due_date_string` is set, it is posisble to set the language. - Valid languages are: `en`, `da`, `pl`, `zh`, `ko`, `de`, `pt`, `ja`, `it`, `fr`, `sv`, `ru`, `es`, `nl` - -- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format. Mutually exclusive with `due_date_string`. - -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 deleted file mode 100644 index 2aa3da2313..0000000000 --- a/source/_components/camera.abode.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Abode Camera" -description: "Instructions on 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 deleted file mode 100644 index 73a6ca444f..0000000000 --- a/source/_components/camera.amcrest.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: page -title: "Amcrest IP Camera" -description: "Instructions on how to integrate Amcrest IP cameras within Home Assistant." -date: 2016-11-24 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: amcrest.png -ha_category: Camera -ha_iot_class: "Local Polling" -ha_release: 0.34 ---- - -To get your [Amcrest](https://amcrest.com/) cameras working within Home Assistant, please follow the instructions for the general [Amcrest component](/components/amcrest). - -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 -``` - -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 deleted file mode 100644 index 8aa3455faa..0000000000 --- a/source/_components/camera.android_ip_webcam.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Android IP Webcam Camera" -description: "Instructions on 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 deleted file mode 100644 index a634e8d8d9..0000000000 --- a/source/_components/camera.arlo.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Arlo Camera" -description: "Instructions on how to integrate your Netgear Arlo cameras within Home Assistant." -date: 2016-05-30 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: arlo.png -ha_category: Camera -ha_release: 0.46 -ha_iot_class: "Cloud Polling" ---- - -To get your [Arlo](https://arlo.netgear.com/) cameras working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo). - -This component is not yet able to live stream from your Arlo camera, but it will be able to playback the last video capture. - -Once you have enabled the [Arlo component](/components/arlo), add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: arlo - ffmpeg_arguments: '-pred 1 -q:v 2' -``` - -Configuration variables: - -- **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](/components/ffmpeg/) documentation. diff --git a/source/_components/camera.august.markdown b/source/_components/camera.august.markdown deleted file mode 100644 index 660a9504c5..0000000000 --- a/source/_components/camera.august.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "August Camera" -description: "Instructions on how to integrate your August devices into Home Assistant." -date: 2018-02-17 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: august.png -ha_category: Camera -ha_release: "0.64" -ha_iot_class: "Cloud Polling" ---- - -The `august` camera platform allows you to view the latest camera image (triggered by motion) by your [August](http://august.com) device in Home Assistant. - -To add `august` camera to your installation, follow instructions in [August component](/components/august/). diff --git a/source/_components/camera.axis.markdown b/source/_components/camera.axis.markdown deleted file mode 100644 index ec725b06ec..0000000000 --- a/source/_components/camera.axis.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Axis Camera" -description: "Instructions on how to setup Axis cameras within Home Assistant." -date: 2017-05-01 19:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: axis.png -ha_category: Camera -ha_release: "0.45" -ha_iot_class: "Local Polling" ---- - -The `Axis` camera platform allows you to stream video from your [Axis](https://www.axis.com/) cameras. - -The requirement is that you have setup your [Axis camera](/components/axis/). diff --git a/source/_components/camera.blink.markdown b/source/_components/camera.blink.markdown deleted file mode 100644 index 64a6eeb6f3..0000000000 --- a/source/_components/camera.blink.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Blink Camera" -description: "Instructions for how to setup Blink cameras within Home Assistant." -date: 2017-03-05 22:13 -sidebar: true -comments: false -sharing: true -footer: true -logo: blink.png -ha_category: Camera -ha_release: "0.40" -ha_iot_class: "Cloud Polling" ---- - -

    -To get your Blink cameras working with Home Assistant, follow the instructions for the general [Blink component](/components/blink/). -

    diff --git a/source/_components/camera.bloomsky.markdown b/source/_components/camera.bloomsky.markdown deleted file mode 100644 index bd6f8a58b9..0000000000 --- a/source/_components/camera.bloomsky.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "BloomSky Camera" -description: "Instructions on how to integrate the BloomSky camera within Home Assistant." -date: 2016-02-03 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bloomsky.png -ha_category: Camera -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - - -The `bloomsky` camera component allows you to view the current photo created by the camera in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with [BloomSky sensors](/components/sensor.bloomsky). - -To enable this camera in your installation, set up the [BloomSky component](/components/bloomsky) with your API key and add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: bloomsky -``` diff --git a/source/_components/camera.canary.markdown b/source/_components/camera.canary.markdown deleted file mode 100644 index 8e5f07f461..0000000000 --- a/source/_components/camera.canary.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Canary Camera" -description: "Instructions on how to integrate your Canary devices into Home Assistant." -date: 2017-12-07 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: canary.png -ha_category: Camera -ha_release: "0.60" -ha_iot_class: "Cloud Polling" ---- - -The `canary` camera platform allows you to watch the live stream of your [Canary](https://canary.is) camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. - -To add `canary` camera to your installation, follow instructions in [Canary component](/components/canary/). Once you have [Canary component](/components/canary/) setup, your [Canary](https://canary.is) camera(s) should show up automatically. - -You can add the following to your `configuration.yaml` file to configure `canary` camera with optional settings: - -```yaml -camera: - - platform: canary -``` - -{% configuration %} - ffmpeg_arguments: - description: Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg). - required: false - type: string -{% endconfiguration %} diff --git a/source/_components/camera.dispatcher.markdown b/source/_components/camera.dispatcher.markdown deleted file mode 100644 index 26eb74febc..0000000000 --- a/source/_components/camera.dispatcher.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Dispatcher IP Camera" -description: "Instructions on how to integrate internal dispatcher cameras within Home Assistant." -date: 2017-03-08 00:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Camera -logo: camcorder.png -ha_release: "0.40" -ha_iot_class: "depends" ---- - -

    -This platform is meant for developers only. -

    - -The `dispatcher` camera platform allows developers to create virtual camera's. - -You would normally not add this camera to your configuration directly but have it be discovered by one of the components that uses it. - -```yaml -# Example configuration.yaml entry -camera: - - platform: dispatcher - signal: name_of_dispatcher_signal -``` - -To update the image from another piece of code, run this from an async context: - -```python -from homeassistant.helpers.dispatcher import async_dispatcher_send - -async_dispatcher_send(hass, 'name_of_dispatcher_signal', image_data) -``` - -Configuration variables: -- **signal** (*Required*): The signal name of dispatcher signal they send image data to this camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. diff --git a/source/_components/camera.doorbird.markdown b/source/_components/camera.doorbird.markdown deleted file mode 100644 index ce23d94672..0000000000 --- a/source/_components/camera.doorbird.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "DoorBird Camera" -description: "Instructions on 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 previous 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 -``` diff --git a/source/_components/camera.ffmpeg.markdown b/source/_components/camera.ffmpeg.markdown deleted file mode 100644 index 481c835a15..0000000000 --- a/source/_components/camera.ffmpeg.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "FFmpeg Camera" -description: "Instructions on how to integrate a video feed via FFmpeg as a camera within Home Assistant." -date: 2016-08-13 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ffmpeg.png -ha_category: Camera -ha_release: 0.26 -ha_iot_class: "Local Polling" ---- - - -The `ffmpeg` platform allows you to use any video feed as a camera in Home Assistant via [FFmpeg](http://www.ffmpeg.org/). This video source must support multiple simultaneous reads, because for every concurrent Home Assistant user, a connection will be made to the source every 10 seconds. Normally this should not be a problem. - -To enable your FFmpeg feed in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: ffmpeg - input: FFMPEG_SUPPORTED_INPUT -``` - -Configuration variables: - -- **input** (*Required*): An FFmpeg-compatible input file, stream, or feed. -- **name** (*Optional*): Override the name of your camera. -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. - -### {% linkable_title Image quality %} - -You can control the image quality with [`extra_arguments`](https://www.ffmpeg.org/ffmpeg-codecs.html#jpeg2000) `-q:v 2-32` or with lossless option `-pred 1`. - - -If you are running into trouble with this sensor, please refer to the [Troubleshooting section](/components/ffmpeg/#troubleshooting). diff --git a/source/_components/camera.foscam.markdown b/source/_components/camera.foscam.markdown deleted file mode 100644 index c9d1aabd50..0000000000 --- a/source/_components/camera.foscam.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Foscam IP Camera" -description: "Instructions on how to integrate Foscam IP cameras within Home Assistant." -date: 2015-09-17 08:01 -sidebar: true -comments: false -sharing: true -footer: true -logo: foscam.png -ha_category: Camera -ha_iot_class: "Local Polling" ---- - - -The `foscam` platform allows you to watch the live stream of your [Foscam](http://www.foscam.com/) IP camera in Home Assistant. - -## {% linkable_title Configuration %} - -To enable your Foscam IP camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: foscam - ip: IP_ADDRESS - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **ip** (*Required*): The IP address your camera. -- **port** (*Optional*): The port that the camera is running on. The default is 88. -- **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. - -

    -There seems to be some issues within Foscam with lengthy passwords and passwords containing certain symbols. Be sure to check your camera's documentation. -

    - -### {% linkable_title Control Foscam PTZ (Pan/Tilt/Zoom) - Home/Away %} - - Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf)). For an example of how this can be done, see the [Foscam IP Camera Pan, Tilt, Zoom Control](/cookbook/foscam_away_mode_PTZ/) Cookbook entry. diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown deleted file mode 100644 index bec1ec5ffe..0000000000 --- a/source/_components/camera.generic.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "Generic IP Camera" -description: "Instructions on how to integrate IP cameras within Home Assistant." -date: 2015-07-11 0:36 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Camera -logo: camcorder.png -ha_release: pre 0.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. - -Home Assistant will serve the images via its server, making it possible to view your IP cameras while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]`. - -To enable this camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: generic - still_image_url: http://194.218.96.92/jpg/image.jpg -``` - -Configuration variables: - -- **still_image_url** (*Required*): The URL your camera serves the image on, eg. http://192.168.1.21:2112/. Can be a [template](/topics/templating/). -- **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. -- **authentication** (*Optional*): Type for authenticating the requests `basic` (default) or `digest`. -- **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. - -

    - - Screenshot showing Google Maps integration in Home Assistant front end. - Example showing the Generic camera platform pointing at a dynamic Google Map image. - -

    - -## {% 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' -``` - -### {% linkable_title Local image with Hass.io %} - -You can show a static image with this platform. Just place the image here: `/config/www/your_image.png` - -```yaml -camera: - - platform: generic - name: Some Image - still_image_url: https://127.0.0.1:8123/local/your_image.png -``` - -### {% linkable_title Sharing a camera feed from one Home Assistant instance to another %} - -If you are running more than one Home Assistant instance (let's call them the 'host' and 'receiver' instances) you may wish to display the camera feed from the host instance on the receiver instance. You can use the [REST API](/developers/rest_api/#get-apicamera_proxycameraltentity_id) to access the camera feed on the host (IP address 127.0.0.5) and display it on the receiver instance by configuring the receiver with the the following: - -```yaml -camera: - - platform: generic - name: Host instance camera feed - still_image_url: https://127.0.0.5:8123/api/camera_proxy/camera.live_view -``` diff --git a/source/_components/camera.local_file.markdown b/source/_components/camera.local_file.markdown deleted file mode 100644 index b2b953041d..0000000000 --- a/source/_components/camera.local_file.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Local File" -description: "Instructions how to use Local File as a Camera within Home Assistant." -date: 2016-06-12 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: file.png -ha_category: Camera -ha_iot_class: "Local Polling" -ha_release: 0.22 ---- - -The `local_file` camera platform allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated. The service `local_file_update_file_path` can be used to update the image using an automation. - -The `local_file` camera can for example be used with various camera platforms that save a temporary images locally. It can also be used to display a graph that you render periodically and will then be displayed in Home Assistant. - -To enable this camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: local_file - file_path: /tmp/image.jpg -``` - -Configuration variables: - - - **file_path** (*Required*): File to serve as the camera. - - **name** (*Optional*): Name of the camera - -### {% linkable_title Service `camera.local_file_update_file_path` %} - -Use this service to change the file displayed by the camera. - -| Service data attribute | Description | -| -----------------------| ----------- | -| `entity_id` | String of the `entity_id` of the camera to update. | -| `file_path` | The full path to the new image file to be displayed. | diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown deleted file mode 100644 index 8d3c12c7e6..0000000000 --- a/source/_components/camera.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "Camera" -description: "Instructions on how to integrate cameras within Home Assistant." -date: 2015-11-09 08:36 -sidebar: true -comments: false -sharing: true -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 snapshot 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 %}. | - -The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. - -For example, the following action in an automation would take a snapshot from "yourcamera" and save it to /tmp with a timestamped filename. - -{% raw %} -```yaml -action: - service: camera.snapshot - data: - entity_id: camera.yourcamera - filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' -``` -{% 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 deleted file mode 100644 index de03528200..0000000000 --- a/source/_components/camera.mjpeg.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Generic MJPEG IP Camera" -description: "Instructions on how to integrate IP cameras within Home Assistant." -date: 2015-11-09 08:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: camcorder.png -ha_category: Camera -ha_release: pre 0.7 -ha_iot_class: "depends" ---- - - -The `mjpeg` camera platform allows you to integrate IP cameras which are capable to stream their video with MJPEG into Home Assistant. - -To enable this camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: mjpeg - mjpeg_url: http://192.168.1.92/mjpeg -``` - -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 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. -- **authentication** (*Optional*): `basic` (default) or `digest` auth for requests. - -

    -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 deleted file mode 100644 index f0e903a37a..0000000000 --- a/source/_components/camera.mqtt.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "MQTT Camera" -description: "Instructions on how to use an MQTT image message as a Camera within Home Assistant." -date: 2017-04-14 00:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Camera -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. 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). - -To enable this camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: mqtt - topic: zanzito/shared_locations/my-device -``` - -Configuration variables: - - - **topic** (*Required*): MQTT topic to subscribe to. - - **name** (*Optional*): Name of the camera - diff --git a/source/_components/camera.neato.markdown b/source/_components/camera.neato.markdown deleted file mode 100644 index 3b959c0bc3..0000000000 --- a/source/_components/camera.neato.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Neato Camera" -description: "Instructions on how to setup the Neato cleaning maps within Home Assistant." -date: 2017-04-05 13:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Camera -ha_release: 0.42 -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/). - -To add `neato` camera to your installation, follow instructions in [Neato component](/components/neato/). diff --git a/source/_components/camera.nest.markdown b/source/_components/camera.nest.markdown deleted file mode 100644 index 607a88c516..0000000000 --- a/source/_components/camera.nest.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Nest Camera" -description: "Instructions on how to integrate Nest cameras into Home Assistant." -date: 2016-12-03 08:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: nest.png -ha_category: Camera -ha_release: 0.34 -ha_iot_class: "Cloud Polling" ---- - -The `nest` platform allows you to watch the live stream of your [Nest](https://nest.com/camera/meet-nest-cam/) camera in Home Assistant. - -

    -You must have the [Nest component](/components/nest/) configured to use this camera. The `nest` camera will automatically be setup when you do. -

    diff --git a/source/_components/camera.netatmo.markdown b/source/_components/camera.netatmo.markdown deleted file mode 100644 index e452d26b41..0000000000 --- a/source/_components/camera.netatmo.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Netatmo Camera" -description: "Instructions on how to integrate Netatmo cameras into Home Assistant." -date: 2016-06-02 08:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: netatmo.png -ha_category: Camera -ha_release: 0.22 -ha_iot_class: "Local Polling" ---- - -### {% linkable_title Basic Configuration %} - -The `netatmo` camera platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) camera. This component allows you to view the current photo created by the Camera. - -To enable the Netatmo camera, you have to set up [netatmo](/components/netatmo/), this will use discovery to add your camera. - -### {% linkable_title Advanced configuration %} - -If you want to select a specific camera, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -camera: - - platform: netatmo -``` - -Configuration variables: - -- **home** (*Optional*): Will display the cameras of this home only. -- **cameras** array (*Optional*): Cameras to use. Multiple entities allowed. - - **camera_name**: Name of the camera to display. - -If **home** and **cameras** are not provided, all cameras will be displayed. For more control over your cameras check the configuration sample below. - -```yaml -# Example configuration.yaml entry -camera: - platform: netatmo - home: home_name - cameras: - - camera_name1 - - camera_name2 -``` diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown deleted file mode 100644 index ed01e31d37..0000000000 --- a/source/_components/camera.onvif.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "ONVIF Camera" -description: "Instructions on how to integrate a ONVIF camera within Home Assistant." -date: 2017-06-09 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: onvif.png -ha_category: Camera -ha_release: 0.47 ---- - - -The `onvif` camera platform allows you to use an ONVIF camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. - -To enable your ONVIF camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: onvif - host: 192.168.1.111 -``` - -Configuration variables: - -- **host** (*Required*): An IP or hostname of the camera. -- **name** (*Optional*): Override the name of your camera. -- **username** (*Optional*): The username for the camera. -- **password** (*Optional*): The password for the camera. -- **port** (*Optional*): The port for the camera. This defaults to 5000. -- **profile** (*Optional*): Video profile that will be used to obtain the stream. This defaults to 0. More details below. -- **extra_arguments** (*Optional*): Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [FFmpeg component](/components/ffmpeg). - -Most of the Onvif cameras support more than one audio/video Profile. Each profile provides different image quality. Usually, the first profile has the highest quality, and it is the profile used by default. However, you may want to use a lower quality image. One of the reasons may be that your hardware isn't able to render the highest quality image in real-time - especially when running on Raspberry Pi. Therefore you can choose which profile do you want to use by setting in config `profile` variable. - -### {% linkable_title Service `camera.onvif_ptz` %} - -If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your camera. - -| Service data attribute | Description | -| -----------------------| ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of cameras. Else targets all. -| `tilt` | Tilt direction. Allowed values: `UP`, `DOWN` -| `pan` | Pan direction. Allowed values: `RIGHT`, `LEFT` -| `zoom` | Zoom. Allowed values: `ZOOM_IN`, `ZOOM_OUT` - -If you are running into trouble with this sensor, please refer to the [Troubleshooting section](/components/ffmpeg/#troubleshooting). diff --git a/source/_components/camera.proxy.markdown b/source/_components/camera.proxy.markdown deleted file mode 100644 index e8a38d4b23..0000000000 --- a/source/_components/camera.proxy.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: page -title: "Camera Proxy" -description: "Instructions on how to integrate a camera proxy within Home Assistant." -date: 2018-03-08 19:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Camera -ha_release: 0.65 ---- - - -The `proxy` camera platform allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output. - -The current post-processing supports resizing the image/MJPEG as well as limiting the maximum refresh rate. - -The current proxy capabilities are intended to reduce the camera bandwidth for slower internet connections. - -To enable this camera in your installation, you must first have an existing working camera configured in Home Assistant. Next, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: proxy - entity_id: camera. - max_stream_width: 360 - max_image_width: 720 -``` - -{% configuration %} - entity_id: - description: The ID of another Home Assistant camera to post-process. - required: true - type: string - name: - description: This parameter allows you to override the name of your camera. - required: false - type: string - max_image_width: - description: The maximum width of single images taken from the camera (aspect ratio will be maintained). - required: false - type: integer - max_stream_width: - description: The maximum width of the MJPEG stream from the camera (aspect ratio will be maintained). - required: false - type: integer - image_quality: - description: The quality level used for resulting JPEG for snapshots. - required: false - type: integer - default: 75 - stream_quality: - description: The quality level used for resulting MJPEG streams. - required: false - type: integer - default: 75 - image_refresh_rate: - description: The minimum time in seconds between generating successive image snapshots. - required: false - type: float - force_resize: - description: Resize the image even if the resulting image would take up more bandwidth than the original. - required: false - type: boolean - cache_images: - description: Preserve the last image and re-send in the case the camera is not responding. - required: false - type: boolean -{% endconfiguration %} - - -## {% linkable_title Examples %} - -Example of using a Camera proxy along with a Foscam camera: - -```yaml -camera: - - platform: foscam - ip: 192.168.1.10 - username: foscam_camera - password: camera_password - name: mycamera - - platform: proxy - entity_id: camera.mycamera - max_stream_width: 360 - max_image_width: 480 - image_refresh_rate: 5.0 -``` diff --git a/source/_components/camera.ring.markdown b/source/_components/camera.ring.markdown deleted file mode 100644 index cd4844ae4b..0000000000 --- a/source/_components/camera.ring.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "Ring 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). Please note that downloading and playing Ring video will require a Ring Protect plan. - -Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file: - -```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](/components/ffmpeg/) documentation. - -Currently it supports doorbell and stickup cameras. - -## {% linkable_title Saving the videos captured by your Ring Door Bell %} - -You can save locally the latest video captured by your Ring Door Bell using the [downloader](/components/downloader) along with either an [automation](/components/automation) or [python_script](/components/python_script). First, enable the [downloader](/components/downloader) component in your configuration by adding the following to your `configuration.yaml`. - -```yaml -downloader: - download_dir: downloads -``` -Then you can use the following `action` in your automation (this will save the video file under `/downloads/ring_/`): - -```yaml -action: - - service: downloader.download_file - data_template: - url: "{{ states.camera.front_door.attributes.video_url }}" - subdir: "{{states.camera.front_door.attributes.friendly_name}}" - filename: "{{states.camera.front_door.attributes.friendly_name}}" -``` - -If you want to use `python_script`, enable it your `configuration.yaml` file first: -```yaml -python_script: -``` -You can then use the following `python_script` to save the video file: - -```python -# obtain ring doorbell camera object -# 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, - 'filename': ring_cam.attributes.get('friendly_name') -} - -# call downloader component to save the video -hass.services.call('downloader', 'download_file', data) -``` diff --git a/source/_components/camera.rpi_camera.markdown b/source/_components/camera.rpi_camera.markdown deleted file mode 100644 index 2033dc5d28..0000000000 --- a/source/_components/camera.rpi_camera.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "Raspberry Pi Camera" -description: "Instructions on how to integrate Raspberry Pi within Home Assistant." -date: 2016-04-08 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Camera -ha_iot_class: "Local Polling" -ha_release: 0.17 ---- - - -The `rpi_camera` platform allows you to integrate the Raspberry Pi camera into Home Assistant. This component uses the application [`raspistill`](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md) to store the image from camera. - -To enable this camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: rpi_camera -``` - -{% configuration %} -image_width: - description: Set the image width. - required: false - default: 640 - type: int -name: - description: Name of the camera. - required: false - default: Raspberry Pi Camera - type: string -image_height: - description: Set the image height. - required: false - default: 480 - type: int -image_quality: - description: Set the image quality (from 0 to 100). - required: false - default: 7 - type: int -image_rotation: - description: Set image rotation (0-359). - required: false - default: 0 - type: int -horizontal_flip: - description: Set horizontal flip (0 to disable, 1 to enable). - required: false - default: 0 - type: int -vertical_flip: - description: Set vertical flip (0 to disable, 1 to enable). - required: false - default: 0 - type: int -timelapse: - description: Takes a picture every this many milliseconds (thousands of a second) - the default means one picture a second. - required: false - default: 1000 - type: int -file_path: - description: Save the picture in a custom file path. - required: false - default: A temporary file is used. - type: string -{% endconfiguration %} - -The given **file_path** must be an existing file because the camera platform setup performs a writeable check on it. Also, keep in mind that the path should be [whitelisted](/docs/configuration/basic/). - diff --git a/source/_components/camera.skybell.markdown b/source/_components/camera.skybell.markdown deleted file mode 100644 index a6b1155d17..0000000000 --- a/source/_components/camera.skybell.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -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 deleted file mode 100644 index 93a2e78ff3..0000000000 --- a/source/_components/camera.synology.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Synology Camera" -description: "Instructions on how to integrate Synology Surveillance Station cameras within Home Assistant." -date: 2016-10-13 08:01 -sidebar: true -comments: false -sharing: true -footer: true -logo: synology.png -ha_category: Camera -ha_release: 0.31 -ha_iot_class: "Local Polling" ---- - -  -The `synology` camera platform allows you to watch the live streams of your [Synology](https://www.synology.com/) Surveillance Station based IP cameras in Home Assistant. - -To enable your Surveillance Station cameras in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Minimum configuration.yaml entry -camera: - - platform: synology - url: IP_ADDRESS_OF_SYNOLOGY_NAS - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **url** (*Required*): The URL to your synology, including port. -- **username** (*Required*): The username for accessing surveillance station. -- **password** (*Required*): The password for accessing surveillance station. -- **timeout** (*Optional*): The timeout in seconds used when connecting to the Surveillance Station. Defaults to 5. -- **whitelist** (*Optional*): A list of which cameras you want to add, the names must be the same as in Surveillance Station. If omitted all cameras are added. -- **verify_ssl** (*Optional*): True to require a valid certificate, False to disable certificate checking. Defaults to `True`. - -A full sample configuration for the `synology` platform is shown below: - -```yaml -# Example configuration.yaml entry -camera: - - platform: synology - url: https://192.168.1.120:5001 - username: YOUR_USERNAME - password: YOUR_PASSWORD - timeout: 15 - verify_ssl: False -``` - -

    -Most users will need to set `verify_ssl` to false unless they have installed a valid SSL certificate in place of the built in self-signed certificate. -

    diff --git a/source/_components/camera.usps.markdown b/source/_components/camera.usps.markdown deleted file mode 100644 index 5ed58ee562..0000000000 --- a/source/_components/camera.usps.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -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.uvc.markdown b/source/_components/camera.uvc.markdown deleted file mode 100644 index 02743bda45..0000000000 --- a/source/_components/camera.uvc.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "UniFi Video Camera" -description: "Instructions on how to integrate UVC cameras within Home Assistant." -date: 2016-02-07 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ubiquiti.png -ha_category: Camera -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - - -The `uvc` component allows you to integrate [UniFi Video Camera (UVC)](https://www.ubnt.com/unifi-video/unifi-video-camera/) into Home Assistant. - -To enable a UVC camera in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: uvc - nvr: IP_ADDRESS - key: API_KEY -``` - -Configuration variables: - -- **nvr** (*Required*): The IP or hostname of the NVR (Network Video Recorder) server. -- **key** (*Required*): The API key available from the NVR web interface. -- **port** (*Optional*): The port number to use for accessing the NVR. -- **password** (*Optional*): The camera password. Defaults to `ubnt` if not given. diff --git a/source/_components/camera.verisure.markdown b/source/_components/camera.verisure.markdown deleted file mode 100644 index 35b4c25e4e..0000000000 --- a/source/_components/camera.verisure.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Verisure Camera" -description: "Instructions on how to setup the Verisure cameras within Home Assistant." -date: 2016-10-22 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: verisure.png -ha_category: Camera -ha_release: 0.31 -ha_iot_class: "Local Polling" ---- - - -The `verisure` camera platform allows you to control your [Verisure](https://www.verisure.com/) cameras. - -The requirement is that you have setup your [Verisure hub](/components/verisure/). - diff --git a/source/_components/camera.xeoma.markdown b/source/_components/camera.xeoma.markdown deleted file mode 100644 index 66603dabb3..0000000000 --- a/source/_components/camera.xeoma.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: page -title: "Xeoma Camera" -description: "Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant" -date: 2018-01-12 20:05 -sidebar: true -comments: false -sharing: true -footer: true -logo: xeoma.png -ha_category: Camera -ha_iot_class: "Local Polling" -ha_release: 0.62 ---- - - -The `Xeoma` camera platform allows you to view the video feeds from a [Xeoma](http://felenasoft.com/xeoma) video surveillance server. - -To enable Xeoma camera feeds, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -camera: - - platform: xeoma - host: http://localhost:10090 -``` - -{% configuration %} -host: - description: The URL of the Xeoma server's web interface. - required: true - type: string -username: - description: The username used to access the Xeoma server's web interface. - required: false - type: string -password: - description: The password used to access the Xeoma server's web interface. - required: false - type: string -new_version: - description: Set to false if the Xeoma server version is 17.5 or earlier. - required: false - default: true - type: boolean -cameras: - description: List of customizations for individual Xeoma cameras. - required: false - type: list - keys: - image_name: - description: The name of the JPEG image for this camera as configured in Xeoma (without .jpg extension). - required: true - type: string - name: - description: The name to display in the frontend for this camera. - required: false - default: The `image_name` for this camera. - type: string - hide: - description: Don't show this camera in Home Assistant. - required: false - default: false - type: boolean -{% endconfiguration %} - -## {% linkable_title Full examples %} - -```yaml -# Example configuration.yaml entry -camera: - - platform: xeoma - host: http://localhost:10090 - username: user - password: secretpassword - new_version: false - cameras: - - image_name: front_porch - name: Front Porch - - image_name: back_patio - hide: true -``` - -To use this platform, you must have the Xeoma Web Server module enabled in at least one of your camera chains. - -This platform will parse the Xeoma web interface to find all enabled cameras and add them all to Home Assistant. You can -hide individual cameras using the platform configuration. - -The `image_name` configuration value for each camera should match the name supplied to the Xeoma Web Server configuration (under _Path to access images_) with the _.jpg_ extension removed. diff --git a/source/_components/camera.yi.markdown b/source/_components/camera.yi.markdown deleted file mode 100644 index cb8975a86c..0000000000 --- a/source/_components/camera.yi.markdown +++ /dev/null @@ -1,91 +0,0 @@ ---- -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 / 27US / 47US -* 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 Assistant, 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. - -

    -Currently, version 0.1.4-beta2 of the custom firmware is the highest supported. Firmwares higher than this version use [Pure-FTPd](https://www.pureftpd.org/project/pure-ftpd), which has a bug that prevents FFmpeg from correctly rendering video files. -

    - -

    -Hassbian users: don't forget to install ffmpeg support on your platform, otherwise, you'll not see video. -

    - -

    -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. Defaults 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/camera.zoneminder.markdown b/source/_components/camera.zoneminder.markdown deleted file mode 100644 index d1fc230ecc..0000000000 --- a/source/_components/camera.zoneminder.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "ZoneMinder Camera" -description: "View ZoneMinder camera streams within Home Assistant." -date: 2017-02-19 18:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: zoneminder.png -ha_category: Camera -ha_release: 0.39 -ha_iot_class: "Local Polling" ---- - - -The `zoneminder` camera platform lets you monitor the current stream of your [ZoneMinder](https://www.zoneminder.com) cameras. - -

    -You must have the [ZoneMinder component](/components/zoneminder/) configured to view the camera stream. -

    - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -camera: - - platform: zoneminder -``` diff --git a/source/_components/canary.markdown b/source/_components/canary.markdown deleted file mode 100644 index 186d704e17..0000000000 --- a/source/_components/canary.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Canary" -description: "Instructions on how to integrate your Canary devices into Home Assistant." -date: 2017-12-07 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: canary.png -ha_category: Hub -ha_release: "0.60" -ha_iot_class: "Cloud Polling" ---- - -The `canary` component allows you to integrate your [Canary](https://canary.is) devices in Home Assistant. - -## {% linkable_title Configuration %} - -You will need your Canary login information (username, usually your email address, and password) to use this module. - -To set it up, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -canary: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} - username: - description: The username for accessing your Canary account. - required: true - type: string - password: - description: The password for accessing your Canary account. - required: true - type: string - timeout: - description: Timeout to wait for connections. - required: false - type: int - default: 10 -{% endconfiguration %} - -Once loaded, your front end will have the following components: - -* A camera image triggered by motion for each camera. -* An alarm control panel for each location. -* A sensor per camera that reports temperature. -* A sensor per camera that reports humidity. -* A sensor per camera that reports air quality. diff --git a/source/_components/climate.daikin.markdown b/source/_components/climate.daikin.markdown deleted file mode 100644 index 2201872a15..0000000000 --- a/source/_components/climate.daikin.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Daikin AC" -description: "Instructions on how to integrate Daikin AC(s) with Home Assistant." -date: 2017-12-03 05:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: daikin.png -ha_category: Climate -ha_release: 0.59 -ha_iot_class: "Local Polling" ---- - - -The `daikin` climate platform integrates Daikin air conditioning systems into Home Assistant, enabling control of setting the following parameters: - -- **mode** (cool, heat, dry, fan only or auto) -- **fan speed** (on supported models) -- **target temperature** -- **swing mode** (on supported models) - -Current temperature is displayed. - -

    -Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant. BRP069A42 does not support setting of fan speed or fan swing mode. -

    - -The platform has been integrated with discovery so all your Daikin AC's climate devices can be automatically discovered. - -To enable the platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: daikin - host: 10.0.0.1 -``` - -{% configuration %} -host: - description: IP or hostname of the device. - required: true - type: string -name: - description: If the device has a name previously set by the user than that name will be used. - required: false - type: string -{% endconfiguration %} - diff --git a/source/_components/climate.ecobee.markdown b/source/_components/climate.ecobee.markdown deleted file mode 100644 index b92b001f37..0000000000 --- a/source/_components/climate.ecobee.markdown +++ /dev/null @@ -1,289 +0,0 @@ ---- -layout: page -title: "Ecobee Thermostat" -description: "Instructions on how to setup the Ecobee thermostats within Home Assistant." -date: 2016-08-26 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ecobee.png -ha_category: Climate -ha_release: 0.9 -ha_iot_class: "Cloud Push" ---- - -

    -To get your Ecobee thermostats working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/). -

    - -## {% linkable_title Concepts %} - -The Ecobee Thermostat supports the following key concepts. - -The _target temperature_ is the temperature that the device attempts -to achieve. The target temperature is either determined by the -currently active climate or it may be overridden by a hold. When the -thermostat is not in auto mode, there is a single target -temperature. When the thermostat is in auto operation mode, there is a -pair of target temperatures: the lower target temperature determines -the lowest desired temperature, while the higher target temperature -determines the highest desired temperature (the thermostat will switch -between heating and cooling to keep the temperature within these -limits). - -A _climate_ is a predefined or user-defined set of states that the -thermostat aims to achieve. The ecobee thermostat provides three predefined -climates: Home, Away, and Sleep. The user can define additional climates. - -A _hold_ is an override of the target temperature defined in the -currently active climate. The temperature targeted in the hold mode may be -explicitly set (temperature hold), it may be derived from a reference -climate (home, away, sleep, etc.), or it may be derived from a vacation -defined by the thermostat. All holds are temporary. Temperature and -climate holds expire when the thermostat transitions to the next climate -defined in its program. A vacation hold starts at the beginning of the -defined vacation period, and expires when the vacation period ends. - -When in _away mode_, the target temperature is permanently overridden by -the target temperature defined for the away climate. The away mode is a -simple way to emulate a vacation mode. - -The _operation mode_ of the device is the currently active operational -modes that the Ecobee thermostat provides: heat, auxHeatOnly, cool, -auto, and off. - - -## {% linkable_title Attributes %} - -The following attributes are provided by the Ecobee Thermostat: -`name`, `temperature_unit`, `current_temperature`, `target_temperature`, -`target_temperature_low`, `target_temperature_high`, `desired_fan_mode`, -`fan`, `current_hold_mode`, `current_operation`, `operation_list`, -`operation_mode`, `mode`, `fan_min_on_time`, `device_state_attributes`, -`is_away_mode_on`, `vacation`, `climate_list`, `aux_heat`. -The attributes `min_temp` and `max_temp` are meaningless constant values. - - -### {% linkable_title Attribute `name` %} - -Returns the name of the Ecobee Thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of the Ecobee Thermostat - -### {% linkable_title Attribute `temperature_unit` %} - -Returns the unit of measurement used for temperature by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of the temperature unit - -### {% linkable_title Attribute `current_temperature` %} - -Returns the current temperature measured by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Currently measured temperature - -### {% linkable_title Attribute `target_temperature` %} - -Returns the target temperature of the thermostat, when the thermostat is -not in auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### {% linkable_title Attribute `target_temperature_low` %} - -Returns the desired heating temperature set in the thermostat when in -auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### {% linkable_title Attribute `target_temperature_high` %} - -Returns the desired cooling temperature set in the thermostat when in -auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### {% linkable_title Attribute `desired_fan_mode` %} - -Returns the desired fan mode of the current operation. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'on', 'off' - -### {% linkable_title Attribute `fan` %} - -Returns the current fan state. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'on', 'off' - -### {% linkable_title Attribute `current_hold_mode` %} - -Returns the current temperature hold, if any. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'temp', 'vacation', 'home', 'away', etc., None - -### {% linkable_title Attribute `current_operation` %} - -Returns the current operation of the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'auto', 'cool', 'heat', 'off' - -### {% linkable_title Attribute `operation_list` %} - -Returns the list of available operation modes. - -| Attribute type | Description | -| ---------------| ----------- | -| List of String | Available operation modes - -### {% linkable_title Attribute `operation_mode` %} - -Returns the current operation mode of the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Currently active operation mode - -### {% linkable_title Attribute `mode` %} - -Returns the climate currently active on the thermostat. The mode -is returned as the user-visible name (rather than the internally used name). - -### {% linkable_title Attribute `fan_min_on_time` %} - -Returns the current fan minimum on time. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Current fan minimum on time in minutes - -### {% linkable_title Attribute `is_away_mode_on` %} - -Returns whether the thermostat is in away mode (see the corresponding -service for more detail). - -### {% linkable_title Attribute `actual humidity` %} - -Returns the humidity as measured by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Current humidity - -### {% linkable_title Attribute `vacation` %} - -Returns the currently active vacation or `None`. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of currently active vacation | - -### {% linkable_title Attribute `climate_list` %} - -Returns the list of climates defined in the thermostat. - -### {% linkable_title Attribute `aux_heat` %} - -Returns the current auxiliary heat state. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'on', 'off' - -## {% linkable_title Services %} - -The following services are provided by the Ecobee Thermostat: -`set_away_mode`, `set_hold_mode`, `set_temperature`, `set_operation_mode`, -`fan_min_on_time`, `resume_program`. -The services `set_aux_heat`, `set_humidity`, `set_fan_mode`, and -`set_swing_mode` offered by the [Climate component](/components/climate/) -are not implemented for this thermostat. - - - -### {% linkable_title Service `set_away_mode` %} - -Turns the away mode on or off for the thermostat. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `away_mode` | no | 'on' or 'off' - - -### {% linkable_title Service `set_hold_mode` %} - -Puts the thermostat into the given hold mode. For 'home', 'away', 'sleep', -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. -It is not possible to set a vacation hold; such hold has to be -defined on the thermostat directly. However, a vacation hold can be -canceled. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | 'temp', 'home', 'away', 'sleep', etc., None - -### {% linkable_title Service `set_temperature` %} - -Puts the thermostat into a temporary hold at the given temperature. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `target_temp_low` | no | Desired heating target temperature (when in auto mode) -| `target_temp_high` | no | Desired cooling target temperature (when in auto mode) -| `temperature` | no | Desired target temperature (when not in auto mode) - -Only the target temperatures relevant for the current operation mode need to -be provided. - -### {% linkable_title Service `set_operation_mode` %} - -Sets the current operation mode of the thermostat. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `operation_mode` | no | 'auto', 'auxHeatOnly', 'cool', 'heat', 'off' - -### {% linkable_title Service `fan_min_on_time` %} - -Sets the fan minimum on time. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `fan_min_on_time` | no | Desired fan minimum on time - -### {% linkable_title Service `resume_program` %} - -Resumes the currently active schedule. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `resume_all` | no | true or false diff --git a/source/_components/climate.econet.markdown b/source/_components/climate.econet.markdown deleted file mode 100644 index 704c6ebf0e..0000000000 --- a/source/_components/climate.econet.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "EcoNet water heater" -description: "Instructions on how to integrate Rheem EcoNet water heaters into Home Assistant." -date: 2017-12-28 14:51 -sidebar: true -comments: false -sharing: true -footer: true -logo: econet.png -ha_category: Climate -ha_release: 0.61.0 -ha_iot_class: "Cloud Polling" ---- - - -The `econet` water heater platform is consuming the information provided by a [EcoNet enabled Rheem water heater](http://www.rheem.com/EcoNet/Home). This component allows you to set the temperature, the operation mode, and enable vaction mode. - -To enable the `econet` water heater platform add the following to your config. - - -```yaml -# Example configuration.yaml entry -climate: - - platform: econet - username: YOUR_ECONET_EMAIL - password: YOUR_ECONET_PASSWORD -``` - -{% configuration %} -username: - description: The username used to connect to your EcoNet account. - required: true - type: string -password: - description: The password used to connect to your EcoNet account. - required: true - type: string -{% endconfiguration %} - - -### {% linkable_title Service `econet_add_vacation` %} - -You can use the service econet/add_vacation to create a new vacation for your EcoNet water heaters. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | The entity id of the water heater to add the vaction to. -| `start_date` | yes | This is a Unix timestamp for when the vaction should start. -| `end_date` | yes | this is a Unix timestamp for when the vaction should end. - -

    -The Unix timestamps can be obtained from the input_datetime component. This will allow you to graphically set the start and end date. -

    - -### {% linkable_title Service `econet_delete_vacation` %} - -You can use the service econet/delete_vacation to remove all vactions from an EcoNet water heater. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | The entity id of the water heater to remove the vaction from. - - diff --git a/source/_components/climate.ephember.markdown b/source/_components/climate.ephember.markdown deleted file mode 100644 index 0b77e6a58b..0000000000 --- a/source/_components/climate.ephember.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -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.57 -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 deleted file mode 100644 index ce833566ff..0000000000 --- a/source/_components/climate.eq3btsmart.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "EQ3 Bluetooth Smart Thermostats" -description: "Instructions on how to integrate EQ3 Bluetooth Smart Thermostats into Home Assistant." -date: 2016-04-18 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eq3.gif -ha_category: Climate -ha_iot_class: "Local Polling" ---- - -The `eq3btsmart` climate platform allows you to integrate EQ3 Bluetooth Smart Thermostats. - -The current functionality allows setting the temperature as well as controlling the supported modes with help of [python-eq3bt](https://github.com/rytilahti/python-eq3bt) library. -As the device doesn't contain a temperature sensor ([read more](https://forum.fhem.de/index.php/topic,39308.15.html)), -we report target temperature also as current one. - -### Testing the connectivity ### -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 - -[00:1A:22:XX:XX:XX] Target 17.0 (mode: auto dst, away: no) -Locked: False -Batter low: False -Window open: False -Boost: False -Current target temp: 21.0 -Current mode: auto dst -Valve: 0 -``` - -### Configuration ### - -```yaml -# Example configuration.yaml entry -climate: - - platform: eq3btsmart - devices: - room1: - mac: '00:11:22:33:44:55' -``` - -Configuration variables: - -- **devices** array (*Required*): List of thermostats. - - **[device-name]** (*Required*): The name to use for the thermostat. - - **mac** (*Required*): MAC address of the thermostat. - diff --git a/source/_components/climate.flexit.markdown b/source/_components/climate.flexit.markdown deleted file mode 100644 index 0281b50756..0000000000 --- a/source/_components/climate.flexit.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Flexit A/C controller" -description: "Instructions on how to integrate Flexit A/C unit into Home Assistant." -date: 2017-06-02 16:30 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: flexit.png -ha_category: Climate -ha_release: 0.47 -ha_iot_class: "Local Polling" ---- - -Integrates [Flexit](https://www.flexit.no/en/) Air Conditioning unit into Home Assistant. - -Requires an CI66 Modbus Adapter [CI66](https://www.flexit.no/en/products/air_handling_unit/accessories_ahu/modul/modbusadapter_ci66/modbus_adapter_ci66_k2-c2-uni/) - -To enable this platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: flexit - slave: 21 -``` - -Configuration variables: - -- **slave** (*Required*): The slave ID of the modbus adapter, set using DIP-switches. -- **name** (*Optional*): Displayed name of the A/C unit - -

    -This component requires the [Modbus](/components/modbus/) component to be set up to work -

    - -Full configuration example including modbus setup shown below: - -DIP-switch settings on the CI66: -1=ON, 2=ON, 3=OFF, 4=ON, 5=OFF, 6=ON, 7=ON, 8=ON - -```yaml -# Full example configuration.yaml entry -modbus: - type: serial - method: rtu - port: /dev/ttyUSB0 - baudrate: 56000 - stopbits: 1 - bytesize: 8 - parity: E - -climate: - - platform: flexit - name: Main A/C - slave: 21 -``` \ No newline at end of file diff --git a/source/_components/climate.fritzbox.markdown b/source/_components/climate.fritzbox.markdown deleted file mode 100644 index 65975ca77c..0000000000 --- a/source/_components/climate.fritzbox.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "Fritzbox Thermostat" -description: "Instructions on how to integrate the AVM Fritzbox thermostat." -date: 2017-11-12 17:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: Climate -ha_release: 0.68 -ha_iot_class: "Local Polling" ---- - -

    -To get AVM fritzbox thermostat follow the instructions for the general [Fritzbox](/components/fritzbox/). -

    - -### {% linkable_title Attributes %} - -The are several attributes that can be useful for automations and templates. - -| Attribute | Description | -| --------- | ----------- | -| `device_locked` | The state of the key lock at the device. -| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. -| `low_battery` | The low battery state indication. diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown deleted file mode 100644 index 19e1a1f1cd..0000000000 --- a/source/_components/climate.generic_thermostat.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "Generic Thermostat" -description: "Turn Home Assistant into a thermostat" -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: heat-control.png -ha_category: Climate -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `generic_thermostat` climate platform is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater or air conditioning under the hood. When in heater mode, if the measured temperature is cooler then the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in air conditioning mode, if the measured temperature is hotter then the target temperature, the air conditioning will be turned on and turned off when required temperature is reached. - -```yaml -# Example configuration.yaml entry -climate: - - platform: generic_thermostat - name: Study - heater: switch.study_heater - target_sensor: sensor.study_temperature -``` - -Configuration variables: - -- **name** (*Required*): Name of thermostat -- **heater** (*Required*): `entity_id` for heater switch, must be a toggle device. Becomes air conditioning switch when `ac_mode` is set to `True` -- **target_sensor** (*Required*): `entity_id` for a temperature sensor, target_sensor.state must be temperature. -- **min_temp** (*Optional*): Set minimum set point available (default: 7) -- **max_temp** (*Optional*): Set maximum set point available (default: 35) -- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. As of version 0.59, it will retain the target temperature set before restart if available. -- **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. -- **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. Use also with switches that might lose state. The keep-alive call is done with the current valid climate component state (either on or off). -- **initial_operation_mode** (*Optional*): Set the initial operation mode. Valid values are `off` or `auto`. Value has to be double quoted. If this parameter is not set, it is preferable to set a *keep_alive* value. This is helpful to align any discrepancies between *generic_thermostat* and *heater* state. -- **away_temp** (*Optional*): Set the temperature used by "away_mode". If this is not specified, away_mode feature will not get activated. - -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:`. - -Currently the `generic_thermostat` climate platform supports 'heat', 'cool' and 'off' operation modes. You can force your `generic_thermstat` to avoid starting by setting Operation to 'off'. - -Please note that changing Away Mode you will force a target temperature change as well that will get restored once the Away Mode is turned off. - -```yaml -# Full example configuration.yaml entry -climate: - - platform: generic_thermostat - name: Study - heater: switch.study_heater - target_sensor: sensor.study_temperature - min_temp: 15 - max_temp: 21 - ac_mode: False - target_temp: 17 - cold_tolerance: 0.3 - hot_tolerance: 0 - min_cycle_duration: - seconds: 5 - keep_alive: - minutes: 3 - initial_operation_mode: "off" - away_temp: 16 -``` diff --git a/source/_components/climate.heatmiser.markdown b/source/_components/climate.heatmiser.markdown deleted file mode 100644 index b1478034e9..0000000000 --- a/source/_components/climate.heatmiser.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Heatmiser Thermostat" -description: "Instructions on how to integrate Heatmiser thermostats within Home Assistant." -date: 2015-12-11 12:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: heatmiser.png -ha_category: Climate -ha_release: "0.10" -ha_iot_class: "Local Polling" ---- - - -The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](http://www.heatmisershop.co.uk/heatmiser-slimline-programmable-room-thermostat/) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. - -Further work would be required to get this setup to connect over Wifi, but the HeatmiserV3 python module being used is a full implementation of the V3 protocol. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -climate: - - platform: heatmiser - ipaddress: YOUR_IPADDRESS - port: YOUR_PORT - tstats: - - 1: - id: THERMOSTAT_ID - name: THERMOSTAT_NAME -``` - -A single interface can handle up to 32 connected devices. - -Configuration variables: - -- **ipaddress** (*Required*): The ip address of your interface. -- **port** (*Required*): The port that the interface is listening on. -- **tstats** (*Required*): A list of thermostats activated on the gateway. -- **id** (*Required*): The id of the thermostat as configured on the device itself -- **name** (*Required*): A friendly name for the thermostat diff --git a/source/_components/climate.hive.markdown b/source/_components/climate.hive.markdown deleted file mode 100644 index 12f4688553..0000000000 --- a/source/_components/climate.hive.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Hive Thermostat" -description: "Instructions on how to integrate Hive thermostat(s) with Home Assistant." -date: 2017-09-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hive.png -ha_category: Climate -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `hive` climate platform integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**. - -A short boost for Hive Heating or Hive Hot water can be set by using the **Aux Heat** function, this will turn on the boost feature for Hive Heating or Hive Hot water for 30 minutes at 0.5 degrees higher than the current temperature. - -The platform supports the following Hive products: - -- Hive Active Heating -- Hive Multizone -- Hot water control - - -

    -Full configuration details can be found on the main [Hive component](/components/hive/) page. -

    - - diff --git a/source/_components/climate.homematic.markdown b/source/_components/climate.homematic.markdown deleted file mode 100644 index 86e38fdb49..0000000000 --- a/source/_components/climate.homematic.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Homematic Thermostats" -description: "Instructions on how to integrate Homematic thermostats within Home Assistant." -date: 2016-06-28 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Climate -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - - -The `homematic` climate platform lets you control [Homematic](http://www.homematic.com/) thermostats through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. diff --git a/source/_components/climate.honeywell.markdown b/source/_components/climate.honeywell.markdown deleted file mode 100644 index 855d009cda..0000000000 --- a/source/_components/climate.honeywell.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Honeywell Thermostat" -description: "Instructions on how to integrate Honeywell thermostats within Home Assistant." -date: 2016-02-07 22:01 -sidebar: true -comments: false -sharing: true -footer: true -logo: honeywell.png -ha_category: Climate -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -The `honeywell` climate platform let you control [Honeywell Connected](http://getconnected.honeywell.com/en/) thermostats from Home Assistant. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -climate: - - platform: honeywell - username: YOUR_USERNAME - password: YOUR_PASSWORD - scan_interval: 600 -``` -

    -Scan interval is expressed in seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell. -

    - -Configuration variables: - -- **username** (*Required*): The username of an user with access. -- **password** (*Required*): The password for your given admin account. -- **region** (*Optional*): Region identifier (either 'eu' or 'us'). Defaults to 'eu' if not provided. -- **scan_interval**(*Optional*): Scan interval is expressed in seconds. Recommended value of 600 seconds. Default value is 120 seconds. Omitting scan_interval may result in too-frequent polling and cause you to rate-limited by Honeywell. -- **away_temperature** (*Optional*) (*only for eu region*): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C. -- **away_cool_temperature** (*Optional*) (*only for us region*): Cooling setpoint when away mode is on. If omitted it defaults to 30.0 deg C. -- **away_heat_temperature** (*Optional*) (*only for us region*): Heating setpoint when away mode is on. If omitted it defaults to 16.0 deg C. diff --git a/source/_components/climate.knx.markdown b/source/_components/climate.knx.markdown deleted file mode 100644 index b5b59a01e3..0000000000 --- a/source/_components/climate.knx.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -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: Climate -ha_release: 0.25 -ha_iot_class: "Local Polling" ---- - - -The `knx` climate platform is used as in interface with KNX thermostats. - -The `knx` component must be configured correctly, see [KNX Component](/components/knx). - -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: '5/1/1' - setpoint_shift_address: '5/1/2' - setpoint_shift_state_address: '5/1/3' - target_temperature_address: '5/1/4' - operation_mode_address: '5/1/5' -``` - -Alternatively, if your device has dedicated binary group addresses for frost/night/comfort mode: - -```yaml -# Example configuration.yaml entry -climate: - - platform: knx - name: HASS-Kitchen.Temperature - temperature_address: '5/1/1' - setpoint_shift_address: '5/1/2' - setpoint_shift_state_address: '5/1/3' - target_temperature_address: '5/1/4' - operation_mode_frost_protection_address: '5/1/5' - operation_mode_night_address: '5/1/6' - operation_mode_comfort_address: '5/1/7' -``` - -Configuration variables: - -- **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. - -The `knx` component sets the desired target temperature by modifying the setpoint_shift. The module provides the following configuration options: - -* **setpoint_shift_address**: (*Optional*) KNX address for setpoint_shift -* **setpoint_shift_state_address**: (*Optional*) Explicit KNX address for reading setpoint_shift. -* **setpoint_shift_step**: (*Optional*) Defines for step size in Kelvin for each step of setpoint_shift. Default is 0.5 K. -* **setpoint_shift_min**: (*Optional*) Minimum value of setpoint shift. Default is "-6". -* **setpoint_shift_max**: (*Optional*) Maximum value of setpoint shift. Default is "6". - -The operation modes may be controlled with the following directives: - -- **operation_mode_address** (*Optional*): KNX address for operation mode (Frost protection/night/comfort). -- **operation_mode_state_address** (*Optional*): Explicit KNX address for reading operation mode -- **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. diff --git a/source/_components/climate.markdown b/source/_components/climate.markdown deleted file mode 100644 index fd41b437cd..0000000000 --- a/source/_components/climate.markdown +++ /dev/null @@ -1,249 +0,0 @@ ---- -layout: page -title: "Climate" -description: "Instructions on how to setup climate control devices within Home Assistant." -date: 2016-08-26 19:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - -The `climate` component is built for the controlling and monitoring of HVAC (heating, ventilating, and air conditioning) and thermostat devices. - -To enable this component, pick one of the platforms, and add it to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -climate: - platform: demo -``` - -## {% linkable_title Services %} - -### {% linkable_title Climate control services %} -Available services: `climate.set_aux_heat`, `climate.set_away_mode`, `climate.set_temperature`, `climate.set_humidity`, `climate.set_fan_mode`, `climate.set_operation_mode`, `climate.set_swing_mode`, `climate.set_hold_mode`, `climate.turn_on`, `climate.turn_off` - -

    -Not all climate services may be available for your platform. Be sure to check the available services Home Assistant has enabled by checking service developer tool icon **Services**. -

    - -### {% linkable_title Service `climate.set_aux_heat` %} - -Turn auxiliary heater on/off for climate device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `aux_heat` | no | New value of auxiliary heater. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_aux_heat - data: - entity_id: climate.kitchen - aux_heat: true -``` - -### {% linkable_title Service `climate.set_away_mode` %} - -Set away mode for climate device. The away mode changes the target temperature permanently to a temperature -reflecting a situation where the climate device is set to save energy. This may be used to emulate a -"vacation mode", for example. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `away_mode` | no | New value of away mode. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_away_mode - data: - entity_id: climate.kitchen - away_mode: 'on' -``` - - -### {% linkable_title Service `climate.set_hold_mode` %} - -Set hold mode for climate device. The hold mode changes the target temperature of the client device temporarily to -a different temperature. Typical hold modes provided by a climate device are "away" or "home", where the hold temperature -is chosen depending on a predefined climate, or "temperature" hold, where a particular temperature is selected as the -temporary target temperature. The particular modes available depend on the climate device. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | New value of hold mode. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_hold_mode - data: - entity_id: climate.kitchen - hold_mode: 'away' -``` - -### {% linkable_title Service `climate.set_temperature` %} - -Set target temperature of climate device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `temperature` | no | New target temperature for hvac -| `target_temp_high` | yes | New target high temperature for hvac -| `target_temp_low` | yes | New target low temperature for hvac -| `operation_mode` | yes | Operation mode to set temperature to. This defaults to current_operation mode if not set, or set incorrectly. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_temperature - data: - entity_id: climate.kitchen - temperature: 24 - operation_mode: Heat -``` - -### {% linkable_title Service `climate.set_humidity` %} - -Set target humidity of climate device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `humidity` | no | New target humidity for climate device - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_humidity - data: - entity_id: climate.kitchen - humidity: 60 -``` - -### {% linkable_title Service `climate.set_fan_mode` %} - -Set fan operation for climate device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `fan_mode` | no | New value of fan mode - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_fan_mode - data: - entity_id: climate.kitchen - fan_mode: 'On Low' -``` - -### {% linkable_title Service `climate.set_operation_mode` %} - -Set operation mode for climate device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `operation_mode` | no | New value of operation mode - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_operation_mode - data: - entity_id: climate.kitchen - operation_mode: Heat -``` - -### {% linkable_title Service `climate.set_swing_mode` %} - -Set operation mode for climate device - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `swing_mode` | no | New value of swing mode - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: climate.set_swing_mode - data: - entity_id: climate.kitchen - swing_mode: 1 -``` -### {% linkable_title Service `climate.turn_on` %} - -Turn climate device on - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Targets all when omitted. - -### {% linkable_title Service `climate.turn_off` %} - -Turn climate device off - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Targets all when omitted. - -#### {% 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 deleted file mode 100644 index 0b918cf103..0000000000 --- a/source/_components/climate.maxcube.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -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 -comments: false -sharing: true -footer: true -logo: maxcube.png -ha_category: Climate -ha_release: "0.40" -ha_iot_class: "Local Polling" ---- - -See instructions at the [main component](/components/maxcube/). diff --git a/source/_components/climate.melissa.markdown b/source/_components/climate.melissa.markdown deleted file mode 100644 index 9d648a83b5..0000000000 --- a/source/_components/climate.melissa.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Melissa Climate" -description: "Instructions on how to integrate Melissa climate system (HVAC) into Home Assistant." -date: 2018-01-08 20:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: mclimate.png -ha_category: Climate -ha_iot_class: "Cloud Polling" -ha_release: 0.63 ---- - -The `Melissa` climate platform allows you to control your [Melissa Climate](http://seemelissa.com/) from within Home Assistant. - -The climate platform will be automatically configured if Melissa component is configured. - -For more configuration information see the [Melissa component](/components/melissa/) documentation. diff --git a/source/_components/climate.modbus.markdown b/source/_components/climate.modbus.markdown deleted file mode 100644 index eeb376ef8e..0000000000 --- a/source/_components/climate.modbus.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "Modbus" -description: "Instructions how to integrate a Modbus thermostat within Home Assistant." -date: 2018-01-29 9:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: modbus.png -ha_category: Thermostat -ha_release: 0.68 -ha_iot_class: "Local Polling" ---- - - -The `modbus` thermostat allows you to use a sensor value (current temperature) and target value (target temperature) from [Modbus](http://www.modbus.org/) registers. - -## {% linkable_title Configuration %} - -To use your Modbus thermostat in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: modbus - name: Watlow F4T - slave: 1 - target_temp_register: 2782 - current_temp_register: 27586 -``` - -{% configuration %} -name: - description: Name of the device - required: true - type: string -slave: - description: The number of the slave (Optional for tcp and upd Modbus, use 1). - required: true - type: int -target_temp_register: - description: Register number for target temperature (Setpoint). - required: true - type: int -current_temp_register: - description: Register number for current temperature (Process value). - required: true - type: int -data_type: - description: Response representation (int, uint, float, custom). If float selected, value will converted to IEEE 754 floating point format. - required: false - type: string - default: float -count: - description: Number of registers to read. - required: false - type: int -precision: - description: Number of valid decimals. - required: false - type: int - default: 0 -{% endconfiguration %} - - -### {% linkable_title Services %} - -| Service | Description | -| ------- | ----------- | -| set_temperature | Set Temperature. Requires `value` to be passed in, which is the desired target temperature. `value` should be in the same type as `data_type` | diff --git a/source/_components/climate.mqtt.markdown b/source/_components/climate.mqtt.markdown deleted file mode 100644 index 958974869a..0000000000 --- a/source/_components/climate.mqtt.markdown +++ /dev/null @@ -1,232 +0,0 @@ ---- -layout: page -title: "MQTT HVAC" -description: "Instructions on how to integrate MQTT HVAC into Home Assistant." -date: 2017-07-31 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.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 %} -name: - description: The name of the HVAC. - required: false - type: string - default: MQTT HVAC -qos: - description: The maximum QoS level to be used when receiving and publishing messages. - required: false - type: integer - default: 0 -retain: - description: Defines if published messages should have the retain flag set. - required: false - type: boolean - default: false -send_if_off: - description: "Set to `false` to suppress sending of all MQTT messages when the current mode is `Off`." - required: false - type: boolean - default: true -initial: - description: Set the initial target temperature. - required: false - type: number - default: 21 -payload_on: - description: The payload that represents enabled state. - required: false - type: string - default: ON -payload_off: - description: The payload that represents disabled state. - required: false - type: string - default: OFF -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -value_template: - description: Default template to render the payloads on *all* `*_state_topic`s with. - type: template - required: false -current_temperature_topic: - description: The MQTT topic on which to listen for the current temperature. - required: false - type: string -power_command_topic: - description: 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. - required: false - type: string -mode_command_topic: - description: The MQTT topic to publish commands to change the HVAC operation mode. - required: false - type: string -mode_state_topic: - description: 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). - required: false - type: string -mode_state_template: - description: A template to render the value received on the `mode_state_topic` with. - required: false - type: template -temperature_command_topic: - description: The MQTT topic to publish commands to change the target temperature. - required: false - type: string -temperature_state_topic: - description: 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). - required: false - type: string -temperature_state_template: - description: A template to render the value received on the `temperature_state_topic` with. - required: false - type: template -fan_mode_command_topic: - description: The MQTT topic to publish commands to change the fan mode. - required: false - type: string -fan_mode_state_topic: - description: 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). - required: false - type: string -fan_mode_state_template: - description: A template to render the value received on the `fan_mode_state_topic` with. - required: false - type: template -swing_mode_command_topic: - description: The MQTT topic to publish commands to change the swing mode. - required: false - type: string -swing_mode_state_topic: - description: 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). - required: false - type: string -swing_mode_state_template: - description: A template to render the value received on the `swing_mode_state_topic` with. - required: false - type: template -away_mode_command_topic: - description: The MQTT topic to publish commands to change the away mode. - required: false - type: string -away_mode_state_topic: - description: 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). - required: false - type: string -away_mode_state_template: - description: A template to render the value received on the `away_mode_state_topic` with. - required: false - type: template -hold_command_topic: - description: The MQTT topic to publish commands to change the hold mode. - required: false - type: string -hold_state_topic: - description: 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). - required: false - type: string -hold_state_template: - description: A template to render the value received on the `hold_state_topic` with. - required: false - type: template -aux_command_topic: - description: The MQTT topic to publish commands to switch auxiliary heat. - required: false - type: string -aux_state_topic: - description: 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). - required: false - type: string -aux_state_template: - description: A template to render the value received on the `aux_state_topic` with. - required: false - type: template -{% endconfiguration %} - -#### {% linkable_title 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 Using Templates %} - -For all `*_state_topic`s, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topis can be specified as `value_template`. This can be useful if you received payloads are e.g., in JSON format. Since in JSON, a quoted string (e.g., `"foo"`) is just a string, this can also be used for unquoting. - -Say you receive the operation mode `"auto"` via your `mode_state_topic`, but the mode is actually called just `auto`, here's what you could do: - -{% raw %} -```yaml -climate: - - platform: mqtt - name: Study - modes: - - off - - on - - auto - mode_command_topic: "study/ac/mode/set" - mode_state_topic: "study/ac/mode/state" - mode_state_template: "{{ value_json }}" -``` -{% endraw %} - -This will parse the incoming `"auto"` as JSON, resulting in `auto`. Obviously, in this case you could also just set `value_template: {% raw %}"{{ value_json }}"{% endraw %}`. - - -### {% 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 deleted file mode 100644 index 6f5379449b..0000000000 --- a/source/_components/climate.mysensors.markdown +++ /dev/null @@ -1,265 +0,0 @@ ---- -layout: page -title: "MySensors HVAC" -description: "Instructions on how to integrate MySensors climate into Home Assistant." -date: 2016-10-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Climate -ha_release: 0.29 -ha_iot_class: "Local Push" ---- - -Integrates MySensors HVAC into Home Assistant. See the [main component] for configuration instructions. - -The following actuator types are supported: - -##### MySensors version 1.5 and higher - -S_TYPE | V_TYPE --------|----------------------------------------------------------------------------- -S_HVAC | V_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED, V_TEMP - -V_HVAC_FLOW_STATE is mapped to the state of the Climate component in Home Assistant as follows: - -Home Assistant State | MySensors State ----------------------|---------------- -STATE_COOL | CoolOn -STATE_HEAT | HeatOn -STATE_AUTO | AutoChangeOver -STATE_OFF | Off - -Currently humidity, away_mode, aux_heat, swing_mode is not supported. This will be included in later versions as feasible. - -Set the target temperature using V_HVAC_SETPOINT_HEAT in Heat mode, and V_HVAC_SETPOINT_COOL in Cool Mode. In case of any Auto Change Over mode you can use V_HVAC_SETPOINT_HEAT as well as V_HVAC_SETPOINT_COOL to set the both the low bound and the high bound temperature of the device. - -You can use V_HVAC_SPEED to control the Speed setting of the Fan in the HVAC. - -You can use V_TEMP to send the current temperature from the node to Home Assistant. - -For more information, visit the [serial api] of MySensors. - -### {% linkable_title Example sketch for MySensors 2.x %} - - -```cpp -/* -* Documentation: http://www.mysensors.org -* Support Forum: http://forum.mysensors.org -*/ - -#define MY_RADIO_NRF24 -#define CHILD_ID_HVAC 0 - -#include - -// Uncomment your heatpump model -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include - -//Some global variables to hold the states -int POWER_STATE; -int TEMP_STATE; -int FAN_STATE; -int MODE_STATE; -int VDIR_STATE; -int HDIR_STATE; - -IRSenderPWM irSender(3); // IR led on Arduino digital pin 3, using Arduino PWM - -//Change to your Heatpump -HeatpumpIR *heatpumpIR = new PanasonicNKEHeatpumpIR(); - -/* -new PanasonicDKEHeatpumpIR() -new PanasonicJKEHeatpumpIR() -new PanasonicNKEHeatpumpIR() -new CarrierHeatpumpIR() -new MideaHeatpumpIR() -new FujitsuHeatpumpIR() -new MitsubishiFDHeatpumpIR() -new MitsubishiFEHeatpumpIR() -new SamsungHeatpumpIR() -new SharpHeatpumpIR() -new DaikinHeatpumpIR() -*/ - -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"); -} - -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) { - if (message.isAck()) { - Serial.println("This is an ack from gateway"); - return; - } - - Serial.print("Incoming message for: "); - Serial.print(message.sensor); - - String recvData = message.data; - recvData.trim(); - - Serial.print(", New status: "); - Serial.println(recvData); - switch (message.type) { - case V_HVAC_SPEED: - Serial.println("V_HVAC_SPEED"); - - if(recvData.equalsIgnoreCase("auto")) FAN_STATE = 0; - else if(recvData.equalsIgnoreCase("min")) FAN_STATE = 1; - else if(recvData.equalsIgnoreCase("normal")) FAN_STATE = 2; - else if(recvData.equalsIgnoreCase("max")) FAN_STATE = 3; - break; - - case V_HVAC_SETPOINT_COOL: - Serial.println("V_HVAC_SETPOINT_COOL"); - TEMP_STATE = message.getFloat(); - Serial.println(TEMP_STATE); - break; - - case V_HVAC_FLOW_STATE: - Serial.println("V_HVAC_FLOW_STATE"); - if (recvData.equalsIgnoreCase("coolon")) { - POWER_STATE = 1; - MODE_STATE = MODE_COOL; - } - else if (recvData.equalsIgnoreCase("heaton")) { - POWER_STATE = 1; - MODE_STATE = MODE_HEAT; - } - else if (recvData.equalsIgnoreCase("autochangeover")) { - POWER_STATE = 1; - MODE_STATE = MODE_AUTO; - } - else if (recvData.equalsIgnoreCase("off")){ - POWER_STATE = 0; - } - break; - } - sendHeatpumpCommand(); - sendNewStateToGateway(); -} - -void sendNewStateToGateway() { - send(msgHVACSetPointC.set(TEMP_STATE)); - send(msgHVACSpeed.set(FAN_STATE)); - send(msgHVACFlowState.set(MODE_STATE)); -} - -void sendHeatpumpCommand() { - Serial.println("Power = " + (String)POWER_STATE); - Serial.println("Mode = " + (String)MODE_STATE); - Serial.println("Fan = " + (String)FAN_STATE); - Serial.println("Temp = " + (String)TEMP_STATE); - - heatpumpIR->send(irSender, POWER_STATE, MODE_STATE, FAN_STATE, TEMP_STATE, VDIR_AUTO, HDIR_AUTO); -} -``` - -### {% linkable_title Example sketch for MySensors 1.x %} - -```cpp -/* -* Documentation: http://www.mysensors.org -* Support Forum: http://forum.mysensors.org -*/ - -#include -/* -* Include all the other Necessary code here. -* The example code is limited to message exchange for mysensors -* with the controller (ha). -*/ - -#define CHILD_ID_HVAC 0 // childId -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); - -/* -* Include all the other Necessary code here. -* The example code is limited to message exchange for mysensors -* with the controller (ha). -*/ - -void setup() -{ - // Startup and initialize MySensors library. - // Set callback for incoming messages. - gw.begin(incomingMessage); - - // Send the sketch version information to the gateway and Controller - gw.sendSketchInfo("HVAC", "0.1"); - - gw.present(CHILD_ID_HVAC, S_HVAC, "Thermostat"); - gw.send(msgHVACFlowState.set("Off")); - gw.send(msgHVACSetPointC.set(target_temp)); - gw.send(msgHVACSpeed.set("Max")); -} - -void loop() { - // Process incoming messages (like config from server) - gw.process(); -} - -void incomingMessage(const MyMessage &message) { - String recvData = message.data; - recvData.trim(); - switch (message.type) { - case V_HVAC_SPEED: - if(recvData.equalsIgnoreCase("auto")) fan_speed = 0; - else if(recvData.equalsIgnoreCase("min")) fan_speed = 1; - else if(recvData.equalsIgnoreCase("normal")) fan_speed = 2; - else if(recvData.equalsIgnoreCase("max")) fan_speed = 3; - processHVAC(); - break; - case V_HVAC_SETPOINT_COOL: - target_temp = message.getFloat(); - processHVAC(); - break; - case V_HVAC_FLOW_STATE: - if(recvData.equalsIgnoreCase("coolon") && (!Present_Power_On )){ - togglePower(); - } - else if(recvData.equalsIgnoreCase("off") && Present_Power_On ){ - togglePower(); - } - break; - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: http://www.mysensors.org/download diff --git a/source/_components/climate.nest.markdown b/source/_components/climate.nest.markdown deleted file mode 100644 index 4d99423734..0000000000 --- a/source/_components/climate.nest.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Nest Thermostat" -description: "Instructions on how to integrate Nest thermostats within Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: nest.png -ha_category: Climate -ha_iot_class: "Cloud Polling" ---- - - -The `nest` climate platform let you control a thermostat from [Nest](https://nest.com). - -

    -You must have the [Nest component](/components/nest/) configured to use these sensors. The `nest` climate component will automatically be setup when you do. -

    - -

    - -

    - diff --git a/source/_components/climate.netatmo.markdown b/source/_components/climate.netatmo.markdown deleted file mode 100644 index a90a1f4353..0000000000 --- a/source/_components/climate.netatmo.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Netatmo Thermostat" -description: "Instructions on how to integrate Netatmo thermostat into Home Assistant." -date: 2016-10-11 08:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: netatmo.png -ha_category: Climate -ha_release: 0.31 -ha_iot_class: "Cloud Polling" ---- - - -The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat) thermostat. This component allows you to view the current temperature and setpoint. - -To enable the Netatmo thermostat, you first have to set up [netatmo](/components/netatmo/), this will use discovery to add your thermostat. - -If you want to select a specific thermostat, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -climate: - - platform: netatmo -``` - -Configuration variables: - -- **relay** (*Optional*): Will display the thermostats of this relay only. -- **thermostat** array (*Optional*): Thermostat to use. - - **thermostat_name**: Name of the thermostat to display. - -If **relay** and **thermostat** are not provided, all thermostats will be displayed. - -```yaml -# Example configuration.yaml entry -climate: - platform: netatmo - relay: relay_name - thermostat: - - thermostat_name -``` diff --git a/source/_components/climate.nuheat.markdown b/source/_components/climate.nuheat.markdown deleted file mode 100644 index 46a8e84c5a..0000000000 --- a/source/_components/climate.nuheat.markdown +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: page -title: "NuHeat Thermostat" -description: "Instructions on how to integrate your NuHeat Signature thermostats within Home Assistant." -date: 2017-11-11 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nuheat.png -ha_category: Climate -ha_release: 0.61 -ha_iot_class: "Cloud Polling" ---- - -

    -To get your [NuHeat Signature](http://www.nuheat.com/products/thermostats/signature-thermostat) thermostats working within Home Assistant, please follow the instructions for the general [NuHeat component](/components/nuheat) -

    - -## {% linkable_title Concepts %} - -The NuHeat Thermostat supports the following key concepts. - -The `target temperature` is the temperature that the device attempts to achieve. The target temperature is either determined by the schedule programmed into the thermostat (`auto mode`) or may be overridden. When the target temperature is set by Home Assistant, the thermostat will hold this temperature until the schedule is resumed. - - -## {% linkable_title Attributes %} - -The following attributes are provided by the NuHeat thermostat: `name`, `temperature_unit`, `current_temperature`, `target_temperature`, `current_hold_mode`, `current_operation`, `operation_list`, `min_temp` and `max_temp`. - - -### {% linkable_title Attribute `name` %} - -Returns the name of the NuHeat Thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of the thermostat - -### {% linkable_title Attribute `temperature_unit` %} - -Returns the unit of measurement used for temperature by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | Name of the temperature unit - -### {% linkable_title Attribute `current_temperature` %} - -Returns the current temperature measured by the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Currently measured temperature - -### {% linkable_title Attribute `target_temperature` %} - -Returns the target temperature of the thermostat, when the thermostat is -not in auto operation mode. - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Target temperature - -### {% linkable_title Attribute `current_hold_mode` %} - -Returns the current temperature hold, if any. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'temperature', 'temporary_temperature', 'auto', etc. - -### {% linkable_title Attribute `current_operation` %} - -Returns the current operation of the thermostat. - -| Attribute type | Description | -| ---------------| ----------- | -| String | 'heat', 'idle' - -### {% linkable_title Attribute `operation_list` %} - -Returns the list of available operation modes. - -| Attribute type | Description | -| ---------------| ----------- | -| List of String | Available operation modes - -### {% linkable_title Attribute `min_temp` %} - -Returns the minimum supported temperature by the thermostat - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Minimum supported temperature - -### {% linkable_title Attribute `max_temp` %} - -Returns the maximum supported temperature by the thermostat - -| Attribute type | Description | -| ---------------| ----------- | -| Integer | Maximum supported temperature - - -## {% linkable_title Services %} - -The following services are provided by the NuHeat Thermostat: `set_temperature`, `set_hold_mode`, `nuheat_resume_program`. - -The services `fan_min_on_time`, `set_aux_heat`, `set_away_mode`, `set_humidity`, `set_fan_mode`, `set_operation_mode` and `set_swing_mode` offered by the [Climate component](/components/climate/) are not implemented for this thermostat. - -### {% linkable_title Service `set_temperature` %} - -Puts the thermostat into an indefinite hold at the given temperature. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `temperature` | no | Desired target temperature (when not in auto mode) - -Only the target temperatures relevant for the current operation mode need to -be provided. - -### {% linkable_title Service `set_hold_mode` %} - -Sets the thermostat's hold mode. The NuHeat thermostat supports "auto" (to run the thermostat's programmed schedule), "temperature" (to indefinitely hold the thermostat's current target temperature), or "temporary_temperature" (to hold the thermostat's current target temperature until the thermostat's next scheduled event). - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. -| `hold_mode` | no | New value of hold mode. - -### {% linkable_title Service `nuheat_resume_program` %} - -Resumes the currently active schedule. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Else targets all. diff --git a/source/_components/climate.oem.markdown b/source/_components/climate.oem.markdown deleted file mode 100644 index 2b7b401229..0000000000 --- a/source/_components/climate.oem.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "OpenEnergyMonitor WiFi Thermostat" -description: "Instructions on how to integrate an OpenEnergyMonitor thermostat with Home Assistant." -date: 2017-01-27 11:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: oem.png -ha_category: Climate -ha_release: 0.39 -ha_iot_class: "Local Polling" ---- - -This platform supports the ESP82666 based "WiFi MQTT Relay / Thermostat" sold by [OpenEnergyMonitor](https://shop.openenergymonitor.com/wifi-mqtt-relay-thermostat/). The underlying [library](http://oemthermostat.readthedocs.io/) only supports this single relay variant of the [original device](https://harizanov.com/2014/12/wifi-iot-3-channel-relay-board-with-mqtt-and-http-api-using-esp8266/). - -This platform controls the setpoint of the thermostat in its "manual" mode, therefore there is a configuration option the away setpoint. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate oem: - - platform: oem - host: 192.168.0.100 -``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of the thermostat. -- **port** (*Optional*): The port for the web interface. Defaults to 80. -- **name** (*Optional*): The name to use for the frontend. -- **username** (*Optional*): Username for the web interface if set. -- **password** (*Optional*): Password for the web interface if set. -- **away_temp** (*Optional*): Setpoint for the thermostat in away mode. Defaults to 14 C. - diff --git a/source/_components/climate.proliphix.markdown b/source/_components/climate.proliphix.markdown deleted file mode 100644 index b089ef586d..0000000000 --- a/source/_components/climate.proliphix.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Proliphix Thermostat" -description: "Instructions on how to integrate Proliphix thermostats within Home Assistant." -date: 2016-01-15 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: proliphix.png -ha_category: Climate -ha_release: 0.11 -ha_iot_class: "Local Polling" ---- - - -The `proliphix` climate platform let you control [Proliphix](http://www.proliphix.com) thermostat from Home Assistant. - -Currently supported and tested thermostats: - -- NT10e - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -climate: - - platform: proliphix - host: IP_ADDRESS - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **host** (*Required*): Address of your thermostat, eg. 192.168.1.32. -- **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 -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.radiotherm.markdown b/source/_components/climate.radiotherm.markdown deleted file mode 100644 index f4d08db107..0000000000 --- a/source/_components/climate.radiotherm.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Radio Thermostat (3M Filtrete) Thermostat" -description: "Instructions on how to integrate Radio Thermostat (3M Filtrete) thermostats within Home Assistant." -date: 2015-10-18 17:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: radiotherm.png -ha_category: Climate -ha_iot_class: "Local Polling" ---- - - -The `radiotherm` climate platform let you control a thermostat from [Radio Thermostat](http://www.radiothermostat.com/) or [3M Filtrete](http://www.radiothermostat.com/filtrete/products/). Your thermostat must have the Wi-Fi module installed and connected to your network. - -The underlying library supports: - -- CT50 V1.09 -- CT50 V1.88 -- CT50 V1.94 (also known as Filtrete 3M50) -- CT80 Rev B2 V1.03 - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: radiotherm -``` - -Configuration variables: - -- **host** (*Optional*): List of your Radiotherm thermostats. If not provided the thermostats will be auto-detected. -- **away_temperature_heat** (*Optional*): Target heating temperature in Fahrenheit for away mode. This is separate from away mode in the app. Defaults to '60'. -- **away_temperature_cool** (*Optional*): Target cooling temperature in Fahrenheit for away mode. This is separate from away mode in the app. Defaults to '85'. -- **hold_temp** (*Optional*): Boolean to control if Home Assistant temperature adjustments hold (`True`) or are temporary (`False`). Defaults to `False`. - -Set `hold_temp: True` if you want temperature settings from Home Assistant to override a thermostat schedule on the thermostat itself. Otherwise Home Assistant will perform temporary temperature changes. - -The away mode functions similarly to the away mode feature of the website and apps, but cannot detect if you set away mode outside of Home Assistant. - -Multiple thermostats can be assigned by using `host:` if auto-detection is not used. - -```yaml -climate: - platform: radiotherm - host: - - 192.168.99.137 - - 192.168.99.202 -``` diff --git a/source/_components/climate.sensibo.markdown b/source/_components/climate.sensibo.markdown deleted file mode 100644 index 02003d4aa6..0000000000 --- a/source/_components/climate.sensibo.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Sensibo A/C controller" -description: "Instructions on how to integrate Sensibo A/C controller into Home Assistant." -date: 2017-04-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: sensibo.png -ha_category: Climate -ha_release: 0.44 -ha_iot_class: "Cloud Polling" ---- - -Integrates [Sensibo](https://sensibo.com) Air Conditioning controller into Home Assistant. - -To enable this platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: sensibo - api_key: -``` - -Configuration variables: - -- **api_key** (*Required*): Your API key. -- **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 - -

    -If you create the API key using a dedicated user (and not your main user), -then in the Sensibo app log you will be able to distinguish between actions -done in the app and actions done by Home Assistant. -

    - -### {% linkable_title Full config example %} -```yaml -climate: - - platform: sensibo - api_key: deadbeaf - id: - - id1 - - id2 -``` diff --git a/source/_components/climate.tado.markdown b/source/_components/climate.tado.markdown deleted file mode 100644 index c49a8ef4bd..0000000000 --- a/source/_components/climate.tado.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "Tado Thermostat" -description: "Instructions on how to integrate Tado thermostats with Home Assistant." -date: 2017-03-20 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tado.png -ha_category: Climate -ha_release: 0.41 -ha_iot_class: "Cloud Polling" ---- - - -The `tado` climate platform is interact with your climate devices. - - -The requirement is that you have set up the [tado](/components/tado/) component. - diff --git a/source/_components/climate.tesla.markdown b/source/_components/climate.tesla.markdown deleted file mode 100644 index 1d5720f65a..0000000000 --- a/source/_components/climate.tesla.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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 deleted file mode 100644 index 61e4258847..0000000000 --- a/source/_components/climate.toon.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Toon Thermostat" -description: "Instructions on 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.touchline.markdown b/source/_components/climate.touchline.markdown deleted file mode 100644 index 0f7f271946..0000000000 --- a/source/_components/climate.touchline.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Roth Touchline" -description: "Instructions on how to integrate Roth Touchline within Home Assistant." -date: 2018-01-03 12:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: roth.png -ha_category: Climate -ha_release: 0.61 -ha_iot_class: "Local Polling" ---- - -The `touchline` climate platform let you control [ROTH Touchline](http://www.roth-nordic.dk/dk/roth-touchline-tradloes-gulvvarmeregulering-1475.htm) floor heating thermostats from Roth. - - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -climate: - - platform: touchline - host: YOUR_IPADDRESS -``` - -{% configuration %} -host: - description: The IP address of your controller, e.g., http://192.168.1.1. - required: false - type: string -{% endconfiguration %} diff --git a/source/_components/climate.venstar.markdown b/source/_components/climate.venstar.markdown deleted file mode 100644 index f054465f72..0000000000 --- a/source/_components/climate.venstar.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "Venstar Thermostat" -description: "Instructions for how to integrate Venstar WiFi thermostats within Home Assistant." -date: 2018-01-14 00:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: venstar.png -ha_category: Climate -ha_release: 0.62 -ha_iot_class: "Local Polling" ---- - - -The `venstar` climate platform allows you to control [Venstar](http://www.venstar.com) thermostats from Home Assistant. -Venstar thermostats feature a local API that allows for automation without the need for a cloud service. - -Currently supported and tested thermostats: - -- Color Touch T7900 - -Currently supported functionality: -- Setting heat/cool temperature when the thermostat is in the appropriate mode. -- Changing the operation mode of the thermostat (heat/cool/off/auto) -- Turning the fan on/off -- Setting the humidity level - -Note - Please ensure you update your thermostat to the latest firmware. Currently tested on firmware 5.10. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -climate: - - platform: venstar - host: IP_OR_HOSTNAME_OF_THERMOSTAT -``` - -{% configuration %} -host: - description: Address of your thermostat, e.g., 192.168.1.32. - required: true - type: string -username: - description: Username for the thermostat. - required: false - type: string -password: - description: Password for the thermostat. - required: false - type: string -ssl: - description: Whether to use SSL or not when communicating. - required: false - type: boolean - default: False -timeout: - description: Number of seconds for API timeout. - required: false - type: int - default: 5 -{% endconfiguration %} - -## {% linkable_title Full configuration sample %} - -```yaml -# Example configuration.yaml entry -climate: - - platform: venstar - host: IP_OR_HOSTNAME_OF_THERMOSTAT - ssl: True/False - username: OPTIONAL_AUTH_USER_HERE - password: OPTIONAL_AUTH_PASS_HERE - timeout: 5 -``` diff --git a/source/_components/climate.vera.markdown b/source/_components/climate.vera.markdown deleted file mode 100644 index c46b8fdff9..0000000000 --- a/source/_components/climate.vera.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Vera Thermostat" -description: "Instructions on how to integrate Vera thermostats into Home Assistant." -date: 2016-09-19 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Climate -ha_iot_class: "Local Push" -ha_release: 0.13 ---- - -The `vera` climate platform allows you to control your [Vera](http://getvera.com/) thermostats from within Home Assistant. - -They will be automatically discovered if the vera component is loaded. - -For more configuration information see the [Vera component](/components/vera/) documentation. diff --git a/source/_components/climate.wink.markdown b/source/_components/climate.wink.markdown deleted file mode 100644 index be8623cb08..0000000000 --- a/source/_components/climate.wink.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Wink Climate" -description: "Instructions on how to setup the Wink climate devices within Home Assistant." -date: 2016-11-01 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Climate -ha_release: 0.32 -ha_iot_class: "Cloud Polling" ---- - - -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) -- Carrier (Unconfirmed) -- 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 confirmed to work, but others may work as well. -

    - diff --git a/source/_components/climate.zwave.markdown b/source/_components/climate.zwave.markdown deleted file mode 100644 index e1b20babc6..0000000000 --- a/source/_components/climate.zwave.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Z-Wave Climate" -description: "Instructions on how to setup the Z-Wave thermostat or HVAC within Home Assistant." -date: 2016-04-03 9:52 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Climate -ha_release: 0.17 -ha_iot_class: "Local Push" ---- - - -To get your Z-Wave thermostat or HVAC unit working with Home Assistant, follow the instructions for the general [Z-Wave component](/getting-started/z-wave/). - -

    -Thermostats with support for fan modes or different operating modes, will be handled like a HVAC device and will also be detected as one. - -If the thermostat support different operating modes, you will get one thermostat entity for each mode. These can be hidden with settings using the customize setting in the `configuration.yaml` file. -

    - -To enable the climate component for your Z-Wave network, add the following to your `configuration.yaml` file. - -```yaml -climate: - - platform: zwave -``` - -Once enabled, any Z-Wave climate devices will be available to Home Assistant. Multiple entities may be created. The following entities are created for a Remotec ZXT-120. - -- **climate.remotec_zxt120_heating_1_id** Allows you to control the connected device. See below for examples. -- **sensor.remotec_zxt120_temperature_38** A sensor which returns the current temperature set on the attached device. - -### {% linkable_title Automating Z-Wave Climate Devices %} - -The following examples will instruct a Remotec ZXT-120 to turn the attached device mode to Heating, and set the temperature at 24 degrees after 8pm. Add it to `automation.yaml`. - -```yaml -automation: - - alias: Turn on Heater at 8pm - trigger: - - platform: time - at: "20:00:00" - action: - - service: climate.set_operation_mode - data: - entity_id: climate.remotec_zxt120_heating_1_id - operation_mode: Heat - - service: climate.set_temperature - data: - entity_id: climate.remotec_zxt120_heating_1_39 - temperature: 24 -``` - -Generally in Home Assistant you can use the `homeassistant/turn_off` service to turn devices off. For the Remotec ZXT-120, you must instead make a service call like the following. - -```yaml -automation: - - alias: Turn off Heater at 9pm - trigger: - - platform: time - at: "21:00:00" - action: - - service: climate.set_operation_mode - data: - entity_id: climate.remotec_zxt120_heating_1_id - operation_mode: 'Off' -``` - -**Note:** In the example above, the word `Off` is encased in single quotes to be valid YAML. - -### {% linkable_title Test if it works %} - -A simple way to test if your Z-Wave climate device is working is to use service developer tool icon **Services** from the **Developer Tools**. Choose the applicable Climate service from the list of **Available services:** and enter something like the sample below into the **Service Data** field and then press **CALL SERVICE**. - -```json -{ - "entity_id": "climate.remotec_zxt120_heating_1_id", - "operation_mode": "Heat" -} -``` - diff --git a/source/_components/cloud.markdown b/source/_components/cloud.markdown deleted file mode 100644 index 3008a52cac..0000000000 --- a/source/_components/cloud.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Home Assistant Cloud" -description: "Enable the Home Assistant Cloud integration." -date: 2017-11-17 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_release: "0.60" -ha_category: Voice -ha_iot_class: "Cloud Push" ---- - -The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa. [Learn more.](/cloud) - -```yaml -# Example configuration.yaml entry to enable the cloud component -cloud: -``` - -Once activated, go to the configuration panel in Home Assistant and create an account and log in. If you are not seeing the **Configuration** panel, make sure you have the following option enabled in your configuration.yaml` file. - -```yaml -config: -``` diff --git a/source/_components/coinbase.markdown b/source/_components/coinbase.markdown deleted file mode 100644 index f5d657ab4f..0000000000 --- a/source/_components/coinbase.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "coinbase" -description: "Instructions for how to add Coinbase sensors to Home Assistant." -date: 2017-12-08 17:54 -sidebar: true -comments: false -sharing: true -footer: true -logo: coinbase.png -ha_release: 0.61 -ha_iot_class: "Cloud Polling" ---- - - -The `coinbase` component lets you access account balances and exchange rates from [coinbase](https://coinbase.com). - -You will need to obtain an API key from coinbase's [developer site](https://www.coinbase.com/settings/api) to use this component. You need to give read access to `wallet:accounts` in order for the component to access relevant data. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -coinbase: - api_key: asdfghjklqwertyuiopzxcvbnm - api_secret: nkjnewncfghjklqwertyuiopzxcvbnm - exchange_rate_currencies: - - BTC - - ETH - - LTC -``` - -{% configuration %} -api_key: - description: Your API key to access coinbase. - required: true - type: string -api_secret: - description: Your API secret to access coinbase. - required: true - type: string -exchange_rate_currencies: - description: List of currencies to create exchange rate sensors for. - required: false - type: list -{% endconfiguration %} diff --git a/source/_components/comfoconnect.markdown b/source/_components/comfoconnect.markdown deleted file mode 100644 index 7394042b84..0000000000 --- a/source/_components/comfoconnect.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Zehnder ComfoAir Q Ventilation" -description: "Instructions on 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 deleted file mode 100644 index 29aa9ce2ae..0000000000 --- a/source/_components/config.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "Config" -description: "Instructions on 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: Front end -ha_release: 0.39 ---- - -The `config` component is designed to display panels in the frontend to configure and manage parts of Home Assistant. - -To enable the configuration panel, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -config: -``` - -### {% 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. - -

    - -

    - -### {% 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/configurator.markdown b/source/_components/configurator.markdown deleted file mode 100644 index 9cabdccbb3..0000000000 --- a/source/_components/configurator.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: page -title: "Configurator" -description: "Instructions on how to integrate the configurator in your components." -date: 2015-03-15 00:51 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other ---- - -

    -This component is intended for developers. -

    - -The configurator component allows components to request information from the user. It is currently implemented as the minimum viable product: - -- It supports showing a text, image and button to the user -- Input fields can be defined with a description, and optional type -- It will trigger a callback when the button is pressed - -The Hue component in [the demo](/demo) and Plex are implemented using the configurator. See [the source of the demo component](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/demo.py#L132) for a simple example. - -See [the source](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/configurator.py#L39) for more details on how to use the configurator component. diff --git a/source/_components/conversation.markdown b/source/_components/conversation.markdown deleted file mode 100644 index e9bb86aaab..0000000000 --- a/source/_components/conversation.markdown +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: page -title: "Conversation" -description: "Instructions on how to have conversations with your Home Assistant." -date: 2015-03-15 00:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: "Voice" ---- - -The conversation component allows you to converse with Home Assistant. You can either converse by pressing the microphone in the frontend (supported browsers only (no iOS)) or by calling the `conversation/process` service with the transcribed text. - -

    - - Screenshot of the conversation interface in Home Assistant. -

    - -```yaml -# Example base configuration.yaml entry -conversation: -``` - -{% configuration %} -intents: - description: Intents that the conversation component should understand. - required: false - type: map - keys: - '``': - description: Sentences that should trigger this intent. - required: true - type: list -{% endconfiguration %} - -## {% linkable_title Adding custom sentences %} - -By default, it will support turning devices on and off. You can say things like "turn on kitchen lights" or "turn the living room lights off". You can also configure your own sentences to be processed. This works by mapping sentences to intents and then configure the [intent script component](/components/intent_script/) to handle these intents. - -Here is a simple example to be able to ask what the temperature in the living room is. - -```yaml -# Example configuration.yaml entry -conversation: - intents: - LivingRoomTemperature: - - What is the temperature in the living room - -intent_script: - LivingRoomTemperature: - speech: - text: It is currently {% raw %}{{ states.sensor.temperature }}{% endraw %} degrees in the living room. -``` - -## {% linkable_title Adding advanced custom sentences %} - -Sentences can contain slots (marked with curly braces: `{name}`) and optional words (marked with square brackets: `[the]`). The values of slots will be passed on to the intent and are available inside the templates. - -The following configuration can handle the following sentences: - - - Change the lights to red - - Change the lights to green - - Change the lights to blue - - Change the lights to the color red - - Change the lights to the color green - - Change the lights to the color blue - -```yaml -# Example configuration.yaml entry -conversation: - intents: - ColorLight: - - Change the lights to [the color] {color} -{% raw %} -intent_script: - ColorLight: - speech: - text: Changed the lights to {{ color }}. - action: - service: light.turn_on - data_template: - rgb_color: - - "{% if color == 'red' %}255{% else %}0{% endif %}" - - "{% if color == 'green' %}255{% else %}0{% endif %}" - - "{% if color == 'blue' %}255{% else %}0{% endif %}" -{% endraw %} -``` - -#### {% linkable_title Service `conversation.process` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------| -| `text` | yes | Transcribed text | diff --git a/source/_components/counter.markdown b/source/_components/counter.markdown deleted file mode 100644 index f181d4755a..0000000000 --- a/source/_components/counter.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: "Counter" -description: "Instructions on 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: - my_custom_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 deleted file mode 100644 index a80303a756..0000000000 --- a/source/_components/cover.abode.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Abode Cover" -description: "Instructions on 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.command_line.markdown b/source/_components/cover.command_line.markdown deleted file mode 100644 index e6c08e5496..0000000000 --- a/source/_components/cover.command_line.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: page -title: "Command Line Cover" -description: "How to control a cover with the command line." -date: 2016-06-28 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: command_line.png -ha_category: Cover -ha_release: 0.14 -ha_iot_class: "Local Polling" ---- - -A `command_line`cover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line. - -To enable a command line cover in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: command_line - covers: - garage_door: - command_open: move_command up garage - command_close: move_command down garage - command_stop: move_command stop garage -``` - -Configuration variables: - -- **covers** (*Required*): The array that contains all command line covers. - - **identifier** (*Required*): Name of the command line cover as slug. Multiple entries are possible. - - **command_open** (*Required*): The command to open the cover. - - **command_close** (*Required*): The action to close the cover. - - **command_stop** (*Required*): The action to stop the cover. - - **command_state** (*Optional*): If given, this will act as a sensor that runs in the background and updates the state of the cover. If the command returns a `0` the indicates the cover is fully closed, whereas a 100 indicates the cover is fully open. - - **value_template** (*optional - default: '{% raw %}{{ value }}{% endraw%}'*): if specified, `command_state` will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your `command_state` returns a string "open", using `value_template` as in the example config above will allow you to translate that into the valid state `100`. - - **friendly_name** (*Optional*): The name used to display the cover in the frontend. - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Full configuration %} - -```yaml -# Example configuration.yaml entry -cover: - - platform: command_line - covers: - garage_door: - command_open: move_command up garage - command_close: move_command down garage - command_stop: move_command stop garage - command_state: state_command garage - value_template: {% raw %}> - {% if value == 'open' %} - 100 - {% elif value == 'closed' %} - 0 - {% endif %} - {% endraw %} -``` diff --git a/source/_components/cover.garadget.markdown b/source/_components/cover.garadget.markdown deleted file mode 100644 index 0a3b5de358..0000000000 --- a/source/_components/cover.garadget.markdown +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: page -title: "Garadget Cover" -description: "Instructions on how to integrate Garadget covers within Home Assistant." -date: 2016-10-24 14:25 -sidebar: true -comments: false -sharing: true -footer: true -logo: garadget.png -ha_category: Cover -ha_release: 0.32 -ha_iot_class: "Cloud Polling" ---- - - -The `garadget` cover platform lets you control [Garadget](http://www.garadget.com/) garage door futurizers through Home Assistant. - -## {% linkable_title Configuration %} - -To enable Garadget Covers in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: garadget - covers: - 190028001947343412342341: - username: YOUR_USERNAME - password: YOUR_PASSWORD - 4c003f001151353432134214: - access_token: df4cc785ff818f2b01396c44142342fccdef -``` - -Configuration variables: - -- **covers** array (*Required*): List of your doors. - - **device** (*Required*): This is the device id from your Garadget portal. - - Either: - - **username** (*Required*): Your Garadget account username. - - **password** (*Required*): Your Garadget account password. - - Or: - - **access_token** (*Required*): A generated `access_token` from your Garadget account. - - **name** (*Optional*): Name to use in the frontend, will use name configured in Garadget otherwise. - - -If provided, the **access_token** will be used, otherwise the **username** and **password** will be used to automatically generate an access token at start time. - -## {% linkable_title Example %} - -

    - -

    - -{% raw %} -```yaml -# Related configuration.yaml entry -cover: - - platform: garadget - covers: - 190028001947343412342341: - access_token: !secret garadget_access_token - name: Garage door - -sensor: - - platform: template - sensors: - garage_door_status: - friendly_name: 'State of the door' - value_template: '{{ states.cover.garage_door.state }}' - garage_door_time_in_state: - friendly_name: 'Since' - value_template: '{{ states.cover.garage_door.attributes.time_in_state }}' - garage_door_wifi_signal_strength: - friendly_name: 'WiFi strength' - value_template: '{{ states.cover.garage_door.attributes.wifi_signal_strength }}' - unit_of_measurement: 'dB' - -group: - garage_door: - name: Garage door - entities: - - cover.garage_door - - sensor.garage_door_status - - sensor.garage_door_time_in_state - - sensor.garage_door_wifi_signal_strength - -customize: - sensor.garage_door_time_in_state: - icon: mdi:timer-sand - sensor.garage_door_wifi_signal_strength: - icon: mdi:wifi -``` -{% endraw %} - -Some of the Garadget sensors can create a lot of clutter in the logbook. Use this section of code in your `configuration.yaml` to exclude those entries. - -```yaml -logbook: - exclude: - entities: - - sensor.garage_door_time_in_state - - sensor.garage_door_wifi_signal_strength -``` - -As of firmware release 1.17 the garadget device has native support for MQTT. The options allow the end-user to configure the device in the following ways 'cloud only', 'cloud and MQTT' or 'MQTT only'. - -For configuration of the garadget as a MQTT cover: - -```yaml -cover: - - platform: mqtt - name: "Garage Door" - command_topic: "garadget/device_name/command" - state_topic: "garadget/device_name/status" - payload_open: "open" - payload_close: "close" -``` diff --git a/source/_components/cover.gogogate2.markdown b/source/_components/cover.gogogate2.markdown deleted file mode 100644 index a24ef1fd02..0000000000 --- a/source/_components/cover.gogogate2.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Gogogate2 Cover" -description: "Instructions on how to integrate Gogogate2-Enabled garage door covers into Home Assistant." -date: 2018-03-26 20:02 -sidebar: true -comments: false -sharing: true -footer: true -logo: gogogate2.png -ha_category: Cover -ha_release: 0.67 -ha_iot_class: Local Polling ---- - -The `gogogate2` cover platform lets you control Gogogate2-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Gogogate2 mobile app. - -## {% linkable_title Configuration %} - -To use your Gogogate2 cover in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: gogogate2 - username: email@email.com - password: password - ip_address: 192.168.1.200 -``` - -{% configuration %} -username: - description: Your Gogogate2 account username. - required: true - type: string -password: - description: Your Gogogate2 account password. - required: true - type: string -ip_address: - description: The IP Address of your Gogogate2 device. - required: true - type: string -name: - description: Allows you to override the default name. - default: gogogate2 - required: false - type: string -{% endconfiguration %} diff --git a/source/_components/cover.group.markdown b/source/_components/cover.group.markdown deleted file mode 100644 index c29b4b46a1..0000000000 --- a/source/_components/cover.group.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Cover Group" -description: "Instructions how to setup grouped covers in Home Assistant." -date: 2018-02-11 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Cover -ha_release: 0.66 -ha_iot_class: "Local Push" -logo: home-assistant.png ---- - -The `group` platform can create a cover that combines several cover entities into one. - -To enable `Cover Groups` in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: group - entities: - - cover.hall_window - - cover.living_room_window -``` - -{% configuration %} - name: - description: Name to use in the frontend. - required: false - type: string - default: "Cover Group" - entities: - description: List of all cover entities you want to control. - required: true - type: [string | list] -{% endconfiguration %} - -## {% linkable_title Functionality %} - -It works best if you group covers with the same supported features together (like support for `open`/`close`/`stop`/`position`/`tilt controls`), but is not limited to it. In case you have bundled covers with different features together, the controls will only affect those covers that support the actions. diff --git a/source/_components/cover.homematic.markdown b/source/_components/cover.homematic.markdown deleted file mode 100644 index e5f3a8930e..0000000000 --- a/source/_components/cover.homematic.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Homematic Cover" -description: "Instructions on how to integrate Homematic covers within Home Assistant." -date: 2016-08-24 14:25 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Cover -ha_release: 0.27 -ha_iot_class: "Local Push" ---- - - -The `homematic` cover platform lets you control [Homematic](http://www.homematic.com/) covers such as rollershutters through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. diff --git a/source/_components/cover.isy994.markdown b/source/_components/cover.isy994.markdown deleted file mode 100644 index 929afac31d..0000000000 --- a/source/_components/cover.isy994.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ISY994 Cover" -description: "Instructions on how to integrate ISY994 covers into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Cover -ha_iot_class: "Local Push" ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) cover from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/cover.knx.markdown b/source/_components/cover.knx.markdown deleted file mode 100644 index cd620f1563..0000000000 --- a/source/_components/cover.knx.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -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.markdown b/source/_components/cover.lutron.markdown deleted file mode 100644 index ffd2c100b2..0000000000 --- a/source/_components/cover.lutron.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Lutron Cover" -description: "Instructions on how to setup the Lutron shades within Home Assistant." -date: 2018-01-11 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Cover -ha_iot_class: "Local Polling" -ha_release: 0.61 ---- - -To get your Lutron roller shades working with Home Assistant, follow the instructions for the general [Lutron component](/components/lutron/). diff --git a/source/_components/cover.lutron_caseta.markdown b/source/_components/cover.lutron_caseta.markdown deleted file mode 100644 index ee64257f1a..0000000000 --- a/source/_components/cover.lutron_caseta.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Lutron Caseta Cover" -description: "Instructions on how to setup the Lutron Caseta covers within Home Assistant." -date: 2017-05-20 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Cover -ha_iot_class: "Local Polling" -ha_release: 0.45 ---- - -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 deleted file mode 100644 index a530768096..0000000000 --- a/source/_components/cover.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "Covers" -description: "Instructions on how to integrate covers into Home Assistant." -date: 2016-06-28 17:30 -sidebar: true -comments: false -sharing: true -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/). 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 %} - -### {% linkable_title Cover control services %} -Available services: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`, `cover.open_cover_tilt`, `cover.close_cover_tilt`, `cover.stop_cover_tilt` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Else targets all. - -### {% linkable_title Service `cover.set_cover_position` %} - -Set cover position of one or multiple covers. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Else targets all. -| `position` | no | Integer between 0 and 100. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: cover.set_cover_position - data: - entity_id: cover.demo - position: 50 -``` - -### {% linkable_title Service `cover.set_cover_tilt_position` %} - -Set cover tilt position of one or multiple covers. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Else targets all. -| `position` | no | Integer between 0 and 100. - -#### {% linkable_title Automation example %} - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - - service: cover.set_cover_tilt_position - data: - entity_id: cover.demo - position: 50 -``` diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown deleted file mode 100755 index 81358f8776..0000000000 --- a/source/_components/cover.mqtt.markdown +++ /dev/null @@ -1,226 +0,0 @@ ---- -layout: page -title: "MQTT Cover" -description: "Instructions on how to integrate MQTT covers into Home Assistant." -date: 2016-09-28 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Cover -ha_iot_class: "depends" -ha_release: 0.18 ---- - -The `mqtt` cover platform allows you to control an MQTT cover (such as blinds, a rollershutter, or a garage door). - -## {% linkable_title Configuration %} - -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`. - -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`. - -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.yaml entry -cover: - - platform: mqtt - name: "MQTT Cover" - command_topic: "home-assistant/cover/set" -``` - -{% configuration %} -name: - description: The name of the cover. - required: false - type: string - default: MQTT Cover -command_topic: - description: The MQTT topic to publish commands to control the cover. - required: false - type: string -payload_open: - description: The command payload that opens the cover. - required: false - type: string - default: OPEN -payload_close: - description: The command payload that closes the cover. - required: false - type: string - default: CLOSE -payload_stop: - description: The command payload that stops the cover. - required: false - type: string - default: STOP -state_topic: - description: The MQTT topic subscribed to receive cover state messages. - required: false - type: string -state_open: - description: The payload that represents the open state. - required: false - type: string - default: open -state_closed: - description: The payload that represents the closed state. - required: false - type: string - default: closed -availability_topic: - description: "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." - required: false - type: string -payload_available: - description: The payload that represents the online state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the offline state. - required: false - type: string - default: offline -optimistic: - description: Flag that defines if switch works in optimistic mode. - required: false - type: string - default: "`true` if no state topic defined, else `false`." -qos: - description: The maximum QoS level to be used when receiving and publishing messages. - required: false - type: integer - default: 0 -retain: - description: Defines if published messages should have the retain flag set. - required: false - type: boolean - default: false -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." - required: false - type: string -set_position_topic: - description: The MQTT topic to publish position commands to. - required: false - type: string -set_position_template: - description: " 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." - required: false - type: string -tilt_command_topic: - description: The MQTT topic to publish commands to control the cover tilt. - required: false - type: string -tilt_status_topic: - description: The MQTT topic subscribed to receive tilt status update values. - required: false - type: string -tilt_min: - description: The minimum tilt value. - required: false - type: integer - default: 0 -tilt_max: - description: The maximum tilt value - required: false - type: integer - default: 100 -tilt_closed_value: - description: The value that will be sent on a `close_cover_tilt` command. - required: false - type: integer - default: 0 -tilt_opened_value: - description: The value that will be sent on an `open_cover_tilt` command. - required: false - type: integer - default: 0 -tilt_status_optimistic: - description: Flag that determines if tilt works in optimistic mode. - required: false - type: boolean - default: "`true` if `tilt_status_topic` is not defined, else `false`" -tilt_invert_state: - description: Flag that determines if open/close are flipped; higher values toward closed and lower values toward open. - required: false - type: boolean - default: false -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you will find some real life examples of how to use this platform. - -### {% linkable_title Full configuration without tilt %} - -The example below shows a full configuration for a cover without tilt. - -```yaml -# Example configuration.yaml entry -cover: - - platform: mqtt - 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: "closed" - payload_available: "online" - payload_not_available: "offline" - optimistic: false - value_template: '{% raw %}{{ value.x }}{% endraw %}' -``` - -### {% linkable_title Full configuration %} - -The example below shows a full configuration for a cover. - -{% raw %} -```yaml -# Example configuration.yaml entry -cover: - - platform: mqtt - 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: "closed" - payload_available: "online" - payload_not_available: "offline" - optimistic: false - value_template: '{{ value.x }}' - tilt_command_topic: 'home-assistant/cover/tilt' - tilt_status_topic: 'home-assistant/cover/tilt-state' - tilt_min: 0 - tilt_max: 180 - tilt_closed_value: 70 - tilt_opened_value: 180 -``` -{% endraw %} - -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 deleted file mode 100644 index 419e65ef7a..0000000000 --- a/source/_components/cover.myq.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "MyQ Cover" -description: "Instructions on how to integrate MyQ-Enabled garage door covers into Home Assistant." -date: 2017-02-14 14:21 -sidebar: true -comments: false -sharing: true -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. - -## {% linkable_title Configuration %} - -To use your MyQ cover in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: myq - username: YOUR_USERNAME - password: YOUR_PASSWORD - type: chamberlain -``` - -{% configuration %} -username: - description: Your MyQ account username. - required: true - type: string -password: - description: Your MyQ account password. - required: true - type: string -password: - description: "Your device type/brand. Supported types are `chamberlain`, `liftmaster`, `craftsman` and `merlin`." - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/cover.mysensors.markdown b/source/_components/cover.mysensors.markdown deleted file mode 100644 index b4ded3e1b4..0000000000 --- a/source/_components/cover.mysensors.markdown +++ /dev/null @@ -1,158 +0,0 @@ ---- -layout: page -title: "MySensors Cover" -description: "Instructions on how to integrate MySensors covers into Home Assistant." -date: 2016-10-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Cover -ha_release: "0.30" -ha_iot_class: "Local Push" ---- - -Integrates MySensors covers into Home Assistant. See the [main component] for configuration instructions. - -The following actuator types are supported: - -##### MySensors version 1.4 - -S_TYPE | V_TYPE ---------|-------------------------------------------- -S_COVER | V_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT] - -##### MySensors version 1.5 and higher - -S_TYPE | V_TYPE ---------|------------------------------------------------- -S_COVER | V_UP, V_DOWN, V_STOP, [V_PERCENTAGE or V_STATUS] - -All V_TYPES above are required. Use V_PERCENTAGE (or V_DIMMER) if you know the exact position of the cover in percent, use V_STATUS (or V_LIGHT) if you don't. - -For more information, visit the [serial api] of MySensors. - -### {% linkable_title Example sketch %} - -```cpp -/* - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - */ - -// Enable debug prints to serial monitor -#define MY_DEBUG -#define MY_RADIO_NRF24 - -#include -#define SN "Cover" -#define SV "1.1" - -// Actuators for moving the cover up and down respectively. -#define COVER_UP_ACTUATOR_PIN 2 -#define COVER_DOWN_ACTUATOR_PIN 3 -// Sensors for finding out when the cover has reached its up/down position. -// These could be simple buttons or linear hall sensors. -#define COVER_UP_SENSOR_PIN 4 -#define COVER_DOWN_SENSOR_PIN 5 - -#define CHILD_ID 0 - -// Internal representation of the cover state. -enum State { - IDLE, - UP, // Window covering. Up. - DOWN, // Window covering. Down. -}; - -static int state = IDLE; -static int status = 0; // 0=cover is down, 1=cover is up -static bool initial_state_sent = false; -MyMessage upMessage(CHILD_ID, V_UP); -MyMessage downMessage(CHILD_ID, V_DOWN); -MyMessage stopMessage(CHILD_ID, V_STOP); -MyMessage statusMessage(CHILD_ID, V_STATUS); - -void sendState() { - // Send current state and status to gateway. - send(upMessage.set(state == UP)); - send(downMessage.set(state == DOWN)); - send(stopMessage.set(state == IDLE)); - send(statusMessage.set(status)); -} - -void setup() { - pinMode(COVER_UP_SENSOR_PIN, INPUT); - pinMode(COVER_DOWN_SENSOR_PIN, INPUT); -} - -void presentation() { - sendSketchInfo(SN, SV); - - present(CHILD_ID, S_COVER); -} - -void loop() { - if (!initial_state_sent) { - sendState(); - initial_state_sent = true; - } - - if (state == IDLE) { - digitalWrite(COVER_UP_ACTUATOR_PIN, LOW); - digitalWrite(COVER_DOWN_ACTUATOR_PIN, LOW); - } - - if (state == UP && digitalRead(COVER_UP_SENSOR_PIN) == HIGH) { - Serial.println("Cover is up."); - // Update status and state; send it to the gateway. - status = 1; - state = IDLE; - sendState(); - // Actuators will be disabled in next loop() iteration. - } - - if (state == DOWN && digitalRead(COVER_DOWN_SENSOR_PIN) == HIGH) { - Serial.println("Cover is down."); - // Update status and state; send it to the gateway. - status = 0; - state = IDLE; - sendState(); - // Actuators will be disabled in next loop() iteration. - } -} - -void receive(const MyMessage &message) { - if (message.type == V_UP) { - // Set state to covering up and send it back to the gateway. - state = UP; - sendState(); - Serial.println("Moving cover up."); - - // Activate actuator until the sensor returns HIGH in loop(). - digitalWrite(COVER_UP_ACTUATOR_PIN, HIGH); - } - - if (message.type == V_DOWN) { - // Set state to covering up and send it back to the gateway. - state = DOWN; - sendState(); - Serial.println("Moving cover down."); - // Activate actuator until the sensor returns HIGH in loop(). - digitalWrite(COVER_DOWN_ACTUATOR_PIN, HIGH); - } - - if (message.type == V_STOP) { - // Set state to idle and send it back to the gateway. - state = IDLE; - sendState(); - Serial.println("Stopping cover."); - - // Actuators will be switched off in loop(). - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: https://www.mysensors.org/download/serial_api_20 diff --git a/source/_components/cover.opengarage.markdown b/source/_components/cover.opengarage.markdown deleted file mode 100644 index 815b1e1e64..0000000000 --- a/source/_components/cover.opengarage.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: page -title: "OpenGarage Cover" -description: "Instructions on how to integrate OpenGarage.io covers within Home Assistant." -date: 2017-04-07 14:25 -sidebar: true -comments: false -sharing: true -footer: true -logo: opengarage.png -ha_category: Cover -ha_release: 0.44 ---- - - -The `opengarage` cover platform lets you control the open-source [OpenGarage.io](https://opengarage.io/) device through Home Assistant. - -To enable OpenGarage Covers in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - platform: opengarage - covers: - garage: - host: 192.168.1.12 - device_key: opendoor - name: Left Garage Door - garage2: - host: 192.168.1.13 - device_key: opendoor - name: Right Garage Door -``` - -Configuration variables: - -- **covers** array (*Required*): List of your doors. - - **identifier** (*Required*): Name of the cover as slug. Multiple entries are possible. - - **host** (*Required*): IP address of device. - - **port** (*Optional*): HTTP Port. Default is `80`. - - **device_key** (*Required*): Access key to control device. Default is `opendoor`. - - **name** (*Optional*): Name to use in the Frontend. If not provided, it will use name configured in device. - - - -**Example with more detail:** -

    - -

    - -```yaml -# Related configuration.yaml entry -cover: - platform: opengarage - covers: - garage: - host: 192.168.1.12 - device_key: opendoor - name: honda - -sensor: - platform: template - sensors: - garage_status: - friendly_name: 'Honda Door Status' - value_template: {% raw %}'{% if states.cover.honda %} - {% if states.cover.honda.attributes["door_state"] == "open" %} - Open - {% elif states.cover.honda.attributes["door_state"] == "closed" %} - Closed - {% elif states.cover.honda.attributes["door_state"] == "opening" %} - Opening - {% elif states.cover.honda.attributes["door_state"] == "closing" %} - Closing - {% else %} - Unknown - {% endif %} - {% else %} - n/a - {% endif %}'{% endraw %} - garage_car_present: - friendly_name: 'Honda in Garage' - value_template: {% raw %}'{% if states.cover.honda %} - {% if states.cover.honda.state == "open" %} - n/a - {% elif ((states.cover.honda.attributes["distance_sensor"] > 40) and (states.cover.honda.attributes["distance_sensor"] < 100)) %} - Yes - {% else %} - No - {% endif %} - {% else %} - n/a - {% endif %}'{% endraw %} - -group: - garage: - name: Garage - entities: - - cover.honda - - sensor.garage_status - - sensor.garage_car_present - -customize: - cover.honda: - friendly_name: Honda - entity_picture: /local/honda.gif - sensor.garage_car_present: - icon: mdi:car -``` diff --git a/source/_components/cover.rflink.markdown b/source/_components/cover.rflink.markdown deleted file mode 100644 index bc4d18538d..0000000000 --- a/source/_components/cover.rflink.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: page -title: "RFLink Cover" -description: "Instructions on 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 a `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.rfxtrx.markdown b/source/_components/cover.rfxtrx.markdown deleted file mode 100644 index dd31090f86..0000000000 --- a/source/_components/cover.rfxtrx.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "RFXtrx Cover" -description: "Instructions on how to integrate RFXtrx covers into Home Assistant." -date: 2016-08-24 14:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: rfxtrx.png -ha_category: Cover -ha_release: 0.27 ---- - -The `rfxtrx` platform supports Siemens/LightwaveRF and RFY roller shutters that communicate in the frequency range of 433.92 MHz. - -First you have to set up your [rfxtrx hub](/components/rfxtrx/). - -### {% linkable_title Configuration %} - -##### {% linkable_title Siemens/LightwaveRF %} - -The easiest way to find your roller shutters is to add this to your `configuration.yaml`: - -```yaml -cover: - - platform: rfxtrx - automatic_add: True -``` - -Launch your homeassistant and go the website (e.g http://localhost:8123). Push your remote and your device should be added. - -Once added it will show an ID (e.g `0b11000102ef9f210010f70`) and you can verify that it works from the frontend. Then you should update your configuration to: - -```yaml -cover: - - platform: rfxtrx - devices: - 0b11000102ef9f210010f70: - name: device_name -``` - -##### {% linkable_title RFY %} - -The [RFXtrx433e](http://www.rfxcom.com/RFXtrx433E-USB-43392MHz-Transceiver/en) is required for RFY support, however it does not support receive for the RFY protocol - as such devices cannot be automatically added. Instead, configure the device in the [rfxmngr](http://www.rfxcom.com/downloads.htm) tool. Make a note of the assigned ID and Unit Code and then add a device to the configuration with the following id `071a0000[id][unit_code]`. Eg, if the id was `0a` `00` `01`, and the unit code was `01` then the fully qualified id would be `071a00000a000101`, if you set your id/code to single digit in the rfxmngr eg, id: `1` `02` `04` and unit code: `1` you will need to add `0` before, so `102031` becomes `071a000001020301`. - -##### {% linkable_title Common %} - -Example configuration: - -```yaml -# Example configuration.yaml entry -cover: - - platform: rfxtrx - automatic_add: False - signal_repetitions: 2 - devices: - 0b1100ce3213c7f210010f70: # Siemens/LightwaveRF - name: Bedroom Shutter - 071a00000a000101: # RFY - name: Bathroom Shutter -``` - -Configuration variables: - -- **devices** (*Required*): A list of devices with their name to use in the frontend. -- **automatic_add** (*Optional*): To enable the automatic addition of new covers (Siemens/LightwaveRF only). -- **signal_repetitions** (*Optional*): Because the rxftrx 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 roller shutter to try to send each signal repeatedly. -- **fire_event** (*Optional*): Fires an event even if the state is the same as before. Can be used for automations. diff --git a/source/_components/cover.rpi_gpio.markdown b/source/_components/cover.rpi_gpio.markdown deleted file mode 100644 index ac953405f0..0000000000 --- a/source/_components/cover.rpi_gpio.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "Raspberry Pi Cover" -description: "Instructions on how to setup the Raspberry Pi covers within Home Assistant." -date: 2016-08-24 14:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Cover -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - -The `rpi_gpio` cover platform allows you to use a Raspberry Pi to control your cover such as Garage doors. - -It uses two pins on the Raspberry Pi. - -- The `state_pin` will detect if the cover is closed, and -- the `relay_pin` will trigger the cover to open or close. - -Although you do not need Andrews Hilliday's software controller when you run Home Assistant, he has written clear instructions on how to hook your garage door and sensors up to your Raspberry Pi, which can be found [here](https://github.com/andrewshilliday/garage-door-controller#hardware-setup). - -To enable Raspberry Pi Covers in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: rpi_gpio - covers: - - relay_pin: 10 - state_pin: 11 -``` - -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. - - **name** (*Optional*): Name to use in the frontend. - -Full example: - -```yaml -# Example configuration.yaml entry -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 - - relay_pin: 12 - state_pin: 13 - name: 'Right door' -``` - -## {% linkable_title Remote Raspberry Pi Cover %} - -If you don't have Home Assistant running on your Raspberry Pi and you want to use it as a remote cover instead, there is a project called [GarageQTPi](https://github.com/Jerrkawz/GarageQTPi) that will work remotely with the [MQTT Cover Component](/components/cover.mqtt/). Follow the Github instructions to install and configure GarageQTPi and once configured follow the Home Assistant instructions to configure the MQTT Cover. - diff --git a/source/_components/cover.scsgate.markdown b/source/_components/cover.scsgate.markdown deleted file mode 100644 index 96b49a7158..0000000000 --- a/source/_components/cover.scsgate.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "SCSGate Cover" -description: "Instructions on how to integrate SCSGate motorized devices into Home Assistant." -date: 2016-06-28 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: bus_scs.png -ha_category: Cover -ha_iot_class: "Local Polling" ---- - -The SCSGate devices can control motorized covers connected to the BTicino MyHome system. - -To enable SCSGate covers in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: scsgate - devices: - living_room: - name: Living Room - scs_id: XXXXX -``` - -Configuration variables: - -- **devices** array (*Required*): A list of devices. - - **[slug]** (*Required*): Slug of the device. - - **name** (*Required*): Name to use in the frontend. - - **scs_id** (*Required*): The ID of your SCSGate device. - -

    -**Known limitation:** It is not possible to know the current state of the cover. -

    - diff --git a/source/_components/cover.tahoma.markdown b/source/_components/cover.tahoma.markdown deleted file mode 100644 index a67537ca11..0000000000 --- a/source/_components/cover.tahoma.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Tahoma Cover" -description: "Instructions on how to integrate Tahoma covers into Home Assistant." -date: 2017-07-18 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tahoma.png -ha_category: Cover -ha_release: 0.59 ---- - -The `tahoma` cover platform lets you control covers added to your Tahoma Box in Home Assistant. - -Covers will be added automatically. Please refer to the [component](/components/tahoma/) configuration on how to setup Tahoma. diff --git a/source/_components/cover.tellstick.markdown b/source/_components/cover.tellstick.markdown deleted file mode 100644 index 1d2660cda5..0000000000 --- a/source/_components/cover.tellstick.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "TellStick Cover" -description: "Instructions on how to integrate TellStick covers into Home Assistant." -date: 2017-11-29 16:23 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus_tellstick.png -ha_category: Cover -ha_iot_class: "Assumed State" -ha_release: "0.60" ---- - - -This `tellstick` cover platform allows you to control your [TellStick](http://www.telldus.se/products/tellstick) covers. - -To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -cover: - - platform: tellstick -``` diff --git a/source/_components/cover.template.markdown b/source/_components/cover.template.markdown deleted file mode 100644 index 06a4c09d9c..0000000000 --- a/source/_components/cover.template.markdown +++ /dev/null @@ -1,316 +0,0 @@ ---- -layout: page -title: "Template Cover" -description: "Instructions on 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: A list of entity IDs so the cover only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. - required: false - type: [string, list] - 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 %} - -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.vera.markdown b/source/_components/cover.vera.markdown deleted file mode 100644 index a982c83a41..0000000000 --- a/source/_components/cover.vera.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Vera Cover" -description: "Instructions on how to integrate Vera covers into Home Assistant." -date: 2016-09-19 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Cover -ha_iot_class: "Local Push" -ha_release: 0.13 ---- - -The `vera` cover platform allows you to control your [Vera](http://getvera.com/) covers from within Home Assistant. - -They will be automatically discovered if the Vera component is loaded. - -For more configuration information see the [Vera component](/components/vera/) documentation. diff --git a/source/_components/cover.wink.markdown b/source/_components/cover.wink.markdown deleted file mode 100644 index 8c82634187..0000000000 --- a/source/_components/cover.wink.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Wink Cover" -description: "Instructions on how to setup the Wink garage doors within Home Assistant." -date: 2016-06-28 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Cover -ha_release: 0.13 -ha_iot_class: "Cloud Polling" ---- - -Wink Cover garage door functionality varies on the product. Home Assistant can open, close, and view state of GoControl/Linear openers. For Chamberlain MyQ-enabled openers, Home Assistant is limited to show current state (open or closed) only using this Wink cover. This restriction was imposed by Chamberlain for third party control. Wink suggests that MyQ customers should contact Chamberlain directly to inquire about expanding permissions. - -The [MyQ Cover](/components/cover.myq/) does provide full functionality for opening and closing Chamberlain MyQ-enabled garage doors. If installed along with the Wink Component, a duplicate garage door entity may exist. In that case, the semi-functional Wink garage door entity can be hidden via customize.yaml. - -The requirement is that you have setup [Wink](/components/wink/). - -### {% linkable_title Supported cover devices %} - -- Bali window treatments -- Lutron shades -- Pella motorized blinds and shades -- GoControl garage door opener -- Chamberlain MyQ (Limited functionality) (No Wink hub required) - -

    -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 deleted file mode 100644 index 6f5353b9c8..0000000000 --- a/source/_components/cover.xiaomi_aqara.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Xiaomi Cover" -description: "Instructions on 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/cover.zwave.markdown b/source/_components/cover.zwave.markdown deleted file mode 100644 index 53477e1e00..0000000000 --- a/source/_components/cover.zwave.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Z-Wave Cover" -description: "Instructions on how to setup the Z-Wave covers within Home Assistant." -date: 2016-12-18 19:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Cover -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - -Z-Wave garage doors, blinds, and roller shutters are supported as cover in Home Assistant. - -To get your Z-Wave covers working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). - -If you discover that you need to [invert the operation](/docs/z-wave/installation/#invert_openclose_buttons) of open/close for a particular device, you may change this behavior in your Z-Wave section of your `configuration.yaml` file as follows: - -```yaml -zwave: - device_config: - cover.my_cover: - invert_openclose_buttons: true -``` diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown deleted file mode 100644 index 84624b5af0..0000000000 --- a/source/_components/daikin.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Daikin AC" -description: "Instructions on how to integrate Hive devices with Home Assistant." -date: 2017-12-10 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: daikin.png -ha_category: Hub -ha_release: 0.59 -ha_iot_class: "Local Polling" ---- - - -The `daikin` component integrates Daikin air conditioning systems into Home Assistant. - -To automatically add all your Daikin devices (ACs and associated sensors) into your Home Assistant installation, add the following to your 'configuration.yaml' file: - -

    -Please note, the Daikin platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant. -

    - -To automatically add all your Daikin devices (ACs and associated sensors) into your Home Assistant installation, add the following to your `configuration.yaml` file: - -```yaml -# Full manual example configuration.yaml entry -daikin: - hosts: - - 192.168.4.161 - monitored_conditions: - - inside_temperature - - outside_temperature -``` - -{% configuration %} -hosts: - description: List of IP addresses or hostnames. - required: false - default: All discovered hosts - type: array -monitored_conditions: - description: List of items you want to monitor for each device. - required: false - default: All conditions - type: list - keys: - inside_temperature: - description: The current temperature measured inside the house. - outside_temperature: - description: The current temperature measured outside the house. -{% endconfiguration %} - -

    -Please note that some AC devices may report outside temperature only when they are turned on. -

    - diff --git a/source/_components/datadog.markdown b/source/_components/datadog.markdown deleted file mode 100644 index 7a3ec052c7..0000000000 --- a/source/_components/datadog.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Datadog" -description: "Send data and events to Datadog." -date: 2017-04-18 00:00 -sidebar: true -comments: false -sharing: true -logo: datadog.png -footer: true -ha_category: History -ha_release: 0.45 ---- - -The `datadog` component sends all state changes to [Datadog](https://www.datadoghq.com/) using a [Datadog Agent](http://docs.datadoghq.com/guides/basic_agent_usage/). - -Datadog allows you to analyze, monitor, cross-reference and alert upon your data. You can use it to detect statistical anomalies, see graphs across multiple sources in real-time, send critical alerts to Slack, etc. - -

    - -

    - -The component also sends events from the logbook into Datadog, allowing you to correlate these events with your data. - -

    - -

    - -To use the `datadog` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -datadog: -``` - -Configuration variables: - -- **host** (*Optional*): The IP address or hostname of your Datadog host, e.g., 192.168.1.23. Defaults to `localhost`. -- **port** (*Optional*): Port to use. Defaults to 8125. -- **prefix** (*Optional*): Prefix to use. Defaults to `hass`. -- **rate** (*Optional*): The sample rate of UDP packets sent to Datadog. Defaults to 1. diff --git a/source/_components/deconz.markdown b/source/_components/deconz.markdown deleted file mode 100644 index d1fde01521..0000000000 --- a/source/_components/deconz.markdown +++ /dev/null @@ -1,175 +0,0 @@ ---- -layout: page -title: "deCONZ" -description: "Instructions on how to setup Conbee/Raspbee devices with deCONZ from Dresden Elektronik within Home Assistant." -date: 2017-11-12 16:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: deconz.jpeg -ha_category: Hub -ha_release: "0.61" -ha_iot_class: "Local Push" ---- - -[deCONZ](https://www.dresden-elektronik.de/funktechnik/products/software/pc/deconz/) by [Dresden Elektronik](https://www.dresden-elektronik.de) is a software that communicates with Conbee/Raspbee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. - -[deCONZ REST API](http://dresden-elektronik.github.io/deconz-rest-doc/). - -### {% linkable_title Supported device types %} - -- [Zigbee Lights](/components/light.deconz/) -- [Consumption Sensors](/components/sensor.deconz/) -- [Humidity Sensors](/components/sensor.deconz/) -- [Light Level Sensors](/components/sensor.deconz/) -- [OpenClose Detectors](/components/binary_sensor.deconz/) -- [Power Sensors](/components/sensor.deconz/) -- [Presence Detectors](/components/binary_sensor.deconz/) -- [Pressure Sensors](/components/sensor.deconz/) -- [Switches (Remote Controls)](/components/sensor.deconz/) -- [Temperature Sensors](/components/sensor.deconz/) - -## {% linkable_title Configuration %} - -Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file. - -If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Menu** -> **Settings** -> **Unlock Gateway** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you've generated the API key from Home Assistant, the API key will be stored in `.config_entries.json` inside the `.homeassistant` folder. - -You can add the following to your configuration.yaml file if you are not using the `discovery:` component: - -```yaml -# Example configuration.yaml entry -deconz: - host: IP_ADDRESS -``` - -{% configuration %} -host: - description: The IP address of your deCONZ web server. - required: false - type: string -api_key: - description: The API key to access your deCONZ web server. - required: false - type: string -port: - description: Configure port deCONZ web server is accessible from. - required: false - default: 80 - type: int -{% endconfiguration %} - -A full configuration could look like this: - -```yaml -# Example configuration.yaml entry -deconz: - host: 127.0.0.1 - api_key: 0123456789 - port: 80 -``` - -## {% linkable_title Debugging component %} - -If you have problems with deCONZ or the component you can add debug prints to the log. - -```yaml -logger: - default: info - logs: - pydeconz: debug -    homeassistant.components.deconz: debug -``` - -## {% linkable_title Device services %} - -Available services: `configure`. - -#### {% linkable_title Service `deconz.configure` %} - -Set attribute of device in Deconz using [Rest API](http://dresden-elektronik.github.io/deconz-rest-doc/rest/). - -| Service data attribute | Optional | Description | -|-----------|----------|-------------| -| `field` | No | String representing a specific device in deCONZ. | -| `entity` | No | String representing a specific HASS entity of a device in deCONZ. | -| `data` | No | Data is a JSON object with what data you want to alter. | - -Field and entity are exclusive, i.e you can only use one in a request. - -{ "field": "/lights/1", "data": {"name": "light2"} } - -{ "entity": "light.light1", "data": {"name": "light2"} } - -{ "field": "/config", "data": {"permitjoin": 60} } - -## {% linkable_title Remote control devices %} - -Remote controls (ZHASwitch category) will be not be exposed as a regular entity, but as events named 'deconz_event' with a payload of 'id' and 'event'. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. - -Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here. - -| Switch code | Description | -|-------------|-------------| -| 1XXX | Button #1 up to #8 | -| XXX1 | Button hold | -| XXX2 | Button short release | -| XXX3 | Button long release | - -Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up button. - -For the IKEA Tradfri remote, 1 is the middle button, 2 is up, 3 is down, 4 is left, and 5 is right. - -## {% linkable_title Examples %} - -### {% linkable_title Step up and step down input number with wireless dimmer %} - -{% raw %} -```yaml -automation: - - alias: 'Toggle lamp from dimmer' - initial_state: 'on' - trigger: - platform: event - event_type: deconz_event - event_data: - id: remote_control_1 - event: 1002 - action: - service: light.toggle - entity_id: light.lamp - - - alias: 'Increase brightness of lamp from dimmer' - initial_state: 'on' - trigger: - platform: event - event_type: deconz_event - event_data: - id: remote_control_1 - event: 2002 - action: - - service: light.turn_on - data_template: - entity_id: light.lamp - brightness: > - {% set bri = states.light.lamp.attributes.brightness | int %} - {{ [bri+30, 249] | min }} - - - alias: 'Decrease brightness of lamp from dimmer' - initial_state: 'on' - trigger: - platform: event - event_type: deconz_event - event_data: - id: remote_control_1 - event: 3002 - action: - - service: light.turn_on - data_template: - entity_id: light.lamp - brightness: > - {% set bri = states.light.lamp.attributes.brightness | int %} - {{ [bri-30, 0] | max }} -``` -{% endraw %} diff --git a/source/_components/demo.markdown b/source/_components/demo.markdown deleted file mode 100644 index f1c2573720..0000000000 --- a/source/_components/demo.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "Demo platforms" -description: "Instructions on how to use the Platform demos with Home Assistant." -date: 2016-02-24 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other ---- - - -The `demo` platform allows you to use components which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](/demo/) or `hass --demo-mode` but combined with your own real/functional platforms. - -Available demo platforms: - -- [Alarm control panel](/components/alarm_control_panel/) (`alarm_control_panel`) -- [Binary sensor](/components/binary_sensor/) (`binary_sensor`) -- [Camera](/components/camera/) (`camera`) -- [Climate](/components/climate/) (`climate`) -- [Cover](/components/cover/) (`cover`) -- [Fan](/components/fan/) (`fan`) -- [Image Processing](/components/image_processing/) (`image_processing`) -- [Light](/components/light/) (`light`) -- [Lock](/components/lock/) (`lock`) -- [Notification](/components/notify/) (`notify`) -- [Remote](/components/remote/) (`remote`) -- [Sensor](/components/sensor/) (`sensor`) -- [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: - -```yaml -# Example configuration.yaml entry -[component]: - - platform: demo -``` - -Configuration variables: - -- **[component]** (*Required*): The name of the component as stated in the listing above the configuration example. diff --git a/source/_components/device_sun_light_trigger.markdown b/source/_components/device_sun_light_trigger.markdown deleted file mode 100644 index d49c4e1565..0000000000 --- a/source/_components/device_sun_light_trigger.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Presence based lights" -description: "Instructions on how to automate your lights with Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Automation ---- - -Home Assistant has a built-in component called `device_sun_light_trigger` to help you automate your lights. The component will: - - * Fade in the lights when the sun is setting and there are people home - * Turn on the lights when people get home after the sun has set - * Turn off the lights when all people leave the house - -This component requires the components [sun](/components/sun/), [device_tracker](/components/device_tracker/) and [light](/components/light/) to be enabled. - -To enable this component, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_sun_light_trigger: -``` - -Configuration variables: - -- **light_group** (*Optional*): Specify a specific light/group of lights that has to be turned on. -- **light_profile** (*Optional*): Specify which light profile to use when turning lights on. -- **device_group** (*Optional*): Specify which group of devices to track. -- **disable_turn_off** (*Optional*): Disable lights being turned off when everybody leaves the house. - -A full configuration example could look like this: - -```yaml -# Example configuration.yaml entry -device_sun_light_trigger: - light_group: group.living_room - light_profile: relax - device_group: group.my_devices - disable_turn_off: 1 -``` diff --git a/source/_components/device_tracker.actiontec.markdown b/source/_components/device_tracker.actiontec.markdown deleted file mode 100644 index fbf2119650..0000000000 --- a/source/_components/device_tracker.actiontec.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Actiontec" -description: "Instructions on how to integrate Actiontec routers into Home Assistant." -date: 2015-08-30 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: actiontec.png -ha_category: Presence Detection ---- - - -This platform allows you to detect presence by looking at connected devices to an [Actiontec](http://www.actiontec.com/) device. - -Supported devices (tested): - -- MI424WR (Verizon FIOS) - -

    -This device tracker needs telnet to be enabled on the router. -

    - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: actiontec - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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 `admin`. -- **password** (*Required*): The password for your given admin account. - -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.aruba.markdown b/source/_components/device_tracker.aruba.markdown deleted file mode 100644 index e84c37954b..0000000000 --- a/source/_components/device_tracker.aruba.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Aruba" -description: "Instructions on how to integrate Aruba routers into Home Assistant." -date: 2015-08-31 08:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: aruba.png -ha_category: Presence Detection -ha_release: 0.7 ---- - - -This platform allows you to detect presence by looking at connected devices to an [Aruba Instant](http://www.arubanetworks.com/products/networking/aruba-instant/) device. - -Supported devices (tested): - -- ARUBA AP-105 - -

    -This device tracker needs telnet to be enabled on the router. -

    - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: aruba - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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`. -- **password** (*Required*): The password for your given admin account. - -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.asuswrt.markdown b/source/_components/device_tracker.asuswrt.markdown deleted file mode 100644 index 7889253ce9..0000000000 --- a/source/_components/device_tracker.asuswrt.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "ASUSWRT" -description: "Instructions on how to integrate ASUSWRT based routers into Home Assistant." -date: 2015-08-06 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: asus.png -ha_category: Presence Detection -ha_release: pre 0.7 ---- - - -The `asuswrt` platform offers presence detection by looking at connected devices to a [ASUSWRT](http://event.asus.com/2013/nw/ASUSWRT/) based router. - -

    -This platform is **NOT** available for [Microsoft Windows installations](http://pexpect.readthedocs.io/en/stable/overview.html#pexpect-on-windows). -

    - -### {% linkable_title Configuration %} - -To use an ASUSWRT router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: asuswrt - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME -``` - -{% configuration %} -host: - description: "The IP address of your router, eg. `192.168.1.1`." - required: true - type: string -username: - description: "The username of an user with administrative privileges, usually `admin`." - required: true - type: string -password: - description: "The password for your given admin account (use this if no SSH key is given)." - required: false - type: string -protocol: - description: "The protocol (`ssh` or `telnet`) to use." - required: false - type: string - default: ssh -port: - description: SSH port to use. - required: false - type: int - default: 22 -mode: - description: "The operating mode of the router (`router` or `ap`)." - required: false - type: string - default: router -ssh_key: - description: The path to your SSH private key file associated with your given admin account (instead of password). - required: false - type: string -require_ip: - description: If the router is in access point mode. - required: false - type: boolean - default: true -{% endconfiguration %} - -

    -You need to [enable telnet](https://www.asus.com/support/faq/1005449/) on your router if you choose to use `protocol: telnet`. -

    - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.automatic.markdown b/source/_components/device_tracker.automatic.markdown deleted file mode 100644 index dff0b45fec..0000000000 --- a/source/_components/device_tracker.automatic.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "Automatic" -description: "Instructions for how to integrate Automatic ODB readers into Home Assistant." -date: 2015-08-28 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: automatic.png -ha_category: Presence Detection -ha_release: 0.28 -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 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 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: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: automatic - client_id: 1234567 - secret: 0987654321 - devices: - - 2007 Honda Element - - 2004 Subaru Impreza -``` - -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/). -- **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). - - -```yaml -# Example automatic event automation -automation: - - trigger: - - platform: event - event_type: automatic_update - event_data: - type: "ignition:on" - vehicle: - id: "C_1234567890abcdefc" - action: - - service: light.turn_off -``` - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the cars to be tracked. diff --git a/source/_components/device_tracker.bbox.markdown b/source/_components/device_tracker.bbox.markdown deleted file mode 100644 index 35bae013f0..0000000000 --- a/source/_components/device_tracker.bbox.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Bbox" -description: "Instructions on how to integrate Bouygues Bbox routers into Home Assistant." -date: 2016-10-13 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bbox.png -ha_category: Presence Detection -ha_release: "0.31" -ha_iot_class: "Local Polling" ---- - - -The `bbox` platform offers presence detection by looking at connected devices to a [Bbox](https://fr.wikipedia.org/wiki/Bbox) based router from [Bouygues](https://www.bouyguestelecom.fr/), which is one of the main Internet provider in France. - -

    -Bbox is a generic name for different hardware routers. The platform has only been tested on a Sagem F@st 5330b because it's the only model the developer owns. -

    - -To use an Bbox router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: bbox -``` - -

    -For now and due to third party limitation, the Bbox must be on the same local network as the Home Assistant installation. And with the default IP configuration (IP of the router must be 192.168.1.254). -

    - -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.bluetooth_le_tracker.markdown b/source/_components/device_tracker.bluetooth_le_tracker.markdown deleted file mode 100644 index ce1dab5000..0000000000 --- a/source/_components/device_tracker.bluetooth_le_tracker.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "Bluetooth LE Tracker" -description: "Instructions for integrating bluetooth low-energy tracking within Home Assistant." -date: 2016-08-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bluetooth.png -ha_category: Presence Detection -ha_iot_class: "Local Poll" -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. - -Devices discovered are stored with 'BLE_' as the prefix for device mac addresses in `known_devices.yaml`. - -This platform requires pybluez to be installed. On Debian based installs, run - -```bash -$ sudo apt install bluetooth libbluetooth-dev pkg-config libboost-python-dev libboost-thread-dev libglib2.0-dev python-dev -``` - -Before you get started with this platform, please note that: - - - This platform is incompatible with Windows - - This platform requires access to the bluetooth stack, see [Rootless Setup section](#rootless-setup) for further information - -To use the Bluetooth tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: bluetooth_le_tracker -``` - -Configuration variables: - -- **device_id** (*Optional*): The device ID for the Bluetooth device to be used for tracking. Defaults to `hci0`. -- **track_new_devices** (*Optional*): If new discovered devices are tracked by default. Defaults to `True`. -- **scan_duration** (*Optional*): How long should the scanner be looking for BLE devices. Defaults to `10` seconds. -- **interval_seconds** (*Optional*): Seconds between each scan for new devices. Defaults to `12` seconds. - -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. - -## {% linkable_title Rootless Setup %} - -Normally accessing the Bluetooth stack is reserved for root, but running programs that are networked as root is a bad security wise. To allow non-root access to the Bluetooth stack we can give Python 3 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 -$ sudo setcap 'cap_net_raw,cap_net_admin+eip' `readlink -f \`which python3\`` -``` - -If you have installed Home Assistant with [AIO](/getting-started/installation-raspberry-pi-all-in-one/), you need to do the following command, this will grant access to Home Assistant to run the required command. - -```bash -$ sudo setcap cap_net_raw,cap_net_admin+eip /srv/homeassistant/homeassistant_venv/bin/python3 -``` - -A restart of Home Assistant is required. - -For additional configuration variables check the [Device tracker page](/components/device_tracker/). diff --git a/source/_components/device_tracker.bluetooth_tracker.markdown b/source/_components/device_tracker.bluetooth_tracker.markdown deleted file mode 100644 index 45bd09eae3..0000000000 --- a/source/_components/device_tracker.bluetooth_tracker.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Bluetooth Tracker" -description: "Instructions for integrating Bluetooth tracking within Home Assistant." -date: 2016-04-10 17:24 -sidebar: true -comments: false -sharing: true -footer: true -logo: bluetooth.png -ha_category: Presence Detection -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`. - -

    -[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: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: bluetooth_tracker -``` - -{% configuration %} -request_rssi: - description: Performs a request for the "Received signal strength indication" (RSSI) of each tracked device - required: false - type: boolean - default: False -{% endconfiguration %} - -In some cases it can be that your device is not discovered. In that case let your phone scan for Bluetooth devices while you restart Home Assistant. Just hit `Scan` on your phone all the time until Home Assistant is fully restarted and the device should appear in `known_devices.yaml`. - -For additional configuration variables check the [Device tracker page](/components/device_tracker/). diff --git a/source/_components/device_tracker.bmw_connected_drive.markdown b/source/_components/device_tracker.bmw_connected_drive.markdown deleted file mode 100644 index 4f390c5fa3..0000000000 --- a/source/_components/device_tracker.bmw_connected_drive.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "BMW Connected Drive Device Tracker" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." -date: 2018-01-10 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bmw.png -ha_category: Presence Detection -ha_release: 0.64 ---- - - -The `bmw_connected_drive` platform allows you to import data on your BMW into Home Assistant. - -The device tracker platform will be automatically configured if the `bmw_connected_drive` component is configured. - -For more configuration information see the [`bmw_connected_drive` component](/components/bmw_connected_drive/) documentation. diff --git a/source/_components/device_tracker.bt_home_hub_5.markdown b/source/_components/device_tracker.bt_home_hub_5.markdown deleted file mode 100644 index 106ba06083..0000000000 --- a/source/_components/device_tracker.bt_home_hub_5.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "BT Home Hub 5" -description: "Instructions on how to integrate BT Home Hub 5 router into Home Assistant." -date: 2016-06-13 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bt.png -ha_category: Presence Detection ---- - - -This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router. - -To use a BT Home Hub 5 router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: bt_home_hub_5 - host: 192.168.1.254 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your router, e.g., 192.168.1.254. - -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.cisco_ios.markdown b/source/_components/device_tracker.cisco_ios.markdown deleted file mode 100644 index 589241b8eb..0000000000 --- a/source/_components/device_tracker.cisco_ios.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "Cisco IOS" -description: "Instructions on how to integrate Cisco IOS routers into Home Assistant." -date: 2016-11-07 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: cisco.png -ha_category: Presence Detection -ha_release: 0.33 ---- - -This is a presence detection scanner for [Cisco](http://www.cisco.com) IOS devices. - -

    -This device tracker needs SSH to be enabled on the router. -

    - -Before using this scanner it is recommended that you lower the ARP cache timeout on your router, as Cisco IOS normally comes with a 4 hour default ARP cache timeout. - -For example, the following commands will lower the timeout to 2 minutes on Vlan1: - -```bash -# 1. use this command to see what Vlan your devices are on -show ip arp - -# 2. Go into configure mode -conf t - -# 3. Use the Vlan name as you see it from step 1 above -interface Vlan1 - -# 4. Set a new arp cache timeout -arp timeout 120 - -# 5. Exit -# Press to exit configure mode - -# 6. Don't forget to save the new config, so that it will survive a reboot -copy running-config startup-config -``` - -

    -If you have a very large number of devices on your VLan (+1000), then you may want to adjust the ARP cache timeout to suit your needs. See [this discussion](https://supportforums.cisco.com/discussion/10169296/arp-timeout) to learn more. -

    - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: cisco_ios - host: ROUTER_IP_ADDRESS - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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. -- **password** (*Required*): The password for your given admin account. - - -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.ddwrt.markdown b/source/_components/device_tracker.ddwrt.markdown deleted file mode 100644 index 826046d029..0000000000 --- a/source/_components/device_tracker.ddwrt.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "DD-WRT" -description: "Instructions on how to integrate DD-WRT based routers into Home Assistant." -date: 2015-05-11 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ddwrt.png -ha_category: Presence Detection -ha_release: pre 0.7 ---- - -This platform offers presence detection by looking at connected devices to a [DD-WRT](http://www.dd-wrt.com/site/index) based router. - -To use a DD-WRT router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: ddwrt - host: ROUTER_IP_ADDRESS - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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`. -- **password** (*Required*): The password for your given admin account. - -By default Home Assistant pulls information about connected devices from DD-WRT every 5 seconds. -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.fritz.markdown b/source/_components/device_tracker.fritz.markdown deleted file mode 100644 index 3e4a745d99..0000000000 --- a/source/_components/device_tracker.fritz.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "FRITZ!Box" -description: "Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant." -date: 2015-12-13 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: Presence Detection -ha_release: "0.10" ---- - - -The `fritz` platform offers presence detection by looking at connected devices to a [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) based router. - -## {% linkable_title Configuration %} - -

    -It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml -If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml; be patient this will take a while.

    - -To use an Fritz!Box router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: fritz -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of your router, eg. `192.168.1.1`. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. -- **username** (*Optional*: The username of an user with administrative privileges, usually `admin`. -- **password** (*Optional*): The password for your given admin account. - -

    -It seems that it is not necessary to use it in current generation Fritz!Box routers because the necessary data can be retrieved anonymously. -

    - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_components/device_tracker.geofency.markdown b/source/_components/device_tracker.geofency.markdown deleted file mode 100644 index be09d277a1..0000000000 --- a/source/_components/device_tracker.geofency.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -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](/components/zone/), otherwise, it will be set to the name of the zone. - -To make Geofency work better with the [proximity](/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.google_maps.markdown b/source/_components/device_tracker.google_maps.markdown deleted file mode 100644 index d05c9e35d2..0000000000 --- a/source/_components/device_tracker.google_maps.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "Google Maps Location Sharing" -description: "Instructions how to use Google Maps Location Sharing to track devices in Home Assistant." -date: 2017-02-12 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: google_maps.png -ha_release: 0.67 -ha_category: Presence Detection -ha_iot_class: "Cloud Polling" ---- - -The `google_maps` platform allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). - -You first need to create an additional Google account and share your location with that account. This platform will use that account to fetch the location of your device(s). You have to setup sharing through the Google Maps app on your mobile phone. You can find more information [here](https://support.google.com/accounts?p=location_sharing). - -This platform will create a file named `google_maps_location_sharing.conf` where it caches your login session. - -

    -Since this platform is using an unofficial API with the help of [locationsharinglib](https://github.com/costastf/locationsharinglib), Google seems to block access to your data the first time you've logged in with this component. -This issue can be fixed by logging in with your new account and approving your login on the [Device Activity](https://myaccount.google.com/device-activity) page. -

    - -To integrate Google Maps Location Sharing in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: google_maps - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The email address for the Google account that has access to your shared location. - required: true - type: string -password: - description: The password for your given username. - required: true - type: string -{% endconfiguration %} diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/device_tracker.gpslogger.markdown deleted file mode 100644 index 4c2889a94b..0000000000 --- a/source/_components/device_tracker.gpslogger.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "GPSLogger" -description: "Instructions on how to use GPSLogger to track devices in Home Assistant." -date: 2016-11-25 15:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Presence Detection -ha_release: 0.34 ---- - -The `gpslogger` device tracker platform allows you to detect presence using [GPSLogger](http://code.mendhak.com/gpslogger/). GPSLogger is an open source app for [Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) that allows users to set up a `GET` request to update GPS coordinates. This can be configured with Home Assistant to update your location. - -To integrate GPSLogger in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: gpslogger - password: !secret gpslogger_password -``` -{% configuration %} -password: - description: Separate password for GPS Logger endpoint. If provided using regular API password to contact endpoint will result in 401 response. - required: false - type: string -{% endconfiguration %} - -## {% linkable_title Setup on your smartphone %} - -Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. - -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 -https://[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 -``` - -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. - -- It's HIGHLY recommended to use SSL/TLS. -- Use the domain that Home Assistant is available on the internet or the public IP address. This can be a local IP address if you are using an always on VPN from your mobile device to your home network. -- Only remove `[Port]` if your Home Assistant instance is using port 443. Otherwise set it to the port you're using. -- For Home Assistant only the above URL, as written, will work - do not add or remove any parameters. -- Make sure to include your [API password](/components/http/) if you have configured a password. Add `&api_password=[Your password]` to the end of the URL. -- You can change the name of your device name by replacing `&device=%SER` with `&device=[Devicename]`. - -If your battery drains fast then you can tune the performance of GPSLogger under **Performance** -> **Location providers** - -

    - - Performance -

    - -A request can be forced from the app to test if everything is working fine. A successful request will update the `known_devices.yaml` file with the device's serial number. diff --git a/source/_components/device_tracker.hitron_coda.markdown b/source/_components/device_tracker.hitron_coda.markdown deleted file mode 100644 index fecdc2fd5e..0000000000 --- a/source/_components/device_tracker.hitron_coda.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Hitron CODA Routers" -description: "Instructions on how to integrate Hitron CODA Routers into Home Assistant." -date: 2017-10-03 15:40 -sidebar: true -comments: false -sharing: true -footer: true -logo: hitron.png -ha_category: Presence Detection -ha_release: 0.58 ---- - -This component offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3) -Router. - -To use a Hitron router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: hitron_coda - host: !secret router_ip - username: !secret router_username - password: !secret router_password -``` - -{% configuration %} -host: - description: The IP address of your router, e.g., `192.168.0.1`. - required: true - type: string -username: - description: The username to login into the router (user should have read access to the web interface of the router). Usually "cusadmin". - required: true - type: string -password: - description: The password for the specified username. Usually your WiFi password. - required: true - type: string -{% endconfiguration %} - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.huawei_router.markdown b/source/_components/device_tracker.huawei_router.markdown deleted file mode 100644 index 92ee5c62d4..0000000000 --- a/source/_components/device_tracker.huawei_router.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Huawei Router" -description: "Instructions on how to integrate Huawei Routers into Home Assistant." -date: 2017-07-16 01:40 -sidebar: true -comments: false -sharing: true -footer: true -logo: huawei.svg -ha_category: Presence Detection -ha_release: 0.51 ---- - -The `huawei` device trakcer platform 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 and HG8247Q Smart Router (used by Vodafone Portugal). - -## {% linkable_title Configuration %} - -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: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -host: - description: The IP address of your router, e.g., 192.168.1.1. - required: true - type: string -username: - description: The username to login into the router (the same used trough the router's web interface). - required: true - type: string -password: - description: The password for the specified username. - required: true - type: string -{% endconfiguration %} - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.icloud.markdown b/source/_components/device_tracker.icloud.markdown deleted file mode 100644 index a57ba44d4b..0000000000 --- a/source/_components/device_tracker.icloud.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "iCloud" -description: "Instructions on how to use iCloud to track devices in Home Assistant." -date: 2015-12-15 1000 -sidebar: true -comments: false -sharing: true -footer: true -logo: icloud.png -ha_category: Presence Detection -ha_release: "0.10" ---- - - -The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. - -It does require that your device is registered with "Find My iPhone". - -To integrate iCloud in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: icloud - username: USERNAME - password: PASSWORD - account_name: accountname -``` - -Configuration variables: - -- **username** (*Required*): The username for the iCloud account. -- **password** (*Required*): The password for your given username. -- **account_name** (*Optional*): The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). -- **max_interval** (*Optional*): Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Default is 30 min. Minimum value is 1 min. -- **gps_accuracy_threshold** (*Optional*): iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. Default is 1000 meters. - -

    -Low `max_interval` may cause battery drainage as it wakes up your device to get the current location. -

    - -

    -You may receive an email from Apple stating that someone has logged into your account. -

    - -To disable the drainage of the battery, a dynamic interval is being used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. - -2 Steps Authentication is enabled for iCloud. The component will ask which device you want to use as Trusted Device and then you can enter the code that has been sent to that device. The duration of this authentication is determined by Apple, but is now at 2 months, so you will only need to verify your account each two months, even after restarting Home Assistant. -2 Factor Authentication is the improved version of 2 Steps Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. - -4 services are available for this component: -- **icloud_update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g. to check if anyone is home when door's been opened. -- **icloud_lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional. -- **icloud_set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level. -- **icloud_reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are being found by the component or if you have added a new iDevice to your account. The `account_name` is optional. diff --git a/source/_components/device_tracker.keenetic_ndms2.markdown b/source/_components/device_tracker.keenetic_ndms2.markdown deleted file mode 100644 index aec5ac8a52..0000000000 --- a/source/_components/device_tracker.keenetic_ndms2.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Keenetic NDMS2 Routers" -description: "Instructions on 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_ap.markdown b/source/_components/device_tracker.linksys_ap.markdown deleted file mode 100644 index 6cdc3984b2..0000000000 --- a/source/_components/device_tracker.linksys_ap.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Linksys Access Points" -description: "Instructions on how to integrate Linksys Access Points into Home Assistant." -date: 2016-12-16 01:40 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Presence Detection -logo: linksys.png -ha_release: 0.37 ---- - -The `linksys_ap` platform offers presence detection by looking at connected devices to a Linksys based access point. -It was tested with a LAPAC1750 AC1750 Dual Band Access Point. - -To use a Linksys Access Point in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: linksys_ap - host: 192.168.1.1 - username: admin - password: password -``` - -Configuration variables: - -- **host** (*Required*): The hostname or IP address of your access point, eg. `192.168.1.1`. -- **username** (*Required*: The username of an user with administrative privileges (read-only is sufficient). -- **password** (*Required*): The password for your given admin account. -- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to true. - -Example for all configuration options: -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: linksys_ap - host: 192.168.1.1 - username: admin - password: password - verify_ssl: true - scan_interval: 6 - consider_home: 12 -``` - -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 deleted file mode 100644 index 4cf0ca7e5a..0000000000 --- a/source/_components/device_tracker.linksys_smart.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Linksys Smart Wifi Router" -description: "Instructions on 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 deleted file mode 100644 index 02d932a7a4..0000000000 --- a/source/_components/device_tracker.locative.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Locative" -description: "Instructions on how to use Locative to track devices in Home Assistant." -date: 2015-10-13 19:00 -sidebar: true -comments: false -sharing: true -footer: true -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: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: locative -``` - -Install on your smartphone: - -- [Android](https://play.google.com/store/apps/details?id=io.locative.app) -- [iOS](https://itunes.apple.com/us/app/geofancy/id725198453) - -To configure Locative, you must set up the app to send a `GET` request to your Home Assistant server at `http:///api/locative`. 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). When you enter or exit a geofence, Locative will send a `GET` request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your known_devices.yaml file for a new device that Locative will have created on it's first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated. - -

    - -

    - -When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to "not home". - -To use Locative in combination with another device tracker, such as [nmap](/components/device_tracker.nmap_tracker/) or [Netgear](/components/device_tracker.netgear/), fill in the `mac` field to the Locative entry in `known_devices.yaml` with the MAC address of the device you want to track. The state of the device will be determined by the source that reported last. diff --git a/source/_components/device_tracker.luci.markdown b/source/_components/device_tracker.luci.markdown deleted file mode 100644 index 621f70a905..0000000000 --- a/source/_components/device_tracker.luci.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "OpenWRT (luci)" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: openwrt.png -ha_category: Presence Detection -ha_release: pre 0.7 ---- - -_This is one of the two ways we support OpenWRT. If you encounter problems, try [ubus](/components/device_tracker.ubus/)._ - -This is a presence detection scanner for OpenWRT using [luci](http://wiki.openwrt.org/doc/techref/luci). - -

    -This component requires a [workaround](https://github.com/home-assistant/home-assistant/issues/1258#issuecomment-252469880) when using luci with HTTPS and a self-signed certificate. -

    - -Before this scanner can be used you have to install the luci RPC package on OpenWRT: - -```bash -# opkg install luci-mod-rpc -``` - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: luci - host: ROUTER_IP_ADDRESS - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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`. -- **password** (*Required*): The password for your given admin account. - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - -

    -Some installations have [a small bug](https://github.com/openwrt/luci/issues/576). The timeout for luci RPC calls is not set and this makes the call fail. -

    - diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown deleted file mode 100644 index b595407d13..0000000000 --- a/source/_components/device_tracker.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: page -title: "Device Tracker" -description: "Instructions on how to setup device tracking within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Home Assistant can get information from your wireless router or third party services like iCloud or OwnTracks to track which devices are connected and considered "in home". Please check the sidebar for a list of brands of supported wireless routers and services. - -There are also trackers available which use different technologies like [MQTT](/components/mqtt/) or [Nmap](/components/device_tracker.nmap_tracker/) to scan the network for devices. - -An [event](/getting-started/automation-trigger/#event-trigger) (`device_tracker_new_device`) will be fired when a device is discovered for the first time. - -## {% linkable_title Configuring a `device_tracker` platform %} - -To get started add the following lines to your `configuration.yaml` (example for Netgear): - -```yaml -# Example configuration.yaml entry for Netgear device -device_tracker: - - platform: netgear - host: 192.168.1.1 - username: admin - password: YOUR_PASSWORD - new_device_defaults: - track_new_devices: True - hide_if_away: False - -``` - -The following optional parameters can be used with any platform. However device tracker will only look for global settings under the configuration of the first configured platform: - -| Parameter | Default | Description | -|----------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `interval_seconds` | 12 | Seconds between each scan for new devices | -| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (e.g., the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) | -| `new_device_defaults`| | Default values for new discovered devices. Available options `track_new_devices` (default: `True`), `hide_if_away` (default: `False`) | - -

    - Note that setting `track_new_devices: False` will still result in new devices being recorded in `known_devices.yaml`, but they won't be tracked (`track: no`). -

    - -The extended example from above would look like the following sample: - -```yaml -# Example configuration.yaml entry for Netgear device -device_tracker: - - platform: netgear - host: 192.168.1.1 - username: admin - interval_seconds: 10 - consider_home: 180 - track_new_devices: yes -``` - -Multiple device trackers can be used in parallel, such as [Owntracks](/components/device_tracker.owntracks/#using-owntracks-with-other-device-trackers) and [Nmap](/components/device_tracker.nmap_tracker/). The state of the device will be determined by the source that reported last. - -## {% linkable_title `known_devices.yaml` %} - -Once `device_tracker` is enabled, a file will be created in your config dir named `known_devices.yaml`. Edit this file to adjust which devices to be tracked. - -Here's an example configuration for a single device: - -```yaml -devicename: - name: Friendly Name - mac: EA:AA:55:E7:C6:94 - picture: https://www.home-assistant.io/images/favicon-192x192.png - track: yes - hide_if_away: no -``` - -

    - In the example above, `devicename` refers to the detected name of the device. For instance, `my_iphone`. -

    - -| 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. | -| `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] | 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.meraki.markdown b/source/_components/device_tracker.meraki.markdown deleted file mode 100644 index cbe481d39e..0000000000 --- a/source/_components/device_tracker.meraki.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Meraki" -description: "Instructions on how to integrate Meraki-based presence detection into Home Assistant." -date: 2017-11-22 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: meraki.png -ha_category: Presence Detection -ha_release: "0.60" ---- - -Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network. - -### {% linkable_title Prerequisites %} - -1. Go to Network-wide/General page, and find the Location and scanning section. -1. Make sure analytics and Scanning API are both enabled. -1. Make note of the Validator string, which will be used in the `device_tracker` configuration. -1. Click **Add a Post URL**: - 1. Set the Post URL to `https://YOUR_HOSTNAME/api/meraki?api_password=YOUR_HASS_PASSWORD` - 1. Set the Secret to a randomly generated string, and make note of it for the `device_tracker` configuration. - 1. Make sure the API Version is set to `2.0`. - 1. Hit **Save** in the bottom right of the page. - -## {% linkable_title Configuration %} - -After you configure access to the Meraki CMX API, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: meraki - secret: your_secret - validator: meraki_validator -``` - -{% configuration %} - secret: - description: Secret code added in Meraki. - required: true - type: string - validator: - description: Validation string from Meraki. - required: true - type: string -{% endconfiguration %} diff --git a/source/_components/device_tracker.mercedesme.markdown b/source/_components/device_tracker.mercedesme.markdown deleted file mode 100644 index ad59c95e0d..0000000000 --- a/source/_components/device_tracker.mercedesme.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Mercedes me" -description: "Instructions on for how to integrate Mercedes me into Home Assistant." -date: 2018-01-27 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mercedesme.png -ha_category: Presence Detection -ha_release: 0.63 ---- - -The `Mercedes me` platform allows you to get data about the location of your [Mercedes me connected car](https://www.mercedes-benz.com/en/mercedes-me/) car within Home Assistant. - -The device tracker platform will be automatically configured if Mercedes me component is configured. - -For more configuration information see the [Mercedes me component](/components/mercedesme/) documentation. diff --git a/source/_components/device_tracker.mikrotik.markdown b/source/_components/device_tracker.mikrotik.markdown deleted file mode 100644 index da1dceee4d..0000000000 --- a/source/_components/device_tracker.mikrotik.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Mikrotik" -description: "Instructions on how to integrate Mikrotik/Routerboard based routers into Home Assistant." -date: 2017-04-28 16:03 -sidebar: true -comments: false -sharing: true -footer: true -logo: mikrotik.png -ha_category: Presence Detection -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 -# Example configuration.yaml entry -device_tracker: - - platform: mikrotik - host: IP_ADDRESS - username: ADMIN_USERNAME - password: ADMIN_PASSWORD -``` - -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. 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 deleted file mode 100644 index 3640b8ad5a..0000000000 --- a/source/_components/device_tracker.mqtt.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "MQTT Device Tracker" -description: "Instructions on how to use MQTT to track devices in Home Assistant." -date: 2015-09-19 20:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Presence Detection -ha_iot_class: depends ---- - - -The `mqtt` device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: mqtt - devices: - paulus_oneplus: 'location/paulus' - annetherese_n4: 'location/annetherese' -``` - -Configuration variables: - -- **devices** (*Required*): List of devices with their topic. -- **qos** (*Optional*): The QoS level of the topic. - - -Example JSON you can publish to the topic (e.g., via mqtt.publish service): - -```json -{ - "topic": "/location/paulus", - "payload": "home" -} -``` diff --git a/source/_components/device_tracker.mqtt_json.markdown b/source/_components/device_tracker.mqtt_json.markdown deleted file mode 100644 index a6cbc50b87..0000000000 --- a/source/_components/device_tracker.mqtt_json.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "JSON MQTT Device Tracker" -description: "Instructions on how to use JSON MQTT to track devices in Home Assistant." -date: 2017-04-12 20:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Presence Detection -ha_version: 0.44 -ha_iot_class: depends ---- - - -The `mqtt_json` device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: mqtt_json - devices: - paulus_oneplus: location/paulus - annetherese_n4: location/annetherese -``` - -Configuration variables: - -- **devices** (*Required*): List of devices with their topic. -- **qos** (*Optional*): The QoS level of the topic. - -This platform receives JSON formatted payloads containing GPS information, for example: - -```json -{"longitude": 1.0,"gps_accuracy": 60,"latitude": 2.0,"battery_level": 99.9} -``` - -Where `longitude` is the longitude, `latitude` is the latitude, `gps_accuracy` is the accuracy in meters, `battery_level` is the current battery level of the device sending the update. -`longitude` and `latitude` are required keys, `gps_accuracy` and `battery_level` are optional. diff --git a/source/_components/device_tracker.mysensors.markdown b/source/_components/device_tracker.mysensors.markdown deleted file mode 100644 index 5366c68ea7..0000000000 --- a/source/_components/device_tracker.mysensors.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: page -title: "MySensors Device Tracker" -description: "Instructions on how to use MySensors to track devices in Home Assistant." -date: 2017-02-06 15:00 +0100 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Presence Detection -featured: false -ha_release: "0.38" -ha_iot_class: "Local Push" ---- - -Integrates MySensors device trackers into Home Assistant. See the [main component] for configuration instructions. - -The following sensor types are supported: - -##### MySensors version 2.0 and higher - -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_GPS | V_POSITION - -For more information, visit the [serial api] of MySensors. - -### {% linkable_title MySensors 2.x example sketch %} - -```cpp -/** - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/gps - */ - -// Enable debug prints to serial monitor -#define MY_DEBUG -// Enable and select radio type attached -#define MY_RADIO_NRF24 -//#define MY_RADIO_RFM69 - -#include - -#define SN "GPS Sensor" -#define SV "1.0" - -// GPS position send interval (in milliseconds) -#define GPS_SEND_INTERVAL 30000 -// The child id used for the gps sensor -#define CHILD_ID_GPS 1 - -MyMessage msg(CHILD_ID_GPS, V_POSITION); - -// Last time GPS position was sent to controller -unsigned long lastGPSSent = -31000; - -// Some buffers -char latBuf[11]; -char lngBuf[11]; -char altBuf[6]; -char payload[30]; - -// Dummy values. Implementation of real GPS device is not done. -float gpsLocationLat = 40.741895; -float gpsLocationLng = -73.989308; -float gpsAltitudeMeters = 12.0; - -void setup() { - -} - -void presentation() { - sendSketchInfo(SN, SV); - present(CHILD_ID_GPS, S_GPS); -} - -void loop() -{ - unsigned long currentTime = millis(); - - // Evaluate if it is time to send a new position - bool timeToSend = currentTime - lastGPSSent > GPS_SEND_INTERVAL; - - if (timeToSend) { - // Send current gps location - // Build position and altitude string to send - dtostrf(gpsLocationLat, 1, 6, latBuf); - dtostrf(gpsLocationLng, 1, 6, lngBuf); - dtostrf(gpsAltitudeMeters, 1, 0, altBuf); - sprintf(payload, "%s,%s,%s", latBuf, lngBuf, altBuf); - - Serial.print(F("Position: ")); - Serial.println(payload); - - send(msg.set(payload)); - lastGPSSent = currentTime; - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: http://www.mysensors.org/download diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown deleted file mode 100644 index 8bdcacc8cd..0000000000 --- a/source/_components/device_tracker.netgear.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Netgear" -description: "Instructions on how to integrate Netgear routers into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: netgear.png -ha_category: Presence Detection -ha_iot_class: "Local Polling" -ha_release: pre 0.7 ---- - -This platform allows you to detect presence by looking at connected devices to a [Netgear](http://www.netgear.com/) device. - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: netgear - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -Configuration variables: - -- **url** (*Optional*): The base URL, e.g., `http://routerlogin.com:5000` for example. If not provided `host` and `port` are used. If none provided autodetection of the URL will be used. -- **host** (*Optional*): The IP address of your router, e.g., `192.168.1.1`. -- **port** (*Optional*): The port your router communicates with. -- **username** (*Optional*): The username of a user with administrative privileges. If not provided `admin` will be used. -- **password** (*Required*): The password for your given admin account. -- **devices** (*Optional*): If provided only specified devices will be reported. Can be MAC address or the device name as reported in the Netgear UI. -- **exclude** (*Optional*): Devices to exclude from the scan. -- **accesspoints** (*Optional*): Also track devices on the specified APs. Only supports MAC address. - -When `accesspoints` is specified an extra device will be reported for each device connected to the APs specified here, as `MY-LAPTOP on RBS40`. `Router` will be reported as AP name for the main AP. Only tested with Orbi. - -The use of `devices` or `exclude` is recommended when using `accesspoints` to avoid having a lot of entries. - -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 deleted file mode 100644 index 74ace37e23..0000000000 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Nmap" -description: "Instructions on how to integrate Nmap into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: nmap.png -ha_category: Presence Detection -featured: false ---- - - -As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (`192.168.1.1/24`) and the range notation (`192.168.1.1-255`). - -You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Hassbian and Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`. - -

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

    - -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: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: nmap_tracker - hosts: 192.168.1.0/24 -``` - -Configuration variables: - -- **hosts** (*Required*): The network address to scan (in any supported NMap format). Mixing subnets and IPs is possible. -- **home_interval** (*Optional*): The number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery. -- **exclude** (*Optional*): Hosts not to include in nmap scanning. Scanning the host where Home Assistant is running can cause problems (websocket error), so excluding that host is a good idea. -- **scan_options** (*Optional*): Configurable scan options for nmap. Default to `-F --host-timeout 5s` - - -A full example for the `nmap` tracker could look like the following sample: - -```yaml -# Example configuration.yaml entry for nmap -# One whole subnet, and skipping two specific IPs. -device_tracker: - - platform: nmap_tracker - hosts: 192.168.1.0/24 - home_interval: 10 - exclude: - - 192.168.1.12 - - 192.168.1.13 -``` - -```yaml -# Example configuration.yaml for nmap -# One subnet, and two specific IPs in another subnet. -device_tracker: - - platform: nmap_tracker - hosts: - - 192.168.1.0/24 - - 10.0.0.2 - - 10.0.0.15 -``` -In the above example, Nmap will be call with the process: -`nmap -oX - 192.168.1.1/24 10.0.0.2 10.0.0.15 -F --host-timeout 5s` - -An example of how the Nmap scanner can be customized: - -Add the capabilities to Nmap. Be sure to specify the full path to wherever you installed Nmap: - -`sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap -` - -And you can set up the device tracker as -```yaml -- platform: nmap_tracker - hosts: 192.168.1.1-25 - scan_options: " --privileged -sP " -``` - - -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.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown deleted file mode 100644 index a852ff2e50..0000000000 --- a/source/_components/device_tracker.owntracks.markdown +++ /dev/null @@ -1,111 +0,0 @@ ---- -layout: page -title: "Owntracks" -description: "Instructions on how to use Owntracks to track devices in Home Assistant." -date: 2015-09-22 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: owntracks.png -ha_category: Presence Detection -featured: false -ha_release: 0.7.4 ---- - -This platform allows you to detect presence using [Owntracks](http://owntracks.org/). OwnTracks allows users to track their location on iOS phones and publish it to an MQTT broker. This platform will connect to the broker and monitor for new locations. - -This component requires [the MQTT component](/components/mqtt/) to be set up and works very well together with [the zone component](/components/zone/). - -To integrate Owntracks in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: owntracks -``` - -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. 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. -- **mqtt_topic** (*Optional*): The topic to subscribe for Owntracks updates on your MQTT instance (defaults to `owntracks/#`). -- **events_only** (*Optional*): Home Assistant will ignore all location updates and rely solely on geofence enter/leave events. -- **region_mapping** (*Optional*): Dictionary to remap names of regions as configured in the Owntracks app to Home Assistant zones. Use this if you have multiple homes or Home Assistant instances and want to map a different label to 'home'. `key: value` maps Owntracks region `key` to Home Assistant zone `value`. - -A full sample configuration for the `owntracks` platform is shown below: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: owntracks - max_gps_accuracy: 200 - waypoints: True - mqtt_topic: "owntracks/#" - events_only: True - waypoint_whitelist: - - jon - - ram - region_mapping: - cabin: home - office: work -``` - -### {% linkable_title Using Owntracks with other device trackers %} - -Owntracks can also be used with other device trackers, such as [Nmap](/components/device_tracker.nmap_tracker/) or [Netgear](/components/device_tracker.netgear/). To do this, fill in the `mac` field to the Owntracks entry in `known_devices.yaml` with the MAC address of the device you want to track. This way the state of the device will be determined by the source that reported last. The naming convention for known device list is `_` and could be set in app configuration. More details about this config can found in [device tracker](/components/device_tracker/). - -An example showing the inclusion of the `mac` field for multiple component tracking. The `mac` field will need to be added to the `owntracks` device and will enable tracking by all components that track via the `mac` address. - -```yaml -USERNAME_DEVICE_ID: - name: Friendly Name - mac: EA:AA:55:E7:C6:94 - picture: https://www.home-assistant.io/images/favicon-192x192.png - gravatar: test@example.com - track: yes - hide_if_away: no -``` - -### {% linkable_title Using Owntracks regions %} - -Owntracks can track regions, and send region entry and exit information to Home Assistant (HA). You set up a region in the Owntracks app which you should name the same as your HA Zone, and then make sure to turn on the `share` option for the region in the owntracks app. Please see the [owntracks documentation](http://owntracks.org/booklet/guide/waypoints/). - -Home Assistant will use the enter and leave messages to set your zone location. Your location will be set to the center of zone when you enter. Location updates from OwnTracks will be ignored while you are inside a zone. - -When you exit a zone, Home Assistant will start using location updates to track you again. To make sure that Home Assistant correctly exits a zone (which it calculates based on your GPS coordinates), you may want to set your Zone radius in HA to be slightly smaller that the Owntracks region radius. - -### {% linkable_title Using Owntracks regions - forcing Owntracks to update using %}iBeacons - -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/). - -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 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. - -When your phone sees a mobile iBeacon that it knows about, it will tell HA the location of that iBeacon. If your phone moves while you are connected to the iBeacon, HA will update the location of the iBeacon. But when your phone loses the connection, HA will stop updating the iBeacon location. - -To use mobile iBeacons with HA, you just set up a region that doesn't match your Zone names. If HA sees an entry event for an iBeacon region that doesn't match a Zone name (say `keys`) - it will start tracking it, calling the device `device_tracker.beacon_keys`). - -This allows you to write zone automations for devices that can't track themselves (for example *alert me if I leave the house and my keys are still at home*). Another example would be *open the gates if my car arrives home*. - -### {% linkable_title Using mobile and fixed iBeacons together %} - -You can use iBeacons of both types together, so if you have a Zone `drive` with an iBeacon region called `-drive` and you arrive home with a mobile iBeacon called `-car`, then `device_tracker.beacon_car` will be set to a state of `drive`. - -### {% linkable_title Importing Owntracks waypoints as zones %} - -By default, any Owntracks user connected to Home Assistant can export their waypoint definitions (from the *Export - Export to Endpoint* menu item) which will then be translated to zone definitions in Home Assistant. The zones will be named `- - `. This functionality can be controlled in 2 ways: - -1. The configuration variable `waypoints` can be set to `False` which will disable importing waypoints for all users. -2. The configuration variable `waypoint_whitelist` can contain a list of users who are allowed to import waypoints. diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown deleted file mode 100644 index 64df68dd04..0000000000 --- a/source/_components/device_tracker.owntracks_http.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "OwnTracks (via HTTP)" -description: "Instructions on how to use Owntracks via HTTP to track devices in Home Assistant." -date: 2017-09-28 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: owntracks.png -ha_category: Presence Detection -featured: true -ha_release: 0.55 ---- - -OwnTracks is a free and open source application that allows you to track your location in Home Assistant. This is a platform that supports OwnTracks via their HTTP publishing method. - -To integrate Owntracks tracking via HTTP in Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: owntracks_http -``` - -For configuration options and usage instructions, read the documentation for the [OwnTracks platform](/components/device_tracker.owntracks/). - -## {% linkable_title Configuring OwnTracks to submit data via HTTP %} - -Open OwnTracks and go to Connection preferences: - - - Mode: Select **Private HTTP** - - Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name] - - Identification: Turn **Authentication** on, username `homeassistant` and password is your API password that you use to login to Home Assistant. - -Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device. - -Since the battery data is available as an attribute of the device tracker entity, it can be tracked with a [`template` sensor](/components/sensor.template/). - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: template - sensors: - pixel_battery: - friendly_name: Pixel of Paulus - unit_of_measurement: "%" - value_template: '{{ states.device_tracker.paulus_pixel.attributes.battery|int }}' - device_class: battery -``` -{% endraw %} diff --git a/source/_components/device_tracker.ping.markdown b/source/_components/device_tracker.ping.markdown deleted file mode 100644 index 1f34368012..0000000000 --- a/source/_components/device_tracker.ping.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Ping (ICMP)" -description: "Instructions on how to integrate Ping (ICMP)-based presence detection into Home Assistant." -date: 2017-01-06 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Presence Detection -ha_release: 0.36 ---- - - -The `ping` platform offers presence detection by using `ping` to send ICMP echo requests. This can be useful when devices are running a firewall and are blocking UDP or TCP packets but responding to ICMP requests (like Android phones). This tracker doesn't need to know the MAC address since the host can be on a different subnet. This makes this an option to detect hosts on a different subnet when `nmap` or other solutions don't work since `arp` doesn't work. - -To use this presence detection in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: ping - hosts: - hostone: 192.168.2.10 -``` - -Configuration variables: - -- **hosts** array (*Required*): List of device names and their corresponding IP address or hostname. -- **count** (*Optional*): Number of packet used for each device (avoid false detection). - -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.sky_hub.markdown b/source/_components/device_tracker.sky_hub.markdown deleted file mode 100644 index 792aece8a8..0000000000 --- a/source/_components/device_tracker.sky_hub.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Sky Hub" -description: "Instructions on how to integrate Sky Hub routers into Home Assistant." -date: 2017-01-28 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sky.png -ha_category: Presence Detection -ha_release: 0.37 ---- - - -The `sky_hub` platform offers presence detection by looking at connected devices to a [Sky Hub router](http://www.sky.com/shop/broadband-talk/sky-hub/) based router. - -To use your Sky Hub device in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: sky_hub -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of your router. Defaults to `192.168.1.254`. - -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.snmp.markdown b/source/_components/device_tracker.snmp.markdown deleted file mode 100644 index 8193abfee8..0000000000 --- a/source/_components/device_tracker.snmp.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "SNMP" -description: "Instructions on how to integrate SNMP into Home Assistant." -date: 2015-10-08 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: network-snmp.png -ha_category: Presence Detection -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 instances and metrics, like network interfaces, disks, and WiFi registrations. - -

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

    - -The following OID examples pull the current MAC Address table from a router. This reflects all recent devices seen on the network. However, since devices are not removed until they time out, this is less effective for [device tracker component page](/components/device_tracker/) than desirable. It is recommended to use [Ping](/components/device_tracker.ping/) or [NMAP](/components/device_tracker.nmap_tracker/) instead. - -| Brand | Device/Firmware | OID | -|---|---|---|---| -| 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` | -| DD-WRT | unknown RouterOS version/model | `1.3.6.1.2.1.4.22.1.2` | - -To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry for SNMP version 1 -device_tracker: - - platform: snmp - host: 192.168.1.1 - community: public - baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1 -``` - -If you want to use encryption, you must enable SNMP version 3 by adding `authkey` and `privkey` variables and enabling SNMP version 3 on your router. Currently only SHA1 is supported for authentication and AES for encryption. Example of SNMPv3 configuration: - -```yaml -# Example configuration.yaml entry for SNMP version 3 -device_tracker: - - platform: snmp - host: 192.168.1.1 - community: username - authkey: authpass - privkey: privpass - baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1 -``` - -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 `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. - -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.swisscom.markdown b/source/_components/device_tracker.swisscom.markdown deleted file mode 100644 index 49c4f72ba9..0000000000 --- a/source/_components/device_tracker.swisscom.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Swisscom Internet-Box" -description: "Instructions on how to integrate Swisscom Internet-Box into Home Assistant." -date: 2016-10-29 23:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: swisscom.png -ha_category: Presence Detection -ha_release: 0.32 ---- - - -The `swisscom` platform offers presence detection by looking at connected devices to an [Internet-Box](https://www.swisscom.ch/en/residential/help/device/internet-router.html) router from [Swisscom](https://www.swisscom.ch) which is an Internet provider in Switzerland. - -

    -There are three models of Internet-Box (light, standard and plus). The platform has only been tested on the Internet-Box plus but the others should work as well because they have the same web interface. -

    - -To use an Internet-Box router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: swisscom -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of your router. Set it if you are not using `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.tado.markdown b/source/_components/device_tracker.tado.markdown deleted file mode 100644 index 70f130c7e0..0000000000 --- a/source/_components/device_tracker.tado.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "Tado" -description: "Instructions on how to integrate Tado into Home Assistant." -date: 2017-01-17 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tado.png -ha_category: Presence Detection -ha_release: 0.37 ---- - -The `tado` device tracker is using the [Tado Smart Thermostat](https://www.tado.com/) and its 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. - -To use the Tado platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry for Tado -device_tracker: - - platform: tado - username: YOUR_USERNAME - password: YOUR_PASSWORD - home_id: YOUR_HOME_ID -``` - -Configuration variables: - -- **username** (*Required*): The username for your Tado account. -- **password** (*Required*): The password for your Tado account. -- **home_id** (*Optional*): The id of your home of which you want to track devices. If provided, the Tado device tracker will tack *all* devices known to Tado associated with this home. See below how to find it. - -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. 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": [] -} -``` - -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 deleted file mode 100644 index 68307d1057..0000000000 --- a/source/_components/device_tracker.tesla.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -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.thomson.markdown b/source/_components/device_tracker.thomson.markdown deleted file mode 100644 index 810d586d27..0000000000 --- a/source/_components/device_tracker.thomson.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Thomson" -description: "Instructions on how to integrate Thomson routers into Home Assistant." -date: 2015-08-30 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: technicolor.png -ha_category: Presence Detection ---- - - -Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor. - -This platform allows you to detect presence by looking at connected devices to a [Thomson](http://www.technicolor.com) device. - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: thomson - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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 *admin*. -- **password** (*Required*): The password for your given admin account. - -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.tile.markdown b/source/_components/device_tracker.tile.markdown deleted file mode 100644 index 8abb07a676..0000000000 --- a/source/_components/device_tracker.tile.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Tile" -description: "Instructions on how to use Tile to track devices in Home Assistant." -date: 2017-11-08 20:40:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tile.png -ha_release: 0.58 -ha_category: Presence Detection -ha_iot_class: "Cloud Polling" ---- - -The `tile` platform allows Home Assistant to utilize [Tile® Bluetooth trackers](https://www.thetileapp.com). -The official Tile mobile app handles the actual tracking of Tile devices using -the mobile device's Bluetooth and GPS. - -To integrate Tile into Home Assistant, add the following section to your -`configuration.yaml` file: - -```yaml -device_tracker: - - platform: tile - username: email@address.com - password: MY_PASSWORD_123 -``` - -{% configuration %} - username: - description: the email address for the Tile account - required: true - type: string - password: - description: the password for the Tile account - required: true - type: string - monitored_variables: - description: the Tile types to monitor; valid values are `TILE` and `PHONE` (default is for all types to be included) - required: false - type: list - show_inactive: - description: whether to show expired/disabled Tiles - required: false - type: boolean -{% endconfiguration %} diff --git a/source/_components/device_tracker.tomato.markdown b/source/_components/device_tracker.tomato.markdown deleted file mode 100644 index 279cd63b68..0000000000 --- a/source/_components/device_tracker.tomato.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: "Tomato" -description: "Instructions on how to integrate Tomato routers into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: tomato.png -ha_category: Presence Detection -ha_release: pre 0.7 ---- - - -The `tomato` platform requires an extra config variable called `http_id`. The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code. - -Because of a limitation in Tomato's API, this platform will only track wireless devices. If tracking wired devices like a Philips Hue Hub is necessary, it is possible to use another platform like [NMAP](/components/device_tracker.nmap_tracker/). - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: tomato - host: YOUR_ROUTER_IP_ADDRESS - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD - http_id: YOUR_HTTP_ID -``` - -{% configuration %} -host: - description: "The IP address or hostname of your router, e.g., `192.168.1.1` or `rt-ac68u`." - required: false - type: string -port: - description: "The port number of your router, e.g., `443`." - required: false - type: int - default: 80/443 (automatically detected) -ssl: - description: "Whether to connect via `https`." - required: false - type: bool - default: false -verify_ssl: - description: "If SSL verification for https resources needs to be turned off (for self-signed certs, etc.) this can take on boolean values `False` or `True` or you can pass a location on the device where a certificate can be used for verification e.g., `/mnt/NAS/router_cert.pem`." - required: false - type: [string, bool] - default: true -username: - description: "The username of an user with administrative privileges, usually *admin*." - required: true - type: string -password: - description: "The password for your given admin account." - required: true - type: string -http_id: - description: "The value can be obtained by logging in to the Tomato admin interface and search for `http_id` in the page source code." - required: true - type: string -{% endconfiguration %} - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - -A description of the API s available in this [Tomato API](http://paulusschoutsen.nl/blog/2013/10/tomato-api-documentation/) blog post. - -SSL Certificate: - -Gathering the SSL Certificate of your router can be accomplished with this (or a similar) command: -```bash -openssl s_client -showcerts -connect 172.10.10.1:443 /dev/null | openssl x509 -outform PEM > router_cert.pem -``` \ No newline at end of file diff --git a/source/_components/device_tracker.tplink.markdown b/source/_components/device_tracker.tplink.markdown deleted file mode 100644 index 29b70a143a..0000000000 --- a/source/_components/device_tracker.tplink.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "TP-Link" -description: "Instructions on how to integrate TP-Link routers into Home Assistant." -date: 2015-06-22 10:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: tp-link.png -ha_category: Presence Detection -ha_release: pre 0.7 ---- - - -The `tplink` platform allows you to detect presence by looking at connected devices to a [TP-Link](https://www.tp-link.com) device. This includes the ArcherC9 line. - -

    -TP-Link devices typically only allow one login at a time to the admin console. This component will count towards your one allowed login. Depending on how aggressively you configure device_tracker you may not be able to access the admin console of your TP-Link device without first stopping Home Assistant. Home Assistant takes a few seconds to login, collect data, and log out. If you log into the admin console manually, remember to log out so that Home Assistant can log in again. -

    - - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: tplink - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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*. -- **password** (*Required*): The password for your given admin account. - -For Archer C9 models running firmware version 150811 or later please use the encrypted password you can retrieve like this: - -1. Go to the login page of your router. (default: 192.168.0.1) -2. Type in the password you use to login into the password field. -3. Click somewhere else on the page so that the password field is not selected anymore. -4. Open the JavaScript console of your browser (usually by pressing F12 and then clicking on "Console"). -5. Type `document.getElementById("login-password").value;` or `document.getElementById("pcPassword").value;`, depending on your firmware version. -6. Copy the returned value to your Home Assistant configuration as password. - -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.trackr.markdown b/source/_components/device_tracker.trackr.markdown deleted file mode 100644 index 962300ed1e..0000000000 --- a/source/_components/device_tracker.trackr.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "TrackR" -description: "Instructions on how to use TrackR to track devices in Home Assistant." -date: 2016-12-22 1000 -sidebar: true -comments: false -sharing: true -footer: true -logo: trackr.png -ha_release: 0.36 -ha_category: Presence Detection -ha_iot_class: "Cloud Polling" ---- - - -The `trackr` platform allows you to detect presence using [TrackR](https://www.thetrackr.com/) devices. - -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: - -```yaml -# Example configuration.yaml entry -device_tracker: - platform: trackr - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The email address for the TrackR account. - required: true - type: string -password: - description: The password for your given username. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown deleted file mode 100644 index 3df045db24..0000000000 --- a/source/_components/device_tracker.ubus.markdown +++ /dev/null @@ -1,172 +0,0 @@ ---- -layout: page -title: "OpenWRT (ubus)" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: openwrt.png -ha_category: Presence Detection -ha_release: 0.7.6 ---- - -_This is one of the two ways we support OpenWRT. If you encounter problems, try [luci](/components/device_tracker.luci/)._ - -This is a presence detection scanner for [OpenWRT](https://openwrt.org/) using [ubus](http://wiki.openwrt.org/doc/techref/ubus). It scans for changes in `hostapd.*`, which will detect and report changes in devices connected to the access point on the router. - -Before this scanner can be used you have to install the ubus RPC package on OpenWRT: - -```bash -opkg install rpcd-mod-file -``` - -And create a read-only user to be used by setting up the ACL file `/usr/share/rpcd/acl.d/user.json`. - -```json -{ - "user": { - "description": "Read only user access role", - "read": { - "ubus": { - "*": [ "*" ] - }, - "uci": [ "*" ] - }, - "write": {} - } -} -``` - -Restart the services. - -```bash -# /etc/init.d/rpcd restart && /etc/init.d/uhttpd restart -``` - -Check if the `file` namespaces is registered with the RPC server. - -```bash -# ubus list | grep file -file -``` - -After this is done, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: ubus - host: ROUTER_IP_ADDRESS - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -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`, `dhcpd`, or `none`. Defaults to `dnsmasq`. - - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - -## Troubleshooting - -If you find that this never creates `known_devices.yaml`, or if you need more information on the communication chain between Home Assistant and OpenWRT, follow these steps to grab the packet stream and gain insight into what's happening. - -### Increase Log Level - -1. On your Home Assistant device, stop Home Assistant -2. Adjust `configuration.yaml` to log more detail for the `device_tracker` component -```yaml -logger: - default: warn - logs: - homeassistant.components.device_tracker: debug -``` -3. In another window, tail the logfile in the configuration directory: -``` -$ tail -f home-assistant.log | grep device_tracker -``` -4. If you see a python stack trace like the following, check your configuration for correct username/password. -``` -17-04-28 10:43:30 INFO (MainThread) [homeassistant.loader] Loaded device_tracker from homeassistant.components.device_tracker -17-04-28 10:43:30 INFO (MainThread) [homeassistant.loader] Loaded device_tracker.ubus from homeassistant.components.device_tracker.ubus -17-04-28 10:43:30 INFO (MainThread) [homeassistant.setup] Setting up device_tracker -17-04-28 10:43:31 INFO (MainThread) [homeassistant.components.device_tracker] Setting up device_tracker.ubus -17-04-28 10:43:31 ERROR (MainThread) [homeassistant.components.device_tracker] Error setting up platform ubus - File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/__init__.py", line 152, in async_setup_platform - File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 36, in get_scanner - File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 58, in __init__ - File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 156, in _get_session_id - File "/opt/homeassistant/venv/lib/python3.4/site-packages/homeassistant/components/device_tracker/ubus.py", line 147, in _req_json_rpc -17-04-28 10:43:31 INFO (MainThread) [homeassistant.core] Bus:Handling -17-04-28 10:43:31 INFO (MainThread) [homeassistant.core] Bus:Handling -``` -5. If you see lines like the following repeated at intervals that correspond to the check interval from the config (12 seconds by default), then Home Assistant is correctly polling the router, and you'll need to look at what the router is sending back. -``` -17-04-28 10:50:34 INFO (Thread-7) [homeassistant.components.device_tracker.ubus] Checking ARP -``` - -### Inspect Packets With TCPDump -_These steps require that `tcpdump` is installed on your Home Assistant device, and that you have a utility such as [Wireshark](https://www.wireshark.org) for viewing the packets. It also assumes that Home Assistant is communicating with your router over HTTP and not HTTPS._ - -1. On your Home Assistant device, stop Home Assistant -2. In another shell on your Home Assistant device, start tcpdump -```bash -$ sudo tcpdump -nnvXSs 0 -w /var/tmp/dt.out 'host and port 80' -``` - * In this example we are only looking for traffic to or from port 80, and we are writing the packet stream out to `/var/tmp/dt.out` -3. Start Home Assistant -4. After a few seconds you should see a line like `Got xx` where `xx` is an incrementing number. This indicates that it has captured packets that match our filter. After you see this number increment a few times (>20), you can hit `Ctrl-C` to cancel the capture. -6. Transfer `/var/tmp/dt.out` to the machine where you're running Wireshark and either drag/drop it onto the Wireshark window or use File/Open to open the capture file. -7. In the window that opens, look for the first line that reads `POST /ubus`. Right click on this line, choose Follow and then HTTP Stream to view just the HTTP stream for this connection. -8. The first `POST` will show Home Assistant logging into ubus and receiving a session identifier back. It will look something like this: -``` -POST /ubus HTTP/1.1 -Host: 10.68.0.1 -Accept: */* -User-Agent: python-requests/2.13.0 -Connection: keep-alive -Accept-Encoding: gzip, deflate -Content-Length: 161 - -{"jsonrpc": "2.0", "params": ["00000000000000000000000000000000", "session", "login", {"password": "", "username": "root"}], "method": "call", "id": 1} - -HTTP/1.1 200 OK -Date: Fri, 28 Apr 2017 12:04:46 GMT -Content-Type: application/json -Transfer-Encoding: chunked -Connection: keep-alive - -{"jsonrpc":"2.0","id":1,"result":[0,{"ubus_rpc_session":"8b4e1632389fcfd09e96a792e01c332c","timeout":300,"expires":300,"acls":{"access-group":{"unauthenticated":["read"],"user":["read"]},"ubus":{"*":["*"],"session":["access","login"]},"uci":{"*":["read"]}},"data":{"username":"root"}}]} -``` -9. In the response above, the portion that reads `"result":[0,` indicates that ubus accepted the login without issue. If this is not `0`, search online for what ubus status corresponds to the number you're receiving and address any issues that it brings to light. -10. Otherwise, back in the main Wireshark window click the `x` in the right side of the filter bar where it reads `tcp.stream eq 0`. Scroll down until you find the next `POST /ubus` line and view the HTTP stream again. This request is Home Assistant actually requesting information and will look something like the following: -``` -POST /ubus HTTP/1.1 -Host: 10.68.0.1 -Accept: */* -User-Agent: python-requests/2.13.0 -Connection: keep-alive -Accept-Encoding: gzip, deflate -Content-Length: 114 - -{"jsonrpc": "2.0", "params": ["8b4e1632389fcfd09e96a792e01c332c", "hostapd.*", "", {}], "method": "list", "id": 1} - -HTTP/1.1 200 OK -Date: Fri, 28 Apr 2017 12:04:46 GMT -Content-Type: application/json -Transfer-Encoding: chunked -Connection: keep-alive - -{"jsonrpc":"2.0","id":1,"result":{}} -``` -11. In this case we are actually receiving a valid response with no data. The request says that we are looking for ARP information from `hostapd.*`, which is the access point on the router. In my environment I don't use the AP on the router, and so it was correctly returning no data. Armed with this information, I know that I cannot use this component for device tracking or presence. - -### Cleanup - -When you're done troubleshooting, remember to reset your logging configuration and delete any capture files that contain sensitive information. diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown deleted file mode 100644 index e941066770..0000000000 --- a/source/_components/device_tracker.unifi.markdown +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: page -title: "Ubiquiti Unifi WAP" -description: "Instructions on how to use a Unifi WAP controller as a device tracker module." -date: 2016-02-19 20:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: ubiquiti.png -ha_category: Presence Detection -ha_release: 0.14 ---- - -This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](http://ubnt.com/) [Unifi](https://www.ubnt.com/enterprise/#unifi) controller. - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: unifi - host: unifi - username: username - password: password - ssid_filter: - - 'HomeSSID' - - 'IoTSSID' -``` - -{% configuration %} -username: - description: A user on the controller - type: string - required: true -password: - description: The password for the account - type: string - required: true -host: - description: The hostname or IP address of your controller - default: localhost - type: string - required: false -port: - description: The port of your controller's web interface - default: 8443 - type: int - required: false -site_id: - description: For multisite installations, you can specify `site_id` to specify which is used - type: string - required: false - default: default -verify_ssl: - description: Whether to do strict validation on SSL certificates of the Unifi controller. This can be true/false or the path to a locally trusted certificate to use for verification (i.e. "/path/to/custom_cert.pm") - type: boolean or filename - required: false - default: true -detection_time: - description: How long since the last seen time before the device is marked away, specified in seconds. - type: int - required: false - default: 300 -ssid_filter: - description: Filter the SSIDs that tracking will occur on. - type: list of strings - required: false - default: None - -{% endconfiguration %} - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - -### {% linkable_title Configuring Users %} - -The Unifi controller allows you to create multiple users on it besides the main administrator. It is recommended that you create a limited user that has `read-only` permissions for the Unifi device tracker. - -### {% linkable_title Conflicts with MQTT %} - -The Unifi controller can either be a dedicated hardware device (Unifi's cloud key), or as software any Linux system. If you run the the Unifi controller on the same operating system as Home Assistant there may be conflicts in ports if you have the MQTT component as well. - -It is recommended that you run the Unifi controller in a dedicated virtual machine to avoid that situation. - -### {% linkable_title Troubleshooting and Time Synchronization %} - -Presence detection depends on accurate time configuration between Home Assistant and the Unifi controller. - -If Home Assistant and the Unifi controller are running on separate machines or VMs ensure that all clocks are syncronized. Failing to have syncronized clocks will lead to Home Assistant failing to mark a device as home. - -[Related Issue](https://github.com/home-assistant/home-assistant/issues/10507) diff --git a/source/_components/device_tracker.unifi_direct.markdown b/source/_components/device_tracker.unifi_direct.markdown deleted file mode 100644 index 4816832b8e..0000000000 --- a/source/_components/device_tracker.unifi_direct.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Ubiquiti Unifi direct AP" -description: "Instructions on how to use a Unifi WAP as a device tracker." -date: 2017-11-17 14:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: ubiquiti.png -ha_category: Presence Detection -ha_release: 0.59 ---- - - -This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti Unifi WAP](/components/device_tracker.unifi/) because it doesn't require the Unifi controller software. - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: unifi_direct - host: YOUR_AP_IP_ADDRESS - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -host: - description: The hostname or IP address of your Unifi AP. - required: true - type: string -username: - description: The SSH device username used to connect to your Unifi AP. - required: true - type: string -password: - description: The SSH device password used to connect to your Unifi AP. - required: true - type: string -{% endconfiguration %} - -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_components/device_tracker.upc_connect.markdown b/source/_components/device_tracker.upc_connect.markdown deleted file mode 100644 index 1f77bc8d86..0000000000 --- a/source/_components/device_tracker.upc_connect.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "UPC ConnectBox" -description: "Instructions on how to integrate UPC ConnectBox into Home Assistant." -date: 2016-12-30 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: upc.png -ha_category: Presence Detection -ha_release: 0.36 ---- - - -The `upc_connect` platform offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/de/internet/connectbox/) from [Liberty Global](http://www.libertyglobal.com/) (also known as UPC Cablecom in Switzerland) which is a Internet provider in Switzerland and Austria. - -To use a Connect Box in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: upc_connect -``` - -Configuration variables: - -- **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. - -Also known to be working with the following devices: - - Irish Virgin Media Super Hub 3.0 - - Ziggo Connectbox NL - - Unitymedia Connect Box (DE) - diff --git a/source/_components/device_tracker.volvooncall.markdown b/source/_components/device_tracker.volvooncall.markdown deleted file mode 100644 index f4de42f501..0000000000 --- a/source/_components/device_tracker.volvooncall.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Volvo On Call" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." -date: 2016-10-02 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: volvo.png -ha_category: Presence Detection -ha_release: "0.30" ---- - - -Integrates Volvo on Call into Home Assistant. See the [main component](/components/volvooncall/) for configuration instructions. diff --git a/source/_components/device_tracker.xiaomi.markdown b/source/_components/device_tracker.xiaomi.markdown deleted file mode 100644 index d38571007c..0000000000 --- a/source/_components/device_tracker.xiaomi.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Xiaomi Router" -description: "Instructions on how to integrate Xiaomi routers into Home Assistant." -date: 2017-01-12 12:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: Presence Detection -ha_release: 0.36 ---- - - -The `xiaomi` platform offers presence detection by looking at connected devices to a [Xiaomi](http://miwifi.com) router. - -To use an Xiaomi router in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: xiaomi - host: YOUR_ROUTER_IP - password: YOUR_ADMIN_PASSWORD -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your router, eg. `192.168.0.1`. -- **username** (*Optional*: The admin username. By default `admin`. -- **password** (*Required*): The password for the admin account. - -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.xiaomi_miio.markdown b/source/_components/device_tracker.xiaomi_miio.markdown deleted file mode 100644 index ae60404393..0000000000 --- a/source/_components/device_tracker.xiaomi_miio.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Xiaomi Mi WiFi Repeater 2" -description: "Instructions how to integrate your Xiaomi Mi WiFi Repeater 2 within Home Assistant." -date: 2018-04-01 21:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: Presence Detection -ha_version: 0.67 -ha_iot_class: "Local Polling" ---- - -The `xiaomi_miio` device tracker platform is observing your Xiaomi Mi WiFi Repeater 2 and reporting all associated WiFi clients. - -Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token. - -To add a Xiaomi Mi Air Quality Monitor to your installation, add the following to your `configuration.yaml` file: - -```yaml -device_tracker: - - platform: xiaomi_miio - host: 192.168.130.73 - token: YOUR_TOKEN -``` - -{% configuration %} -host: - description: The IP address of your miio device. - required: true - type: string -token: - description: The API token of your miio device. - required: true - type: string -{% endconfiguration %} diff --git a/source/_components/dialogflow.markdown b/source/_components/dialogflow.markdown deleted file mode 100644 index bf2cc4b4e6..0000000000 --- a/source/_components/dialogflow.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: page -title: "Dialogflow" -description: "Instructions on 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/digital_ocean.markdown b/source/_components/digital_ocean.markdown deleted file mode 100644 index 4554819ee2..0000000000 --- a/source/_components/digital_ocean.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Digital Ocean" -description: "Instructions on how to integrate the Digital Ocean within Home Assistant." -date: 2016-09-24 20:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_release: "0.30" -logo: digital_ocean.png -ha_iot_class: "Local Polling" ---- - - -The `digital_ocean` component allows you to access the information about your [Digital Ocean](https://www.digitalocean.com/) droplets from Home Assistant. - -Obtain your API key from your [Digital Ocean dashboard](https://cloud.digitalocean.com/settings/api/tokens). - -To integrate your Digital Ocean droplets with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -digital_ocean: - access_token: YOUR_API_KEY -``` - -{% configuration %} -access_token: - description: Your Digital Ocean API access token. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/discoverable.markdown b/source/_components/discoverable.markdown deleted file mode 100644 index 12c170a1ee..0000000000 --- a/source/_components/discoverable.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Discoverable" -description: "Instructions on how to setup the discoverable component with Home Assistant." -date: 2016-03-01 07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The Home Assistant discovery protocol is a lightweight feature that introduces support for Home Assistant servers to be discoverable. This will allow [Home Assistant instances](https://github.com/balloob/micropython-home-assistant) running with [MicroPython](https://micropython.org/) to get started without any required configuration (Example from the [MicroPython Home Assistant](https://github.com/balloob/micropython-home-assistant) documentation): - -```python -from homeassistant.discovery import get_instance() - -hass = get_instance() - -for state in hass.states(): - print(state) -``` - -To enable `discovery` in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -discoverable: - expose_password: yes -``` - - -Configuration variables: - -- **expose_password** (*Optional*): It is up to the user to expose the password in the discovery response (Default: off). If password not exposed, uHA instances will have to provide it (`get_instance('my password')`). - diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown deleted file mode 100644 index f369ce67c1..0000000000 --- a/source/_components/discovery.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: page -title: "Discovery" -description: "Instructions on how to setup Home Assistant to discover new devices." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other ---- - - -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: - - * [Apple TV](/components/apple_tv/) - * [Axis Communications security devices](/components/axis/) - * [Belkin WeMo switches](/components/wemo/) - * [Bluesound speakers](/components/media_player.bluesound/) - * [Bose Soundtouch speakers](/components/media_player.soundtouch/) - * [Denon network receivers](/components/media_player.denonavr/) - * [DirecTV receivers](/components/media_player.directv/) - * [Frontier Silicon internet radios](/components/media_player.frontier_silicon/) - * [Google Cast](/components/media_player.cast/) - * [HomeKit](/components/homekit_controller/) - * [IKEA Trådfri (Tradfri)](/components/tradfri/) - * [Linn / Openhome](/components/media_player.openhome/) - * [Logitech Harmony Hub](/components/remote.harmony/) - * [Logitech media server (Squeezebox)](/components/media_player.squeezebox/) - * [Netgear routers](/components/device_tracker.netgear/) - * [Panasonic Viera](/components/media_player.panasonic_viera/) - * [Philips Hue](/components/light.hue/) - * [Plex media server](/components/media_player.plex/) - * [Roku media player](/components/media_player.roku/) - * [SABnzbd downloader](/components/sensor.sabnzbd/) - * [Samsung TVs](/components/media_player.samsungtv/) - * [Sonos speakers](/components/media_player.sonos/) - * [Telldus Live](/components/tellduslive/) - * [Wink](/components/wink/) - * [Yamaha media player](/components/media_player.yamaha/) - * [Yeelight Sunflower bulb](/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. - -To load this component, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -discovery: - ignore: - - sonos - - samsung_tv - enable: - - homekit -``` - -Configuration variables: - -- **ignore** (*Optional*): A list of platforms that never will be automatically configured by `discovery`. - -Valid values for ignore are: - - * `apple_tv`: Apple TV - * `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 - * `sabnzbd`: SABnzbd downloader - * `samsung_tv`: Samsung TVs - * `sonos`: Sonos speakers - * `songpal` : Songpal - * `tellduslive`: Telldus Live - * `wink`: Wink Hub - * `yamaha`: Yamaha media player - * `yeelight`: Yeelight Sunflower bulb - -- **enable** (*Optional*): A list of platforms not enabled by default that `discovery` should discover. - -Valid values for enable are: - - * `homekit`: HomeKit accessories - -

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

    - -

    -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](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, the discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system. - -For DSM/Synology, install via debian-chroot [see this forum post](https://community.home-assistant.io/t/error-starting-home-assistant-on-synology-for-first-time/917/15). -

    - -If you are developing a new platform, please read [how to make your platform discoverable](/developers/component_discovery/) for further details. diff --git a/source/_components/dominos.markdown b/source/_components/dominos.markdown deleted file mode 100644 index d6849d738f..0000000000 --- a/source/_components/dominos.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: page -title: "Dominos Pizza" -description: "Instructions on how to setup Dominos Pizza ordering within Home Assistant." -date: 2017-11-05 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: dominos.png -ha_category: Other -ha_version: 0.59 -ha_iot_class: "Cloud Polling" ---- - -The `dominos` component allows you to order Dominos Pizza from within your Home Assistant scripts and automations. - -At present, this component only supports ordering within Canada and the US. - -## {% linkable_title Configuration %} - -To enable the component, you need to set up your customer information and define some orders. - -Orders are a group of product codes. You can get these product codes by inspecting an order request from the Dominos web app, or you can [add this custom panel by following this readme](https://github.com/wardcraigj/hass-dominos-panel) to see the available product codes in a separate panel in your install. - -Currently, there is no support in this component for toppings, coupons or order tracking. - -```yaml -dominos: - country_code: ca - first_name: John - last_name: Smith - email: john.smith@example.com - phone: 123456789 - address: 24 Housten Dr, Ottawa, ON, K2M2M2 - orders: - - name: Medium Pan - codes: - - P12IPAZA -``` - -Now you can use the Dominos service to order pizza within your automations: - -```yaml -- service: dominos.order - data: - order_entity_id: dominos.medium_pan -``` - -{% configuration %} - country_code: - required: true - description: \'ca\' or \'us\', depending on your location - type: string - first_name: - required: true - description: Your first name - type: string - last_name: - required: true - description: Your last name - type: string - email: - required: true - description: Your email address - type: string - phone: - required: true - description: Your phone number - type: string - address: - required: true - description: Your delivery address - type: string - show_menu: - required: false - description: Dumps product codes from your nearest store into your log (for use in with the custom panel) - type: integer - orders: - required: false - description: Sets of product codes to use for ordering - type: list -{% endconfiguration %} diff --git a/source/_components/doorbird.markdown b/source/_components/doorbird.markdown deleted file mode 100644 index 9db3c71d86..0000000000 --- a/source/_components/doorbird.markdown +++ /dev/null @@ -1,108 +0,0 @@ ---- -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: DOORBIRD_IP_OR_HOSTNAME - username: YOUR_USERNAME - password: YOUR_PASSWORD - hass_url_override: HASS_IP -``` - -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. -- **doorbell_events** (*Optional*): Setting this to `true` this will register a callback URL with the device so that events can be published to the event bus when the doorbell rings. -- **hass_url_override** (*Optional*): If your DoorBird cannot connect to the machine running Home Assistant because you are using dynamic DNS or some other HTTP configuration (such as HTTPS), specify the LAN IP of the machine here to force a LAN connection. - -

    -Enabling `doorbell_events` will delete all other registered push notification services with the device every time Home Assistant starts. This will not affect notifications delivered by the DoorBird mobile app. -

    - -### Doorbell Sound Examples - -You can create an automation that triggers on event `doorbird_doorbell` to play a doorbell sound when the Doorbird button is pressed. This should work with any media player. - -#### Example using SONOS - -[`SONOS`](http://www.sonos.com) players have features allowing for "snapshotting" the current state of some or all players so those state(s) can be "restored" at a later time. This feature is perfect for implementing a doorbell sound (from Doorbird or any other Doorbell setup for that matter). The [`media_player.sonos`](/components/media_player.sonos/) platform includes the [`SONOS_SNAPSHOT`](/components/media_player.sonos/#service-sonos_snapshot) and [`SONOS_RESTORE`](/components/media_player.sonos/#service-sonos_restore) features. The result of not using these features is any currently playing songs or media will not continue playing after the doorbell sound has played and you will be left with the doorbell sound queued as the last played song. This setup allows for seamless ringing of the doorbell and all SONOS devices continuing nicely on as if nothing had happened. - -The example script below takes a snapshot of three SONOS players that are not currently grouped together, joins the three players in a group (so the sound plays at the same time on all players), plays the doorbell MP3 sound, unjoins the players from the group and finally restores the players to their original state. When the players are grouped they are controlled by refering to the `master`. - -Automation file: - -```yaml -- alias: Doorbird ring - trigger: - platform: event - event_type: doorbird_doorbell - action: - service: script.turn_on - entity_id: script.doorbell -``` - -Script file: - -```yaml -doorbell: - alias: Ring Doorbell - sequence: - - service: media_player.sonos_snapshot - data: - entity_id: - - media_player.kitchen - - media_player.master_bedroom - - media_player.study - - service: media_player.sonos_join - data: - master: media_player.study - entity_id: - - media_player.kitchen - - media_player.master_bedroom - - media_player.study - - service: media_player.play_media - data: - entity_id: media_player.study # the group master - media_content_id: http://10.1.1.10/sounds/doorbell.mp3 # this is on a NAS but could be HASS local - media_content_type: music - - service: media_player.volume_set - data: - entity_id: # can still control the volume of grouped players indivdually - - media_player.study - - media_player.kitchen - - media_player.master_bedrom - volume_level: 0.50 - - delay: - seconds: 4 # wait while the sound plays - - service: media_player.sonos_unjoin - data: - entity_id: - - media_player.kitchen - - media_player.master_bedroom - - media_player.study - - service: media_player.sonos_restore - data: - entity_id: - - media_player.kitchen - - media_player.master_bedroom - - media_player.study -``` diff --git a/source/_components/downloader.markdown b/source/_components/downloader.markdown deleted file mode 100644 index beec226876..0000000000 --- a/source/_components/downloader.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "Downloader" -description: "Instructions on how to setup the downloader component with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Downloading -ha_release: pre 0.7 ---- - -The `downloader` component provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist. The directory needs to be writable for the user that is running Home Assistant. - -To enable it, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -downloader: - download_dir: downloads -``` - -Configuration variables: - -- **download_dir** (*Required*): If the path is not absolute, it's assumed to be relative to the Home Assistant configuration directory (eg. `.homeassistant/downloads`). - -### {% linkable_title Use the 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"} -``` - -This will download the file from the given URL. - -| 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`. | - -### {% linkable_title Download Status Events %} - -When a download finished successfully, Home Assistant will emit a 'downloader_download_completed' event to the event bus which you can use to write automations against. -In case download failed another event 'downloader_download_failed' is emitted to indicate that the download did not complete successfully. - -Along with the event the following payload parameters are available: - -| Parameter | Description | -|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `url` | The `url` that was requested.| -| `filename` | The `name` of the file that was being downloaded.| - -#### Example Automation: - -```yaml -- alias: Download Failed Notification - trigger: - platform: event - event_type: downloader_download_failed - action: - service: persistent_notification.create - data_template: - message: "{{trigger.event.data.filename}} download failed" - title: "Download Failed" - ``` diff --git a/source/_components/duckdns.markdown b/source/_components/duckdns.markdown deleted file mode 100644 index bd18114a18..0000000000 --- a/source/_components/duckdns.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -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 deleted file mode 100644 index fdfab021d8..0000000000 --- a/source/_components/dweet.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Dweet.io" -description: "Transfer events to Dweet.io." -date: 2016-05-07 07:08 -sidebar: true -comments: false -sharing: true -footer: true -logo: dweet.png -ha_category: "History" -featured: false -ha_release: 0.19 ---- - -The `dweet` component makes it possible to transfer details collected with Home Assistant to [Dweet.io](http://dweet.io/) and visualize them with [freeboard.io](https://freeboard.io). Keep in mind that your information will be public! - -

    - -

    - - -

    - The publishing interval is limited to 1 second. This means that it's possible to miss fast changes. -

    - -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_number.brightness - - input_boolean.notify_home - - sensor.weather_temperature - - sensor.cpu -``` - -Configuration variables: - -- **name** (*Required*): Choose must choose an unique name. -- **whitelist** (*Required*): List of entity IDs you want to publish. - diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown deleted file mode 100644 index 7c0e1ca2f3..0000000000 --- a/source/_components/dyson.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "Dyson" -description: "Instructions on how to integrate Dyson into Home Assistant." -date: 2017-05-27 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dyson.png -ha_category: Hub -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: [Fans](/components/fan/dyson/) and [Robot vacuum](/components/vacuum/dyson/). - -## {% linkable_title Configuration %} - -To enable this component, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -dyson: - username: YOUR_DYSON_USERNAME - password: YOUR_DYSON_PASSWORD - language: YOUR_DYSON_ACCOUNT_LANGUGAGE - devices: - - device_id: DEVICE_ID_1 # eg. Serial number: XXX-XX-XXXXXXXX - device_ip: DEVICE_ID_1 - - device_id: DEVICE_ID_2 - device_ip: DEVICE_ID_2 -``` - -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`, `GB`, `AU`. But others codes should work. -- **devices** (*Optional*): List of devices. - - **device_id** (*Required*): Device ID. The Serial Number of the device. Found in the mobiles applications device 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 -$ nmap -p 1883 XXX.XXX.XXX.XXX/YY -- open -``` - -Where: - -- **XXX.XXX.XXX.XXX** is your network address -- **YY** is your network mask - -For example: - -```bash -$ nmap -p 1883 192.168.0.0/24 -- open -``` diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown deleted file mode 100644 index 1d18fb430d..0000000000 --- a/source/_components/ecobee.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: page -title: "ecobee" -description: "Instructions for how to integrate Ecobee thermostats and sensors within Home Assistant." -date: 2015-11-30 17:54 -sidebar: true -comments: false -sharing: true -footer: true -logo: ecobee.png -ha_category: Hub -featured: true -ha_release: 0.9 -ha_iot_class: "Cloud Push" ---- - - -The `ecobee` component lets you control a thermostats and view sensor data from [ecobee](https://ecobee.com) thermostats. - -You will need to obtain an API key from ecobee's [developer site](https://www.ecobee.com/developers/) to use this component. To get the key, first you need to register your thermostat which should be done as part of the ecobee installation. Once you have done that perform the following steps. - -1. Click on the **Become a developer** link on the [developer site](https://www.ecobee.com/developers/). -2. Login with your ecobee credentials. -3. Accept the SDK agreement. -4. Fill in the fields. -5. Click **save**. - -Now login to the regular consumer portal, and in the hamburger menu there will be a new option **Developer**. Now we can create the Application to hook up to Home Assistant. - -1. Select the Developer option. -2. Select **Create New**. -3. Give your app a name (it appears to need to be unique across all users, as I tried 'home-assistant' and it said it was already in use. Try -home-assistant) and a summary (neither of these are important as they are not used anywhere). -4. For Authorization method select **ecobee PIN**. -5. You don't need an Application Icon or Detailed Description. -6. Click **Create**. - -Now under the Name and Summary Section you will have an API key. Copy this key and use it in you configuration section below. Click the **X** to close the Developer section. - -The first time you run Home Assistant with this component it will give you a PIN code that you need to authorize in the [ecobee consumer portal](https://www.ecobee.com/consumerportal/index.html). You can do this by clicking **Add Application** in the **My Apps** section in the sidebar. - -The PIN can be found from the Home Assistant portal on the Ecobee card or from the **configurator.ecobee** entity in states in the portal. - -- 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 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: - -```yaml -# Example configuration.yaml entry -ecobee: - api_key: asdfghjklqwertyuiopzxcvbnm -``` - -Configuration variables: - -- **api_key** (*Required*): Your ecobee API key. This is only needed for the initial setup of the component. Once registered it can be removed. If you revoke the key in the ecobee portal you will need to update this again and remove the ecobee.conf file in the `.homeassistant` configuration path. -- **hold_temp** (*Optional*): True/False whether or not to hold changes indefinitely (True) or until the next scheduled event. Defaults to `False`. - -

    - - -

    - -If for whatever reason you delete and re-create your ecobee app at ecobee.com such that your developer API key changes, you will need to delete your `/conf/ecobee.conf file`. You will also need to update the `api_key:` in the `configuration.yaml` or `secrets.yaml` file. diff --git a/source/_components/egardia.markdown b/source/_components/egardia.markdown deleted file mode 100644 index a19c76738b..0000000000 --- a/source/_components/egardia.markdown +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: page -title: "Egardia" -description: "Instructions on how to setup Egardia / Woonveilig within Home Assistant." -date: 2018-03-13 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_release: 0.65 -logo: egardia.png ---- - -The `egardia` platform enables the ability to control an [Egardia](http://egardia.com/)/[Woonveilig](http://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically (hidden by default). - -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. - -## {% linkable_title Basic configuration %} - -To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file: - ```yaml - # Example configuration.yaml entry - egardia: - host: YOUR_HOST - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -host: - description: The local IP address of the Egardia/Woonveilig alarm panel. - required: true - type: string -username: - description: Username for the Egardia/Woonveilig account. - required: true - type: string -password: - description: Password for Egardia/Woonveilig account. - required: true - type: string -version: - description: The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. - required: false - type: string - default: 'GATE-01' -port: - description: The port of the alarm panel. - required: false - type: int - default: 80 -report_server_enabled: - description: Enable reporting by server. - required: false - type: string - default: false -report_server_port: - description: Port of the Egardia server. - required: false - type: int - default: 52010 -report_server_codes: - description: Map of list of codes for the different states. - required: false - type: map - keys: - arm: - description: List of codes for the 'arm' state. - required: false - type: list - disarm: - description: List of codes for the 'disarm' state. - required: false - type: list - armhome: - description: List of codes for the 'armhome' state. - required: false - type: list - triggered: - description: List of codes for the 'triggered' state. - required: false - type: list - ignore: - description: List of codes that will be ignored. - required: false - type: list -{% endconfiguration %} - -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 (and more useful) configuration. - -## {% linkable_title Advanced configuration %} - -1. Log in to 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. You can leave the port number set to 52010 or change it to anything you like. **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. The Egardia component relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e. the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia component to work correctly you will need to capture the codes. To do this, 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. Record the codes shown as well as the status they relate to (see step 4 below). 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 of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). **For comfort, 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 - egardia: - host: YOUR_HOST - username: YOUR_USERNAME - password: YOUR_PASSWORD - report_server_enabled: True - report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010) - report_server_codes: - arm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - disarm: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - armhome: XXXXXXXXXXXXXXXX - triggered: XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX, XXXXXXXXXXXXXXXX - ignore: XXXXXXXXXXXXXXXX - ``` - -Note that for all code groups (*arm*,*disarm*, etc) 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. 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. *Note*: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl). diff --git a/source/_components/eight_sleep.markdown b/source/_components/eight_sleep.markdown deleted file mode 100644 index 3a455d4ab5..0000000000 --- a/source/_components/eight_sleep.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Eight Sleep" -description: "Interface an Eight Sleep smart cover or mattress to Home Assistant" -date: 2017-04-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eight_sleep.png -ha_category: Hub -ha_release: "0.44" -ha_iot_class: "Cloud Polling" ---- - -The `eight_sleep` component allows Home Assistant to fetch data from your [Eight Sleep](https://eightsleep.com/) smart cover or mattress. - -## {% linkable_title Configuration %} - -It's setup utilizing 'Sensor' components to convey the current state of your bed and results of your sleep sessions and a 'Binary Sensor' component to indicate your presence in the bed. A service is also provided to set the heating level and duration of the bed. - -You must have at least two sleep sessions recorded in the Eight Sleep app prior to setting up the Home Assistant component. - -To get started add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -eight_sleep: - username: YOUR_E_MAIL_ADDRESS - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The email address associated with your Eight Sleep account. - required: true - type: string -password: - description: The password associated with your Eight Sleep account. - required: true - type: string -password: - description: Defines if you'd like to fetch data for both sides of the bed. - required: false - type: string - default: False -{% endconfiguration %} - -### {% linkable_title Supported features %} - -Sensors: - -- eight_left/right_bed_state -- eight_left/right_sleep_session -- eight_left/right_previous_sleep_session -- eight_left/right_bed_temperature -- eight_left/right_sleep_stage -- eight_room_temperature - -Binary Sensors: - -- eight_left/right_bed_presence - -### {% linkable_title Service `heat_set` %} - -You can use the service eight_sleep/heat_set to adjust the target heating level and heating duration of your bed. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Entity ID of bed state to adjust. -| `target` | no | Target heating level from 0-100. -| `duration` | no | Duration to heat at the target level in seconds. - -Script Example: - -```yaml -script: - bed_set_heat: - sequence: - - service: eight_sleep.heat_set - data: - entity_id: "sensor.eight_left_bed_state" - target: 35 - duration: 3600 -``` diff --git a/source/_components/emoncms_history.markdown b/source/_components/emoncms_history.markdown deleted file mode 100644 index 3903a53a60..0000000000 --- a/source/_components/emoncms_history.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Emoncms history" -description: "Instructions on how to integrate Emoncms history into Home Assistant." -date: 2016-09-25 12:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: emoncms.png -ha_category: History -featured: false -ha_release: 0.31 ---- - - -The `emoncms_history` component makes it possible to transfer details collected with Home Assistant to [Emoncms.org](https://emoncms.org/) or your local running Emoncms instance. It will send the data to a specific input node on Emoncms with the entity IDs as a key. Afterwards you can create feeds and dashboards in Emoncms with the collected data. - -To use the `emoncms_history` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -emoncms_history: - api_key: put your emoncms WRITE api key here - url: https://emoncms.org - inputnode: 19 - whitelist: - - sensor.owm_temperature - - sensor.owm_wind_speed -``` - -Configuration variables: - -- **api_key** (*Required*): Your emoncms write api key -- **url** (*Required*): The root URL of your Emoncms installation. (Use https://emoncms.org for the cloud based version) -- **inputnode** (*Required*): Input node that will be used inside emoncms. Please make sure you use a dedicated, not used before, node for this component! -- **whitelist** (*Required*): List of entity IDs you want to publish. -- **scan_interval** (*Optional*): Defines, in seconds, how regularly the states of the whitelisted entities are being gathered and send to emoncms. Default is 30 seconds. diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown deleted file mode 100644 index 763baa4673..0000000000 --- a/source/_components/emulated_hue.markdown +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: page -title: "Emulated Hue Bridge" -description: "Instructions on how to emulated Hue Bridge within Home Assistant." -date: 2016-08-26 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Hub -ha_release: 0.27 -ha_iot_class: "Local Push" ---- - -

    -Be aware that `emulated_hue` doesn't work for new **Google Home** users. If you're a new user of Google Home, use the [Google Assistant component](/components/google_assistant/). -

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

    -A physical Hue Bridge is required for Philips Hue lights to function - this virtual bridge will not replace a physical bridge. Instead, it allows Home Assistant to represent non-Philips Hue devices to Amazon Echo as Philips Hue devices, which Amazon Echo can control with built-in support. -

    - -

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

    - -

    -Both Google Home and Alexa use the device they were initially set up with for communication with emulated_hue. In other words: if you remove/replace this device you will also break emulated_hue. -

    - -### {% linkable_title Configuration %} - -To enable the emulated Hue bridge, add one of the following configs to your `configuration.yaml` file: - -```yaml -# Google Home example configuration.yaml entry -emulated_hue: - listen_port: 80 - # Google Home does not work on different ports. -``` - -```yaml -# Amazon Echo example configuration.yaml entry -emulated_hue: -``` - -Configuration variables: - -- **type** (*Optional*): The type of assistant which we are emulating. 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. - -- **advertise_ip** (*Optional*): If you need to override the IP address used for UPnP discovery. (For example, using network isolation in Docker) -- **advertise_port** (*Optional*): If you need to specifically override the advertised UPnP port. - -- **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` - -- **expose_by_default** (*Optional*): Whether or not entities should be exposed via the bridge by default instead of explicitly (see the 'emulated_hue' customization below). If not specified, this defaults to true. Warning: If you have a lot of devices (more than 49 total across all exposed domains), you should be careful with this option. Exposing more devices than Alexa supports can result in it not seeing any of them. If you are having trouble getting any devices to show up, try disabling this, and explicitly exposing just a few devices at a time to see if that fixes it. - -- **exposed_domains** (*Optional*): The domains that are exposed by default if `expose_by_default` is set to true. If not specified, this defaults to the following list: - - `switch` - - `light` - - `group` - - `input_boolean` - - `media_player` - - `fan` - -- **entities** (*Optional*): Customization for entities. - -A full configuration sample looks like the one below. - -```yaml -# Example configuration.yaml entry -emulated_hue: - host_ip: 192.168.1.186 - listen_port: 8300 - advertise_ip: 10.0.0.10 - advertise_port: 8080 - off_maps_to_on_domains: - - script - - scene - expose_by_default: true - exposed_domains: - - light - entities: - light.bedroom_light: - name: "Bedside Lamp" - light.ceiling_lights: - hidden: true -``` - -The following are attributes that can be applied in the `entities` section: - -- **name** (*Optional*): The name that the emulated Hue will use. The default for this is the entity's friendly name. -- **hidden** (*Optional*): Whether or not the emulated Hue bridge should expose the entity. Adding `hidden: false` will expose the entity to Alexa. The default value for this attribute is controlled by the `expose_by_default` option. - -

    -These attributes used to be found under the `customize` section of `homeassistant`, however, they have now been moved to `entities`. Emulated Hue configuration under `homeassistant.customize` will be deprecated in the near future. -

    - -### {% linkable_title Troubleshooting %} - -You can verify that the `emulated_hue` component has been loaded and is responding by pointing a local browser to the following URL: - - - `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`). - -An additional step is required to run Home Assistant as a 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 a 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](/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`. - -### {% linkable_title License %} - -Much of this code is based on work done by Bruce Locke on his [ha-local-echo](https://github.com/blocke/ha-local-echo) project, originally released under the MIT License. The license is located [here](https://github.com/blocke/ha-local-echo/blob/b9bf5dcaae6d8e305e2283179ffba64bde9ed29e/LICENSE). diff --git a/source/_components/enocean.markdown b/source/_components/enocean.markdown deleted file mode 100644 index 4e38d20444..0000000000 --- a/source/_components/enocean.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "EnOcean" -description: "Connect EnOcean devices to Home Assistant" -date: 2016-05-25 23:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: enocean.png -ha_category: Hub -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - -The [EnOcean](https://en.wikipedia.org/wiki/EnOcean) standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are necessary. - -The `enocean` component adds support for some of these devices. You will need a controller like the [USB300](https://www.enocean.com/en/enocean_modules/usb-300-oem/) in order for it to work. - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](/components/binary_sensor.enocean/) (wall switches) -- [Sensor](/components/sensor.enocean/) (power meters) -- [Light](/components/light.enocean/) (dimmers) -- [Switch](/components/switch.enocean/) - -However, only a few devices have been confirmed to work. These are: - -- Eltako FUD61 dimmer -- Eltako FT55 battery-less wall switch -- Jung ENOA590WW battery-less wall switch -- Permundo PSC234 (switch and power monitor) - -Other devices will most likely need some changes in the Home Assistant code in order to work. Support for teaching of devices is also missing at this time. - -To integrate an EnOcean controller with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -enocean: - device: /dev/ttyUSB0 -``` - -Configuration variables: - -- **device** (*Required*): The port where your device is connected to your Home Assistant host. diff --git a/source/_components/envisalink.markdown b/source/_components/envisalink.markdown deleted file mode 100644 index 57deb9f53f..0000000000 --- a/source/_components/envisalink.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: page -title: "Envisalink Alarm Control Panel" -description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an envisalink evl3/evl4 board." -date: 2016-09-30 22:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: eyezon.png -ha_category: Alarm -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - -The `envisalink` 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 Eyez On, known as the Envisalink. The Envisalink evl3 and evl4 boards provide a TCP/IP interface to the alarm panel, where it emulates an alarm keypad. This board also exposes a raw TCP/IP based API, upon which this component is built. Currently, the Envisalink version 4 is the latest model. This component supports both the evl3 and the evl4. - -Please visit the [eyezon website](http://www.eyezon.com/) for further information about the evl3 and evl4 boards. - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](/components/binary_sensor.envisalink/): Reports on zone status -- [Sensor](/components/sensor.envisalink/): Emulates an alpha-numeric keypad attached to the alarm panel -- [Alarm Control Panel](/components/alarm_control_panel.envisalink/): Reports on partition status, and can be used to arm/disarm the system - -This is a fully event-based component. Any event sent by the Envisalink device will be immediately reflected within Home Assistant. - -As of 0.29, the alarm_trigger service is supported. It is possible to fire off an envisalink-based alarm directly from Home Assistant. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. - -An `envisalink` section must be present in the `configuration.yaml` file and contain the following options as required: - -```yaml -# Example configuration.yaml entry -envisalink: - host: - panel_type: HONEYWELL or DSC - user_name: YOUR_USERNAME - password: YOUR_PASSWORD - code: '1234' - port: 4025 - evl_version: 3 - keepalive_interval: 60 - zonedump_interval: 30 - panic_type: Police - zones: - 11: - name: 'Back Door' - type: 'opening' - 21: - name: 'First Floor Motion' - type: 'motion' - partitions: - 1: - name: 'Home Alarm' -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the Envisalink device on your home network. -- **panel_type** (*Required*): `HONEYWELL` or `DSC`, depending upon which alarm system you have. -- **user_name** (*Required*): Which username to authenticate with when connecting to the device. On a Honeywell alarm panel, the username/password are the same. -- **password** (*Required*): Which password to authenticate with when connecting to the device. EVL3 only works with max. 6 characters. -- **code** (*Required*): Your alarm panel's code, for authenticating user input during arm/disarm. -- **port** (*Optional*): Which network port to connect with. Default: `4025` -- **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 -- **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. - -Supported services: - -The following services are supported by Envisalink and can be used to script or automate the alarm. - -- **alarm_disarm**: Disarms the alarm with the user code provided, or the code specified in the configuration. -- **alarm_arm_home**: Arms the alarm in home mode. -- **alarm_arm_away**: Arms the alarm in standard away mode. -- **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. -- **envisalink_alarm_keypress**: Sends a string of up to 6 characters to the alarm. *DSC alarms only* diff --git a/source/_components/eufy.markdown b/source/_components/eufy.markdown deleted file mode 100644 index 60ec2a470d..0000000000 --- a/source/_components/eufy.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Eufy" -description: "Instructions on how to integrate Eufy devices into Home Assistant." -date: 2018-04-09 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eufy.png -ha_category: Hub -ha_release: 0.68 ---- - -The `eufy` component is the main component to integrate various [eufy](https://www.eufylife.com/) devices with Home Assistant. - -Supported devices will be discovered after the `eufy` component is configured: - -```yaml -# Example configuration.yaml entry -eufy: - username: testuser@domain - password: p4ssw0rd -``` - -where username and password are the ones configured in the EufyHome app. Alternately, Eufy devices that are not discoverable can be statically configured. - -```yaml -eufy: - devices: - - address: 192.168.1.10 - access_token: 1234567890abcdef - type: T1012 - name: Smart Light - - address: 192.168.1.11 - access_token: abcdef1234567890 - type: T1201 - name: Smart Switch -``` - -access_token can be obtained by running: - -``` -curl -H "Content-Type: application/json" -d '{"client_id":"eufyhome-app", "client_Secret":"GQCpr9dSp3uQpsOMgJ4xQ", "email":"USERNAME", "password":"PASSWORD"}' https://home-api.eufylife.com/v1/user/email/login | jq -``` - -replacing USERNAME and PASSWORD with the Eufy username and password. This will give an access_token. Then run: - -``` -curl -H token:TOKEN -H category:Home https://home-api.eufylife.com/v1/device/list/devices-and-groups | jq -``` - -replacing TOKEN with the access_token from the previous command. This will provide the local_code for each device. - diff --git a/source/_components/fan.comfoconnect.markdown b/source/_components/fan.comfoconnect.markdown deleted file mode 100644 index f1ac6f944f..0000000000 --- a/source/_components/fan.comfoconnect.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Zehnder ComfoAir Q Ventilation fans" -description: "Instructions on 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.dyson.markdown b/source/_components/fan.dyson.markdown deleted file mode 100644 index d1ae60c638..0000000000 --- a/source/_components/fan.dyson.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Dyson Purifier Fan" -description: "Instructions on how to setup the Dyson Purifier fans within Home Assistant." -date: 2017-05-27 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dyson.png -ha_category: Fan -ha_iot_class: "Cloud Polling" -ha_release: 0.47 ---- - - -The `dyson` fan platform allows you to control your Dyson Purifier fans. - -You have first to setup the [Dyson component](/components/dyson/) - -### {% linkable_title Supported fan devices %} - -- Pure Cool link (desk and tower) -- Pure Hot+cool link (but heating is not yet supported) diff --git a/source/_components/fan.insteon_hub.markdown b/source/_components/fan.insteon_hub.markdown deleted file mode 100644 index 0436d4bdde..0000000000 --- a/source/_components/fan.insteon_hub.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Insteon Hub Fan" -description: "Instructions on how to setup the Insteon Hub Fans within Home Assistant." -date: 2017-08-26 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Fan -ha_release: "0.30" ---- - -The `insteon_hub` fan component lets you control your fans connected to an [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. - -To get your Insteon Hub fan working with Home Assistant, follow the instructions for the general [Insteon Hub component](/components/insteon_hub/). diff --git a/source/_components/fan.insteon_local.markdown b/source/_components/fan.insteon_local.markdown deleted file mode 100644 index d9738043c9..0000000000 --- a/source/_components/fan.insteon_local.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Insteon (Local) Fan" -description: "Instructions on 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 get your insteon fans working with Home Assistant, follow the instructions for the general [Insteon local component](/components/insteon_local/). The fans will be automatically disovered and added to Home Assistant. The device names will be the Insteon address of the fans. diff --git a/source/_components/fan.insteon_plm.markdown b/source/_components/fan.insteon_plm.markdown deleted file mode 100644 index 3f2323e16e..0000000000 --- a/source/_components/fan.insteon_plm.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Insteon PLM Fan" -description: "Instructions on how to setup the Insteon PLM fan locally within Home Assistant." -date: 2017-02-19 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Fan -ha_iot_class: "Local Push" -ha_version: 0.65 ---- - -The `insteon_plm` fan platform lets you control your [FanLinc] through -an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a -USB or serial port. To add support, set up the primary [insteon_plm] -component. - -[insteon_plm]: /components/insteon_plm/ -[FanLinc]: https://www.smarthome.com/fanlinc-insteon-2475f-ceiling-fan-and-light-controller-fixture-module-dual-band.html - - diff --git a/source/_components/fan.isy994.markdown b/source/_components/fan.isy994.markdown deleted file mode 100644 index 4c47e76fc4..0000000000 --- a/source/_components/fan.isy994.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ISY994 Fan" -description: "Instructions on how to integrate ISY994 fans into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Fan -ha_iot_class: "Local Push" ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) fan from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/fan.markdown b/source/_components/fan.markdown deleted file mode 100644 index aac9c8c763..0000000000 --- a/source/_components/fan.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Fan" -description: "Instructions on how to setup Fan devices within Home Assistant." -date: 2016-08-26 19:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - -The `fan` component is built for the controlling of fan devices. It can be called the little brother of the [climate](/components/climate/) component. - -To enable this component, pick one of the platforms, and add it to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -climate: - platform: fan -``` - diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown deleted file mode 100644 index 45fa55d41b..0000000000 --- a/source/_components/fan.mqtt.markdown +++ /dev/null @@ -1,182 +0,0 @@ ---- -layout: page -title: "MQTT Fan" -description: "Instructions on how to integrate MQTT fans into Home Assistant." -date: 2016-08-27 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Fan -ha_release: 0.27 -ha_iot_class: depends ---- - -The `mqtt` fan platform lets you control your MQTT enabled fans. - -## {% linkable_title Configuration %} - -In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT 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`). - -Optimistic mode can be forced even if a `state_topic` is available. Try to enable it if you are experiencing incorrect fan operation. - -To enable MQTT fans in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -fan: - - platform: mqtt - command_topic: "bedroom_fan/on/set" -``` - -{% configuration %} -name: - description: The name of the fan. - required: false - type: string - default: MQTT Fan -command_topic: - description: The MQTT topic to publish commands to change the fan state. - required: true - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -payload_on: - description: The payload that represents the running state. - required: false - type: string - default: ON -payload_off: - description: The payload that represents the stop state. - required: false - type: string - default: OFF -state_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the state." - required: false - type: string -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -optimistic: - description: Flag that defines if lock works in optimistic mode - required: false - type: boolean - default: "`true` if no state topic defined, else `false`." -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: true -oscillation_state_topic: - description: The MQTT topic subscribed to receive oscillation state updates. - required: false - type: string -oscillation_command_topic: - description: The MQTT topic to publish commands to change the oscillation state. - required: false - type: string -payload_oscillation_on: - description: The payload that represents the oscillation on state. - required: false - type: string - default: oscillate_on -payload_oscillation_off: - description: The payload that represents the oscillation off state. - required: false - type: string - default: oscillate_off -oscillation_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the oscillation." - required: false - type: string -speed_state_topic: - description: The MQTT topic subscribed to receive speed state updates. - required: false - type: string -speed_command_topic: - description: The MQTT topic to publish commands to change speed state. - required: false - type: string -payload_low_speed: - description: The payload that represents the fan's low speed. - required: false - type: string - default: low -payload_medium_speed: - description: The payload that represents the fan's medium speed. - required: false - type: string - default: medium -payload_high_speed: - description: The payload that represents the fan's high speed. - required: false - type: string - default: high -speed_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the speed payload." - required: false - type: string -speeds: - description: "List of speeds this fan is capable of running at. Valid entries are `off`, `low`, `medium`, and `high`." - required: false - type: string list -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -

    -Make sure that your topics match 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 fan. - -### {% linkable_title Full configuration %} - -The example below shows a full configuration for a MQTT fan. - -```yaml -# Example configuration.yaml entry -fan: - - platform: mqtt - name: "Bedroom Fan" - state_topic: "bedroom_fan/on/state" - command_topic: "bedroom_fan/on/set" - oscillation_state_topic: "bedroom_fan/oscillation/state" - oscillation_command_topic: "bedroom_fan/oscillation/set" - speed_state_topic: "bedroom_fan/speed/state" - speed_command_topic: "bedroom_fan/speed/set" - qos: 0 - payload_on: "true" - payload_off: "false" - payload_oscillation_on: "true" - payload_oscillation_off: "false" - payload_low_speed: "low" - payload_medium_speed: "medium" - payload_high_speed: "high" - speeds: - - low - - medium - - high -``` diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown deleted file mode 100644 index 5ebd666594..0000000000 --- a/source/_components/fan.template.markdown +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: page -title: "Template Fan" -description: "Instructions how to setup the Template fans within Home Assistant." -date: 2018-05-03 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Fan -ha_release: 0.69 -ha_iot_class: "Local Push" -logo: home-assistant.png ---- - -The `template` platform creates fans that combine components and provides the -ability to run scripts or invoke services for each of the turn_on, turn_off, set_speed, and -set_oscillating commands of a fan. - -To enable Template Fans in your installation, add the following to your -`configuration.yaml` file: - -{% raw %} -```yaml -# Example configuration.yaml entry -fan: - - platform: template - fans: - bedroom_fan: - friendly_name: "Bedroom fan" - value_template: "{{ states('input_boolean.state') }}" - speed_template: "{{ states('input_select.speed') }}" - oscillating_template: "{{ states('input_select.osc') }}" - turn_on: - service: script.fan_on - turn_off: - service: script.fan_off - set_speed: - service: script.fan_speed - data_template: - speed: "{{ speed }}" - set_oscillating: - service: script.fan_oscillating - data_template: - oscillating: "{{ oscillating }}" - speeds: - - '1' - - '2' - - '3' -``` -{% endraw %} - -{% configuration %} - fans: - description: List of your fans. - required: true - type: map - keys: - friendly_name: - description: Name to use in the frontend. - required: false - type: string - value_template: - description: "Defines a template to get the state of the fan. Valid value: 'on'/'off'" - required: true - type: template - speed_template: - description: Defines a template to get the speed of the fan. - required: false - type: template - oscillating_template: - description: "Defines a template to get the osc state of the fan. Valid value: True/False" - required: false - type: template - turn_on: - description: Defines an action to run when the fan is turned on. - required: true - type: action - turn_off: - description: Defines an action to run when the fan is turned off. - required: true - type: action - set_speed: - description: Defines an action to run when the fan is given a speed command. - required: false - type: action - set_oscillating: - description: Defines an action to run when the fan is given a osc state command. - required: false - type: action - speeds: - description: List of speeds the fan is capable of running at. - required: false - type: string list - default: ['low', 'medium', 'high'] -{% endconfiguration %} diff --git a/source/_components/fan.velbus.markdown b/source/_components/fan.velbus.markdown deleted file mode 100644 index ff0652f233..0000000000 --- a/source/_components/fan.velbus.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -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 deleted file mode 100644 index 129db4b469..0000000000 --- a/source/_components/fan.wink.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Wink Fan" -description: "Instructions on how to setup the Wink fans within Home Assistant." -date: 2017-01-14 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Fan -ha_release: 0.36 -ha_iot_class: "Cloud Polling" ---- - - -The Wink fan platform allows you to control your [Wink](http://www.wink.com/) fans. - -The requirement is that you have setup [Wink](/components/wink/). - - -### {% linkable_title Supported fan devices %} - -- 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 deleted file mode 100644 index 8fc9da3211..0000000000 --- a/source/_components/fan.xiaomi_miio.markdown +++ /dev/null @@ -1,360 +0,0 @@ ---- -layout: page -title: "Xiaomi Air Purifier" -description: "Instructions on how to integrate your Xiaomi Air Purifier and Xiaomi Air Humidifier within Home Assistant." -date: 2017-10-13 12:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: Fan -ha_version: 0.57 -ha_iot_class: "Local Polling" ---- - -The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier and Xiaomi Air Humidifier. - -## Features - -### Air Purifier 2 et al. - -* Power (on, off) -* Operation modes (auto, silent, favorite, idle) -* Buzzer (on, off) -* Child lock (on, off) -* LED (on, off), LED brightness (bright, dim, off) -* Favorite Level (0...16) -* Attributes - - model - - temperature - - humidity - - aqi - - mode - - filter_hours_used - - filter_life_remaining - - favorite_level - - child_lock - - led - - motor_speed - - average_aqi - - purify_volume - - learn_mode - - sleep_time - - sleep_mode_learn_count - - extra_features - - turbo_mode_supported - - auto_detect - - use_time - - button_pressed - - buzzer - - led_brightness - - sleep_mode - -### Air Purifier Pro (zhimi.airpurifier.v6) - -* Power (on, off) -* Operation modes (auto, silent, favorite) -* Child lock (on, off) -* LED (on, off) -* Favorite Level (0...16) -* Attributes - - model - - temperature - - humidity - - aqi - - mode - - filter_hours_used - - filter_life_remaining - - favorite_level - - child_lock - - led - - motor_speed - - average_aqi - - purify_volume - - learn_mode - - sleep_time - - sleep_mode_learn_count - - extra_features - - turbo_mode_supported - - auto_detect - - use_time - - button_pressed - - filter_rfid_product_id - - filter_rfid_tag - - filter_type - - illuminance - - motor2_speed - - volume - -### Air Purifier V3 (zhimi.airpurifier.v3) - -* Power (on, off) -* Operation modes (auto, silent, favorite, idle, medium, high, strong) -* Child lock (on, off) -* LED (on, off) -* Attributes - - model - - aqi - - mode - - led - - buzzer - - child_lock - - illuminance - - filter_hours_used - - filter_life_remaining - - motor_speed - - average_aqi - - volume - - motor2_speed - - filter_rfid_product_id - - filter_rfid_tag - - filter_type - - purify_volume - - learn_mode - - sleep_time - - sleep_mode_learn_count - - extra_features - - auto_detect - - use_time - - button_pressed - -### Air Humidifier (zhimi.humidifier.v1) - -* On, Off -* Operation modes (silent, medium, high) -* Buzzer (on, off) -* Child lock (on, off) -* LED brightness (bright, dim, off) -* Target humidity (30, 40, 50, 60, 70, 80) -* Attributes - - model - - temperature - - humidity - - mode - - buzzer - - child_lock - - trans_level - - target_humidity - - led_brightness - - button_pressed - - use_time - - hardware_version - -### Air Humidifier CA (zhimi.humidifier.ca1) - -* On, Off -* Operation modes (silent, medium, high, auto) -* Buzzer (on, off) -* Child lock (on, off) -* LED brightness (bright, dim, off) -* Target humidity (30, 40, 50, 60, 70, 80) -* Dry mode (on, off) -* Attributes - - model - - temperature - - humidity - - mode - - buzzer - - child_lock - - trans_level - - target_humidity - - led_brightness - - button_pressed - - use_time - - hardware_version - - speed - - depth - - dry - -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: -# Example configuration.yaml entry - - platform: xiaomi_miio - host: 192.168.130.66 - token: YOUR_TOKEN -``` - -{% configuration %} -host: - description: The IP address of your fan. - required: true - type: string -token: - description: The API token of your fan. - required: true - type: string -name: - description: The name of your fan. - required: false - type: string - default: Xiaomi Air Purifier -model: - description: The model of your device. - required: false - type: string -{% endconfiguration %} - -## {% linkable_title Platform Services %} - -### {% linkable_title Service `fan.set_speed` %} - -Set the fan speed/operation mode. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | -| `speed` | no | Fan speed. Valid values are 'Auto', 'Silent', 'Favorite' and 'Idle' | - -### {% linkable_title Service `fan.xiaomi_miio_set_buzzer_on` %} (Air Purifier Pro excluded) - -Turn the buzzer on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_buzzer_off` %} (Air Purifier Pro excluded) - -Turn the buzzer off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_led_on` %} (Air Purifier only) - -Turn the led on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_led_off` %} (Air Purifier only) - -Turn the led off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_child_lock_on` %} - -Turn the child lock on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_child_lock_off` %} - -Turn the child lock off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_led_brightness` %} (Air Purifier Pro excluded) - -Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -| `brightness` | no | Brightness, between 0 and 2. | - -### {% linkable_title Service `fan.xiaomi_miio_set_favorite_level` %} (Air Purifier only) - -Set the favorite level of the operation mode "favorite". - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -| `level` | no | Level, between 0 and 16. | - -### {% linkable_title Service `fan.xiaomi_miio_set_auto_detect_on` %} (Air Purifier Pro only) - -Turn the auto detect on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_auto_detect_off` %} (Air Purifier Pro only) - -Turn the auto detect off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_learn_mode_on` %} (Air Purifier 2 only) - -Turn the learn mode on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_learn_mode_off` %} (Air Purifier 2 only) - -Turn the learn mode off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_volume` %} (Air Purifier Pro only) - -Set the sound volume. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -| `volume` | no | Volume, between 0 and 100. | - -### {% linkable_title Service `fan.xiaomi_miio_reset_filter` %} (Air Purifier 2 only) - -Reset the filter lifetime and usage. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_extra_features` %} (Air Purifier only) - -Set the extra features. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -| `features` | no | Integer, known values are 0 and 1. | - -### {% linkable_title Service `fan.xiaomi_miio_set_target_humidity` %} (Air Humidifier only) - -Set the target humidity. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-----------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | -| `humidity` | no | Target humidity. Allowed values are 30, 40, 50, 60, 70 and 80 | - -### {% linkable_title Service `fan.xiaomi_miio_set_dry_on` %} (Air Humidifier CA only) - -Turn the dry mode on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | - -### {% linkable_title Service `fan.xiaomi_miio_set_dry_off` %} (Air Humidifier CA only) - -Turn the dry mode off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | diff --git a/source/_components/fan.zha.markdown b/source/_components/fan.zha.markdown deleted file mode 100644 index 536d9c78bd..0000000000 --- a/source/_components/fan.zha.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "ZigBee Home Automation Fan" -description: "Instructions how to setup ZigBee Home Automation fans within Home Assistant." -date: 2018-02-10 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Fan -ha_iot_class: "Local Polling" -ha_release: 0.66 ---- - -To get your ZigBee fans working with Home Assistant, follow the instructions for the general [ZigBee Home Automation component](/components/zha/). diff --git a/source/_components/fan.zwave.markdown b/source/_components/fan.zwave.markdown deleted file mode 100644 index 4e83a0b8a5..0000000000 --- a/source/_components/fan.zwave.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Z-Wave Fan" -description: "Instructions on how to setup the Z-Wave Fans within Home Assistant." -date: 2017-05-25 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_release: 0.38 -ha_category: Fan -ha_iot_class: "Local Push" ---- - -To get your Z-Wave fans working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). diff --git a/source/_components/feedreader.markdown b/source/_components/feedreader.markdown deleted file mode 100644 index 5a06cd4171..0000000000 --- a/source/_components/feedreader.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: Feedreader -description: "Instructions on how to integrate RSS feeds into Home Assistant." -date: 2016-04-18 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: rss.gif -ha_category: Other -ha_release: 0.18 ---- - -Add an RSS/Atom feed reader that polls feeds every hour and sends new entries into the event bus. - -To use RSS feeds in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -feedreader: - urls: - - https://www.home-assistant.io/atom.xml - - https://github.com/blog.atom - - https://hasspodcast.io/feed/podcast -``` - -Configuration variables: - -- **urls** (*Required*): List of URLS for your feeds. - -Feedreader events can be used out of the box to trigger automation actions, e.g.: - -```yaml -automation: - - alias: Trigger action when new element(s) in RSS feed - trigger: - platform: event - event_type: feedreader - action: - service: script.turn_on - entity_id: script.my_action -``` - -```yaml -automation: - - alias: Send notification of RSS feed title when updated - trigger: - platform: event - event_type: feedreader - action: - 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. - -For more advanced use cases, a custom component registering to the `feedreader` event type could be used instead: - -```python -EVENT_FEEDREADER = "feedreader" -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/config/packages/hasspodcast.yaml). diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown deleted file mode 100644 index 56fd9779ae..0000000000 --- a/source/_components/ffmpeg.markdown +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: page -title: "FFmpeg" -description: "Instructions on how to integrate FFmpeg within Home Assistant." -date: 2016-09-14 00:00 -sidebar: true -comments: false -sharing: true -footer: true -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 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 -ffmpeg: -``` - -Configuration variables: - -- **ffmpeg_bin** (*Optional*): Default `ffmpeg`. The name or path to the `ffmpeg` binary. -- **run_test** (*Optional*): Default True. Check if `input` is usable by ffmpeg. - -### {% linkable_title Raspbian Debian Jessie Lite Installations %} -To get the binary on Raspbian Debian Jessie Lite on a RPi you need to perform the following: - -```bash -$ sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list -$ sudo apt-get update -$ sudo apt-get -t jessie-backports install ffmpeg -``` - -We can use now following in the configuration: - -``` -ffmpeg: - ffmpeg_bin: /usr/bin/ffmpeg -``` - -### {% linkable_title Troubleshooting %} - -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): - -``` -$ 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). - -#### {% linkable_title USB cameras %} - -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 - -Integrated Camera (usb-0000:00:14.0-10): - /dev/video0 -``` - -Record a test video with your USB device `/dev/video1`: - -```bash -$ ffmpeg -i /dev/video1 -codec:v libx264 -qp 0 lossless.mp4 -[...] -Input #0, video4linux2,v4l2, from '/dev/video1': - Duration: N/A, start: 43556.376974, bitrate: 147456 kb/s - Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc -[...] -Output #0, mp4, to 'lossless.mp4': - Metadata: - encoder : Lavf57.41.100 - Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc - Metadata: - encoder : Lavc57.48.101 libx264 - Side data: - cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 -Stream mapping: - Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) -Press [q] to stop, [?] for help -frame= 223 fps= 40 q=-1.0 Lsize= 16709kB time=00:00:07.40 bitrate=18497.5kbits/s dup=58 drop=0 speed=1.32x -``` - diff --git a/source/_components/folder_watcher.markdown b/source/_components/folder_watcher.markdown deleted file mode 100644 index df9041ed35..0000000000 --- a/source/_components/folder_watcher.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "Folder Watcher" -description: "Component for monitoring changes within the filesystem." -date: 2018-03-11 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: System Monitor -ha_iot_class: "Local Polling" -ha_release: 0.67 ---- - -This component adds [Watchdog](https://pythonhosted.org/watchdog/) file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files within configured folders. The monitored `event_type` are: - -* `created` -* `deleted` -* `modified` -* `moved` - -Configured folders must be added to [whitelist_external_dirs](/docs/configuration/basic/). Note that by default folder monitoring is recursive, meaning that the contents of sub-folders are also monitored. - -To enable the Folder Watcher component in your installation, add the following to your `configuration.yaml` file: - -{% raw %} -```yaml -folder_watcher: - - folder: /config -``` -{% endraw %} - -{% configuration %} -folder: - description: The folder path - required: true - type: string -patterns: - description: Pattern matching to apply - required: false - default: "*" - type: string -{% endconfiguration %} - -## Patterns - -Pattern matching using [fnmatch](https://docs.python.org/3.6/library/fnmatch.html) can be used to limit filesystem monitoring to only files which match the configured patterns. The following example shows the configuration required to only monitor filetypes `.yaml` and `.txt`. - -{% raw %} -```yaml -folder_watcher: - - folder: /config - patterns: - - '*.yaml' - - '*.txt' -``` -{% endraw %} - -## Automations - -Automations can be triggered on filesystem event data using a `data_template`. The following automation will send a notification with the name and folder of new files added to that folder: - -{% raw %} -```yaml -- action: - - data_template: - message: 'Created {{ trigger.event.data.file }} in {{ trigger.event.data.folder }}' - title: New image captured! - data: - file: " {{ trigger.event.data.path }} " - service: notify.pushbullet - alias: New file alert - condition: [] - id: '1520092824697' - trigger: - - event_data: {"event_type":"created"} - event_type: folder_watcher - platform: event -``` -{% endraw %} diff --git a/source/_components/foursquare.markdown b/source/_components/foursquare.markdown deleted file mode 100644 index 5ec302887e..0000000000 --- a/source/_components/foursquare.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: Foursquare -description: "Instructions on how to the Foursquare API into Home Assistant." -date: 2016-08-08 17:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: foursquare.png -featured: false -ha_category: Social -ha_release: 0.26 -ha_iot_class: "Cloud Polling and Cloud Push" ---- - -The `foursquare` component accepts pushes from the Foursquare [Real-Time API](https://developer.foursquare.com/overview/realtime) and a service to check users in on Swarm. - -```yaml -# Example configuration.yaml entry -foursquare: - access_token: "" - push_secret: "" -``` - -Configuration variables: - -- **access_token** (*Required*): A Foursquare API access token. -- **push_secret** (*Required*): The push secret that Foursquare provides to you in the app dashboard. - -#### Getting the access token #### - -After you have registered your APP on your [My Apps Page](https://foursquare.com/developers/apps) you get a `CLIENT_ID` and you have specified a -`REDIRECT_URL` which can be any URL you like, but since it will get your access token via an HTTP GET request, it should be a URL which will ignore the `access_token` HTTP GET variable. A good idea is to choose the URL of your Home Assistant. -Visit the following URL in your browser: - -``` -https://foursquare.com/oauth2/authenticate?client_id=CLIENT_ID&response_type=token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI -``` - -and change the `CLIENT_ID` and `YOUR_REGISTERED_REDIRECT_URL` to your actual values. -You will receive an OAuth request landing page, asking you if you want to connect your Foursquare account to your newly created app. Say "Yes". -After that, you will get redirected to your `REDIRECT_URL` with the `access_token` as an HTTP GET variable. Copy everything after the = and paste it in your configuration.yaml as the `access_token`. - -### {% linkable_title Real-Time API %} - -The component accepts pushes from Foursquare at `/api/foursquare`. The route does not require authentication. - -Foursquare check-in events can be used out of the box to trigger automation actions, e.g.: - -```yaml -automation: - - alias: Trigger action when you check into a venue. - trigger: - platform: event - event_type: foursquare.push - action: - service: script.turn_on - entity_id: script.my_action -``` - -### {% linkable_title Check ins %} - -To check a user in, use the `foursquare/checkin` service. - -Parameters: - -- **venueId** (*Required*): The Foursquare venue where the user is checking in. -- **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." -- **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. -- **altAcc** (*Optional*): Vertical accuracy of the user's location, in meters. diff --git a/source/_components/freedns.markdown b/source/_components/freedns.markdown deleted file mode 100644 index 960d1411d9..0000000000 --- a/source/_components/freedns.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "freedns.afraid.org" -description: "Keep your DNS record up to date with FreeDNS." -date: 2018-03-27 21:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Utility -ha_release: 0.67 ---- - -With the `freedns` component you can keep your [FreeDNS](https://freedns.afraid.org) record up to date. - -## {% linkable_title Configuration %} - -You need to determine your update URL or your access token. - -1. Head over to the [FreeDNS](https://freedns.afraid.org) website and login to your account. -2. Select the menu "Dynamic DNS" -3. You should now see your update candiates in a table at the bottom of the page. -4. Copy the link target of the "Direct URL". -5. The access token is the part at the end of the link: `https://freedns.afraid.org/dynamic/update.php?YOUR_UPDATE_TOKEN` -6. Either put the token as `access_token` _or_ the whole URL into the `url` attribute. - -To use the component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -freedns: - access_token: YOUR_TOKEN -``` - -{% configuration %} - access_token: - description: Your access token. This is exclusive to `url`. - required: false - type: string - url: - description: The full update URL. This is exclusive to `access_token`. - required: false - type: string - update_interval: - description: How often to call the update service. - required: false - type: time period - default: 10 minutes -{% endconfiguration %} diff --git a/source/_components/fritzbox.markdown b/source/_components/fritzbox.markdown deleted file mode 100644 index a5ca0a5f68..0000000000 --- a/source/_components/fritzbox.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Fritzbox" -description: "Instructions on how to integrate the AVM Fritzbox Smart Home components." -date: 2018-02-18 17:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: Hub -ha_release: 0.68 -ha_iot_class: "Local Polling" ---- - -The [AVM](https://en.avm.de) Fritzbox component for Home Assistant allows you to integrate the switch and climate devices. - -#### {% linkable_title Tested Devices %} - -- [FRITZ!Box 6490 Cable](https://en.avm.de/products/fritzbox/fritzbox-6490-cable/) -- [FRITZ!Box 7590](https://en.avm.de/products/fritzbox/fritzbox-7590/) -- [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/) -- [Eurotronic Comet DECT](https://www.eurotronic.org/en/products/comet-dect.html) - - -## {% linkable_title Setup %} - -```yaml -# Example configuration.yaml entry -fritzbox: - devices: - - host: fritz.box - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -devices: - description: A list of Fritzbox devices. - required: true - type: map - keys: - host: - description: The hostname or IP address of the Fritzbox. - required: true - type: optional - username: - description: The username for Smart Home access. - required: true - type: string - password: - description: The password of the user. - required: true - type: string -{% endconfiguration %} diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown deleted file mode 100644 index 871db22f68..0000000000 --- a/source/_components/frontend.markdown +++ /dev/null @@ -1,143 +0,0 @@ ---- -layout: page -title: "Frontend" -description: "Offers a frontend to Home Assistant." -date: 2015-12-06 21:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: "Other" ---- - -This offers the official frontend to control Home Assistant. - -```yaml -# Example configuration.yaml entry -frontend: -``` - -{% configuration %} - javascript_version: - description: "Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the config can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` " - required: false - type: string - default: auto - 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 additional [resources](/developers/frontend_creating_custom_ui/) to load in `latest` javascript mode." - required: false - type: list - extra_html_url_es5: - description: "List of additional [resources](/developers/frontend_creating_custom_ui/) to load in `es5` javascript mode." - 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 **General** called "Set a theme." You can then choose any installed theme from the dropdown list and it will be applied immediately. - -

    - - Set a theme -

    - -## {% linkable_title Loading extra HTML %} - -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). - -### {% linkable_title Manual Language Selection %} - -The browser language is automatically detected. To use a different language, go to **General** in the Configuration panel and select one from "Choose a Language". It will be applied immediately. - -

    - - Choose a Language -

    diff --git a/source/_components/gc100.markdown b/source/_components/gc100.markdown deleted file mode 100644 index 43d74d72b7..0000000000 --- a/source/_components/gc100.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -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 (/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/goalfeed.markdown b/source/_components/goalfeed.markdown deleted file mode 100644 index 5632a8847d..0000000000 --- a/source/_components/goalfeed.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Goalfeed" -description: "Instructions on how to setup Goalfeed events within Home Assistant." -date: 2017-12-13 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: goalfeed.png -ha_category: Other -ha_version: 0.63 ---- - -The `goalfeed` component lets you use your Goalfeed account to trigger events in Home Assistant whenever a NHL or MLB team scores. - -To use this component, enter your email address and password from your goalfeed.ca account in your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -goalfeed: - username: YOUR_E_MAIL_ADDRESS - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - required: true - description: The email address on your goalfeed.ca account. - type: string -password: - required: true - description: The password on your goalfeed.ca account. - type: string -{% endconfiguration %} - -Now you can use the goal event type in your automations: - -```yaml -- alias: 'Jets Goal' - trigger: - platform: event - event_type: goal - event_data: - team_name: "Winnipeg Jets" -``` - -Goal events have the following event data: - -- **team**: Three letter code representing the team. This is unique within the leagues, but not unique across the leagues (i.e. 'WPG' or 'TOR'). -- **team_name**: The team that scored (i.e. 'Winnipeg Jets' or 'Toronto Blue Jays'). -- **team_hash**: A unique hash for the team (you can find these values on https://goalfeed.ca/get-teams). -- **league_id**: A unique number for the league. -- **league_name**: A the short name of the league (i.e. 'NHL' or 'MLB'). diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown deleted file mode 100644 index edd0b8ebb1..0000000000 --- a/source/_components/google_assistant.markdown +++ /dev/null @@ -1,177 +0,0 @@ ---- -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 ---- - -

    - Use [Home Assistant Cloud](/cloud/) to integrate with Google Assistant without any effort. -

    - -The `google_assistant` component allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device. - -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 %} - -To enable this, add the following lines to your `configuration.yaml` file: - -```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] - agent_user_id: [a string to identify user] - api_key: [a Homegraph API Key generated for the Google Actions project] - exposed_domains: - - switch - - light - - group - entity_config: - switch.kitchen: - name: Custom Name for Google Assistant - aliases: - - bright lights - - entry lights - light.living_room: - expose: false - room: living room -``` - -Configuration variables: - -{% configuration %} - -project_id: - description: Project ID from the Google Developer console (looks like `words-2ab12`) - required: true - type: string -client_id: - description: A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth (example `aBcDeFgHiJkLmNoP`) - required: true - type: string -access_token: - description: Another different long random URL safe string (example `aBcDeFgHiJkLmNoP`) - required: true - type: string -agent_user_id: - description: A string to identify the user, e.g., email address. If not provided, the component will generate one. - required: false - type: string -api_key: - description: An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see step 9 below). If not provided then the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. - required: false - type: string -expose_by_default: - description: Expose devices in all supported domains by default. If set to false, you need to either expose domains or add the expose configuration option to each entity in entity_config and set it to true. - required: false - default: True - type: boolean -exposed_domains: - description: List of entity domains to expose to Google Assistant. - required: false - type: list -entity_config: - description: Entity specific configuration for Google Assistant - required: false - type: map - keys: - '``': - description: Entity to configure - required: false - type: map - keys: - name: - description: Name of the entity to show in Google Assistant - required: false - type: string - expose: - description: Force an entity to be exposed/excluded. - required: false - type: boolean - aliases: - description: Aliases that can also be used to refer to this entity - required: false - type: list - room: - description: Allows for associating this device to a Room in Google Assistant. - required: false - type: string -{% endconfiguration %} - -### {% linkable_title Available domains %} -Currently, the following domains are available to be used with Google Assistant, listed with their default types: - -- group (on/off) -- input boolean (on/off) -- scene (on) -- script (on) -- switch (on/off) -- fan (on/off) -- light (on/off/brightness/rgb color/color temp) -- cover (on/off/set position (via set brightness)) -- media_player (on/off/set volume (via set brightness)) -- climate (temperature setting) - -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: - -```bash -$ cat /dev/urandom | fold -w 120 | head -n 1 | base64 -w 0 | tr -dc '0-9A-Za-z' | cut -c -80 -``` - -If you're not using Linux, you can use sites such as [this one](https://www.browserling.com/tools/random-string) to generate a random string (containing mixed case letters and numbers) of up to 80 characters. - -### {% linkable_title Setup %} - -1. Create a new project in the [developer console](https://console.actions.google.com/). - a. Add/Import project - b. Click on `BUILD` on the `Smart home` card - c. Type in your home assistant url: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable. - d. Click `Done`. Then click on `Overview`, which will lead you to the app details screen. -2. 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. -3. The final item on that page `Account linking` is required for your app to interact with Home Assistant. - a. Grant type: `Implicit` - b. Client ID: The `client_id` from your Home Assistant configuration above - c. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth`. If you have set `api_password:` add this password to the URL `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth?api_password=[YOUR API PASSWORD]`) - d. Configure your client. Add scopes for `email` and `name`. - e. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. -4. 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). -5. If you haven't already added the component configuration to `configuration.yaml` and restarted Home Assistant, you'll be unable to continue until you have. -6. Open the Google Assistant app and go into `Settings > Home Control` -7. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you the screen where you can set rooms for your devices or nicknames for your devices. -8. If you want to allow other household users to control the devices: - a. Go to the settings for the project you created in point 1 in the developer console. - b. Under the gear icon, click `Permissions` - c. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role - d. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 4 -9. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: - a. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) - b. Select your project and click Enable Homegraph API - c. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials - d. Note down the generated API Key and use this in the configuration - -### {% linkable_title Troubleshooting the request_sync service %} - -The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink. - -The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [developer console](https://console.actions.google.com). Resolve this by: - - 1. Removing your project from the [developer console](https://console.actions.google.com). - 2. Add a new project to the [cloud console](https://console.cloud.google.com). Here you get a new `project_id`. - 3. Enable Homegraph API to the new project. - 4. Generate a new API key. - 5. Again, create a new project in the [developer console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this, they share the same `project_id`. diff --git a/source/_components/google_domains.markdown b/source/_components/google_domains.markdown deleted file mode 100644 index df42475a51..0000000000 --- a/source/_components/google_domains.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -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/graphite.markdown b/source/_components/graphite.markdown deleted file mode 100644 index 4802e4a758..0000000000 --- a/source/_components/graphite.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "Graphite" -description: "Instructions on how to record Home Assistant history in Graphite." -date: 2016-02-10 17:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: graphite.png -ha_category: History -ha_release: 0.13 ---- - -The `graphite` component records all events and state changes and feeds the data to a [graphite](http://graphite.wikidot.com/) instance. - -To enable this component, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -graphite: -``` - -Configuration variables: - -- **host** (*Option*): IP address of your graphite host, eg. http://192.168.1.10. Defaults to `localhost` -- **port** (*Optional*): Port to use. Defaults to 2003. -- **prefix** (*Optional*): Prefix is the metric prefix in graphite. Defaults to `ha`. - diff --git a/source/_components/group.markdown b/source/_components/group.markdown deleted file mode 100644 index 924c55e24a..0000000000 --- a/source/_components/group.markdown +++ /dev/null @@ -1,142 +0,0 @@ ---- -layout: page -title: "Group" -description: "Instructions on how to setup groups within Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Organization ---- - -Groups allow the user to combine multiple entities into one. A group can be promoted to a **view** by setting `view: yes` under the group definition. This will make the group available as a new tab in the frontend. - -Check the **Set State** page from the **Developer Tools** and browse the **Current entities:** listing for all available entities. - -By default, every group appears in the HOME tab. If you create a group `default_view` it will REPLACE the contents of the HOME tab so you can customize the HOME tab as you wish. - -```yaml -# Example configuration.yaml entry -group: - default_view: - view: yes - icon: mdi:home - entities: - - group.kitchen - - group.awesome_people - - group.climate - kitchen: - name: Kitchen - entities: - - switch.kitchen_pin_3 - upstairs: - name: Kids - icon: mdi:account-multiple - view: yes - entities: - - input_boolean.notify_home - - camera.demo_camera - - device_tracker.demo_paulus - - group.garden - climate: - name: Climate - view: no - entities: - - sensor.bedroom_temp - - sensor.porch_temp - awesome_people: - name: Awesome People - view: no - entities: - - device_tracker.dad_smith - - device_tracker.mom_smith -``` - -Configuration variables: - -- **view** (*Optional*): If yes then the entry will be shown as a view (tab) at the top. Groups that are set to `view: yes` cannot be used as entities in other views. -- **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 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. - -

    - -Example of groups shown as views in the frontend. -

    - -If all entities in a group are switches or lights then Home Assistant adds a switch at the top of the card that turns them all on/off at once. If you want to hide this switch, set `control` to `hidden`. - -You can create views (tabs) that contain other groups (but not other groups which are marked as `view: yes`). -Notice in the example below that in order to refer to the group "Living Room", you use `group.living_room` (lowercase and spaces replaced with underscores). - -```yaml -# Example configuration.yaml entry that shows two groups, referred to in a view group (tab) - Living Room: - control: hidden - entities: - - light.light_family_1 - - binary_sensor.motion_living - Bedroom: light.light_bedroom, switch.sleeping - Rooms: - view: yes - name: Rooms - entities: - - 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 behavior %} - -When any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. - -## {% linkable_title Customize group order %} -You can also order your groups using [customize](/docs/configuration/customizing-devices/) with `order: ` if they don't show up in the order you want them in. - -```yaml -# Example configuration.yaml to order groups with order: -customize: - group.all_automations: - order: 1 - group.all_scripts: - order: 2 -group: - automation_view: - name: Automation - view: yes - entities: - - group.all_automations - - group.all_scripts -``` diff --git a/source/_components/hdmi_cec.markdown b/source/_components/hdmi_cec.markdown deleted file mode 100644 index ceafd717c6..0000000000 --- a/source/_components/hdmi_cec.markdown +++ /dev/null @@ -1,249 +0,0 @@ ---- -layout: page -title: "HDMI CEC" -description: "Instructions on how to interact with HDMI CEC via Home Assistant." -date: 2016-06-24 19:59 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation -logo: hdmi.png -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 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 %} - -### {% linkable_title Adapter %} - -The computer running Home Assistant must support CEC, and of course be connected via HDMI to a device also supporting CEC. You can purchase a [USB CEC adapter](https://www.pulse-eight.com/p/104/usb-hdmi-cec-adapter) to add support if necessary. Note that all Raspberry Pi models support CEC natively. - -### {% linkable_title libcec %} - -[libcec](https://github.com/Pulse-Eight/libcec) must be installed for this component to work. Follow the installation instructions for your environment, provided at the link. `libcec` installs Python 3 bindings by default as a system Python module. If you are running Home Assistant in a [Python virtual environment](/getting-started/installation-virtualenv/), make sure it can access the system module, by either symlinking it or using the `--system-site-packages` flag. - -

    -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 including the _cec.so file. Keep in mind different installation methods will result in different locations of cec. - -```bash -$ ln -s /path/to/your/installation/of/cec /path/to/your/venv/lib/python*/site-packages -$ ln -s /path/to/your/installation/of/_cec.so /path/to/your/venv/lib/python*/site-packages - -``` - -##### {% linkable_title Symlinking examples: %} - -For the default virtual environment of a [HASSbian Image for Raspberry Pi](/getting-started/installation-raspberry-pi-image/) the command would be as follows. - -```bash -$ ln -s /usr/local/lib/python*/dist-packages/cec /srv/homeassistant/lib/python*/site-packages -$ ln -s /usr/local/lib/python*/dist-packages/_cec.so /srv/homeassistant/lib/python*/site-packages - -``` - -

    If after symlinking and adding `hdmi_cec:` to your configuration you are getting the following error in your logs, -`* failed to open vchiq instance` you will also need to add the user account Home Assistant runs under, to the `video` group. To add the Home Assistant user account to the `video` group, run the following command. `$ usermod -a -G video ` -

    - -## {% linkable_title Testing your installation %} - -* Login to Raspberry Pi - -```bash -ssh pi@your_raspberry_pi_ip -``` - -* at the command line type: - -```bash -echo scan | cec-client -s -d 1 -``` - -* This will give you the list of devices that are on the bus - -```bash -opening a connection to the CEC adapter... -requesting CEC bus information ... -CEC bus information -=================== -device #4: Playback 1 -address: 3.0.0.0 -active source: no -vendor: Sony -osd string: BD -CEC version: 1.4 -power status: on -language: ??? -``` - -

    `address:` entry above this will be used to configure Home Assistant, this address is represented below as 3: BlueRay player. -

    - -## {% linkable_title Configuration Example %} - -In the following example, a Pi Zero running Home Assistant is on a TV's HDMI port 1. HDMI port 2 is attached to a AV receiver. Three devices are attached to the AV receiver on HDMI ports 1 through 3. - -You can use either direct mapping name to physical address of device - -```yaml -hdmi_cec: - devices: - TV: 0.0.0.0 - Pi Zero: 1.0.0.0 - Fire TV Stick: 2.1.0.0 - Chromecast: 2.2.0.0 - Another Device: 2.3.0.0 - BlueRay player: 3.0.0.0 -``` - -or port mapping tree: - -```yaml -hdmi_cec: - devices: - 1: Pi Zero - 2: - 1: Fire TV Stick - 2: Chromecast - 3: Another Device - 3: BlueRay player -``` - -Choose just one schema. Mixing both approaches is not possible. - -Another option you can use in config is `platform` which specifying of default platform of HDMI devices. "switch" and "media_player" are supported. Switch is default. - -```yaml -hdmi_cec: - platform: media_player -``` - -Then you set individual platform for devices in customizations: - -```yaml -hdmi_cec: - types: - hdmi_cec.hdmi_5: media_player -``` - -And the last option is `host`. PyCEC supports bridging CEC commands over TCP. When you start pyCEC on machine with HDMI port (`python -m pycec`), you can then run homeassistant on another machine and connect to CEC over TCP. Specify TCP address of pyCEC server: - -```yaml -hdmi_cec: - host: 192.168.1.3 -``` - - -## {% linkable_title Services %} - -### {% linkable_title Select Device %} - -Call the `hdmi_cec.select_device` service with the name of the device from config or entity_id or physical address"to select it, for example: - -```json -{"device": "Chromecast"} -``` - -```json -{"device": "switch.hdmi_3"} -``` - -```json -{"device": "1.1.0.0"} -``` - -So an Automation action using the example above would look something like this. - -```yaml -action: - service: hdmi_cec.select_device - data: - device: Chromecast -``` - -### {% linkable_title Power On %} - -Call the `hdmi_cec.power_on` service (no arguments) to power on any devices that support this function. - -An Automation action using the example above would look something like this. - -```yaml -action: - service: hdmi_cec.power_on -``` - -### {% linkable_title Standby %} - -Call the `hdmi_cec.standby` service (no arguments) to place in standby any devices that support this function. - -An Automation action using the example above would look something like this. - -```yaml -action: - service: hdmi_cec.standby -``` - -### {% linkable_title Change volume level %} - -Call the `hdmi_cec.volume` service with one of following commands: - -#### {% linkable_title Volume up %} -Increase volume three times: - -```json -{"up": 3} -``` - -Keep increasing volume until release is called: - -```json -{"up": "press"} -``` - -Stop increasing volume: - -```json -{"up": "release"} -``` - -#### {% linkable_title Volume down %} -Decrease volume three times: - -```json -{"down": 3} -``` - -Keep decreasing volume until release is called: - -```json -{"down": "press"} -``` - -Stop decreasing volume: - -```json -{"down": "release"} -``` - -#### {% linkable_title Volume mute %} -Toggle mute: - -```json -{"mute": ""} -``` - -value is ignored. - - -## {% linkable_title Useful References %} - -* [CEC overview](http://wiki.kwikwai.com/index.php?title=The_HDMI-CEC_bus) -* [CEC-o-matic](http://www.cec-o-matic.com/) diff --git a/source/_components/history.markdown b/source/_components/history.markdown deleted file mode 100644 index 206678c510..0000000000 --- a/source/_components/history.markdown +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: page -title: "History" -description: "Instructions on how to enable history support for Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: History -ha_release: pre 0.7 ---- - - -The `history` component will track everything that is going on within Home Assistant and allows the user to browse through it. It depends on the `recorder` component for storing the data and uses the same database setting. If any entities are excluded from being recorded, no history will be available for these entities. - -To enable the history option in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Basic configuration.yaml entry -history: -``` - -

    - - - -

    - -

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

    - - -Configuration variables: - -- **exclude** (*Optional*): Configure which components should **not** be displayed. - - **entities** (*Optional*): The list of entity ids to be excluded from the history. - - **domains** (*Optional*): The list of domains to be excluded from the history. -- **include** (*Optional*): Configure which components should be displayed. - - **entities** (*Optional*): The list of entity ids to be included to the history. - - **domains** (*Optional*): The list of domains to be included to the history. - -Without any `include` or `exclude` configuration the history displays graphs for every entity (well that's not exactly true - for instance `hidden` entities or `scenes` are never shown) on a given date. If you are only interested in some of the entities you have several options: - -Define domains and entities to `exclude` (aka. blacklist). This is convenient when you are basically happy with the information displayed, but just want to remove some entities or domains. Usually these are entities/domains which do not change (like `weblink`) or rarely change (like `updater` or `automation`). - -```yaml -# Example configuration.yaml entry with exclude -history: - exclude: - domains: - - automation - - weblink - - updater - entities: - - sensor.last_boot - - sensor.date -``` - -Define domains and entities to display by using the `include` configuration (aka. whitelist). If you have a lot of entities in your system and your `exclude` list is getting too large, it might be better just to define the entities or domains to `include`. - -```yaml -# Example configuration.yaml entry with include -history: - include: - domains: - - sensor - - switch - - media_player -``` - -Use the `include` list to define the domains/entities to display, and exclude some of them within the `exclude` list. This makes sense if you, for instance, include the `sensor` domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the `include` `entities` list just include the `sensor` domain and exclude the sensor entities you are not interested in. Note that the order of any `include` `entities` will be displayed as listed in the configuration, otherwise, the display order is arbitrary. - -```yaml -# Example configuration.yaml entry with include and exclude -history: - include: - domains: - - sensor - - switch - - media_player - exclude: - entities: - - sensor.last_boot - - sensor.date -``` - -If you'd like the order of display of the sensors to follow the way -they are listed in the included entity list, you can set the flag -`use_include_order` to True. - -```yaml -# Example configuration.yaml entry using specified entity display order -history: - use_include_order: True - include: - entities: - - sun.sun - - light.front_porch -``` - - -#### {% linkable_title Implementation details %} - -The history is stored in a SQLite database `home-assistant_v2.db` within your configuration directory unless the `recorder` component is set up differently. - - - events table is all events except `time_changed` that happened while recorder component was running. - - states table contains all the `new_state` values of `state_changed` events. - - Inside the states table you have: - - `entity_id`: the entity_id of the entity - - `state`: the state of the entity - - `attributes`: JSON of the state attributes - - `last_changed`: timestamp last time the state has changed. A state_changed event can happen when just attributes change. - - `last_updated`: timestamp anything has changed (state, attributes) - - `created`: timestamp this entry was inserted into the database - -When the `history` component queries the states table it only selects states where the state has changed: `WHERE last_changed=last_updated` - -#### {% linkable_title On dates %} - -SQLite databases do not support native dates. That's why all the dates are saved in seconds since the UNIX epoch. Convert them manually using [this site](https://www.epochconverter.com/) or in Python: - -```python -from datetime import datetime -datetime.fromtimestamp(1422830502) -``` - -#### {% linkable_title API %} - -The history information is also available through the [RESTful API](/developers/rest_api/#get-apihistory). diff --git a/source/_components/history_graph.markdown b/source/_components/history_graph.markdown deleted file mode 100644 index f38cd48290..0000000000 --- a/source/_components/history_graph.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -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/hive.markdown b/source/_components/hive.markdown deleted file mode 100644 index 16f2a77ac4..0000000000 --- a/source/_components/hive.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Hive" -description: "Instructions on how to integrate Hive devices with Home Assistant." -date: 2017-09-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hive.png -ha_category: Hub -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `hive` component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating. - -This component uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive component in Home Assistant. - - - -To add your Hive devices into your Home Assistant installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -hive: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: Your username from [https://my.hivehome.com](https://my.hivehome.com). - required: true - type: string -password: - description: Your password from [https://my.hivehome.com](https://my.hivehome.com). - required: true - type: string -scan_interval: - description: The time in minutes between Hive API calls - required: false - type: int - default: 2 -{% endconfiguration %} - - -The Hive Home Assistant platform currently supports the following Hive devices: - -- Hive Active Heating (including hot water and Hive Multizone) -- Hive Active Light Dimmable -- Hive Active Light Cool to Warm White -- Hive Active Light Color Changing -- Hive Active Plug -- Hive Window or Door Sensor -- Hive Motion Sensor diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown deleted file mode 100644 index 7ab434c890..0000000000 --- a/source/_components/homekit.markdown +++ /dev/null @@ -1,241 +0,0 @@ ---- -layout: page -title: "HomeKit" -description: "Instructions on how to setup the HomeKit component in Home Assistant." -date: 2018-02-20 17:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Voice -ha_release: 0.64 -logo: apple-homekit.png ---- - -The `HomeKit` component allows you to forward entities from Home Assistant to Apple `HomeKit`, so they can be controlled from Apple's `Home` app and `Siri`. Please make sure that you have read the [considerations](#considerations) listed below to save you some trouble later. - -

    - It might be necessary to install an additional package: - `$ sudo apt-get install libavahi-compat-libdnssd-dev` -

    - -

    - If you are upgrading Home Assistant from `0.65.x` and have used the HomeKit component, some accessories may not respond or may behave unusually. To fix these problems, you will need to remove the Home Assistant Bridge from your Home, stop Home Assistant and delete the `.homekit.state` file in your configuration folder and follow the Homekit [setup](#setup) steps again. -

    - -{% configuration %} - homekit: - description: HomeKit configuration. - required: true - type: map - keys: - auto_start: - description: Flag if the HomeKit Server should start automatically after the Home Assistant Core Setup is done. ([Disable Auto Start](#disable-auto-start)) - required: false - type: boolean - default: true - port: - description: Port for the HomeKit extension. - required: false - type: int - default: 51827 - ip_address: - description: The local network IP address. Only necessary if the default from Home Assistant does not work. - required: false - type: string - filter: - description: Filter entities to available in the `Home` app. ([Configure Filter](#configure-filter)) - required: false - type: map - keys: - include_domains: - description: Domains to be included. - required: false - type: list - include_entities: - description: Entities to be included. - required: false - type: list - exclude_domains: - description: Domains to be excluded. - required: false - type: list - exclude_entities: - description: Entities to be excluded. - required: false - type: list - entity_config: - description: Configuration for specific entities. All subordinate keys are the corresponding entity ids to the domains, e.g. `alarm_control_panel.alarm`. - required: false - type: map - keys: - alarm_control_panel: - description: Additional options for `alarm_control_panel` entities. - required: false - type: map - keys: - code: - description: Code to arm or disarm the alarm in the frontend. - required: false - type: string - default: '' -{% endconfiguration %} - -

    - If you use Z-Wave, or `discovery:` you'll need to disable auto-start, see the [section below](#disable-auto-start) for details on how to do this. You'll then need to start the HomeKit component once Z-Wave is ready, or an appropriate delay to allow your entities to be discovered. -

    - -## {% linkable_title Setup %} - -To enable the `HomeKit` component in Home Assistant, add the following to your configuration file: - -```yaml -# Example for HomeKit setup -homekit: -``` - -After Home Assistant has started, the entities specified by the filter are exposed to `HomeKit` if they are [supported](#supported-components). To add them: -1. Open the Home Assistant frontend. A new card will display the `pin code`. -1. Open the `Home` app. -2. Choose `Add Accessory`, than select `Don't Have a Code or Can't Scan?` and enter the `pin code`. -4. Confirm the you are adding an `Uncertified Accessory` by clicking on `Add Anyway`. -5. Follow the setup be clicking on `Next` and lastly `Done` in the top right hand corner. -6. The `Home Assistant` Bridge and the Accessories should now be listed in the `Home` app. - -After the setup is completed you should be able to control your Home Assistant components through `Home` and `Siri`. - - -## {% linkable_title Considerations %} - - -### {% linkable_title Accessory ID %} - -Currently this component uses the `entity_id` to generate a unique `accessory id (aid)` for `HomeKit`. The `aid` is used to identify a device and save all configurations made for it. This however means that if you decide to change an `entity_id` all configurations for this accessory made in the `Home` app will be lost. - -### {% linkable_title Persistence Storage %} - -Unfortunately `HomeKit` doesn't support any kind of persistent storage - only the configuration for accessories that are added to the `Home Assistant Bridge` are kept. To avoid problems it is recommended to use an automation to always start `HomeKit` with at least the same entities setup. If for some reason some entities are not setup, their config will be deleted. (State unknown or similar will not cause any issues.) - -A common situation might be if you decide to disable parts of the configuration for testing. Please make sure to disable `auto start` and `turn off` the `Start HomeKit` automation (if you have one). - - -## {% linkable_title Disable Auto Start %} - -Depending on your individual setup, it might be necessary to disable `Auto Start` for all accessories to be available for `HomeKit`. Only those entities that are fully setup when the `HomeKit` component is started, can be added. To start `HomeKit` when `auto_start: False`, you can call the service `homekit.start`. - -If you have Z-Wave entities you want exposed to HomeKit then you'll need to disable auto start and then start it after the Z-Wave mesh is ready. This is because the Z-Wave entities won't be fully set up until then. This can be automated using an automation: - -{% raw %} -```yaml -# Example for Z-Wave -homekit: - auto_start: False - -automation: - - alias: 'Start HomeKit' - trigger: - - platform: event - event_type: zwave.network_ready - action: - - service: homekit.start -``` -{% endraw %} - -For a general delay where your component doesn't generate an event, you can also do: - -{% raw %} -```yaml -# Example using a delay after start of Home Assistant -homekit: - auto_start: False - -automation: - - alias: 'Start HomeKit' - trigger: - - platform: homeassistant - event: start - action: - - delay: 00:05 # Waits 5 minutes - - service: homekit.start -``` -{% endraw %} - - -## {% linkable_title Configure Filter %} - -By default no entity will be excluded. To limit which entities are being exposed to `HomeKit`, you can use the `filter` parameter. Keep in mind only [supported components](#supported-components) can be added. - -{% raw %} -```yaml -# Example filter to include specified domains and exclude specified entities -homekit: - filter: - include_domains: - - alarm_control_panel - - light - exclude_entities: - - light.kitchen_light -``` -{% endraw %} - -Filters are applied as follows: - -1. No includes or excludes - pass all entities -2. Includes, no excludes - only include specified entities -3. Excludes, no includes - only exclude specified entities -4. Both includes and excludes: - * Include domain specified - - if domain is included, and entity not excluded, pass - - if domain is not included, and entity not included, fail - * Exclude domain specified - - if domain is excluded, and entity not included, fail - - if domain is not excluded, and entity not excluded, pass - - if both include and exclude domains specified, the exclude domains are ignored - * Neither include or exclude domain specified - - if entity is included, pass (as #2 above) - - if entity include and exclude, the entity exclude is ignored - - -## {% linkable_title Supported Components %} - -The following components are currently supported: - -| Component | Type Name | Description | -| --------- | --------- | ----------- | -| alarm_control_panel | SecuritySystem | All security systems. | -| binary_sensor | Sensor | Support for `co2`, `door`, `garage_door`, `gas`, `moisture`, `motion`, `occupancy`, `opening`, `smoke` and `window` device classes. Defaults to the `occupancy` device class for everything else. | -| climate | Thermostat | All climate devices. | -| cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` as their `device_class`. | -| cover | WindowCovering | All covers that support `set_cover_position`. | -| cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) | -| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) | -| device_tracker | Sensor | Support for `occupancy` device class. | -| light | Light | Support for `on / off`, `brightness` and `rgb_color`. | -| lock | DoorLock | Support for `lock / unlock`. | -| sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. | -| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. | -| sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | -| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` | -| sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | -| switch / remote / input_boolean / script | Switch | All represented as switches. | - - -## {% linkable_title Error reporting %} - -If you encounter any issues or bug and want to report them on `GitHub`, please follow these steps to make it easier for others to help and get your issue solved. - -1. Enable debugging mode: -```yaml -logger: - default: warning - logs: - homeassistant.components.homekit: debug - pyhap: debug -``` -2. Reproduce the bug / problem you have encountered. -3. Stop Home Assistant and copy the log from the log file. That is necessary since some errors only get logged, when Home Assistant is being shutdown. -4. Follow this link: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component: homekit) and open a new issue. -5. Fill out all fields and especially include the following information: - - The configuration entries for `homekit` and the `component` that is causing the issue. - - The log / traceback you have generated before. - - Screenshots of the failing entity in the `states` panel. diff --git a/source/_components/homekit_controller.markdown b/source/_components/homekit_controller.markdown deleted file mode 100644 index 910c07e036..0000000000 --- a/source/_components/homekit_controller.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "HomeKit controller support" -description: "Instructions how to integrate your HomeKit devices within Home Assistant." -date: 2018-03-19 21:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: apple-homekit.png -ha_category: Hub -ha_release: 0.68 -ha_iot_class: "Local Polling" ---- - -[HomeKit](https://developer.apple.com/homekit/) controller integration for Home Assistant allows you to connect HomeKit accessories to Home Assistant. This component should not be confused with the [HomeKit](/components/homekit/) component, which allows you to control Home Assistant devices via HomeKit. - -

    - You may need additional packages to support the HomeKit Python module: - `$ sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev` -

    - -There is currently support for the following device types within Home Assistant: - -- [Light](/components/light.homekit_controller/) -- [Switch](/components/switch.homekit_controller/) - -The component will be automatically configured if the [`discovery:`](/components/discovery/) component is enabled and an enable entry added for HomeKit: - -```yaml -discovery: - enable: - - homekit -``` - -For each detected HomeKit accessory, a configuration prompt will appear in the web front end. Use this to provide the HomeKit PIN. Note that HomeKit accessories can only be paired to one device at once. If your device is currently paired with Siri, you will need to reset it in order to pair it with Home Assistant. Once Home Assistant is configured to work with the device, you can export it back to Siri with the [`HomeKit`](/components/homekit/) component. diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown deleted file mode 100644 index 5deaa8311a..0000000000 --- a/source/_components/homematic.markdown +++ /dev/null @@ -1,257 +0,0 @@ ---- -layout: page -title: "Homematic" -description: "Instructions for integrating Homematic into Home Assistant." -date: 2018-02-13 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Hub -ha_iot_class: "Local Push" -featured: false ---- - -The [Homematic](http://www.homematic.com/) component provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. -If you are using Homegear with paired [Intertechno](http://intertechno.at/) devices, uni-directional communication is possible as well. - -Device support is available for most of the wired and wireless devices, as well as a few IP devices. If you have a setup with mixed protocols, you have to configure additional hosts with the appropriate ports. The default is using port 2001, which are wireless devices. Wired devices usually are available through port 2000 and IP devices through port 2010. The virtual thermostatgroups the CCU provides use port 9292 **and** require you to set the `path` setting to `/groups`. - -If you want to see if a specific device you have is supported, head over to the [pyhomematic](https://github.com/danielperna84/pyhomematic/tree/master/pyhomematic/devicetypes) repository and browse through the source code. A dictionary with the device identifiers (e.g., HM-Sec-SC-2) can be found within the relevant modules near the bottom. If your device is not supported, feel free to contribute. - -We automatically detect all devices we currently support and try to generate useful names. If you enable name-resolving, we try to fetch names from Metadata (Homegear), via JSON-RPC or the XML-API you may have installed on your CCU. Since this may fail this is disabled by default. -You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. With it you are also able to hide entities you don't want to see in the UI. - -To set up the component, add the following information to your `configuration.yaml` file: - -```yaml -homematic: - interfaces: - wireless: - host: 127.0.0.1 -``` - -Configuration variables (global): - -- **interfaces** (*Required*): Configuration for each XML-RPC interface to integrate into Home Assistant. -- **hosts** (*Optional*): Configuration for each Hub (CCU/Homegear) to integrate into Home Assistant. -- **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. - -Configuration variables (interface): - -- **host** (*Required*): IP address or Hostname of CCU/Homegear device or Hass.io add-on. -- **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. -- **username** (*Optional*): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. -- **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. -- **path** (*Optional*): Set to `/groups` when using port 9292. - -Configuration variables (host): - -- **host** (*Required*): IP address of CCU/Homegear device. -- **username** (*Optional*): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. -- **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. - -#### Example configuration with multiple protocols and some other options set: - -```yaml -homematic: - interfaces: - rf: - host: 127.0.0.1 - resolvenames: json - username: Admin - password: secret - primary: true - variables: true - wired: - host: 127.0.0.1 - port: 2000 - resolvenames: json - username: Admin - password: secret - ip: - host: 127.0.0.1 - port: 2010 - groups: - host: 127.0.0.1 - port: 9292 - resolvenames: json - username: Admin - password: secret - path: /groups - hosts: - ccu2: - host: 127.0.0.1 - username: Admin - password: secret - -``` - -### {% linkable_title The `resolvenames` option %} - -We use three approaches to fetch the names of devices. Each assumes you have properly named your devices in your existing Homematic setup. As a general advice: Use ASCII for your devices names. Home Assistant won't include non-ASCII characters in entity-names. - -1. `json`: The CCU allows to fetch details of the paired devices via JSON-RPC. For this to work you need to add valid credentials to your component-configuration. Guest-access is sufficient to query for device names. -2. `xml`: If you use a CCU, there is an add-on called the "XML-API". With it installed, you are able to fetch all kinds of information from you CCU using XML-RPC. We can leverage this and fetch the names of devices set within the CCU. We don't support authentication with this method. -3. `metadata`: Homegear provides device-names through the metadata devices internally have. When using an HM-CFG-LAN interface, you typically use a configuration software ("HomeMatic-Komponenten konfigurieren" is the name of the shortcut on your desktop by default) to pair and configure your devices. If you have paired devices, you'll see them listed in a table. The leftmost column (Name) is prefilled with default names. You can click such a name and enter whatever you like. - -Resolving names can take some time. So when you start Home Assistant you won't see you devices at first. For a setup with 20+ devices it can take up to a minute until all devices show up in the UI. - -### {% linkable_title Multiple hosts %} - -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 entities in Home Assistant. They all use their own connection and work as expected. - -### {% linkable_title Reading attributes of entities %} - -Most devices have, besides their state, additional attributes like their battery state or valve position. These can be accessed using templates in automations, or even as their own entities using the [template sensor](/components/sensor.template/) component. Here's an example of a template sensor that exposes the valve state of a thermostat. - -```yaml -sensor: -- platform: template - sensors: - bedroom_valve: - value_template: '{% raw %}{{ states.climate.leq123456.attributes.Valve }}{% endraw %}' - entity_id: climate.leq123456 - friendly_name: 'Bedroom valve' -``` - -### {% linkable_title Variables %} - -It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. -The states of the variables are available through the attributes of your hub entity (e.g., `homematic.ccu2`). Use templates (as mentioned above) to make your variables available to automations or as entities. -The values of variables are polled from the CCU/Homegear in an interval of 30 seconds. Setting the value of a variable happens instantly and is directly pushed. - -### {% linkable_title Events %} - -When HomeMatic devices change their state or some other internal value, the CCU/Homegear sends event messages to Home Assistant. These events are automatically parsed and the entities in Home Assistant are updated. However, you can also manually use these events to trigger automations. Two event-types are available: - -* **homematic.keypress**: For devices with buttons, see information below -* **homematic.impulse**: For impulse sensors - -#### {% linkable_title Devices with buttons %} - -Devices with buttons (e.g., HM-Sen-MDIR-WM55, remote controls) may not be fully visible in the UI. This is intended, as buttons don't serve any value here and all they do is trigger events. -As an example: -The HM-Sen-MDIR-WM55 motion detector will be displayed as 2 entities. A motion sensor and a brightness sensor. On top of that we have 2 sets (one set per button) of 4 events: PRESS_SHORT, PRESS_LONG, PRESS_CONT, PRESS_LONG_RELEASE. Be aware, that there are devices which don't provide all of these events. But in general: if you can press it, it usually at least has PRESS_SHORT. - -Here's an example of how to use these events for automations: - -```yaml -automation: - trigger: - platform: event - event_type: homematic.keypress - event_data: - name: Kitchen Switch - channel: 1 - param: PRESS_SHORT - action: - service: switch.turn_on - entity_id: switch.Kitchen_Ambience -``` - -The channel parameter is equal to the channel of the button you are configuring the automation for. You can view the available channels in the UI you use to pair your devices. -The name depends on if you chose to resolve names or not. If not, it will be the device ID (e.g., LEQ1234657). If you chose to resolve names (and that is successful), it will be the name you have set in your CCU or in the metadata (e.g., "Kitchen Switch"). - -You can test whether your button works within Home Assistant if you look at the terminal output. When pressing a button, lines similar to those should appear: - -```bash -2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=PRESS_SHORT, value=True -2018-01-27 11:51:32 INFO (MainThread) [homeassistant.core] Bus:Handling -2018-01-27 11:51:32 INFO (Thread-12) [pyhomematic.devicetypes.generic] HMGeneric.event: address=MEQ1234567:6, interface_id=homeassistant-CCU2, key=INSTALL_TEST, value=True -``` - -It may happen that "your_nice_name" is not resolved correctly; the according message (#2 in the above example) will be missing. This might be due to secure communication between your HM interface and the HM device. You can change the communication from "secure" to "standard" within your HM-interface to solve that issue (in "Einstellungen" - "Geräte" find your device and change "Übertragungsmodus" from secure to standard) - not recommended for devices that should have secure communication. - -### {% linkable_title Services %} - -* *homematic.virtualkey*: Simulate a keypress (or other valid action) on CCU/Homegear with device or virtual keys. -* *homematic.reconnect*: Reconnect to CCU/Homegear without restarting Home Assistant (useful when CCU has been restarted) -* *homematic.set_variable_value*: Set the value of a system variable. -* *homematic.set_device_value*: Control a device manually (even devices without support). Equivalent to setValue-method from XML-RPC. - -#### {% linkable_title Examples %} -Simulate a button being pressed -```yaml -... -action: - service: homematic.virtualkey - data: - address: BidCoS-RF - channel: 1 - param: PRESS_LONG -``` - -Open KeyMatic -```yaml -... -action: - service: homematic.virtualkey - data: - address: LEQ1234567 - channel: 1 - param: OPEN -``` - -Set boolean variable to true -```yaml -... -action: - service: homematic.set_variable_value - data: - entity_id: homematic.ccu2 - name: Variablename - value: true -``` - -#### {% linkable_title Advanced examples %} - -If you are familiar with the internals of HomeMatic devices, you can manually set values on the devices. This can serve as a workaround if support for a device is currently not available, or only limited functionality has been implemented. -Using this service provides you direct access to the setValue-method of the primary connection. If you have multiple hosts, you may select the one hosting a specific device by providing the proxy-parameter with a value equivalent to the name you have chosen. In the example configuration from above `rf`, `wired` and `ip` would be valid values. - -Manually turn on a switch actor -```yaml -... -action: - service: homematic.set_device_value - data: - address: LEQ1234567 - channel: 1 - param: STATE - value: true -``` - -Manually set temperature on thermostat -```yaml -... -action: - service: homematic.set_device_value - data: - address: LEQ1234567 - channel: 4 - param: SET_TEMPERATURE - value: 23.0 -``` - -Manually set lock on KeyMatic devices -```yaml -... -action: - service: lock.lock - entity_id: lock.leq1234567 -``` - -Manually set unlock on KeyMatic devices -```yaml -... -action: - service: lock.unlock - entity_id: lock.leq1234567 -``` diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown deleted file mode 100644 index c2f5320aa7..0000000000 --- a/source/_components/homematicip_cloud.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "HomematicIP Cloud" -description: "Instructions for integrating HomematicIP into Home Assistant." -date: 2018-04-02 13:40 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_iot_class: "Cloud Polling" -ha_release: 0.66 -featured: false ---- - -The [HomematicIP](http://www.homematic-ip.com) component platform is used as an interface to the cloud server. -For for communication [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used. - -To set up the component: - -- generate the authentication token: -```yaml -generate_auth_token.py -``` - -- add the information to your `configuration.yaml` file: - -```yaml -homematicip_cloud: - - name: NAME - accesspoint: IDENTIFIER - authtoken: AUTHTOKEN -``` - -Configuration variables (global): - -- **name** (*Optional*): Name to identify your access point, this will be - used to prefix your device names. -- **accesspoint** (*Required*): This is the access point id (SGTIN) -- **authtoken** (*Required*): Authentification token generated with -`generate_auth_token.py`. - diff --git a/source/_components/http.markdown b/source/_components/http.markdown deleted file mode 100644 index 8fddcfd5d9..0000000000 --- a/source/_components/http.markdown +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: page -title: "HTTP" -description: "Offers a web framework to serve files." -date: 2015-12-06 21:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: http.png -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 is HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet. -

    - -

    -Don't use option `server_host` on a hass.io installation! -

    - -```yaml -# Example configuration.yaml entry -http: - api_password: YOUR_PASSWORD -``` - -Configuration variables: - -- **api_password** (*Optional*): Protect Home Assistant with a password. -- **server_host** (*Optional*): Only listen to incoming requests on specific IP/host (default: bind to `0.0.0.0` which means accept all IPv4 connections). Use `server_host: "::0"` if you want to listen to (and only) IPv6. -- **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 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://www.home-assistant.io` will allow requests from `https://www.home-assistant.io` but __not__ `http://www.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. -- **ip_ban_enabled** (*Optional*): Flag indicating whether additional IP filtering is enabled. Defaults to False. -- **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: - -```yaml -# Example configuration.yaml entry -http: - api_password: YOUR_PASSWORD - server_port: 12345 - ssl_certificate: /etc/letsencrypt/live/hass.example.com/fullchain.pem - ssl_key: /etc/letsencrypt/live/hass.example.com/privkey.pem - cors_allowed_origins: - - https://google.com - - https://www.home-assistant.io - use_x_forwarded_for: True - trusted_networks: - - 127.0.0.1 - - ::1 - - 192.168.0.0/24 - - 2001:DB8:ABCD::/48 - ip_ban_enabled: True - login_attempts_threshold: 5 -``` - -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/), [Python API](/developers/python_api/) and [WebSocket API](/developers/websocket_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. - -To use those kind of [sensors](/components/sensor.http/) or [binary sensors](components/binary_sensor.http/) in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. - -All [requests](/developers/rest_api/#post-apistatesltentity_id) need to be sent to the endpoint of the device and must be **POST**. - -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: - banned_at: '2016-11-16T19:20:03' -``` - -After a ban is added a Persistent Notification is populated to the Home Assistant frontend. - -

    -Please note, that sources from `trusted_networks` won't be banned automatically. -

    - -## {% linkable_title Hosting files %} - -If you want to use Home Assistant to host or serve static files then create a directory called `www` under the configuration path (`/config` on Hass.io, `.homeassistant` elsewhere). The static files in `www/` can be accessed by the following URL `http://your.domain:8123/local/`, for example `audio.mp3` would be accessed as `http://your.domain:8123/local/audio.mp3`. - -

    - If you've had to create the `www/` folder for the first time, you'll need to restart Home Assistant. -

    diff --git a/source/_components/hue.markdown b/source/_components/hue.markdown deleted file mode 100644 index f172c6b0ff..0000000000 --- a/source/_components/hue.markdown +++ /dev/null @@ -1,152 +0,0 @@ ---- -layout: page -title: "Philips Hue" -description: "Instructions on setting up Philips Hue within Home Assistant." -date: 2017-11-29 23:51 -sidebar: true -comments: false -sharing: true -footer: true -logo: philips_hue.png -ha_category: Hub -ha_iot_class: "Local Polling" -featured: true -ha_release: "0.60" ---- - -Philips Hue support is integrated into Home Assistant as a Hub that can drive the 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`. - -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 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. - -Once registration is complete you should see the Hue lights listed as "light" entities; if you don't you may have to restart Home Assistant once more. 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 -hue: - bridges: - - host: DEVICE_IP_ADDRESS -``` - -Configuration variables: - -- **host**: 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_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. - -```yaml -# Example configuration.yaml entry specifying optional parameters -hue: - bridges: - - host: DEVICE_IP_ADDRESS - allow_unreachable: true - allow_hue_groups: true -``` - -### {% linkable_title Migrating from older configuration %} - -In previous versions of the Hue component the configuration looked different: - -```yaml -# Example configuration.yaml entry -light: - - platform: hue - host: DEVICE_IP_ADDRESS -``` - -You will need to convert each bridge into an entry in the new configuration style. See above for an example. - -### {% linkable_title Multiple Hue bridges %} - -Multiple Hue bridges work transparently with discovery, you don't have to do anything. If you prefer to configure them manually and 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 -hue: - bridges: - - host: BRIDGE1_IP_ADDRESS - filename: phue.conf - - 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 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 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`. - -Example: - -To create a `LightGroup` named `Ceiling lights` that contains the lights 1, 2 and 3, execute the following command: - -```bash -$ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http:///api//groups -``` - -The `` is the string that is used to register Home Assistant on the bridge, you can find it in the `phue.conf` file in your configuration path. `` is the IP address or hostname of your Hue bridge. - -You can find out the ids of your lights by executing the following command: - -```bash -$ curl http:///api//lights -``` - -Home Assistant will automatically detect your new `LightGroup` and add it to the interface. - -

    - To support Hue Light Groups, your bridge needs to have at least firmware 1.13 (released on June 3, 2016). -

    - -More information can be found on the [Philips Hue API documentation](https://www.developers.meethue.com/documentation/groups-api#22_create_group) website. - - -### {% linkable_title Using Hue Scenes in Home Assistant %} - -The Hue platform has its 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 hue.hue_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 -script: - porch_on: - sequence: - - service: hue.hue_activate_scene - data: - group_name: "Porch" - scene_name: "Porch Orange" -``` - -| 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. - -*Note*: `group_name` is not linked to Home Assistant group name. - -### {% linkable_title Finding Group and Scene Names %} - -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. - -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. - -### {% linkable_title 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. - -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 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/ifttt.manything.markdown b/source/_components/ifttt.manything.markdown deleted file mode 100644 index 84d0228bc1..0000000000 --- a/source/_components/ifttt.manything.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "ManyThing" -description: "Instructions on how to setup ManyThing support with IFTTT." -date: 2015-09-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -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. - -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. - -After setting up IFTTT, Maker Channel and ManyThing Channel, you can use the following examples to configure Home Assistant. - -```yaml -# Example configuration.yaml entry -automation: - - alias: 'ManyThing Recording ON' - # This calls an IFTTT recipe to turn on recording of the ManyThing Camera - # if we leave the house during the day. - trigger: - - platform: state - entity_id: group.all_devices - to: 'not_home' - condition: - - platform: state - entity_id: sun.sun - state: 'above_horizon' - action: - service: ifttt.trigger - data: {"event":"manything_on"} - - - alias: 'ManyThing Recording OFF' - # This calls an IFTTT recipe to turn off recording of the ManyThing Camera - # when we get home unless it's nighttime. - trigger: - - platform: state - entity_id: group.all_devices - to: 'home' - condition: - - condition: state - entity_id: sun.sun - state: 'above_horizon' - action: - service: ifttt.trigger - data: {"event":"manything_off"} -``` - -### {% linkable_title Setting up a recipe %} - -

    - -You need to setup a unique trigger for each event you sent to IFTTT. -For ManyThing support, you need to set up an `on` and `off` event. -

    - -### {% 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 UI, 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 ------ | ----- -domain | `ifttt` -service | `trigger` -Service Data | `{"event": "manything_on"}` - diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown deleted file mode 100644 index 9f48303946..0000000000 --- a/source/_components/ifttt.markdown +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: page -title: "IFTTT" -description: "Instructions on how to setup IFTTT within Home Assistant." -date: 2015-09-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ifttt.png -ha_category: Automation -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 **"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: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -``` - -`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**. - - -

    - -Property screen of the Maker Channel -

    - -Once you have added your key to your `configuration.yaml` file, restart your Home Assistant server. This will load up the IFTTT component and make a service available to trigger events in IFTTT. - -

    -After restarting the server, be sure to watch the console for any logging errors that show up in red, white or yellow. -

    - -### {% linkable_title Testing your trigger %} - -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 ------ | ----- -domain | `ifttt` -service | `trigger` -Service Data | `{"event": "EventName", "value1": "Hello World"}` - -

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

    - -Choose "Webhooks" as service. -

    - -

    - -You need to setup a unique trigger for each event you sent to IFTTT. -

    - -{% raw %} -```yaml -# Example configuration.yaml Automation entry -automation: - alias: Startup Notification - trigger: - platform: homeassistant - event: start - action: - service: ifttt.trigger - data: {"event":"TestHA_Trigger", "value1":"Hello World!"} -``` -{% endraw %} - -IFTTT can also be used in scripts and with `data_template`. Here is the above automation broken into an automation and script using variables and data_templates. - -{% raw %} -```yaml -# Example configuration.yaml Automation entry -automation: - alias: Startup Notification - trigger: - platform: homeassistant - event: start - action: - service: script.ifttt_notify - data_template: - value1: 'HA Status:' - value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is " - value3: "{{ trigger.event.data.to_state.state }}" -``` -{% endraw %} - -{% raw %} -```yaml -#Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP). -ifttt_notify: - sequence: - - service: ifttt.trigger - data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"} -``` -{% endraw %} - -### {% linkable_title Sending events from IFTTT to Home Assistant %} - -To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web. This can be achieved by forwarding port 8123 from your router to the device running Home Assistant. If your ISP is giving you a new IP address from time to time, consider using [DuckDNS](https://duckdns.org). - -In the URL field, you can then put an [API URL](/developers/rest_api/). You probably want to use a POST action, so select `POST` as method. After your request line, you need to add your Home Assistant password, which you defined in the [http section of your config](/getting-started/basic/#password-protecting-the-web-interface), in the form of `?api_password=YOUR_PASSWORD`. For the message body, refer to the API page linked above. - -

    - -

    - -### {% linkable_title Additional Channel Examples %} - -Additional examples of using IFTTT channels can be found below. - -Channel | Description ------ | ----- -[Manything](/components/ifttt.manything/) | Automates turning recording ON and OFF based on Home Assistant AWAY and HOME values. diff --git a/source/_components/ihc.markdown b/source/_components/ihc.markdown deleted file mode 100644 index 0030d30361..0000000000 --- a/source/_components/ihc.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: page -title: "IHC" -description: "Instructions on how to integrate the IHC components with Home Assistant" -date: 2017-11-11 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ihc.png -ha_category: Hub -ha_release: "0.62" -ha_iot_class: "Local Push" ---- - -IHC Controller integration for Home Assistant allows you to connect the LK IHC controller to Home Assistant. -(The controller is sold under other names in different countries - "ELKO Living system" in Sweden and Norway) - -An `ihc` section must be present in the `configuration.yaml` file and contain the following options: - -```yaml -# Example configuration.yaml entry -ihc: - url: http://192.168.1.3 - username: admin - password: mysecret - auto_setup: True - info: True -``` - -{% configuration %} -auto_setup: - description: True to have IHC products auto setup. - required: false - type: bool -info: - description: If True additional IHC info will be shown on each component. - required: false - type: bool -password: - description: The password for the IHC Controller. - required: true - type: string -url: - description: The URL of the IHC Controller. - required: true - type: string -username: - description: The username for the IHC Controller. - required: true - type: string -{% endconfiguration %} - -The info option will show the IHC "name", "note" and "position" attributes. -This will make it easier to identify the IHC products within Home Assistant - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](/components/binary_sensor.ihc/) -- [Sensor](/components/sensor.ihc/) -- [Light](/components/light.ihc/) -- [Switch](/components/switch.ihc/) - -### Auto setup of IHC products - -If the auto setup is enabled, the `ihc` component will automatically find IHC products and insert these as devices in Home Assistant. -To disable this set auto_setup to False. (Auto setup is on by default) -See the individual device types for a list of IHC products to be recognized automatically. - -Components will get a default name that is a combination of the IHC group and IHC resource id. -If you want to change the display names use the [Customizing entities](/docs/configuration/customizing-devices/) - -### {% linkable_title Manual setup %} - -Each device is associated with an IHC resource id. -To manually setup components you specify resource ids from the IHC project. -(The IHC project is the file you edit/upload to the IHC Controller using LK IHC Visual - or similar program if your controller is not the LK brand). -The project file is an XML file and you can view it with any text/XML editor. -You can rename it to have the XML extension and use a browser like Chrome or Internet Explorer. -The resources are the \ or \ eleements. -Shown as inputs or outputs of products in the IHC application. -You can also use inputs and outputs from function blocks. -These are the \ and \ elements from the project file. - -The IHC resource id should be specified as an integer value. (In the project file the id will be specified as a hex number) - -If you want an easier way to get the IHC resource ids, you can download the [Alternative Service View application](https://www.dingus.dk/updated-ihc-alternative-service-view/). -The application will show the product tree. You can expand it, select inputs and outputs and when selected you can see the resource id. - -See the manual of each device type for configuration options. diff --git a/source/_components/image_processing.dlib_face_detect.markdown b/source/_components/image_processing.dlib_face_detect.markdown deleted file mode 100644 index f427590256..0000000000 --- a/source/_components/image_processing.dlib_face_detect.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Dlib Face Detect" -description: "Instructions on how to integrate Dlib Face Detect into Home Assistant." -date: 2017-05-05 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dlib.png -ha_category: Image Processing -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 face detection from cameras, and can fire events with attributes. - -This can be used to trigger an automation rule. Further info is on the [component](/components/image_processing/) page. - -### {% linkable_title Configuration Home Assistant %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: dlib_face_detect - source: - - entity_id: camera.door -``` - -Configuration variables: - -- **source** array (*Required*): List of image sources. - - **entity_id** (*Required*): A camera entity id to get picture from. - - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. diff --git a/source/_components/image_processing.dlib_face_identify.markdown b/source/_components/image_processing.dlib_face_identify.markdown deleted file mode 100644 index 34690d6b8f..0000000000 --- a/source/_components/image_processing.dlib_face_identify.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Dlib Face Identify" -description: "Instructions on how to integrate Dlib Face Identify into Home Assistant." -date: 2017-01-25 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dlib.png -ha_category: Image Processing -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 to identify persons on camera and fire an event with identify persons. - -For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. - -### {% linkable_title Configuration Home Assistant %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: dlib_face_identify - source: - - entity_id: camera.door - faces: - Jon: /home/hass/jon.jpg - Bob: /home/hass/bob.jpg -``` - -Configuration variables: - -- **source** array (*Required*): List of image sources. - - **entity_id** (*Required*): A camera entity id to get picture from. - - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. -- **faces** array (*Required*): List of faces sources. - -

    -If the platform fails to load because it could not install its requirement, install cmake: `sudo apt-get install cmake`. -

    diff --git a/source/_components/image_processing.markdown b/source/_components/image_processing.markdown deleted file mode 100644 index 1f1507bf28..0000000000 --- a/source/_components/image_processing.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "Image Processing" -description: "Instructions on how to setup image processing with Home Assistant." -date: 2017-01-09 00:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.36 ---- - -Image processing enables Home Assistant to process images from [cameras](/components/#camera). Only camera entities are supported as sources. - -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 (`base_url`) inside the [http component](/components/http/). -

    - -## {% linkable_title ALPR %} - -Alpr entities attribute have a vehicle counter `vehicles` and all found plates as `plates`. - -This event is trigger after OpenALPR found a new license plate. - -```yaml -# Example configuration.yaml automation entry -automation: -- alias: Open garage door - trigger: - platform: event - event_type: image_processing.found_plate - event_data: - entity_id: openalpr.camera_garage_1 - plate: BE2183423 -... -``` - -The following event attributes will be present (platform-dependent): `entity_id`, `plate`, `confidence` - -## {% linkable_title Face %} - -Face entities attribute have a face counter `total_faces` and all face data as `faces`. - -This event is trigger after Microsoft Face found a faces. - -```yaml -# Example configuration.yaml automation entry -automation: -- alias: Known person in front of my door - trigger: - platform: event - event_type: image_processing.detect_face - event_data: - entity_id: image_processing.door - name: 'Hans Maier' -... -``` - -The following event attributes will be present (platform-dependent): `entity_id`, `name`, `confidence`, `age`, `gender`, `motion`, `glasses` diff --git a/source/_components/image_processing.microsoft_face_detect.markdown b/source/_components/image_processing.microsoft_face_detect.markdown deleted file mode 100644 index 06cca72d26..0000000000 --- a/source/_components/image_processing.microsoft_face_detect.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Microsoft Face Detect" -description: "Instructions on how to integrate Microsoft Face Detect into Home Assistant." -date: 2017-01-25 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: microsoft.png -ha_category: Image Processing -featured: false -ha_release: 0.38 ---- - -The `microsoft_face_detect` image processing platform allows you to use the [Microsoft Face Identify](https://www.microsoft.com/cognitive-services/en-us/) API through Home Assistant. This platform enables you do detect face on camera and fire an event with attributes. - -Please refer to the [component](/components/microsoft_face/) configuration on how to setup the API key. - -For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. - -### {% linkable_title Configuration Home Assistant %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: microsoft_face_detect - source: - - entity_id: camera.door -``` - -Configuration variables: - -- **confidence** (*Optional*): The minimum of confidence in percent to process with Home Assistant. Defaults to 80. -- **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. -- **attributes** array (*Optional*): The image search attributes. Supported: `age`, `gender`, `glasses`. Default `age`, `gender`. diff --git a/source/_components/image_processing.microsoft_face_identify.markdown b/source/_components/image_processing.microsoft_face_identify.markdown deleted file mode 100644 index eb6d0a110f..0000000000 --- a/source/_components/image_processing.microsoft_face_identify.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Microsoft Face Identify" -description: "Instructions on how to integrate Microsoft Face Identify into Home Assistant." -date: 2017-01-25 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: microsoft.png -ha_category: Image Processing -featured: false -ha_release: 0.37 ---- - -The `microsoft_face_identify` image processing platform lets you use [Microsoft Face identify](https://www.microsoft.com/cognitive-services/en-us/) API through Home Assistant. This platform allow you do identify persons on camera and fire an event with attributes. - -Please refer to the [component](/components/microsoft_face/) configuration on how to setup the API key. - -For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. - -### {% linkable_title Configuration Home Assistant %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: microsoft_face_identify - group: family - source: - - entity_id: camera.door -``` - -Configuration variables: - -- **group** (*Required*): Micrsoft face group to detect person from it. -- **confidence** (*Optional*): The minimum of confidence in percent to process with Home Assistant. Defaults to 80. -- **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. diff --git a/source/_components/image_processing.openalpr_cloud.markdown b/source/_components/image_processing.openalpr_cloud.markdown deleted file mode 100644 index 96e180a705..0000000000 --- a/source/_components/image_processing.openalpr_cloud.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "OpenALPR Cloud" -description: "Instructions on how to integrate licences plates with OpenALPR cloud into Home Assistant." -date: 2017-01-09 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: openalpr.png -ha_category: Image Processing -featured: false -ha_release: 0.36 ---- - -[OpenALPR](http://www.openalpr.com/) integration for Home Assistant allows you to process licences plates from a camera. You can use them to open a garage door or trigger any other [automation](/components/automation/). - -For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. - -### {% linkable_title Configuration Home Assistant %} - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: openalpr_cloud - api_key: 'sk_abcxyz123456' - region: eu - 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). -- **api_key** (*Required*): You need an API key from [OpenALPR Cloud](https://cloud.openalpr.com/). -- **confidence** (*Optional*): The minimum of confidence in percent to process with Home Assistant. Defaults to 80. -- **source** array (*Required*): List of image sources. - - **entity_id** (*Required*): A list of devices to add in Home Assistant. - - **name** (*Optional*): This parameter allows you to override the name of your OpenALPR entity. diff --git a/source/_components/image_processing.openalpr_local.markdown b/source/_components/image_processing.openalpr_local.markdown deleted file mode 100644 index d5da4bab3e..0000000000 --- a/source/_components/image_processing.openalpr_local.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "OpenALPR Local" -description: "Instructions on how to integrate licences plates with OpenALPR local into Home Assistant." -date: 2017-01-09 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: openalpr.png -ha_category: Image Processing -featured: false -ha_release: 0.36 -redirect_from: /components/openalpr/ ---- - -[OpenALPR](http://www.openalpr.com/) integration for Home Assistant allows you to process licences plates from a camera. You can use them to open a garage door or trigger any other [automation](/components/automation/). - -For using inside automation look on [component](/components/image_processing) page. - -### {% linkable_title Local installation %} - -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. 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: - -```bash -$ cmake -DWITH_TEST=FALSE -DWITH_BINDING_JAVA=FALSE --DWITH_BINDING_PYTHON=FALSE \ - --DWITH_BINDING_GO=FALSE -DWITH_DAEMON=FALSE -DCMAKE_INSTALL_PREFIX:PATH=/usr .. -``` - -For other operating system please refer to the [OpenALPR wiki](https://github.com/openalpr/openalpr/wiki). - -Verify your `alpr` installation with: - -```bash -$ wget -O- -q http://plates.openalpr.com/h786poj.jpg | alpr - -``` - -### {% linkable_title Configuration Home Assistant %} - - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: openalpr_local - region: eu - 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). -- **alpr_bin** (*Optional*): The command line tool alpr from OpenALPR software for local processing. Defaults to `alpr`. -- **confidence** (*Optional*): The minimum of confidence in percent to process with Home Assistant. Defaults to 80. -- **source** array (*Required*): List of image sources. - - **entities** (*Required*): A list of devices to add in Home Assistant. - - **name** (*Optional*): This parameter allows you to override the name of your OpenALPR entity. - diff --git a/source/_components/image_processing.opencv.markdown b/source/_components/image_processing.opencv.markdown deleted file mode 100644 index 9e485ec6c3..0000000000 --- a/source/_components/image_processing.opencv.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "OpenCV" -description: "Instructions on how to integrate OpenCV image processing into Home Assistant." -date: 2017-01-25 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: opencv.png -ha_category: Image Processing -featured: false -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). - -To setup OpenCV with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: opencv - name: Front Door Faces - source: - - entity_id: camera.front_door - classifier: - mom: /path/to/classifier.xml -``` - -- **name** (*Required*): The name of the OpenCV image processor. -- **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** may also be defined as a dictionary of names to classifier configurations: - -```yaml - mom: - file: /path/to/classifier/xml - neighbors: 4 - min_size: (40, 40) - scale: 1.1f -``` - -- **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 deleted file mode 100644 index a5944d821b..0000000000 --- a/source/_components/image_processing.seven_segments.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: page -title: "Seven segments display" -description: "Instructions on how to use OCR for seven segments displays into Home Assistant." -date: 2017-05-18 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Image Processing -featured: false -ha_release: 0.45 -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/). - -

    -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 # 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 # 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 segment display in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -image_processing: - - platform: seven_segments - source: - - entity_id: camera.seven_segments -``` - -Configuration variables: - -- **ssocr_bin** (*Optional*): The command line tool `ssocr`. Set it if you use a different name for the executable. Defaults to `ssocr`. -- **x_position** (*Optional*): X coordinate of the upper left corner of the area to crop. Defaults to `0`. -- **y_position** (*Optional*): Y coordinate of the upper left corner of the area to crop. Defaults to `0`. -- **height** (*Optional*): Height of the area to crop. Defaults to `0`. -- **width** (*Optional*): Width of the area to crop. Defaults to `0`. -- **rotate** (*Optional*): Rotation of the image. Defaults to `0`. -- **threshold** (*Optional*): Threshold for the difference between the digits and the background. Defaults to `0`. -- **digits** (*Optional*): Number of digits in the display. Defaults to `-1`. -- **extra_arguments** (*Optional*): Other arguments to use. Like `-D`, `dilation`, `erosion`, `greyscale`, `make_mono`, etc. -- **source** array (*Required*): List of image sources. - - **entity_id** (*Required*): A camera entity id to get picture from. - - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. - - -### {% linkable_title Setup process %} - -It's suggested that the first attempt to determine the needed parameters is using `ssocr` directly. This may require a couple of iterations to get the result - -```bash -$ ssocr -D erosion crop 390 250 490 280 -t 20 -d 4 seven-seg.png -``` - -This would lead to the following entry for the `configuration.yaml` file: - -```yaml -camera: - - platform: local_file - file_path: /home/homeassistant/.homeassistant/seven-seg.png - name: seven_segments -image_processing: - - platform: seven_segments - x_position: 390 - y_position: 250 - height: 280 - width: 490 - threshold: 20 - digits: 4 - source: - - entity_id: camera.seven_segments -``` - -

    - -

    - -With the help of a [template sensor](/components/sensor.template/), the value can be shown as badge. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - power_meter: - value_template: '{{ states.image_processing.sevensegment_ocr_seven_segments.state }}' - friendly_name: 'Ampere' - unit_of_measurement: 'A' -``` -{% endraw %} diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown deleted file mode 100644 index 9df07711f8..0000000000 --- a/source/_components/influxdb.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: page -title: "InfluxDB" -description: "Record events in InfluxDB." -date: 2017-03-13 22:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: influxdb.png -ha_category: History -ha_release: 0.9 ---- - -The `influxdb` component makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. For more details, [see the blog post on InfluxDB](/blog/2015/12/07/influxdb-and-grafana/). - -## {% linkable_title Configuration %} - -The default InfluxDB configuration doesn't enforce authentication. If you have installed InfluxDB on the same host where Home Assistant is running and haven't made any configuration changes, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -influxdb: -``` - -You will still need to create a database named `home_assistant` via InfluxDB's command line interface. For instructions on how to create a database check the [InfluxDB documentation](https://docs.influxdata.com/influxdb/latest/introduction/getting_started/#creating-a-database) relevant to the version you have installed. - -Configuration variables: - -- **host** (*Optional*): IP address of your database host, e.g., 192.168.1.10. Defaults to `localhost`. -- **port** (*Optional*): Port to use. Defaults to 8086. -- **username** (*Optional*): The username of the database user. The user needs read/write privileges on the database. -- **password** (*Optional*): The password for the database user account. -- **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist. -- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. -- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. -- **max_retries** (*Optional*): Allow the component to retry if there was a network error when transmitting data -- **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](/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. -- **include** (*Optional*): Configure which components should be included in recordings to InfluxDB. If set, all other entities will not be recorded to InfluxDB. Values set by the **blacklist** option will prevail. - - **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 Helper scripts %} - -- [Helper script `influxdb_import`](/docs/tools/influxdb_import/) -- [Helper script `db_migrator`](/docs/tools/db_migrator/) (only used for [Home Assistant 0.36](/blog/2017/01/14/iss-usps-images-packages/#influxdb-export)) - -## {% linkable_title Examples %} - -### {% linkable_title Full configuration %} - -```yaml -influxdb: - host: 192.168.1.190 - port: 20000 - database: DB_TO_STORE_EVENTS - username: MY_USERNAME - password: MY_PASSWORD - ssl: true - verify_ssl: true - max_retries: 3 - default_measurement: state - exclude: - entities: - - entity.id1 - - entity.id2 - domains: - - automation - include: - entities: - - entity.id3 - - entity.id4 - tags: - instance: prod - source: hass -``` diff --git a/source/_components/input_boolean.markdown b/source/_components/input_boolean.markdown deleted file mode 100644 index b2b23aeeff..0000000000 --- a/source/_components/input_boolean.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: page -title: "Input Boolean" -description: "Instructions on how to integrate the Input Boolean component into Home Assistant." -date: 2016-01-17 16:58 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -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: - notify_home: - name: Notify when someone arrives home - initial: off - icon: mdi:car -``` - -{% configuration %} - input_boolean: - description: Alias for the input. Multiple entries are allowed. - required: true - type: map - keys: - name: - description: Friendly name of the input. - required: false - type: String - initial: - description: Initial value when Home Assistant starts. - required: false - type: boolean - default: false - icon: - description: Icon to display for the component. Refer to the [Customizing devices](/docs/configuration/customizing-devices/#possible-values) page for possible values. - required: false - type: icon -{% endconfiguration %} - -### {% linkable_title Restore State %} - -This component supports the `restore_state` function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the [`recorder`](/components/recorder/) component is enabled and your entity does not have a value set for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. - -## {% linkable_title Automation Examples %} - -Here's an example of an automation using the above `input_boolean`. This action will only occur if the switch is on. - -```yaml -automation: - alias: Arriving home - trigger: - platform: state - entity_id: binary_sensor.motion_garage - to: 'on' - condition: - condition: state - entity_id: input_boolean.notify_home - state: 'on' - action: - service: notify.pushbullet - data: - title: "" - message: "Honey, I'm home!" -``` - -You can also set or change the status of an `input_boolean` by using `input_boolean.turn_on`, `input_boolean.turn_off` or `input_boolean.toggle` in your automations. - -```yaml - - service: input_boolean.turn_on - data: - entity_id: input_boolean.notify_home -``` diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown deleted file mode 100644 index 462b309e7e..0000000000 --- a/source/_components/input_datetime.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: page -title: "Input Datetime" -description: "Instructions on 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 %} - input_datetime: - description: Alias for the datetime input. Multiple entries are allowed. - required: true - type: map - keys: - name: - description: Friendly name of the datetime input. - required: false - type: String - has_time: - description: Set to `true` if the input should have a time. At least one `has_time` or `has_date` must be defined. - required: false - type: Boolean - default: false - has_date: - description: Set to `true` if the input should have a date. At least one `has_time` or `has_date` must be defined. - required: false - type: Boolean - default: false - initial: - description: Set the initial value of this input, depending on `has_time` and `has_date`. - required: false - type: datetime | time | date - default: 1970-01-01 00:00 | 1970-01-01 | 00:00 -{% endconfiguration %} - -### {% linkable_title Attributes %} - -A datetime input entity's state exports several attributes that can be useful in automations and templates. - -| Attribute | Description | -| ----- | ----- | -| `has_time` | `true` if this entity has a time. -| `has_date` | `true` if this entity has a date. -| `year`
    `month`
    `day` | The year, month and day of the date.
    (only available if `has_date: true`) -| `hour`
    `minute`
    `second` | The hour, minute and second of the time.
    (only available if `has_time: true`) -| `timestamp` | A timestamp representing the time held in the input.
    If `has_date: true`, this is the UNIX timestamp of the date / time held by the input. Otherwise if only `has_time: true`, this is the number of seconds since midnight representing the time held by the input. - -### {% linkable_title Restore State %} - -This component supports the `restore_state` function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the [`recorder`](/components/recorder/) component is enabled and your entity does not have a value set for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. - -### {% linkable_title Services %} - -This component provides a service to modify the state of the `input_datetime`. - -| Service | Data | Description | -| ----- | ----- | ----- | -| `set_datetime` | `time` | This can be used to dynamically set the time. -| `set_datetime` | `date` | This can be used to dynamically set the date. - -## {% linkable_title Automation Examples %} - -The following example shows the usage of the `input_datetime` as a trigger in an automation (note that you will need a [time sensor](/components/sensor.time_date/) elsewhere in your configuration): - -{% raw %} -```yaml -# Example configuration.yaml entry -# Turns on bedroom light at the time specified. -automation: - trigger: - platform: template -    value_template: "{{ states('sensor.time') == (states.input_datetime.bedroom_alarm_clock_time.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}" -  action: - service: light.turn_on - entity_id: light.bedroom -``` -{% endraw %} - -To dynamically set the `input_datetime` you can call `input_datetime.set_datetime`. The following example can be used in an automation rule: - -```yaml -# Example configuration.yaml entry -# Sets input_datetime to '05:30' when an input_boolean is turned on. -automation: - trigger: - platform: state - entity_id: input_boolean.example - to: 'on' - action: - service: input_datetime.set_datetime - entity_id: input_datetime.bedroom_alarm_clock_time - data: - time: '05:30:00' -``` diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown deleted file mode 100644 index 44d819c39c..0000000000 --- a/source/_components/input_number.markdown +++ /dev/null @@ -1,196 +0,0 @@ ---- -layout: page -title: "Input Number" -description: "Instructions on 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.55 -redirect_from: /components/input_slider/ ---- - -

    -Before version 0.55 this component was known as `input_slider` and did not have the `mode` configuration option. Also, service `select_value` is now `set_value`. -

    - -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_number: - slider1: - 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 %} - input_number: - description: Alias for the input. Multiple entries are allowed. - required: true - type: map - keys: - min: - description: Minimum value. - required: true - type: float - max: - description: Maximum value. - required: true - type: float - name: - description: Friendly name of the input. - required: false - type: string - initial: - description: Initial value when Home Assistant starts. - required: false - type: float - default: 0 - step: - description: Step value for the slider. Smallest value `0.001`. - required: false - type: float - default: 1 - mode: - description: Can specify `box` or `slider`. - required: false - type: box | slider - default: slider - unit_of_measurement: - description: Unit of measurement in which the value of the slider is expressed in. - required: false - type: string - icon: - description: Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](/docs/configuration/customizing-devices/#possible-values) page for possible values. - required: false - type: icon -{% endconfiguration %} - -### {% linkable_title Restore State %} - -This component supports the `restore_state` function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the [`recorder`](/components/recorder/) component is enabled and your entity does not have a value set for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. - -## {% linkable_title Automation Examples %} - -Here's an example of `input_number` being used as a trigger in an automation. - -{% raw %} -```yaml -# Example configuration.yaml entry using 'input_number' as a trigger in an automation -input_number: - bedroom_brightness: - name: Brightness - initial: 254 - min: 0 - max: 254 - step: 1 -automation: - - alias: Bedroom Light - Adjust Brightness - trigger: - platform: state - 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 - data_template: - entity_id: light.bedroom - brightness: "{{ trigger.to_state.state | int }}" -``` -{% endraw %} - -Another code example using `input_number`, this time being used in an action in an automation. - -{% raw %} -```yaml -# Example configuration.yaml entry using 'input_number' in an action in an automation -input_select: - scene_bedroom: - name: Scene - options: - - Select - - Concentrate - - Energize - - Reading - - Relax - - 'OFF' - initial: 'Select' -input_number: - bedroom_brightness: - name: Brightness - initial: 254 - min: 0 - max: 254 - step: 1 -automation: - - alias: Bedroom Light - Custom - trigger: - platform: state - entity_id: input_select.scene_bedroom - to: CUSTOM - action: - - service: light.turn_on - # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. - data_template: - entity_id: light.bedroom - brightness: "{{ states('input_number.bedroom_brightness') | int }}" -``` -{% endraw %} - -Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. - -{% raw %} -```yaml -# Example configuration.yaml entry using 'input_number' in an action in an automation -input_number: - target_temp: - name: Target Heater Temperature Slider - min: 1 - max: 30 - step: 1 - unit_of_measurement: step - icon: mdi:target - -# This automation script runs when a value is received via MQTT on retained topic: setTemperature -# It sets the value slider on the GUI. This slides also had its own automation when the value is changed. -automation: - - alias: Set temp slider - trigger: - platform: mqtt - topic: 'setTemperature' - action: - service: input_number.set_value - data_template: - entity_id: input_number.target_temp - value: "{{ trigger.payload }}" - -# This automation script runs when the target temperature slider is moved. -# It publishes its value to the same MQTT topic it is also subscribed to. -automation: - - alias: Temp slider moved - trigger: - platform: state - entity_id: input_number.target_temp - action: - service: mqtt.publish - data_template: - topic: 'setTemperature' - retain: true - payload: "{{ states('input_number.target_temp') | int }}" -``` -{% endraw %} diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown deleted file mode 100644 index 8e59002ccf..0000000000 --- a/source/_components/input_select.markdown +++ /dev/null @@ -1,171 +0,0 @@ ---- -layout: page -title: "Input Select" -description: "Instructions on how to integrate the Input Select component into Home Assistant." -date: 2016-02-02 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Automation -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 in your installation, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -input_select: - who_cooks: - name: Who cooks today - options: - - Paulus - - Anne Therese - initial: Anne Therese - icon: mdi:panda - living_room_preset: - options: - - Visitors - - Visitors with kids - - Home Alone -``` - -{% configuration %} - input_select: - description: Alias for the input. Multiple entries are allowed. - required: true - type: map - keys: - name: - description: Friendly name of the input. - required: false - type: String - options: - description: List of options to choose from. - required: true - type: Array - initial: - description: Initial value when Home Assistant starts. - required: false - type: Element of options - default: First element of options - icon: - description: Icon to display for the component. Refer to the [Customizing devices](/docs/configuration/customizing-devices/#possible-values) page for possible values. - required: false - type: icon -{% endconfiguration %} - -

    -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 Restore State %} - -This component supports the `restore_state` function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the [`recorder`](/components/recorder/) component is enabled and your entity does not have a value set for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. - -### {% linkable_title Services %} - -This components provide three services to modify the state of the `input_select`. - -| Service | Data | Description | -| ------- | ---- | ----------- | -| `select_option` | `option` | This can be used to select a specific option. -| `set_options` | `options`
    `entity_id(s)` | Set the options for specific `input_select` entities. -| `select_previous` | | Select the previous option. -| `select_next` | | Select the next option. - -### {% linkable_title Scenes %} - -To specify a target option in a [Scene](/components/scene/) you have to specify the target as `option` attribute: - -```yaml -# Example configuration.yaml entry -scene: - - name: Example1 - entities: - input_select.who_cooks: - option: Paulus -``` - -## {% linkable_title Automation Examples %} - -The following example shows the usage of the `input_select.select_option` service in an automation: - -```yaml -# Example configuration.yaml entry -automation: - - alias: example automation - trigger: - platform: event - event_type: MY_CUSTOM_EVENT - action: - - service: input_select.select_option - data: - entity_id: input_select.who_cooks - 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"] -``` - -Example of `input_select` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. - -{% raw %} -```yaml -# Example configuration.yaml entry using 'input_select' in an action in an automation - -# Define input_select -input_select: - thermostat_mode: - name: Thermostat Mode - options: - - "auto" - - "off" - - "cool" - - "heat" - icon: mdi:target - -# Automation. - # This automation script runs when a value is received via MQTT on retained topic: thermostatMode - # It sets the value selector on the GUI. This selector also had its own automation when the value is changed. -- alias: Set Thermostat Mode Selector - trigger: - platform: mqtt - topic: "thermostatMode" - # entity_id: input_select.thermostat_mode - action: - service: input_select.select_option - data_template: - entity_id: input_select.thermostat_mode - option: "{{ trigger.payload }}" - - # This automation script runs when the thermostat mode selector is changed. - # It publishes its value to the same MQTT topic it is also subscribed to. -- alias: Set Thermostat Mode - trigger: - platform: state - entity_id: input_select.thermostat_mode - action: - service: mqtt.publish - data_template: - topic: "thermostatMode" - retain: true - payload: "{{ states('input_select.thermostat_mode') }}" -``` -{% endraw %} diff --git a/source/_components/input_text.markdown b/source/_components/input_text.markdown deleted file mode 100644 index 284ab5ea36..0000000000 --- a/source/_components/input_text.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "Input Text" -description: "Instructions on 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. It can also be configured in password mode (obscured text). - -```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]*' - text4: - name: Text 4 - mode: password -``` - -{% configuration %} - input_text: - description: Alias for the input. Multiple entries are allowed. - required: true - type: map - keys: - name: - description: Friendly name of the text input. - required: false - type: String - min: - description: Minimum length for the text value. - required: false - type: int - default: 0 - max: - description: Maximum length for the text value. - required: false - type: int - default: 100 - initial: - description: Initial value when Home Assistant starts. - required: false - type: String - default: empty - pattern: - description: Regex pattern for client side validation. - required: false - type: String - default: empty - mode: - description: Can specify `text` or `password`. Elements of type "password" provide a way for the user to securely enter a value. - required: false - type: String - default: text -{% endconfiguration %} - -### {% linkable_title Restore State %} - -This component supports the `restore_state` function which restores the state after Home Assistant has started to the value it has been before Home Assistant stopped. To use this feature please make sure that the [`recorder`](/components/recorder/) component is enabled and your entity does not have a value set for `initial`. Additional information can be found in the [Restore state](/components/recorder/#restore-state) section of the [`recorder`](/components/recorder/) component documentation. diff --git a/source/_components/insteon_hub.markdown b/source/_components/insteon_hub.markdown deleted file mode 100644 index 5c9813bc5c..0000000000 --- a/source/_components/insteon_hub.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Insteon Hub" -description: "Instructions on how to setup the Insteon Hub within Home Assistant." -date: 2016-01-27 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Hub -ha_iot_class: "Cloud Polling" ---- - -

    -This component has been disabled due to a complaint by Insteon. It will be enabled again once this issue has been resolved. -

    - -The `insteon` component lets you use your [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. - -You will need to obtain an Insteon REST API key from the [Insteon Developer program](http://www.insteon.com/become-an-insteon-developer) to use this component. - -To integrate your Insteon Hub with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -insteon_hub: - username: YOUR_USERNAME - password: YOUR_PASSWORD - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **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 deleted file mode 100644 index 40ed93c1d5..0000000000 --- a/source/_components/insteon_local.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Insteon (local)" -description: "Instructions on how to setup the Insteon Hub locally within Home Assistant." -date: 2016-12-18 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Hub -ha_iot_class: "Local Polling" -ha_version: 0.36 ---- - -The `insteon_local` component let you use your [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. - -To integrate your Insteon local setup 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 -``` - -Configuration variables: -*Note: The username and password here are for the hub and are different than the ones used to access the app. You can usually find these on the bottom of your hub (unless you've changed them through the settings in the app)* -- **host** (*Required*): The IP address of your hub. -- **username** (*Required*): The username used to access the Insteon interface (find in your Insteon app). -- **password** (*Required*): The password used to access the Insteon interface. -- **timeout** (*Optional*): Timeout to wait for connections. Defaults to 10 seconds. -- **port** (*Optional*): The port your hub is configured to listen to. Defaults to `25105`. - -### {% linkable_title Full configuration %} - -The `insteon_local` component currently supports lights (dimmers), switches and fans. - -```yaml -insteon_local: - host: YOUR HUB IP - username: YOUR HUB USERNAME - password: YOUR HUB PASSWORD - timeout: 10 - port: 25105 -``` diff --git a/source/_components/insteon_plm.markdown b/source/_components/insteon_plm.markdown deleted file mode 100644 index 9e15bb0f7d..0000000000 --- a/source/_components/insteon_plm.markdown +++ /dev/null @@ -1,164 +0,0 @@ ---- -layout: page -title: "Insteon PLM" -description: "Instructions on how to setup an Insteon USB PLM locally within Home Assistant." -date: 2017-02-19 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Hub -ha_iot_class: "Local Push" -ha_version: 0.39 ---- - -This component adds "local push" support for INSTEON PowerLinc Modems allowing -linked INSTEON devices to be used within Home Assistant as lights, switches, -and binary sensors. Device support is provided by the underlying [insteonplm] -package. It is known to work with the [2413U] USB and [2412S] RS242 flavors -of PLM and the [2448A7] USB stick. This component does not work with the -IP-based hub products. For that, you'll want the "Insteon (Local)" component -instead. - -[insteonplm]: https://github.com/nugget/python-insteonplm -[2413U]: https://www.insteon.com/powerlinc-modem-usb -[2412S]: https://www.insteon.com/powerlinc-modem-serial -[2448A7]: https://www.smarthome.com/insteon-2448a7-portable-usb-adapter.html - - -```yaml -# insteon_plm supported configuration variables -insteon_plm: - port: SERIAL_PORT - device_override: - - address: ADDRESS - cat: CATEGORY - subcat: SUBCATEGORY - firmware: FIRMWARE - product_key: PRODUCT_KEY -``` -Configuration variables: -- **port** (*Required*): The port for your device, e.g., `/dev/ttyUSB0` -- **device_override** (*Optional*): Override the default device definition - - *ADDRESS* is found on the device itself in the form 1A.2B.3C or 1a2b3c - - *CATEGORY* is found in the back of the device's User Guide in the form of - 0x00 - 0xff - - *SUBCATEGORY* is found in the back of the device's User Guide in the form - of 0x00 - 0xff - - *FIRMWARE* and *PRODUCT_KEY* are more advanced options and will typically - not be used. - -### {% linkable_title Autodiscovery %} - -The first time autodiscovery runs, the duration may require up to 20 seconds -per device. Subsequent startups will occur much quicker using cached device -information. If a device is not recognized during autodiscovery, you can add -the device to the **device_override** configuration. - -In order for a device to be discovered it must be linked to the PLM as either -a responder or a controller. - -### {% linkable_title Linking Devices to the PLM %} - -In order for any two Insteon devices to talk with one another, they must be -linked. For an overview of device linking please read the Insteon page on -[understanding linking]. The Insteon PLM module supports All-Linking through -[Development Tools] service calls. The following services are available: - -In order for any two Insteon devices to talk with one another, they must be -linked. For an overview of device linking, please read the Insteon page on -[understanding linking]. The Insteon PLM module supports All-Linking through -[Development Tools] service calls. The following services are available: -- **insteon_plm.add_all_link**: Tells the Insteon Modem (IM) start All-Linking -mode. Once the IM is in All-Linking mode, press the link button on the device -to complete All-Linking. -- **insteon_plm.delete_all_link**: Tells the Insteon Modem (IM) to remove an -All-Link record from the All-Link Database of the IM and a device. Once the IM -is set to delete the link, press the link button on the corresponding device -to complete the process. -- **insteon_plm.load_all_link_database**: Load the All-Link Database for a -device. WARNING - Loading a device All-Link database is very time consuming -and inconsistent. This may take a LONG time and may need to be repeated to -obtain all records. -- **insteon_plm.print_all_link_database**: Print the All-Link Database for a -device. Requires that the All-Link Database is loaded into memory. -- **insteon_plm.print_im_all_link_database**: Print the All-Link Database for -the INSTEON Modem (IM). - -If you are looking for more advanced options, you can use the -[insteonplm_interactive] command line tool that is distributed with the -[insteonplm] Python module. Please see the documentation on the [insteonplm] -GitHub site. Alternatively, you can download [HouseLinc] which runs on any -Windows PC, or you can use [Insteon Terminal] which is open source and runs -on most platforms. SmartHome no longer supports HouseLinc, but it still -works. Insteon Terminal is a very useful tool but please read the disclaimers -carefully, they are important. - -[understanding linking]: http://www.insteon.com/support-knowledgebase/2015/1/28/understanding-linking -[Development Tools]: https://www.home-assistant.io/docs/tools/dev-tools/ -[HouseLinc]: https://www.smarthome.com/houselinc.html -[Insteon Terminal]: https://github.com/pfrommerd/insteon-terminal -[insteonplm_interactive]: https://github.com/nugget/python-insteonplm#command-line-interface - -### {% linkable_title Customization %} - -The only configuration item that is absolutely necessary is the port so that -Home Assistant can connect to the PLM. This will expose all the supported -INSTEON devices which exist in the modem’s ALL-Link database. However, devices -will only be shown by their INSTEON hex address (e.g., “1A.2B.3C”) which can -be a bit unwieldy. As you link and unlink devices using the ‘Set’ buttons, -they’ll be added and removed from Home Assistant automatically. - -You can use the normal Home Assistant [device customization] section of your -configuration to assign friendly names and special icons to your devices. This -is especially useful for setting device_class on your binary_sensor INSTEON -devices. - -[device customization]: /getting-started/customizing-devices/ - -### {% linkable_title Device Overrides %} - -INSTEON devices are added to Home Assistant using the platform(s) that make the -most sense given the model and features of the hardware. The features of the -INSTEON device are built into the Home Assistant platform. Changing the -platform is not recommended. There are two primary uses for the -**device_override** feature. -- Devices that do not respond during autodiscovery. This is common for battery - operated devices. -- Devices that have not been fully developed. This allows an unknown device to - be mapped to a device that operates similarly to another device. - -### {% linkable_title Example Configuration with Options%} - -```yaml -# Full example of insteon_plm configuration with customizations and overrides - -homeassistant: - customize: - light.a1b2c3: - friendly_name: Bedside Lamp - binary_sensor.a2b3c4: - friendly_name: Garage Door - device_class: opening - -insteon_plm: - port: /dev/ttyUSB0 - device_override: - - address: a1b2c3 # Hidden Door Sensor [2845-222] - cat: 0x10 - subcat: 0x11 -``` - -### {% linkable_title What NOT to do %} - -Insteon PLM is a top level component and device discovery will identify -the Home Assistant platform the device belongs in. As such, do not -declare Insteon devices in other platforms. For example, this configuration -will NOT work: - -```yaml -light: - - platform: insteon_plm - address: 1a2b3c -``` diff --git a/source/_components/intent_script.markdown b/source/_components/intent_script.markdown deleted file mode 100644 index eab43f4b93..0000000000 --- a/source/_components/intent_script.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -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](/components/alexa/) (Amazon Echo), [API.ai](/components/dialogflow/) (Google Assistant) and [Snips](/components/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/introduction.markdown b/source/_components/introduction.markdown deleted file mode 100644 index 759142229d..0000000000 --- a/source/_components/introduction.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "Introduction" -description: "Details about the introduction within Home Assistant." -date: 2015-10-25 15:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other ---- - -The introduction component will show a card in the UI with 'Welcome Home!' and steps on how to get started. It will also print the same message to the console when starting up. - -The introduction component is loaded by default on a new Home Assistant instance. - -```yaml -# Example configuration.yaml entry -introduction: -``` - -To disable this component, remove the `introduction:` entry from your `configuration.yaml` file. diff --git a/source/_components/ios.markdown b/source/_components/ios.markdown deleted file mode 100644 index 44ac2fa88e..0000000000 --- a/source/_components/ios.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "iOS" -description: "Instructions on how to use the iOS companion app with Home Assistant." -date: 2018-04-06 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: apple.png -ha_category: Hub -featured: false -ha_release: 0.31 -ha_iot_class: depends ---- - -The `ios` component is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. diff --git a/source/_components/iota.markdown b/source/_components/iota.markdown deleted file mode 100644 index d50ad4f545..0000000000 --- a/source/_components/iota.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "IOTA" -description: "Instructions on how to integrate IOTA wallets with Home Assistant." -date: 2017-12-31 13:29 -sidebar: true -comments: false -sharing: true -footer: true -logo: iota.png -ha_category: Finance -ha_release: 0.62 -ha_iot_class: "Cloud Polling" ---- - -[IOTA](http://iota.org/) is a new blockless distributed ledger which is scalable, lightweight and makes it possible to transfer value without any fees. - -The `iota` component displays various details (e.g., the balance, node attributes) of IOTA wallets. - -```yaml -# configuration.yaml example -iota: - iri: https://testnet140.tangle.works:4434 - wallets: - - name: Default Wallet - seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -``` - -{% configuration %} -iri: - description: URL of the IRI node. - required: true - type: string -testnet: - description: Flag for indicating "testnet". - required: false - default: false - type: bool -wallets: - description: List of IOTA wallets. - required: true - type: list - keys: - name: - description: Name of the wallet. - seed: - description: Seed of the wallet. -{% endconfiguration %} - -A full configuration example could look the one below: - -```yaml -# Full example -iota: - iri: https://testnet140.tangle.works:4434 - testnet: true - wallets: - - name: Default Wallet - seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - - name: Exchange Wallet - seed: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -``` diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown deleted file mode 100644 index 211917fe56..0000000000 --- a/source/_components/isy994.markdown +++ /dev/null @@ -1,161 +0,0 @@ ---- -layout: page -title: "ISY994 Controller" -description: "Instructions on how to setup the ISY994 controller within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Hub -ha_release: 0.28 -ha_iot_class: "Local Push" ---- - -The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. Some models of the ISY994 can even control Z-Wave devices. -The ISY994 controller is manufactured by [Universal Devices](https://www.universal-devices.com/residential/isy994i-series/). - -### {% linkable_title Basic Configuration %} - -Home Assistant is capable of communicating with any binary sensor, cover, fan, light, lock, sensor and switch that is configured on the controller. Using the programs on the controller, custom binary sensors, cover, fan, lock, and switches can also be created. - -To integrate your ISY994 controller with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -isy994: - host: ISY_ADDRESS - username: ISY_USERNAME - password: ISY_PASSWORD -``` -Configuration variables: - -- **host** (*Required*): The host entry should be in full URL format, eg. http://192.168.10.100:80 -- **username** (*Required*): The username that used to access the ISY interface. -- **password** (*Required*): The password that used to access the ISY interface. -- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). This is only necessary for nodes that are not automatically detected as sensors by Home Assistant. Insteon door, window, motion and leak sensors should all be detected automatically. -- **ignore_string** (*Optional*): Any devices that contain this string in their name (or folder path) will be ignored by Home Assistant. They will not become entities at all. The default value is `{IGNORE ME}`. -- **enable_climate** (*Optional*): When enabled, climate measurements from the optional climate module in the ISY994 will show up in Home Assistant as sensors. The default value is `True`. -- **tls** (*Optional*): This entry should reflect the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value. - -Once the ISY controller is configured, it will automatically import any binary sensors, covers, fans, lights, locks, sensors and switches it can locate. - -### {% linkable_title Sensors %} - -An Insteon door/window sensor will show up as a single Binary Sensor rather than two discrete devices like it does in the ISY994 admin panel. Note that when in "Two Nodes" mode, the sensor will have an UNKNOWN state until the sensor changes for the first time since the last Home Assistant reboot. If you do not use Insteon scenes that are controlled directly from the door sensor, you may prefer to set the sensor to "One Node" mode using the ISY Admin Panel. - -Each Insteon leak sensor will also show up as a single Binary Sensor as opposed to the two nodes seen in the ISY994. The name of the device will be based on what the parent node is named in the ISY994, which is typically the one with "-Dry" at the end of the name. This may be confusing, because "On" means wet in Home Assistant. You can rename this node either in the ISY994 Admin Panel (which will change the entity_id in Home Assistant) or assign a `friendly_name` in the [Customization section](/docs/configuration/customizing-devices/) of your configuration. - -If your leak or door/window sensor supports heartbeats, a new binary_sensor device will be added to Home Assistant to represent the battery state. The sensor will stay "Off" so long as the daily heartbeats occur. If a heartbeat is missed, the sensor will flip to "On". The name of this device will be based on the heartbeat node in the ISY. - -### {% linkable_title Handling Insteon Control Events %} - -A Home Assistant `isy994_control` event is emitted for every "control" event in the Insteon network. This allows you to write automations that trigger based on Insteon button presses. You can also trigger off of the unique Insteon events, such as double-presses, long-holds etc. - -```yaml -automation: - - alias: turn off living room on double tap lightswitch - trigger: - platform: event - event_type: isy994_control - event_data: - entity_id: light.lr_track_lights_front - control: 'DFOF' - action: - service: light.turn_off - entity_id: light.lr_track_lights_rear -``` - -All `isy994_control` events will have an `entity_id` and `control` parameter in its `event_data`. You'll need to refer to ISY994 documentation for the list of every possible control type, but the common ones are: - -- `DON`: On button -- `DOF`: Off button -- `DFON`: "Fast On", usually from double-tapping an On button -- `DFOF`: "Fast Off", usually from double-tapping an Off button -- `FDUP`: "Fade Up", usually while holding down an On button -- `FDDOWN`: "Fade Down", usually while holding down an Off button -- `FDSTOP`: "Fade Stop", when releasing a long-held button -- `BRT`: "Brighten", from controllers that issue a single command to slightly brighten a light -- `DIM`: "Dim", from controllers that issue a single command to slightly dim a light - -### {% linkable_title Insteon Scenes %} - -All Insteon scenes configured in the ISY994 will show up as switches in Home Assistant. - -### {% linkable_title Creating Custom Devices %} - -Using the Programs tab in the controller's Administrative Console, custom devices can be created that will appear natively inside of Home Assistant. Home Assistant will scan the following folders and build the device to the associated domains: - -``` -My Programs -├── HA.binary_sensor -| ├── Movement In House -| | └── status -| └── Garage Open -| | └── status -├── HA.cover -| ├── Left Garage Door -| | ├── actions -| | └── status -| ├── Living Room Blinds -| | ├── actions -| | └── status -├── HA.fan -| ├── Desk Fan -| | ├── actions -| | └── status -| ├── Living Room Fan -| | ├── actions -| | └── status -├── HA.lock -| ├── Front Door -| | ├── actions -| | └── status -| ├── Back Door -| | ├── actions -| | └── status -├── HA.switch -| ├── Dining Lights -| | ├── actions -| | └── status -| ├── Sleep Mode -| | ├── actions -| | └── status -``` - -A device is created by creating a directory, with the name for the device, under any of the following root directories: - * *HA.binary_sensor* will create a binary sensor (see [Customizing Devices](/getting-started/customizing-devices/) to set the sensor class) - * *HA.cover* will create a cover - * *HA.fan* will create a fan - * *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. 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. - -

    - -

    - -The *status* program in this directory is what indicates the state of the device: - * *binary_sensor* on if the clause returns true, otherwise off - * *cover* closed if the clause returns true, otherwise open - * *fan* on if the clause returns true, otherwise off - * *lock* locked if the clause returns true, otherwise unlocked - * *switch* on if the clause returns true, otherwise off - -

    - -

    - -The *actions* program indicates what should be performed for the following device services: - * *cover* the THEN clause is evaluated for the open_cover service, the ELSE clause is evaluated for the close_cover service - * *fan* the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service - * *lock* the THEN clause is evaluated for the lock service, the ELSE clause is evaluated for the unlock service - * *switch* the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service - -

    - -

    - -The example program above shows how to control a legacy X10 device from Home Assistant using an ISY controller. diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown deleted file mode 100644 index c0b94b2eb5..0000000000 --- a/source/_components/joaoapps_join.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "Joaoapps Join" -description: "Instructions for how to integrate the Join by Joaoapps service within Home Assistant." -date: 2016-07-12 10:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: joaoapps_join.png -ha_category: Hub -ha_release: "0.24" ---- - - -The `joaoapps_join` component 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/). - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: joaoapps_join - api_key: asd97823jb628a34fwsdfwefd5384345tf2d - device_id: d5asdfasdf54645h45h368761dfe5gt8a - device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b - device_names: Pixel, iPhone - name: Phones -joaoapps_join: - - name: android - device_id: group.android - api_key: asd97823jb628a34fwsdfwefd5384345tf2d -``` - -Configuration variables: - -- **api_key** (*Required*): The API key for Join. -- **device_id** (*Optional*): The id of your device. -- **device_ids** (*Optional*): Comma separated list of device ids. -- **device_names** (*Optional*): Comma separated list of device names. - -The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: - -```json -{"message":"Hello from Home Assistant!","title":"Home Assistant","data":{"icon":"https://goo.gl/xeetdy", "vibration":"0,65,706,86,657,95,668,100"}} -``` - -The services exposed in the `joaoapps_join` component can be used with the service data described below: - -| Service | Data | -|------------------------------ |------------------------------------------------------------------ | -| joaoapps_join/ring | | -| joaoapps_join/send_sms | `{"number":"5553334444", "message":"Hello!"}` | -| joaoapps_join/send_tasker | `{"command":"test"}` | -| joaoapps_join/send_url | `{"url":"http://google.com"}` | -| joaoapps_join/send_wallpaper | `{"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"}` | -| joaoapps_join/send_file | `{"url":"http://download.thinkbroadband.com/5MB.zip"}` | - diff --git a/source/_components/juicenet.markdown b/source/_components/juicenet.markdown deleted file mode 100644 index 74cc2fdb89..0000000000 --- a/source/_components/juicenet.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Juicenet" -description: "Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant." -date: 2017-05-20 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: juicenet.png -ha_category: Hub -ha_release: 0.47 ---- - - -The `juicenet` sensor platform pulls data from a [JuiceNet](https://emotorwerks.com/products/juicenet/) charging station equipped with a wifi connection. It will access and make available all of the devices attached to your account. - -## {% linkable_title Configuration %} - -To enable the platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -juicenet: - access_token: ACCESS_TOKEN -``` - -Configuration variables: - -- **access_token** (*Required*): Your eMotorWerks API Token can be found in the [dashboard](https://dashboard.emotorwerks.com/Manage). diff --git a/source/_components/keyboard.markdown b/source/_components/keyboard.markdown deleted file mode 100644 index 00dad71931..0000000000 --- a/source/_components/keyboard.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Keyboard" -description: "Instructions on how to simulate key presses with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: keyboard.png -ha_category: Automation -ha_release: pre 0.7 ---- - - -The `keyboard` component simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS): - - * `keyboard/volume_up` - * `keyboard/volume_down` - * `keyboard/volume_mute` - * `keyboard/media_play_pause` - * `keyboard/media_next_track` - * `keyboard/media_prev_track` - -To load this component, add the following lines to your `configuration.yaml`: - -```yaml -keyboard: -``` - -## {% linkable_title Dependencies %} - -You may need to install platform-specific [dependencies for PyUserInput](https://github.com/PyUserInput/PyUserInput#dependencies) in order to use the keyboard component. In most cases this can be done by running: - -```bash -$ pip3 install [package name] -``` - -#### {% linkable_title Windows %} - -x64 Windows users may have trouble installing pywin through pip. Using an [executable installer](http://sourceforge.net/projects/pywin32/files/pywin32/) should work around this issue. - -[Similar installers](http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook) (unofficial) for pyhook have been ported to python 3.4 and should help with x64 pip issues with pyhook. diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown deleted file mode 100644 index aeefd01e63..0000000000 --- a/source/_components/keyboard_remote.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: page -title: "Keyboard Remote" -description: "Instructions on how to use a keyboard to remote control Home Assistant." -date: 2016-09-28 14:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: keyboard.png -ha_category: Other -ha_release: 0.29 -ha_iot_class: "Local Push" ---- - -Receive signals from a keyboard and use it as a remote control. - -This component allows you to use a keyboard as remote control. It will fire `keyboard_remote_command_received` events which can then be used in automation rules. - -The `evdev` package is used to interface with the keyboard and thus this is Linux only. It also means you can't use your normal keyboard for this because `evdev` will block it. - - -```yaml -# Example configuration.yaml entry -keyboard_remote: - type: 'key_up' -``` - -Configuration variables: - -- **type** (*Required*): Possible values are `key_up`, `key_down`, and `key_hold`. Be careful, `key_hold` will fire a lot of events. -- **device_descriptor** (*Optional*): Path to the local event input device file that corresponds to the keyboard. -- **device_name** (*Optional*): Name of the keyboard device. - -Either `device_name` or `device_descriptor` must be present in the configuration entry. Indicating a device name is useful in case of repeating disconnections and re-connections of the device (for example, a bluetooth keyboard): the local input device file might change, thus breaking the configuration, while the name remains the same. -In case of presence of multiple devices of the same model, `device_descriptor` must be used. - -A list of possible device descriptors and names is reported in the debug log at startup when the device indicated in the configuration entry could not be found. - -A full configuration for Keyboard Remote could look like the one below: - -```yaml -keyboard_remote: - device_descriptor: '/dev/input/by-id/bluetooth-keyboard' - type: 'key_up' -``` - -or like the following: - -```yaml -keyboard_remote: - device_name: 'Bluetooth Keyboard' - type: 'key_down' -``` - -And an automation rule to breathe life into it: - -```yaml -automation: - alias: Keyboard all lights on - trigger: - platform: event - event_type: keyboard_remote_command_received - event_data: - key_code: 107 # inspect log to obtain desired keycode - action: - service: light.turn_on - entity_id: light.all -``` - -## {% 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. - -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. - -Here's an automation example that plays a sound through a media player whenever the keyboard connects/disconnects: -```yaml -automation: - - alias: Keyboard Connected - trigger: - platform: event - event_type: keyboard_remote_connected - action: - - service: media_player.play_media - data: - entity_id: media_player.speaker - media_content_id: keyboard_connected.wav - media_content_type: music - - alias: Keyboard Disconnected - trigger: - platform: event - event_type: keyboard_remote_disconnected - action: - - service: media_player.play_media - data: - entity_id: media_player.speaker - media_content_id: keyboard_disconnected.wav - media_content_type: music -``` - -## {% linkable_title Permissions %} -There might be permissions problems with the event input device file. If this is the case, the user that Home Assistant runs as must be allowed read and write permissions with: - -```bash -$ sudo setfacl -m u:HASS_USER:rw /dev/input/event* -``` - -where `HASS_USER` is the user who runs Home Assistant. - -If you want to make this permanent, you can use a udev rule that sets it for all event input devices. Add a file `/etc/udev/rules.d/99-userdev-input.rules` containing: - -```bash -KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:HASS_USER:rw $env{DEVNAME}" -``` - -You can check ACLs permissions with - -```bash -$ getfacl /dev/input/event* -``` diff --git a/source/_components/kira.markdown b/source/_components/kira.markdown deleted file mode 100644 index b32ae95eac..0000000000 --- a/source/_components/kira.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "Kira" -description: "Instructions on how to integrate Keene Electronics IR over IP modules (Kira) into Home Assistant." -date: 2017-05-07 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: keene.png -ha_category: Hub -ha_release: 0.45 ---- - -The `kira` component is the main component to integrate Keene Electronics IR over IP [Kira](https://www.keene.co.uk/keene-ir-anywhere-single-worldwide.html) modules with Home Assistant. - -### {% linkable_title Example Configuration %} - -```yaml -# Example configuration.yaml entry -kira: -``` - -Kira modules have no built-in mechanism for auto-discovery, so will need to be configured to send packets to Home Assistant. Documentation for this can be found on the manufacturer's website [Here](https://www.keene.co.uk/pages/iranywhere/index.html). - -### {% linkable_title Configuration Options %} - -```yaml -# Example configuration.yaml entry -kira: - sensors: - - name: kira_sensor - host: 0.0.0.0 - port: 65432 - remotes: - - name: kira_remote - host: 192.168.100.1 - port: 65432 -``` - -Configuration variables: -- **sensors** (*Optional*): Kira sensors to register - - **name** (*Optional*): Name of this sensor. - - **host** (*Optional*): Bind address for this sensor. 0.0.0.0 is default. - - **port** (*Optional*): UDP port to listen for packets on. 65432 is default. -- **remotes** (*Optional*): Remote Kira modules to register - - **name** (*Optional*): Name of this remote. - - **host** (*Required*): IP address of Kira module to send commands to. - - **port** (*Optional*): UDP port to send packets to. 65432 is default. - -If no sensors or remotes are specified, a sensor with default values will be added. - -### {% linkable_title Code Configuration %} - -The first time the Kira component is loaded, `kira_codes.yaml` will be created in the Home Assistant configuration directory. - -```yaml -# Example kira_codes.yaml entry -- name: LivingRoomTVOn - code: "K 2322 228A 1126 023E 0227 023E 0207 023F 0658 025D 0207 023F 0227 0220 0227 023F 0222 023E 0222 0220 067D 023F 0658 0222 0227 025C 0640 023F 0658 025D 0640 023E 0658 025D 0640 023F 0222 025C 0207 0222 0678 023E 0207 023F 0227 023F 0222 025C 063B 025C 0640 023E 0660 023E 0658 025D 0207 0222 0678 023E 0660 0220 0678 023E 0202 025D 0207 023F 2000" - type: kira -- name: HDMI_1 - code: "0000 006d 0026 0000 0155 00aa 0016 0015 0016 0015 0016 0040 0016 0015 0016 0015 0016 0014 0016 0015 0016 0015 0016 0040 0016 0040 0016 0015 0016 0040 0016 0040 0016 0040 0016 0040 0016 0040 0016 0015 0016 0040 0016 0040 0016 0040 0016 0014 0016 0015 0016 0040 0016 0040 0016 0040 0016 0015 0016 0014 0016 0014 0016 0040 0016 0040 0016 0014 0016 0015 0016 060b 0155 0055 0016 0e58 0155 0055 0016 00aa" - device: LivingRoomTv - type: pronto -- name: RGB - code: "F709 DC24" - device: LivingRoomTv - type: nec -``` - -Configuration variables: -- **name** (*Required*): The name of this code. -- **code** (*Required*): The data for this code (see below). -- **device** (*Optional*): The device this code is associated with. Default is "unknown". -- **type** (*Optional*): The type of this code. If this field is omitted, the type will be autodetected if possible. -- **repeat** (*Optional*): The number of times to repeat this code (on transmit). Default is 1. - -Some manufacturers (e.g., Samsung) require an IR code to be sent a number of times in a row in rapid succession (usually 3). This doesn't apply to the vast majority of devices, but it can be helpful if needed. - -### {% linkable_title Code Types %} - -When creating an entry in `kira_codes.yaml`, a few different kinds of codes can be used. -- **kira**: This is the native wire protocol used by Kira modules. These can be captured using netcat. -- **pronto**: Pronto codes are supported. -- **nec**: If the device uses NEC IR codes and the manufacturer has published them, they can be used here. - -**NOTE**: NEC codes by themselves contain enough information to recognize an IR sequence, but not enough to reconstruct it. Codes of this type are receive-only (usable by sensors but not remotes). diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown deleted file mode 100644 index 7acfae7676..0000000000 --- a/source/_components/knx.markdown +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: page -title: "KNX" -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: Hub -ha_release: 0.24 -ha_iot_class: "Local Polling" ---- - - -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. - -

    - Please note, the `knx` platform does not support Windows and needs at least python version 3.5. -

    - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](/components/binary_sensor.knx) -- [Cover](/components/cover.knx) -- [Sensor](/components/sensor.knx) -- [Switch](/components/switch.knx) -- [Light](/components/light.knx) -- [Thermostat](/components/climate.knx) -- [Notify](/components/notify.knx) -- [Scene](/components/scene.knx) - -### {% linkable_title Configuration %} - -To use your KNX in your installation, add the following lines to your `configuration.yaml` file: - -```yaml -knx: -``` - -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 behavior. - -### {% 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 Exposing sensor values or time to knx bus %} - -KNX component is able to expose time or sensor values to KNX bus. The component will broadcast any change of the exposed value to the KNX bus and answer read requests to the specified group address: - -```yaml -# Example configuration.yaml entry -knx: - expose:: - - type: 'temperature' - entity_id: 'sensor.owm_temperature' - address: '0/0/2' - - type: 'time' - address: '0/0/1' - - type: 'datetime' - address: '0/0/23' -``` - -* **type**: Type of the exposed value. Either time or datetime or any supported type of [KNX Sensor](/components/sensor.knx/) (e.g., "temperature" or "humidity"). -* **entity_id**: Entity id of the HASS component to be exposed. Not necessary for types time and datetime. -* **address**: KNX group address. - - -### {% 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 deleted file mode 100644 index 6431b95454..0000000000 --- a/source/_components/lametric.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -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 deleted file mode 100644 index f362107791..0000000000 --- a/source/_components/light.abode.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Abode Light" -description: "Instructions on 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.ads.markdown b/source/_components/light.ads.markdown deleted file mode 100644 index aaedc1c12f..0000000000 --- a/source/_components/light.ads.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "ADS Light" -description: Instructions on how to set up ADS lights within Home Assistant -date: 2017-10-25 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beckhoff.png -ha_category: Light -ha_release: "0.60" -ha_iot_class: "Local Push" ---- - -The `ads` light platform allows you to control your connecte ADS lights. - -To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` -file: - -```yaml -# Example configuration.yaml entry -light: - - platform: ads - adsvar: GVL.enable_light - adsvar_brightness: GVL.brightness -``` - -{% configuration %} - adsvar: - required: true - description: The name of the boolean variable that switches the light on - type: string - adsvar_brightness: - required: false - description: The name of the variable that controls the brightness, use an unsigned integer on the PLC side - type: integer - name: - required: false - description: An identifier for the Light in the frontend - type: string -{% endconfiguration %} diff --git a/source/_components/light.avion.markdown b/source/_components/light.avion.markdown deleted file mode 100644 index 68c40b1aac..0000000000 --- a/source/_components/light.avion.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "Avi-on" -description: "Instructions on how to setup GE Avi-on Bluetooth dimmers within Home Assistant." -date: 2017-01-17 23:17 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Light -ha_iot_class: "Assumed State" -logo: avi-on.png -ha_release: 0.37 ---- - -Support for the Avi-on Bluetooth dimmer switch [Avi-On](http://avi-on.com/). - -To enable these lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: avion -``` - -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: - 00:21:4D:00:00:01: - name: Light 1 - api_key: Gr35a/rt3RgaRenl9ag8Ba== - 00:21:3D:20:00:a1: - name: Light 2 - api_key: Gr35a/rt3RgaRenl9ag8Ba== -``` diff --git a/source/_components/light.blinksticklight.markdown b/source/_components/light.blinksticklight.markdown deleted file mode 100644 index c11da280ac..0000000000 --- a/source/_components/light.blinksticklight.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Blinkstick" -description: "Instructions on how to setup Blinkstick lights within Home Assistant." -date: 2015-10-08 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: blinkstick.png -ha_category: Light -ha_release: 0.7.5 -ha_iot_class: "Local Polling" ---- - - -The `blinkstick` platform lets you control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. - -To add blinkstick to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: blinksticklight - serial: BS000795-1.1 - name: Living Room -``` - -Configuration variables: - -- **serial** (*Required*): The serial number of your stick. -- **name** (*Required*): Name of the stick. diff --git a/source/_components/light.blinkt.markdown b/source/_components/light.blinkt.markdown deleted file mode 100644 index ad2d6200f8..0000000000 --- a/source/_components/light.blinkt.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Blinkt!" -description: "Instructions on how to setup Blinkt! RGB LED lights within Home Assistant." -date: 2017-04-30 9:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Light -ha_iot_class: "Local Push" -ha_release: 0.44 ---- - -The `blinkt` light platform lets you control the [Blinkt!](https://shop.pimoroni.com/products/blinkt) board, featuring eight super-bright RGB LEDs. - -To enable `blinkt` in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: blinkt -``` diff --git a/source/_components/light.deconz.markdown b/source/_components/light.deconz.markdown deleted file mode 100644 index 7ee2d59195..0000000000 --- a/source/_components/light.deconz.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "deCONZ lights" -description: "Instructions on how to integrate Zigbee lights from deCONZ into Home Assistant." -date: 2017-11-12 16:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: deconz.jpeg -ha_category: Light -ha_release: "0.61" -ha_iot_class: "Local Push" ---- - -See the [deCONZ main component](/components/deconz/) for configuration instructions. - -Entity Ids names will be light.device_name, where device_name is defined in deCONZ. Light groups created in deCONZ will be created in Home Assistant as lights named light.group_name_in_deconz, allowing the user to control groups of lights with only a single API call to deCONZ. - -#### {% linkable_title Verified to be supported sensors %} - -- IKEA Trådfri bulb E14 WS opal 400lm -- IKEA Trådfri Bulb E27 WS Opal 980lm -- IKEA Trådfri Bulb E27 WS Opal 1000lm -- IKEA Trådfri Bulb GU10 W 400lm -- OSRAM Flex RGBW -- OSRAM Gardenpole RGBW -- Philips Hue White A19 -- Philips Hue White Ambiance A19 diff --git a/source/_components/light.decora.markdown b/source/_components/light.decora.markdown deleted file mode 100644 index b9f0063e3f..0000000000 --- a/source/_components/light.decora.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "Leviton Decora" -description: "Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant." -date: 2017-01-18 22:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Light -ha_iot_class: "Local Polling" -logo: leviton.png -ha_release: 0.37 ---- - -Support for the Decora Bluetooth dimmer switch [Leviton](http://www.leviton.com/OA_HTML/SectionDisplay.jsp?section=76697&minisite=10251). - -The API key can be obtained by downloading [this git repository](https://github.com/mjg59/python-decora) and running the `read_key.py` script with the Bluetooth address of the switch as the first argument. Hold the switch in the off position until the green status LED starts flashing before running the script. The output is the API key. - -To enable these lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: decora - devices: - 00:21:4D:00:00:01: - api_key: 0x12345678 -``` - -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 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 deleted file mode 100644 index 7fc68d0dcf..0000000000 --- a/source/_components/light.decora_wifi.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -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: "Cloud 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 via the MyLeviton API. - -Supported devices (tested): - -- [DW6HD1-BZ](https://www.leviton.com/en/products/dw6hd-1bz) (Decora Smart Wi-Fi 600W Dimmer) -- [DW15S-1BZ](https://www.leviton.com/en/products/dw15s-1bz) (Decora Smart Wi-Fi 15A Switch) - -To enable these lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: decora_wifi - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: Your "My Leviton" app email address/user name. - required: true - type: string -password: - description: Your "My Leviton" app password. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/light.enocean.markdown b/source/_components/light.enocean.markdown deleted file mode 100644 index 9203497d93..0000000000 --- a/source/_components/light.enocean.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "EnOcean Light" -description: "Instructions on how to set up EnOcean lights within Home Assistant." -date: 2016-05-25 23:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: enocean.png -ha_category: Light -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - -An EnOcean light can take many forms. Currently only one type has been tested: Eltako FUD61 dimmer. - - -To use your EnOcean device, you first have to set up your [EnOcean hub](/components/enocean/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: enocean - id: [0x01,0x90,0x84,0x3C] - sender_id: [0xFF,0xC6,0xEA,0x04] -``` - -Configuration variables: - -- **id** (*Required*): The ID of the device. This is the 4 bytes long number written on the dimmer. -- **sender_id** (*Required*): The Sender ID of the device. This is a 4 bytes long number. -- **name** (*Optional*): An identifier for the Ligh in the frontend. diff --git a/source/_components/light.eufy.markdown b/source/_components/light.eufy.markdown deleted file mode 100644 index d8596c0048..0000000000 --- a/source/_components/light.eufy.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Eufy Lights" -description: "Instructions on how to integrate Eufy LED lights into Home Assistant." -date: 2018-04-09 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eufy.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.68 ---- - -The `eufy` platform allows you to control your [Eufy](http://www.eufylife.com) lights from within Home Assistant. - -They will be automatically discovered if the [Eufy](/components/eufy/) component is enabled. - diff --git a/source/_components/light.flux_led.markdown b/source/_components/light.flux_led.markdown deleted file mode 100644 index 871ba222e2..0000000000 --- a/source/_components/light.flux_led.markdown +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: page -title: "Flux Led/MagicLight" -description: "Instructions on how to setup Flux led/MagicLight within Home Assistant." -date: 2015-07-17 20:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: magic_light.png -ha_category: Light -ha_iot_class: "Local Polling" -featured: false -ha_release: 0.25 ---- - -The `flux_led` support is integrated into Home Assistant as a light platform. Several brands of both bulbs and controllers use the same protocol and they have the HF-LPB100 chipset in common. The chances are high that your bulb or controller (eg. WiFi LED CONTROLLER) will work if you can control the device with the MagicHome app. - -Example of bulbs: - -- [Flux Smart Lighting](http://www.fluxsmartlighting.com/) -- [MagicLight® Plus - WiFi Smart LED Light Bulb4](https://www.amazon.com/gp/product/B00NOC93NG) -- [Flux WiFi Smart LED Light Bulb4](http://smile.amazon.com/Flux-WiFi-Smart-Light-Bulb/dp/B01A6GHHTE) -- [WIFI smart LED light Bulb1](http://smile.amazon.com/gp/product/B01CS1EZYK) - -Examples of controllers: - -- [Ledenet WiFi RGBW Controller](https://www.amazon.com/gp/product/B01DY56N8U) -- [SUPERNIGHT WiFi Wireless LED Smart Controller](https://www.amazon.com/dp/B01JZ2SI6Q) - - -### {% linkable_title Configuration Details %} - - -To enable those lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: flux_led -``` - -Configuration variables: - -- **automatic_add** (*Optional*): To enable the automatic addition of lights on startup. -- **devices** (*Optional*): A list of devices with their ip address - -Configuration variables within devices list: - -- **name** (*Optional*): A friendly name for the device. -- **mode** (*Optional*): The chosen brightness mode; options are 'rgbw' and 'rgb', defaults to rgbw. -- **protocol** (*Optional*): Set this to 'ledenet' if you are using a ledenet bulb. - - -

    -Depending on your controller or bulb type, there are two ways to configure brightness. -The component defaults to rgbw. If your device has a separate white channel, you do not need to specify anything else; changing the white value will adjust the brightness of white channel keeping rgb color constant. However, if your device does not have a separate white channel, you will need to set the mode to rgb. In this mode, the device will keep the same color, and adjust the rgb values to dim or brighten the color. -

    - - -### {% linkable_title Example configuration %} - -Will automatically search and add all lights on start up: - -```yaml -# Example configuration.yaml entry -light: - - platform: flux_led - automatic_add: True -``` - -Will add two lights with given name and create an automation rule to randomly set color each 45 seconds: - -```yaml -light: -# Example configuration.yaml entry - - platform: flux_led - devices: - 192.168.0.106: - name: flux_lamppost - 192.168.0.109: - name: flux_living_room_lamp - -automation: - alias: random_flux_living_room_lamp - trigger: - platform: time - seconds: '/45' - action: - service: light.turn_on - data: - entity_id: light.flux_living_room_lamp - effect: random -``` - -Will add a light without the white mode: - -```yaml - 192.168.1.10: - name: NAME - mode: "rgb" -``` - -Will add a light with rgb+white mode (default). White and RGB channels can be adjusted independently using a slider and color picker respectively. - -```yaml - 192.168.1.10: - name: NAME - mode: "rgbw" -``` - -Some devices such as the Ledenet RGBW controller use a slightly different protocol for communicating the brightness to each color channel. If your device is only turning on or off but not changing color or brightness try adding the LEDENET protocol. - -```yaml -light: - - platform: flux_led - devices: - 192.168.1.10: - name: NAME - protocol: 'ledenet' -``` - -### {% linkable_title Effects %} - -The FLUX_LED light offers a number of effects which are not included in other lighting packages. These can be selected from the front-end, or sent in the effect field of the light TURN_ON command. - -| Effect Name | Description | -|------------------------------------------------------------------------------------------------|--------------------------------------------------------------------| -| colorloop | Smoothly transitions through the rainbow | -| colorjump | Jumps through seven different rainbow colors. | -| colorstrobe | Strobes each rainbow color in a loop. | -| random | Chooses a random color by selecting random values for R, G, and B | -| red_fade, green_fade, blue_fade, yellow_fade, cyan_fade, purple_fade, white_fade | Fades between the color as indicated in the effect name and black. | -| rg_cross_fade | Fades between red and green. | -| rb_cross_fade | Fades between red and blue. | -| gb_cross_fade | Fades between green and blue | -| red_strobe, green_strobe, blue_strobe, yellow_strobe, cyan_strobe, purple_strobe, white_strobe | Strobes the color indicated by the effect name. | diff --git a/source/_components/light.greenwave.markdown b/source/_components/light.greenwave.markdown deleted file mode 100644 index 16f8e16099..0000000000 --- a/source/_components/light.greenwave.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: Greenwave Reality (TCP Connected) Lights -description: "Instructions on how to set up Greenwave Reality lights within Home Assistant." -date: 2017-11-17 18:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: greenwavereality.png -ha_category: Light -ha_release: 0.61 -ha_iot_class: "Local Polling" ---- - -This component communicates with the Greenwave Reality (TCP Connected) Gateway to allow control of all lights and fixtures registered to the gateway. Bulbs and Fixtures can be created and modified inside the TCP Lighting App for Android and iOS. - -This component has been tested on firmware revisions: - -- 2.0.105 - -To configure the connection to the gateway, add the following to your `configuration.yaml` file: - -```yaml -light: - - platform: greenwave - host: XXX.XXX.XXX.XXX - version: 3 -``` -The version option is the major revision of your firmware, which should be 2 or 3. If you are running Version 2, there are no extra steps. If you are running Version 3, you must press the Sync button on the gateway prior to the first launch of Home Assistant, so a token can be grabbed. Once Home Assistant has started, you can either press the Sync button again or wait for it to time out manually. - -{% configuration %} -host: - description: The IP Address of your Gateway - required: true - type: string -version: - description: Major version of the gateway firmware - required: true - type: integer -{% endconfiguration %} diff --git a/source/_components/light.group.markdown b/source/_components/light.group.markdown deleted file mode 100644 index 4ec8262463..0000000000 --- a/source/_components/light.group.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "Light Group" -description: "Instructions for how to setup light groups within Home Assistant." -date: 2018-02-23 11:41 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Light -ha_release: 0.65 -ha_iot_class: "Local Push" -logo: home-assistant.png ---- - -The group light platform lets you combine multiple lights into one entity. All child lights of a light group can still be used as usual, but controlling the state of the grouped light will forward the command to each child light. - -To enable this platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: group - name: Kitchen Lights - entities: - - light.kitchen_ceiling_lights - - light.kitchen_under_cabinet_lights - - light.kitchen_spot_lights - - light.pendant_lights -``` - -{% configuration %} - name: - description: The name of the light group. Defaults to "Light Group". - required: false - type: string - entities: - description: A list of entities to be included in the light group. - required: true - type: string list -{% endconfiguration %} - -

    - -Example of the light group "Kitchen Lights". -

    - -The supported features of all lights will be added together. For example, if you have one RGB light in a group of otherwise brightness-only lights, the light group will be shown with a color picker. - -## {% linkable_title Script Example %} - -Here's an example of a script using the above light group. - -```yaml -script: - turn_on_kitchen_lights: - alias: Kitchen lights on - sequence: - service: light.turn_on - data: - entity_id: light.kitchen_lights - brightness: 100 -``` diff --git a/source/_components/light.hive.markdown b/source/_components/light.hive.markdown deleted file mode 100644 index 44221f6371..0000000000 --- a/source/_components/light.hive.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Hive Light" -description: "Instructions on how to integrate Hive lights with Home Assistant." -date: 2017-09-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hive.png -ha_category: Light -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `hive` light platform integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light. - -The platform supports the following Hive products: - -- Hive Active Light Dimmable -- Hive Active Light Cool to Warm White -- Hive Active Light Color Changing - - -

    -Full configuration details can be found on the main [Hive component](/components/hive/) page. -

    - - diff --git a/source/_components/light.homekit_controller.markdown b/source/_components/light.homekit_controller.markdown deleted file mode 100644 index f3f7243a10..0000000000 --- a/source/_components/light.homekit_controller.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "HomeKit Light" -description: "Instructions how to setup HomeKit lights within Home Assistant." -date: 2017-03-19 21:08 -sidebar: true -comments: false -sharing: true -footer: true -logo: apple-homekit.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.68 ---- - -To get your HomeKit lights working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/). diff --git a/source/_components/light.homematic.markdown b/source/_components/light.homematic.markdown deleted file mode 100644 index 86249ce98e..0000000000 --- a/source/_components/light.homematic.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Homematic Light" -description: "Instructions on how to integrate Homematic lights within Home Assistant." -date: 2016-06-28 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Light -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - - -The `homematic` light platform lets you control [Homematic](http://www.homematic.com/) lights through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. \ No newline at end of file diff --git a/source/_components/light.hue.markdown b/source/_components/light.hue.markdown deleted file mode 100644 index 59e8b8e970..0000000000 --- a/source/_components/light.hue.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Philips Hue Light" -description: "Instructions on how to integrate Philips Hue lights into Home Assistant." -date: 2015-03-23 20:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: philips_hue.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: pre 0.7 ---- - -The Philips Hue light platform allows you to control your Philips Hue lights. - -This component will automatically add `Lights` configured on your Hue bridges. - -The requirement is that you have setup your [Philips Hue bridge](/components/hue/). diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown deleted file mode 100644 index 7cba5e18f4..0000000000 --- a/source/_components/light.hyperion.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Hyperion" -description: "Instructions on how to integrate Hyperion into Home Assistant." -date: 2015-10-25 22:43 -sidebar: true -comments: false -sharing: true -footer: true -logo: hyperion.png -ha_category: Light -ha_release: 0.7.6 -ha_iot_class: "Local Polling" ---- - -The `hyperion` platform allows you to integrate your [Hyperion](https://hyperion-project.org/wiki) into Home Assistant. Hyperion is an open source Ambilight implementation which runs on many platforms. - -To use your Hyperion light in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: hyperion - host: IP_ADDRESS -``` - -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`. -- **hdmi_priority** (*Optional*): The priority of the HDMI grabber of this Hyperion instance, note that this priority must be higher than all other priorities used for correct behavior. Defaults to `880`. -- **default_color** (*Optional*): The color of the light. Defaults to `[255, 255, 255]`. -- **effect_list** (*Optional*): The list of effects that can be used. Defaults to `['HDMI', 'Cinema brighten lights', 'Cinema dim lights', 'Knight rider', 'Blue mood blobs', 'Cold mood blobs', 'Full color mood blobs', 'Green mood blobs', 'Red mood blobs', 'Warm mood blobs', 'Police Lights Single', 'Police Lights Solid', 'Rainbow mood', 'Rainbow swirl fast', 'Rainbow swirl', 'Random', 'Running dots', 'System Shutdown', 'Snake', 'Sparks Color', 'Sparks', 'Strobe blue', 'Strobe Raspbmc', 'Strobe white', 'Color traces', 'UDP multicast listener', 'UDP listener', 'X-Mas']`. diff --git a/source/_components/light.iglo.markdown b/source/_components/light.iglo.markdown deleted file mode 100644 index 5bc12ba1d6..0000000000 --- a/source/_components/light.iglo.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "iGlo" -description: "Instructions on how to integrate iGlo lights into Home Assistant." -date: 2017-12-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: iglo.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.61 ---- - -The `iglo` platform allows you to integrate your [iGlo Lights](https://www.youtube.com/watch?v=oHTS9ji_v-s) into Home Assistant. - -To use your iGlo light in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: iglo - host: 192.168.1.10 -``` - -{% configuration %} -host: - required: true - description: The IP address for connecting to the light. - type: string -name: - required: false - description: The name for this light. - default: iGlo Light - type: string -port: - required: false - description: The port used to connect to the light. - default: 8080 - type: integer -{% endconfiguration %} diff --git a/source/_components/light.ihc.markdown b/source/_components/light.ihc.markdown deleted file mode 100644 index 214f19564b..0000000000 --- a/source/_components/light.ihc.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: page -title: "IHC Light" -description: "Instructions on how to integrate IHC lights within Home Assistant." -date: 2017-11-27 13:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: ihc.png -ha_category: Light -ha_release: 0.62 -ha_iot_class: "Local Push" ---- - -Before you can use the IHC Light platform, you must setup the [IHC Component](/components/ihc/) - -When auto setup is enabled the following products will be found in the IHC project and setup as light devices: - -* Wireless lamp outlet dimmer -* Wireless dimmer -* Wireless combi dimmer 4 buttons -* Wireless lamp outlet relay -* Wireless combi relay 4 buttons -* Wireless mobile dimmer -* Dataline lamp outlet - -To manually configure IHC lights insert this section in your configuration: - -```yaml -light: - - platform: ihc - lights: - - id: 12345 - name: tablelight - dimmable: True - - id: 12346 - name: anotherlight - ... -``` - -{% configuration %} -lights: - description: List of lights to setup manually - required: false - type: map - keys: - dimmable: - description: Set to True if the IHC resource is a light level - required: false - type: bool - default: false - id: - description: The IHC resource id. - required: true - type: int - name: - description: The name of the component - required: false - type: string -{% endconfiguration %} - -In the example above 12345 is ihc resource id and "tablelight" is the name. -The IHC resource id can be a light level for dimmers or a boolean output of a relay. -For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) diff --git a/source/_components/light.insteon_hub.markdown b/source/_components/light.insteon_hub.markdown deleted file mode 100644 index f581706b92..0000000000 --- a/source/_components/light.insteon_hub.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Insteon Hub Light" -description: "Instructions on how to setup the Insteon Hub Lights within Home Assistant." -date: 2016-09-10 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Light -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - -The `insteon_hub` light component lets you control your lights connected to an [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. - -To get your Insteon Hub fan working with Home Assistant, follow the instructions for the general [Insteon Hub component](/components/insteon_hub/). diff --git a/source/_components/light.insteon_local.markdown b/source/_components/light.insteon_local.markdown deleted file mode 100644 index b9aacb3250..0000000000 --- a/source/_components/light.insteon_local.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Insteon (Local) Light" -description: "Instructions on how to setup the Insteon Hub Lights locally within Home Assistant." -date: 2016-12-18 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Light -ha_version: 0.36 -ha_iot_class: "Local Push" ---- - -The `insteon_local` light component lets you control your lights connected to an [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. - -To get your insteon lights working with Home Assistant, follow the instructions for the general [Insteon local component](/components/insteon_local/). The lights will be automatically disovered and added to Home Assistant. The device names will be the Insteon address of the lights. diff --git a/source/_components/light.insteon_plm.markdown b/source/_components/light.insteon_plm.markdown deleted file mode 100644 index 65026cf576..0000000000 --- a/source/_components/light.insteon_plm.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Insteon PLM Light" -description: "Instructions on how to setup Insteon PLM lights locally within Home Assistant." -date: 2017-02-19 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Light -ha_iot_class: "Local Push" -ha_version: 0.39 ---- - -The `insteon_plm` light platform lets you control your dimmable light switches through an INSTEON PowerLinc Modem (PLM) device connected directly to your system on an USB or serial port. To add support, set up the primary [insteon_plm](/components/insteon_plm/) component. - diff --git a/source/_components/light.isy994.markdown b/source/_components/light.isy994.markdown deleted file mode 100644 index 6c03413c8b..0000000000 --- a/source/_components/light.isy994.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ISY994 Light" -description: "Instructions on how to integrate ISY994 lights into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Light -ha_iot_class: "Local Push" ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) light from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/light.knx.markdown b/source/_components/light.knx.markdown deleted file mode 100644 index b3cf614a1c..0000000000 --- a/source/_components/light.knx.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "KNX Light" -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: Light -ha_release: 0.44 -ha_iot_class: "Local Polling" ---- - - -The `knx` light component is used as in interface to switching/light actuators. - -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: Kitchen-Light-1 - address: '1/0/9' - brightness_address: '1/0/11' -``` - -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 deleted file mode 100644 index 04f444540f..0000000000 --- a/source/_components/light.lifx.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: page -title: "LIFX" -description: "Instructions on how to integrate LIFX into Home Assistant." -date: 2016-01-27 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lifx.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.12 ---- - -The `lifx` platform allows you to integrate your [LIFX](http://www.lifx.com) into Home Assistant. - -_Please note, the `lifx` platform does not support Windows. The `lifx_legacy` platform (supporting basic functionality) can be used instead._ - -```yaml -# Example configuration.yaml entry -light: - - platform: lifx -``` -Configuration variables: - -- **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 %} - -The LIFX bulbs allow a change of color and brightness even when they are turned off. This way you can control the light during the day so its settings are correct when events for turning on are received, for example from motion detectors or external buttons. - -The normal `light.turn_on` call cannot be used for this because it always turns the power on. Thus, LIFX has its own service call that allows color changes without affecting the current power state. - -### {% linkable_title Service `light.lifx_set_state` %} - -Change the light to a new state. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `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. - -## {% linkable_title Light effects %} - -The LIFX platform supports several light effects. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) service, for example like this: -```yaml -automation: - - alias: ... - trigger: - # ... - action: - - service: light.turn_on - data: - entity_id: light.office, light.kitchen - effect: lifx_effect_pulse -``` - -However, if you want to fully control a light effect, you have to use its dedicated service call, like this: -```yaml -script: - colorloop_start: - alias: 'Start colorloop' - sequence: - - service: light.lifx_effect_colorloop - data: - entity_id: group.livingroom - brightness: 255 - period: 10 - spread: 30 -          change: 35 -``` - -The available light effects and their options are listed below. - -### {% linkable_title Service `light.lifx_effect_pulse` %} - -Run a flash effect by changing to a color and then back. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `color_name` | A color name such as `red` or `green`. -| `rgb_color` | A list containing three integers representing the RGB color you want the light to be. -| `brightness` | Integer between 0 and 255 for how bright the color should be. -| `period` | The duration of a single pulse (in seconds). -| `cycles` | The total number of pulses. -| `mode` | The way to change between colors. Valid modes: `blink` (default), `breathe`, `ping`, `strobe`, `solid`. -| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). - -### {% linkable_title Service `light.lifx_effect_colorloop` %} - -Run an effect with colors looping around the color wheel. All participating lights will coordinate to keep similar (but not identical) colors. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `brightness` | Number between 0 and 255 indicating brightness of the effect. Leave this out to maintain the current brightness of each participating light. -| `period` | Duration (in seconds) between starting a new color change. -| `transition` | Duration (in seconds) where lights are actively changing color. -| `change` | Hue movement per period, in degrees on a color wheel (ranges from 0 to 359). -| `spread` | Maximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359). -| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True). - -### {% linkable_title Service `light.lifx_effect_stop` %} - -Run an effect that does nothing, thereby stopping any other effect that might be running. - -| Service data attribute | Description | -| ---------------------- | ----------- | -| `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown deleted file mode 100644 index 2dcf4d9c7a..0000000000 --- a/source/_components/light.limitlessled.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: page -title: "LimitlessLED" -description: "Instructions on how to setup LimitlessLED within Home Assistant." -date: 2015-12-03 13:00 -sidebar: true -layout: page -comments: false -sharing: true -footer: true -logo: limitlessled_logo.png -ha_category: Light -ha_iot_class: "Assumed State" -ha_release: pre 0.7 ---- - -`limitlessled` can control your [LimitlessLED](http://www.limitlessled.com/) lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight, or iLight. - -### {% 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`, `white` and `dimmer` group to the same group number, effectively allowing 16 groups (4 `rgbww`, 4 `rgbw`, 4 `white` and 4 `dimmer`) per bridge. - -To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - platform: limitlessled - bridges: - - host: 192.168.1.10 - groups: - - number: 1 - name: Bedroom - - number: 2 - type: rgbw - name: Bathroom - - number: 3 - type: rgbw - name: Kitchen - fade: on - - number: 4 - type: dimmer - name: Livingroom - - host: 192.168.1.11 - groups: - - number: 1 - name: Living Room & Hall - - number: 1 - type: bridge-led - name: Bridge Light -``` - -Configuration variables: - -- **bridges** array (*Required*): - - **host** (*Required*): IP address of the device, eg. `192.168.1.32` - - **version** (*Optional*): Bridge version (default is `6`). - - **port** (*Optional*): Bridge port. Defaults to 5987. For older bridges than v6 choose `8899`. - - **groups** array (*Required*): The list of available groups. - - **number** (*Required*): Group number (`1`-`4`). Corresponds to the group number on the remote. These numbers may overlap only if the type is different. - - **name** (*Required*): Any name you'd like. Must be unique among all configured groups. - - **type** (*Optional*): Type of group. Choose either `rgbww`, `rgbw`, `white`, `bridge-led` or `dimmer`. `rgbw` is the default if you don't specify this entry. Use `bridge-led` to control the built-in LED of newer WiFi bridges. - - **fade** (*Optional*): Fade behavior. Defaults to `off`. If turned on, the group is faded out before being turned off. This makes for a more pleasing transition at the expense of wall switch usability, since the light will turn back on at the lowest brightness if it is power cycled. - -### {% linkable_title Properties %} - -Refer to the [light]({{site_root}}/components/light/) documentation for general property usage, but keep in mind the following notes specific to LimitlessLED. - -- **RGBWW** (Only supported on v6 bridges) - - *Color*: There are 25,856 color possibilities along the LimitlessLED color spectrum. For colors, hue and saturation can be used, but not lightness. If you select a color with lightness, Home Assistant will calculate the nearest valid LimitlessLED color. In white mode the temperature can be set. - - *Temperature*: There are 101 temperature steps. - - *Brightness*: There are 101 brightness steps. -- **RGBW** - - *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. - - *Temperature*: Wifi bridge v6 supports 101 temperature steps; older versions only 10. - - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 10. -- **Dimmer** (Only supported on v6 bridges) - - This type is for a single color LED dimmer like the 1CH MiLight dimmer module or similar. This type is only supported by the version 6 Wifi bridges. - - *Brightness*: Wifi bridge v6 supports 101 brightness steps. -- **Transitions** - - If a transition time is set, the group will transition between the current settings and the target settings for the duration specified. Transitions from or to white are not possible - the color will change immediately. - -### {% linkable_title Initialization & Synchronization %} - -When starting Home Assistant, the last recorded state will be shown. This might no longer match the actual state of the bulbs. - -If you control your LimitlessLED lights via the MiLight mobile application or other means while Home Assistant is running, Home Assistant can not track those changes and you may observe obsolete information. - -This lack of synchronization is due to a LimitlessLED limitation. - -

    - -

    - -Because LimitlessLED lights may have an obsolete state, Home Assistant shows the power switch as two buttons rather than a toggle. This ensures that the power can be set with a single click even if the assumed state is wrong. You can change to use the power toggle with [Customize](/docs/configuration/customizing-devices/): - -```yaml -homeassistant: - customize_domain: - light: - assumed_state: false -``` diff --git a/source/_components/light.litejet.markdown b/source/_components/light.litejet.markdown deleted file mode 100644 index fedc9fa2be..0000000000 --- a/source/_components/light.litejet.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "LiteJet Light" -description: "Instructions on how to setup the LiteJet lights within Home Assistant." -date: 2016-10-26 13:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Light -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - -To get your LiteJet lights working with Home Assistant, follow the instructions for the general [LiteJet component](/components/litejet/). diff --git a/source/_components/light.lutron.markdown b/source/_components/light.lutron.markdown deleted file mode 100644 index 9e380e8d7c..0000000000 --- a/source/_components/light.lutron.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Lutron Light" -description: "Instructions on how to setup the Lutron lights within Home Assistant." -date: 2017-04-30 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Light -ha_iot_class: "Local Polling" ---- - -To get your Lutron lights working with Home Assistant, follow the instructions for the general [Lutron component](/components/lutron/). diff --git a/source/_components/light.lutron_caseta.markdown b/source/_components/light.lutron_caseta.markdown deleted file mode 100644 index 4c61accdc6..0000000000 --- a/source/_components/light.lutron_caseta.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "Lutron Caseta Light" -description: "Instructions on how to setup the Lutron Caseta lights within Home Assistant." -date: 2017-04-30 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Light -ha_iot_class: "Local Polling" ---- - -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 deleted file mode 100644 index 5eb3083f2d..0000000000 --- a/source/_components/light.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: page -title: "Lights" -description: "Instructions on how to setup your lights with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true ---- - -This component allows you to track and control various light bulbs. Read the platform documentation for your particular light hardware to learn how to enable it. - -

    -The light component supports multiple entries in configuration.yaml by appending a sequential number to the section: light 2:, light 3: etc. -

    - -### {% linkable_title Service `light.turn_on` %} - -Turns one light on or multiple lights on using [groups]({{site_root}}/components/group/). - -Most lights do not support all attributes. You can check the platform documentation of your particular light for hints, but in general, you will have to try things out and see what works. - -| 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 | 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 an xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. -| `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. -| `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. You can find a great chart here: [Hue Color Chart](https://developers.meethue.com/documentation/core-concepts#color_gets_more_complicated). -| `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB. Note that the specified RGB value will not change the light brightness, only the color. -| `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/css-color-3/#svg-color) are supported. -| `brightness` | yes | Integer between 0 and 255 for how bright the color should be. -| `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100). -| `flash` | yes | Tell light to flash, can be either value `short` or `long`. -| `effect`| yes | Applies an effect such as `colorloop` or `random`. - -

    -In order to apply attributes to an entity, you will need to add `data:` to the configuration. See example below -

    - -```yaml -# Example configuration.yaml entry -automation: -- id: one - alias: Turn on light when motion is detected - trigger: - - platform: state - entity_id: binary_sensor.motion_1 - to: 'on' - action: - - service: light.turn_on - data: - entity_id: light.living_room - brightness: 255 - kelvin: 2700 -``` - -### {% linkable_title Service `light.turn_off` %} - -Turns one or multiple lights off. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | 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. - -### {% linkable_title Service `light.toggle` %} - -Toggles the state of one or multiple lights using [groups]({{site_root}}/components/group/). - -*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. - -| 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. diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown deleted file mode 100644 index 9721e9d6c9..0000000000 --- a/source/_components/light.mochad.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Mochad Light" -description: "Instructions on how to integrate X10 Mochad lights 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` light 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.yaml 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 light. Default is: x10_light_dev_*address*. -- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. -- **brightness_levels** (*Optional*): The number of brightness levels the X10 light device supports. This can either be 32, 64, or 256 (note that the max -value sent to the device will be n-1 because it starts at 0) diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown deleted file mode 100644 index e92f859fb7..0000000000 --- a/source/_components/light.mqtt.markdown +++ /dev/null @@ -1,271 +0,0 @@ ---- -layout: page -title: "MQTT Light" -description: "Instructions on how to setup MQTT lights within Home Assistant." -date: 2015-11-13 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Light -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. - -## {% linkable_title Configuration %} - -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT 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 the device (message from `state_topic`). - -Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect light operation. - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt - command_topic: "office/rgb1/light/switch" -``` - -{% configuration %} -name: - description: The name of the light. - required: false - type: string - default: MQTT Light -command_topic: - description: The MQTT topic to publish commands to change the switch state. - required: true - type: string -brightness_command_topic: - description: The MQTT topic to publish commands to change the light’s brightness. - required: false - type: string -brightness_scale: - description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." - required: false - type: integer - default: 255 -brightness_state_topic: - description: The MQTT topic subscribed to receive brightness state updates. - required: false - type: string -brightness_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the brightness value." - required: false - type: string -color_temp_command_topic: - description: The MQTT topic to publish commands to change the light’s color temperature state. The color temperature command slider has a range of 153 to 500 mireds (micro reciprocal degrees). - required: false - type: string -color_temp_state_topic: - description: The MQTT topic subscribed to receive color temperature state updates. - required: false - type: string -color_temp_value_template: - description: "Defines a [template](/topics/templating/) to extract the color temperature value." - required: false - type: string -effect_command_topic: - description: "The MQTT topic to publish commands to change the light's effect state." - required: false - type: string -effect_state_topic: - description: The MQTT topic subscribed to receive effect state updates. - required: false - type: string -effect_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the effect value." - required: false - type: string -effect_list: - description: The list of effects the light supports. - required: false - type: string list -on_command_type: - description: "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." - required: false - type: string -optimistic: - description: Flag that defines if switch works in optimistic mode. - required: false - type: boolean - default: "`true` if no state topic defined, else `false`." -payload_on: - description: The payload that represents enabled state. - required: false - type: string - default: "ON" -payload_off: - description: The payload that represents disabled state. - required: false - type: string - default: "OFF" -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -rgb_command_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`." - required: false - type: string -rgb_command_topic: - description: "The MQTT topic to publish commands to change the light's RGB state." - required: false - type: string -rgb_state_topic: - description: The MQTT topic subscribed to receive RGB state updates. The expected payload is the RGB values separated by commas, for example `255,0,127`. - required: false - type: string -rgb_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value." - required: false - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -state_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. The template should match the payload `on` and `off` values, so if your light uses `power on` to turn on, your `state_value_template` string should return `power on` when the switch is on. For example if the message is just `on`, your `state_value_template` should be `power {{ value }}`." - required: false - type: string -white_value_command_topic: - description: "The MQTT topic to publish commands to change the light's white value." - required: false - type: string -white_value_state_topic: - description: The MQTT topic subscribed to receive white value updates. - required: false - type: string -white_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the white value." - required: false - type: string -xy_command_topic: - description: "The MQTT topic to publish commands to change the light's XY state." - required: false - type: string -xy_state_topic: - description: The MQTT topic subscribed to receive XY state updates. - required: false - type: string -xy_value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the XY value." - required: false - type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -

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

    - -

    - XY and RGB can not be used at the same time. If both are provided, XY overrides RGB. -

    - -## {% linkable_title Comparison of light MQTT platforms %} - -| Function | [`mqtt`](/components/light.mqtt/) | [`mqtt_json`](/components/light.mqtt_json/) | [`mqtt_template`](/components/light.mqtt_template/) | -|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| -| Brightness | ✔ | ✔ | ✔ | -| Color temperature | ✔ | ✔ | ✔ | -| Effects | ✔ | ✔ | ✔ | -| Flashing | ✘ | ✔ | ✔ | -| RGB Color | ✔ | ✔ | ✔ | -| Transitions | ✘ | ✔ | ✔ | -| XY Color | ✔ | ✔ | ✘ | -| HS Color | ✘ | ✔ | ✘ | -| White Value | ✔ | ✔ | ✔ | - -## {% linkable_title Examples %} - -In this section you will find some real life examples of how to use this sensor. - -### {% linkable_title Brightness and RGB support %} - -To enable a light with brightness and RGB support in your installation, add the following to your `configuration.yaml` file: - -{% raw %} -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt - name: "Office Light RGB" - state_topic: "office/rgb1/light/status" - command_topic: "office/rgb1/light/switch" - brightness_state_topic: "office/rgb1/brightness/status" - brightness_command_topic: "office/rgb1/brightness/set" - rgb_state_topic: "office/rgb1/rgb/status" - rgb_command_topic: "office/rgb1/rgb/set" - state_value_template: "{{ value_json.state }}" - brightness_value_template: "{{ value_json.brightness }}" - rgb_value_template: "{{ value_json.rgb | join(',') }}" - qos: 0 - payload_on: "ON" - payload_off: "OFF" - optimistic: false -``` -{% endraw %} - -### {% linkable_title Brightness and no RGB support %} - -To enable a light with brightness (no RGB version) in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt - name: "Office light" - state_topic: "office/light/status" - command_topic: "office/light/switch" - brightness_state_topic: 'office/light/brightness' - brightness_command_topic: 'office/light/brightness/set' - qos: 0 - payload_on: "ON" - payload_off: "OFF" - 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.yaml entry -light: - - platform: mqtt - name: "Brightness light" - state_topic: "office/light/status" - command_topic: "office/light/switch" - payload_off: "OFF" - brightness_state_topic: 'office/light/brightness' - brightness_command_topic: 'office/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). -- Another [example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_rgb_light) to control a RGB LED (on/off, brightness, and colors). diff --git a/source/_components/light.mqtt_json.markdown b/source/_components/light.mqtt_json.markdown deleted file mode 100644 index 6e70c8be89..0000000000 --- a/source/_components/light.mqtt_json.markdown +++ /dev/null @@ -1,265 +0,0 @@ ---- -layout: page -title: "MQTT JSON Light" -description: "Instructions for how to setup MQTT JSON lights within Home Assistant." -date: 2016-08-09 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Light -ha_iot_class: depends -ha_release: 0.26 ---- - -The `mqtt_json` light platform lets you control a MQTT-enabled light that can receive [JSON](https://en.wikipedia.org/wiki/JSON) messages. - -This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing and white values. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed: - -```json -{ - "brightness": 255, - "color_temp": 155, - "color": { - "r": 255, - "g": 180, - "b": 200, - "x": 0.406, - "y": 0.301, - "h": 344.0, - "s": 29.412 - }, - "effect": "colorloop", - "state": "ON", - "transition": 2, - "white_value": 150 -} -``` - -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. - -When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). - -Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly. - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - command_topic: "home/rgb1/set" -``` - -{% configuration %} -name: - description: The name of the light. - required: false - type: string - default: MQTT JSON Light -command_topic: - description: The MQTT topic to publish commands to change the light’s state. - required: true - type: string -brightness: - description: Flag that defines if the light supports brightness. - required: false - type: boolean - default: false -brightness_scale: - description: "Defines the maximum brightness value (i.e. 100%) of the MQTT device." - required: false - type: integer - default: 255 -color_temp: - description: Flag that defines if the light supports color temperature. - required: false - type: boolean - default: false -effect: - description: Flag that defines if the light supports effects. - required: false - type: boolean - default: false -effect_list: - description: The list of effects the light supports. - required: false - type: string list -flash_time_long: - description: The duration, in seconds, of a “long” flash. - required: false - type: integer - default: 10 -flash_time_short: - description: The duration, in seconds, of a “short” flash. - required: false - type: integer - default: 2 -optimistic: - description: Flag that defines if the light works in optimistic mode. - required: false - type: boolean - default: "`true` if no state topic defined, else `false`." -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -rgb: - description: Flag that defines if the light supports RGB colors. - required: false - type: boolean - default: false -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -white_value: - description: Flag that defines if the light supports white values. - required: false - type: boolean - default: false -xy: - description: Flag that defines if the light supports XY colors. - required: false - type: boolean - default: false -hs: - description: Flag that defines if the light supports HS colors. - required: false - type: boolean - default: false -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -

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

    - -

    - RGB, XY and HSV can not be used at the same time in `state_topic` messages. Make sure that only one of the color models is in the "color" section of the state MQTT payload. -

    - -## {% linkable_title Comparison of light MQTT platforms %} - -| Function | [`mqtt`](/components/light.mqtt/) | [`mqtt_json`](/components/light.mqtt_json/) | [`mqtt_template`](/components/light.mqtt_template/) | -|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| -| Brightness | ✔ | ✔ | ✔ | -| Color temperature | ✔ | ✔ | ✔ | -| Effects | ✔ | ✔ | ✔ | -| Flashing | ✘ | ✔ | ✔ | -| RGB Color | ✔ | ✔ | ✔ | -| Transitions | ✘ | ✔ | ✔ | -| XY Color | ✔ | ✔ | ✘ | -| HS Color | ✘ | ✔ | ✘ | -| White Value | ✔ | ✔ | ✔ | - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Brightness and RGB support %} - -To enable a light with brightness and RGB support in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/rgb1" - command_topic: "home/rgb1/set" - brightness: true - rgb: true -``` - -### {% linkable_title Brightness and no RGB support %} - -To enable a light with brightness (but no color support) in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/rgb1" - command_topic: "home/rgb1/set" - brightness: true -``` - -### {% linkable_title Brightness Scaled %} - -To enable a light using a brightness scale other than 8bit the `brightness_scale` option may be added to denote the "fully on" value: -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_json - name: mqtt_json_light_1 - state_topic: "home/light" - command_topic: "home/light/set" - brightness: true - brightness_scale: 4095 -``` - -Home Assistant will then convert its 8bit value in the message to and from the device: - -```json -{ - "brightness": 4095, - "state": "ON" -} -``` - -### {% linkable_title HS Color %} - -To use a light with hue+saturation as the color model, set `hs` to `true` in the platform configuration: - -```yaml -light: - - platform: mqtt_json - name: mqtt_json_hs_light - state_topic: "home/light" - command_topic: "home/light/set" - hs: True -``` - -Home Assistant expects the hue values to be in the range 0 to 360 and the saturation values to be scaled from 0 to 100. For example, the following is a blue color shade: - -```json -{ - "state": "ON", - "color": { - "h": 24.0, - "s": 100.0 - } -} -``` - -### {% linkable_title Implementations %} - -- A full example of custom lighting using this platform and an ESP8266 microcontroller can be found [here](https://github.com/corbanmailloux/esp-mqtt-rgb-led). It supports on/off, brightness, transitions, RGB colors, and flashing. - -- There is also another implementation forked from the above repo, it supports all the same features but is made for addressable LED strips using FastLED on a NodeMCU V3 it can be found [here](https://github.com/JammyDodger231/nodemcu-mqtt-rgb-led). - -- [MQTT JSON Light](https://github.com/mertenats/Open-Home-Automation/tree/master/ha_mqtt_rgbw_light_with_discovery) is another implementation for ESP8266 including [MQTT discovery](/docs/mqtt/discovery/). - -- [esphomelib](https://github.com/OttoWinter/esphomelib) is a library for ESP8266 and ESP32 boards that has many of Home Assistant's MQTT features (like [discovery](/docs/mqtt/discovery/)) pre-implemented and provides high-level abstractions for components such as lights or sensors. - -- [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/components/light.mqtt_json/) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. \ No newline at end of file diff --git a/source/_components/light.mqtt_template.markdown b/source/_components/light.mqtt_template.markdown deleted file mode 100644 index 11b4372672..0000000000 --- a/source/_components/light.mqtt_template.markdown +++ /dev/null @@ -1,198 +0,0 @@ ---- -layout: page -title: "MQTT Template Light" -description: "Instructions for how to setup MQTT Template lights within Home Assistant." -date: 2016-11-06 21:16 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Light -ha_iot_class: depends -ha_release: 0.33 ---- - -The `mqtt_template` light platform lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. -It is format-agnostic so you can use any data format you want (i.e. string, JSON), just configure it with templating. - -This platform supports on/off, brightness, RGB colors, XY colors, color temperature, transitions, short/long flashing, effects and white values. - -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the light will be off. - -When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). - -Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly. - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_template - command_topic: "home/rgb1/set" - command_on_template: "on" - command_off_template: "off" -``` - -{% configuration %} -name: - description: The name of the light. - required: false - type: string - default: MQTT Template Light -effect_list: - description: List of possible effects. - required: false - type: string list -command_topic: - description: The MQTT topic to publish commands to change the light’s state. - required: true - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -command_on_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *on* state changes. Available variables: `state`, `brightness`, `red`, `green`, `blue`, `flash`, `transition` and `effect`." - required: true - type: string -command_off_template: - description: "The [template](/docs/configuration/templating/#processing-incoming-data) for *off* state changes. Available variables: `state` and `transition`." - required: true - type: string -state_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract state from the state payload value." - required: false - type: string -brightness_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract brightness from the state payload value." - required: false - type: string -red_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract red color from the state payload value." - required: false - type: string -green_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract green color from the state payload value." - required: false - type: string -blue_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract blue color from the state payload value." - required: false - type: string -color_temp_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract color temperature from the state payload value." - required: false - type: string -effect_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract effect from the state payload value." - required: false - type: string -white_value_template: - description: "[Template](/docs/configuration/templating/#processing-incoming-data) to extract white value from the state payload value." - required: false - type: string -optimistic: - description: Flag that defines if the light works in optimistic mode. - required: false - type: string - default: "`true` if no state topic or state template is defined, else `false`." -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -

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

    - -## {% linkable_title Comparison of light MQTT platforms %} - -| Function | [`mqtt`](/components/light.mqtt/) | [`mqtt_json`](/components/light.mqtt_json/) | [`mqtt_template`](/components/light.mqtt_template/) | -|-------------------|------------------------------------------------------------|----------------------------------------------------------------------|------------------------------------------------------------------------------| -| Brightness | ✔ | ✔ | ✔ | -| Color temperature | ✔ | ✔ | ✔ | -| Effects | ✔ | ✔ | ✔ | -| Flashing | ✘ | ✔ | ✔ | -| RGB Color | ✔ | ✔ | ✔ | -| Transitions | ✘ | ✔ | ✔ | -| XY Color | ✔ | ✔ | ✘ | -| HS Color | ✘ | ✔ | ✘ | -| White Value | ✔ | ✔ | ✔ | - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this light. - -### {% linkable_title Simple string payload %} - -For a simple string payload with the format `state,brightness,r-g-b` (e.g., `on,255,255-255-255`), add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_template - command_topic: "home/rgb1/set" - state_topic: "home/rgb1/status" - command_on_template: "{% raw %}on,{{ brightness|d }},{{ red|d }}-{{ green|d }}-{{ blue|d }}{% endraw %}" - command_off_template: "off" - state_template: "{% raw %}{{ value.split(',')[0] }}{% endraw %}" # must return `on` or `off` - brightness_template: "{% raw %}{{ value.split(',')[1] }}{% endraw %}" - red_template: "{% raw %}{{ value.split(',')[2].split('-')[0] }}{% endraw %}" - green_template: "{% raw %}{{ value.split(',')[2].split('-')[1] }}{% endraw %}" - blue_template: "{% raw %}{{ value.split(',')[2].split('-')[2] }}{% endraw %}" -``` - -### {% linkable_title JSON payload %} - -For a JSON payload with the format `{"state": "on", "brightness": 255, "color": [255, 255, 255], "effect": "rainbow"}`, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mqtt_template - effect_list: - - rainbow - - colorloop - command_topic: "home/rgb1/set" - state_topic: "home/rgb1/status" - command_on_template: >{% raw %} - {"state": "on" - {%- if brightness is defined -%} - , "brightness": {{ brightness }} - {%- endif -%} - {%- if red is defined and green is defined and blue is defined -%} - , "color": [{{ red }}, {{ green }}, {{ blue }}] - {%- endif -%} - {%- if effect is defined -%} - , "effect": "{{ effect }}" - {%- endif -%} - }{% endraw %} - command_off_template: '{"state": "off"}' - state_template: '{% raw %}{{ value_json.state }}{% endraw %}' - brightness_template: '{% raw %}{{ value_json.brightness }}{% endraw %}' - red_template: '{% raw %}{{ value_json.color[0] }}{% endraw %}' - green_template: '{% raw %}{{ value_json.color[1] }}{% endraw %}' - blue_template: '{% raw %}{{ value_json.color[2] }}{% endraw %}' - effect_template: '{% raw %}{{ value_json.effect }}{% endraw %}' -``` - -### {% linkable_title No brightness or color support %} - -If you don't want brightness, color or effect support, just omit the corresponding configuration sections. - diff --git a/source/_components/light.mysensors.markdown b/source/_components/light.mysensors.markdown deleted file mode 100644 index 5f91aa43fe..0000000000 --- a/source/_components/light.mysensors.markdown +++ /dev/null @@ -1,250 +0,0 @@ ---- -layout: page -title: "MySensors Light" -description: "Instructions on how to integrate MySensors lights into Home Assistant." -date: 2016-10-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Light -ha_release: 0.13 -ha_iot_class: "Local Push" ---- - -Integrates MySensors lights into Home Assistant. See the [main component] for configuration instructions. - -The following actuator types are supported: - -##### MySensors version 1.4 - -S_TYPE | V_TYPE ----------|-------------- -S_DIMMER | V_DIMMER\*, V_LIGHT\* - -##### MySensors version 1.5 and higher - -S_TYPE | V_TYPE -------------|------------- -S_DIMMER | [V_DIMMER\* or V_PERCENTAGE\*], [V_LIGHT\* or V_STATUS\*] -S_RGB_LIGHT | V_RGB*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] -S_RGBW_LIGHT | V_RGBW*, [V_LIGHT\* or V_STATUS\*], [V_DIMMER or V_PERCENTAGE] - -V_TYPES with a star (\*) denote V_TYPES that should be sent at sketch startup. For an S_DIMMER, send both a V_DIMMER/V_PERCENTAGE and a V_LIGHT/V_STATUS message. For an S_RGB_LIGHT, send both a V_RGB and a V_LIGHT/V_STATUS message with a V_DIMMER/V_PERCENTAGE message being optional. Same principal applies for S_RGBW_LIGHT and V_RGBW. - -Sketch should acknowledge a command sent from controller with the same type. If command invokes a change to off state (including a V_PERCENTAGE, V_RGB, or V_RGBW message of zero), only a V_STATUS of zero message should be sent. See sketches below for examples. - -For more information, visit the [serial api] of MySensors. - -### {% linkable_title MySensors 1.x example sketch %} - -```cpp -/* - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/dimmer - */ - -#include -#include - -#define SN "DimmableRGBLED" -#define SV "1.0" -#define CHILD_ID 1 -#define LED_PIN 5 - -MySensor gw; - -char rgb[7] = "ffffff"; // RGB value. -int currentLevel = 0; // Current dimmer level. -MyMessage dimmerMsg(CHILD_ID, V_PERCENTAGE); -MyMessage lightMsg(CHILD_ID, V_STATUS); -MyMessage rgbMsg(CHILD_ID, V_RGB); - -void setup() -{ - gw.begin(incomingMessage); - gw.sendSketchInfo(SN, SV); - gw.present(CHILD_ID, S_RGB_LIGHT); - // Send initial values. - gw.send(lightMsg.set(currentLevel > 0 ? 1 : 0)); - gw.send(dimmerMsg.set(currentLevel)); - gw.send(rgbMsg.set(rgb)); -} - -void loop() -{ - gw.process(); -} - -void incomingMessage(const MyMessage &message) { - if (message.type == V_RGB) { - // Retrieve the RGB value from the incoming message. - // RGB LED not implemented, just a dummy print. - String hexstring = message.getString(); - hexstring.toCharArray(rgb, sizeof(rgb)); - Serial.print("Changing color to "); - Serial.println(rgb); - gw.send(rgbMsg.set(rgb)); - } - - if (message.type == V_STATUS || message.type == V_PERCENTAGE) { - // Retrieve the light status or dimmer level from the incoming message. - int requestedLevel = atoi(message.data); - - // Adjust incoming level if this is a V_LIGHT update [0 == off, 1 == on]. - requestedLevel *= (message.type == V_STATUS ? 100 : 1); - - // Clip incoming level to valid range of 0 to 100 - requestedLevel = requestedLevel > 100 ? 100 : requestedLevel; - requestedLevel = requestedLevel < 0 ? 0 : requestedLevel; - - // Change level value of LED pin. - analogWrite(LED_PIN, (int)(requestedLevel / 100. * 255)); - currentLevel = requestedLevel; - - // Update the gateway with the current V_STATUS and V_PERCENTAGE. - gw.send(lightMsg.set(currentLevel > 0 ? 1 : 0)); - gw.send(dimmerMsg.set(currentLevel)); - } -} -``` - -### {% linkable_title MySensors 2.x example sketch %} - -```cpp -/* - * Example Dimmable Light - * Code adapted from http://github.com/mysensors/MySensors/tree/master/examples/DimmableLight - * - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - */ - -// Enable debug prints -#define MY_DEBUG - -// Enable and select radio type attached -#define MY_RADIO_NRF24 -//#define MY_RADIO_RFM69 - -#include - -#define CHILD_ID_LIGHT 1 - -#define LIGHT_OFF 0 -#define LIGHT_ON 1 - -#define SN "Dimmable Light" -#define SV "1.0" - -int16_t last_state = LIGHT_ON; -int16_t last_dim = 100; - -MyMessage light_msg( CHILD_ID_LIGHT, V_STATUS ); -MyMessage dimmer_msg( CHILD_ID_LIGHT, V_PERCENTAGE ); - -void setup() -{ - update_light(); - Serial.println( "Node ready to receive messages..." ); -} - -void loop() -{ - //In MySensors2.x, first message must come from within loop() - static bool first_message_sent = false; - if ( first_message_sent == false ) { - Serial.println( "Sending initial state..." ); - send_dimmer_message(); - send_status_message(); - first_message_sent = true; - } -} - -void presentation() -{ - // Send the sketch version information to the gateway - sendSketchInfo( SN, SV ); - present( CHILD_ID_LIGHT, S_DIMMER ); -} - -void receive(const MyMessage &message) -{ - //When receiving a V_STATUS command, switch the light between OFF - //and the last received dimmer value - if ( message.type == V_STATUS ) { - Serial.println( "V_STATUS command received..." ); - - int lstate = message.getInt(); - if (( lstate < 0 ) || ( lstate > 1 )) { - Serial.println( "V_STATUS data invalid (should be 0/1)" ); - return; - } - last_state = lstate; - - //If last dimmer state is zero, set dimmer to 100 - if (( last_state == LIGHT_ON ) && ( last_dim == 0 )) { - last_dim=100; - } - - //Update constroller status - send_status_message(); - - } else if ( message.type == V_PERCENTAGE ) { - Serial.println( "V_PERCENTAGE command received..." ); - int dim_value = constrain( message.getInt(), 0, 100 ); - if ( dim_value == 0 ) { - last_state = LIGHT_OFF; - - //Update constroller with dimmer value & status - send_dimmer_message(); - send_status_message(); - } else { - last_state = LIGHT_ON; - last_dim = dim_value; - - //Update constroller with dimmer value - send_dimmer_message(); - } - - } else { - Serial.println( "Invalid command received..." ); - return; - } - - //Here you set the actual light state/level - update_light(); -} - -void update_light() -{ - //For this example, just print the light status to console. - if ( last_state == LIGHT_OFF ) { - Serial.println( "Light state: OFF" ); - } else { - Serial.print( "Light state: ON, Level: " ); - Serial.println( last_dim ); - } -} - -void send_dimmer_message() -{ - send( dimmer_msg.set( last_dim ) ); -} - -void send_status_message() -{ - if ( last_state == LIGHT_OFF ) { - send( light_msg.set( (int16_t)0) ); - } else { - send( light_msg.set( (int16_t)1) ); - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: http://www.mysensors.org/download diff --git a/source/_components/light.mystrom.markdown b/source/_components/light.mystrom.markdown deleted file mode 100644 index 9cc2555fb1..0000000000 --- a/source/_components/light.mystrom.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: page -title: "myStrom WiFi Bulb" -description: "Instructions on how to integrate myStrom WiFi Bulbs into Home Assistant." -date: 2017-04-18 06:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mystrom.png -ha_category: Light -ha_release: 0.43 -ha_iot_class: "Local Polling" ---- - - -The `mystrom` light platform allows you to control your [myStrom](https://mystrom.ch/en/) WiFi Bulbs. - -To use your myStrom WiFi Bulb in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: mystrom - host: IP_ADDRESS - mac: MAC_ADDRESS -``` - -{% configuration %} -host: - description: "The IP address of your myStrom WiFi Bulb, e.g., `192.168.1.32`." - required: true - type: string -mac: - description: "The MAC address of your myStrom WiFi Bulb, e.g., `5AAC8CA542F3`." - required: true - type: string -name: - description: The name to use when displaying this bulb. - required: false - type: string - default: myStrom Bulb -{% endconfiguration %} - -Check if you are able to access the light located at `IP_ADRRESS`. The details about your light is provided as a JSON response. - -```bash -$ curl http://[IP_ADDRESS]/api/v1/device/[MAC_ADDRESS] - -{ - "MAC_ADDRESS": { - "type": "rgblamp", - "battery": false, - "reachable": true, - "meshroot": false, - "on": true, - "color": "0;0;100", - "mode": "hsv", - "ramp": 409, - "power": 5.1, - "fw_version": "2.25" - } -} -``` - diff --git a/source/_components/light.nanoleaf_aurora.markdown b/source/_components/light.nanoleaf_aurora.markdown deleted file mode 100644 index 4f066dc7b2..0000000000 --- a/source/_components/light.nanoleaf_aurora.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Nanoleaf Aurora Light Panel" -description: "Instructions how to integrate Nanoleaf Aurora Light Panels into Home Assistant." -date: 2018-01-04 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nanoleaf_aurora_light.png -ha_category: Light -ha_iot_class: "Local Polling" -featured: false -ha_release: 0.67 ---- - -### {% linkable_title Configuration Sample %} - -To enable the Aurora lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: nanoleaf_aurora - host: 192.168.1.10 - token: xxxxxxxxxxxxxxxxxxxxx -``` - -{% configuration %} -host: - description: IP address or host-name of the device, e.g., 192.168.1.10. - required: true - type: string -token: - description: The *auth* token that you get via *POST* to */api/v1/new* - required: true - type: string -name: - description: Name of the component, make this unique if you have multiple Light Panels - required: false - type: string - default: Aurora -{% endconfiguration %} - -### {% linkable_title Getting The Auth Token %} - -1. Make sure that your Nanoleaf Aurora Panel is fully patched (as of the time of writing the latest version was 2.2.0) -2. Hold down the *ON* button on the Panel for 5 seconds; the LED will start flashing -3. Issue a *POST* request to the API endpoint, e.g., via `$ curl -i -X POST http://192.168.1.155:16021/api/v1/new` -4. The output should include the auth token like *{"auth_token":"xxxxxxxxxxxxxxxxxxxxx"}*, copy the resulting token into your configuration - -If you get a 403 Forbidden message, you probably did not press the *ON* button long enough. The time-frame to get a valid token is only 30 seconds, so you have to be quick to issue the curl request. diff --git a/source/_components/light.osramlightify.markdown b/source/_components/light.osramlightify.markdown deleted file mode 100644 index df1abeece9..0000000000 --- a/source/_components/light.osramlightify.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Osram Lightify" -description: "Instructions on how to integrate Osram Lightify into Home Assistant." -date: 2016-05-29 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: osramlightify.png -ha_category: Light -ha_release: 0.21 ---- - -The `osramlightify` platform allows you to integrate your [Osram Lightify](http://www.osram.com/osram_com/products/led-technology/lightify/index.jsp) into Home Assistant. - -```yaml -# Example configuration.yaml entry -light: - - platform: osramlightify - host: 192.168.0.50 -``` -Configuration variables: - -- **host** (*Required*): IP address of the Osram Lightify bridge, eg. `192.168.1.50`. -- **allow_lightify_groups** (*Optional*): (true/false) Edit this to stop homeassistant from importing the lightify groups. - diff --git a/source/_components/light.piglow.markdown b/source/_components/light.piglow.markdown deleted file mode 100644 index c2664af84c..0000000000 --- a/source/_components/light.piglow.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Piglow" -description: "Instructions on how to setup Piglow LED's within Home Assistant." -date: 2017-01-13 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Light -ha_release: 0.37 -ha_iot_class: "Local Polling" ---- - - -The `piglow` platform lets you control the [Piglow](https://shop.pimoroni.com/products/piglow) lights on your Raspberry Pi from within Home Assistant. - -To add piglow to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: piglow -``` diff --git a/source/_components/light.qwikswitch.markdown b/source/_components/light.qwikswitch.markdown deleted file mode 100644 index 13f61413f6..0000000000 --- a/source/_components/light.qwikswitch.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "QwikSwitch Light" -description: "Instructions on how to integrate Qwikswitch dimmers and relays as lights into Home Assistant." -date: 2016-05-04 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: qwikswitch.png -ha_category: Light -ha_iot_class: "Local Push" -ha_release: "0.20" ---- - - -The `qwikswitch` light platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays and dimmers as lights from within Home Assistant. - -The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/light.rflink.markdown b/source/_components/light.rflink.markdown deleted file mode 100644 index cc56e6de3e..0000000000 --- a/source/_components/light.rflink.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: page -title: "RFLink Light" -description: "Instructions on how to integrate RFLink lights into Home Assistant." -date: 2016-01-04 -sidebar: true -comments: false -sharing: true -footer: true -logo: rflink.png -ha_category: Light -ha_release: 0.38 -ha_iot_class: "Assumed state" ---- - -The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). - -First you have to set up your [rflink hub](/components/rflink/). - -After configuring the RFLink hub lights will be automatically discovered and added. - -RFLink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`. - -Once the ID of a light is known it can be used to configure the light in HA, for example to add it to a different group, hide it or configure a nice name. - -Configuring a device as light with a nice name: - -```yaml -# Example configuration.yaml entry -light: - - platform: rflink - device_defaults: - fire_event: true - signal_repetitions: 2 - devices: - newkaku_0000c6c2_1: - name: Living room -``` - -Configuration variables: - -- **automatic_add** (*Optional*): Automatically add new/unconfigured devices to HA 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. -- **type** (*Optional*): Override automatically detected type of the light device, can be: switchable, dimmable, hybrid or toggle. See 'Light Types' below. (default: Switchable) -- **aliases** (*Optional*): Alternative Rflink ID's this device is known by. -- **fire_event** (*Optional*): Fire a `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 aliases: - -```yaml -# Example configuration.yaml entry -light: - - platform: rflink - devices: - newkaku_0000c6c2_1: - name: Living room - aliases: - - newkaku_000000001_2 - - kaku_000001_a - Ansluta_ce30_0: - name: Kitchen Under Counter Lights - Maclean_0d82_01: - name: Bedroom Lamp -``` - -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 %} - -Light devices can come in different forms. Some only switch on and off, other support dimming. Dimmable devices might not always respond nicely to repeated `on` command as they turn into a pulsating state until `on` is pressed again (for example KlikAanKlikUit). The RFLink component support three types of lights to make things work in every situation: - -- *Hybrid*: This type sends a `dim` followed by an an `on` command; and `off` commands. This will make dimmable devices turn on at the requested dim level and on/off devices on. One caveat is this type is not compatible with signal repetition as multiple `on` signals will cause dimmers to go into disco mode. -- *Switchable*: Device type that sends only `on` and `off` commands. It work for both on/off and dimmable type switches. However dimmables might have issues with signal repetition (see above). -- *Dimmable*: Sends only `dim` and `off` commands. This does not work on on/off type devices as they don't understand the `dim` command. For dimmers this does not cause issues with signal repetitions. -- *Toggle*: Device type that sends only `on` commands to turn on or off the device. Some switches like for example Livolo light switches use the same 'on' command to switch on and switch off the lights. If the light is on and 'on' gets sent, the light will turn off and if the light is off and 'on' gets sent, the light will turn on. If the device has an unknown state, it will assume it is off by default. - -By default new lights are assigned the `switchable` type. Protocol supporting dimming are assigned the `hybrid` type. Currently only `newkaku` protocol is detected as dimmable. Please refer to Device Support to get your dimmers supported. - -### {% linkable_title Hiding/ignoring lights %} - -Lights are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods: - -- Disable automatically adding of unconfigured new sensors (set `automatic_add` to `false`). -- Hide unwanted devices using [customizations](/getting-started/customizing-devices/) -- [Ignore devices on a platform level](/components/rflink/#ignoring-devices) - -### {% linkable_title Device support %} - -See [device support](/components/rflink/#device-support) - diff --git a/source/_components/light.rfxtrx.markdown b/source/_components/light.rfxtrx.markdown deleted file mode 100644 index b6a1b707cf..0000000000 --- a/source/_components/light.rfxtrx.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "RFXtrx Light" -description: "Instructions on how to integrate RFXtrx lights into Home Assistant." -date: 2015-10-08 10:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: rfxtrx.png -ha_category: Light -ha_release: 0.7.5 -ha_iot_class: "Assumed State" ---- - -The `rfxtrx` platform support lights that communicate in the frequency range of 433.92 MHz. - -First you have to set up your [rfxtrx hub](/components/rfxtrx/). - -The easiest way to find your lights is to add this to your `configuration.yaml`: - -```yaml -light: - - platform: rfxtrx - automatic_add: True -``` - -Launch your Home Assistant and go the website. Push your remote and your device should be added: - -

    - -

    - -Here the name is `0b11000102ef9f210010f70` and you can verify that it works from the frontend. Then you should update your configuration to: - -```yaml -light: - platform: rfxtrx - devices: - 0b11000102ef9f210010f70: - name: device_name -``` - -Example configuration: - -```yaml -# Example configuration.yaml entry -light: - platform: rfxtrx - devices: - 0b11000f10e9e5660b010f70: - name: Light1 - 0b1100100f29e5660c010f70: - name: Light_TV -``` - -Configuration variables: - -- **devices** (*Required*): A list of devices with their name to use in the frontend. -- **automatic_add** (*Optional*): To enable the automatic addition of new lights. -- **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. Can be used for automations. diff --git a/source/_components/light.rpi_gpio_pwm.markdown b/source/_components/light.rpi_gpio_pwm.markdown deleted file mode 100644 index 7202b82297..0000000000 --- a/source/_components/light.rpi_gpio_pwm.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "PWM LED" -description: "Instructions on how to setup PWM LEDs within Home Assistant." -date: 2017-04-04 13:00 -sidebar: true -layout: page -comments: false -sharing: true -footer: true -ha_category: Light -ha_iot_class: "Local Push" -ha_release: 0.43 -logo: raspberry-pi.png ---- - -The `rpi_gpio_pwm` platform allows to control multiple lights using pulse-width modulation, for example led strips. It supports one-color, RGB and RGBW LEDs driven by GPIOs of a Raspberry Pi or a PCA9685 controller. - -For controlling the GPIOs, the platform connects to the [pigpio-daemon](http://abyz.co.uk/rpi/pigpio/pigpiod.html), which must be running. On Raspbian Jessie 2016-05-10 or newer the `pigpio` library is already included. On other operating systems it needs to be installed first (see [installation instructions](https://github.com/soldag/python-pwmled#installation)). - -To enable this platform, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -light: - - platform: rpi_gpio_pwm - leds: - - name: Lightstrip Cupboard - driver: gpio - pins: [17] - type: simple -``` - -Configuration variables: - -- **leds** array (*Required*): Can contain multiple LEDs. - - **name** (*Required*): The name of the LED. - - **driver** (*Required*): The driver which controls the LED. Choose either `gpio` or `pca9685`. - - **pins** (*Required*): The pins connected to the LED as a list.. The order of pins is determined by the specified type. - - **type** (*Required*): The type of LED. Choose either `rgb`, `rgbw` or `simple`. - - **freq** (*Optional*): The PWM frequency. (Default: `200`) - - **address** (*Optional*): The address of the PCA9685 driver. (Default: `0x40`) - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title RGB LED connected to PCA9685 controller %} - -This example uses a [PCA9685 controller](http://www.nxp.com/products/interfaces/ic-bus-portfolio/ic-led-display-control/16-channel-12-bit-pwm-fm-plus-ic-bus-led-controller:PCA9685) to control a RGB LED. - -```yaml -# Example configuration.yaml entry -light: - - platform: rpi_gpio_pwm - leds: - - name: TV Backlight - driver: pca9685 - pins: [0, 1, 2] # [R, G, B] - type: rgb -``` - -### {% linkable_title RGBW LED connected to PCA9685 controller %} - -This example uses a [PCA9685 controller](http://www.nxp.com/products/interfaces/ic-bus-portfolio/ic-led-display-control/16-channel-12-bit-pwm-fm-plus-ic-bus-led-controller:PCA9685) to interact with a RGBW LED. - -```yaml -# Example configuration.yaml entry -light: - - platform: rpi_gpio_pwm - leds: - - name: Lightstrip Desk - driver: pca9685 - pins: [3, 4, 5, 6] # [R, G, B, W] - type: rgbw -``` diff --git a/source/_components/light.scsgate.markdown b/source/_components/light.scsgate.markdown deleted file mode 100644 index 07df0ca0f7..0000000000 --- a/source/_components/light.scsgate.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "SCSGate Light" -description: "Instructions on how to integrate SCSGate lights into Home Assistant." -date: 2016-01-31 19:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: bus_scs.png -ha_category: Light -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - -The SCSGate device can control lights of the BTicino MyHome system. - -To enable SCSGate lights in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: scsgate - devices: - living_room: - name: Living Room - scs_id: XXXXX -``` - -Configuration variables: - -- **devices** (*Required*): A list of devices with their name to use in the frontend. diff --git a/source/_components/light.sensehat.markdown b/source/_components/light.sensehat.markdown deleted file mode 100644 index 55e09b1219..0000000000 --- a/source/_components/light.sensehat.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Sense HAT Light" -description: "Instructions on how to setup Sense HAT LED lights within Home Assistant." -date: 2017-04-29 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sense-hat.png -ha_version: 0.44 -ha_category: Light -ha_iot_class: "Assumed State" ---- - -The `sensehat` light platform lets you control the [Sense HAT](https://www.raspberrypi.org/products/sense-hat/) board's 8x8 RGB LED matrix on your Raspberry Pi from within Home Assistant. - -To add `sensehat` to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - platform: sensehat - name: SenseHAT -``` - -For setting up the Sense HAT sensors, please see the [Sense HAT sensor component](/components/sensor.sensehat/). diff --git a/source/_components/light.skybell.markdown b/source/_components/light.skybell.markdown deleted file mode 100644 index 15723eaf07..0000000000 --- a/source/_components/light.skybell.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -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.tellstick.markdown b/source/_components/light.tellstick.markdown deleted file mode 100644 index 9c66e121ec..0000000000 --- a/source/_components/light.tellstick.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "TellStick Light" -description: "Instructions on how to integrate TellStick lights into Home Assistant." -date: 2015-08-06 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus_tellstick.png -ha_category: Light -ha_iot_class: "Assumed State" ---- - - -This `tellstick` light platform allows you to control your [TellStick](http://www.telldus.se/products/tellstick) dimmers. - -To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - platform: tellstick -``` diff --git a/source/_components/light.template.markdown b/source/_components/light.template.markdown deleted file mode 100755 index 9d1315b310..0000000000 --- a/source/_components/light.template.markdown +++ /dev/null @@ -1,233 +0,0 @@ ---- -layout: page -title: "Template Light" -description: "Instructions on how to integrate Template Lights into Home Assistant." -date: 2016-05-18 20:32 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Light -ha_release: 0.46 -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. - -To enable Template Lights in your installation, add the following to your -`configuration.yaml` file: - -{% raw %} -```yaml -# Example configuration.yaml entry -light: - - platform: template - lights: - theater_lights: - friendly_name: "Theater Lights" - 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: - service: script.theater_lights_off - set_level: - service: script.theater_lights_level - data_template: - brightness: "{{ brightness }}" -``` -{% endraw %} - -{% configuration %} - lights: - 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: A list of entity IDs so the light only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. - required: false - type: [string, list] - 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 == '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 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](/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" - 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 %} - 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 - 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 - 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.tikteck.markdown b/source/_components/light.tikteck.markdown deleted file mode 100644 index 1cd3b2fea7..0000000000 --- a/source/_components/light.tikteck.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Tikteck" -description: "Instructions on how to setup Tikteck LED bulbs within Home Assistant." -date: 2017-01-04 16:32 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Light -ha_iot_class: "Local Polling" -ha_logo: tikteck.png -ha_release: 0.36 ---- - -Support for the Bluetooth smart bulb from [Tikteck](http://www.tikteck.com). To enable these lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: tikteck - devices: - 00:21:4D:00:00:01: - name: Bulb 1 - password: 76409387 - 00:21:4D:00:00:01: - name: Bulb 2 - password: 36478643 -``` - -Configuration variables: - -- **devices**: A list of devices with their bluetooth address, a custom name to use in the frontend and the bulb-specific password. The password can be obtained from an Android device using an app like [aLogcat](https://play.google.com/store/apps/details?id=org.jtb.alogcat&hl=en) or the `adb logcat` command for phones in developer mode. Look for a line like: - -``` -E LedoBleSDK: login =skName=======[Smart Light]=======skPw==[password] -``` - -The password is the text between the square brackets following `skPw`. diff --git a/source/_components/light.tplink.markdown b/source/_components/light.tplink.markdown deleted file mode 100644 index 158504bcae..0000000000 --- a/source/_components/light.tplink.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "TP-Link Bulb" -description: "Instructions on how to integrate TP-Link 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 [TP-Link smart bulb](http://www.tp-link.com/en/products/list-5609.html). - -Supported units: - -- LB100 -- LB110 -- LB120 -- LB130 - -To use your TP-Link light in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: tplink - host: IP_ADDRESS -``` - -{% configuration %} -name: - description: The name to use when displaying this bulb. - required: false - type: string - default: TP-Link Light -host: - description: "The IP address of your TP-Link bulb, eg. `192.168.1.32`." - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/light.tradfri.markdown b/source/_components/light.tradfri.markdown deleted file mode 100644 index 82da9e0d33..0000000000 --- a/source/_components/light.tradfri.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "IKEA Trådfri lights" -description: "Access and control your ZigBee-based IKEA Trådfri (Tradfri) Lights." -date: 2017-04-12 22.04 -sidebar: true -comments: false -sharing: true -footer: true -logo: ikea.svg -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.43 ---- - -For installation instructions, see [the Trådfri component](/components/tradfri/). diff --git a/source/_components/light.velbus.markdown b/source/_components/light.velbus.markdown deleted file mode 100644 index 662b788ca4..0000000000 --- a/source/_components/light.velbus.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -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.vera.markdown b/source/_components/light.vera.markdown deleted file mode 100644 index dba42ffcaf..0000000000 --- a/source/_components/light.vera.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "Vera Light" -description: "Instructions on how to integrate Vera lights into Home Assistant." -date: 2015-10-20 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Light -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -The `vera` platform allows you to control your [Vera](http://getvera.com/) lights from within Home Assistant. - -They will be automatically discovered if the vera component is loaded. - -For more configuration information see the [Vera component](/components/vera/) documentation. - diff --git a/source/_components/light.wemo.markdown b/source/_components/light.wemo.markdown deleted file mode 100644 index 1ae147ef86..0000000000 --- a/source/_components/light.wemo.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Belkin WeMo Lights" -description: "Instructions on how to integrate Belkin WeMo LED lights and WeMo Dimmer Switch into Home Assistant." -date: 2016-02-20 00:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: belkin_wemo.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.14 ---- - - -The `wemo` platform allows you to control your Belkin WeMo [LED lights](http://www.belkin.com/us/p/P-F5Z0489/) and [Smart Dimmer Switch](http://www.belkin.com/us/F7C059-Belkin/p/P-F7C059/) from within Home Assistant. - -They will be automatically discovered if the discovery component is enabled. - -For more configuration information see the [WeMo component](/components/wemo/) documentation. - diff --git a/source/_components/light.wink.markdown b/source/_components/light.wink.markdown deleted file mode 100644 index e537c11601..0000000000 --- a/source/_components/light.wink.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Wink Light" -description: "Instructions on how to setup the Wink lights within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Light -ha_iot_class: "Cloud Polling" -ha_release: pre 0.7 ---- - - -The `wink` light platform allows you to use your [Wink](http://www.wink.com/) lights. - -The requirement is that you have setup [Wink](/components/wink/). - - -### {% linkable_title Supported light devices %} - -- Z-wave switches with dimming -- Hue -- Lightify -- GE link -- Wink light groups (User created groups of lights) - -

    -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 deleted file mode 100644 index 45df065a49..0000000000 --- a/source/_components/light.x10.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "X10" -description: "Instructions on how to setup X10 devices within Home Assistant." -date: 2016-07-27 -sidebar: true -comments: false -sharing: true -footer: true -logo: x10.gif -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.25 ---- - -The `x10` light platform allows you to control your X10 based lights with Home Assistant. - -Requires [Heyu x10](http://www.heyu.org) and a CM11A interface; the CM17A "FireCracker" interface is not supported. - -To enable those lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: x10 - devices: - - id: a2 - name: Guest Room - - id: a3 - name: Bedroom Lamp -``` - -Configuration variables: - -- **id** (*Required*): Device identifier. Composed of house code and unit id. -- **name** (*Required*): A friendly name for the device. diff --git a/source/_components/light.xiaomi_aqara.markdown b/source/_components/light.xiaomi_aqara.markdown deleted file mode 100644 index 48bf4fb135..0000000000 --- a/source/_components/light.xiaomi_aqara.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Xiaomi Light" -description: "Instructions on 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 deleted file mode 100644 index 991ff8c97f..0000000000 --- a/source/_components/light.xiaomi_miio.markdown +++ /dev/null @@ -1,171 +0,0 @@ ---- -layout: page -title: "Xiaomi Philips Light" -description: "Instructions on 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, Xiaomi Philips Zhirui LED Bulb E14 Candle Lamp, Xiaomi Philips LED Ceiling Lamp and Xiaomi Philips Eyecare Lamp 2. - -## Features - -### Philips LED Ball Lamp and Philips Zhirui LED Candle Lamp - -* Power (on, off) -* Brightness -* Color temperature (175...333 mireds) -* Scene (1, 2, 3, 4) -* Delayed turn off (Resolution in seconds) -* Attributes - - model - - scene - - delayed_turn_off - -### Philips LED Ceiling Lamp - -* Power (on, off) -* Brightness -* Color temperature (175...370 mireds) -* Scene (1, 2, 3, 4) -* Night light mode (on, off) -* Delayed turn off (Resolution in seconds) -* Attributes - - model - - scene - - delayed_turn_off - - night_light_mode - - automatic_color_temperature - -### Philips Eyecare Smart Lamp 2 - -* Eyecare light (on, off) -* Ambient light (on, off) -* Brightness (of each light) -* Scene (1, 2, 3, 4) -* Night light mode (on, off) -* Delayed turn off (Resolution in seconds) -* Eye fatigue reminder / notification (on, off) -* Eyecare mode (on, off) -* Attributes - - model - - scene - - delayed_turn_off - - night_light_mode - - reminder - - eyecare_mode - -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 - model: philips.light.bulb -``` - -Configuration variables: -- **host** (*Required*): The IP of your light. -- **token** (*Required*): The API token of your light. -- **name** (*Optional*): The name of your light. -- **model** (*Optional*): The model of your light. Valid values are `philips.light.bulb`, `philips.light.candle2`, `philips.light.sread1`, `philips.light.ceiling` and `philips.light.zyceiling`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. - -{% configuration %} -host: - description: The IP address of your device. - required: true - type: string -token: - description: The API token of your device. - required: true - type: string -name: - description: The name of your device. - required: false - type: string - default: Xiaomi Philips Light -model: - description: The model of your device. - required: false - type: string -{% endconfiguration %} - -## {% linkable_title Platform Services %} - -### {% linkable_title Service `light.xiaomi_miio_set_scene` %} - -Set one of the 4 available fixed scenes. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | -| `scene` | no | Scene, between 1 and 4. | - -### {% linkable_title Service `light.xiaomi_miio_set_delayed_turn_off` %} - -Delayed turn off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | -| `time_period` | no | Time period for the delayed turn off. | - -### {% linkable_title Service `light.xiaomi_miio_reminder_on` %} (Eyecare Smart Lamp 2 only) - -Enable the eye fatigue reminder/notification. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | - -### {% linkable_title Service `light.xiaomi_miio_reminder_off` %} (Eyecare Smart Lamp 2 only) - -Disable the eye fatigue reminder/notification. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | - -### {% linkable_title Service `light.xiaomi_miio_night_light_mode_on` %} (Eyecare Smart Lamp 2 only) - -Turn the smart night light mode on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | - -### {% linkable_title Service `light.xiaomi_miio_night_light_mode_off` %} (Eyecare Smart Lamp 2 only) - -Turn the smart night light mode off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | - -### {% linkable_title Service `light.xiaomi_miio_eyecare_mode_on` %} (Eyecare Smart Lamp 2 only) - -Turn the eyecare mode on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | - -### {% linkable_title Service `light.xiaomi_miio_eyecare_mode_off` %} (Eyecare Smart Lamp 2 only) - -Turn the eyecare mode off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown deleted file mode 100644 index 8ee047b47f..0000000000 --- a/source/_components/light.yeelight.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: page -title: "Yeelight Wifi Bulb" -description: "Instructions on how to setup Yeelight Wifi devices within Home Assistant." -date: 2016-10-29 -sidebar: true -comments: false -sharing: true -footer: true -logo: yeelight.png -ha_category: Light -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - -The `yeelight` light platform allows you to control your Yeelight Wifi bulbs with Home Assistant. - -### {% linkable_title Example configuration %} - -To enable those lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: yeelight - devices: - 192.168.1.25: - name: Living Room - transition: 1000 - use_music_mode: True #(defaults to False) - save_on_change: False #(defaults to True) - 192.168.1.13: - name: Front Door -``` - -Configuration variables: - -- **ip** (*Required*): IP(s) of your Wifi bulbs -- **name** (*Optional*): A friendly name for the device. -- **transition** (*Optional*, default 350): Smooth transitions over time (in ms). -- **use_music_mode** (*Optional*, default False): Enable music mode. -- **save_on_change** (*Optional*, default True): Saves the bulb state when changed from Home Assistant. - -#### {% linkable_title Music mode %} -Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the component and it tries to keep the connection open, which may not be wanted in all use-cases. - -### {% linkable_title Initial setup %} -

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

    - -

    -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 -- **YLDD01YL**: Lightstrip (Color) -- **YLDD02YL**: Lightstrip (Color) -- **MJCTD01YL**: Xiaomi Mijia Bedside Lamp - WIFI Version! -- **MJTD01YL**: Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) -- **YLXD02YL**: Yeelight Ceiling Light 4 (Jiaoyue 650) -- **YLXD01YL**: Yeelight Smart LED Ceiling Light - Youth Version - - -## {% linkable_title Platform Services %} - -### {% linkable_title Service `light.yeelight_set_mode` %} - -Set a operation mode. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific yeelight. Else targets all. | -| `mode` | no | Operation mode. Valid values are 'last', 'normal', 'rgb', 'hsv', 'color_flow', 'moonlight'. | diff --git a/source/_components/light.yeelightsunflower.markdown b/source/_components/light.yeelightsunflower.markdown deleted file mode 100644 index 0583084626..0000000000 --- a/source/_components/light.yeelightsunflower.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Yeelight Sunflower Bulb" -description: "Instructions on how to setup Yeelight Sunflower hub and bulbs within Home Assistant." -date: 2017-02-11 -sidebar: true -comments: false -sharing: true -footer: true -logo: yeelight.png -ha_category: Light -ha_release: 0.39 -ha_iot_class: "Local Polling" ---- - -The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. - -

    -The "Yeelight Sunflower" bulbs are not the same as the "Yeelight WiFi" bulbs. -

    - -To enable your lights, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: yeelightsunflower - host: 192.168.1.59 -``` - -Configuration variables: - -- **host** (*Required*): IP address of your Yeelight Sunflower hub. - -

    -When the hub is loaded, your lights will appear as devices with their Zigbee IDs as part of the entity name. -

    - -

    -The Yeelight Sunflower hub supports SSDP discovery, but that has not been built into the platform. Let the developer know if that would be helpful to you. -

    - diff --git a/source/_components/light.zengge.markdown b/source/_components/light.zengge.markdown deleted file mode 100644 index b2f46b065d..0000000000 --- a/source/_components/light.zengge.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Zengge" -description: "Instructions on how to integrate Zengge Bluetooth bulbs into Home Assistant." -date: 2017-01-14 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zengge.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.36 ---- - -The `zengge` platform allows you to integrate your [Zengge Bluetooth bulbs](http://www.zengge.com/) into Home Assistant. - -```yaml -# Example configuration.yaml entry -light: - - platform: zengge - devices: - C4:BE:84:51:54:8B: - name: Living Room -``` -Configuration variables: - -- **devices** array (*Required*): List of your devices/bulbs. - - **MAC address** (*Required*): The MAC address of the bulb. - - **name** (*Optional*): Friendly name for the frontend. diff --git a/source/_components/light.zha.markdown b/source/_components/light.zha.markdown deleted file mode 100644 index 904c1e59de..0000000000 --- a/source/_components/light.zha.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "ZigBee Home Automation Light" -description: "Instructions on how to setup ZigBee Home Automation lights within Home Assistant." -date: 2017-02-22 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Light -ha_iot_class: "Local Polling" ---- - -To get your ZigBee lights working with Home Assistant, follow the instructions for the general [ZigBee Home Automation component](/components/zha/). diff --git a/source/_components/light.zigbee.markdown b/source/_components/light.zigbee.markdown deleted file mode 100644 index a7d8529551..0000000000 --- a/source/_components/light.zigbee.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: ZigBee Light -description: "Instructions on how to set up ZigBee lights within Home Assistant." -date: 2016-01-28 12:38 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Light -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - -A ZigBee light in this context is a light connected to one of the digital output pins on a ZigBee module. It can simply be switched on and off. By default, a light is considered `on` when the ZigBee device's digital output is held `high` and considered `off` when it is held `low`. This behavior can be inverted by setting the `on_state` configuration variable to `low`. - -To configure a digital output pin as light, add the following to your `configuration.yaml` file: - -```yaml -light: - - name: Desk Lamp - platform: zigbee - pin: 0 -``` - -Configuration variables: - -- **name** (*Required*): The name you would like to give the light in Home Assistant. -- **pin** (*Required*): The number identifying which pin to use. -- **address** (*Optional*): The long 64 bit address of the remote ZigBee device whose digital output pin you would like to switch. Do not include this variable if you want to switch the local ZigBee device's pins. -- **on_state** (*Optional*): Either `high` (default) or `low`, depicting whether the digital output pin is pulled `high` or `low` when the light is turned on. diff --git a/source/_components/light.zwave.markdown b/source/_components/light.zwave.markdown deleted file mode 100644 index 891f63e886..0000000000 --- a/source/_components/light.zwave.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Z-Wave Light" -description: "Instructions on how to setup the Z-Wave lights within Home Assistant." -date: 2015-11-11 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Light -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - -To get your Z-Wave lights working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). diff --git a/source/_components/linode.markdown b/source/_components/linode.markdown deleted file mode 100644 index 623132c044..0000000000 --- a/source/_components/linode.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -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://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/lirc.markdown b/source/_components/lirc.markdown deleted file mode 100644 index 1c6dc56be3..0000000000 --- a/source/_components/lirc.markdown +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: page -title: "LIRC" -description: "Instructions on how to integrate IR remotes with LIRC into Home Assistant." -date: 2016-05-22 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: lirc.gif -ha_category: Automation -featured: false -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - -[LIRC](http://www.lirc.org/) integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other [automation](/components/automation/). - -Sending IR commands is not supported in this component (yet), but can be accomplished using the [shell_command component](/components/shell_command/) in conjunction with the `irsend` command. - -### {% linkable_title Installation %} - -To allow Home Assistant to talk to your IR receiver, you need to first make sure you have the correct dependencies installed: - -```bash -$ sudo apt-get install lirc liblircclient-dev -``` - -

    -If you are configuring on a Raspberry Pi, there are excellent instructions with GPIO schematics and driver configurations [here](http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/). Take notice, the instructions in this blog are valid for Raspian Jesse where lirc 0.9.0 was included in the debian package. In Raspian Stretch lirc 0.9.4 is included in the Debian package. -The configuration is slightly different : - - - The `hardware.conf` file is not supported, obsoleted by a new `lirc_options.conf` file and systemd unit definitions. - - The former single `lirc` service is replaced with the three systemd services `lircd.service`, `lircmd.service` and `irexec.service`. There is no counterpart to the 0.9.0 `lirc` service which covered all of these. Using a separate transmitter device requires yet another service. - - 0.9.4 defaults to using systemd for controlling the services. This is not just start/stop functionality, systemd is used to implement new features and to address shortcomings in 0.9.0. However, traditional systemV scripts are also installed and could be used although this is less tested and not really documented. - -For more information have a look at `/usr/share/doc/lirc/README.Debian.gz` where the update process is explained when you have updated from jessie to stretch. -

    - -### {% linkable_title Configuring LIRC %} - -Now teach LIRC about your particular remote control by preparing a lircd configuration file (`/etc/lirc/lircd.conf`). Search the [LIRC remote database](http://lirc.sourceforge.net/remotes/) for your model. If you can't find it, then you can always use the `irrecord` program to learn your remote. This will create a valid configuration file. Add as many remotes as you want by pasting them into the file. If `irrecord` doesn't work (e.g., for some air conditioner remotes), then the `mode2` program is capable of reading the codes in raw mode, followed by `irrecord -a` to extract hex codes. - -Next, you have to make a `~/.lircrc` file that maps keypresses to system actions. [The configuration](http://www.lirc.org/html/configure.html) is a bit tedious but it must be done. Use the `prog = home-assistant` for all keys you want to be recognized by Home Assistant. The values you set for `button` must be the same as in the `lircd.conf` file and the values you put for `config` entry will be the sensor value in Home Assistant when you press the button. An example may look like this: - -```bash -begin - remote = SONY - button = KEY_1 - prog = home-assistant - config = KEY_1 -end -begin - remote = SONY - button = KEY_2 - prog = home-assistant - config = KEY_2 -end -begin - remote = SONY - button = KEY_3 - prog = home-assistant - config = KEY_3 -end -``` - -Test your LIRC installation before proceeding by running: - -```bash -$ ircat home-assistant -``` - -and pressing some buttons on the remote. You should see them register on the screen if LIRC is properly configured. - - -### {% linkable_title Configuration Home Assistant %} - -```yaml -# Example configuration.yaml entry -lirc: -``` - -#### {% linkable_title Events %} - -The LIRC component fires `ir_command_received` events on the bus. You can capture the events and respond to them in automation scripts like this: - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: Off on Remote - trigger: - platform: event - event_type: ir_command_received - event_data: - button_name: KEY_0 - action: - service: homeassistant.turn_off - entity_id: group.a_lights -``` - -The `button_name` data values (e.g., `KEY_0`) are set by you in the `.lircrc` file. diff --git a/source/_components/litejet.markdown b/source/_components/litejet.markdown deleted file mode 100644 index fb33408953..0000000000 --- a/source/_components/litejet.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "LiteJet" -description: "Instructions on how to setup the LiteJet hub within Home Assistant." -date: 2015-10-26 09:37 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_iot_class: "Local Push" -ha_release: 0.32 ---- - -LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. - -Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. - -After connecting the LiteJet's RS232-2 port to your computer, add the following to your `configuration.yaml`: - -```yaml -litejet: - port: /dev/serial/by-id/THE-PATH-OF-YOUR-SERIAL-PORT -``` - -Your LiteJet MCP should be configured for 19.2 K baud, 8 data bits, 1 stop bit, no parity, and to transmit a 'CR' after each response. These settings can be configured using the [LiteJet programming software](https://www.centralite.com/helpdesk/knowledgebase.php?article=735). - -You can also configure the Home Assistant to ignore lights, scenes, and switches via their name. This is highly recommended since LiteJet has a fixed number of each of these and with most systems many will be unused. - -Configuration variables: - -- **port** (*Required*): The path to the serial port connected to the LiteJet. -- **exclude_names** (*Optional*): A list of light or switch names that should be ignored. -- **include_switches** (*Optional*): Cause entities to be created for all the LiteJet switches. Default is `false`. This can be useful when debugging your lighting as you can press/release switches remotely. - -```yaml -litejet: - exclude_names: - - 'Button #' - - 'Scene #' - - 'Timed Scene #' - - 'Timed Scene#' - - 'LV Rel #' - - 'Fan #' -``` - -### Trigger - -LiteJet switches can be used as triggers too to allow those buttons to behave differently based on hold time. For example, automation can distinguish quick tap versus long hold. - -- **platform** (*Required*): Must be 'litejet'. -- **number** (*Required*): The switch number to be monitored. -- **held_more_than** (*Optional*): The minimum time the switch must be held before the trigger can activate. -- **held_less_than** (*Optional*): The maximum time the switch can be held for the trigger to activate. - -The trigger will activate at the earliest moment both `held_more_than` and `held_less_than` are known to be satisfied. If neither are specified, the trigger activates the moment the switch is pressed. If only `held_more_than` is specified, the trigger will activate the moment the switch has been held down at least that time. If `held_less_than` specified, the trigger can only activate when the switch is released. - -```yaml -automation: -- trigger: - platform: litejet - number: 55 - held_more_than: - milliseconds: 1000 - held_less_than: - milliseconds: 2000 - ... -``` diff --git a/source/_components/lock.abode.markdown b/source/_components/lock.abode.markdown deleted file mode 100644 index 9dcc3cff90..0000000000 --- a/source/_components/lock.abode.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Abode Lock" -description: "Instructions on 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.august.markdown b/source/_components/lock.august.markdown deleted file mode 100644 index eda4f37d06..0000000000 --- a/source/_components/lock.august.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "August Lock" -description: "Instructions on how to integrate your August devices into Home Assistant." -date: 2018-02-17 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: august.png -ha_category: Lock -ha_release: "0.64" -ha_iot_class: "Cloud Polling" ---- - -The `august` lock platform allows you to control your [August](http://august.com) lock from within Home Assistant. - -To add `august` lock to your installation, follow instructions in [August component](/components/august/). diff --git a/source/_components/lock.bmw_connected_drive.markdown b/source/_components/lock.bmw_connected_drive.markdown deleted file mode 100755 index 4c6c7a2edc..0000000000 --- a/source/_components/lock.bmw_connected_drive.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "BMW Connected Drive Lock" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." -date: 2018-02-22 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bmw.png -ha_category: Lock -ha_release: 0.66 ---- - - -The `bmw_connected_drive` platform allows you to import data on your BMW into Home Assistant. - -The lock will be automatically configured if `bmw_connected_drive` component is configured. - -For more configuration information see the [`bmw_connected_drive` component](/components/bmw_connected_drive/) documentation. diff --git a/source/_components/lock.homematic.markdown b/source/_components/lock.homematic.markdown deleted file mode 100644 index d536312e2e..0000000000 --- a/source/_components/lock.homematic.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Homematic Lock (KeyMatic)" -description: "Instructions how to integrate Homematic locks (KeyMatic) within Home Assistant." -date: 2018-01-28 03:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Lock -ha_release: 0.66 -ha_iot_class: "Local Push" ---- - -The `homematic` lock platform lets you observe and control the state of the HomeMatic [Homematic](http://www.homematic.com/) KeyMatic lock through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. diff --git a/source/_components/lock.isy994.markdown b/source/_components/lock.isy994.markdown deleted file mode 100644 index b019662a68..0000000000 --- a/source/_components/lock.isy994.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ISY994 Lock" -description: "Instructions on how to integrate ISY994 locks into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Lock -ha_iot_class: "Local Push" ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) lock from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/lock.lockitron.markdown b/source/_components/lock.lockitron.markdown deleted file mode 100644 index 6b320e7108..0000000000 --- a/source/_components/lock.lockitron.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Lockitron Lock" -description: "Instructions on how to integrate Lockitron locks into Home Assistant." -date: 2017-03-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lockitron.png -ha_category: Lock -ha_iot_class: "Cloud Polling" -ha_release: "0.42" ---- - -The `lockitron` platform allows you to control your [Lockitron](https://lockitron.com/) lock from within Home Assistant. -In order to get the correct `access_token` and `id`, log on to their [developer page](https://api.lockitron.com/), create a new app, and get the access_token they give you. -Then, call the retrieve all locks function on the page and get the id of your lock (make sure you get your lock's id and not the virtual lock they create for you). - -```yaml -lock: - - platform: lockitron - access_token: asdf - id: fdsa -``` - -Configuration variables: - -- **access_token** (*Required*): The usernThe security token provided by Lockitron to lock and unlock your lock. -- **id** (*Required*): The lock id given by Lockitron (should be a GUID). - diff --git a/source/_components/lock.markdown b/source/_components/lock.markdown deleted file mode 100644 index 67d5b6509a..0000000000 --- a/source/_components/lock.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Locks" -description: "Instructions on how to setup your locks with Home Assistant." -date: 2015-11-21 08:10 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Keeps track which locks are in your environment, their state and allows you to control them. - - * Maintains a state per lock and a combined state `all_locks`. - * Registers services `lock/lock` and `lock/unlock` to control locks. - -### {% linkable_title Use the services %} - -Go to the **Developer Tools**, then to **Call Service** in the frontend, and choose `lock/lock` or `lock/unlock` from the list of available services (**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"} -``` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on specific lock. Else targets all. diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown deleted file mode 100644 index ff8eb05170..0000000000 --- a/source/_components/lock.mqtt.markdown +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: page -title: "MQTT Lock" -description: "Instructions on how to integrate MQTT locks into Home Assistant." -date: 2016-02-28 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Lock -ha_release: 0.15 -ha_iot_class: depends ---- - -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 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`). - -Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect lock operation. - -To enable MQTT locks in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -lock: - - platform: mqtt - command_topic: "home/frontdoor/set" -``` - -{% configuration %} -name: - description: The name of the lock. - required: false - type: string - default: MQTT Lock -command_topic: - description: The MQTT topic to publish commands to change the lock state. - required: true - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -payload_lock: - description: The payload that represents enabled/locked state. - required: false - type: string - default: LOCK -payload_unlock: - description: The payload that represents disabled/unlocked state. - required: false - type: string - default: UNLOCK -optimistic: - description: Flag that defines if lock works in optimistic mode. - required: false - type: string - default: "`true` if no `state_topic` defined, else `false`." -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." - required: false - type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -

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

    - -## {% linkable_title Examples %} - -In this section you will find some real life examples of how to use this lock. - -### {% linkable_title Full configuration %} - -The example below shows a full configuration for a MQTT lock. - -```yaml -# Example configuration.yml entry -lock: - - platform: mqtt - name: Frontdoor - state_topic: "home-assistant/frontdoor/" - command_topic: "home-assistant/frontdoor/set" - payload_lock: "LOCK" - payload_unlock: "UNLOCK" - optimistic: false - qos: 1 - retain: true - value_template: '{% raw %}{{ value.x }}{% endraw %}' -``` - -Keep an eye on retaining messages to keep the state as you don't want to unlock your door by accident when you restart something. - -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 lock manually: - -```bash -$ mosquitto_pub -h 127.0.0.1 -t home-assistant/frontdoor/set -m "LOCK" -``` - diff --git a/source/_components/lock.nello.markdown b/source/_components/lock.nello.markdown deleted file mode 100644 index 558f9098b9..0000000000 --- a/source/_components/lock.nello.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -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 %} - -To add your Nello locks to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -lock: - - platform: nello - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username of your Nello account. - required: true - type: string -password: - description: The password of your Nello account. - required: true - type: string -{% endconfiguration %} - -## {% 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 deleted file mode 100644 index 6d10c73f9a..0000000000 --- a/source/_components/lock.nuki.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Nuki Smart Lock" -description: "Instructions on how to integrate a Nuki Smart Lock devices." -date: 2017-02-02 09:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: nuki.png -ha_category: Lock -featured: false -ha_release: 0.38 -ha_iot_class: "Local Polling" ---- - -The `nuki` platform allows you to control [Nuki Smart Locks](https://nuki.io/en/smart-lock/) via either a [software bridge](https://play.google.com/store/apps/details?id=io.nuki.bridge) or a [physical bridge](https://nuki.io/en/bridge/). - -To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki). Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one. -Then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -lock: - - platform: nuki - host: 192.168.1.120 - token: fe2345ef -``` - -Configuration variables: - -- **host** (*Required*): The IP or hostname of the Nuki bridge. -- **port** (*Optional*): The port on which the Nuki bridge is listening on. Defaults to `8080`. -- **token** (*Required*): The token that was defined when setting up the bridge. - -## {% linkable_title Full configuration %} - -Here's a full configuration example for a Nuki bridge: - -```yaml -# Example configuration.yaml entry -lock: - - platform: nuki - host: 192.168.1.120 - 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.sesame.markdown b/source/_components/lock.sesame.markdown deleted file mode 100644 index affd029f63..0000000000 --- a/source/_components/lock.sesame.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Sesame Smart Lock" -description: "Instructions on how to integrate Sesame by CANDY HOUSE into Home Assistant." -date: 2017-05-02 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sesame.png -ha_category: Lock -ha_iot_class: "Cloud Polling" -ha_release: "0.47" ---- - -The `sesame` platform allows you to control your [Sesame](https://candyhouse.co/) smart locks made by CANDY HOUSE, Inc. - -## {% linkable_title Configuration %} - -Your Sesame needs to be paired with a mobile device running the app in *virtual station* mode, or a standalone [Wi-Fi Access Point](https://candyhouse.co/collections/frontpage/products/wi-fi-access-point). - -Once you have remote access enabled using one of the above AND the Integration - cloud option enabled on the Sesame app for that lock settings, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -lock: - - platform: sesame - email: YOUR_E_MAIL_ADDRESS - password: YOUR_PASSWORD -``` - -{% configuration %} -email: - description: The email address for your Sesame account. - required: true - type: string -password: - description: The password for your Sesame account. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/lock.tesla.markdown b/source/_components/lock.tesla.markdown deleted file mode 100644 index 9708ea5220..0000000000 --- a/source/_components/lock.tesla.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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.vera.markdown b/source/_components/lock.vera.markdown deleted file mode 100644 index a305038987..0000000000 --- a/source/_components/lock.vera.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Vera Lock" -description: "Instructions on how to integrate Vera locks into Home Assistant." -date: 2016-06-29 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Lock -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -The `vera` platform allows you to control your [Vera](http://getvera.com/) locks from within Home Assistant. - -They will be automatically discovered if the vera component is loaded. - -For more configuration information see the [Vera component](/components/vera/) documentation. diff --git a/source/_components/lock.verisure.markdown b/source/_components/lock.verisure.markdown deleted file mode 100644 index e3c2d31e85..0000000000 --- a/source/_components/lock.verisure.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Verisure Lock" -description: "Instructions on how to setup the Verisure locks within Home Assistant." -date: 2016-02-12 06:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: verisure.png -ha_category: Lock -ha_release: 0.13 -ha_iot_class: "Cloud Polling" ---- - - -The Verisure lock platform allows you to control your [Verisure](https://www.verisure.com/) locks. - -The requirement is that you have setup your [Verisure hub](/components/verisure/). - diff --git a/source/_components/lock.wink.markdown b/source/_components/lock.wink.markdown deleted file mode 100644 index a792e130a8..0000000000 --- a/source/_components/lock.wink.markdown +++ /dev/null @@ -1,150 +0,0 @@ ---- -layout: page -title: "Wink Lock" -description: "Instructions on how to setup the Wink locks within Home Assistant." -date: 2015-11-20 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Lock -ha_release: 0.9 -ha_iot_class: "Cloud Polling" ---- - - -The Wink lock platform allows you to control your [Wink](http://www.wink.com/) locks. - -The requirement is that you have setup [Wink](/components/wink/). - - -### Supported lock devices - -- Kwikset -- Schlage -- August (No Wink hub required) (August Connect required) -- Generic Z-wave - -

    -The following services have only been confirmed on Schlage locks. -

    - -### {% linkable_title Service `wink_set_lock_alarm_mode` %} - -You can use the service wink/wink_set_lock_alarm_mode to set the alarm mode of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `mode` | no | String one of tamper, activity, or forced_entry -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. - -Example: - -```yaml -script: - set_locks_to_tamper: - sequence: - - service: wink.wink_set_lock_alarm_mode - data: - mode: "tamper" -``` - -### {% linkable_title Service `wink_set_lock_alarm_sensitivity` %} - -You can use the service wink/wink_set_lock_alarm_sensitivity to set the alarm sensitivity of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `sensitivity` | no | String one of low, medium_low, medium, medium_high, high -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. - -Example: - -```yaml -script: - set_locks_to_high_sensitivity: - sequence: - - service: wink.wink_set_lock_alarm_sensitivity - data: - sensitivity: "high" -``` - -### {% linkable_title Service `wink_set_lock_alarm_state` %} - -You can use the service wink/wink_set_lock_alarm_state to set the alarm state of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean enabled or disabled, true or false -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. - -Example: - -```yaml -script: - disable_all_locks_alarm: - sequence: - - service: wink.wink_set_lock_alarm_state - data: - enabled: false -``` - -### {% linkable_title Service `wink_set_lock_beeper_state` %} - -You can use the service wink/wink_set_lock_beeper_state to set the beeper state of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean enabled or disabled, true or false -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. - -Example: - -```yaml -script: - disable_all_locks_beepers: - sequence: - - service: wink.wink_set_lock_beeper_state - data: - enabled: false -``` - -### {% linkable_title Service `wink_set_lock_vacation_mode` %} - -You can use the service wink/wink_set_lock_vacation_mode to set the vacation mode of your lock. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `enabled` | no | Boolean enabled or disabled, true or false -| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks. - -Example: - -```yaml -script: - enabled_vacation_mode_on_all_locks: - sequence: - - service: wink.wink_set_lock_vacation_mode - data: - 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/lock.zwave.markdown b/source/_components/lock.zwave.markdown deleted file mode 100644 index ba25eacd6c..0000000000 --- a/source/_components/lock.zwave.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Z-Wave Lock" -description: "Instructions on how to setup the Z-Wave Locks within Home Assistant." -date: 2016-05-07 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Lock -ha_release: 0.19 -ha_iot_class: "Local Push" ---- - -To get your Z-Wave locks working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). - -Z-Wave locks will expose three services under the lock domain to manage usercodes if the lock supports it: - -| Service | Description | -| ------- | ----------- | -| clear_usercode | Clears a usercode at code_slot X. Valid code_slots are 1-254, but max is defined by the lock. | -| get_usercode | Get a usercode from the lock at code_slot. Valid code_slots are 1-254, but max is defined by the lock. | -| set_usercode | Sets usercode to X at code_slot Y. Valid usercodes are at least 4 digits, and max defined by the lock. | diff --git a/source/_components/logbook.markdown b/source/_components/logbook.markdown deleted file mode 100644 index 438e747430..0000000000 --- a/source/_components/logbook.markdown +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: page -title: "Logbook" -description: "Instructions on how to enable the logbook component for Home Assistant." -date: 2015-04-25 9:23 -sidebar: true -comments: false -sharing: true -footer: true -logo: logbook.png -ha_category: "History" ---- - - The logbook component provides a different perspective on the history of your house by showing all the changes that happened to your house in reverse chronological order. [See the demo for a live example](/demo/). It depends on the `recorder` component for storing the data. This means that if the [`recorder`](/components/recorder/) component is set up to use e.g., MySQL or PostgreSQL as data store, the `logbook` component does not use the default SQLite database to store data. - -To enable the logbook in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -logbook: -``` - -Configuration variables: - -- **exclude** (*Optional*): Configure which components should **not** create logbook entries. - - **entities** (*Optional*): The list of entity ids to be excluded from creating logbook entries. - - **domains** (*Optional*): The list of domains to be excluded from creating logbook entries. -- **include** (*Optional*): Configure which components should create logbook entries. - - **entities** (*Optional*): The list of entity ids to be included in creating logbook entries. - - **domains** (*Optional*): The list of domains to be included in creating logbook entries. - -If you want to exclude messages of some entities or domains from the logbook just add the `exclude` parameter like: - -```yaml -# Example of excluding domains and entities from the logbook -logbook: - exclude: - entities: - - sensor.last_boot - - sensor.date - domains: - - sun - - weblink -``` - -In case you just want to see messages from some specific entities or domains use the `include` configuration: - -```yaml -# Example to show how to include only the listed domains and entities in the logbook -logbook: - include: - domains: - - sensor - - switch - - media_player -``` - -You can also use the `include` list and filter out some entities or domains with an `exclude` list. Usually this makes sense if you define domains on the include side and filter out some specific entities. - -```yaml -# Example of combining include and exclude configurations -logbook: - include: - domains: - - sensor - - switch - - media_player - exclude: - entities: - - sensor.last_boot - - sensor.date -``` - -### {% linkable_title Exclude Events %} - -Entities customized as hidden are excluded from the logbook by default, but sometimes you want to show the entity in the UI and not in the logbook. For instance you use the `sensor.date`to show the current date in the UI, but you do not want a logbook entry for that sensor every day. -To exclude these entities just add them to the `exclude` > `entities` list in the configuration of the logbook. - -To exclude all events from a whole domain add it to the `exclude` > `domain` list. For instance you use the `sun` domain only to trigger automations on the `azimuth attribute, then you possible are not interested in the logbook entries for sun rise and sun set. - -### {% linkable_title Custom Entries %} - -It is possible to add custom entries to the logbook by using the script component to fire an event. - -```yaml -# Example configuration.yaml entry -script: - add_logbook_entry: - alias: Add Logbook - sequence: - - service: logbook.log - data_template: - name: Kitchen - message: is being used - # Optional - entity_id: light.kitchen - domain: light -``` diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown deleted file mode 100644 index b365e57f63..0000000000 --- a/source/_components/logentries.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Logentries" -description: "Send events to Logentries." -date: 2016-04-29 16:50 -sidebar: true -comments: false -sharing: true -logo: logentries.png -footer: true -ha_category: "History" ---- - -The `logentries` component makes it possible to log all state changes to [Logentries](http://logentries.com/) using Logentries Webhook endpoint. - -Open the **Add a Log** page and choose **Manual**. Enter a name for your log in **Log Name**, add a group in **Select Log Set**, set **Token TCP - logs are identified by a token.** and press **Create Log Token**. The generated token is required for the Home Assistant configuration. - -To use the `logentries` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -logentries: - token: TOKEN -``` - -{% configuration %} -token: - description: The token for the log to use. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown deleted file mode 100644 index 2f89e09096..0000000000 --- a/source/_components/logger.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: page -title: "Logger" -description: "Instructions on how to enable the logger component for Home Assistant." -date: 2015-11-12 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: "Utility" ---- - -The logger component lets you define the level of logging activities in Home Assistant. - -To enable the logger in your installation, add the following to your `configuration.yaml` file: - -To have a full log and log everything only this entry is needed (without any qualifier): -```yaml -logger: -``` -To log all messages and ignore events lower than critical for specified components. - -```yaml -# Example configuration.yaml entry -logger: - default: info - logs: - homeassistant.components.device_tracker: critical - homeassistant.components.camera: critical -``` - -To ignore all messages lower than critical and log event for specified components. - -```yaml -# Example configuration.yaml entry -logger: - default: critical - logs: - homeassistant.components: info - homeassistant.components.rfxtrx: debug - homeassistant.components.device_tracker: critical - homeassistant.components.camera: critical -``` - -Possible log severities are: - -- critical -- fatal -- error -- warning -- warn -- info -- debug -- notset - -### {% linkable_title Service `set_level` %} - -You can alter log level for one or several components using the service -``logger.set_level``. It accepts the same format as ``logs`` in the configuration. - -An example call might look like this: - -```yaml -service: logger.set_level -data: - homeassistant.components: warning - 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: - -```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.markdown b/source/_components/lutron.markdown deleted file mode 100644 index 6799e1feb5..0000000000 --- a/source/_components/lutron.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Lutron" -description: "Instructions on how to use Lutron devices with Home Assistant." -date: 2017-01-28 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Hub -featured: False -ha_release: 0.37 -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` component in Home Assistant is responsible for communicating with the main hub for these systems. - -Presently, there's only support for communicating with the [RadioRA 2](http://www.lutron.com/en-US/Products/Pages/WholeHomeSystems/RadioRA2/Overview.aspx) Main Repeater and only handle light switches and dimmers. - -## {% linkable_title Configuration %} - -When configured, the `lutron` component will automatically discover the rooms and their associated switches/dimmers as configured by the RadioRA 2 software from Lutron. Each room will be treated as a separate group. - -To use Lutron RadioRA 2 devices in your installation, add the following to your `configuration.yaml` file using the IP address of your RadioRA 2 main repeater: - -``` yaml -# Example configuration.yaml entry -lutron: - host: IP_ADDRESS - username: lutron - password: integration -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the Main Repeater. -- **username** (*Required*): The login name of the user. The user `lutron` always exists, but other users can be added via RadioRA 2 software. -- **password** (*Required*): The password for the user specified above. `integration` is the password for the always-present `lutron` user. - -

    -It is recommended to assign a static IP address to your main repeater. This ensures that it won't change IP addresses, so you won't have to change the `host` if it reboots and comes up with a different IP address. -

    diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown deleted file mode 100644 index 9783766c89..0000000000 --- a/source/_components/lutron_caseta.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Lutron Caseta" -description: "Instructions on how to use Lutron Caseta devices with Home Assistant." -date: 2017-01-28 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Hub -featured: False -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 Caseta Smart Bridge for the [Caseta](http://www.casetawireless.com) product line of dimmers, switches and shades. - -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/). - -The currently supported Caseta devices are: - -- 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/) - -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, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing [this script](/assets/get_lutron_cert.zip), which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information. - -Once you have the three necessary files, place them in your configuration directory and add the following to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -lutron_caseta: - host: IP_ADDRESS - keyfile: caseta.key - certfile: caseta.crt - ca_certs: caseta-bridge.crt -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the Lutron Smart Bridge. -- **keyfile** (*Required*): The private key that Home Assistant will use to authenticate to the bridge. -- **certfile** (*Required*): The certificate chain that Home Assistant will use to authenticate to the bridge. -- **ca_certs** (*Required*): The list of certificate authorities (usually only one) that Home Assistant will expect when connecting to the bridge. - -

    -It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address. -
    -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 deleted file mode 100644 index 15d5ec455f..0000000000 --- a/source/_components/mailbox.asterisk_mbox.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Asterisk Voicemail Mailbox" -description: "Instructions on how to integrate an Asterisk Voicemail within Home Assistant." -date: 2017-06-30 18:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: asterisk.png -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 deleted file mode 100644 index 16bfa603b8..0000000000 --- a/source/_components/mailbox.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Mailbox" -description: "Instructions on 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 a 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 deleted file mode 100644 index 2f13d2c062..0000000000 --- a/source/_components/mailgun.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Mailgun" -description: "Instructions on 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 -``` - -Configuration variables: - -- **domain** (*Required*): This is the domain name to be used when sending out mail. Defaults to the first custom domain you have set up. -- **api_key** (*Required*): This is the API token that has been generated in your Mailgun account. -- **sandbox** (*Optional*): Whether to use the sandboxed domain for outgoing mail. The `domain` item takes precedence over this. Defaults to `False`. diff --git a/source/_components/map.markdown b/source/_components/map.markdown deleted file mode 100755 index deacb92222..0000000000 --- a/source/_components/map.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -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/matrix.markdown b/source/_components/matrix.markdown deleted file mode 100644 index 1047d54053..0000000000 --- a/source/_components/matrix.markdown +++ /dev/null @@ -1,136 +0,0 @@ ---- -layout: page -title: "Matrix" -description: "Matrix chatbot support" -date: 2018-03-25 18:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: matrix.png -ha_category: Hub -ha_version: 0.69 ---- - -This component allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. - -```yaml -# Example configuration.yaml entry -matrix: - homeserver: https://matrix.org - username: "@my_matrix_user:matrix.org" - password: supersecurepassword - rooms: - - "#hasstest:matrix.org" - commands: - - word: my_command - name: my_command -``` - -Configuration variables: - -{% configuration %} -username: - description: "The matrix username that home assistant should use to log in. *Note*: You must specify a full matrix ID here, including the homeserver domain, e.g. '@my_matrix_bot:matrix.org'. Please note also that the '@' character has a special meaning in YAML, so this must always be given in quotes." - required: true - type: string -password: - description: The password for your Matrix account. - required: true - type: string -homeserver: - description: "The full URL for your homeserver. If you use the defauls matrix.org homeserver, this is 'https://matrix.org'." - required: true - type: string -verify_ssl: - description: Verify the homeservers certificate. - required: false - type: string - default: true -rooms: - description: "The list of rooms that the bot should join and listen for commands (see below) in. While you can limit the list of rooms that a certain command applies to on a per-command basis (see below), you must still list all rooms here that commands should be received in. Rooms can be given either by their internal ID (e.g., '!cURbafjkfsMDVwdRDQ:matrix.org') or any of their aliases (e.g., '#matrix:matrix.org')." - required: false - type: [string] - default: empty -commands: - description: "A list of commands that the bot should listen for. If a command is triggered (via its *word* or *expression*, see below), an event is fired that you can handle using automations. Every command consists of these possible configuration options:" - required: false - type: map - default: empty - keys: - word: - description: "Specifies a word that the bot should listen for. If you specify 'my_command' here, the bot will react to any message starting with '!my_command'." - required: false - type: string - expression: - description: "Specifies a regular expression (in python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression." - required: false - type: string - name: - description: "The name of the command. This will be an attribute of the event that is fired when this command triggers." - required: true - type: string - rooms: - description: "A list of rooms that the bot should listen for this command in. If this is not given, the *rooms* list from the main config is used. Please note that every room in this list must also be in the main *room* config." - required: false - type: [string] - default: empty -{% endconfiguration %} - -### {% linkable_title Event Data %} - -If a command is triggered, a `matrix_command` event is fired. The event contains the name of the command in the `name` field. If the command is a word command that has no name set, the `name` field contains the word instead. - -If the command is a word command, the `data` field contains a list of the command's arguments, i.e., everything that stood behind the word, split at spaces. If the command is an expression command, the `data` field contains the [group dictionary](https://docs.python.org/3.6/library/re.html?highlight=re#re.match.groupdict) of the regular expression that matched the message. - -### {% linkable_title Comprehensive Configuration Example %} - -This example also uses the [matrix `notify` platform](/components/notify.matrix/). - -```yaml -# The Matrix component -matrix: - homeserver: https://matrix.org - username: "@my_matrix_user:matrix.org" - password: supersecurepassword - rooms: - - "#hasstest:matrix.org" - - "#someothertest:matrix.org" - commands: - - word: testword - rooms: - - "#someothertest:matrix.org" - - expression: "My name is (?P.*)" - name: introduction - -notify: - - name: matrix_notify - platform: matrix - default_room: "#hasstest:matrix.org" - -automation: - - alias: 'React to !testword' - trigger: - platform: event - event_type: matrix_command - event_data: - command: testword - action: - service: notify.matrix_notify - data: - message: 'It looks like you wrote !testword' - - alias: 'React to an introduction' - trigger: - platform: event - event_type: matrix_command - event_data: - command: introduction - action: - service: notify.matrix_notify - data_template: - message: "Hello {{trigger.event.data.name}}" -``` - -This configuration will: -- Listen for "!testword" in the room "#someothertest:matrix.org" (and *only*) there. If such a message is encountered, it will answer with "It looks like you wrote !testword" into the "#hasstest:matrix.org" channel. -- Listen in both rooms for any message matching "My name is " and answer with "Hello " into "#hasstest:matrix.org". diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown deleted file mode 100644 index 7439d2d19f..0000000000 --- a/source/_components/maxcube.markdown +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: page -title: "eQ-3 MAX! Cube" -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 -comments: false -sharing: true -footer: true -logo: maxcube.png -ha_category: Climate -ha_release: "0.40" -ha_iot_class: "Local Polling" ---- - -[eQ-3 MAX!](http://www.eq-3.com/products/max.html) integration for Home Assistant allows you to connect eQ-3 MAX! components via the eQ-3 MAX! Cube. The components connects to the eQ-3 MAX! Cube via TCP and automatically makes all supported components available in Home Assistant. The name for each device is created by concatenating the MAX! room and device names. - -Limitations: -- Configuring weekly schedules is not possible. -- Implementation is based on the reverse engineered [MAX! protocol](https://github.com/Bouni/max-cube-protocol). - -Supported Devices: -- MAX! Radiator Thermostat (tested) -- MAX! Radiator Thermostat+ -- MAX! Window Sensor (tested) -- MAX! Wall Thermostat (tested) - -### {% linkable_title One Gateway %} - -A `maxcube` section must be present in the `configuration.yaml` file and contain the following options as required: - -```yaml -# Example configuration.yaml entry -maxcube: - gateways: - - host: 192.168.0.20 -``` - -### {% linkable_title Multiple Gateways %} - -```yaml -# Example configuration.yaml entry -maxcube: - gateways: - - host: 192.168.0.20 - port: 62910 - - host: 192.168.0.21 - port: 62910 -``` - -{% configuration %} - host: - description: The IP address of the eQ-3 MAX! Cube to use. - required: true - type: string - port: - description: The UDP port number. - required: false - type: int - default: 62910 - scan_interval: - description: The update interval in seconds - required: false - type: int - default: 300 -{% endconfiguration %} diff --git a/source/_components/media_extractor.markdown b/source/_components/media_extractor.markdown deleted file mode 100644 index 8386b0390a..0000000000 --- a/source/_components/media_extractor.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "Media Extractor" -description: "Instructions on 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 deleted file mode 100644 index 8e59296db9..0000000000 --- a/source/_components/media_player.anthemav.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Anthem A/V Receivers" -description: "Instructions on how to integrate Anthem A/V Receivers into Home Assistant." -date: 2016-12-31 23:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: anthemav.png -ha_category: Media Player -ha_iot_class: "Local Push" -ha_release: 0.37 ---- - -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 %} - -* MRX 520, MRX 720, MRX 1120, and AVM 60 -* MRX 310, MRX 510, MRX 710 - -Support is provided through the Python [anthemav] module. Older, RS-232 serial-based units like the D2v use a different protocol entirely and are not currently supported. - -[Anthem]: http://www.anthemav.com/ -[anthemav]: https://github.com/nugget/python-anthemav - - -To use your Anthem A/V Receiver in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: anthemav - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): The host name or the IP address of the device. -- **port** (*Optional*): The port number. Defaults to 14999. -- **name** (*Optional*): The name of the device used in the frontend. - -## Notes and Limitations - -- The tuner is currently unsupported as are the `media_player` play, pays, prev, and next controls. -- Enabling this platform will set and enforce "Standby IP Control On" in your Anthem device. You almost certainly want this. If you disable it on the device, it will just get re-enabled by Home Assistant. -- Only Zone 1 is currently supported. - -

    - This platform will maintain a persistent connection to the network control port which will prevent any other application from communicating with the receiver. This includes the Anthem iOS and Android remote control apps as well as the ARC-2 Anthem Room Calibration software. You will need to disable this platform and restart Home Assistant if you want to use another - application that makes use of the network control port. -

    - *The underlying Python module has hooks for halting and resuming the network connection but those functions are currently unsupported by the Home Assistant platform.* -

    diff --git a/source/_components/media_player.apple_tv.markdown b/source/_components/media_player.apple_tv.markdown deleted file mode 100644 index 7b16307760..0000000000 --- a/source/_components/media_player.apple_tv.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Apple TV Media Player" -description: "Instructions on how to integrate Apple TV devices into Home Assistant." -date: 2017-02-08 07:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: apple.png -ha_category: Media Player -ha_iot_class: "Local Push" -ha_release: 0.38 ---- - -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 deleted file mode 100644 index 0e3dbcba7e..0000000000 --- a/source/_components/media_player.aquostv.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Sharp Aquos TV" -description: "Instructions on how to integrate a Sharp Aquos TV into Home Assistant." -date: 2016-11-02 12:02 -sidebar: true -comments: false -sharing: true -footer: true -logo: sharp_aquos.png -ha_category: Media Player -featured: false -ha_release: 0.35 -ha_iot_class: "Local Polling" ---- - -The `aquostv` platform allows you to control a [Sharp Aquos TV](http://www.sharp.ca/en-CA/ForHome/HomeEntertainment/LEDTV/QuattronPlus.aspx). - -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. - -To add a TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: aquostv - host: 192.168.0.10 -``` - -Configuration variables: - -- **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. - -

    -When you set **power_on_enabled** as True, you have to turn on your TV on the first time with the remote. -Then you will be able to turn on with Home-Assistant. -Also, with **power_on_enabled** as True, the Aquos logo on your TV will stay on when you turn off the TV and your TV could consumes more power. -

    - - -Currently known supported models: - -- LC-40LE830U -- LC-46LE830U -- LC-52LE830U -- LC-60LE830U -- LC-52LE925UN -- LC-60LE925UN -- LC-60LE857U -- LC-60EQ10U -- LC-60SQ15U - -If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.aquostv.markdown). diff --git a/source/_components/media_player.blackbird.markdown b/source/_components/media_player.blackbird.markdown deleted file mode 100644 index 99873f1cc0..0000000000 --- a/source/_components/media_player.blackbird.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "Blackbird 8x8 HDMI Matrix Switch" -description: "Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant." -date: 2018-03-29 16:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: monoprice.svg -ha_category: Media Player -ha_release: 0.68 -ha_iot_class: "Local Polling" ---- - -The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) using a serial connection. - -To add a Blackbird device to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: blackbird - type: serial - port: /dev/ttyUSB0 - zones: - 1: - name: Living Room - sources: - 3: - name: BluRay -``` - -{% configuration %} -type: - description: The type of device connection - serial or socket - required: true - type: string -port: - description: The serial port to which Blackbird matrix switch is connected. Either port or host must be defined. - required: optional - type: string -host: - description: The IP address of the Blackbird matrix switch. Either port or host must be defined. - required: optional - type: string -zones: - description: This is the list of zones available. Valid zones are 1,2,3,4,5,6,7,8. Each zone must have a name assigned to it. - required: true - type: int - keys: - name: - description: The name of the zone. -sources: - description: The list of sources available. Valid source numbers are 1,2,3,4,5,6,7,8. Each source number corresponds to the input number on the Blackbird matrix switch. Similar to zones, each source must have a name assigned to it. - required: true - type: int - keys: - name: - description: The name of the source. -{% endconfiguration%} - -### {% linkable_title Service `BLACKBIRD_SETALLZONES` %} - -Set all zones to the same input source. This service allows you to immediately synchronize all the TVs in your home. Regardless of `entity_id` provided, all zones will be updated. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String that points at an `entity_id` of a zone. -| `source` | no | String of source name to activate. diff --git a/source/_components/media_player.bluesound.markdown b/source/_components/media_player.bluesound.markdown deleted file mode 100644 index 69372c8c33..0000000000 --- a/source/_components/media_player.bluesound.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: page -title: "Bluesound" -description: "Instructions on 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 -``` - -### {% linkable_title Service `bluesound_join` %} - -Group players together under a single master speaker. That will make a new group or join to exists group. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `master` | no | A single `entity_id` that will become/hold the master speaker. -| `entity_id` | no | String or list of a single `entity_id` that will group to master speaker. - -### {% linkable_title Service `bluesound_unjoin` %} - -Remove one or more speakers from a group of speakers. If no `entity_id` is provided, all speakers are unjoined. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of `entity_id`s that will be separated from their master speaker. - -### {% linkable_title Service `bluesound_set_sleep_timer` %} - -Sets a timer that will turn off the speaker. For each time you call this it will increase the time by one step. The steps are (in minutes): 15, 30, 45, 60, 90, 0. -If you increase an ongoing timer of for example 13 minutes, it will increase it to 15. If the timer is set to 90, it will remove the time (hence the 0). - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will have their timers set. - -### {% linkable_title Service `bluesound_clear_sleep_timer` %} - -Clear the sleep timer on a speaker, if one is set. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will have their timers cleared. diff --git a/source/_components/media_player.braviatv.markdown b/source/_components/media_player.braviatv.markdown deleted file mode 100644 index cf6bd2a417..0000000000 --- a/source/_components/media_player.braviatv.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: "Sony Bravia TV" -description: "Instructions on how to integrate a Sony Bravia TV into Home Assistant." -date: 2016-07-01 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bravia.png -ha_category: Media Player -ha_release: 0.23 -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. 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. - -To add a TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: braviatv - host: 192.168.0.10 -``` - -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 [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.cast.markdown b/source/_components/media_player.cast.markdown deleted file mode 100644 index 13d18534ba..0000000000 --- a/source/_components/media_player.cast.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Google Cast" -description: "Instructions on how to integrate Google Cast into Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: google_cast.png -ha_category: Media Player -featured: true -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -Google Cast devices like Android TVs and Chromecasts will be automatically discovered if you enable [the discovery component]({{site_root}}/components/discovery/). There is an issue where Chromecasts can only be discovered if your device is connected to the same subnet as your Chromecast. - -The Chromecast platform can also be forced to load by adding the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: cast -``` - -Configuration variables: - -- **host** (*Optional*): Use only if you don't want to scan for devices. -- **ignore_cec** (*Optional*) A list of Chromecasts that should ignore CEC data for determining the active input. [See the upstream documentation for more information.](https://github.com/balloob/pychromecast#ignoring-cec-data) - -## {% linkable_title Example %} - -By setting `host:` you can specify the Chromecast to use. - -```yaml -# Example configuration.yaml entry -media_player: - - platform: cast - host: 192.168.1.10 -``` diff --git a/source/_components/media_player.channels.markdown b/source/_components/media_player.channels.markdown deleted file mode 100644 index 12138976e2..0000000000 --- a/source/_components/media_player.channels.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "Channels" -description: "Instructions on how to integrate Channels into Home Assistant." -date: 2018-03-06 11:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: channels.png -ha_category: Media Player -ha_release: 0.65.0 -ha_iot_class: "Local Polling" ---- - - -The Channels platform allows you to control [Channels](https://getchannels.com/) from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network. - -Your favorite channels will appear as sources in the Source List in Home Assistant. - -To add Channels to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: channels - name: Family Room Channels - host: 192.168.1.50 -``` - -Configuration variables: - -- **host** (*Required*): The IP of the device running Channels, e.g., 192.168.1.50 -- **port** (*Optional*): The port where Channels is accessible, defaults to 57000. -- **name** (*Optional*): The name of the Channels instance in Home Assistant, eg. Family Room Channels. Defaults to Channels. - -### {% linkable_title Service `channels_seek_forward` %} - -Seek forward by the number of seconds currently set in settings on the instance of Channels. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String that points at `entity_id` of Channels app. - - -### {% linkable_title Service `channels_seek_backward` %} - -Seek backward by the number of seconds currently set in settings on the instance of Channels. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String that points at `entity_id` of Channels app. - -### {% linkable_title Service `channels_seek_by` %} - -Seek forward or backward by a provided number of seconds. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String that points at `entity_id` of Channels app. -| `seconds` | no | Number of seconds to seek in the timeline by. Negative seconds seeks backwards. diff --git a/source/_components/media_player.clementine.markdown b/source/_components/media_player.clementine.markdown deleted file mode 100644 index 781ac147a5..0000000000 --- a/source/_components/media_player.clementine.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Clementine Music Player" -description: "Instructions on how to integrate Clementine Music Player within Home Assistant." -date: 2017-02-11 17:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: clementine.png -ha_category: Media Player -ha_iot_class: "Local Poll" -ha_release: "0.39" -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: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: clementine - host: 192.168.0.20 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the Clementine Player (eg. 192.168.0.20). -- **port** (*Optional*): The remote control port (default is: 5500). -- **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. - -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.cmus.markdown b/source/_components/media_player.cmus.markdown deleted file mode 100644 index 1415de1e54..0000000000 --- a/source/_components/media_player.cmus.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "cmus" -description: "Instructions on how to integrate cmus Music Player into Home -Assistant." -date: 2016-06-17 18:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Media Player -ha_iot_class: "Local Polling" ---- - - -The `cmus` platform allows you to control a [cmus](https://cmus.github.io/) music player on a remote or local machine from Home Assistant. - -To add cmus to your installation, add the following to your `configuration.yaml` file if running locally it will look like: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: cmus -``` - -If cmus is running on a remote server: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: cmus - host: IP_ADDRESS_OF_CMUS_PLAYER - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **host** (*Optional*): Hostname or IP address of the machine running cmus. Note if a remote cmus is configured that instance must be configured to listen to remote connections, which also requires a password to be set. -- **password** (*Required if host is set*): Password for your cmus player. -- **port** (*Optional*): Port of the cmus socket, defaults to 3000. -- **name** (*Optional*): The name you'd like to give the cmus player in Home Assistant diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown deleted file mode 100644 index ebfe0177ba..0000000000 --- a/source/_components/media_player.denon.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Denon Network Receivers" -description: "Instructions on how to integrate Denon 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 `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: - -- Denon DRA-N5 -- Denon RCD-N8 (untested) -- Denon RCD-N9 (partial support) -- Denon AVR receivers with integrated Network support (partial support) - -To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: - -**Telnet platform** -```yaml -# Example configuration.yaml entry -media_player: - - platform: denon - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): IP address of the device. Example: 192.168.1.32 -- **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. - -[Denon AVR]: /components/media_player.denonavr/ diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown deleted file mode 100644 index ee1c434ff4..0000000000 --- a/source/_components/media_player.denonavr.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Denon AVR Network Receivers" -description: "Instructions on 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-X1300W -- 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 similar 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 deleted file mode 100644 index f7f6559619..0000000000 --- a/source/_components/media_player.directv.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: "DirecTV" -description: "Instructions on how to integrate DirecTV receivers into Home Assistant." -date: 2016-07-19 01:0+0000 -sidebar: true -comments: false -sharing: true -footer: true -logo: directv.png -ha_category: Media Player -ha_release: 0.25 -ha_iot_class: "Local Polling" ---- - -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. - -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.dunehd.markdown b/source/_components/media_player.dunehd.markdown deleted file mode 100644 index bbf646f0fb..0000000000 --- a/source/_components/media_player.dunehd.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "DuneHD media players" -description: "Instructions on how to integrate DuneHD media players into Home Assistant." -date: 2016-11-26 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dunehd.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: 0.34 ---- - - -The `dunehd` platform allows you to control a [Dune HD media player](http://dune-hd.com/eng/products/full_hd_media_players) from Home Assistant. Support is based on the official [IP protocol](http://dune-hd.com/support/ip_control/dune_ip_control_overview.txt) published by Dune. - -Devices with firmware 110127_2105_beta or above are supported. Some functions may depend on the version of the protocol (volume / mute control is only available with version 2 onwards). - -To add a Dune HD player to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: dunehd - host: IP_ADDRESS -``` -Configuration variables: - -- **host** (*Required*): IP address or hostname of the device. Example: 192.168.1.32 -- **name** (*Optional*): Name of the device. -- **sources** (*Optional*): A name-value dictionary of sources that HA component can request to play. diff --git a/source/_components/media_player.emby.markdown b/source/_components/media_player.emby.markdown deleted file mode 100644 index 2f12bc1d80..0000000000 --- a/source/_components/media_player.emby.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Emby" -description: "Instructions on how to integrate Emby into Home Assistant." -date: 2016-10-13 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: emby.png -ha_category: Media Player -ha_release: "0.32" -ha_iot_class: "Local Push" ---- - - -The `emby` platform allows you to control a [Emby](http://emby.media/) multimedia system from Home Assistant. - -To add Emby to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: emby - host: 192.168.11.5 - api_key: "emby_api_key" -``` - -Configuration variables: - -- **host** (*Optional*): The host name or address of the device that is running Emby. Defaults to ```localhost```. -- **api_key** (*Required*): The api-key you would like home-assistant to use to authenticate. -- **ssl** (*Optional*): True if you want to connect with https/wss. Your SSL certificate must be valid. Default is False. -- **port** (*Optional*): The port number. Defaults to 8096 with SSL set to False and 8920 with SSL set to True. -- **auto_hide** (*Optional*): True if you want to automatically hide devices that are unavailable from the Home Assistant Interface. Defaults to False. diff --git a/source/_components/media_player.firetv.markdown b/source/_components/media_player.firetv.markdown deleted file mode 100644 index 0abf2b3dad..0000000000 --- a/source/_components/media_player.firetv.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "FireTV" -description: "Instructions on how to integrate Fire-TV into Home Assistant." -date: 2015-10-23 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: firetv.png -ha_category: Media Player -ha_release: 0.7.6 -ha_iot_class: "Local Polling" ---- - - -The `firetv` platform allows you to control a [Amazon Fire TV/stick](http://www.amazon.com/Amazon-DV83YW-Fire-TV/dp/B00U3FPN4U). - -The python-firetv Python 2.x module with its helper script that exposes an HTTP server to fetch state and perform actions is used. - -Steps to configure your Amazon Fire TV stick with Home Assistant: - -- Turn on ADB Debugging on your Amazon Fire TV: - - From the main (Launcher) screen, select Settings. - - Select System > Developer Options. - - Select ADB Debugging. -- Find Amazon Fire TV device IP: - - From the main (Launcher) screen, select Settings. - - Select System > About > Network. -- The following commands must be run in a Python 2.x environment. They will allow the component to function in an Ubuntu 16.04/Hassbian environment. - - `apt-get install swig libssl-dev python-dev libusb-1.0-0 python-yaml` - - `pip install flask` - - `pip install https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.24.0.tar.gz` - - `pip install firetv[firetv-server]` -- `firetv-server -d :5555`, background the process -- Navigate to http://localhost:5556/devices/list - - You will get an output similar to below: -```json -{ - "devices": { - "default": { - "host": "192.168.1.153:5555", - "state": "play" - } - } -} -``` -- The `"default"` above is the device name you will need to use for your `configuration.yaml` -- Configure Home Assistant as follows: - -To add FireTV to your installation, Note your device name, and add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: firetv -``` - -Configuration variables: - -- **host** (*Optional*): The host where `firetv-server` is running. Default is localhost. -- **port** (*Optional*): The port where `firetv-server` is running. Default is 5556. -- **device** (*Optional*): The device ID. Defaults to `default`. -- **name** (*Optional*): The friendly name of the device, default is 'Amazon Fire TV'. - - -

    -Note that python-firetv has support for multiple Amazon Fire TV devices. If you have more than one configured, be sure to specify the device ID in `device`. Run `firetv-server -h` and/or view the source for complete capabilities. -

    - diff --git a/source/_components/media_player.frontier_silicon.markdown b/source/_components/media_player.frontier_silicon.markdown deleted file mode 100644 index c7887e9c8b..0000000000 --- a/source/_components/media_player.frontier_silicon.markdown +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: page -title: "Frontier Silicon Internet Radios" -description: "Instructions on how to integrate Frontier Silicon Internet Radios into Home Assistant." -date: 2017-02-04 00:01 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Media Player -ha_iot_class: "Local Push" -ha_release: "0.40" ---- - -This component provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the [UNDOK] app. - -## {% linkable_title Supported Models %} -* Hama: [IR110], [DIR3110] -* Medion: [Medion Radios] -* Silvercrest: [SIRD 14 C2] -* Some models from: Auna, Technisat, Revo, Pinell - -This component was developed and tested with a Hama [DIR3110] and a Medion [MD 87466]. - -## 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: - -*MENU button > Main Menu > System setting > Network > NetRemote PIN setup* - -If your device was not automatically discovered or you have changed the PIN you can alternatively add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: frontier_silicon - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): The host name or the IP address of the device. Defaults to 192.168.1.11. -- **port** (*Optional*): The port number. Defaults to 80. -- **password** (*Optional*): PIN code of the Internet Radio. Defaults to 1234. - -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: - -```yaml -# Example configuration.yaml automation -alias: "Bathroom Motion Detected" -trigger: - platform: state - entity_id: binary_sensor.motion_sensor_166d0001171111 - from: 'off' - to: 'on' -action: - service: media_player.turn_on - data: - entity_id: "media_player.badezimmer" -``` - -## Screenshots: -Overview DAB+ (Badezimmer) and Spotify (Küche): -

    - -

    - -Overview of the info dialog: -

    - -

    - -## Development - -Support is provided through the Python [fsapi] module. The Python module was developed by using the documentation provided by [flammy] and -is based on [tiwillam]'s fsapi project. Special thanks to both developers, this component would have not been possible without their work. - -## 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* -

    - -[Frontier Silicon chipset]: http://www.frontier-silicon.com/digital-radio-solutions -[Medion Radios]: http://internetradio.medion.com/ -[IR110]: https://www.hama.com/00054823/hama-ir110-internet-radio-internet-radio-multi-room-app-control -[DIR3110]: https://www.hama.com/00054824/hama-digitalradio-dir3110-internetradio-dab+-fm-multiroom-app-steuerung -[MD 87466]: https://www.medion.com/de/shop/internet-dab-radios-medion-kuechen-internetradio-medion-p83302-md-87466-50051273a1.html -[SIRD 14 C2]: https://www.lidl.de/de/silvercrest-stereo-internetradio-sird-14-c2/p233545 -[fsapi]: https://github.com/zhelev/python-fsapi -[UNDOK]: http://www.frontier-silicon.com/undok -[flammy]: https://github.com/flammy/fsapi/ -[tiwillam]: https://github.com/tiwilliam/fsapi - diff --git a/source/_components/media_player.gpmdp.markdown b/source/_components/media_player.gpmdp.markdown deleted file mode 100644 index c65ed0dff0..0000000000 --- a/source/_components/media_player.gpmdp.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Google Play Music Desktop Player" -description: "Instructions on how to integrate GPMDP into Home Assistant." -date: 2016-05-09 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: gpmdp.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: "0.20" -ha_iot_class: "Local Polling" ---- - - -The `gpmdp` media player platform allows you to control a [GPMDP](http://www.googleplaymusicdesktopplayer.com/) instance running on a computer from Home Assistant. - -You will have first have to check "Enable playback API" in GPMDP's settings and then add an inbound rule to the firewall to allow access to port 5672 on the computer running GPMDP. - -Then just add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: gpmdp - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): IP address of the computer running GPMDP. -- **name** (*Optional*): Name of the player. - diff --git a/source/_components/media_player.gstreamer.markdown b/source/_components/media_player.gstreamer.markdown deleted file mode 100644 index 288ef12120..0000000000 --- a/source/_components/media_player.gstreamer.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: page -title: "Gstreamer" -description: "Instructions on how to integrate Gstreamer into Home Assistant." -date: 2017-02-16 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Media Player -logo: gstreamer.png -ha_release: 0.39 -ha_iot_class: "Local Push" ---- - -The `gstreamer` platform allows you to play audio via a [gstreamer](https://gstreamer.freedesktop.org/) pipeline. Practically, this means you can play audio directly on the computer running Home Assistant. It is particularly suited for playing TTS. Advanced users can specify a pipeline to transform the audio stream and/or redirect it elsewhere. - -To add a `gstreamer` media player to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: gstreamer -``` - -Configuration variables: - -- **name** (*Optional*): Name the player. -- **pipeline** (*Optional*): `gst` pipeline description. - -Only the `music` media type is supported. - -## {% linkable_title Setup %} - -And then install the following system dependencies: - -Debian/Ubuntu/Rasbian: - -```bash -sudo apt-get install python3-gst-1.0 \ - gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 \ - gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \ - gstreamer1.0-tools -``` - -Red Hat/Centos/Fedora: - -```bash -sudo yum install -y python-gstreamer1 gstreamer1-plugins-good \ - gstreamer1-plugins-ugly -``` - -For Fedora replace `yum` with `dnf`. - -If you're running Home Assistant in a virtual environment, you'll need to symlink the system Python's `gi` module into your virtual environment: - -```bash -ln -s /path/to/your/installation/of/gi /path/to/your/venv/lib/python3.4/site-packages -``` - -On a Raspberry Pi, you may need to add the Home Assistant user to the `audio` group: - -```bash -sudo usermod -a -G audio -``` - -## {% linkable_title Example Usage %} - -### {% linkable_title Using with TTS %} - -To play TTS on your local computer (for example, if you have speakers attached to your Raspberry Pi: - -```yaml -media_player: - - platform: gstreamer - -script: - tts: - sequence: - - service: tts.google_say # or amazon_polly, voicerss, etc - data: - entity_id: media_player.gstreamer - message: "example text-to-speech message" -``` - -### {% linkable_title Using with Snapcast %} - -To play to a named pipe for consumption by Snapcast: - -```yaml -media_player: - - platform: gstreamer - pipeline: "audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/snapcast_gstreamer" -``` diff --git a/source/_components/media_player.itunes.markdown b/source/_components/media_player.itunes.markdown deleted file mode 100644 index 6885a33385..0000000000 --- a/source/_components/media_player.itunes.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "iTunes" -description: "Instructions on how to integrate iTunes into Home Assistant." -date: 2015-06-22 11:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: itunes.png -ha_category: Media Player -ha_release: 0.7.3 -ha_iot_class: "Local Polling" ---- - - -The iTunes platform allows you to control [iTunes](http://apple.com/itunes/) from Home Assistant. It uses a 3rd party server that you run on your Mac called [itunes-api](https://github.com/maddox/itunes-api). Play, pause, or skip songs remotely on iTunes running on your Mac. - -In addition to controlling iTunes, your available AirPlay endpoints will be added as media players as well. You can then individually address them append turn them on, turn them off, or adjust their volume. - -To add iTunes to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: itunes - host: 192.168.1.50 -``` - -Configuration variables: - -- **host** (*Required*): The IP of the itunes-api API, eg. 192.168.1.50 -- **port** (*Optional*): The port where itunes-api is accessible, eg. 8181. diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown deleted file mode 100644 index 83689d4c1a..0000000000 --- a/source/_components/media_player.kodi.markdown +++ /dev/null @@ -1,251 +0,0 @@ ---- -layout: page -title: "Kodi" -description: "Instructions on how to integrate Kodi into Home Assistant." -date: 2015-06-22 11:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: kodi.png -ha_category: Media Player -featured: true -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - - -The `kodi` platform allows you to control a [Kodi](http://kodi.tv/) multimedia system from Home Assistant. - -The preferred way to set up the Kodi platform is by enabling the [discovery component](https://www.home-assistant.io/components/discovery/) which requires enabled [web interface](https://kodi.wiki/view/Web_interface) on your Kodi installation. - -In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: kodi - host: 192.168.0.123 -``` - -Configuration variables: - -- **host** (*Required*): The host name or address of the device that is running XBMC/Kodi. -- **port** (*Optional*): The HTTP port number. Defaults to 8080. -- **tcp_port** (*Optional*): The TCP port number. Defaults to 9090. Used for websocket connections to Kodi. -- **name** (*Optional*): The name of the device used in the frontend. -- **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_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. - - -### {% linkable_title Service `kodi_add_to_playlist` %} - -Add music to the default playlist (i.e. playlistid=0). - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Kodi entities where to add the media. -| `media_type` | yes | Media type identifier. It must be one of SONG or ALBUM. -| `media_id` | no | Unique Id of the media entry to add (`songid` or `albumid`). If not defined, `media_name` and `artist_name` are needed to search the Kodi music library. -| `media_name` | no| Optional media name for filtering media. Can be 'ALL' when `media_type` is 'ALBUM' and `artist_name` is specified, to add all songs from one artist. -| `artist_name` | no | Optional artist name for filtering media. - - -### {% linkable_title Service `kodi_call_method` %} - -Call a [Kodi JSONRPC API](http://kodi.wiki/?title=JSON-RPC_API) method with optional parameters. Results of the Kodi API call will be redirected in a Home Assistant event: `kodi_call_method_result`. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Kodi entities where to run the API method. -| `method` | yes | Name of the Kodi JSONRPC API method to be called. -| any other parameter | no | Optional parameters for the Kodi API call. - - -### {% linkable_title Event triggering %} - -When calling the `kodi_call_method` service, if the Kodi JSONRPC API returns data, when received by Home Assistant it will fire a `kodi_call_method_result` event on the event bus with the following `event_data`: - -```yaml -entity_id: "" -result_ok: -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 PVR in some channel as a time function - -```yaml -script: - play_kodi_pvr: - alias: Turn on the silly box - sequence: - - alias: TV on - service: media_player.turn_on - data: - entity_id: media_player.kodi - - - alias: Play TV channel - service: media_player.play_media - data_template: - entity_id: media_player.kodi - media_content_type: "CHANNEL" - media_content_id: > - {% raw %}{% if (now().hour < 14) or ((now().hour == 14) and (now().minute < 50)) %} - 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 %} -``` - -#### 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.lg_netcast.markdown b/source/_components/media_player.lg_netcast.markdown deleted file mode 100644 index 7a60e23578..0000000000 --- a/source/_components/media_player.lg_netcast.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "LG Netcast TV" -description: "Instructions on how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant." -date: 2016-05-12 23:22 -sidebar: true -comments: false -sharing: true -footer: true -logo: lg.png -ha_category: Media Player -ha_iot_class: "Local Poll" -ha_release: "0.20" -ha_iot_class: "Local Polling" ---- - -The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/components/media_player.webostv) platform. - -To add a LG TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: lg_netcast - host: 192.168.0.20 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the LG Smart TV, eg. 192.168.0.20 -- **access_token** (*Optional*): The access token needed to connect. -- **name** (*Optional*): The name you would like to give to the LG Smart TV. The default is "LG TV Remote". - -To get the access token for your TV configure the `lg_netcast` platform in Home Assistant without the `access_token`. -After starting Home Assistant the TV will display the access token on screen. -Just add the token to your configuration and restart Home Assistant and the media player component for your LG TV will show up. - -

    -The access token will not change until you factory reset your TV. -

    - diff --git a/source/_components/media_player.liveboxplaytv.markdown b/source/_components/media_player.liveboxplaytv.markdown deleted file mode 100644 index ce474e0c9f..0000000000 --- a/source/_components/media_player.liveboxplaytv.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Orange Livebox Play TV" -description: "Instructions on how to integrate a Livebox Play TV appliance into Home Assistant." -date: 2017-01-25 07:27 -sidebar: true -comments: false -sharing: true -footer: true -logo: orange.png -ha_category: Media Player -featured: false -ha_release: 0.38 -ha_iot_class: "Local Polling" ---- - -The `liveboxplaytv` platform allows you to control [Orange Livebox Play TV appliances](https://boutique.orange.fr/internet/decodeur-tv-livebox). - -To add an Orange Livebox Play TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: liveboxplaytv - host: 192.168.1.3 -``` - -Configuration variables: - -- **host** (*Required*): The IP or hostname of the Orange Livebox Play TV appliance. -- **name** (*Optional*): The name to use in the frontend. Defaults to `Livebox Play TV`. -- **port** (*Optional*): The port on which the Livebox is listening on. Defaults to 8080. - -## {% linkable_title Full configuration %} - -A full configuration example for an Orange TV appliance can look like this: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: liveboxplaytv - host: 192.168.1.3 - port: 8080 - name: Orange Livebox Play TV -``` diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown deleted file mode 100644 index 40b642dc0c..0000000000 --- a/source/_components/media_player.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "Media Player" -description: "Instructions on how to setup your media players with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Interacts with media players on your network. Please check the right sidebar for a full list of supported devices. - -## {% linkable_title Services %} - -### {% linkable_title Media control services %} -Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, `volume_set`, `media_play_pause`, `media_play`, `media_pause`, `media_stop`, `media_next_track`, `media_previous_track`, `clear_playlist`, `shuffle_set` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------ | -| `entity_id` | yes | Target a specific media player. Defaults to all. | - -#### {% linkable_title Service `media_player.volume_mute` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | -| `is_volume_muted` | no | True/false for mute/unmute | - -#### {% linkable_title Service `media_player.volume_set` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | -| `volume_level` | no | Float for volume level | - -#### {% linkable_title Service `media_player.media_seek` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | -| `seek_position` | no | Position to seek to. The format is platform dependent. | - -#### {% linkable_title Service `media_player.play_media` %} - -| Service data attribute | Optional | Description | -| -----------------------| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. | -| `media_content_id` | no | A media identifier. The format of this is component dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes. | -| `media_content_type` | no | A media type. Must be one of `music`, `tvshow`, `video`, `episode`, `channel` or `playlist`. For example, to play music you would set `media_content_type` to `music`. | - -#### {% linkable_title Service `media_player.select_source` %} - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ---------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. | -| `source` | no | Name of the source to switch to. Platform dependent. | - -#### {% linkable_title Service `media_player.shuffle_set` %} - -Currently only supported on [Spotify](/components/media_player.spotify/), [MPD](/components/media_player.mpd/), [Kodi](/components/media_player.kodi/), [Squeezebox](/components/media_player.squeezebox/) 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 | - - diff --git a/source/_components/media_player.mediaroom.markdown b/source/_components/media_player.mediaroom.markdown deleted file mode 100644 index 39a417a5f3..0000000000 --- a/source/_components/media_player.mediaroom.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Mediaroom" -description: "Instructions on how to integrate Mediaroom Set-Top Boxes into Home Assistant." -date: 2018-01-22 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mediaroom.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: "0.63" ---- - -The `mediaroom` component allows you to control a [Mediaroom](https://en.wikipedia.org/wiki/Ericsson_Mediaroom) Set-Top Box (STB) from Home Assistant. - -To add a Mediaroom STB to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: mediaroom -``` - -{% configuration %} - host: - description: The hostname or IP address of the device. - required: false - type: string - default: Tries to discovery your device. - name: - description: The name of the device used in the frontend. - required: false - type: string - default: Mediaroom STB - optimistic: - description: In case the component cannot determine the status of the box, consider the box always ON. - required: false - type: boolean - default: false -{% endconfiguration %} - -Notice that all parameters are optional, and discovery should configure everything for you. - -#### {% linkable_title Using the Mediaroom component %} - -The component has been developed for Portuguese TV operators currently using the Mediaroom platform, but should also work in other deployments in which the STB can be controlled remotely through a socket on port 8082. - -In most cases (single STB) you just need to setup the *platform* and discovery will do the rest. - -If the STB is on the same network segment as Home Assistant, it can determine whether the device is turned on or off. Without this, the component will fail to determine the Set-top box status, and you are required to add the *optimistic* configuration variable. - -## {% linkable_title Examples %} - -### {% linkable_title Example `press_button` script %} - -The `play_media` function can be used in scripts to change channels and emulate button pressing from a remote control. - -{% raw %} -```yaml -# Example play_media script -# -press_button: - sequence: - service: media_player.play_media - data_template: - entity_id: media_player.mediaroom_stb - media_content_id: "{{ value }}" - media_content_type: "channel" -``` -{% endraw %} - -### {% linkable_title Example configuration with 2 STB %} - -```yaml -# Example configuration.yaml entry for 2 STB -media_player: - - platform: mediaroom - host: 192.168.1.64 - name: Living Room STB - - platform: mediaroom - host: 192.168.1.65 - name: Bedroom STB -``` diff --git a/source/_components/media_player.monoprice.markdown b/source/_components/media_player.monoprice.markdown deleted file mode 100644 index 75e41d9b63..0000000000 --- a/source/_components/media_player.monoprice.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -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. - -### {% linkable_title Service `snapshot` %} - -Take a snapshot of one or more zones' states. This service, and the following one are useful if you want to play a doorbell or notification sound and resume playback afterward. If no `entity_id` is provided, all zones are snapshotted. - -The following attributes are stored in a snapshot: -- Power status (On/Off) -- Mute status (On/Off) -- Volume level -- Source - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of zones. - -### {% linkable_title Service `restore` %} - -Restore a previously taken snapshot of one or more speakers. If no `entity_id` is provided, all zones are restored. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of zones. diff --git a/source/_components/media_player.mpchc.markdown b/source/_components/media_player.mpchc.markdown deleted file mode 100644 index 98f6846f3a..0000000000 --- a/source/_components/media_player.mpchc.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "MPC-HC" -description: "Instructions on how to integrate MPC-HC into Home Assistant." -date: 2016-07-27 21:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: mpchc.png -ha_category: Media Player -featured: false -ha_release: 0.25 -ha_iot_class: "Local Polling" ---- - - -The `mpchc` platform allows you to connect a [Media Player Classic Home Cinema](https://mpc-hc.org/) to Home Assistant. It will allow you to see the current playing item, and respond to changes in the player's state. - -For this component to function, you will need to enable the Web Interface in the MPC-HC options dialog. - -

    - -

    - -If the server running Home Assistant is not the same device that is running MPC-HC, you will need to ensure that the *allow access from localhost only* option is not set. - -

    -The MPC-HC web interface is highly insecure, and allows remote clients full player control file-system access without authentication. Never allow access to the Web UI from outside of your trusted network, and if possible [use a proxy script to restrict control or redact sensitive information](https://github.com/abcminiuser/mpc-hc-webui-proxy). -

    - -To add MPC-HC to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: mpchc - host: http://192.168.0.123 -``` - -Configuration variables: - -- **host** (*Required*): The host name or address of the device that is running MPC-HC. -- **port** (*Optional*): The port number. Defaults to 13579. -- **name** (*Optional*): The name of the device used in the frontend. diff --git a/source/_components/media_player.mpd.markdown b/source/_components/media_player.mpd.markdown deleted file mode 100644 index 51888be2b2..0000000000 --- a/source/_components/media_player.mpd.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Music Player Daemon (MPD)" -description: "Instructions on how to integrate Music Player Daemon into Home Assistant." -date: 2016-09-30 23:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: mpd.png -ha_category: Media Player -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `mpd` platform allows you to control a [Music Player Daemon](http://www.musicpd.org/) from Home Assistant. Unfortunately you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs. - -Even though no playlist manipulation is possible, it is possible to use the play_media service to load an existing saved playlist as part of an automation or scene. - -To add MPD to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: mpd - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): IP address of the Host where Music Player Daemon is running. -- **port** (*Optional*): Port of the Music Player Daemon. Defaults to 6600. -- **name** (*Optional*): Name of your Music Player Daemon. Defaults to "MPD". -- **password** (*Optional*): Password for your Music Player Daemon. - -Example script to load a saved playlist called "DeckMusic" and set the volume: - -```yaml -relaxdeck: - sequence: - - service: media_player.play_media - data: - entity_id: media_player.main - media_content_type: playlist - media_content_id: DeckMusic - - - service: media_player.volume_set - data: - entity_id: media_player.main - volume_level: 0.60 -``` - -This platform works with [Music Player Daemon](http://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://docs.mopidy.com/en/latest/ext/mpd/) as used by [Pi MusicBox](http://www.pimusicbox.com/). - diff --git a/source/_components/media_player.nad.markdown b/source/_components/media_player.nad.markdown deleted file mode 100644 index 41684f7212..0000000000 --- a/source/_components/media_player.nad.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "NAD" -description: "Instructions on how to integrate NAD receivers into Home Assistant." -date: 2016-01-05 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nad.png -ha_category: Media Player -ha_release: 0.36 -ha_iot_class: "Local Polling" ---- - - -The `nad` platform allows you to control a [NAD receiver](http://nadelectronics.com) through RS232 from Home Assistant. - -To add an NAD receiver to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: nad - serial_port: /dev/ttyUSB0 -``` - -Configuration variables: - -- **serial_port** (*Required*): The serial port . Default is `/dev/ttyUSB0` -- **name** (*Optional*): Name of the device. Default is NAD Receiver. -- **min_volume** (*optional*): Minimum volume in dB to use with the slider. Default is `-92` -- **max_volume** (*optional*): Maximum volume in dB to use with the slider. Default is `-20` -- **sources** (*Optional*): A list of mappings from source to source name. Valid sources are `1 to 10`. - -The min_volume and max_volume are there to protect you against misclicks on the slider so you will not blow up your speakers when you go from -92dB to +20dB. You can still force it to go higher or lower than the values set with the plus and minus buttons. - -

    -On linux the user running home-assistant needs `dialout` permissions to access the serial port. -This can be added to the user by doing `sudo usermod -a -G dialout `. -Be aware that the user might need to logout and logon again to activate these permissions. -

    - -A full configuration example could look like this: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: nad - serial_port: /dev/ttyUSB0 - name: NAD Receiver - min_volume: -60 - max_volume: -20 - sources: - 1: 'Kodi' - 2: 'TV' -``` diff --git a/source/_components/media_player.nadtcp.markdown b/source/_components/media_player.nadtcp.markdown deleted file mode 100644 index e673e4472d..0000000000 --- a/source/_components/media_player.nadtcp.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "NAD tcp" -description: "Instructions on how to integrate the NAD D 7050 or C338 digital amplifiers into Home Assistant." -date: 2017-06-07 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nad.png -ha_category: Media Player -ha_release: 0.47 -ha_iot_class: "Local Polling" ---- - - -The `nadtcp` platform allows you to control the D7050 and C338 from Home Assistant via WiFi. Note that it has only been tested with the D 7050. - -To add a NAD amplifier to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - platform: nadtcp - host: 192.168.0.112 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your amplifier. -- **name** (*Optional*): Name of the device. Default is NAD amplifier. -- **min_volume** (*optional*): Minimum volume in dB to use with the slider. Default is `-60` -- **max_volume** (*optional*): Maximum volume in dB to use with the slider. Default is `-10` -- **volume_step** (*Optional*): The amount in dB you want to increase the volume with when pressing volume up/down. Default is 4 dB. - -The maximum volume level of the D 7050 amplifier is +10 db, minimum is -90. - - diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown deleted file mode 100644 index 19854cfe60..0000000000 --- a/source/_components/media_player.onkyo.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: page -title: "Onkyo" -description: "Instructions on how to integrate Onkyo and some Pioneer receivers into Home Assistant." -date: 2016-03-30 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: onkyo.png -ha_category: Media Player -ha_release: 0.17 -ha_iot_class: "Local Polling" ---- - - -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. - -## {% linkable_title Configuration %} - -To add an Onkyo or Pioneer receiver to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: onkyo - host: 192.168.1.2 - name: receiver - sources: - pc: 'HTPC' -``` - -{% configuration %} -host: - description: IP address of the device. Example:`192.168.1.2`. If not specified, the platform will load any discovered receivers. - required: false - type: string -name: - description: Name of the device. (*Required if host is specified*) - required: false - type: string -max_volume: - description: Maximum volume. Defaults to 80. - required: false - type: number -sources: - description: A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified. - required: false - type: list -zone2: - description: Enables control for the receiver's second zone. - required: false - type: bool -{% endconfiguration %} - -List of source names: - -- video1 -- video2 -- video3 -- video4 -- video5 -- video6 -- video7 -- dvd -- bd-dvd -- tape1 -- tv-tape -- tape2 -- phono -- cd -- tv-cd -- fm -- am -- tuner -- dlna -- internet-radio -- usb -- network -- universal-port -- multi-ch -- xm -- sirius diff --git a/source/_components/media_player.openhome.markdown b/source/_components/media_player.openhome.markdown deleted file mode 100644 index ae10d32d3c..0000000000 --- a/source/_components/media_player.openhome.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Linn / Openhome" -description: "Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant." -date: 2017-02-21 22:40 -sidebar: true -comments: false -sharing: true -footer: true -logo: linn.png -ha_category: Media Player -featured: false -ha_release: 0.39 -ha_iot_class: "Local Polling" ---- - - -The `openhome` platform allows you to connect an [Openhome Compliant Renderer](https://www.openhome.org) to Home Assistant such as a [Linn Products Ltd](https://www.linn.co.uk) HiFi streamer. It will allow you to control media playback, volume, source and see the current playing item. Openhome devices should be discovered by using the [the discovery component](/components/discovery/), their device names are taken from the name of the room configured on the device. - -```yaml -# Example configuration.yaml entry -discovery: -media_player: - - platform: openhome -``` diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown deleted file mode 100644 index 2877848601..0000000000 --- a/source/_components/media_player.panasonic_viera.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "Panasonic Viera TV" -description: "Instructions on how to integrate a Panasonic Viera TV into Home Assistant." -date: 2016-03-17 13:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: panasonic.png -ha_category: Media Player -featured: false -ha_release: 0.17 -ha_iot_class: "Local Polling" ---- - -The `panasonic_viera` platform allows you to control a Panasonic Viera TV. - -Currently known supported models: - -- TC-P65VT30 -- TX-32AS520E -- TX-49DX650B -- TX-50DX700B -- TX-55CX700E -- TX-65EXW784 -- TX-L42ET50 -- TX-P42STW50 -- TX-P50GT30Y -- TX-P50GT60E - -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/blob/next/source/_components/media_player.panasonic_viera.markdown). - -Some Panasonic Viera TVs allow Home Assistant to turn them on, if you specify the MAC address with `mac:`. - -To add a TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: panasonic_viera - host: 192.168.0.10 -``` - -Configuration variables: - -- **host** (*Required*): The IP of the Panasonic Viera TV, e.g., `192.168.0.10`. -- **port** (*Optional*): The port number of your Panasonic Viera TV. Defaults to `55000`. -- **mac** (*Optional*): The MAC address of your Panasonic Viera TV, e.g., `AA:BB:CC:DD:99:1A`. -- **name** (*Optional*): The name you would like to give to the Panasonic Viera TV. - -### {% linkable_title Example `play_media` script %} - -The `play_media` function can be used to open web pages and other media types (images, movies) in the TV web browser. - -```yaml -# Example play_media script that can be triggered when someone is detected at the door -# -script: - front_door_camera: - alias: "Show who's at the door" - sequence: - - service: media_player.turn_on - data: - entity_id: media_player.living_room_tv - - service: media_player.play_media - data: - entity_id: media_player.living_room_tv - media_content_type: "url" - media_content_id: "http://google.com" - - delay: - seconds: 5 - - service: media_player.media_stop - data: - entity_id: media_player.living_room_tv -``` diff --git a/source/_components/media_player.pandora.markdown b/source/_components/media_player.pandora.markdown deleted file mode 100644 index 76c0406125..0000000000 --- a/source/_components/media_player.pandora.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "Pandora" -description: "Instructions on how to integrate Pandora radio into Home Assistant." -date: 2016-06-10 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: pandora.png -ha_category: Media Player -featured: false -ha_release: 0.22 -ha_iot_class: "Local Polling" ---- - -If you have a Pandora account, you can control it from Home Assistant with this media player. - - -### {% 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/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_ - -The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with ffmpeg, so you should make sure you go through the backport process documented in [The FFmpeg component](/components/ffmpeg/) before doing this. Install the following basic dependencies: - -```bash -$ sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson0-dev make pkg-config libcurl4-openssl-dev -``` - -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: - -```bash -$ git clone https://github.com/PromyLOPh/pianobar.git -$ cd pianobar -$ make clean && make -$ sudo make install -``` - -Configure Pianobar to auto-login and start playing a station (optional, see `man pianobar`) by creating and editing the `~/.config/pianobar/config` file: - -```bash -password = Password -user = you@youraccount.com -``` - -Test it out by running `pianobar` in the command line. You should be able to listen to your Pandora stations. - -### {% linkable_title Configuration in Home Assistant %} - -The Pandora player can be loaded by adding the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: pandora -``` - -That's it! Now you will find a media player. If you click it you will find all your stations listed as different sources. If you switch to one, the station will begin playing. - -

    - -

    - diff --git a/source/_components/media_player.philips_js.markdown b/source/_components/media_player.philips_js.markdown deleted file mode 100644 index e776db61a3..0000000000 --- a/source/_components/media_player.philips_js.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Philips TV" -description: "Instructions on how to add Philips TVs to Home Assistant." -date: 2016-11-01 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: philips.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: 0.34 ---- - - -The `philips_js` platform allows you to control Philips TVs which expose the [jointSPACE](http://jointspace.sourceforge.net/) API. Instructions on how to activate the API and if your model is supported can be found [here](http://jointspace.sourceforge.net/download.html). - -To add your TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: philips_js - host: 192.168.1.99 -``` - -Configuration variables: - -- **host** (*Required*): IP address of TV. -- **name** (*Optional*): The name you would like to give to the Philips TV. -- **turn_on_action** (*Optional*): A script that will be executed to turn on the TV (can be used with wol). -- **api_version** (*Optional*): The JointSpace API version of your Philips TV, defaults to `1`. This is an experimental option and not all the functionalities are guaranteed to work with API versions different from `1`. diff --git a/source/_components/media_player.pioneer.markdown b/source/_components/media_player.pioneer.markdown deleted file mode 100644 index 6bc6d1a5b0..0000000000 --- a/source/_components/media_player.pioneer.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Pioneer Network Receivers" -description: "Instructions on how to integrate a Pioneer Network Receivers into Home Assistant." -date: 2016-05-07 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pioneer.png -ha_category: Media Player -featured: false -ha_release: 0.19 -ha_iot_class: "Local Polling" ---- - -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: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: pioneer - host: 192.168.0.10 -``` - -Configuration variables: - -- **host** (*Required*): The IP of the Pioneer device, eg. `192.168.0.10` -- **name** (*Optional*): The name you would like to give to the receiver. -- **port** (*Optional*): The port on which the Pioneer device listens, e.g., `23` (default) or `8102` -- **timeout** (*Optional*): Number of seconds (float) to wait for blocking operations like connect, write, and read. - -Notes: - -- Some Pioneer AVRs use the port 23 default and some are reported to use 8102. -- `timeout` is a socket level option and should only be configured if you know what you are doing. diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown deleted file mode 100644 index e17068d221..0000000000 --- a/source/_components/media_player.plex.markdown +++ /dev/null @@ -1,143 +0,0 @@ ---- -layout: page -title: "Plex" -description: "Instructions on how to integrate Plex into Home Assistant." -date: 2015-10-05 21:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: plex.png -ha_category: Media Player -featured: true -ha_release: 0.7.4 -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. - -## {% 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. - -If your Plex server has local authentication enabled or multiple users defined, Home Assistant requires an authentication token to be entered in the frontend. Press "CONFIGURE" to do it. - -

    - -

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

    - -

    - -You can also enable the plex platform directly by adding the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: plex -``` - -In case [discovery](/components/discovery/) does not work (GDM disabled or non-local plex server), you can create `~/.homeassistant/plex.conf` manually. - -```json -{"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. -- **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 %} - -You can customize the Plex component by adding any of the variables below to your configuration: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: plex - entity_namespace: 'plex' - include_non_clients: true - scan_interval: 5 - show_all_controls: false - use_custom_entity_ids: true - use_episode_art: true - remove_unavailable_clients: true - client_remove_interval: 600 -``` -- **entity_namespace** (*Optional*): Prefix for entity ID's. Defaults to `null`. Useful when using overlapping components (ex. Apple TV and Plex components when you have Apple TV's you use as Plex clients). Go from _media_player.playroom2_ to _media_player.plex_playroom_ -- **include_non_clients** (*Optional*): Display non-recontrollable clients (ex. remote clients, PlexConnect Apple TV's). Defaults to `false`. -- **scan_interval** (*Optional*): Amount in seconds in between polling for device’s current activity. Defaults to `10` seconds. -- **show_all_controls** (*Optional*): Forces all controls to display. Defaults to `false`. Ignores dynamic controls (ex. show volume controls for client A but not for client B) based on detected client capabilities. This option allows you to override this detection if you suspect it to be incorrect. -- **use_custom_entity_ids** (*Optional*): Name Entity ID's by client ID's instead of friendly names. Defaults to `false`. HA assigns entity ID's on a first come first serve basis. When you have identically named devices connecting (ex. media_player.plex_web_safari, media_player.plex_web_safari2), you can't reliably distinguish and or predict which device is which. This option avoids this issue by using unique client ID's (ex. media_player.dy4hdna2drhn). -- **use_episode_art** (*Optional*): Display TV episode art instead of TV show art. Defaults to `false`. -- **remove_unavailable_clients** (*Optional*): Remove stale plex clients from UI after interval. Defaults to `true`. -- **client_remove_interval** (*Optional*): How long a client is to be unavailable for before it is cleaned up. Defaults to `600 seconds (10min)`. - -### {% linkable_title Service `play_media` %} - -Plays a song, playlist, TV episode, or video on a connected client. - -#### Music - -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------- | ----------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `library_name`, `artist_name`, `album_name`, `track_name`, `shuffle` (0 or 1). | { \\"library_name\\" : \\"My Music\\", \\"artist_name\\" : \\"Adele\\", \\"album_name\\" : \\"25\\", \\"track_name\\" : \\"hello\\", \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `MUSIC` | MUSIC | - -#### Playlist - -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------- | ----------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `playlist_name`, `shuffle` (0 or 1). | { \\"playlist_name\\" : \\"The Best of Disco\\" \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `PLAYLIST` | PLAYLIST | - -#### TV Episode - -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------- | ----------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `library_name`, `show_name`, `season_number`, `episode_number`, `shuffle` (0 or 1). | { \\"library_name\\" : \\"Adult TV\\", \\"show_name\\" : \\"Rick and Morty\\", \\"season_number\\" : 2, \\"episode_number\\" : 5, \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `EPISODE` | EPISODE | - -#### Video - -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------- | ----------- | -| `entity_id` | no | `entity_id` of the client | media_player.theater_plex | -| `media_content_id` | no | Quote escaped JSON with `library_name`, `video_name`, `shuffle` (0 or 1). | { \\"library_name\\" : \\"Adult Movies\\", \\"video_name\\" : \\"Blade\\", \\"shuffle\\": \\"0\\" } | -| `media_content_type` | no | Type of media to play, in this case `VIDEO` | VIDEO | - -### Compatibility - -| Client | Limitations | -|----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Any (when all controls disabled) | A stop button will appear but is not functional. | -| Any (when casting) | Controlling playback will work but with error logging. | -| Any (remote client) | Controls disabled. | -| Apple TV (PlexConnect) | Controls disabled. Music does not work. | -| iOS | None | -| NVidia Shield | Mute disabled. Volume set below 2 will cause error logging. Controlling playback when the Shield is both a client and a server will work but with error logging | -| Plex Web | None | -| Tivo Plex App | Only play, pause, stop/off controls enabled | - -### {% 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. - - ``` - ERROR:plexapi:http://192.168.1.10:32400: ('Connection aborted.', BadStatusLine("''",)) - INFO:homeassistant.components.media_player.plex:No server found at: http://192.168.1.10:32400 - ``` - - 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.roku.markdown b/source/_components/media_player.roku.markdown deleted file mode 100644 index c7771e0f40..0000000000 --- a/source/_components/media_player.roku.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "Roku" -description: "Instructions on how to integrate Roku into Home Assistant." -date: 2016-05-16 20:0+0000 -sidebar: true -comments: false -sharing: true -footer: true -logo: roku.png -ha_category: Media Player -ha_release: "0.20" -ha_iot_class: "Local Polling" ---- - -The [Roku](http://www.roku.com/) media players will be automatically discovered if you enable the [discovery component](/components/discovery/). - -The `roku` media player platform can also be forced to load by adding the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: roku -``` - -Configuration variables: - -- **host** (*Optional*): Use only if you don't want to scan for devices. diff --git a/source/_components/media_player.russound_rio.markdown b/source/_components/media_player.russound_rio.markdown deleted file mode 100644 index 7a63ab7c66..0000000000 --- a/source/_components/media_player.russound_rio.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -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.russound_rnet.markdown b/source/_components/media_player.russound_rnet.markdown deleted file mode 100644 index 9dd90d45d7..0000000000 --- a/source/_components/media_player.russound_rnet.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Russound RNET" -description: "Instructions on how to integrate Russound RNET devices into Home Assistant." -date: 2016-07-21 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: russound.png -ha_category: Media Player -ha_release: 0.25 -ha_iot_class: "Local Polling" ---- - -The `russound_rnet` platform allows you to control Russound devices that make use of the RNET protocol. - -This has initially been tested against a Russound CAV6.6 unit with six zones and six sources. - -Connecting to the Russound device is only possible by TCP, you can make use of a TCP to Serial gateway such as [tcp_serial_redirect](https://github.com/pyserial/pyserial/blob/master/examples/tcp_serial_redirect.py) - -To add a device to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: russound_rnet - host: 192.168.1.10 - port: 1337 - name: Russound - zones: - 1: - name: Main Bedroom - 2: - name: Living Room - 3: - name: Kitchen - 4: - name: Bathroom - 5: - name: Dining Room - 6: - name: Guest Bedroom - sources: - - name: Sonos - - name: Sky+ -``` - -Configuration variables: - -- **host** (*Required*): The IP of the TCP gateway -- **port** (*Required*): The port of the TCP gateway -- **name** (*Required*): The name of the device -- **zones** (*Required*): This is the list of zones available -- **sources** (*Required*): The list of sources available, these must be in order as they are connected to the device diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown deleted file mode 100644 index d944b2b3a7..0000000000 --- a/source/_components/media_player.samsungtv.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "Samsung Smart TV" -description: "Instructions on how to integrate a Samsung Smart TV into Home Assistant." -date: 2016-02-13 12:02 -sidebar: true -comments: false -sharing: true -footer: true -logo: samsung.png -ha_category: Media Player -featured: false -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - -The `samsungtv` platform allows you to control a [Samsung Smart TV](http://www.samsung.com/uk/consumer/tv-audio-video/televisions/). - -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. - -To add a TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: samsungtv - host: 192.168.0.10 -``` - -Configuration variables: - -- **host** (*Required*): The IP of the Samsung Smart TV, eg. `192.168.0.10`. -- **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 55000. If set to 8001, the new websocket connection will be used (required for 2016+ TVs). -- **name** (*Optional*): The name you would like to give to the Samsung Smart TV. -- **timeout** (*Optional*): The time-out in seconds for the communication with the TV. Defaults to 0 (no timeout). -- **mac** (*Optional*): The MAC address of the Samsung Smart TV, eg. `00:11:22:33:44:55:66`. Required for power on support via wake on lan. - -Currently known supported models: - -- C7700 -- D5500 -- D6500 -- D7000 -- D8000 -- ES5500 -- ES6800 -- F6300 -- F6500 -- EH5300 -- EH5600 -- F6400AF -- F6400 -- F8000BF -- D6505 -- D6300SF -- U6000 (port must be set to 8001) -- U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) -- K5579 (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) -- K6500AF (port must be set to 8001) -- KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) -- KU6020 (port must be set to 8001, and `pip3 install websocket-client` must be executed) -- KU6290 (port must be set to 8001) -- KU7000 (port must be set to 8001) -- MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) -- KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) -- K5600AK (partially supported, turn on works but state is not updated) -- UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) -- UE6199UXZG (port must be set to 8001, On/Off, Forward/Backward, Volume control, but no Play button) - -Currently tested but not working models: - -- J5200 - Unable to see state and unable to control -- J5500 - State is always "on" and unable to control (but port 8001 *is* open) -- 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) -- MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on) - -None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, since Samsung have used a different (encrypted) type of interface for these. - -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. -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. This should be fixed as of March 2017. diff --git a/source/_components/media_player.snapcast.markdown b/source/_components/media_player.snapcast.markdown deleted file mode 100644 index 94f7db9b94..0000000000 --- a/source/_components/media_player.snapcast.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Snapcast" -description: "Instructions on how to integrate Snapcast into Home Assistant." -date: 2016-02-01 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: snapcast.png -ha_category: Media Player -featured: false -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - -The `snapcast` platform allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant. - -To add Snapcast to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: snapcast - host: xxx.xxx.xxx.xxx -``` - -Configuration variables: - -- **host** (*Required*): The IP of the device, eg. `192.168.0.10`. diff --git a/source/_components/media_player.songpal.markdown b/source/_components/media_player.songpal.markdown deleted file mode 100644 index 0fd9a73f72..0000000000 --- a/source/_components/media_player.songpal.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "Sony SongPal compatible devices" -description: "Instructions on how to integrate Sony Songpal devices into Home Assistant." -date: 2018-02-03 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sony.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: 0.65 ---- - -The `songpal` platform allows you to control Sony's Songpal ("[Audio Control API](https://developer.sony.com/develop/audio-control-api/)") compatible devices such as soundbars, AV receivers and wireless speakers from Home Assistant. - -Even when the API officially supports only a few devices (HT-ST5000, HT-MT500, HT-CT800, SRS-ZR5 and STR-DN1080), it has also been confirmed to work on others. [The list of supported devices](http://vssupport.sony.net/en_ww/device.html) from Sony's Songpal website lists devices which are likely to be compatible with this platform. - -If the platform works with your non-listed device, or you encounter bugs, please feel free to [report them upstream](https://github.com/rytilahti/python-songpal). - -A few notes: - -- The quick start-up mode has to be enabled in order to turn the device on. -- Supports currently only one output terminal, i.e. the volume control works only on the first volume controller as reported by the backend library. -- Some devices, e.g., HT-XT3, do not support decreasing the volume step-by-step correctly. -- Feel free to improve the available services! - -## {% linkable_title Configuration %} - -The platform will be loaded automatically by discovery component. If you want to manually configure it, add the following to your `configuration.yaml` file: - -```yaml -media_player: - - platform: songpal - name: my soundbar - endpoint: http://IP_ADDRESS:10000/sony -``` - -{% configuration %} -name: - description: The name to display for this device. - required: false - type: string -endpoint: - description: API endpoint of the device. - required: true - type: string -{% endconfiguration %} - -See [python-songpal's documentation](https://github.com/rytilahti/python-songpal#locating-the-endpoint) how to get your API endpoint. - -## {% linkable_title Services %} - -In addition to the general [media player services](/components/media_player/#services), the following services are provided: - -### {% linkable_title Service `media_player/songpal_set_sound_setting` %} - -For a list of available settings and their values use [`songpal sound`](https://github.com/rytilahti/python-songpal#sound-settings) command. - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target entity, leave unset for all devices | -| `name` | no | Configuration variable, e.g., `nightmode` | -| `value` | no | New configuration value, e.g., `on` | - - - diff --git a/source/_components/media_player.sonos.markdown b/source/_components/media_player.sonos.markdown deleted file mode 100644 index 862cd822f8..0000000000 --- a/source/_components/media_player.sonos.markdown +++ /dev/null @@ -1,133 +0,0 @@ ---- -layout: page -title: "Sonos" -description: "Instructions on how to integrate Sonos devices into Home Assistant." -date: 2015-09-12 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sonos.png -ha_category: Media Player -featured: true -ha_release: 0.7.3 -ha_iot_class: "Local Polling" ---- - -The `sonos` platform allows you to control your [Sonos](http://www.sonos.com) HiFi wireless speakers and audio components from Home Assistant. By default it supports auto-discovery provided by Home Assistant, and you don't need to add anything to your `configuration.yaml`. Alternatively, there are some manual configuration options, listed as follows: - -To add your Sonos components to your installation, add the following to your `configuration.yaml` file. It will perform Sonos auto-discovery of your connected speakers. - -```yaml -# Example configuration.yaml entry using Sonos discovery -media_player: - - platform: sonos -``` - - -If you have multiple network devices, you can provide the IP address of the device that should be used for Sonos auto-discovery. - -```yaml -# Example configuration.yaml entry using Sonos discovery on a specific interface -media_player: - - platform: sonos - interface_addr: 192.0.2.1 -``` - -You can also specify one or more hosts to connect to if they cannot be found with Sonos auto-discovery. - -```yaml -# Example configuration.yaml entry with manually specified addresses -media_player: - - platform: sonos - hosts: 192.0.2.25 -``` - -or, for multiple hosts: - -```yaml -# Example configuration.yaml entry with manually specified addresses -media_player: - - platform: sonos - hosts: - - 192.0.2.25 - - 192.0.2.26 - - 192.0.2.27 -``` - -### {% linkable_title Service `sonos_snapshot` %} - -Take a snapshot of what is currently playing on one or more speakers. This service, and the following one, are useful if you want to play a doorbell or notification sound and resume playback afterwards. If no `entity_id` is provided, all speakers are snapshotted. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `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` %} - -Restore a previously taken snapshot of one or more speakers. If no `entity_id` is provided, all speakers are restored. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `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` %} - -Do group players together under a single coordinator. That will make a new group or join to exists group. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `master` | no | A single `entity_id` that will become/hold the coordinator speaker. -| `entity_id` | no | String or list of a single `entity_id` that will group to master speaker. - -### {% linkable_title Service `sonos_unjoin` %} - -Remove one or more speakers from a group of speakers. If no `entity_id` is provided, all speakers are unjoined. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will be separated from their coordinator speaker. - -### {% linkable_title Service `sonos_set_sleep_timer` %} - -Sets a timer that will turn off a speaker by tapering the volume down to 0 after a certain amount of time. Protip: If you set the sleep_time value to 0, then the speaker will immediately start tapering the volume down. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will have their timers set. Must be a coordinator speaker. -| `sleep_time` | no | Integer number of seconds that the speaker should wait until it starts tapering. Cannot exceed 86399 (one day). - -### {% linkable_title Service `sonos_clear_sleep_timer` %} - -Clear the sleep timer on a speaker, if one is set. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will have their timers cleared. Must be a coordinator speaker. - -### {% linkable_title Service `sonos_update_alarm` %} - -Update an existing Sonos alarm. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will have their timers cleared. Must be a coordinator speaker. -| `alarm_id` | no | Integer that is used in Sonos to refer to your alarm. -| `time` | yes | Time to set the alarm. -| `volume` | yes | Float for volume level. -| `enabled` | yes | Boolean for whether or not to enable this alarm. -| `include_linked_zones` | yes | Boolean that defines if the alarm also plays on grouped players. - -### {% linkable_title Service `sonos_set_option` %} - -Set Sonos speaker options. - -Night Sound and Speech Enhancement modes are only supported on Sonos PLAYBAR and PLAYBASE speakers when playing from the TV source. Other speaker types will ignore these options. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | String or list of `entity_id`s that will have their options set. -| `night_sound` | yes | Boolean to control Night Sound mode. -| `speech_enhance` | yes | Boolean to control Speech Enhancement mode. diff --git a/source/_components/media_player.soundtouch.markdown b/source/_components/media_player.soundtouch.markdown deleted file mode 100644 index 463914f236..0000000000 --- a/source/_components/media_player.soundtouch.markdown +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: page -title: "Soundtouch" -description: "Instructions on how to integrate Bose Soundtouch devices into Home Assistant." -date: 2016-11-06 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: soundtouch.png -ha_category: Media Player -ha_release: 0.34.0 -ha_iot_class: "Local Polling" ---- - -The `soundtouch` platform allows you to control your [Bose Soundtouch](https://www.soundtouch.com/) speakers from Home Assistant. - -By default it supports auto-discovery provided by Home Assistant, and you don't need to add anything to your `configuration.yaml`. - -Alternatively, you can add the following to your `configuration.yaml` file. - -```yaml -# Example configuration.yaml -media_player: - - platform: soundtouch - host: 192.168.1.1 - port: 8090 - name: Soundtouch Living Room -``` - -Or for multiple hosts - -```yaml -# Example configuration.yaml with many devices -media_player: - - platform: soundtouch - host: 192.168.1.1 - port: 8090 - name: Soundtouch Living Room - - platform: soundtouch - host: 192.168.1.1 - port: 8090 - name: Soundtouch kitchen -``` - -Configuration variables: - -- **host** (*Required*): The host name or address of the Soundtouch device. -- **name** (*Required*): The name of the device used in the frontend. -- **port** (*Optional*): The port number. Defaults to 8090. - -You can switch between one of your 6 pre-configured presets using ```media_player.play_media``` - -```yaml -# Play media preset -- service: media_player.play_media - data: - entity_id: media_player.soundtouch_living_room - media_content_id: 1..6 - 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 - devices (slaves) - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `master` | no | `entity_id` of the master device - -### {% linkable_title Service `soundtouch_create_zone` %} - -Create a multi-room (zone) from a master and play on selected slaves - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `master` | no | `entity_id` of the master device| -| `slaves` | no | List of slaves `entity_id` | - -### {% linkable_title Service `soundtouch_add_zone_slave` %} - -Add slave(s) to an existing zone - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------ | -| `master` | no | `entity_id` of the master device | -| `slaves` | no | List of slaves `entity_id` to add| - -### {% linkable_title Service `soundtouch_remove_zone_slave` %} - -Remove slave(s) from an existing zone. - -Removing the last slave will destroy the zone. You will need to -create a new zone in order to be able to add slave(s) again - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ---------------- | -| `master` | no | `entity_id` of the master device | -| `slaves` | no | List of slaves `entity_id` to remove | diff --git a/source/_components/media_player.spotify.markdown b/source/_components/media_player.spotify.markdown deleted file mode 100644 index 7097e06e20..0000000000 --- a/source/_components/media_player.spotify.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Spotify" -description: "Instructions on how to integrate Spotify into Home Assistant." -date: 2017-04-10 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: spotify.png -ha_category: Media Player -featured: false -ha_release: 0.43 -ha_iot_class: "Cloud Polling" ---- - -The `spotify` media player platform allows you to control [Spotify](https://www.spotify.com/) playback from Home Assistant. - -## {% linkable_title Prerequisites %} - -- Spotify account. -- Spotify Application, properly configured - -

    -Controlling the Spotify component (pause, play, next, etc) requires a Premium account. If you do not have a Premium account, the component in the frontend will not show the controls. -

    - -To create the required Spotify Application: - -- Login to [Spotify Developer](https://developer.spotify.com) -- Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page -- Select **Create An App**. Enter any name and description. Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. -- Add a **Redirect URI** in the following forms: - - No SSL: `http://:/api/spotify` - - If using SSL: `https://:/api/spotify` - -The URL is whatever you use to access Home Assistant from outside your network (including port if applicable). - -- Click **Save** after adding the URI. You may also need to set the `base_url` attribute of the [HTTP Component](/components/http/). - - -## {% linkable_title Configuration %} - -To add Spotify to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: spotify - client_id: - client_secret: - aliases: - abc123def456: 'Living Room' - 9183abas000: 'Bed Room' -``` - -Configuration variables: - -- **client_id** (*Required*): Client ID from your Spotify Application. -- **client_secret** (*Required*): Client Secret from your Spotify Application. -- **cache_path** (*Optional*): Path to cache authentication token (defaults to configuration directory). -- **aliases** (*Optional*): Dictionary of device ids to be aliased, handy for devices that Spotify cannot properly determine the device name of. New devices will be logged to the `info` channel for ease of aliasing. - -## {% linkable_title Setup %} - -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. - -## {% 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. - -In this example this is a URI link to the Reggae Infusions playlist, the link below from Spotify explains how to get this URI value to use for playlists in the Spotify component. - -https://support.spotify.com/us/using_spotify/share_music/why-do-you-have-two-different-link-formats/ diff --git a/source/_components/media_player.squeezebox.markdown b/source/_components/media_player.squeezebox.markdown deleted file mode 100644 index b226960e31..0000000000 --- a/source/_components/media_player.squeezebox.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Logitech Squeezebox" -description: "Instructions on how to integrate a Logitech Squeezebox player into Home Assistant." -date: 2015-08-09 11:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: squeezebox.png -ha_category: Media Player -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `squeezebox` platform allows you to control a [Logitech Squeezebox](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29) music player from Home Assistant. This lets you control Squeezebox hardware like the Classic, Transporter, Duet, Boom, Radio and Touch and of software players like [SoftSqueeze](http://softsqueeze.sourceforge.net/), [SqueezePlayer](https://play.google.com/store/apps/details?id=de.bluegaspode.squeezeplayer) and [SqueezeSlave](http://forums.slimdevices.com/showthread.php?93607-ANNOUNCE-Squeezeslave-1-2-released). - -To add your Squeezebox player to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: squeezebox - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): The host name or address of the Logitech Media Server, eg. 192.168.1.21. -- **port** (*Optional*): Web interface port to Logitech Media Server. Defaults to 9000. -- **username** (*Optional*): The username, if password protection is enabled. -- **password** (*Optional*): The password, if password protection is enabled. - -

    This platform now uses the web interface of the Logitech Media Server to send commands. The default port of the web interface is 9000. It is the same port that you use to access the LMS through your web browser. Originally, this platform used the telnet interface, which defaults to 9090. If you previously specified the port in your configuration file, you will likely need to update it.

    - -### {% linkable_title Service `squeezebox_call_method` %} - -Call a custom Squeezebox JSONRPC API. - -See documentation for this interface on http://HOST:PORT/html/docs/cli-api.html?player= where HOST and PORT are the host name and port for your Logitech Media Server. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Squeezebox entities where to run the API method. -| `command` | no | Command to pass to Logitech Media Server (p0 in the CLI documentation). -| `parameters` | yes | Array of additional parameters to pass to Logitech Media Server (p1, ..., pN in the CLI documentation). - -This service can be used to integrate any Squeezebox action to an automation. - -It can also be used to target a Squeezebox from IFTT (or DialogFlow, Alexa...). - -For example, to play an album from your collection, create an IFTT applet like this: -- Trigger: Google assistant, with sentence: `I want to listen to album $` -- Action: JSON post query with such JSON body: -`{ "entity_id": "media_player.squeezebox_radio", "command": "playlist", "parameters": ["loadtracks", "album.titlesearch={{TextField}}"] }` -This can work with title search and basically any thing. The same wouldn't have worked by calling directly Squeezebox server as IFTT cannot escape the text field. diff --git a/source/_components/media_player.ue_smart_radio.markdown b/source/_components/media_player.ue_smart_radio.markdown deleted file mode 100644 index 0a250b6b86..0000000000 --- a/source/_components/media_player.ue_smart_radio.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Logitech UE Smart Radio" -description: "Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant." -date: 2017-12-09 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ueradio.png -ha_category: Media Player -ha_release: "0.60" -ha_iot_class: "Cloud Polling" ---- - - -The `ue_radio` platform allows you to control a [Logitech UE Smart Radio](https://www.uesmartradio.com) from Home Assistant. This lets you control both Logitech UE Smart Radios and Logitech Squeezebox Radios that have been updated with the UE Smart Radio update. - -To add your UE Smart Radio player to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: ue_smart_radio - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The email you use to log in to `uesmartradio.com`. - required: true - type: string -password: - description: The password you use to log in to `uesmartradio.com`. - required: true - type: string -{% endconfiguration %} diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown deleted file mode 100644 index 76cbc4a4ba..0000000000 --- a/source/_components/media_player.universal.markdown +++ /dev/null @@ -1,243 +0,0 @@ ---- -layout: page -title: "Universal" -description: "Instructions on how to create a universal media player in Home Assistant." -date: 2016-01-12 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Media Player -featured: false ---- - -Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center. - -Multiple media player entities can be controlled from an universal media player. Additionally, the universal media player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver. - -A Universal Media Player is created in `configuration.yaml` as follows. - -```yaml -# Example configuration.yaml entry -media_player: - - platform: universal - name: MEDIA_PLAYER_NAME - children: - - media_player.CHILD_1_ID - - media_player.CHILD_2_ID - commands: - turn_on: - service: SERVICE - data: SERVICE_DATA - turn_off: - service: SERVICE - data: SERVICE_DATA - volume_up: - service: SERVICE - data: SERVICE_DATA - volume_down: - service: SERVICE - data: SERVICE_DATA - volume_mute: - service: SERVICE - data: SERVICE_DATA - attributes: - is_volume_muted: ENTITY_ID|ATTRIBUTE - state: ENTITY_ID|ATTRIBUTE -``` - -{% configuration %} -name: - description: The name to assign the player. - required: true - type: string -children: - description: Ordered list of child media players this entity will control. - required: true - type: list -state_template: - description: "A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like switches or input booleans." - required: false - type: template -commands: - description: "Commands to be overwritten. Possible entries are `turn_on`, `turn_off`, `select_source`, `volume_set`, `volume_up`, `volume_down` and `volume_mute`." - required: false - type: string -attributes: - description: "Attributes that can be overwritten. Possible entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id should be provided." - required: false - type: string -{% endconfiguration %} - -The Universal Media Player will primarily imitate one of its `children`. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the `children:` list must be media players, but the state template can contain any entity. - -It is recommended that the command `turn_on`, the command `turn_off`, and the attribute `state` all be provided together. The `state` attribute indicates if the media player is on or off. If `state` indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and `state` is on, the Universal Media Player's state will be on. - -It is also recommended that the command `volume_up`, the command `volume_down`, the command `volume_mute`, and the attribute `is_volume_muted` all be provided together. The attribute `is_volume_muted` should return either True or the on state when the volume is muted. The `volume_mute` service should toggle the mute setting. - -When providing `select_source` as a command, it is recommended to also provide the attributes `source`, and `source_list`. The `source` attribute is the currently select source, while the `source_list` attribute is a list of all available sources. - -## {% linkable_title Usage examples %} - -#### {% linkable_title Chromecast & Kodi control with switches %} - -In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The `turn_on` and `turn_off` commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The `select_source` command will be passed directly to an A/V receiver. - -The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status. - -{% raw %} -```yaml -media_player: - platform: universal - name: Test Universal - children: - - media_player.living_room_cast - - media_player.living_room_kodi - commands: - turn_on: - service: switch.turn_on - data: - entity_id: switch.living_room_tv - turn_off: - service: switch.turn_off - data: - entity_id: switch.living_room_tv - volume_up: - service: switch.turn_on - data: - entity_id: switch.living_room_volume_up - volume_down: - service: switch.turn_on - data: - entity_id: switch.living_room_volume_down - volume_mute: - service: switch.turn_on - data: - entity_id: switch.living_room_mute - select_source: - service: media_player.select_source - data_template: - entity_id: media_player.receiver - source: '{{ source }}' - volume_set: - service: media_player.volume_set - data_template: - entity_id: media_player.receiver - volume_level: '{{ volume_level }}' - - attributes: - state: switch.living_room_tv - is_volume_muted: switch.living_room_mute - volume_level: media_player.receiver|volume_level - source: media_player.receiver|source - source_list: media_player.receiver|source_list -``` -{% endraw %} - -#### {% linkable_title Kodi CEC-TV control %} - -In this example, a [Kodi Media Player](/components/media_player.kodi/) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV. - -We store the state of the attached TV in a hidden [input boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the universal media player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). - -Because the input boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. - -In an Apple HomeKit scene, we can now expose this universal media player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. - -The complete configuration is: - -{% raw %} -```yaml -homeassistant: - customize: - input_boolean.kodi_tv_state: - hidden: true - homebridge_hidden: true - media_player.kodi: - hidden: true - homebridge_hidden: true - media_player.kodi_tv: - friendly_name: Kodi - homebridge_name: Kodi - homebridge_media_player_switch: on_off - -input_boolean: - kodi_tv_state: - -media_player: -- platform: universal - name: Kodi TV - state_template: > - {% if is_state('media_player.kodi', 'idle') and is_state('input_boolean.kodi_tv_state', 'off') %} - off - {% else %} - {{ states('media_player.kodi') }} - {% endif %} - children: - - media_player.kodi - commands: - turn_on: - service: media_player.turn_on - data: - entity_id: media_player.kodi - turn_off: - service: media_player.turn_off - data: - entity_id: media_player.kodi - attributes: - is_volume_muted: media_player.kodi|is_volume_muted - volume_level: media_player.kodi|volume_level - -- platform: kodi - name: Kodi - host: 192.168.1.10 - turn_on_action: - - service: input_boolean.turn_on - data: - entity_id: input_boolean.kodi_tv_state - - service: media_player.kodi_call_method - data: - entity_id: media_player.kodi - method: Addons.ExecuteAddon - addonid: script.json-cec - params: - command: activate - turn_off_action: - - service: input_boolean.turn_off - data: - entity_id: input_boolean.kodi_tv_state - - service: media_player.media_stop - data: - entity_id: media_player.kodi - - service: media_player.kodi_call_method - data: - entity_id: media_player.kodi - method: Addons.ExecuteAddon - addonid: script.json-cec - params: - command: standby - -automation: -- alias: Turn on the TV when Kodi is activated - trigger: - platform: state - entity_id: media_player.kodi_tv - from: 'off' - to: 'playing' - action: - - service: media_player.turn_on - entity_id: media_player.kodi_tv - -- alias: Turn off the TV when Kodi is in idle > 15 min - trigger: - platform: state - entity_id: media_player.kodi_tv - to: 'idle' - for: - minutes: 15 - action: - - service: media_player.turn_off - entity_id: media_player.kodi_tv -``` -{% endraw %} diff --git a/source/_components/media_player.vizio.markdown b/source/_components/media_player.vizio.markdown deleted file mode 100644 index 1557b16649..0000000000 --- a/source/_components/media_player.vizio.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: page -title: "Vizio SmartCast TV" -description: "Instructions on 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](/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. - -If you want to only ignore only this specific [python urllib3 SSL warning](https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings), you will need to run Home Assistant with the python flag `-W` or the environment variable `PYTHONWARNINGS` set to: -`ignore:Unverified HTTPS request is being made` -

    diff --git a/source/_components/media_player.vlc.markdown b/source/_components/media_player.vlc.markdown deleted file mode 100644 index 0925495764..0000000000 --- a/source/_components/media_player.vlc.markdown +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: page -title: "VLC" -description: "Instructions on how to integrate VLC media player into Home Assistant." -date: 2016-11-02 12:02 -sidebar: true -comments: false -sharing: true -footer: true -logo: videolan.png -ha_category: Media Player -featured: false -ha_release: 0.35 -ha_iot_class: "Local Polling" ---- - -The `vlc` platform allows you to control [VLC media player](http://www.videolan.org/vlc/index.html). - -To add a VLC media player to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: vlc -``` - -Configuration variables: - -- **name** (*Optional*): The name to use in the frontend. -- **arguments** (*Optional*): Additional arguments to be passed to VLC. - -Only the "music" media type is supported for now. - -This service will control a background VLC instance, therefore you cannot use this to control a VLC instance launched on your desktop, unlike the Kodi media player for example. - -## {% linkable_title Full configuration %} - -A full configuration for VLC could look like the one below: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: vlc - name: speaker_1 - arguments: '--alsa-audio-device=hw:1,0' -``` - -##### {% linkable_title Additional configuration on macOS %} - -On macOS `python-vlc` won’t find the VLC plugin directory unless you add this to the user’s `.bash_profile` that is running Home Assistant: - -```bash -export VLC_PLUGIN_PATH=$VLC_PLUGIN_PATH:/Applications/VLC.app/Contents/MacOS/plugins -``` - -##### {% linkable_title Additional configuration for Rasperry Pi %} - -You need to add the `homeassistant` user to the `audio` group: - -```bash -sudo usermod -a -G audio homeassistant -``` - -##### {% linkable_title VLC currently not supported with Hass.io %} - -According to the forum topic ["How to add VLC into my Hassio"](http://community.home-assistant.io/t/how-to-add-vlc-into-my-hassio/23000/5), it is not possible to install packages like VLC on Hass.io. diff --git a/source/_components/media_player.volumio.markdown b/source/_components/media_player.volumio.markdown deleted file mode 100644 index 26053822e8..0000000000 --- a/source/_components/media_player.volumio.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Volumio Media Player" -description: "How to set up the Volumio media player platform" -date: 2017-03-04 -sidebar: true -comments: false -sharing: true -footer: true -logo: volumio.png -ha_category: Media Player -ha_release: 0.41 ---- - -The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player from Home Assistant. - -The preferred way to set up the Volumio platform is by enabling the [discovery component](/components/discovery/). - -In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: volumio - host: homeaudio.local - port: 3000 -``` - -Configuration variables: - -- **name** (*Optional*): Name of the device -- **host** (*Required*): IP address or hostname of the device -- **port** (*Required*): Port number of Volumio service diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown deleted file mode 100644 index 1d634dcebc..0000000000 --- a/source/_components/media_player.webostv.markdown +++ /dev/null @@ -1,131 +0,0 @@ ---- -layout: page -title: "LG webOS Smart TV" -description: "Instructions on how to integrate a LG webOS Smart TV within Home Assistant." -date: 2016-04-18 23:24 -sidebar: true -comments: false -sharing: true -footer: true -logo: webos.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: 0.18 ---- - -The `webostv` platform allows you to control a [LG](http://www.lg.com/) webOS Smart TV. - -### {% 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 Home Assistants'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: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: webostv -``` - -Configuration variables: - -- **host** (*Optional*): The IP of the LG webOS Smart TV, e.g., `192.168.0.10`. -- **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 and webOS App inputs. - -If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered. - -### {% linkable_title Example %} - -A full configuration example will look like the sample below: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: webostv - host: 192.168.0.10 - name: Living Room TV - timeout: 5 - filename: webostv.conf - turn_on_action: - service: persistent_notification.create - data: - message: "Turn on action" - customize: - sources: - - livetv - - youtube - - makotv - - netflix -``` - -Avoid using `[ ]` in the `name:` of your device. - -### {% linkable_title 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). - -```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. - -### {% linkable_title 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. - -### {% linkable_title Change channel through play_media service %} - -The `play_media` service can be used in a script to switch to the specified tv channel. -It selects the best matching cannel according to the `media_content_id` parameter: - 1. Channel number *(i.e. '1' or '6')* - 2. Exact channel name *(i.e. 'France 2' or 'CNN')* - 3. Substring in channel name *(i.e. 'BFM' in 'BFM TV')* - -```yaml -# Example action entry in script to switch to channel number 1 -service: media_player.play_media -data: - entity_id: media_player.lg_webos_smart_tv - media_content_id: 1 - media_content_type: "channel" - -# Example action entry in script to switch to channel including 'TF1' in its name -service: media_player.play_media -data: - entity_id: media_player.lg_webos_smart_tv - media_content_id: "TF1" - media_content_type: "channel" -``` - -### {% linkable_title Next/Previous buttons %} - -The behaviour of the next and previsous buttons is different depending on the active source: - - - if the source is 'LiveTV' (television): next/previous buttons act as channel up/down - - otherwise: next/previsous buttons act as next/previous track diff --git a/source/_components/media_player.xiaomi_tv.markdown b/source/_components/media_player.xiaomi_tv.markdown deleted file mode 100644 index ffc2f1efc7..0000000000 --- a/source/_components/media_player.xiaomi_tv.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Xiaomi TV" -description: "Instructions on how to integrate a Xiaomi TV into Home Assistant." -date: 2018-02-12 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: Media Player -ha_release: 0.64 -ha_iot_class: "Assumed State" ---- - -The `xiaomi_tv` platform allows you to control a [Xiaomi TV](http://www.mi.com/en/mitv3s/65flat/). - -You need to make sure the TV is connected to the internet, and that your Home Assistant instance is on the same network. - -To add a TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: xiaomi_tv -``` - -

    -When starting or restarting Home Assistant make sure your TV is off. This is a flaw in the TV itself. -

    - -Configuration variables: - -- **host** (*Optional*): The IP of the Xiaomi TV, eg. 192.168.0.10 -- **name** (*Optional*): The name to use on the frontend. Default is 'Xiaomi TV'. - -If you do not set a host in the configuration file, local TVs will automatically be discovered. - -To manually add a TV you can use the following configuration: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: xiaomi_tv - host: YOUR_TV_IP - name: YOUR_TV_NAME -``` - -

    -The platform will never turn your TV off. Instead, it will be put to sleep and woken up. This can be useful, because the selected source of the TV will remain the same. It will essentially turn your TV into a dumb TV. -

    diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/media_player.yamaha.markdown deleted file mode 100644 index b996e642a4..0000000000 --- a/source/_components/media_player.yamaha.markdown +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: page -title: "Yamaha Network Receivers" -description: "Instructions on how to integrate Yamaha Network Receivers into Home Assistant." -date: 2016-03-26 0:58 -0700 -sidebar: true -comments: false -sharing: true -footer: true -logo: yamaha.png -ha_category: Media Player -ha_release: 0.16 ---- - -The `yamaha` platform allows you to control [Yamaha Network Receivers](http://usa.yamaha.com/products/audio-visual/av-receivers-amps/rx) from Home Assistant. - -Supported devices: - -- HTR-4065 -- RX-V473 -- RX-V573 -- RX-V673 -- RX-V773 -- And more - -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 -``` -Configuration variables: - -- **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 one to rename e.g., `HDMI1` to `ChromeCast` -- **zone_ignore** (*Optional*): List of zones to hide in the front-end -- **zone_names** (*Optional*): Mapping of zone names to custom ones, allowing one to rename e.g., `Main_Zone` to `Family Room` - -### {% linkable_title Discovery notes %} - -- 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 its 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 `>` separated 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 -# Example configuration.yaml entry -media_player: - - platform: yamaha - host: 192.168.0.10 - source_ignore: - - "AUX" - - "HDMI6" - source_names: - HDMI1: "ChromeCast" - AV4: "Vinyl" - zone_ignore: - - "Zone_2" - zone_names: - Main_Zone: "Family Room" -``` - -### {% 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" - -``` - -### {% linkable_title Service `yamaha_enable_output` %} - -Enable or disable an output port (HDMI) on the receiver. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of Yamaha receivers. -| `port` | no | Port to enable or disable, e.g., `hdmi1`. -| `enabled` | no | To enable set true, otherwise set to false. diff --git a/source/_components/media_player.yamaha_musiccast.markdown b/source/_components/media_player.yamaha_musiccast.markdown deleted file mode 100644 index 7d98e77102..0000000000 --- a/source/_components/media_player.yamaha_musiccast.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -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 MusicCast 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 source port. If multiple devices are present, specify a different port per device -- **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/media_player.ziggo_mediabox_xl.markdown b/source/_components/media_player.ziggo_mediabox_xl.markdown deleted file mode 100644 index 0581b320a2..0000000000 --- a/source/_components/media_player.ziggo_mediabox_xl.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Ziggo Mediabox XL" -description: "Instructions on how to integrate the Ziggo Mediabox XL into Home Assistant." -date: 2017-11-10 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ziggo.png -ha_category: Media Player -ha_iot_class: "Local Polling" -ha_release: "0.60" ---- - -The `ziggo_mediabox_xl` component allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. - -To add a Ziggo Mediabox XL to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: ziggo_mediabox_xl - host: 192.168.0.123 - name: Ziggo Mediabox -``` - -{% configuration %} - host: - description: The hostname or address of the device. - required: true - type: string - name: - description: The name of the device used in the frontend. - required: false - type: string -{% endconfiguration %} - -The channel information (numbers and names) are downloaded from ziggo.nl on startup. - -#### {% linkable_title Preparation of the Mediabox %} - -Makes sure to enable the Home Network ("mijn thuisnetwerk") service in the settings menu of the media box. Once you have set up the Media Library ("mediabiblotheek"), we can determine whether the device is turned on or off. Without this, the component will fail to start. diff --git a/source/_components/melissa.markdown b/source/_components/melissa.markdown deleted file mode 100644 index 46be358b61..0000000000 --- a/source/_components/melissa.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Melissa Climate" -description: "Instructions on how to integrate Melissa Climate into Home Assistant." -date: 2017-01-05 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: mclimate.png -ha_category: Hub -featured: false -ha_release: 0.63 -ha_iot_class: "Cloud Polling" ---- - -The `Melissa` component is the main component to connect to a [Melissa Climate](http://seemelissa.com/) A/C control. - -## {% linkable_title Configuration %} - -To set the Melissa component up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -melissa: - username: YOUR_MELISSA_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} - username: - description: The username for accessing your Melissa account. - required: true - type: string - password: - description: The password for accessing your Melissa account. - required: true - type: string -{% endconfiguration %} diff --git a/source/_components/mercedesme.markdown b/source/_components/mercedesme.markdown deleted file mode 100644 index db5774c518..0000000000 --- a/source/_components/mercedesme.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Mercedes me" -description: "Instructions on how to integrate Mercedes car with Mercedes me into Home Assistant." -date: 2018-01-27 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mercedesme.png -ha_category: Hub -ha_release: 0.63 -ha_iot_class: "Cloud Polling" ---- - - -The `mercedesme` component offers integration with the [Mercedes me](https://www.mercedes-benz.com/de/mercedes-me/) cloud service and provides presence detection as well as sensors such as doors, tires, windows, and service interval. - -This component provides the following platforms: - - - Binary Sensors: Windows, tires, doors and lock. - - Sensors:Fuel status, service interval, remaining km, etc. - - Device tracker: To track location of your car. - -

    - The component was removed. The vendor disabled the API endpoint and a new API is not available currently. -

    diff --git a/source/_components/microsoft_face.markdown b/source/_components/microsoft_face.markdown deleted file mode 100644 index d7d8cdc7ed..0000000000 --- a/source/_components/microsoft_face.markdown +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: page -title: "Microsoft Face" -description: "Instructions on how to integrate Microsoft Face component into Home Assistant." -date: 2017-01-25 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: microsoft.png -ha_category: Hub -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 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 to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -microsoft_face: - api_key: YOUR_API_KEY - azure_region: eastus2 -``` - -Configuration variables: - -- **api_key** (*Required*): The API key for your Cognitive resource. -- **azure_region** (*Optional*): The region where you instantiated your Microsoft Cognitive services endpoint -- **timeout** (*Optional)*: Set timeout for the API connection. Defaults to 10s. - -### {% 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 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 and can be called via the Frontend, a script, or the REST API. - -- *microsoft_face.create_group* -- *microsoft_face.delete_group* - -```yaml -service: microsoft_face.create_group -data: - name: 'Family' -``` - -- *microsoft_face.create_person* -- *microsoft_face.delete_person* - -```yaml -service: microsoft_face.create_person -data: - group: family - name: 'Hans Maier' -``` - -You need to add an image of a person. You can add multiple images for every person to make the detection better. You can take a picture from a camera or send a local image to your Azure resource. - -- *microsoft_face.face_person* - -```yaml -service: microsoft_face.face_person -data: - group: family - name: 'Hans Maier' - camera_entity: camera.door -``` - -For the local image we need `curl`. The `{personId}` is present in group entity as attribute. - -```bash -$ curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/persongroups/{GroupName}/persons/{personId}/persistedFaces" \ - -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ - -H "Content-Type: application/octet-stream" --data-binary "@/tmp/image.jpg" -``` - -After we're done with changes on a group, we need train this group to teach the AI how to handle the new data. - -- *microsoft_face.train_group* - -```yaml -service: microsoft_face.train_group -data: - group: family -``` diff --git a/source/_components/mochad.markdown b/source/_components/mochad.markdown deleted file mode 100644 index bf0617cefb..0000000000 --- a/source/_components/mochad.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Mochad" -description: "Instructions on how to integrate Mochad into Home Assistant." -date: 2016-10-20 17:09 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_release: 0.32 ---- - -The `mochad` component is the main component to integrate all X10 platforms being controlled by [mochad](https://sourceforge.net/projects/mochad/). Besides this component you will have to setup your X10 devices separately. - -## {% linkable_title Configuration %} - -To integrate your Mochad units with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mochad: -``` - -{% configuration %} -host: - description: The host that mochad is running on. - required: false - type: string - default: localhost -port: - description: The port that mochad is running on. - required: false - type: int - default: 1099 -{% endconfiguration %} - -## {% linkable_title Example %} - -A full configuration sample could look like the one below: - -```yaml -# Example configuration.yaml entry -mochad: - host: localhost - port: 1099 -``` diff --git a/source/_components/modbus.markdown b/source/_components/modbus.markdown deleted file mode 100644 index dcccf0ede6..0000000000 --- a/source/_components/modbus.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: page -title: "Modbus" -description: "Instructions on how to integrate Modbus within Home Assistant." -date: 2015-04-25 9:16 -sidebar: true -comments: false -sharing: true -footer: true -logo: modbus.png -ha_category: Hub -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - - -[Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections. - -## {% linkable_title Configuration %} - -To add modbus to your installation, add the following to your `configuration.yaml` file: - -For a network connection: - -```yaml -# Example configuration.yaml entry for a TCP connection -modbus: - type: tcp - host: IP_ADDRESS - port: 2020 -``` - -Configuration variables: - -- **type** (*Required*): Type of the connection to Modbus. Possible values are: - - *tcp*: Modbus TCP protocol according to "MODBUS Messaging Implementation Guide version 1.0b" provided by Schneider Automation, - - *udp*: Modbus TCP form, but using UDP for transport (removes the overheads required for TCP), - - *rtuovertcp*: Modbus RTU message transmitted with a TCP/IP wrapper and sent over a network instead of serial lines. -- **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: - -```yaml -# Example configuration.yaml entry for a serial connection -modbus: - type: serial - method: rtu - port: /dev/ttyUSB0 - baudrate: 9600 - stopbits: 1 - bytesize: 8 - parity: N -``` - -Configuration variables: - -- **type** (*Required*): Type of the connection to Modbus. -- **method** (*Required*): Method of the connection to Modbus. -- **port** (*Required*): The port where your Modbus device is connected to your Home Assistant host. -- **baudrate** (*Required*): The speed for the serial connection. -- **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 %} - - -| Service | Description | -| ------- | ----------- | -| write_register | Write register. Requires `unit`, `address` and `value` fields. `value` can be either single value or an array | - - -## {% linkable_title Building on top of Modbus %} - - - [Modbus Binary Sensor](/components/binary_sensor.modbus/) - - [Modbus Sensor](/components/sensor.modbus/) - - [Modbus Switch](/components/switch.modbus/) diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown deleted file mode 100644 index 275cac866e..0000000000 --- a/source/_components/mqtt.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "MQTT" -description: "Instructions on how to setup MQTT within Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Hub -featured: true -ha_release: pre 0.7 -ha_iot_class: depends ---- - -MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. - -Your first step to get MQTT and Home Assistant working is to choose a [broker](/docs/mqtt/broker). - -To integrate MQTT into Home Assistant, add the following section to your `configuration.yaml` file. Keep in mind that the minimal setup will run with [an embedded MQTT broker](/docs/mqtt/broker#embedded-broker): - -```yaml -# Example configuration.yaml entry -mqtt: -``` - -To connect to your [own MQTT broker](/docs/mqtt/broker#run-your-own): - -```yaml -# Example configuration.yaml entry -mqtt: - broker: IP_ADDRESS_BROKER -``` - -

    -The minimal setup uses the embedded MQTT broker, however a separate broker is advised for more stability. -

    - -## {% linkable_title Additional features %} - -- [Certificate](/docs/mqtt/certificate/) -- [Discovery](/docs/mqtt/discovery/) -- [Publish service](/docs/mqtt/service/) -- [Birth and last will messages](/docs/mqtt/birth_will/) -- [Testing your setup](/docs/mqtt/testing/) -- [Logging](/docs/mqtt/logging/) -- [Processing JSON](/docs/mqtt/processing_json/) - diff --git a/source/_components/mqtt_eventstream.markdown b/source/_components/mqtt_eventstream.markdown deleted file mode 100644 index 4946433e63..0000000000 --- a/source/_components/mqtt_eventstream.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "MQTT Eventstream" -description: "Instructions on how to setup MQTT eventstream within Home Assistant." -date: 2016-01-13 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Other -ha_release: 0.11 -ha_iot_class: depends ---- - -The `mqtt_eventstream` component connects two Home Assistant instances via MQTT. - -## {% linkable_title Configuration %} - -To integrate MQTT Eventstream into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mqtt_eventstream: - publish_topic: MyServerName - subscribe_topic: OtherHaServerName -``` - -{% configuration %} -publish_topic: - description: Topic for publishing local events. - required: false - type: string -subscribe_topic: - description: Topic to receive events from the remote server. - required: false - type: string -ignore_event: - description: Ignore sending these [events](/docs/configuration/events/) over mqtt. - required: false - type: list -{% endconfiguration %} - -## {% linkable_title Multiple Instances %} - -Events from multiple instances can be aggregated to a single master instance by subscribing to a wildcard topic from the master instance. - -```yaml -# Example master instance configuration.yaml entry -mqtt_eventstream: - publish_topic: master/topic - subscribe_topic: slaves/# - ignore_event: - - call_service - - state_changed -``` - -For a multiple instance setup, each slave would publish to their own topic. - -```yaml -# Example slave instance configuration.yaml entry -mqtt_eventstream: - publish_topic: slaves/upstairs - subscribe_topic: master/topic -``` - -```yaml -# Example slave instance configuration.yaml entry -mqtt_eventstream: - publish_topic: slaves/downstairs - subscribe_topic: master/topic -``` diff --git a/source/_components/mqtt_statestream.markdown b/source/_components/mqtt_statestream.markdown deleted file mode 100644 index 8b1afaa89d..0000000000 --- a/source/_components/mqtt_statestream.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: page -title: "MQTT Statestream" -description: "Instructions on 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. - -## {% linkable_title Configuration %} - -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. -- **exclude** (*Optional*): Configure which components should be excluded from recordings. See *Include/Exclude* section below for details. - - **entities** (*Optional*): The list of entity ids to be excluded from recordings. - - **domains** (*Optional*): The list of domains to be excluded from recordings. -- **include** (*Optional*): Configure which components should be included in recordings. If set, all other entities will not be recorded. - - **entities** (*Optional*): The list of entity ids to be included from recordings. - - **domains** (*Optional*): The list of domains to be included from recordings. - -## Operation - -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`. - -## Include/exclude - -The **exclude** and **include** configuration variables can be used to filter the items that are published to MQTT. - -1\. If neither **exclude** or **include** are specified, all entities are published. - -2\. If only **exclude** is specified, then all entities except the ones listed are published. - -```yaml -# Example of excluding entities -mqtt_statestream: - base_topic: homeassistant - exclude: - domains: - - switch - entities: - - sensor.nopublish -``` -In the above example, all entities except for *switch.x* and *sensor.nopublish* will be published to MQTT. - -3\. If only **include** is specified, then only the specified entries are published. - -```yaml -# Example of excluding entities -mqtt_statestream: - base_topic: homeassistant - include: - domains: - - sensor - entities: - - lock.important -``` -In this example, only *sensor.x* and *lock.important* will be published. - -4\. If both **include** and **exclude** are specified then all entities specified by **include** are published except for the ones -specified by **exclude**. - -```yaml -# Example of excluding entities -mqtt_statestream: - base_topic: homeassistant - include: - domains: - - sensor - exclude: - entities: - - sensor.noshow -``` -In this example, all sensors except for *sensor.noshow* will be published. diff --git a/source/_components/mychevy.markdown b/source/_components/mychevy.markdown deleted file mode 100644 index 15a6b88ff1..0000000000 --- a/source/_components/mychevy.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "MyChevy" -description: "Instructions on how to integrate Chevy Bolt car into Home Assistant." -date: 2017-08-28 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: chevy.png -ha_category: Hub -ha_release: 0.62 -ha_iot_class: "Cloud Polling" ---- - -The `MyChevy` component communicates with the [my.chevrolet](https://my.chevrolet.com) website using selenium to log in as your user, and screen scrape the data provided. GM does not make it easy to sign up for any official development program, so this provides a workaround to get access to your data. - -This component provides the following platforms: - - - Binary sensors: if the car is plugged in - - Sensors: Battery Level, Charge Mode, EST Range, Total Distance Traveled - -## {% linkable_title Configuration %} - -To use MyChevy in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mychevy: - username: YOUR_E_MAIL_ADDRESS - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The email address associated with your my.chevrolet account. - required: true - type: string -password: - description: The password for your given my.chevrolet account. - required: true - type: string -{% endconfiguration %} - - -#### {% linkable_title Installation %} - -Because this uses selenium behind the scenes, installation is more complicated than merely pip install. See the [installation instructions](https://github.com/sdague/mychevy). - -#### {% linkable_title Limitations %} - -The architecture of the GM automotive networking imposes some limitations on the functionality of the component. - -The OnStar network link is very slow, and takes 1 - 3 minutes to get information back from the car. As such the mychevy component only polls every 30 minutes to not overwhelms that connection. - -The OnStar network (or more specifically the gateway used by the my.chevrolet website) appears to suffer more than most networks when the car is a) in a garage, and b) it's cold outside (like < 15 degrees F). One of the provided sensors is a status sensor which indicates if we got connectivity with the car on the last polling cycle or not. - -The "API" for this is written by web scraping. As such, it only currently is known to work if you have a Chevy Bolt EV, and only 1 Chevy car connected to OnStar. Patches for extended support should go to the https://github.com/sdague/mychevy project first, then Home Assistant can be extended. - diff --git a/source/_components/mycroft.markdown b/source/_components/mycroft.markdown deleted file mode 100644 index 9754096be0..0000000000 --- a/source/_components/mycroft.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Mycroft" -description: "Instructions on 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 an 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 deleted file mode 100644 index f9e9388c67..0000000000 --- a/source/_components/mysensors.markdown +++ /dev/null @@ -1,257 +0,0 @@ ---- -layout: page -title: "MySensors" -description: "Instructions on how to integrate MySensors sensors into Home Assistant." -date: 2016-10-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Hub -featured: true -ha_iot_class: "Local Push" ---- - -The [MySensors](https://www.mysensors.org) project combines Arduino boards with NRF24L01 radio boards to build sensor networks. The component will automatically add all available devices to Home Assistant, after [presentation](#presentation) is done. - -### {% linkable_title Configuration %} - -Integrate your Serial, Ethernet or MQTT Client MySensors Gateway by adding the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mysensors: - gateways: - - 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 - - device: '192.168.1.18' - persistence_file: 'path/mysensors3.json' - tcp_port: 5003 - - device: mqtt - persistence_file: 'path/mysensors4.json' - topic_in_prefix: 'mygateway1-out' - topic_out_prefix: 'mygateway1-in' - optimistic: false - persistence: true - retain: true - version: '2.0' -``` - -{% 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. -

    - -If you are using an original Arduino as a serial gateway, the port will be named `ttyACM*`. The exact number can be determined with the command shown below. - -```bash -$ ls /dev/ttyACM* -``` - -If using the MQTT gateway, you also need to have the [MQTT component](/components/mqtt/) configured in Home Assistant. See below for a minimum MQTT configuration: - -```yaml -mqtt: - client_id: home-assistant-1 -``` - -

    -The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway is supported. -

    - -### {% linkable_title Presentation %} - -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. -2. Configure the MySensors component in `configuration.yaml`. -3. Start hass. -4. Write and upload your MySensors sketch to the sensor. Make sure you: - - Send sketch name. - - Present the sensor's S_TYPE. - - Send at least one initial value per V_TYPE. In version 2.0 of MySensors this has to be done in the loop function. See below for an example in 2.0 of how to make sure the initial value has been received by the controller. -5. Start the sensor. - -```cpp -/* - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/relay - */ - -#define MY_DEBUG -#define MY_RADIO_NRF24 -#define MY_REPEATER_FEATURE -#define MY_NODE_ID 1 -#include -#include -#include - -#define RELAY_PIN 5 -#define BUTTON_PIN 3 -#define CHILD_ID 1 -#define RELAY_ON 1 -#define RELAY_OFF 0 - -Bounce debouncer = Bounce(); -bool state = false; -bool initialValueSent = false; - -MyMessage msg(CHILD_ID, V_STATUS); - -void setup() -{ - pinMode(BUTTON_PIN, INPUT_PULLUP); - debouncer.attach(BUTTON_PIN); - debouncer.interval(10); - - // Make sure relays are off when starting up - digitalWrite(RELAY_PIN, RELAY_OFF); - pinMode(RELAY_PIN, OUTPUT); -} - -void presentation() { - sendSketchInfo("Relay+button", "1.0"); - present(CHILD_ID, S_BINARY); -} - -void loop() -{ - if (!initialValueSent) { - Serial.println("Sending initial value"); - send(msg.set(state?RELAY_ON:RELAY_OFF)); - Serial.println("Requesting initial value from controller"); - request(CHILD_ID, V_STATUS); - wait(2000, C_SET, V_STATUS); - } - if (debouncer.update()) { - if (debouncer.read()==LOW) { - state = !state; - // Send new state and request ack back - send(msg.set(state?RELAY_ON:RELAY_OFF), true); - } - } -} - -void receive(const MyMessage &message) { - if (message.isAck()) { - Serial.println("This is an ack from gateway"); - } - - if (message.type == V_STATUS) { - if (!initialValueSent) { - Serial.println("Receiving initial value from controller"); - initialValueSent = true; - } - // Change relay state - state = (bool)message.getInt(); - digitalWrite(RELAY_PIN, state?RELAY_ON:RELAY_OFF); - send(msg.set(state?RELAY_ON:RELAY_OFF)); - } -} -``` - -### {% 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. - -### {% 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. - -[MySensors library api]: http://www.mysensors.org/download diff --git a/source/_components/namecheapdns.markdown b/source/_components/namecheapdns.markdown deleted file mode 100644 index 4f68adb460..0000000000 --- a/source/_components/namecheapdns.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -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 addresses 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/neato.markdown b/source/_components/neato.markdown deleted file mode 100644 index 82c36d9dfa..0000000000 --- a/source/_components/neato.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Neato Robotics" -description: "Instructions on how to integrate your Neato within Home Assistant." -date: 2016-10-09 20:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Hub -ha_release: 0.33 ---- - -The `neato` component allows you to control your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -To enable `neato` in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -neato: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: Username for the Neato account. - required: true - type: string -password: - description: v - required: true - type: string -{% endconfiguration %} - -

    -After the update to firmware 4.0 (which adds cleaning maps) there is also support for displaying the maps of the Botvac D3 Connected and Botvac D5 Connected robots. The start/stop functionality does not work. More information on how to update can be found [here](https://support.neatorobotics.com/hc/en-us/articles/115004320694-Software-Update-4-0-for-Neato-Botvac-Connected-D3-D5-). -

    diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown deleted file mode 100644 index 718bddc253..0000000000 --- a/source/_components/nest.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "Nest" -description: "Instructions on how to integrate Nest into Home Assistant." -date: 2016-01-29 21:57 -sidebar: true -comments: false -sharing: true -footer: true -logo: nest.png -ha_category: Hub -featured: true -ha_iot_class: "Cloud Polling" ---- - -The Nest component is the main component to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`. - -### {% linkable_title Setting up developer account %} - -1. Visit [Nest Developers](https://developers.nest.com/), and sign in. Create an account if you don't have one already. -2. Fill in account details: - - The "Company Information" can be anything. We recommend using your name. -3. Submit changes -4. Click "[Products](https://developers.nest.com/products)" at top of page. -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. - - 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. - - Use "[Home Assistant] [Edit] [For Home Automation]" as the description as it is not super important. -8. Click "Create Product" -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 9553 on your firewall. The configuration will fail if this is not accessible. - -### {% linkable_title Configuration %} - -```yaml -# Example configuration.yaml entry -nest: - client_id: CLIENT_ID - client_secret: CLIENT_SECRET -``` - -```yaml -# Example configuration.yaml entry to show only devices at your vacation and primary homes -nest: - client_id: CLIENT_ID - client_secret: CLIENT_SECRET - structure: - - Vacation - - Primary -``` - -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 deleted file mode 100644 index 0efe4ac968..0000000000 --- a/source/_components/netatmo.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Netatmo" -description: "Instructions on how to integrate Netatmo component into Home Assistant." -date: 2016-06-02 08:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: netatmo.png -ha_category: Hub -ha_release: "0.20" -ha_iot_class: "Cloud Polling" ---- - - -The `netatmo` component platform is the main component to integrate all Netatmo related platforms. - -To enable the Netatmo component, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -netatmo: - api_key: YOUR_CLIENT_ID - secret_key: YOUR_CLIENT_SECRET - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **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. -Click on 'Create an App' at the top of the page. - -

    - -

    -You have to fill the form, but only two fields are required : Name and Description. It doesn't really matter what you put into those. Just write something that make sense to you. To submit your new app, click on create at the bottom of the form. - -

    - -

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

    - -

    - diff --git a/source/_components/no_ip.markdown b/source/_components/no_ip.markdown deleted file mode 100644 index f070e2b4d5..0000000000 --- a/source/_components/no_ip.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -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.apns.markdown b/source/_components/notify.apns.markdown deleted file mode 100644 index dcad472dbb..0000000000 --- a/source/_components/notify.apns.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "APNS" -description: "Instructions on how to add APNS notifications to Home Assistant." -date: 2016-09-05 23:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Notifications -ha_release: 0.31 ---- - - -The `apns` platform uses the Apple Push Notification service (APNS) to deliver notifications from Home Assistant. - -To use the APNS service you will need an Apple developer account and you will need to create an app to receive push notifications. For more information, see the Apple developer documentation. - -```yaml -# Example configuration.yaml entry -notify: - name: NOTIFIER_NAME - platform: apns - cert_file: cert_file.pem - topic: topic -``` - -Configuration variables: - -- **name** (*Required*): The name of the notifier. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **cert_file** (*Required*): The certificate to use to authenticate with the APNS service. -- **topic** (*Required*): The app bundle ID specified in the certificate. -- **sandbox** (*Optional*): If true notifications will be sent to the sandbox (test) notification service. Default false. - -The APNS platform will register two services, `notify.NOTIFIER_NAME` and `notify.apns_NOTIFIER_NAME`. - -### notify.apns_NOTIFIER_NAME - -This service will register device IDs with Home Assistant. In order to receive a notification a device must be registered. The app on the device can use this service to send an ID to Home Assistant during startup, the ID will be stored in `[NOTIFIER_NAME]_apns.yaml`. - -See `didRegisterForRemoteNotificationsWithDeviceToken` in the [Apple developer documentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/occ/intfm/UIApplicationDelegate/application:didRegisterForRemoteNotificationsWithDeviceToken:) for more information about how to obtain a device ID. - -### notify.NOTIFIER_NAME - -This service will send messages to a registered device. The following parameters can be used: - -- **message**: The message to send. - -- **target**: The desired state of the device, only devices that match the state will receive messages. To enable state tracking a registered device must have a `tracking_device_id` attribute added to the `[NOTIFIER_NAME]_apns.yaml` file. If this ID matches a device in `known_devices.yaml` the device state will be tracked. - -- **data**: - * **badge**: The number to display as the badge of the app icon. - * **sound**: The name of a sound file in the app bundle or in the Library/Sounds folder. - * **category**: Provide this key with a string value that represents the identifier property of the `UIMutableUserNotificationCategory`. - * **content_available**: Provide this key with a value of 1 to indicate that new content is available. diff --git a/source/_components/notify.aws_lambda.markdown b/source/_components/notify.aws_lambda.markdown deleted file mode 100644 index be5a5494ca..0000000000 --- a/source/_components/notify.aws_lambda.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: "AWS Lambda" -description: "Instructions on how to invoke AWS Lambda functions from Home Assistant." -date: 2016-05-14 16:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: aws_lambda.png -ha_category: Notifications -ha_release: "0.20" ---- - -The `aws_lambda` notification platform enables invoking [AWS Lambda](https://aws.amazon.com/lambda/) functions. - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -### Configuration - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: aws_lambda - aws_access_key_id: AWS_ACCESS_KEY_ID - aws_secret_access_key: AWS_SECRET_ACCESS_KEY - region_name: 'us-east-1' -``` - -Configuration variables: - -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): 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 if aws_access_key_id is provided*): 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 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **context** (*Optional*): An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route. - -### {% linkable_title Usage %} - -AWS Lambda is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/lambda.html#Lambda.Client.invoke). - -The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda: - -```json -{ - "title": "Test message!", - "target": "arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords", - "data": { - "test": "okay" - }, - "message": "Hello world!" -} -``` - -The context will look like this: - -```json -{ - "hass": { - "components": ["recorder", "logger", "http", "logbook", "api", "frontend"], - "latitude": 44.1234, - "location_name": "Home", - "longitude": 5.5678, - "unit_system": "metric", - "time_zone": "Europe/Zurich", - "version": "0.20.0.dev0" - }, - "custom": { - "two": "three", - "test": "one" - } -} -``` diff --git a/source/_components/notify.aws_sns.markdown b/source/_components/notify.aws_sns.markdown deleted file mode 100644 index cfa69e0084..0000000000 --- a/source/_components/notify.aws_sns.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "AWS SNS" -description: "Instructions on how to publish messages to AWS SNS from Home Assistant." -date: 2016-05-14 16:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: aws_sns.png -ha_category: Notifications -ha_release: "0.20" ---- - -The `aws_sns` notification platform enables publishing to an [AWS SNS](https://aws.amazon.com/sns/) topic or application. - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: aws_sns - aws_access_key_id: AWS_ACCESS_KEY_ID - aws_secret_access_key: AWS_SECRET_ACCESS_KEY - region_name: 'us-east-1' -``` - -Configuration variables: - -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): 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 if aws_access_key_id is provided*): 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 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - -### {% linkable_title Usage %} - -AWS SNS is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Client.publish). - -If one exists, the SNS Subject will be set to the title. All attributes from the payload except message will be sent as stringified message attributes. - -#### {% linkable_title Setting up SNS within AWS %} - -- Log into your AWS console and under "Security and Identity", select "Identity & Access Management". -- On the left hand side, select "Users" then click "Create New Users". Enter a name here and then click "Create". -- You can either download the credentials or click the arrow to display them one time. - -

    - If you do not download them you will lose them and will have to recreate a new user. -

    - -- Copy/Paste the two keys that you are provided here in your `configuration.yaml` file respectively. -- On the left hand side of the screen go back to "Users" and select the user you just created. On the "Permissions" tab click the "Attach Policy" icon. Search for "SNS" and attach the policy "AmazonSNSFUullAccess". -- Back to the AWS Console you now need to find "SNS" and click in to that service. It is under the Mobile Services group. -- On the left hand side, select "Topics" then "Create new topic". -- Choose a Topic Name and Display Name. -- Now check the box next to the Topic you just created and under Actions, select "Subscribe to topic". -- In the box that pops up, select the Protocol = SMS and enter in the phone number next to "Endpoint" you wish to SMS. Now click "Create". -- Repeat for additional numbers. -- Back in the "Users" section you will see a long alphanumeric line that starts with "arn:" and ends with the Topic Name you choose previously. This is what your "target" in Home Assistant will be. diff --git a/source/_components/notify.aws_sqs.markdown b/source/_components/notify.aws_sqs.markdown deleted file mode 100644 index a1e8a33f8b..0000000000 --- a/source/_components/notify.aws_sqs.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "AWS SQS" -description: "Instructions on how to publish messages to AWS SQS from Home Assistant." -date: 2016-05-14 16:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: aws_sqs.png -ha_category: Notifications -ha_release: "0.20" ---- - -The `aws_sqs` notification platform enables publishing to an [AWS SQS](https://aws.amazon.com/sqs/) message queue. - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: aws_sqs - aws_access_key_id: AWS_ACCESS_KEY_ID - aws_secret_access_key: AWS_SECRET_ACCESS_KEY - region_name: 'us-east-1' -``` - -Configuration variables: - -- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): 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 if aws_access_key_id is provided*): 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 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). -- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - -### {% linkable_title Usage %} - -AWS SQS is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS docs](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html). - -The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload except message will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue: - -```json -{ - "title": "Test message!", - "target": "http://sqs.us-east-1.amazonaws.com/123456789012/queue2", - "data": { - "test": "okay" - }, - "message": "Hello world!" -} -``` diff --git a/source/_components/notify.ciscospark.markdown b/source/_components/notify.ciscospark.markdown deleted file mode 100644 index fb55b90a6f..0000000000 --- a/source/_components/notify.ciscospark.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Cisco Spark" -description: "Instructions on how to add CiscoSpark notifications to Home Assistant." -date: 2017-02-20 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ciscospark.png -ha_category: Notifications -ha_release: "0.40" ---- - -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 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 Developers](https://developer.ciscospark.com/index.html). Just look in the Documentation under Rooms. - -In order to get notified for all new messages in the room you will need to create a bot. This will post the messages from the bot and mark them as new for you which will alert you. If you use your own personal token the messages are added to the room but no notification is triggered. -Once you have created the bot through the new App menu you will need to add the bot to the room that you are a member of as well. Now use the bot access token in your configuration below. - -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: 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 deleted file mode 100644 index 8ac5d9a614..0000000000 --- a/source/_components/notify.clickatell.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -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 create 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](/getting-started/automation/). diff --git a/source/_components/notify.clicksend.markdown b/source/_components/notify.clicksend.markdown deleted file mode 100644 index 8d619617b4..0000000000 --- a/source/_components/notify.clicksend.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -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. - -## {% linkable_title Prerequisites %} - -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`. - -## {% linkable_title Configuration %} - -To add ClickSend to your installation, add the following to your Home Assistant `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: clicksend - name: ClickSend - username: CLICKSEND_USERNAME - api_key: CLICKSEND_API_KEY - recipient: PHONE_NO - -# Multiple recipients -notify: - - platform: clicksend - name: ClickSend - username: CLICKSEND_USERNAME - api_key: CLICKSEND_API_KEY - recipient: [PHONE_NO1, PHONE_NO2] -``` - -{% configuration %} -name: - description: "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`." - required: false - type: string -username: - description: Your Clicksend username. - required: true - type: string -api_key: - description: Your Clicksend API Key. - required: true - type: string -recipient: - description: "A single or multiple phone numbers. This is where you want to send your SMS notification messages, e.g., `09171234567` or `[09171234567, 09177654321]`." - required: true - type: string or list -sender: - description: The name or number of the sender. - required: false - type: string - default: recipient -{% endconfiguration %} - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.clicksend_tts.markdown b/source/_components/notify.clicksend_tts.markdown deleted file mode 100644 index 6009c9e987..0000000000 --- a/source/_components/notify.clicksend_tts.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -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](/getting-started/automation/). - diff --git a/source/_components/notify.command_line.markdown b/source/_components/notify.command_line.markdown deleted file mode 100644 index 4f82febe40..0000000000 --- a/source/_components/notify.command_line.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Command line Notify" -description: "Instructions on how to add command line notifications to Home Assistant." -date: 2016-02-22 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: command_line.png -ha_category: Notifications -ha_release: 0.14 ---- - -The `command_line` platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN. - -To enable those notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: command_line - command: "espeak -vmb/mb-us1" -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **command** (*Required*): The action to take. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.discord.markdown b/source/_components/notify.discord.markdown deleted file mode 100644 index 01029fb4b1..0000000000 --- a/source/_components/notify.discord.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: page -title: "Discord" -description: "Instructions on how to add Discord notifications to Home Assistant." -date: 2016-01-14 15:15 -sidebar: true -comments: false -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](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](/demo/favicon-192x192.png). - -To use Discord notifications, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: discord - token: A1aB2b.C3cD4d-E5eF6f -``` - -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 Setting up the bot %} - -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). - -

    - -

    - -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. - -#### {% linkable_title Example service payload %} - -```json -{ - "message": "A message from Home Assistant", - "target": [ - "1234567890", - "0987654321" - ] -} -``` - -### {% linkable_title Notes %} - -For more information about creating and authorizing bots, visit the [OAuth2 information page](https://discordapp.com/developers/docs/topics/oauth2) - -To use notifications effectively, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.ecobee.markdown b/source/_components/notify.ecobee.markdown deleted file mode 100644 index 53f97f69d1..0000000000 --- a/source/_components/notify.ecobee.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Ecobee Notify" -description: "Instructions on how to setup the Ecobee notification component within Home Assistant." -date: 2016-05-12 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ecobee.png -ha_category: Notifications -ha_release: "0.20" ---- - -To get your Ecobee notifications working with Home Assistant, you must first have the main [Ecobee component](/components/ecobee/) loaded and running. Once you have that configured, you can setup this component to send messages to your Ecobee device. - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: ecobee -``` - -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`. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_components/notify.facebook.markdown b/source/_components/notify.facebook.markdown deleted file mode 100644 index 5b4e497947..0000000000 --- a/source/_components/notify.facebook.markdown +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: page -title: "Facebook Messenger" -description: "Instructions on how to add Facebook user notifications to Home Assistant." -date: 2016-12-31 14:14 -sidebar: true -comments: false -sharing: true -footer: true -logo: facebook.png -ha_category: Notifications -ha_release: 0.36 ---- - -The `facebook` notification platform enables sending notifications via Facebook Messenger, powered by [Facebook](https://facebook.com). - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: facebook - page_access_token: FACEBOOK_PAGE_ACCESS_TOKEN -``` - -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. -- **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 information](https://developers.facebook.com/docs/messenger-platform/send-api-reference#phone_number) about the phone number. - -```yaml -# Example automation notification entry -automation: - - alias: Evening Greeting - trigger: - platform: sun - event: sunset - action: - service: notify.facebook - data: - message: 'Good Evening' - target: - - '+919413017584' - - '+919784516314' -``` - -You can also send messages to users that do not have stored their phone number on 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 specific 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 - Mes Options"). Activating this option will automatically generate a token which is required in your configuration. - -

    - -

    - -This API only send classic SMS and only on the cell phone of the account owner. So you only have to provide a text message in your payload. - -

    -If you disable and re-enable the SMS API option, please be sure to update your token in your configuration. -

    - -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: free_mobile - username: YOUR_ACCOUNT_ID - access_token: TOKEN -``` - -Configuration variables: - -- **username** (*Required*): This is the id given by FreeMobile to access to your online account. -- **access_token** (*Required*): You can get this token by activating the SMS API in your online account. diff --git a/source/_components/notify.gntp.markdown b/source/_components/notify.gntp.markdown deleted file mode 100644 index da4f718eb2..0000000000 --- a/source/_components/notify.gntp.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "GNTP (Growl)" -description: "Instructions for adding GNTP/Growl notifications to Home Assistant." -date: 2016-03-25 18:18 -sidebar: true -comments: false -sharing: true -footer: true -logo: gntp.png -ha_category: Notifications -ha_release: 0.16 ---- - - -[GNTP](http://www.growlforwindows.com/gfw/help/gntp.aspx) is a specification for sending and receiving notifications between computers. The most well known server implementations are [Growl](http://growl.info) for Mac and [Growl for Windows](http://www.growlforwindows.com/gfw/). - -To use GNTP notifications, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFER_NAME - platform: gntp -``` - -GNTP will attempt to connect to a local server running on port 23053 if no `hostname` is provided. - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **app_name** (*Optional*): The application name that will be displayed on every notification and will be registered with the server. -- **app_icon** (*Optional*): The icon that will be displayed on every notification. You can provide an HTTP URL or a `file://` URL. File URLs only work if Home Assistant and the GNTP server are running on the same machine. If no `app_icon` is set a local copy of the Home Assistant logo will be used. If you choose to use an HTTP URL please make the maximum image size 150 px by 150 px as Growl for Mac will sometimes timeout when registering. -- **hostname** (*Optional*): The hostname or IP address of the GNTP server to contact. -- **password** (*Optional*): The password to authenticate to the GNTP server with. -- **port** (*Optional*): The port that the GNTP server runs on. The specification states that servers should not allow users to use any port other than 23053 but `port` is provided here just in case. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.group.markdown b/source/_components/notify.group.markdown deleted file mode 100644 index 928de178e7..0000000000 --- a/source/_components/notify.group.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Notify Group" -description: "Instructions on how to setup the notify group platform." -date: 2016-08-18 00:12 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Notifications -ha_release: 0.26 ---- - -The `group` notification platform allows you to combine multiple `notify` platforms into a single service. - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: group - services: - - service: html5 - data: - target: "macbook" - - service: html5_nexus -``` - -Configuration variables: - -- **name** (*Required*): Setting the parameter `name` sets the name of the group. -- **services** (*Required*): A list of all the services to be included in the group. - - **service** (*Required*): The service part of an entity ID, i.e. if you use `notify.html5` normally, just put `html5`. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification services! - - **data** (*Optional*): A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target`, `title`. diff --git a/source/_components/notify.hipchat.markdown b/source/_components/notify.hipchat.markdown deleted file mode 100644 index 877bcd8cd8..0000000000 --- a/source/_components/notify.hipchat.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "HipChat" -description: "Instructions on how to add HipChat notifications to Home Assistant." -date: 2017-08-10 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hipchat.png -ha_category: Notifications -ha_release: "0.52" ---- - - -The `hipchat` platform allows you to send notifications from Home Assistant to [HipChat](https://hipchat.com/). - -You need to obtain a [HipChat API token](https://developer.atlassian.com/hipchat/guide/hipchat-rest-api/api-access-tokens#APIaccesstokens-Usergeneratedtokens) to be able to send notifications. - -To enable the HipChat notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: hipchat - token: ABCDEFGHJKLMNOPQRSTUVXYZ - room: 1234567 -``` - -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*): The HipChat API token to use for sending HipChat notifications. -- **room** (*Required*): The default room to post to if no room is explicitly specified when sending the notification. -- **color** (*Optional*): Setting color will override the default color for the notification. By default not setting this will post to HipChat using the default color yellow. Valid options are 'yellow', 'green', 'red', 'purple', 'gray', 'random'. -- **notify** (*Optional*): Setting notify will override the default notify (blink application icon, chime, or otherwise call attention) setting for the notification. By default this is 'false'. Valid options are 'true' and 'false'. -- **format** (*Optional*): Setting format will override the default message format. Default is 'text'. Valid options are 'text' and 'html'. -- **host** (*Optional*): Setting the host will override the default HipChat server host. Default is 'https://api.hipchat.com/'. - -### {% linkable_title HipChat service data %} - -The following attributes can be placed `data` for extended functionality. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `room` | yes | (int) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `color` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `notify` | yes | (bool) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `format` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown deleted file mode 100644 index 36dd74067e..0000000000 --- a/source/_components/notify.html5.markdown +++ /dev/null @@ -1,279 +0,0 @@ ---- -layout: page -title: "Push Notifications" -description: "Instructions on how to use the HTML5 push notifications platform from Home Assistant." -date: 2016-08-17 21:58 -sidebar: true -comments: false -sharing: true -footer: true -logo: html5.png -ha_category: Notifications -ha_release: 0.27 ---- - -The `html5` notification platform enables you to receive push notifications to Chrome or Firefox, no matter where you are in the world. `html5` also supports Chrome and Firefox on Android, which enables native-app-like integrations without actually needing a native app. - -

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

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

    - -

    - -...then your entry for the `configuration.yaml` file needs to be like this sample. - -```yaml -notify: - platform: instapush - [...] - event: msg - tracker: state -``` - -It's easy to test your Instapush setup outside of Home Assistant. Assuming you have an event *notification* and a tracker *home-assistant*, just fire a request and check the Instapush dashboard for a new entry. - -```bash -curl -X POST \ - -H "x-instapush-appid: YOUR_APP_KEY" \ - -H "x-instapush-appsecret: YOUR_APP_SECRET" \ - -H "Content-Type: application/json" \ - -d '{"event":"notification","trackers":{"home-assistant":"Switch 1"}}' \ - https://api.instapush.im/v1/post -``` - -For further details, please check the [API](https://instapush.im/developer/rest). - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.joaoapps_join.markdown b/source/_components/notify.joaoapps_join.markdown deleted file mode 100644 index 2143480d0e..0000000000 --- a/source/_components/notify.joaoapps_join.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Join Notify" -description: "Instructions on how to setup the Join notification platform within Home Assistant." -date: 2016-07-12 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: joaoapps_join.png -ha_category: Notifications -ha_release: "0.24" ---- - -See the [Joaoapps Join component page](/components/joaoapps_join/) for information how to get the join notify platform running. - diff --git a/source/_components/notify.knx.markdown b/source/_components/notify.knx.markdown deleted file mode 100644 index 78945fc376..0000000000 --- a/source/_components/notify.knx.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "KNX Notify" -description: "Instructions on how to use the KNX notify with Home Assistant." -date: 2016-09-03 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: knx.png -ha_category: Notifications -ha_release: 0.53 -ha_iot_class: "Local Push" ---- - -The `knx` notify platform allows you to send notifications to [KNX](http://www.knx.org) devices. - -The `knx` component must be configured correctly, see [KNX Component](/components/knx). - -To use your KNX switch in your installation, add the following lines to your `configuration.yaml` file: - -```yaml -notify: - - platform: knx - name: Alarm - address: '5/1/10' -``` - -* **name** (*Optional*): A name for this device used within Home Assistant. -* **address**: KNX group address of the notification diff --git a/source/_components/notify.kodi.markdown b/source/_components/notify.kodi.markdown deleted file mode 100644 index 7d350005a8..0000000000 --- a/source/_components/notify.kodi.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: page -title: "Kodi" -description: "Instructions on how to add Kodi notifications to Home Assistant." -date: 2016-09-12 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: kodi.png -ha_category: Notifications -ha_release: 0.29 ---- - - -The `Kodi` platform allows you to send messages to your [Kodi](https://kodi.tv/) multimedia system from Home Assistant. - -To add Kodi to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: kodi - name: NOTIFIER_NAME - host: 192.168.0.123 -``` - -- **name** (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **host** (*Required*): The host name or address of the device that is running Kodi. -- **port** (*Optional*): The HTTP port number. Defaults to 8080. -- **proxy_ssl** (*Optional*): Connect to kodi with HTTPS. 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. - -### {% linkable_title script.yaml example %} - -```yaml -kodi_notification: - sequence: - - service: notify.NOTIFIER_NAME - data: - title: "Home Assistant" - message: "Message to KODI from Home Assistant!" - data: - displaytime: 20000 - icon: "warning" -``` - -#### {% linkable_title Message variables %} - -- **title** (*Optional*): Title that is displayed on the message. -- **message** (*Required*): Message to be displayed. -- **data** (*Optional*) - - **icon** (*Optional*): Kodi comes with 3 default icons: `info`, `warning` and `error`, an URL to an image is also valid. *Defaults to `info`* - - **displaytime** (*Optional*): Length in milliseconds the message stays on screen. *Defaults to `10000` ms* - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - -## {% linkable_title Services %} - -### {% linkable_title Media control services %} -Available services: `kodi_add_to_playlist`, `kodi_set_shuffle` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------ | -| `entity_id` | yes | Target a specific media player. Defaults to all. | - -#### {% linkable_title Service `media_player/kodi_set_shuffle` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|----------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. It must be of type kodi. | -| `shuffle_on ` | no | True/false for shuffle on/off | - -#### {% linkable_title Service `media_player/kodi_add_to_playlist` %} - -Add a song or an entire album to the default playlist (i.e. playlist id 0). - -| Service data attribute | Optional | Description | -|------------------------|----------|----------------------------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. It must be of type kodi. | -| `media_type ` | no | either SONG or ALBUM | -| media_id | yes | id of the media as defined in kodi | -| media_name | yes | name of the media, HA will search for the media with name closer to this. If ALL add all albums, if artist_name is provided adds all albums of that artist. | -| artist_name | yes | name of the artist, HA will search for the artist with name closer to this.| - diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown deleted file mode 100644 index cf50cffaa2..0000000000 --- a/source/_components/notify.lametric.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: page -title: "LaMetric Notify" -description: "Instructions on how to setup the LaMetric notify platform with Home Assistant." -date: 2017-04-02 13:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: lametric.png -ha_category: Notifications -ha_release: 0.49 ---- - -The `lametric` notification platform allows to send notification to a LaMetric device. It needs the LaMetric platform to be configured first. - -To enable LaMetric notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - name: NOTIFIER_NAME - platform: lametric -``` - -{% configuration %} -name: - description: "The optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`." - required: false - type: string - default: notify -lifetime: - description: Defines how long the message remains in LaMetric notification queue (in seconds). - required: false - type: int - default: 10 -icon: - description: An icon or animation. - required: false - type: string -cycles: - description: Defines how often the notification is displayed. - required: false - type: int - default: 1 -{% endconfiguration %} - -Check out the list of all icons at [https://developer.lametric.com/icons](https://developer.lametric.com/icons). Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number! - -## {% linkable_title Examples %} - -### {% linkable_title Full configuration example %} - -```yaml -# Example configuration.yaml entry -notify: - name: NOTIFIER_NAME - platform: lametric - lifetime: 20 - icon: a7956 - cycles: 3 -``` - -### {% linkable_title Changing sounds and icons %} - -To add a notification sound or an icon override, it has to be done via service data. - -```yaml -- alias: "Send notification on arrival at school" - trigger: - platform: state - entity_id: device_tracker.son_mobile - from: 'not_home' - to: 'school' - action: - service: notify.lametric - data: - message: "Son has arrived at school!" - data: - sound: 'notification' - icon: 'i51' - ``` diff --git a/source/_components/notify.lannouncer.markdown b/source/_components/notify.lannouncer.markdown deleted file mode 100644 index 5aba4e41f9..0000000000 --- a/source/_components/notify.lannouncer.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: page -title: "Lannouncer" -description: "Instructions on how to add Lannouncer notifications to Home Assistant." -date: 2017-01-06 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lannouncer.png -ha_category: Notifications -ha_release: 0.36 ---- - - -The `lannouncer` notification platform allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](http://www.keybounce.com/lannouncer/). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. - -To enable Lannouncer notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: lannouncer - host: HOSTNAME_OR_IP -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **host** (*Required*): The hostname or IP-address of the Android device that is running Lannouncer. -- **port** (*Optional*): The port on which Lannouncer is running. By default this is `1035`. - -### {% linkable_title Installation %} - -You need to install the Lannouncer app and enable the *Network (TCP) Listener* and *Auto-Start Network Listener*. You can disable the *GCM (Google Cloud) and WAN Messaging* and *SMS Listener* since this component doesn't use them. - -Lannouncer uses the default Android TTS voice. You can tweak that in the Android configuration, or you can install a different TTS engine from the Play Store. You might want to raise the volume in the app settings since that depends on the actual hardware device. - -More information can be found [here](http://www.keybounce.com/lannouncer/configuring-lannouncer/). - -### {% linkable_title Sending messages %} - -Lannouncer supports two types of messages. - -Spoken messages is the default method (`speak`). You just invoke the `notify` service with the following json and the device will speak out the specified message. - -```json -{ - "message": "I'm sorry, I cannot do that Dave." -} -``` - -The second method is to play notifications (`alarm`). There are 4 build-in sounds (`chime`, `doorbell`, `alarm` and `siren`). - -```json -{ - "message": "chime", - "data": { - "method": "alarm" - } -} -``` - -You can also request to play a configured additional soundfiles (`FILE1`, `FILE2`, `FILE3`, `FILE4` or `FILE5`). You can configure this file in the app settings. - -```json -{ - "message": "FILE1", - "data": { - "method": "alarm" - } -} -``` - -

    - The free version only supports one additional soundfile. -

    - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.llamalab_automate.markdown b/source/_components/notify.llamalab_automate.markdown deleted file mode 100644 index 40becc0eb5..0000000000 --- a/source/_components/notify.llamalab_automate.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "LlamaLab Automate" -description: "Instructions on how to add user notifications to Home Assistant." -date: 2016-08-21 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: llamalab_automate.png -ha_category: Notifications -ha_release: 0.27 ---- - - -The `llamalab_automate` platform uses Googles Cloud Messaging Services to push messages from Home Assistant to your Android device running the LlamaLab [Automate](https://llamalab.com/automate/) app. This can serve as an alternative to Tasker + AutoRemote. - -Go to [https://llamalab.com/automate/cloud/](https://llamalab.com/automate/cloud/) and create a new API key/secret. - -To add Automate to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: llamalab_automate - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - to: example@gmail.com -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): Enter the API key for Automate. -- **to** (*Required*): E-Mail address the Automate-Fiber is configured for. -- **device** (*Optional*): Name of the target device to receive the messages. - -Receiving cloud messages in Automate: - -1. Add a new flow -2. Insert block "Messaging -> Cloud message receive" -3. Insert block "Interface -> Toast show" -4. Connect OK from Flow beginning to IN of Cloud receive -5. Connect OK from Cloud receive to Toast show -6. Connect OK form Toast show to IN of Cloud receive -7. Tap Cloud receive and select the E-Mail account as setup in your configuration -8. Assign a variable name for the Payload -9. Tap Toast show and set the message value to the variable you've specified - -If you have multiple devices paired to one Google Mail account and want to control each instance of Automate individually, you can set the notifier to target a specific device. To determine your devices name, add a Cloud Message send block to your flow, tap it and scroll all the way to the bottom. Device names are case sensitive. diff --git a/source/_components/notify.mailgun.markdown b/source/_components/notify.mailgun.markdown deleted file mode 100644 index 9e98d18052..0000000000 --- a/source/_components/notify.mailgun.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "Mailgun Notify" -description: "Instructions on 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 Mailgun notification service allows you to send emails via Mailgun's REST API. It requires the [Mailgun component] to be set up. - -[Mailgun component]: /components/mailgun/ - -## {% linkable_title Sample configuration %} - -```yaml -# Example configuration.yaml entry -mailgun: - domain: mg.example.com - api_key: token-XXXXXXXXX - sandbox: False - -notify: - - name: mailgun - platform: mailgun - recipient: me@example.com -``` - -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`. -- **token** (*Required*): This is the API token that has been generated in your Mailgun account. -- **recipient** (*Required*): The email address of the recipient. -- **sender** (*Optional*): The sender's email address. Defaults to `hass@DOMAIN`, where `DOMAIN` is outgoint mail domain, as defined by the `domain` and `sanbox` configuration entries. - -## {% linkable_title Example automation %} - -The following automation reacts to an event by sending out an email with two attachments. - -```yaml -# Example automation using Mailgun notifications -automation: - trigger: - platform: event - event_type: SPECIAL_EVENT - action: - service: notify.mailgun - data: - title: "Something special has happened" - message: "This a test message from Home Assistant" - data: - images: - - /home/pi/pic_test1.png - - /home/pi/pic_test2.png -``` diff --git a/source/_components/notify.markdown b/source/_components/notify.markdown deleted file mode 100644 index 5ffe63ba86..0000000000 --- a/source/_components/notify.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: page -title: "Notifications" -description: "Instructions on how to add user notifications to Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The `notify` component makes it possible to send notifications to a wide variety of platforms. Please check the sidebar for a full list of platforms that are supported. - -## {% linkable_title Configuration %} - -```yaml -# Example configuration.yaml entry -notify: - - platform: pushbullet - name: paulus - api_key: ABCDEFG -``` - -The **name** parameter is optional but needed if you want to use multiple platforms. The platform will be exposed as service `notify/`. The name will default to `notify` if not supplied. - -### {% linkable_title Service %} - -Once loaded, the `notify` platform will expose a service that can be called to send notifications. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `message` | no | Body of the notification. -| `title` | yes | Title of the notification. Default is `Home Assistant`. -| `target` | yes | Some platforms will allow specifying a recipient that will receive the notification. See your platform page if it is supported. -| `data` | yes | On platforms who have extended functionality. See your platform page if it is supported. - -The notification component supports specifying [templates](/topics/templating/) with `data_template`. This will allow you to use the current state of Home Assistant in your notifications. - -In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this with a customized subject. - -```yaml -action: - service: notify.notify - data: - message: "Your message goes here" - title: "Custom subject" -``` - -### {% linkable_title Test if it works %} - -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 -{ - "message": "The sun is {% raw %}{% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}{% endraw %}!" -} -``` -For services which have support for sending images. - -```json -{ "message": "Test plugin", - "data": { - "photo": { - "url": "http://www.gbsun.de/gbpics/berge/berge106.jpg" - } - } -} -``` - -If the service support sending the location, the data from this sample can be used. - -```json -{ "message": "Test plugin", - "data": { - "location": { - "latitude": 7.3284, - "longitude": 46.38234 - } - } -} -``` - diff --git a/source/_components/notify.mastodon.markdown b/source/_components/notify.mastodon.markdown deleted file mode 100644 index 2e8327f4c2..0000000000 --- a/source/_components/notify.mastodon.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Mastodon" -description: "Instructions on how to add Instapush notifications to Home Assistant." -date: 2018-03-25 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mastodon.png -ha_category: Notifications -ha_release: 0.67 ---- - - -The `mastodon` platform uses [MAstodon](https://joinmastodon.org/) to delivery notifications from Home Assistant. - -Go to **Preferences** in the Mastodon web interface, then to **Development** and create a new application. - -To add Mastodon to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: mastodon - access_token: !secret mastodon_access_token - client_id: !secret mastodon_client_id - client_secret: !secret mastodon_client_secret -``` - -{% configuration %} -access_token: - description: Your Mastodon access token. - required: true - type: string -client_id: - description: Your Mastodon client ID - required: true - type: string -client_secret: - description: Your Mastodon client secret. - required: true - type: string -base_url: - description: URL of the Mastodon instance to use. - required: false - type: string - default: https://mastodon.social -{% endconfiguration %} - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.matrix.markdown b/source/_components/notify.matrix.markdown deleted file mode 100644 index 29890d46c8..0000000000 --- a/source/_components/notify.matrix.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Matrix" -description: "Instructions on how to add Matrix notifications to Home Assistant." -date: 2016-10-11 23:51 -sidebar: true -comments: false -sharing: true -footer: true -logo: matrix.png -ha_category: Notifications -ha_release: 0.32 ---- - - -The `matrix` platform allows you to deliver notifications from Home Assistant to a [Matrix](http://matrix.org) room. Rooms can be both direct as well as group chats. - -## {% linkable_title Configuration %} - -To enable Matrix notifications in your installation, you first need to configure -the [Matrix component](/components/matrix/). Then, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: matrix - default_room: ROOM_ID_OR_ALIAS -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **default_room** (*Required*): The room all messages will be sent to, when no other target is given. - -The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form `"!:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.message_bird.markdown b/source/_components/notify.message_bird.markdown deleted file mode 100644 index 2234a86310..0000000000 --- a/source/_components/notify.message_bird.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "MessageBird" -description: "Instructions on how to add user notifications to Home Assistant." -date: 2016-03-15 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: message_bird.png -ha_category: Notifications -ha_release: 0.16 ---- - -The `MessageBird` notification platform sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. - -To enable MessageBird notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: message_bird - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **api_key** (*Required*): Enter the API key for MessageBird. Go to https://www.messagebird.com/ to retrieve your API key. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **sender** (*Optional*): Setting the optional parameter `sender`. This will be the sender of the SMS. It may be either a telephone number (e.g., `+4915112345678`) or a text with a maximum length of 11 characters. Defaults to `HA`. - -### {% linkable_title Usage %} - -MessageBird is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to the specified mobile phone number(s). - -#### {% linkable_title Example service payload %} - -```json -{ - "message": "A message for many people", - "target": [ "+49123456789", "+43123456789" ] -} -``` diff --git a/source/_components/notify.mqtt.markdown b/source/_components/notify.mqtt.markdown deleted file mode 100644 index 3f2cb633a9..0000000000 --- a/source/_components/notify.mqtt.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "MQTT Notifications" -description: "Instructions on how to add MQTT notifications to Home Assistant." -date: 2016-02-01 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -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 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**. - -```json -{"payload": "Test message from HA", "topic": "home/notification", "qos": 0, "retain": 0} -``` - -

    - -

    - -Using the [REST API](/developers/rest_api/#post-apiservicesltdomainltservice) to send a message to a given topic. - -```bash -$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - -d '{"payload": "Test message from HA", "topic": "home/notification"}' \ - http://IP_ADDRESS:8123/api/services/mqtt/publish -``` - diff --git a/source/_components/notify.mycroft.markdown b/source/_components/notify.mycroft.markdown deleted file mode 100644 index 8191788499..0000000000 --- a/source/_components/notify.mycroft.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Mycroft AI" -description: "Instructions on 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.mysensors.markdown b/source/_components/notify.mysensors.markdown deleted file mode 100644 index 3dab5bc10d..0000000000 --- a/source/_components/notify.mysensors.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: page -title: "MySensors Notify" -description: "Instructions on how to integrate MySensors notifications into Home Assistant." -date: 2017-01-07 15:00 +0100 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Notifications -ha_release: 0.36 -ha_iot_class: "Local Push" ---- - -Integrates MySensors notifications into Home Assistant. See the [main component] for configuration instructions. - -Setting the `target` key in the service call will target the name of the MySensors device in Home Assistant. MySensors device names follow the notation: "[Sketch name] [Node id] [Child id]". - -### {% linkable_title Automation example %} - -```yaml -... -action: - service: notify.mysensors - data: - message: Welcome home! - target: 'TextSensor 254 1' -``` - -The following sensor types are supported: - -##### MySensors version 2.0 and higher - -S_TYPE | V_TYPE -----------------|-------------------------- -S_INFO | V_TEXT - -For more information, visit the [api] page of MySensors. - -### {% linkable_title Example sketch %} - -```cpp -/* - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - */ - - #define MY_DEBUG - #define MY_RADIO_NRF24 - #define MY_REPEATER_FEATURE - - #include - #include - - #define SN "TextSensor" - #define SV "1.0" - #define CHILD_ID 1 - - MyMessage textMsg(CHILD_ID, V_TEXT); - bool initialValueSent = false; - - void setup(void) { - } - - void presentation() { - sendSketchInfo(SN, SV); - present(CHILD_ID, S_INFO, "TextSensor1"); - } - - void loop() { - if (!initialValueSent) { - Serial.println("Sending initial value"); - // Send initial values. - send(textMsg.set("-")); - Serial.println("Requesting initial value from controller"); - request(CHILD_ID, V_TEXT); - wait(2000, C_SET, V_TEXT); - } - } - - void receive(const MyMessage &message) { - if (message.type == V_TEXT) { - if (!initialValueSent) { - Serial.println("Receiving initial value from controller"); - initialValueSent = true; - } - // Dummy print - Serial.print("Message: "); - Serial.print(message.sensor); - Serial.print(", Message: "); - Serial.println(message.getString()); - // Send message to controller - send(textMsg.set(message.getString())); - } - } -``` - -[main component]: /components/mysensors/ -[api]: http://www.mysensors.org/download/ diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown deleted file mode 100644 index e1bf8659ba..0000000000 --- a/source/_components/notify.nfandroidtv.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Notifications for Android TV / FireTV" -description: "Notifications for Android TV / FireTV" -date: 2016-10-21 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nfandroidtv.png -ha_category: Notifications -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - - -Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). - -The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running. - -When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your target device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. - -To enable the notification platform, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: nfandroidtv - name: Kitchen - host: 192.168.1.12 -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **host** (*Required*): IP address of the Android TV / FireTV device. -- **duration** (*Optional*): The duration in seconds for which the notification will be displayed. Default is 5 seconds. -- **position** (*Optional*): Has to be one of: bottom-right (default), bottom-left, top-right, top-left, center -- **color** (*Optional*): Has to be one of: grey (default), black, indigo, green, red, cyan, teal, amber, pink -- **transparency** (*Optional*): Has to be one of: 0%, 25% (default), 50%, 75%, 100% -- **interrupt** (*Optional*): If set to true, 1, on etc., the notification is interactive and can be dismissed or selected to display more details. Depending on the running app (e.g., Netflix), this may stop playback. - -The configuration will be used to configure the default values for the notification for the host specified by the IP. However, you can override most of the settings by passing them with the data-attribute when calling the service. -This is a fully customized JSON you can use to test how the final notification will look like: - -```json -{ -"message": "Messagetext", -"title": "My Notification", -"data":{ - "position":"center", - "duration":2, - "transparency":"0%", - "color": "red", - "interrupt": 1 - } -} -``` diff --git a/source/_components/notify.nma.markdown b/source/_components/notify.nma.markdown deleted file mode 100644 index c6165bb898..0000000000 --- a/source/_components/notify.nma.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Notify My Android" -description: "Instructions on how to add NMA notifications to Home Assistant." -date: 2015-05-01 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nma.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `nma` platform uses [Notify My Android (NMA)](http://www.notifymyandroid.com/) to delivery notifications from Home Assistant to your Android device. - -Go to the [NMA website](https://www.notifymyandroid.com) and create a new API key. If you are using the trial offer then keep in mind that your limit is five messages per day. - -To add NMA to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: nma - 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 API key for NMA. - -Details for the [API](https://www.notifymyandroid.com/api.jsp). - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.prowl.markdown b/source/_components/notify.prowl.markdown deleted file mode 100644 index 4fbe377bb6..0000000000 --- a/source/_components/notify.prowl.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Prowl" -description: "Instructions on 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 deleted file mode 100644 index cadfd99cf9..0000000000 --- a/source/_components/notify.pushbullet.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: page -title: "Pushbullet" -description: "Instructions on how to add user notifications to Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: pushbullet.png -ha_category: Notifications -featured: true ---- - -The `pushbullet` notification platform sends messages to [Pushbullet](https://www.pushbullet.com/), a free service to send information between your phones, browsers, and friends. - -To enable Pushbullet notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: pushbullet - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **api_key** (*Required*): Enter the API key for Pushbullet. Go to [https://www.pushbullet.com/#settings/account](https://www.pushbullet.com/#settings/account) to retrieve your API key/access token. -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - -### {% linkable_title Usage %} - -Pushbullet is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to all devices registered in the Pushbullet account. An optional **target** parameter can be given to Pushbullet to specify specific account's devices, contacts or channels. - -Type | Prefix | Suffix | Example ----- | ------ | ------ | ------- -Device | `device/` | Device nickname | `device/iphone` -Channel | `channel/` | Channel tag | `channel/my_home` -Email | `email/` | Contact's email address | `email/email@example.com` - -If using targets, your own account's email address functions as 'send to all devices'. All targets are verified (if exists) before sending, except email. - -#### {% linkable_title Example service payload %} - -```json -{ - "message": "A message for many people", - "target": [ - "device/telephone", - "email/hello@example.com", - "channel/my_home" - ] -} -``` - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - -### {% linkable_title URL support %} - -```yaml -action: - service: notify.NOTIFIER_NAME - data: - title: Send URL - message: This is an url - data: - url: google.com -``` - -- **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.pushetta.markdown b/source/_components/notify.pushetta.markdown deleted file mode 100644 index bf31900c34..0000000000 --- a/source/_components/notify.pushetta.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "Pushetta" -description: "Instructions on how to add Pushetta notifications to Home Assistant." -date: 2015-11-10 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pushetta.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `pushetta` notify platform uses [Pushetta](http://www.pushetta.com) to delivery notifications from Home Assistant to your devices. - -To retrieve the API token, log into your account at [http://www.pushetta.com](http://www.pushetta.com) and go to your **Dashboard**. Create a new channel by clicking on **Channels** and then **Add a Channel**. - -To enable Pushetta notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: pushetta - api_key: YOUR_API_KEY - channel_name: YOUR_CHANNEL_NAME -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): Your API key for Pushetta. -- **channel_name** (*Required*): The name of your channel. -- **send_test_msg** (*Optional*): Disable/enable the test message send on Home Assistant's startup to test the API key and the existence of the channel. Default to `False`. - -It's easy to test your Pushetta setup outside of Home Assistant. Assuming you have a channel *home-assistant*, just fire a request and check the channel page in the dashboard for a new message. - -```bash -curl -X POST \ - -H "Authorization: Token YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d "{ \"body\" : \"Hello World\", \"message_type\" : \"text/plain\" }" \ - http://api.pushetta.com/api/pushes/home-assistant/ -``` - -For further details, please check the [API](http://pushetta.com/pushetta-api/). - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.pushover.markdown b/source/_components/notify.pushover.markdown deleted file mode 100644 index 7e7680db7e..0000000000 --- a/source/_components/notify.pushover.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "Pushover" -description: "Instructions on how to add Pushover notifications to Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: pushover.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The [Pushover service](https://pushover.net/) is a platform for the notify component. This allows components to send messages to the user using Pushover. - -## {% linkable_title Configuration %} - -In order to get an API key you need to [register an application](https://pushover.net/apps/clone/home_assistant) on the Pushover website. Your Pushover user key can be found on the [Pushover dashboard](https://pushover.net/dashboard). - -To use Pushover notifications, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: pushover - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - user_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*): Your API key. -- **user_key** (*Required*): Your user key for Pushover. - -Example Automation: - -```yaml -- service: notify.entity_id - data: - message: "This is the message" - title: "Title of message" - data: - url: "https://www.home-assistant.io/" - sound: pianobar - priority: 0 -``` - -Component specific values in the nested `data` section are optional. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - -When sending a notification, optional parameters can also be set as per the pushover [API documentation](https://pushover.net/api). - -Example notification triggered from the Alexa component for an intents is shown below which also uses [Automation Templating](/getting-started/automation-templating/) for the message: - -{% raw %} -```yaml -# Example configuration.yaml entries -alexa: - intents: - LocateIntent: - action: - service: notify.notify - data_template: - message: "The location of {{ User }} has been queried via Alexa." - data: - title: "Home Assistant" - data: - sound: falling - device: pixel - url: "https://www.home-assistant.io/" -``` -{% endraw %} diff --git a/source/_components/notify.pushsafer.markdown b/source/_components/notify.pushsafer.markdown deleted file mode 100644 index 5b1ce8ed54..0000000000 --- a/source/_components/notify.pushsafer.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: page -title: "Pushsafer" -description: "Instructions on how to add Pushsafer notifications to Home Assistant." -date: 2018-01-05 11:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: pushsafer.png -ha_category: Notifications -ha_release: 0.39 ---- - - -The [Pushsafer service](https://www.pushsafer.com/) is a platform for the notify component. This allows you to send messages to the user using Pushsafer. - -In order to get a private or alias key you need to go to the [Pushsafer website](https://www.pushsafer.com) and register. - -To use Pushsafer notifications, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: pushsafer - private_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`. -- **private_key** (*Required*): Your private or alias key. Private key = send the notification to all devices with standard params, alias key send the notification to the devices stored in the alias with predefined params. - -### {% linkable_title Examples %} - -Message to two devices with formatted text. - -```json -{ - "title": "Test to 2 devices", - "message": "Attention [b]bold[/b] text[br][url=https://www.pushsafer.com]Link to Pushsafer[/url]", - "target": ["1111", "2222"], - "data": { - "icon": "2", - "iconcolor": "#FF0000", - "sound": "2", - "vibration": "1", - "url": "https://www.home-assistant.io/", - "urltitle": "Open Home Assistant", - "time2live": "0" - } -} -``` - -Message to one device with formatted text and image from an external URL. - -```json -{ - "title": "Test to 1 device with image from an url", - "message": "Attention [i]italic[/i] Text[br][url=https://www.home-assistant.io/]Testlink[/url]", - "target": ["1111"], - "data": { - "icon": "14", - "iconcolor": "#FFFF00", - "sound": "22", - "vibration": "3", - "url": "https://www.home-assistant.io/", - "urltitle": "Open Home Assistant", - "time2live": "60", - "picture1": { - "url":"https://www.home-assistant.io/images/components/alexa/alexa-512x512.png" - } - } -} -``` - -Message to two devices and one device group with formatted text and local image. - -```json -{ - "title": "Test to 3 devices with local image", - "message": "Attention [i]italic[/i] Text[br][url=https://www.home-assistant.io/]Testlink[/url]", - "target": ["1111","2222","gs3333"], - "data": { - "icon": "20", - "iconcolor": "#FF00FF", - "sound": "33", - "vibration": "0", - "url": "https://www.home-assistant.io/", - "urltitle": "Open Home Assistant", - "time2live": "10", - "picture1": { - "path":"C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg" - } - } -} -``` - -To customize your push-notification you can take a look at the [Pushsafer API description](https://www.pushsafer.com/en/pushapi). - -When setting up the application you can use this [icon](/images/favicon-192x192.png). - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.rest.markdown b/source/_components/notify.rest.markdown deleted file mode 100644 index 4d1d83c581..0000000000 --- a/source/_components/notify.rest.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "REST" -description: "Instructions on how to add RESTful notifications to Home Assistant." -date: 2016-02-12 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: restful.png -ha_category: Notifications -ha_release: 0.13 ---- - - -The `rest` notification platform allows you to deliver [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) notifications from Home Assistant to another party. - -To enable the REST notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: rest - resource: http://IP_ADDRESS/ENDPOINT -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **resource** (*Required*): The resource or endpoint that will receive the value. -- **method** (*Optional*): The method of the request. Default is GET. -- **headers** (*Optional*): The headers for the request. -- **message_param_name** (*Optional*): Parameter name for the message. Defaults to `message`. -- **title_param_name** (*Optional*): Parameter name for the title. Defaults to none. -- **target_param_name** (*Optional*): Parameter name for the target. Defaults to none. -- **data** (*Optional*): Dictionary of extra parameters to send to the resource. -- **data_template** (*Optional*): Template dictionary of extra parameters to send to the resource. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_components/notify.rocketchat.markdown b/source/_components/notify.rocketchat.markdown deleted file mode 100644 index 19d9c876d9..0000000000 --- a/source/_components/notify.rocketchat.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -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` notify platform allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. - -## {% linkable_title Configuration %} - -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: YOUR_USERNAME - password: YOUR_PASSWORD - room: YOUR_ROOM_NAME -``` - -- **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.sendgrid.markdown b/source/_components/notify.sendgrid.markdown deleted file mode 100644 index 2491bac32e..0000000000 --- a/source/_components/notify.sendgrid.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "SendGrid" -description: "Instructions on how to add email notifications via SendGrid to Home Assistant." -date: 2016-02-27 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sendgrid.png -ha_category: Notifications ---- - -The `sendgrid` notification platform sends email notifications via [SendGrid](https://sendgrid.com/), a proven cloud-based email platform. - -To enable notification emails via SendGrid in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: sendgrid - api_key: API_KEY - sender: SENDER_EMAIL_ADDRESS - recipient: YOUR_RECIPIENT -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): SendGrid API key - https://app.sendgrid.com/settings/api_keys -- **sender** (*Required*): E-mail address of the sender. -- **recipient** (*Required*): Recipient of the notification. - -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 deleted file mode 100644 index 2556c82037..0000000000 --- a/source/_components/notify.simplepush.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Simplepush" -description: "Instructions on how to add Simplepush notifications to Home Assistant." -date: 2016-09-11 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: simplepush.png -ha_category: Notifications -ha_release: 0.29 ---- - - -The `simplepush` platform uses [Simplepush](https://simplepush.io/) to delivery notifications from Home Assistant to your Android device. Unlike similar apps the Simplepush app requires no registration. - -To add Simplepush to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: simplepush - device_key: ABCDE -``` - -{% 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. - -```bash -$ curl 'https://api.simplepush.io/send/device_key/title/message' -``` - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown deleted file mode 100644 index 3e38499010..0000000000 --- a/source/_components/notify.slack.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: page -title: "Slack" -description: "Instructions on how to add Slack notifications to Home Assistant." -date: 2015-08-06 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: slack.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). - -If you are planning to use Slack as yourself then you need to obtain a [Slack API token](https://api.slack.com/web?sudo=1) to be able to send notifications. - -It is also possible to use Slack bots as users. Just create a new bot at https://[YOUR_TEAM].slack.com/apps/build/custom-integration and use the provided token for that. You can add an icon from the frontend for Home Assistant and give the bot a meaningful name. - -Don't forget to invite the bot to the room where you want to get the notifications. - -To enable the Slack notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: slack - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - default_channel: '#general' -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **api_key** (*Required*): The Slack API token to use for sending Slack messages. -- **default_channel** (*Required*): The default channel to post to if no channel is explicitly specified when sending the notification message. A channel can be specified adding a target attribute to the json at the same level as "message" -- **username** (*Optional*): Setting username will allow Home Assistant to post to Slack using the username specified. By default not setting this will post to Slack using the user account or botname that you generated the api_key as. -- **icon** (*Optional*): Use one of the Slack emojis as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). - -### {% linkable_title Slack service data %} - -The following attributes can be placed inside `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`. -| `attachments` | yes | Array of [Slack attachments](https://api.slack.com/docs/message-attachments). See [the attachment documentation](https://api.slack.com/docs/message-attachments) for how to format. *NOTE*: if using `attachments`, they are shown **in addition** to `message` - -Example for posting file from URL: - -```json -{ - "message":"Message that will be added as a comment to the file.", - "title":"Title of the file.", - "target": ["#channelname"], - "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`. - -Example for posting formatted attachment: - -```json -{ - "message": "", - "data": { - "attachments": [ - { - "title": "WHAT A HORRIBLE NIGHT TO HAVE A CURSE.", - "image_url": "http://i.imgur.com/JEExnsI.gif" - } - ] - } -} -``` - -Please note that both `message` is a required key, but is always shown, so use an empty (`""`) string for `message` if you don't want the extra text. - -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 deleted file mode 100644 index 130f3dcf0d..0000000000 --- a/source/_components/notify.smtp.markdown +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: page -title: "SMTP" -description: "Instructions on how to add e-mail notifications to Home Assistant." -date: 2015-06-03 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: smtp.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `smtp` platform allows you to deliver notifications from Home Assistant to an e-mail recipient. - -To enable notification by e-mail in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: smtp - sender: YOUR_SENDER - recipient: YOUR_RECIPIENT -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **sender** (*Required*): E-mail address of the sender. -- **recipient** (*Required*): E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients. -- **server** (*Optional*): SMTP server which is used to end the notifications. Defaults to `localhost`. -- **port** (*Optional*): The port that the SMTP server is using. Defaults to 587. -- **timeout** (*Optional*): The timeout in seconds that the SMTP server is using. Defaults to 5. -- **username** (*Optional*): Username for the SMTP account. -- **password** (*Optional*): Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes. -- **encryption** (*Optional*): Set mode for encryption, `starttls`, `tls` or `none`. Defaults to `starttls`. -- **sender_name** (*Optional*): Sets a custom 'sender name' in the emails headers (*From*: Custom name ). -- **debug** (*Optional*): Enables Debug, eg. True or False. Defaults to False. - -A sample configuration entry for Google Mail. - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: smtp - server: smtp.gmail.com - port: 587 - timeout: 15 - sender: john@gmail.com - encryption: starttls - username: john@gmail.com - password: thePassword - recipient: - - james@gmail.com - - bob@gmail.com - sender_name: My Home Assistant -``` - -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: - -```yaml - burglar: - alias: Burglar Alarm - sequence: - - service: shell_command.snapshot - - delay: - seconds: 1 - - service: notify.NOTIFIER_NAME - data: - title: 'Intruder alert' - message: 'Intruder alert at apartment!!' - data: - images: - - /home/pi/snapshot1.jpg - - /home/pi/snapshot2.jpg -``` - -The optional `images` field adds in-line image attachments to the email. This sends a text/HTML multi-part message instead of the plain text default. - -The optional `html` field makes a custom text/HTML multi-part message, allowing total freedom for sending rich html emails. In them, if you need to attach images, you can pass both arguments (`html` and `images`), the attachments will be joined with the basename of the images, so they can be included in the html page with `src="cid:image_name.ext"`. - -```yaml - burglar: - alias: Burglar Alarm - sequence: - - service: shell_command.snapshot - - delay: - seconds: 1 - - service: notify.NOTIFIER_NAME - data_template: - message: 'Intruder alert at apartment!!' - data: - images: - - /home/pi/snapshot1.jpg - - /home/pi/snapshot2.jpg - html: > - - - - - - - Intruder alert - - - - - -
    -
    -

    Intruder alert at apartment!!

    -
    -
    -
    -
    -
    - snapshot1 -
    -
    - snapshot2 -
    -
    -
    -
    - - - - - -``` -Obviously, this kind of complex html email reporting is done much more conveniently using Jinja2 templating from an [AppDaemon app](/docs/ecosystem/appdaemon/tutorial/), for example. - -This platform is fragile and not able to catch all exceptions in a smart way because of the large number of possible configuration combinations. - -A combination that will work properly is port 587 and STARTTLS. It's recommended to enable STARTTLS, if possible. - -Keep in mind that if the password contains a colon, it needs to be wrapped in apostrophes in the `configuration.yaml` file. - -For Google Mail (smtp.gmail.com) an additional step in the setup process is needed. Google has some extra layers of protection -which need special attention. By default, the usage by external applications, especially scripts, is limited. Visit the [Less secure apps](https://www.google.com/settings/security/lesssecureapps) page and enable it. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.stride.markdown b/source/_components/notify.stride.markdown deleted file mode 100644 index 0c79c44667..0000000000 --- a/source/_components/notify.stride.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "Stride" -description: "Instructions how to add Stride notifications to Home Assistant." -date: 2018-03-14 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: stride.png -ha_category: Notifications -ha_release: 0.66 ---- - -The `stride` platform allows you to send notifications from Home Assistant to [Stride](https://stride.com/). - -You need to obtain a [Stride API token](https://developer.atlassian.com/cloud/stride/security/authentication/#using-room-tokens) to be able to send notifications. When creating the token, you'll see a section labeled "Use this conversation URL to post messages" - it will look something like "https://api.atlassian.com/site/55872e9f-047e-a619-b32c-19d37fbc6038/conversation/26c98c26-0ffd-a11e-3a55-1b397cb71fe0/message". The first set of numbers and letters (`55872e9f-047e-a619-b32c-19d37fbc6038`) is the Cloud ID, and the second set (`26c98c26-0ffd-a11e-3a55-1b397cb71fe0`) is the Room ID. - -To enable the Stride notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: stride - cloudid: CLOUD-ID - token: TOKEN - room: ROOM-ID -``` - -{% configuration %} -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. - required: false - default: notify - type: string -cloudid: - description: The Stride Cloud ID to use for sending Stride notification. - required: true - type: string -token: - description: The Stride API token to use for sending Stride notifications. - required: true - type: string -room: - description: The default room to post to if no room is explicitly specified when sending the notification. - required: true - type: string -panel: - description: Setting panel will override the default panel type (`None`) for the notification. By default not setting this will post to Stride without using a panel type. Valid options are 'None', 'info', 'note', 'tip', 'warning'. - required: false - type: string -{% endconfiguration %} - -### {% linkable_title Stride service data %} - -The following attributes can be placed `data` for extended functionality. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `room` | yes | (int) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `panel` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.synology_chat.markdown b/source/_components/notify.synology_chat.markdown deleted file mode 100644 index 5fbbae6a04..0000000000 --- a/source/_components/notify.synology_chat.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Synology Chat" -description: "Instructions on how to add a Synology Chat Bot notifications to Home Assistant." -date: 2018-02-15 07:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.65 -logo: synology.png -ha_category: Notifications ---- - -The `synology_chat` notification platform allows you to deliver notifications to your [Synology Chat](https://www.synology.com/en-us/dsm/feature/chat) install as a Synology Chat bot. - -To configure a Synology Chat bot, first you must create a [Synology Chat Integration Incoming Webhook](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Collaboration/How_to_configure_webhooks_and_slash_commands_in_Chat_Integration#t2.1). After this is complete, you will have a Webhook URL. This is what will be required in the Home Assistant configuration. - -To enable the Synology Chat notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: synology_chat - name: hass_synchat - resource: https://example.your.synology.com/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=1&token=ABCDEFG -``` - -Configuration variables: - -- **name** (*Required*): Setting the parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **resource** (*Required*): The incoming webhook URL. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.syslog.markdown b/source/_components/notify.syslog.markdown deleted file mode 100644 index 13683e8a8a..0000000000 --- a/source/_components/notify.syslog.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Syslog" -description: "Instructions on how to add syslog notifications to Home Assistant." -date: 2015-06-09 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: syslog.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `syslog` platform allows you to deliver notifications from Home Assistant to the local syslog. - -To enable syslog notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: syslog -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **facility** (*Optional*): Facility according to RFC 3164 (http://tools.ietf.org/html/rfc3164). Default is 'syslog' if no value is given. Check the table below for entries. -- **option** (*Optional*): Log option. Default is 'pid' if no value is given. Check the table below for entries. -- **priority** (*Optional*): Priority of the messages. Default is 'info' if no value is given. Check the table below for entries. - -The table contains values to use in your `configuration.yaml` file. - -| facility | option | priority | -| :-------- |:--------| :---------| -| kernel | pid | 5 | -| user | cons | 4 | -| mail | ndelay | 3 | -| daemon | nowait | 2 | -| auth | perror | 1 | -| LPR | | 0 | -| news | | -1 | -| uucp | | -2 | -| cron | | | -| syslog | | | -| local0 | | | -| local1 | | | -| local2 | | | -| local3 | | | -| local4 | | | -| local5 | | | -| local6 | | | -| local7 | | | - -For details about facility, option, and priority please consult the [wikipedia article](http://en.wikipedia.org/wiki/Syslog) and [RFC 3164](http://tools.ietf.org/html/rfc3164). - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown deleted file mode 100644 index 534924105d..0000000000 --- a/source/_components/notify.telegram.markdown +++ /dev/null @@ -1,238 +0,0 @@ ---- -layout: page -title: "Telegram" -description: "Instructions on how to add Telegram notifications to Home Assistant." -date: 2015-10-09 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telegram.png -ha_category: Notifications -ha_release: 0.7.5 ---- - - -The `telegram` platform uses [Telegram](https://web.telegram.org) to deliver notifications from Home Assistant to your Android device, your Windows phone, or your iOS device. - -The requirements are: - -- You need a [Telegram bot](https://core.telegram.org/bots). Please follow those [instructions](https://core.telegram.org/bots#6-botfather) to create one and get the token for your bot. Keep in mind that bots are not allowed to contact users. You need to make the first contact with your user. Meaning that you need to send a message to the bot from your user. -- You need to configure a [Telegram bot in Home Assistant](/components/telegram_bot) and define there your API key and the allowed chat ids to interact with. -- The `chat_id` of an allowed user. - -To retrieve your `chat_id`, contact any of the Telegram bots created for this purpose (@myidbot, @get_id_bot) - -The quickest way to retrieve your `chat_id` is visiting [https://api.telegram.org/botYOUR_API_TOKEN/getUpdates](https://api.telegram.org/botYOUR_API_TOKEN/getUpdates) or to use `$ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates`. Replace `YOUR_API_TOKEN` with your actual token. - -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" - } - }] -} -``` - -Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: - -```python -$ python3 ->>> import telegram ->>> bot = telegram.Bot(token='YOUR_API_TOKEN') ->>> chat_id = bot.getUpdates()[-1].message.chat_id ->>> print(chat_id) -123456789 -``` - -To enable Telegram notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry for the Telegram Bot -telegram_bot: - - platform: polling - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - allowed_chat_ids: - - CHAT_ID_1 - - CHAT_ID_2 - - CHAT_ID_3 - -# Example configuration.yaml entry for the notifier -notify: - - name: NOTIFIER_NAME - platform: telegram - chat_id: CHAT_ID_2 -``` - -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`. -- **chat_id** (*Required*): The chat ID of your user. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). - -### {% linkable_title Text message %} - -```yaml -... -action: - service: notify.NOTIFIER_NAME - data: - title: '*Send a message*' - message: 'That's an example that _sends_ a *formatted* message with a custom inline keyboard.' - data: - inline_keyboard: - - 'Task 1:/command1, Task 2:/command2' - - 'Task 3:/command3, Task 4:/command4' -``` - -Configuration variables: - -- **message** (*Required*): Message text. -- **title** (*Optional*): Will be composed as '%title\n%message'. -- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. -- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. - -### {% linkable_title Photo support %} - -```yaml -... -action: - service: notify.NOTIFIER_NAME - data: - title: Send an images - message: That's an example that sends an image. - data: - photo: - - url: http://192.168.1.28/camera.jpg - username: admin - password: secrete - - file: /tmp/picture.jpg - caption: Picture Title xy - - url: http://somebla.ie/video.png - caption: I.e. for a Title -``` - -Configuration variables: - -- **url** or **file** (*Required*): For local or remote path to an image. -- **caption** (*Optional*): The title of the image. -- **username** (*Optional*): Username for a URL which require HTTP authentication. -- **password** (*Optional*): Username for a URL which require HTTP authentication. -- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'. -- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. -- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. - -

    -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 Video support %} - -```yaml -... -action: - service: notify.NOTIFIER_NAME - data: - title: Send a video - message: That's an example that sends a video. - data: - video: - - url: http://192.168.1.28/camera.mp4 - username: admin - password: secrete - - file: /tmp/video.mp4 - caption: Video Title xy - - url: http://somebla.ie/video.mp4 - caption: I.e. for a Title -``` - -Configuration variables: - -- **url** or **file** (*Required*): For local or remote path to a video. -- **caption** (*Optional*): The title of the video. -- **username** (*Optional*): Username for a URL which require HTTP authentication. -- **password** (*Optional*): Username for a URL which require HTTP authentication. -- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'. -- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. -- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. - -### {% linkable_title Document support %} - -```yaml -... -action: - service: notify.NOTIFIER_NAME - data: - title: Send a document - message: That's an example that sends a document and a custom keyboard. - data: - document: - file: /tmp/whatever.odf - caption: Document Title xy - keyboard: - - '/command1, /command2' - - '/command3, /command4' -``` - -Configuration variables: - -- **url** or **file** (*Required*): For local or remote path to a document. -- **caption** (*Optional*): The title of the document. -- **username** (*Optional*): Username for a URL which require HTTP authentication. -- **password** (*Optional*): Username for a URL which require HTTP authentication. -- **authentication** (*Optional*): Set to 'digest' to use HTTP digest authentication, defaults to 'basic'. -- **keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom keyboard. -- **inline_keyboard** (*Optional*): List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. - -### {% linkable_title Location support %} - -```yaml -... - -action: - service: notify.NOTIFIER_NAME - data: - title: Send location - message: Location updated. - data: - location: - latitude: 32.87336 - longitude: 117.22743 -``` - -Configuration variables: - -- **latitude** (*Required*): The latitude to send. -- **longitude** (*Required*): The longitude to send. -- **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. diff --git a/source/_components/notify.telstra.markdown b/source/_components/notify.telstra.markdown deleted file mode 100644 index 4297cfc69f..0000000000 --- a/source/_components/notify.telstra.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Telstra" -description: "Instructions on how to add Telstra API notifications to Home Assistant." -date: 2016-10-19 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telstra.png -ha_category: Notifications -ha_release: 0.31 ---- - - -The `telstra` notification platform allows you to deliver Home Assistant notifications to Australian phone numbers over the [Telstra SMS API](https://dev.telstra.com/content/sms-api-0). - -To enable the Telstra notifications in your installation, you must first create an account and API app over at [dev.telstra.com](https://dev.telstra.com/). The free tier allows for a maximum of 1000 free messages. - -After your API app is approved, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - name: NOTIFIER_NAME - platform: telstra - consumer_key: TELSTRA_API_CONSUMER_KEY_HERE - consumer_secret: TELSTRA_API_CONSUMER_SECRET_HERE - phone_number: SMS_RECIPIENT_PHONE_NUMBER_HERE -``` - -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`. -- **consumer_key** (*Required*): The consumer key of your Telstra API app. -- **consumer_secret** (*Required*): The consumer secret of your Telstra API app. -- **phone_number** (*Required*): The phone number of where the notifications will be sent. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.twilio_call.markdown b/source/_components/notify.twilio_call.markdown deleted file mode 100644 index 7f0fa2a989..0000000000 --- a/source/_components/notify.twilio_call.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Twilio Call" -description: "Instructions on how to add user notifications to Home Assistant." -date: 2017-01-27 00:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: twilio.png -ha_category: Notifications -ha_release: 0.37 ---- - -The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). -Passed message will be read by Text-To-Speech service. - -The requirement is that you have setup [Twilio](/components/twilio/). - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: twilio_call - from_number: E164_PHONE_NUMBER -``` - -Configuration variables: - -- **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. -- **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 %} - -Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. - -```yaml -# Example automation notification entry -automation: - - alias: The sun has set - trigger: - platform: sun - event: sunset - action: - service: notify.twilio_sms - data: - message: 'The sun has set' - target: - - +14151234567 - - +15105555555 -``` diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown deleted file mode 100644 index 7cec94cf33..0000000000 --- a/source/_components/notify.twilio_sms.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Twilio SMS" -description: "Instructions on how to add user notifications to Home Assistant." -date: 2016-05-14 14:14 -sidebar: true -comments: false -sharing: true -footer: true -logo: twilio.png -ha_category: Notifications -ha_release: "0.20" ---- - -The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). - -The requirement is that you have setup [Twilio](/components/twilio/). - -To use this notification platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: twilio_sms - from_number: E164_PHONE_NUMBER -``` - -Configuration variables: - -- **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. -- **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 %} - -Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. - -```yaml -# Example automation notification entry -automation: - - alias: The sun has set - trigger: - platform: sun - event: sunset - action: - service: notify.twilio_sms - data: - message: 'The sun has set' - target: - - '+14151234567' - - '+15105555555' -``` diff --git a/source/_components/notify.twitter.markdown b/source/_components/notify.twitter.markdown deleted file mode 100644 index 6bf8867709..0000000000 --- a/source/_components/notify.twitter.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Twitter" -description: "Instructions on how to add Twitter notifications to Home Assistant." -date: 2016-01-27 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: twitter.png -ha_category: Notifications -ha_release: 0.12 ---- - - -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). - -To add Twitter to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: twitter - consumer_key: ABCDEFGHJKLMNOPQRSTUVXYZ - consumer_secret: ABCDEFGHJKLMNOPQRSTUVXYZ - access_token: ABCDEFGHJKLMNOPQRSTUVXYZ - access_token_secret: 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`. -- **consumer_key** (*Required*): Your "Consumer Key" (API Key) for the application. -- **consumer_secret** (*Required*): Your "Consumer Secret" (API Secret) for the application. -- **access_token** (*Required*): Your "Access Token" for the application. -- **access_token_secret** (*Required*): Your "Access Token Secret" for the application. -- **username** (*Optional*): Twitter handle without `@` or with `@` and quoting for direct messaging. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.webostv.markdown b/source/_components/notify.webostv.markdown deleted file mode 100644 index c3dbadfbe4..0000000000 --- a/source/_components/notify.webostv.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "LG WebOS TV notifications" -description: "Instructions on how to integrate a LG WebOS TV within Home Assistant." -date: 2016-04-18 23:24 -sidebar: true -comments: false -sharing: true -footer: true -logo: webos.png -ha_category: Notifications -ha_iot_class: "Local Polling" -ha_release: 0.18 ---- - -The `webostv` platform allows you to send notifications to a LG WebOS Smart TV. - -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. - -To add a TV to your installation, add the following to your `configuration.yaml` file and follow the configurator instructions: - -```yaml -# Example configuration.yaml entry -notify: - - platform: webostv - host: 192.168.0.112 - name: livingroom_tv - filename: webostv.conf -``` - -Configuration variables: - -- **host** (*Required*): The IP of the LG WebOS Smart TV, e.g., 192.168.0.10 -- **name** (*Required*): The name you would like to give to the LG WebOS Smart TV. -- **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`. -- **icon** (*Optional*): The path to an image file to use as the icon in notifications. - -A possible automation could be: - -```yaml -# Example configuration.yaml entry -automation: - - alias: Open a window - trigger: - platform: numeric_state - entity_id: sensor.netatmo_livingroom_co2 - above: 999 - action: - service: notify.livingroom_tv - data: - message: "You should open a window! (Livingroom Co2: {{ states.sensor.netatmo_livingroom_co2.state }}ppm)" -``` - -The icon can be overridden for individual notifications by providing a path to an alternative icon image to use: - -```yaml -automation: - - alias: Front door motion - trigger: - platform: state - entity_id: binary_sensor.front_door_motion - to: 'on' - action: - service: notify.livingroom_tv - data: - message: "Movement detected: Front Door" - data: - icon: "/home/homeassistant/images/doorbell.png" -``` diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown deleted file mode 100644 index 930aa496ac..0000000000 --- a/source/_components/notify.xmpp.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Jabber (XMPP)" -description: "Instructions on how to add Jabber (XMPP) notifications to Home Assistant." -date: 2015-05-08 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: xmpp.png -ha_category: Notifications -ha_release: pre 0.7 ---- - - -The `xmpp` platform allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](http://xmpp.org) account. - -To enable Jabber notifications in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: xmpp - sender: YOUR_JID - password: YOUR_JABBER_ACCOUNT_PASSWORD - recipient: YOUR_RECIPIENT -``` - -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **sender** (*Required*): The Jabber ID (JID) that will act as origin of the messages. Add your JID including the domain, eg. your_name@jabber.org. -- **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. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.yessssms.markdown b/source/_components/notify.yessssms.markdown deleted file mode 100644 index 040acd518b..0000000000 --- a/source/_components/notify.yessssms.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Yesss SMS" -description: "Instructions on 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/nuheat.markdown b/source/_components/nuheat.markdown deleted file mode 100644 index b3654ebbae..0000000000 --- a/source/_components/nuheat.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "NuHeat" -description: "Instructions on how to integrate your NuHeat Signature thermostats within Home Assistant." -date: 2017-11-11 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nuheat.png -ha_category: Hub -ha_release: 0.61 -ha_iot_class: "Cloud Polling" ---- - -The `nuheat` component lets you control connected floor heating thermostats from [NuHeat](http://www.nuheat.com/). - -First, you will need to obtain your thermostat's numeric serial number or ID by logging into [MyNuHeat.com](https://mynuheat.com/) and selecting your thermostat(s). - -Once you have the Thermostat ID(s), add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -nuheat: - username: YOUR_USERNAME - password: YOUR_PASSWORD - devices: 12345 - -# Example configuration.yaml entry with multiple thermostats -nuheat: - username: YOUR_USERNAME - password: YOUR_PASSWORD - devices: - - 12345 - - 67890 -``` - -{% configuration %} -username: - description: The username for accessing your MyNuHeat account. - required: true - type: string -password: - description: The password for accessing your MyNuHeat account. - required: true - type: string -devices: - description: The serial number/ID of each thermostat you would like to integrate. - required: true - type: [string, int] -{% endconfiguration %} diff --git a/source/_components/nuimo_controller.markdown b/source/_components/nuimo_controller.markdown deleted file mode 100644 index 92b1bbd618..0000000000 --- a/source/_components/nuimo_controller.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Nuimo controller" -description: "Instructions on how to setup and use a Nuimo device in Home Assistant." -date: 2016-08-30 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: nuimo.png -ha_category: Hub -ha_release: 0.29 -ha_iot_class: "Local Polling" ---- - -The `nuimo_controller` component allows you to connect to a [Nuimo](http://www.senic.com/) device for receiving input events and displaying on the LED matrix via the [Nuimo SDK for Python on Linux](https://github.com/getSenic/nuimo-linux-python). - -To connect to a Nuimo device add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -nuimo_controller: -``` - -Configuration variables: - -- **mac** (*Optional*): Skip discovery and connect to this device address. -- **name** (*Optional*): To handle more than one device by names, add the name of the device. - - -Example for testing rotation value and sending to the LED matrix: - -```yaml -automation Nuimo_rotate_right: - trigger: - platform: event - event_type: nuimo_input - event_data: - type: ROTATE - condition: - condition: template - value_template: {% raw %}'{{ trigger.event.data.value > 100 }}'{% endraw %} - action: - service: nuimo_controller.led_matrix - data: - matrix: - '........ - 0000000. - .000000. - ..00000. - .0.0000. - .00.000. - .000000. - .000000. - ........ ' - interval: 0.5 -``` - -Troubleshooting: - -- use `hcitool lescan` to see the mac address of your device - -- allow non-root user access to Bluetooth LE with `sudo setcap cap_net_raw+eip $(eval readlink -f $(which python))` - -- install the newest version of [pygattlib](https://bitbucket.org/OscarAcena/pygattlib) from the repository, either because there is no binary package for your system or the pip version contains errors, with `pip install hg+https://bitbucket.org/OscarAcena/pygattlib --target $HOME/.homeassistant/deps`. -(Dependencies of pygattlib: `sudo apt-get install pkg-config libboost-python-dev libboost-thread-dev libbluetooth-dev libglib2.0-dev python-dev`) -Then invoke home-assistant with `hass --skip-pip`. diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown deleted file mode 100644 index 03f0fae06d..0000000000 --- a/source/_components/octoprint.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "OctoPrint" -description: "Instructions on how to setup the OctoPrint in Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: octoprint.png -ha_category: Hub -featured: false -ha_release: 0.19 -ha_iot_class: "Local Polling" ---- - -[OctoPrint](http://octoprint.org/) is a web interface for your 3D printer. This is the main component to integrate OctoPrint sensors, you will have to setup sensors and binary sensors separately. - -To get started with the OctoPrint API, please follow the directions on their [site](http://docs.octoprint.org/en/master/api/general.html). Once OctoPrint is configured you will need to add your API key and host to your `configuration.yaml`. - - -```yaml -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. - diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown deleted file mode 100644 index 0415c561a7..0000000000 --- a/source/_components/panel_custom.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Panel Custom" -description: "Instructions on how to add customized panels to the frontend of Home Assistant." -date: 2015-08-08 11:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Front end -ha_release: 0.26 ---- - - -The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. - -To enable customized panels in your installation, add the following to your `configuration.yaml` file: - -```yaml -# 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 - sidebar_icon: mdi:work - url_path: my-todomvc - webcomponent_path: /home/hass/hello.html - config: - who: world -``` - -Configuration variables: - -- **name** (*Optional*): Name of the panel. -- **sidebar_title** (*Optional*): Friendly title for the panel in the sidebar. Omitting it means no sidebar entry (but still accessible through the URL). -- **sidebar_icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. -- **url_path** (*Optional*): The URL your panel will be available on. If omitted will default to the panel name. -- **webcomponent_path** (*Optional*): The path to your component. If omitted will default to `/panels/.html` -- **config** (*Optional*): Configuration to be passed into your web component when being instantiated. - diff --git a/source/_components/panel_iframe.markdown b/source/_components/panel_iframe.markdown deleted file mode 100644 index 8aa5514f0c..0000000000 --- a/source/_components/panel_iframe.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "Panel iFrame" -description: "Instructions on how to add iFrames in the frontend of Home Assistant." -date: 2015-07-17 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Front end -ha_release: 0.25 ---- - - -The `panel_iframe` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server. - -

    If you are accessing Home Assistant over HTTPS using SSL, you cannot access HTTP sites through an iframe panel.

    - -To enable Panel iFrames in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -panel_iframe: - router: - title: 'Router' - url: 'http://192.168.1.1' - fridge: - title: 'Fridge' - url: 'http://192.168.1.5' - otherapp: - title: 'Other App' - url: '/otherapp' -``` - - -{% configuration %} - panel_iframe: - description: Enables the panel_iframe component. Only allowed once. - required: true - type: map - keys: - panel_name: - description: Name of the panel. Only allowed once. - required: true - type: map - keys: - title: - description: Friendly title for the panel. Will be used in the sidebar. - required: true - type: string - url: - description: The absolute URL or relative URL with an absolute path to open. - required: true - type: string - icon: - description: Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. - required: false - type: string -{% endconfiguration %} - diff --git a/source/_components/persistent_notification.markdown b/source/_components/persistent_notification.markdown deleted file mode 100644 index 9fac3ddc0c..0000000000 --- a/source/_components/persistent_notification.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: page -title: "Persistent notification" -description: "Instructions on how to integrate persistent notifications into Home Assistant." -date: 2016-06-25 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other -ha_release: 0.23 ---- - -The `persistent_notification` can be used to show a message on the frontend that has to be dismissed by the user. - -

    - -

    - -### {% linkable_title Service %} - -The service `persistent_notification/create` takes in `message`, `title`, and `notification_id`. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `message` | no | Body of the notification. -| `title` | yes | Title of the notification. -| `notification_id` | yes | If `notification_id` is given, it will overwrite the notification if there already was a notification with that ID. - -The `persistent_notification` component supports specifying [templates](/topics/templating/) for both the `message` and the `title`. This will allow you to use the current state of Home Assistant in your notifications. - -In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this with a customized subject. - -```yaml -action: - service: persistent_notification.create - data: - message: "Your message goes here" - title: "Custom subject" -``` - -The service `persistent_notification/dismiss` requires a `notification_id`. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `notification_id` | no | the `notification_id` is required to identify the notification that should be removed. - -This service allows you to remove a notifications by script or automation. - -```yaml -action: - service: persistent_notification.dismiss - data: - notification_id: "1234" -``` - - -### {% linkable_title Markdown support %} - -The message attribute supports the [Markdown formatting syntax](https://daringfireball.net/projects/markdown/syntax). Some examples are: - -| Type | Message | -| ---- | ------- | -| Headline 1 | `# Headline` | -| Headline 2 | `## Headline` | -| Newline | `\n` | -| Bold | `**My bold text**` | -| Cursive | `*My cursive text*` | -| Link | `[Link](https://home-assistant.io/)` | -| Image | `![image](/local/my_image.jpg)` | - -

    - `/local/` in this context refers to the `.homeassistant/www/` folder. -

    - - -### {% linkable_title Create a persistent notification %} - -Choose service developer tool icon **Services** from the **Developer Tools** to call the `persistent_notification` service. Select `persistent_notification/create` from the list of **Available services:** and enter something like the sample below into the **Service Data** field and hit **CALL SERVICE**. - -```json -{ - "notification_id": "1234", - "title": "Sample notification", - "message": "This is a sample text" -} -``` -This will create the notification entry shown above. diff --git a/source/_components/pilight.markdown b/source/_components/pilight.markdown deleted file mode 100644 index 45e9832381..0000000000 --- a/source/_components/pilight.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "Pilight" -description: "Instructions on how to setup Pilight within Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pilight.png -ha_category: Hub -ha_release: 0.26 -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://manual.pilight.org/protocols/index.html) are already available. - -This pilight hub connects to the [pilight-daemon](https://manual.pilight.org/programs/daemon.html) 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. - -## {% linkable_title Configuration %} - -To integrate pilight into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -pilight: -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of the computer running the pilight-daemon, e.g., 192.168.1.32. -- **port** (*Optional*): The network port to connect to. The usual port is [5001](https://manual.pilight.org/development/api.html). -- **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 neighbors 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://manual.pilight.org/development/api.html). - -A full configuration sample could look like the sample below: - -```yaml -# Example configuration.yaml entry -pilight: - host: 127.0.0.1 - port: 5000 - send_delay: 0.4 - whitelist: # optional - protocol: - - daycom - - intertechno - id: - - 42 -``` - -## {% linkable_title Troubleshooting %} - -- A list of tested RF transceiver hardware is available [here](https://manual.pilight.org/electronics/index.html). This might be useful before buying. -- Sending commands is simple when the protocol is known by pilight, but receiving commands can be rather difficult. It can happen that the code is not correctly recognized due to different timings in the sending hardware or the RF receiver. If this happens follow these steps: - -1. [Install](https://manual.pilight.org/installation.html) pilight from source (do not worry that is very easy) and only activate the protocols you are expecting in the pop up menu. This reduces false positives. -2. Check the real timings of your device + RF receiver by running `pilight-debug`. Remember the `pulslen` parameter. -3. Go to the `libs/pilight/protocols/433.92` subfolder of the pilight source code and open the .c file of your protocol. Search for `MIN_PULSE_LENGTH`, `MAX_PULSE_LENGTH ` and `AVG_PULSE_LENGTH`. Change the pulse lengths to match your measured one. Recompile and install pilight by re-running `$ sudo ./setup.sh`. diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown deleted file mode 100644 index 6beaa00557..0000000000 --- a/source/_components/plant.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: page -title: "Plant monitor" -description: "Instructions on how to setup plant monitoring with Home Assistant." -date: 2016-05-7 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other -ha_release: 0.44 ---- - -This`plant`component lets you merge moisture, conductivity, light intensity, temperature and battery level for a plant into a single UI element. It also supports setting minimum and maximum values for each measurement and will change its state to "problem" if it is not within those limits. - -To use your `plant` sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -plant: - name_of_your_plant: - sensors: - moisture: sensor.my_sensor_moisture - battery: sensor.my_sensor_battery - temperature: sensor.my_sensor_temperature - conductivity: sensor.my_sensor_conductivity - brightness: sensor.my_sensor_brightness - min_moisture: 20 -``` - -Configuration variables: - -- **entity_id** (*Required*): Set by you and is used by the component as the `entity_id`. - - **sensors** (*Required*): - - **moisture** (*Optional*): Moisture of the plant. Measured in %. Can have a min and max value set optionally. - - **battery** (*Optional*): Battery level of the plant sensor. Measured in %. Can only have a min level set optionally. - - **temperature:** (*Optional*): Temperature of the plant. Measured in degrees Celsius. Can have a min and max value set optionally. - - **conductivity:** (*Optional*): Conductivity of the plant. Measured in µS/cm. Can have a min and max value set optionally. - - **brightness:** (*Optional*): Light exposure of the plant. Measured in Lux. Can have a min and max value set optionally. - - **min_moisture** (*Optional*): Minimum moisture level before triggering a problem. Typical value: 20 - - **max_moisture** (*Optional*): Maximum moisture level before triggering a problem. Typical value: 60 - - **min_battery** (*Optional*): Minimum battery level before triggering a problem. Typical value: 20 - - **min_conductivity** (*Optional*): Minimum conductivity level before triggering a problem. Typical value: 500 - - **max_conductivity** (*Optional*): Maximum conductivity level before triggering a problem. Typical value: 3000 - - **min_temperature** (*Optional*): Minimum temperature before triggering a problem. - - **max_temperature** (*Optional*): Maximum temperature before triggering a problem. - - **min_brightness** (*Optional*): Minimum brightness before triggering a problem. In contrast to the other values, this check is *not* looking at the current situation, but rather at the last days. A problem is only reported if the maximum brightness over the last days was lower than min_brightness. You can use this to check if the plant gets enough light during the course of the day. - - **max_brightness** (*Optional*): Maximum brightness before triggering a problem. - - **check_days** (*Optional*): time interval (in days) used when checking **min_brightness**, if not set, the default value is 3 - -## {% linkable_title Examples %} -### Using plain MQTT sensor to get the data -This is a practical example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. -Another good source of this data would be the [Mi Flora](/components/sensor.miflora/) component. - - -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 - -The main sources of the data will usually be a [MiFlora sensor](/components/sensor.miflora/) or a [MQTT sensor](/components/sensor.mqtt/) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). - -If you want to get the date via a PlantGateway, this is a typical configuration for the MQTT sensors: - -{% raw %} -```yaml -# Example configuration.yaml entry -plant: - simulated_plant: - sensors: - moisture: sensor.mqtt_plant_moisture - battery: sensor.mqtt_plant_battery - temperature: sensor.mqtt_plant_temperature - conductivity: sensor.mqtt_plant_conductivity - brightness: sensor.mqtt_plant_brightness - min_moisture: 20 - max_moisture: 60 - min_battery: 17 - min_conductivity: 500 - min_temperature: 15 - -sensor: - - platform: mqtt - name: my_plant_moisture - state_topic: my_plant_topic - value_template: '{{ value_json.moisture }}' - - platform: mqtt - name: my_plant_battery - state_topic: my_plant_topic - value_template: '{{ value_json.battery }}' - - platform: mqtt - name: my_plant_temperature - state_topic: my_plant_topic - value_template: '{{ value_json.temperature }}' - - platform: mqtt - name: my_plant_conductivity - state_topic: my_plant_topic - value_template: '{{ value_json.conductivity }}' - - platform: mqtt - name: my_plant_brightness - state_topic: my_plant_topic - value_template: '{{ value_json.brightness }}' -``` -{% endraw %} - -You have to replace the `state_topic` with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server. diff --git a/source/_components/prometheus.markdown b/source/_components/prometheus.markdown deleted file mode 100644 index ba6d65ba6c..0000000000 --- a/source/_components/prometheus.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -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/proximity.markdown b/source/_components/proximity.markdown deleted file mode 100644 index ba8882accd..0000000000 --- a/source/_components/proximity.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "Proximity" -description: "Instructions on how to setup Proximity monitoring within Home Assistant." -date: 2016-02-07 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Automation -ha_release: 0.13 ---- - -The `proximity` component allows you to monitor the proximity of devices to a particular [zone](/components/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data. - -This component is useful to reduce the number of automation rules required when wanting to perform automations based on locations outside a particular zone. The [zone](/getting-started/automation-trigger/#zone-trigger) and [state](/getting-started/automation-trigger/#state-trigger) based triggers allow similar control but the number of rules grows exponentially when factors such as direction of travel need to be taken into account. - -Some examples of its use include: - -- Increase thermostat temperature as you near home -- Decrease temperature the further away from home you travel - -The Proximity entity which is created has the following values: - -- `state`: Distance from the monitored zone (in km) -- `dir_of_travel`: Direction of the closest device to the monitored zone. Values are: - - 'not set' - - 'arrived' - - 'towards' - - 'away_from' - - 'unknown' - - 'stationary' -- `dist_to_zone`: Distance from the monitored zone (in km) - -To enable this component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -proximity: - home: - ignored_zones: - - twork - devices: - - device_tracker.nwaring_nickmobile - tolerance: 50 - unit_of_measurement: mi -``` - -Configuration variables: - -- **zone** (*Optional*): The zone to which this component is measuring the distance to. Default is the home zone. -- **ignored_zones** array (*Optional*): Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g., work or school). -- **devices** array (*Optional*): A list of devices to compare location against to check closeness to the configured zone. -- **tolerance** (*Optional*): The tolerance used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes. -- **unit_of_measurement** (*Optional*): The unit of measurement for distance. Valid values are (km, m, mi, ft) [kilometers, meters, miles and feet respectively]. The default value is kilometers. - -To add multiple proximity components, simply use a list in your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -proximity: - home: - ignored_zones: - - twork - - elschool - devices: - - device_tracker.nwaring_nickmobile - - device_tracker.eleanorsiphone - - device_tracker.tsiphone - tolerance: 50 - unit_of_measurement: mi - home3: - devices: - - device_tracker.tsiphone - tolerance: 50 - work: - devices: - - device_tracker.elanorsiphone - tolerance: 10 -``` diff --git a/source/_components/python_script.markdown b/source/_components/python_script.markdown deleted file mode 100644 index 6881352431..0000000000 --- a/source/_components/python_script.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "Python Scripts" -description: "Instructions on how to setup Python scripts within Home Assistant." -date: 2017-06-15 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -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. 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]: /developers/development_hass_object/ -[logger-api]: https://docs.python.org/3.4/library/logging.html#logger-objects - -## {% linkable_title Writing your first script %} - - - Add to `configuration.yaml`: `python_script:` - - Create folder `/python_scripts` - - Create a file `hello_world.py` in the folder and give it this content: - -```python -name = data.get('name', 'world') -logger.info("Hello {}".format(name)) -hass.bus.fire(name, { "wow": "from a Python script!" }) -``` - - - Start Home Assistant - - Call service `python_script/hello_world` with parameters - -```json -{ - "name": "you" -} -``` - -## {% linkable_title Calling Services %} - -The following example shows how to call a service from `python_script`. This script takes two parameters: `entity_id` (required), `rgb_color` (optional) and calls `light.turn_on` service by setting the brightness value to `255`. - -```python -entity_id = data.get('entity_id') -rgb_color = data.get('rgb_color', [255, 255, 255]) -if entity_id is not None: - service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 } - hass.services.call('light', 'turn_on', service_data, False) -``` -The above `python_script` can be called using the following JSON as an input. - -```json -{"entity_id": "light.bedroom", "rgb_color": [255, 0, 0] } -``` - -For more examples, visit the [Scripts section](https://community.home-assistant.io/c/projects/scripts) in our forum. diff --git a/source/_components/qwikswitch.markdown b/source/_components/qwikswitch.markdown deleted file mode 100644 index e915be3979..0000000000 --- a/source/_components/qwikswitch.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: page -title: "QwikSwitch QSUSB Hub" -description: "Instructions on how to integrate the QwikSwitch QSUSB Hub into Home Assistant." -date: 2016-05-04 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: qwikswitch.png -ha_category: Hub -featured: false -ha_release: "0.20" ---- - -The `qwikswitch` component is the main component to integrate various [QwikSwitch](http://www.qwikswitch.co.za/) devices with Home Assistant. The integration requires the QSUSB Modem device and connects to the QS Mobile application. - -The `qwikswitch` component discovers all devices from QS Mobile. Currently, Relays and LED dimmers are discovered in Home Assistant. Relay devices are [lights](/components/light.qwikswitch/) by default, and can be configured as [switches](/components/switch.qwikswitch/). - -Example configuration: - -```yaml -# Example configuration.yaml entry -qwikswitch: - url: http://127.0.0.1:2020 -``` - -Configuration variables: - -- **url** (*Required*): The URL including the port of your QwikSwitch hub. -- **dimmer_adjust** (*Optional*): A decimal value to adjust the brightness of the dimmer exponentially. Increasing this value allows dimmers that reach full brightness with low values in QS Mobile to appear more linear in Home Assistant. Recommended values between 1 and 2 and the default is 1. -- **button_events** (*Optional*): A comma-separated list of button types that will generate events. See [QwikSwitch Events] for detail. -- **switches** (*Optional*): A list of device QS_id's that should be switches, and not lights (i.e. `['@0dev01', '@0dev02']`) -- **sensors** (*Optional*): A dictionary of sensors. In the format of {entity_id: QS_id}. (i.e. `{door_sensor: '@0dev03'}`) - -### {% linkable_title QwikSwitch Events %} - -QwikSwitch devices (i.e., transmitter buttons) will fire events on the Home Assistant bus. These events can then be used as triggers for any `automation` action, as follows: - -```yaml -automation: - - alias: Action - Respond to A button press - trigger: - platform: event - event_type: qwikswitch.button.@12df34 -``` - -`event_type` names should be in the format **qwikswitch.button.@_QS_id_**. where **@_QS_id_** will be captured in the Home Assistant log when pressing the button. Alternatively, you can also get the device ID from the QS Mobile application or by using the listen API call by browsing to `http://127.0.0.1:2020/&listen` and then pressing the button. - -The full packet from the QSUSB API will be passed as `data` - -By default events will be fired if the value in the command (cmd) field of the listen packet equals: -- `TOGGLE` - Normal QwikSwitch Transmitter button -- `SCENE EXE` - QwikSwitch Scene Transmitter buttons -- `LEVEL` - QwikSwitch OFF Transmitter buttons - -The list of recognized commands can be extended for Keyfobs, door sensors, and PIR transmitters with the **button_events** configuration option. **button_events** can be a list or comma separated list of additional commands that will fire Home Assistant events. By default, it is: TOGGLE,SCENE EXE,LEVEL. - -On some QS Mobile servers button events are only generated for switches added to the QS Mobile application, so it might be best to test button presses through the `/&listen` API - -### {% linkable_title Qwikswitch Sensors %} - -The sensor configuration is a list of sensors. Depending on the type, it will be a sensor or binary_sensor. Each sensor is configured with the following parameters: - -- **name** (*Required*): The sensor name from which the entity_id will be derived. -- **id** (*Required*): A QS_Id -- **type** (*Required*): The Qwikswitch sensor type. These could include: - - imod (binary_sensor, up to 6 channels) - - door (binary_sensor, single channel) - - qwikcord (Channel 1 = CTavg, Channel 2 = CTsum) -- **channel** (*Optional, default=1*): The channel of interest. Refer to type above. - -The following parameters are only applicabe to binary_sensors (i.e. door/imod). -- **invert** (*Optional, default=False): Invert the open/close state. -- **class** (*Optional, default=door): The [class](https://www.home-assistant.io/components/binary_sensor) or binary_sensor. - -Example sensor configuration: - -```yaml -qwikswitch: - ... - sensors: - - name: door sensor - id: "@id03" - type: door - - name: Imod 1 sensor - id: "@id02" - channel: 1 - type: imod - - name: Imod 2 sensor - id: "@id02" - channel: 2 - type: imod -``` diff --git a/source/_components/rainbird.markdown b/source/_components/rainbird.markdown deleted file mode 100644 index 95c7b9b0d9..0000000000 --- a/source/_components/rainbird.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Rain Bird" -description: "Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant." -date: 2017-12-07 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: rainbird.png -ha_category: Hub -ha_release: 0.61 -ha_iot_class: "Local Polling" ---- - -This `rainbird` component 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 it, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -rainbird: - host: IP_ADDRESS_OF_MODULE - password: YOUR_PASSWORD -``` - -{% configuration %} -host: - description: v - required: true - type: string -password: - description: The password for accessing the module. - required: true - type: string -{% endconfiguration %} - -Finish its configuration by visiting the [Rain Bird sensor](/components/sensor.rainbird/) and [Rain Bird switch](/components/switch.rainbird/) documentation. - -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/raincloud.markdown b/source/_components/raincloud.markdown deleted file mode 100644 index 3eb377e046..0000000000 --- a/source/_components/raincloud.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -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: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username for accessing your Melnor RainCloud account. - required: true - type: string -password: - description: The password for accessing your Melnor RainCloud account. - required: true - type: string -{% endconfiguration %} - -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/rainmachine.markdown b/source/_components/rainmachine.markdown deleted file mode 100644 index e416c7f626..0000000000 --- a/source/_components/rainmachine.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "RainMachine" -description: "Instructions on how to integrate RainMachine units within Home Assistant." -date: 2018-04-25 20:32 -sidebar: true -comments: false -sharing: true -footer: true -logo: rainmachine.png -ha_category: Hub -ha_release: 0.69 -ha_iot_class: "Cloud Polling" ---- - -The `rainmachine` component is the main component to integrate all platforms -related to [RainMachine smart Wi-Fi sprinkler controllers](http://www.rainmachine.com/). - -## {% linkable_title Base Configuration %} - -To connect to your RainMachine device, add the following to your -`configuration.yaml` file: - -```yaml -rainmachine: - ip_address: 192.168.1.100 - password: YOUR_PASSWORD -``` - -To configure switch-related functionality, add configuration options beneath -a `switches` key within the `rainmachine` sections of `configuration.yaml` -as below: - -```yaml -rainmachine: - ip_address: 192.168.1.100 - password: YOUR_PASSWORD - switches: - # switch configuration options... -``` - -{% configuration %} -ip_address: - description: the IP address or hostname of your RainMachine unit - required: optional - type: string -password: - description: your RainMachine password. - required: true - type: string -port: - description: the TCP port used by your unit for the REST API - required: false - type: int - default: 8080 -ssl: - description: whether communication with the local device should occur over HTTPS - required: false - type: boolean - default: true -switches: - description: switch-related configuration options - required: false - type: map - keys: - zone_run_time: - description: the default number of seconds that a zone should run when turned on - required: false - type: int - default: 600 -{% endconfiguration %} diff --git a/source/_components/raspihats.markdown b/source/_components/raspihats.markdown deleted file mode 100644 index fbe53d3d90..0000000000 --- a/source/_components/raspihats.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Raspihats" -description: "Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant." -date: 2017-05-01 04:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspihats.png -ha_category: DIY -ha_release: 0.45 -ha_iot_class: "Local Push" ---- - -The `raspihats` component is the base for all related Raspihats platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown deleted file mode 100644 index b7410f68ea..0000000000 --- a/source/_components/recorder.markdown +++ /dev/null @@ -1,241 +0,0 @@ ---- -layout: page -title: "Recorder" -description: "Instructions on how to configure the data recorder for Home Assistant." -date: 2017-09-24 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: "History" -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/), [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`. - -To setup the `recorder` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -recorder: -``` - -{% configuration %} - recorder: - description: Enables the recorder component. Only allowed once. - required: true - type: map - keys: - db_url: - description: The URL which points to your database. - required: false - type: URL - purge_keep_days: - description: Specify the number of history days to keep in recorder database after a purge. - required: false - default: 10 - type: int - purge_interval: - description: How often (in days) the purge task runs. If a scheduled purge is missed (e.g., if Home Assistant was not running), the schedule will resume soon after Home Assistant restarts. You can use the [service](#service-purge) call `purge` when required without impacting the purge schedule. If this is set to `0` (zero), automatic purging is disabled. - required: false - default: 1 - type: int - exclude: - description: Configure which components should be excluded - required: false - type: map - keys: - domains: - description: The list of domains to be excluded from recordings. - required: false - type: List - entities: - description: The list of entity ids to be excluded from recordings. - required: false - type: List - include: - description: Configure which components should be included in recordings. If set, all other entities will not be recorded. - required: false - type: map - keys: - domains: - description: The list of domains to be included in the recordings. - required: false - type: List - entities: - description: The list of entity ids to be included in the recordings. - required: false - type: List -{% endconfiguration %} - -Define domains and entities to `exclude` (aka. blacklist). This is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains. Usually these are entities/domains which do not change (like `weblink`) or rarely change (`updater` or `automation`). - -```yaml -# Example configuration.yaml entry with exclude -recorder: - purge_keep_days: 5 - db_url: sqlite:///home/user/.homeassistant/test - exclude: - domains: - - automation - - weblink - - updater - entities: - - sun.sun # Don't record sun data - - sensor.last_boot # Comes from 'systemmonitor' sensor platform - - sensor.date -``` - -Define domains and entities to record by using the `include` configuration (aka. whitelist). If you have a lot of entities in your system and your `exclude` lists possibly get very large, it might be better just to define the entities or domains to record. - -```yaml -# Example configuration.yaml entry with include -recorder: - include: - domains: - - sensor - - switch - - media_player -``` - -Use the `include` list to define the domains/entities to record, and exclude some of them with in the `exclude` list. This makes sense if you for instance include the `sensor` domain, but want to exclude some specific sensors. Instead of adding every sensor entity to the `include` `entities` list just include the `sensor` domain and exclude the sensor entities you are not interested in. - -```yaml -# Example configuration.yaml entry with include and exclude -recorder: - include: - domains: - - sensor - - switch - - media_player - exclude: - entities: - - sensor.last_boot - - sensor.date -``` - -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 a purge task which deletes events and states older than x days, according to `keep_days` service data. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the component `purge_keep_days` configuration) -| `repack` | yes | Rewrite the entire database, possibly saving some disk space (only supported for SQLite) - -### {% linkable_title Restore State %} - -If the `recorder` component is activated then some components support `restore_state` which will restore the state of the entity after Home Assistant is started to the state before Home Assistant was stopped. Please make sure that you do not exclude the entities for which you want the state to be restored from your recordings. An incomplete list of components that currently support `restore_state`: - -* [`input_boolean`](/components/input_boolean/#restore-state) -* [`input_number`](/components/input_number/#restore-state) -* [`input_select`](/components/input_select/#restore-state) -* [`input_datetime`](/components/input_datetime/#restore-state) -* [`input_text`](/components/input_text/#restore-state) - - -## {% linkable_title Custom database engines %} - -| Database engine | `db_url` | -| :---------------|:---------------------------------------------------------| -| SQLite | `sqlite:///PATH/TO/DB_NAME` | -| MariaDB | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MariaDB         | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL           | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL (pymysql) | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL (pymysql) | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| 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` | - -

    -If you use MariaDB 10 you need to add port 3307 to the SERVER_IP, e.g., `mysql://user:password@SERVER_IP:3307/DB_NAME?charset=utf8`. - -+If you are running a database server instance on the same server as Home Assistant then you must ensure that this service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the service file. - -```bash -$ sudo nano /etc/systemd/system/home-assistant@homeassistant.service -``` - -and add the service for PostgreSQL: - -``` -[Unit] -Description=Home Assistant -After=network.target postgresql.service -``` - -Save the file then reload `systemctl`: - -```bash -$ sudo systemctl daemon-reload -``` -

    - -## {% 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 MariaDB and MySQL %} - -If you are in a virtual environment, don't forget to activate it before installing the `mysqlclient` Python package described below. - -```bash -pi@homeassistant:~ $ sudo su homeassistant -s /bin/bash -homeassistant@homeassistant:~$ source /srv/homeassistant/bin/activate -(homeassistant) homeassistant@homeassistant:~$ pip3 install mysqlclient -``` - -For MariaDB you may have to install a few dependencies. If you're using MariaDB version 10.2, libmariadbclient-dev was renamed to libmariadb-dev, please install the correct package based on your MariaDB version. - -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 default-libmysqlclient-dev libssl-dev -$ 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: - -```bash -$ 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 deleted file mode 100644 index 70abbed77e..0000000000 --- a/source/_components/remember_the_milk.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -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: - - name: your_rtm_account - api_key: - shared_secret: - -``` - -Configuration variables: - -{% configuration %} - name: - description: Name of the RTM account, as you can have several 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 Remember 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/updating tasks with service ```create_task```%} - -This component offers a new service domain ```remember_the_milk``` with the services ```_create_task```. You can call this service with the argument ```name``` and the optional parameter ```id``` to create a new task in your Remember The Milk account. You can call this service from your usual automations. - -If you set an ```id``` and a task with that id exists already, the existing task is updated, rather than creating a new task. This way you can change the name of the task. If you do not set an ```id```, a new task is created with every call. If you're using this from an automation, you could use the name of your automation as id or the entity that triggered the task to be created. This way you can later on update or complete this task. - -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). - -**Note:** -At the moment, smart syntax is *not* supported when updating tasks. All smart syntax commands are ignored during the update and will end up as normal text in the name of the task. - -|Service data attribute | Optional | Description | Example | -|-----------------------|----------|-------------|---------| -| name | no | Name of the new task, you can use the smart syntax here. | "do this ^today #from_hass" | -| id | yes | Identifier for the task you're creating, can be used to update or complete the task later on | "myid" | - -## {% linkable_title Completing tasks with service ```complete_task```%} - -Complete a tasks that was privously created from Home Assistant. You can not complete tasks that were created outside of Home Assistant. - -If you have created your task with an ```id```, calling ```_complete_task``` with the parameter ```id``` will then complete your task. - -|Service data attribute | Optional | Description | Example | -|-----------------------|----------|-------------|---------| -| id | no | Identifier that was defined when creating the task | "myid" | - -## {% linkable_title Automation example %} - -Here's an example for an automation that creates a new task whenever ```sensor.mysensor``` is ```on``` and completes it when the sensor reports ```off```. This way it reminds you to switch it off. By using the ```entity_id``` as id for the task, you can use the same rule also for multiple sensors. - - -```yaml -- id: mysensor_on - trigger: - platform: state - entity_id: sensor.mysensor - to: on - action: - - service: remember_the_milk.myaccount_create_task - data_template: - name: "Please switch of {{trigger.entity_id}}" - id: "{{trigger.entity_id}}" -- id: mysensor_off - trigger: - platform: state - entity_id: sensor.mysensor - to: off - action: - - service: remember_the_milk.myaccount_complete_task - data_template: - id: "{{trigger.entity_id}}" - -``` - - - -## {% 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 deleted file mode 100644 index 7fe3bc7f9a..0000000000 --- a/source/_components/remote.apple_tv.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Apple TV Remote" -description: "Instructions on 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 -``` diff --git a/source/_components/remote.harmony.markdown b/source/_components/remote.harmony.markdown deleted file mode 100755 index c6178d048c..0000000000 --- a/source/_components/remote.harmony.markdown +++ /dev/null @@ -1,158 +0,0 @@ ---- -layout: page -title: "Harmony Hub Remote" -description: "Instructions on how to integrate Harmony Hub remotes into Home Assistant." -date: 2016-11-05 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: logitech.png -ha_category: Remote -ha_iot_class: "Local Push" -ha_release: "0.34" ---- - - -The `harmony` remote platform allows you to control the state of your [Harmony Hub Device](http://www.logitech.com/en-us/product/harmony-hub). - -Supported units: - -- Harmony Hub -- Harmony Companion -- Harmony Pro -- Harmony Elite - -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` file: - -```yaml -# Example configuration.yaml entry -remote: - - platform: harmony - name: Bedroom - host: 10.168.1.13 -``` - -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 - activity: Watch TV -``` - -Configuration variables: - -- **name** (*Required*): The hub's name to display in the frontend. This name must match the name you have set on the Hub. -- **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 `turn_on` service is called without any data. Overrides the `activity` setting for this discovered hub. -- **delay_secs** (*Optional*): Default duration in seconds between sending commands to a device. - -Configuration file: - -Upon startup one file will be written to your Home Assistant configuration directory per device in the following format: `harmony_REMOTENAME.conf`. The file will contain: - -- List of all programmed activity names and ID numbers -- List of all programmed device names and ID numbers -- List of all available commands per programmed device - -### {% linkable_title Service `remote.turn_off` %} - -Turn off all devices that were switched on from the start of the current activity. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific remote, else target all. - -### {% linkable_title Service `remote.turn_on` %} - -Start an activity. Will start the default `activity` from configuration.yaml if no activity is specified. The specified activity can either be the activity name or the activity ID from the configuration file written to your [Home Assistant configuration directory](/docs/configuration/). - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific remote, else target all. -| `activity` | yes | Activity ID or Activity Name to start. - -### {% linkable_title Service `remote.send_command` %} - -Send a single command or a set of commands to one device, device ID and available commands are written to the configuration file at startup. You can optionally specify the number of times you wish to repeat the command(s) and delay you want between repeated command(s). - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific remote, else target all. -| `device` | no | Device ID to send the command to. -| `command` | no | A single command or a list of commands to send. -| `num_repeats` | yes | The number of times to repeat the command(s). -| `delay_secs` | yes | The number of seconds between sending each command. - -A typical service call for sending several button presses looks like this: - -```yaml -service: remote.send_command -data: - entity_id: remote.tv_room - command: - - home - - 1 - - 2 - device: 4576546 - delay_secs: 0.6 -``` - -### {% linkable_title Service `remote.harmony_sync` %} - -Synchronize the Harmony device with the Harmony web service if any changes are made from the web portal or app. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific remote, else target all. - -### {% linkable_title Examples %} - -Template sensors can be utilized to display current activity in the frontend. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - family_room: - value_template: '{{ states.remote.family_room.attributes.current_activity }}' - friendly_name: 'Family Room' - bedroom: - value_template: '{{ states.remote.bedroom.attributes.current_activity }}' - friendly_name: 'bedroom' -``` -{% endraw %} - -The example below shows how to control an `input_boolean` switch using the Harmony remote's current activity. The switch will turn on when the remote's state changes and the Kodi activity is started and off when the remote's state changes and the current activity is "PowerOff". - -{% raw %} -```yaml -automation: - - alias: "Watch TV started from harmony hub" - trigger: - platform: state - entity_id: remote.family_room - condition: - condition: template - value_template: '{{ trigger.to_state.attributes.current_activity == "Kodi" }}' - action: - service: input_boolean.turn_on - entity_id: input_boolean.notify - - alias: "PowerOff started from harmony hub" - trigger: - platform: state - entity_id: remote.family_room - condition: - condition: template - value_template: '{{ trigger.to_state.attributes.current_activity == "PowerOff" }}' - action: - service: input_boolean.turn_off - entity_id: input_boolean.notify -``` -{% endraw %} diff --git a/source/_components/remote.itach.markdown b/source/_components/remote.itach.markdown deleted file mode 100755 index 5dd51679a2..0000000000 --- a/source/_components/remote.itach.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "iTach Remote" -description: "Instructions on how to integrate a Global Caché iTach IP2IR gateway into Home Assistant." -date: 2017-2-12 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: globalcache.png -ha_category: Remote -ha_iot_class: "Assumed State" -ha_release: 0.39 ---- - - -The `itach` remote platform allows you to control IR devices with a [Global Caché iTach Device](https://www.globalcache.com/products/itach/ip2irspecs) and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page. - -In order to utilize the digital input (binary sensor) and relay (switch) features of your Global Cache device you will need to use the [gc100 component](/components/gc100) and associated platforms. - -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: - -```yaml -# Example configuration.yaml entry -remote: - - platform: itach - name: Living Room - host: itach023fdc - devices: - - name: TV - connaddr: 2 - commands: - - name: "ON" - data: "0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689" - - name: "OFF" - data: "0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689" -``` - -Configuration variables: -- **name** (*Optional*): The iTach's name to display in the front end. -- **host** (*Required*): The iTach's IP address. -- **port** (*Optional*): The iTach's port. 4998 is default. -- **devices** array (*Required*): Devices controlled by the iTach. - - **name** (*Required*): Name of the device. - - **modaddr** (*Optional*): iTach module address for the IR emitter. 1 is default. - - **connaddr** (*Required*): iTach connection location for the IR emitter. (Note connaddr is a misleading label. Do not put the connection address here. Technically the connection address is the combination of the module address plus the connection location). - - **commands** array (*Required*): Commands available to send to the device. - - **name** (*Required*): Command name. - - **data** (*Required*): Hex command data. - -An example to call the component from developer tools using the `remote.send_command` service: `{ "entity_id":"remote.tv", "command":"menu" }` - -Note: Global Cache devices expect data in their own format of "sendir...". This component converts hex code to Global Cache IR form. - -API Docs: -- [iTach](https://www.globalcache.com/files/docs/API-iTach.pdf) -- [GC-100](http://www.globalcache.com/files/docs/API-GC-100.pdf) diff --git a/source/_components/remote.kira.markdown b/source/_components/remote.kira.markdown deleted file mode 100644 index 376d29837a..0000000000 --- a/source/_components/remote.kira.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Kira Remote" -description: "Instructions on how to integrate Kira modules into Home Assistant." -date: 2017-05-07 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: keene.png -ha_category: Remote -ha_iot_class: "Assumed State" -ha_release: 0.45 ---- - -The `kira` platform allows you to send IR commands via [Kira](https://www.keene.co.uk/keene-ir-anywhere-single-worldwide.html) modules from within Home Assistant. - -For configuration information see the [Kira component](/components/kira/) documentation. diff --git a/source/_components/remote.markdown b/source/_components/remote.markdown deleted file mode 100755 index 7359fae9d2..0000000000 --- a/source/_components/remote.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Remotes" -description: "Instructions on how to setup your remotes with Home Assistant." -date: 2016-11-05 19:39 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: "0.34" ---- - -Keeps track which remotes are in your environment, their state and allows you to control them. - - * Maintains a state per remote and a combined state `all_remotes`. - * Registers services `remote/turn_on`, `remote/turn_off`, `remote/toggle`, and `remote/send_command` to control remotes. - -### {% linkable_title Use the services %} - -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"} -``` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific remote, else target all. - -See the platform documentation for each type of remote for more detailed examples. diff --git a/source/_components/remote.xiaomi_miio.markdown b/source/_components/remote.xiaomi_miio.markdown deleted file mode 100644 index 8284a73868..0000000000 --- a/source/_components/remote.xiaomi_miio.markdown +++ /dev/null @@ -1,148 +0,0 @@ ---- -layout: page -title: "Xiaomi IR Remote" -description: "Instructions for how to integrate the Xiaomi IR Remote within Home Assistant." -date: 2017-01-25 17:08 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: Remote -ha_release: 0.63 -ha_iot_class: "Local Polling" ---- - -The `xiaomi miio` remote platform allows you to send IR commands from your Xiaomi IR Remote (ChuangmiIr). - -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. - -## {% linkable_title Configuring the Platform %} - -To add a Xiaomi IR Remote to your installation, add the following to your configuration.yaml file: -```yaml -remote: - - platform: xiaomi_miio - host: 192.168.42.42 - token: YOUR_TOKEN -``` - -{% configuration %} -host: - description: The IP of your remote. - required: true - type: string -token: - description: The API token of your remote. - required: true - type: string -name: - description: The name of your remote. - required: false - type: string -slot: - description: The slot used to save learned command. - required: false - type: int - default: 1 -timeout: - description: Timeout for learning a new command. - required: false - type: int - default: 30 -hidden: - description: Hide the entity from UI. There is currently no reason to show the entity in UI as turning it off or on does nothing. - required: false - type: boolean - default: True -commands: - required: false - type: map - keys: - command: - description: A list of commands as [raw (learned command)](/components/remote.xiaomi_miio/#raw) or [pronto hex code](/components/remote.xiaomi_miio/#pronto-hex-code). - required: true - type: list - -{% endconfiguration %} - -## {% linkable_title Full Configuration %} - -```yaml -remote: - - platform: xiaomi_miio - name: "bathroom remote" - host: 192.168.42.42 - token: YOUR_TOKEN - slot: 1 - timeout: 30 - hidden: false - commands: - activate_towel_heater: - command: - - raw:base64:[optional_frequency] - read_bad_poem: - command: - - raw:base64:[optional_frequency] - - pronto:pronto_hex:[optional_repeat] -``` - -## {% linkable_title Use named commands to create UI buttons %} - -```yaml -script: - towel_heater: - sequence: - - service: remote.send_command - entity_id: 'remote.bathroom_remote' - data: - command: - - 'activate_towel_heater' - please_cover_your_ears: - sequence: - - service: remote.send_command - entity_id: 'remote.bathroom_remote' - data: - command: - - 'read_bad_poem' -``` - -## {% linkable_title Command Types %} - -The Xiaomi IR Remote Platform currently supports two different formats for IR codes. - -### {% linkable_title Raw %} - -A raw command is a command learned from [`remote.xiaomi_miio_learn_command`](/components/remote.xiaomi_miio/#remotexiaomi_miio_learn_command). - -A raw command is defined as in the following example: -`raw:Z6UFANEAAAAjAQAAAwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAE=` -with an optional last parameter of frequency: -`raw:Z6UFANEAAAAjAQAAAwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAE=:38400` - -### {% linkable_title Pronto Hex Code %} - -A pronto hex code is a hex code often supplied by the device manufacturer. - -A pronto hex code is defined as in the following example: -`pronto:0000 006C 0022 0002 015B 00AD 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0623 015B 0057 0016 0E6E` -with an optional last parameter of repeats (required by some devices): -`pronto:0000 006C 0022 0002 015B 00AD 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0041 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0016 0016 0016 0016 0016 0016 0041 0016 0016 0016 0041 0016 0016 0016 0041 0016 0041 0016 0041 0016 0041 0016 0623 015B 0057 0016 0E6E:2` - -## {% linkable_title Platform Services %} - -The Xiaomi IR Remote Platform registers two services. - -### {% linkable_title `remote.send_command` %} - -Allows sending either named commands using an identifier or sending commands as one of the two types defined in [Command Types](/components/remote.xiaomi_miio/#command-types). - -### {% linkable_title `remote.xiaomi_miio_learn_command` %} - -Used to learn new commands. - -Use the entity_id of the Xiaomi IR Remote to start a learning process. - -`slot` and `timeout` can be specified, but multiple commands learned to the same slot can still be sent using [`remote.send_command`](/components/remote.xiaomi_miio/#remotesend_command) even if they are overwritten. - -After learning the command the base64 string can be found as a notification in Overview, the string can be copied by left clicking on the string and choose the copy option. diff --git a/source/_components/rest_command.markdown b/source/_components/rest_command.markdown deleted file mode 100644 index 4475396730..0000000000 --- a/source/_components/rest_command.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "RESTful Command" -description: "Instructions on how to integrate REST commands into Home Assistant." -date: 2018-02-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: restful.png -ha_category: Automation -ha_release: 0.36 -ha_iot_class: "Local Push" ---- - -This component can expose regular REST commands as services. Services can be called from a [script] or in [automation]. - -[script]: /components/script/ -[automation]: /getting-started/automation/ - -To enable this switch, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -rest_command: - example_request: - url: 'http://example.com/' -``` - -Configuration variables: - -- **[service_name]** (*Required*): The name used to expose the service. E.g., in the above example, it would be `rest_command.example_request`. - - **url** (*Required*): The URL (support template) for sending request. - - **method** (*Optional*): HTTP method to use (`get`, `post`, `put`, or `delete`). Defaults to `get`. - - **headers** (*Optional*): The headers for the requests. - - **payload** (*Optional*): A string/template to send with request. - - **username** (*Optional*): The username for HTTP authentication. - - **password** (*Optional*): The password for HTTP authentication. - - **timeout** (*Optional*): Timeout for requests. Defaults to 10 seconds. - - **content_type** (*Optional*): Content type for the request. - -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 deleted file mode 100644 index a8f340c48f..0000000000 --- a/source/_components/rflink.markdown +++ /dev/null @@ -1,166 +0,0 @@ ---- -layout: page -title: "RFLink" -description: "Instructions on how to integrate RFLink gateway into Home Assistant." -date: 2016-01-04 -sidebar: true -comments: false -sharing: true -footer: true -logo: rflink.png -ha_category: Hub -ha_release: 0.38 ---- - -The `rflink` component supports devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). - -The 433 MHz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors. - -RFLink Gateway supports a number of RF frequencies, using a wide range of low-cost hardware. [Their website](http://www.rflink.nl/blog2/) provides details for various RF transmitters, receivers and transceiver modules for 433MHz, 868MHz and 2.4 GHz. - -

    - Note: Versions later than R44 add support for Ikea Ansluta, Philips Living Colors Gen1 and MySensors devices. -

    - -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: - -- Nodo RFLink Gateway V1.4/RFLink R46 - -To enable RFLink in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -rflink: - port: /dev/serial/by-id/usb-id01234 -``` - -Configuration variables: - -- **port** (*Required*): The path to RFLink USB/serial device or TCP port in TCP mode. -- **host** (*Optional*): Switches to TCP mode, connects to host instead of to USB/serial. -- **wait_for_ack** (*Optional*): Wait for RFLink to acknowledge commands sent before sending new command (slower but more reliable). Defaults to `True` -- **ignore_devices** (*Optional*): List of device id's to ignore. Supports wildcards (*) at the end. -- **reconnect_interval** (*Optional*): Time in seconds between reconnect attempts. - -Complete example: - -```yaml -# Example configuration.yaml entry -rflink: - port: /dev/serial/by-id/usb-id01234 - wait_for_ack: False - ignore_devices: - - newkaku_000001_01 - - digitech_* -``` - -### {% linkable_title TCP mode %} - -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: - -```bash -$ socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr -``` - -Other methods of exposing the serial interface over TCP are possible (eg: ESP8266 or using Arduino Wifi shield). Essentially the serial stream should be directly mapped to the TCP stream. - -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 Philips Living Colors) -

    - -

    -When re-flashing the Arduino MEGA, disconnect the ESP8266 to avoid programming difficulties. -

    - -```yaml -# Example configuration.yaml entry -rflink: - host: 192.168.0.10 - 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 %} - -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: - -```yaml -# Example configuration.yaml entry -rflink: - port: /dev/serial/by-id/usb-id01234 - wait_for_ack: False - ignore_devices: - - newkaku_000001_01 - - digitech_* - - kaku_1_* -``` - -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 or front! -

    - -### {% linkable_title Device support %} - -Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description. - -### {% 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.rflink.nl/blog2/faq#RFFind) - -### {% linkable_title Technical Overview %} - -- The`rflink` Python module is an 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](/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 %} - -For debugging purposes or context when investigating issues you can enable debug logging for Rflink with the following config snippet: - -```yaml -logger: - default: error - logs: - rflink: debug - homeassistant.components.rflink: debug -``` - -This will give you output looking like this: - -```bash -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: 20;00;Nod -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: o RadioFrequencyLink - R -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: FLink Gateway V1.1 - R45 -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] received data: ; -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] got packet: 20;00;Nodo RadioFrequencyLink - RFLink Gateway V1.1 - R45; -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] decoded packet: {'firmware': 'RFLink Gateway', 'revision': '45', 'node': 'gateway', 'protocol': 'unknown', 'hardware': 'Nodo RadioFrequencyLink', 'version': '1.1'} -17-03-07 20:12:05 DEBUG (MainThread) [rflink.protocol] got event: {'version': '1.1', 'firmware': 'RFLink Gateway', 'revision': '45', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'} -17-03-07 20:12:05 DEBUG (MainThread) [homeassistant.components.rflink] event of type unknown: {'version': '1.1', 'firmware': 'RFLink Gateway', 'revision': '45', 'hardware': 'Nodo RadioFrequencyLink', 'id': 'rflink'} -``` diff --git a/source/_components/rfxtrx.markdown b/source/_components/rfxtrx.markdown deleted file mode 100644 index 046e27ac02..0000000000 --- a/source/_components/rfxtrx.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "RFXtrx" -description: "Instructions on how to integrate RFXtrx into Home Assistant." -date: 2015-10-08 10:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: rfxtrx.png -ha_category: Hub -ha_release: pre 0.7 ---- - -The `rfxtrx` component supports RFXtrx devices by [RFXCOM](http://www.rfxcom.com) which communicate in the frequency range of 433.92 MHz. - -To enable RFXtrx in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -rfxtrx: - device: PATH_TO_DEVICE -``` - -Configuration variables: - -- **device** (*Required*): The path to your device, e.g., `/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0` -- **debug** (*Optional*): If you want to receive debug output. -- **dummy** (*Optional*): Then you have need a connected drive to test your settings. Can be useful for debugging and testing. - -Supported protocols - -Not all protocols as advertised are enabled on initial setup of your transceiver. Enabling all protocols is not recommended either. Your 433.92 product not showing in the logs? Visit the RFXtrx website to [download RFXmgmr](http://www.rfxcom.com/epages/78165469.sf/nl_NL/?ObjectPath=/Shops/78165469/Categories/Downloads) and enable the required protocol. diff --git a/source/_components/ring.markdown b/source/_components/ring.markdown deleted file mode 100644 index 4daf012653..0000000000 --- a/source/_components/ring.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Ring" -description: "Instructions on how to integrate your Ring.com devices within Home Assistant." -date: 2017-04-01 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ring.png -ha_category: Hub -ha_release: 0.42 ---- - -The `ring` implementation allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant. - -Currently only doorbells are supported by this sensor. - -To enable device linked in your [Ring.com](https://ring.com/) account, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -ring: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username for accessing your Ring account. - required: true - type: string -password: - description: The password for accessing your Ring account. - required: true - type: string -{% endconfiguration %} - -Finish its configuration by visiting the [Ring binary sensor](/components/binary_sensor.ring/) or [Ring sensor](/components/sensor.ring/) documentation. diff --git a/source/_components/rpi_gpio.markdown b/source/_components/rpi_gpio.markdown deleted file mode 100644 index 31a1befde2..0000000000 --- a/source/_components/rpi_gpio.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Raspberry Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Raspberry Pi into Home Assistant." -date: 2016-08-30 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: DIY -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - -The `rpi_gpio` component is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. - diff --git a/source/_components/rpi_pfio.markdown b/source/_components/rpi_pfio.markdown deleted file mode 100644 index 1b3c4785e5..0000000000 --- a/source/_components/rpi_pfio.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "PiFace Digital I/O" -description: "Instructions on how to integrate the PiFace Digital I/O module into Home Assistant." -date: 2016-05-08 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: DIY -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. - -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 deleted file mode 100644 index 70c3bbd7f3..0000000000 --- a/source/_components/rss_feed_template.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "RSS feed template" -description: "Use this component to generate RSS feeds showing your latest data." -date: 2017-04-11 20:42 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Front end -ha_release: 0.44 ---- - -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.yaml 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 %}" - items: - - title: "Outside temperature" - description: "{% raw %}{% if is_state('sensor.temp_outside','unknown') %}---{% else %}{{states.sensor.temp_outside.state}} °C{% endif %}{% endraw %}" -``` - -Configuration variables: - -- **requires_api_password:** (*Optional*): If true and an API password is set, the password must be passed via '?api_password=...' parameter (Default: True) -- **feed_id** (*Required*): The key is used as the ID of the feed. The feed can be accessed at /api/rss_template/feed_id (example: 'garden') -- **title** (*Optional*): The title of the feed, which is parsed as [template](/topics/templating/). -- **items** (*Required*): A list of feed items. -- **items/title** (*Optional*): The title of the item, which is parsed as [template](/topics/templating/). -- **items/description** (*Optional*): The description of the item, which is parsed as [template](/topics/templating/). diff --git a/source/_components/satel_integra.markdown b/source/_components/satel_integra.markdown deleted file mode 100644 index 8e71d59e7f..0000000000 --- a/source/_components/satel_integra.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -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. Compatible with ETHM-1 Plus module with firmware version > 2.00 (version 2.04 confirmed). - -There is currently support for the following device types within Home Assistant: - -- [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 its name (does not need to match the one specified in Satel Integra alarm). For more information on the available zone types, take a look at the [Binary Sensor](/components/binary_sensor.alarmdecoder/) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.* - -List of all zone IDs can be taken from DloadX program. - -Having configured the zones, you can use them for automation, such as to react on the movement in your bedroom. -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.deconz.markdown b/source/_components/scene.deconz.markdown deleted file mode 100644 index b5fdf7fa7f..0000000000 --- a/source/_components/scene.deconz.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "deCONZ scenes" -description: "Instructions on how to integrate deCONZ scenes into Home Assistant." -date: 2017-11-19 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: deconz.jpeg -ha_category: Scene -ha_release: "0.61" -ha_iot_class: "Local Push" ---- - -See the [deCONZ main component](/components/deconz/) for configuration instructions. - -Entity Ids will be scene.group_scene_name, where group is which group the scene belongs to and the name of the scene, both group and name are defined in deCONZ. \ No newline at end of file diff --git a/source/_components/scene.hunterdouglas_powerview.markdown b/source/_components/scene.hunterdouglas_powerview.markdown deleted file mode 100644 index 2ef810a113..0000000000 --- a/source/_components/scene.hunterdouglas_powerview.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "PowerView Scenes" -description: "Instructions on how to setup Hunter Douglas PowerView scenes within Home Assistant." -date: 2016-03-11 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hunter-douglas-powerview.png -ha_category: Scene -ha_release: 0.15 ---- - -Implements the [Hunter Douglas PowerView](http://www.hunterdouglas.com/operating-systems/powerview-motorization/support) platform scene control. It queries the PowerView Hub and Home Assistant displays them as scenes. - -Scenes can be activated using the service `scene.turn_on`. - -```yaml -# Example configuration.yaml entry -scene: - platform: hunterdouglas_powerview - address: IP_ADDRESS -``` - -Configuration variables: - -- **address** (*Required*): IP address of the PowerView Hub, eg. 192.168.1.10. diff --git a/source/_components/scene.knx.markdown b/source/_components/scene.knx.markdown deleted file mode 100644 index e77b657181..0000000000 --- a/source/_components/scene.knx.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "KNX Scene" -description: "Instructions on how to integrate KNX Scenes into Home Assistant." -date: 2018-02-03 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: knx.png -ha_category: Scene -ha_release: "0.63" ---- - -The `knx` scenes platform allows you to trigger [KNX](http://www.knx.org) scenes. - -The `knx` component must be configured correctly, see [KNX Component](/components/knx). - -```yaml -# Example configuration.yaml entry -scene: - - name: Romantic - platform: knx - address: 8/8/8 - scene_number: 23 -``` - -Configuration variables: - -- **name** (*Optional*): A name for this device used within Home Assistant. -- **address**: KNX group address of the binary sensor. -- **scene_number** KNX scene number to be activated. - - diff --git a/source/_components/scene.lifx_cloud.markdown b/source/_components/scene.lifx_cloud.markdown deleted file mode 100644 index 7b6ac7a279..0000000000 --- a/source/_components/scene.lifx_cloud.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "LIFX Cloud Scenes" -description: "Instructions on using native LIFX scenes with Home Assistant." -date: 2017-04-15 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lifx.png -ha_category: Scene -ha_release: 0.43 ---- - -The `lifx_cloud` scene platform allows you to activate the scenes that LIFX smartphone apps store in the LIFX cloud. - -```yaml -# Example configuration.yaml entry -scene: - - platform: lifx_cloud - token: YOUR_LIFX_TOKEN -``` - -Configuration variables: - -- **token** (*Required*): The API token for your LIFX Cloud account. -- **timeout** (*Optional*): Network timeout in seconds (defaults to 10). - -### Getting an API token - -You create your API token on the LIFX website: -1. Sign in to the [LIFX Cloud](https://cloud.lifx.com/) -2. Click on your e-mail address and select _Settings_ -3. Now click _Generate New Token_ -4. Enter a meaningful label, such as 'Home Assistant' -5. Click _Generate_ -6. Copy the token that now appears -7. Paste the token into the Home Assistant configuration file diff --git a/source/_components/scene.litejet.markdown b/source/_components/scene.litejet.markdown deleted file mode 100644 index 511c1cb6fa..0000000000 --- a/source/_components/scene.litejet.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "LiteJet Scenes" -description: "Instructions on how to setup LiteJet scenes within Home Assistant." -date: 2016-10-26 16:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Scene -ha_release: 0.32 ---- - -To get your LiteJet scenes working with Home Assistant, follow the instructions for the general [LiteJet component](/components/litejet/). diff --git a/source/_components/scene.lutron_caseta.markdown b/source/_components/scene.lutron_caseta.markdown deleted file mode 100644 index 7e07ed485e..0000000000 --- a/source/_components/scene.lutron_caseta.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Lutron Caseta Scene" -description: "Instructions on 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.markdown b/source/_components/scene.markdown deleted file mode 100644 index 4bf9f168f7..0000000000 --- a/source/_components/scene.markdown +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: page -title: "Scenes" -description: "Instructions on how to setup scenes within Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Organization ---- - -You can create scenes that 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. - -```yaml -# Example configuration.yaml entry -scene: - - name: Romantic - entities: - light.tv_back_light: on - light.ceiling: - state: on - xy_color: [0.33, 0.66] - brightness: 200 - - name: Movies - entities: - light.tv_back_light: - state: on - brightness: 100 - light.ceiling: off - media_player.sony_bravia_tv: - source: HDMI 1 -``` - -Configuration variables: - -- **name** (*Required*): Friendly name of scene. -- **entities** (*Required*): Entities to control. - -As you can see, there are two ways to define the states of each `entity_id`: - -- Define the `state` directly with the entity. -- Define a complex state with its attributes. - -The mapping from states to services is done with the [state helper](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/helpers/state.py#L74). So, please have a look there for available states for your scenes. - -Scenes can be activated using the service `scene.turn_on` (there is no 'scene.turn_off' service). - -```yaml -# Example automation -... -automation: - trigger: - platform: state - entity_id: device_tracker.sweetheart - from: 'not_home' - to: 'home' - action: - service: scene.turn_on - entity_id: scene.romantic -``` - -

    -Please note that the scene component currently only supports one service call per entity to achieve the state. Due to this limitation, you cannot set states belonging to different services. A workaround for this limitation is to write a script, which you then turn on in your scene. -

    diff --git a/source/_components/scene.tahoma.markdown b/source/_components/scene.tahoma.markdown deleted file mode 100644 index b5cd1c4294..0000000000 --- a/source/_components/scene.tahoma.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Tahoma Scene" -description: "Instructions on how to integrate Tahoma scenes into Home Assistant." -date: 2018-02-18 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tahoma.png -ha_category: Scene -ha_release: 0.64 ---- - -The `tahoma` scene platform lets you trigger scenes added to your Tahoma Box in Home Assistant. - -Scenes will be added automatically. Please refer to the [component](/components/tahoma/) configuration on how to setup Tahoma. diff --git a/source/_components/scene.velux.markdown b/source/_components/scene.velux.markdown deleted file mode 100644 index e94928d889..0000000000 --- a/source/_components/scene.velux.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -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/scene.vera.markdown b/source/_components/scene.vera.markdown deleted file mode 100644 index 8cef7235ec..0000000000 --- a/source/_components/scene.vera.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "Vera Scene" -description: "Instructions on how to integrate Vera Scenes into Home Assistant." -date: 2017-11-20 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Scene -ha_iot_class: "Local Push" -ha_release: "0.60" ---- - -The `vera` platform allows you to control your [Vera](http://getvera.com/) scenes from within Home Assistant. - -They will be automatically discovered if the `vera` component is loaded. - -For more configuration information see the [Vera component](/components/vera/) documentation. - diff --git a/source/_components/scene.wink.markdown b/source/_components/scene.wink.markdown deleted file mode 100644 index cf8e79cf4c..0000000000 --- a/source/_components/scene.wink.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Wink Scene" -description: "Instructions on how to setup the Wink scenes(shortcuts) within Home Assistant." -date: 2017-04-01 16:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Scene -ha_release: 0.41 -ha_iot_class: "Cloud Polling" ---- - - -The Wink scene platform allows you to control your [Wink](http://www.wink.com/) shortcuts. - -The requirement is that you have setup [Wink](/components/wink/). diff --git a/source/_components/script.markdown b/source/_components/script.markdown deleted file mode 100644 index 856b758aab..0000000000 --- a/source/_components/script.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: page -title: "Scripts" -description: "Instructions on how to setup scripts within Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -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 sequence of actions is specified using the [Home Assistant Script Syntax](/getting-started/scripts/). - -```yaml -# Example configuration.yaml entry -script: - message_temperature: - sequence: - # This is Home Assistant Script Syntax - - service: notify.notify - data_template: -          message: Current temperature is {% raw %}{{ states.sensor.temperature.state }}{% endraw %} -``` -

    -Script names (e.g., `message_temperature` in the example above) are not allowed to contain dash (minus) characters, i.e. `-`. -The preferred way to separate words for better readability is to use underscore (`_`) characters. -

    - -```yaml -script:  - # Turns on the bedroom lights and then the living room lights 1 minute later - wakeup: - alias: Wake Up - sequence: - # This is Home Assistant Script Syntax - - event: LOGBOOK_ENTRY - event_data: - name: Paulus - message: is waking up - entity_id: device_tracker.paulus - domain: light - - alias: Bedroom lights on - service: light.turn_on - data: - entity_id: group.bedroom - brightness: 100 - - delay: - # supports seconds, milliseconds, minutes, hours - minutes: 1 - - alias: Living room lights on - service: light.turn_on - data: - entity_id: group.living_room -``` - -### {% linkable_title Passing variables to scripts %} - -As part of the service, variables can be passed along to a script so they become available within templates in that script. - -There are two ways to achieve this. One way is using the generic `script.turn_on` service. To pass variables to the script with this service, call it with the desired variables: - -```yaml -# Example configuration.yaml entry -automation: - trigger: - platform: state - entity_id: light.bedroom - from: 'off' - to: 'on' - action: - service: script.turn_on - entity_id: script.notify_pushover - data: - variables: - title: 'State change' - message: 'The light is on!' -``` - -The other way is calling the script as a service directly. In this case, all service data will be made available as variables. If we apply this approach on the script above, it would look like this: - -```yaml -# Example configuration.yaml entry -automation: - trigger: - platform: state - entity_id: light.bedroom - from: 'off' - to: 'on' - action: - service: script.notify_pushover - data: - title: 'State change' - message: 'The light is on!' -``` - -Using the variables in the script requires the use of `data_template`: - -```yaml -# Example configuration.yaml entry -script: - notify_pushover: - sequence: - - condition: state - entity_id: switch.pushover_notifications - state: 'on' - - service: notify.pushover - data_template: - title: "{% raw %}{{ title }}{% endraw %}" - message: "{% raw %}{{ message }}{% endraw %}" -``` - -### {% linkable_title In the Overview %} - -Scripts in the Overview panel will be displayed with an **ACTIVATE** button if the device has no `delay:` or `wait:` statement, and as a toggle switch if it has either of those. - -This is to enable you to stop a running script. diff --git a/source/_components/scsgate.markdown b/source/_components/scsgate.markdown deleted file mode 100644 index 30fa3c975f..0000000000 --- a/source/_components/scsgate.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "SCSGate" -description: "Instructions on how to integrate SCSGate into Home Assistant." -date: 2016-01-31 19:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: bus_scs.png -ha_category: Hub -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 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: - -```yaml -# Example configuration.yaml entry -scsgate: - device: PATH_TO_DEVICE -``` - -Configuration variables: - -- **device** (*Required*): The path to your device, e.g., `/dev/ttyACM0` - -### {% linkable_title How to find the scs_id for your devices %} - -The SCSGate component relies on the [scsgate](https://github.com/flavio/scsgate) Python module. - -This module provides also a command line tool called `scs-monitor`. This program can be used to find the IDs of your lights, switches and roller shutters and produce the YAML snippet to insert into your `configuration.yaml` file. - -For more information checkout [this](http://scsgate.readthedocs.org/en/latest/?badge=latest#creation-of-a-home-assistant-configuration-file) section of `scsgate`'s documentation. diff --git a/source/_components/sensor.abode.markdown b/source/_components/sensor.abode.markdown deleted file mode 100644 index f2076b85f9..0000000000 --- a/source/_components/sensor.abode.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Abode Sensor" -description: "Instructions on 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.ads.markdown b/source/_components/sensor.ads.markdown deleted file mode 100644 index 2360ac70c3..0000000000 --- a/source/_components/sensor.ads.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "ADS Sensor" -description: "Instructions on how to integrate ADS numeric values into Home Assistant." -date: 2017-10-25 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beckhoff.png -ha_category: Sensor -ha_release: "0.60" -ha_iot_class: "Local Push" ---- - -The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT* or *BYTE*. - -To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` -file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ads - adsvar: GVL.temperature - unit_of_measurement: '°C' - adstype: int -``` - -{% configuration %} - adsvar: - required: true - description: The name of the variable which you want to access. - type: string - adstype: - required: false - description: The datatype of the ADS variable, possible values are int, uint, byte. - default: int - type: string - name: - required: false - description: An identifier for the sensor. - type: string - factor: - required: false - description: A factor that divides the stored value before displaying in Home Assistant. - default: 1 - type: integer -{% endconfiguration %} - -The *factor* can be used to implement fixed decimals. E.g., set *factor* to 100 if you want to display a fixed decimal value with two decimals. A variable value of `123` will be displayed as `1.23`. diff --git a/source/_components/sensor.airvisual.markdown b/source/_components/sensor.airvisual.markdown deleted file mode 100644 index bedf30c7d1..0000000000 --- a/source/_components/sensor.airvisual.markdown +++ /dev/null @@ -1,167 +0,0 @@ ---- -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.alarmdecoder.markdown b/source/_components/sensor.alarmdecoder.markdown deleted file mode 100644 index 770e94f1b7..0000000000 --- a/source/_components/sensor.alarmdecoder.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "AlarmDecoder Sensor" -description: "Instructions on how to integrate AlarmDecoder sensors into Home Assistant." -date: 2017-04-02 13:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: alarmdecoder.png -ha_release: 0.43 -ha_category: Sensor -ha_iot_class: "Local Push" ---- - -The `alarmdecoder` alarm control panel platform allows you to control your [AlarmDecoder](https://www.alarmdecoder.com) alarms. - -The requirement is that you have setup your [AlarmDecoder hub](/components/alarmdecoder/). diff --git a/source/_components/sensor.alpha_vantage.markdown b/source/_components/sensor.alpha_vantage.markdown deleted file mode 100644 index 25714dd5cc..0000000000 --- a/source/_components/sensor.alpha_vantage.markdown +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: page -title: "Alpha Vantage" -description: "Instructions on how to setup Alpha Vantage within Home Assistant." -date: 2017-12-02 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: alpha_vantage.png -ha_category: Finance -ha_iot_class: "Cloud Polling" -featured: false -ha_release: "0.60" ---- - -The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. This platform also provides detail about exchange rates. - -To enable the `alpha_vantage` platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: alpha_vantage - api_key: YOUR_API_KEY - symbols: - - symbol: GOOGL - name: Google - foreign_exchange: - - name: USD_EUR - from: USD - to: EUR -``` - -Either a symbol or a foreign exchange must be configured, otherwise you will not get any data. - -{% configuration %} -api_key: - description: "The API Key from [Alpha Vantage](https://www.alphavantage.co)." - required: true - type: string -symbols: - description: List of stock market symbols for given companies. - required: false - type: map - keys: - name: - description: The name of the sensor to use for the frontend. - required: false - type: string - currency: - description: The name of the sensor to use for the frontend. - required: false - type: string - default: USD - symbol: - description: The stock market symbol for the given company. - required: required - type: string -foreign_exchange: - description: List of currencies. - type: map - required: false - keys: - name: - description: The name of the sensor to use for the frontend. - required: false - type: string - from: - description: The source currency. - required: required - type: string - to: - description: The target currency. - required: required - type: string -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Google and the exchange rate for Bitcoin %} - -```yaml -sensor: - - platform: alpha_vantage - api_key: YOUR_API_KEY - symbols: - - name: Google - currency: USD - symbol: GOOGL - foreign_exchange: - - from: BTC - to: USD - name: Bitcoin -``` - diff --git a/source/_components/sensor.amcrest.markdown b/source/_components/sensor.amcrest.markdown deleted file mode 100644 index 127021a1e2..0000000000 --- a/source/_components/sensor.amcrest.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Amcrest IP Camera" -description: "Instructions on how to integrate Amcrest IP cameras sensors within Home Assistant." -date: 2017-01-13 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: amcrest.png -ha_category: Sensor -ha_release: 0.37 -ha_iot_class: "Local Polling" ---- - -To get your [Amcrest](https://amcrest.com/) cameras working within Home Assistant, please follow the instructions for the general [Amcrest component](/components/amcrest). - -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 -``` -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 deleted file mode 100644 index 35d4eefb7a..0000000000 --- a/source/_components/sensor.android_ip_webcam.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "Android IP Webcam Sensor" -description: "Instructions on how to integrate sensors for Android IP webcam within Home Assistant." -date: 2017-03-10 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: android_ip_webcam.png -ha_category: Sensor -ha_release: "0.40" -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.apcupsd.markdown b/source/_components/sensor.apcupsd.markdown deleted file mode 100644 index 54db50e752..0000000000 --- a/source/_components/sensor.apcupsd.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: page -title: "APCUPSd Sensor" -description: "Instructions on how to set up APCUPSd sensors within Home Assistant." -date: 2016-02-10 18:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: apcupsd.png -ha_release: 0.13 -ha_category: System Monitor -ha_iot_class: "Local Polling" ---- - -The `apcupsd` sensor platform allows you to monitor a UPS (battery backup) by using data from the [apcaccess](http://linux.die.net/man/8/apcaccess) command. - -To use this sensor platform, you first have to set up [apcupsd](/components/apcupsd/), and add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: apcupsd - resources: - - bcharge - - linev - - loadpct - - nominv - - nompower - - numxfers - - outputv - - status - - timeleft - - tonbatt -``` - -Configuration variables: - -- **resources** array (*Required*): Contains all entries to display. - -### {% linkable_title Example %} - -Given the following output from `apcaccess`: - -```yaml -APC : 001,051,1149 -DATE : 2016-02-09 17:13:31 +0000 -HOSTNAME : localhost -VERSION : 3.14.12 (29 March 2014) redhat -UPSNAME : netrack -CABLE : Custom Cable Smart -DRIVER : APC Smart UPS (any) -UPSMODE : Stand Alone -STARTTIME: 2016-02-09 16:06:47 +0000 -MODEL : SMART-UPS 1400 -STATUS : TRIM ONLINE -LINEV : 247.0 Volts -LOADPCT : 13.0 Percent -BCHARGE : 100.0 Percent -TIMELEFT : 104.0 Minutes -MBATTCHG : 5 Percent -MINTIMEL : 3 Minutes -MAXTIME : 0 Seconds -MAXLINEV : 249.6 Volts -MINLINEV : 244.4 Volts -OUTPUTV : 218.4 Volts -SENSE : High -DWAKE : 0 Seconds -DSHUTD : 180 Seconds -DLOWBATT : 2 Minutes -LOTRANS : 196.0 Volts -HITRANS : 253.0 Volts -RETPCT : 15.0 Percent -ITEMP : 30.6 C -ALARMDEL : Low Battery -BATTV : 27.6 Volts -LINEFREQ : 50.0 Hz -LASTXFER : High line voltage -NUMXFERS : 0 -TONBATT : 0 Seconds -CUMONBATT: 0 Seconds -XOFFBATT : N/A -SELFTEST : NO -STESTI : 336 -STATFLAG : 0x0500000A -DIPSW : 0x00 -REG1 : 0x00 -REG2 : 0x00 -REG3 : 0x00 -MANDATE : 07/13/99 -SERIALNO : GS9888761008 -BATTDATE : 13/11/15 -NOMOUTV : 230 Volts -NOMBATTV : 24.0 Volts -EXTBATTS : 0 -FIRMWARE : 70.11.I -END APC : 2016-02-09 17:13:46 +0000 -``` - -Use the (case insensitive) values from the left hand column: - -```yaml -sensor: - - platform: apcupsd - resources: - - linev - - loadpct - - itemp -``` diff --git a/source/_components/sensor.api_stream.markdown b/source/_components/sensor.api_stream.markdown deleted file mode 100644 index c363e88533..0000000000 --- a/source/_components/sensor.api_stream.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "API Stream Sensor" -description: "Instructions on how to count clients using the API stream within Home Assistant." -date: 2016-11-19 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_release: 0.33 -ha_iot_class: "Local Push" ---- - -The `api_stream` sensor platform shows how many clients are connected to the stream API - -To add the connected clients to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: api_streams -``` - diff --git a/source/_components/sensor.arduino.markdown b/source/_components/sensor.arduino.markdown deleted file mode 100644 index f7f686370a..0000000000 --- a/source/_components/sensor.arduino.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Arduino Sensor" -description: "Instructions on how to integrate Arduino boards pins as sensors within Home Assistant." -date: 2015-09-14 18:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: arduino.png -ha_category: DIY -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `arduino` sensor platform allows you to get numerical values from an analog input pin of an [Arduino](https://www.arduino.cc/) board. Usually the value is between 0 and 1024. - -To enable an Arduino sensor with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: arduino - pins: - 1: - name: Door switch - 0: - name: Brightness -``` - -{% configuration %} -pins: - description: List of pins to use. - required: true - type: map - keys: - pin_number: - description: The pin number that corresponds with the pin numbering schema of your board. - required: true - type: map - keys: - name: - default: Name that will be used in the frontend for the pin. - type: string -{% endconfiguration %} - -The 6 analog pins of an Arduino UNO are numbered from A0 to A5. - diff --git a/source/_components/sensor.arest.markdown b/source/_components/sensor.arest.markdown deleted file mode 100644 index 4f7c68732f..0000000000 --- a/source/_components/sensor.arest.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "aREST Sensor" -description: "Instructions on how to integrate aREST sensors within Home Assistant." -date: 2015-09-07 18:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: arest.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: pre 0.7 ---- - - -The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a Ethernet/Wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. - -To use your aREST enabled device in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: arest - resource: http://IP_ADDRESS - monitored_variables: - temperature: - name: temperature - pins: - A0: - name: Pin 0 analog -``` - -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 name of the device. By default *name* from the device is used. -- **monitored_variables** array (*Optional*): List of exposed variables. - - **[variable]** (*Required*): Name of the variable to monitor. - - **name** (*Optional*): The name to use for the frontend. - - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. - - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -- **pins** array (*Optional*): List of pins to monitor. Analog pins need a leading **A** for the pin number. - - **[pin]** (*Required*): Pin number to use. - - **name** (*Required*): The name of the variable you wish to monitor. - - **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. - - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. - -The variables in the `monitored_variables` array must be available in the response of the device. As a starting point you could use the one of the example sketches (eg. [Ethernet](https://raw.githubusercontent.com/marcoschwartz/aREST/master/examples/Ethernet/Ethernet.ino) for an Arduino with Ethernet shield). In those sketches are two variables (`temperature` and `humidity`) available which will act as endpoints. - -Accessing one of the endpoints (eg. http://192.168.1.10/temperature) will give you the value inside a JSON response. - -```json -{"temperature": 23, "id": "sensor01", "name": "livingroom", "connected": true} -``` - -The root will give you a JSON response that contains all variables and their current values along with some device details. - -```json -{ - "variables" : { - "temperature" : 23, - "humidity" : 82 - }, - "id" : "sensor01", - "name" : "livingroom", - "connected" : true -} -``` - -`return_value` contains the sensor's data in a JSON response for a given pin (eg. http://192.168.1.10/analog/2/ or http://192.168.1.10/digital/7/). - -```json -{"return_value": 34, "id": "sensor02", "name": "livingroom", "connected": true} -``` - diff --git a/source/_components/sensor.arlo.markdown b/source/_components/sensor.arlo.markdown deleted file mode 100644 index e5184d2ed0..0000000000 --- a/source/_components/sensor.arlo.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Arlo Sensor" -description: "Instructions on how to integrate your Netgear Arlo cameras within Home Assistant." -date: 2017-05-30 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: arlo.png -ha_category: Sensor -ha_release: "0.46" -ha_iot_class: "Cloud Polling" ---- - -To get your [Arlo](https://arlo.netgear.com/) sensors working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo). - -This platform does not support Arlo Q. - -## {% linkable_title Configuration %} - -Once you have enabled the [Arlo component](/components/arlo), add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: arlo - monitored_conditions: - - captured_today - - last_capture - - total_cameras - - battery_level - - signal_strength -``` - -Configuration variables: - -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. - - **captured_today**: Return the number of videos captured on the current day. - - **last_capture**: Return the timestamp from the last video captured by your Arlo camera. - - **total_cameras**: Return the number of recognized and active cameras linked on your Arlo account. - - **battery_level**: Return the battery level of your Arlo camera. - - **signal_strength**: Return the wireless signal strength of your Arlo camera. - -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 deleted file mode 100644 index 8a9eea544a..0000000000 --- a/source/_components/sensor.arwn.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "ARWN Sensor" -description: "Instructions on how to integrate ARWN within Home Assistant." -date: 2016-10-20 15:15 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_release: 0.31 -ha_iot_class: "Local Polling" ---- - -The `arwn` sensor platform is a client for the [Ambient Radio Weather Network](http://github.com/sdague/arwn) project. This collects weather station data and makes it available in an MQTT subtree. - -To use your ARWN setup, you must already have configured the [MQTT](mqtt) platform. Then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: arwn -``` - -Currently all temperatures, barometers, moisture, rain, and wind sensors will be displayed. diff --git a/source/_components/sensor.bbox.markdown b/source/_components/sensor.bbox.markdown deleted file mode 100644 index ec3be264ac..0000000000 --- a/source/_components/sensor.bbox.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Bbox Sensor" -description: "How to integrate Bbox Bandwidth measuring within Home Assistant." -date: 2016-10-22 01:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bbox.png -ha_category: Sensor -ha_release: 0.31 -ha_iot_class: "Local Push" ---- - -The `bbox` platform uses the [Bbox Modem Router](https://fr.wikipedia.org/wiki/Bbox/) from the French Internet provider Bouygues Telecom. Sensors are mainly bandwidth measures. - -

    -Due to third party limitation, the sensors will only be available if Home Assistant and the Bbox are on the same local area network. You can check this by going to 192.168.1.254 with your web browser. -

    - -To add Bbox sensors to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: bbox - monitored_variables: - - down_max_bandwidth - - up_max_bandwidth - - current_down_bandwidth - - current_up_bandwidth -``` - -Configuration variables: - -- **monitored_variables** array (*Required*): Sensors to display in the frontend. - - **down_max_bandwidth**: Maximum bandwidth available for download. - - **up_max_bandwidth**: Maximum bandwidth available for upload. - - **current_down_bandwidth**: Instant measure of the current used bandwidth for download. - - **current_up_bandwidth**: Instant measure of the current used bandwidth for upload. - diff --git a/source/_components/sensor.bh1750.markdown b/source/_components/sensor.bh1750.markdown deleted file mode 100644 index 4910cdfba0..0000000000 --- a/source/_components/sensor.bh1750.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: page -title: "BH1750 Light sensor" -description: "Instructions on 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.bitcoin.markdown b/source/_components/sensor.bitcoin.markdown deleted file mode 100644 index ba47bf8d9e..0000000000 --- a/source/_components/sensor.bitcoin.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: page -title: "Bitcoin" -description: "Instructions on how to integrate Bitcoin data within Home Assistant." -date: 2015-05-08 17:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: bitcoin.png -ha_category: Finance -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network. - -To add the Bitcoin sensor to your installation, add a selection of the available display options to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: bitcoin - display_options: - - exchangerate - - trade_volume_btc -``` - -{% configuration %} -currency: - description: The currency to exchange to, eg. CHF, USD, EUR, etc. - required: false - type: string - default: USD -display_options: - description: Options to display in the frontend. - required: true - type: map - keys: - exchangerate: - description: Exchange rate of 1 BTC - trade_volume_btc: - description: Trade volume - miners_revenue_usd: - description: Miners revenue - btc_mined: - description: BTC mined - trade_volume_usd: - description: Trade volume in USD - difficulty: - description: Difficulty - minutes_between_blocks: - description: Time between blocks in minutes - number_of_transactions: - description: Number of transactions - hash_rate: - description: Hash rate in PH/s - timestamp: - description: Timestamp - mined_blocks: - description: Minded Blocks - blocks_size: - description: Block size - total_fees_btc: - description: Total fees in BTC - total_btc_sent: - description: Total sent in BTC - estimated_btc_sent: - description: Estimated sent in BTC - total_btc: - description: Total of BTC - total_blocks: - description: Total Blocks - next_retarget: - description: Next retarget - estimated_transaction_volume_usd: - description: Estimated transaction volume in BTC - miners_revenue_btc: - description: Miners revenue in BTC - market_price_usd: - description: Market price in USD -{% endconfiguration %} - diff --git a/source/_components/sensor.blink.markdown b/source/_components/sensor.blink.markdown deleted file mode 100644 index 1443578137..0000000000 --- a/source/_components/sensor.blink.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Blink Sensor" -description: "Instructions for how to setup Blink sensors within Home Assistant." -date: 2017-03-05 22:13 -sidebar: true -comments: false -sharing: true -footer: true -logo: blink.png -ha_category: Sensor -ha_release: "0.40" -ha_iot_class: "Cloud Polling" ---- - -

    -To get your Blink sensors working with Home Assistant, follow the instructions for the general [Blink component](/components/blink/). -

    diff --git a/source/_components/sensor.blockchain.markdown b/source/_components/sensor.blockchain.markdown deleted file mode 100644 index 8c441ff88b..0000000000 --- a/source/_components/sensor.blockchain.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Blockchain.info" -description: "Instructions on how to integrate Blockchain.info data within Home Assistant." -date: 2017-06-01 16:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: blockchain.png -ha_category: Finance -ha_release: 0.47 -ha_iot_class: "Cloud Polling" ---- - - -The `Blockchain` sensor platform displays Bitcoin wallet balances from [blockchain.info](https://blockchain.info). - -To add the Blockchain sensor to your installation, specify a list of bitcoin addresses to watch in the `configuration.yaml` file. The sensor state will be the sum of the balances of all addresses listed. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: blockchain - addresses: - - '1BMsHFczb2vY1BMDvFGWgGU8mkWVm5fupp' - - '183J5pXWqYYsxZ7inTVw9tEpejDXyMFroe' -``` - -{% configuration %} -addresses: - description: List of bitcoin wallet addresses to watch. - required: true - type: string, list -{% endconfiguration %} - diff --git a/source/_components/sensor.bloomsky.markdown b/source/_components/sensor.bloomsky.markdown deleted file mode 100644 index 61b850de1e..0000000000 --- a/source/_components/sensor.bloomsky.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "BloomSky Sensor" -description: "Instructions on how to integrate the BloomSky sensors within Home Assistant." -date: 2016-02-03 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bloomsky.png -ha_category: Sensor -ha_release: 0.14 -ha_iot_class: "Cloud Polling" ---- - - -The `bloomsky` sensor component allows you to view the measurements made by sensors in the [BloomSky](https://www.bloomsky.com) weather station. This can work in concert with the [BloomSky camera](/components/camera.bloomsky). - -To enable these sensors in your installation, set up the [BloomSky component](/components/bloomsky) with your API key add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: bloomsky - monitored_conditions: - - Temperature - - Humidity - - Pressure - - UVIndex - - Luminance - - Voltage -``` - -Configuration variables: - -- **monitored_conditions** array (*Required*): The sensors that you wish to monitor on all of your devices. Select from these options: - - Humidity - - Luminance - - Pressure - - Temperature - - UVIndex - - Voltage - - -More conditions are available using the [BloomSky binary sensor](/components/binary_sensor.bloomsky) component. diff --git a/source/_components/sensor.bme280.markdown b/source/_components/sensor.bme280.markdown deleted file mode 100644 index 7dd524405a..0000000000 --- a/source/_components/sensor.bme280.markdown +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: page -title: "BME280 Sensor" -description: "Instructions on 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.bme680.markdown b/source/_components/sensor.bme680.markdown deleted file mode 100644 index 05d42769c1..0000000000 --- a/source/_components/sensor.bme680.markdown +++ /dev/null @@ -1,222 +0,0 @@ ---- -layout: page -title: "BME680 Sensor" -description: "Instructions on how to integrate a BME680 sensor into Home Assistant." -date: 2018-01-16 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Sensor -ha_release: 0.62 -ha_iot_class: "Local Push" ---- - - -The `bme680` sensor platform allows you to read temperature, humidity, pressure and gas resistance values of a [Bosch BME680 Environmental sensor](https://cdn-shop.adafruit.com/product-files/3660/BME680.pdf) connected via an [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. In addition, it includes a basic air quality calculation that uses gas resistance and humidity measurements to calculate a percentage based air quality measurement. - -Tested devices: - -- [Raspberry Pi](https://www.raspberrypi.org/) - -To use your BME680 sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: bme680 -``` - -{% configuration %} -name: - description: The name of the sensor - required: false - default: BME680 Sensor - type: string -i2c_bus: - description: I2C bus that the sensor is connected to. - required: false - default: 1 - type: int -i2c_address: - description: I2C address of the sensor. It is 0x76 or 0x77. - required: false - default: 0x77 - type: int -monitored_conditions: - description: Conditions to monitor. - required: false - default: - - temperature - - humidity - - pressure - - airquality - type: list - keys: - temperature: - description: Monitor temperature. - humidity: - description: Monitor relative humidity. - pressure: - description: Monitor pressure. - gas: - description: Monitor gas resistance values on the VOC sensor. - airquality: - description: Monitor air quality using the values of humidity and gas resistance and calculate a percentage based air quality measurement. -oversampling_temperature: - description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. - required: false - default: 8 - type: int -oversampling_pressure: - description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. - required: false - default: 2 - type: int -oversampling_humidity: - description: Oversampling multiplier as described in the sensor datasheet. Can be 0 (no sampling), 1, 2, 4, 8, or 16. - required: false - default: 4 - type: int -filter_size: - description: IIR filter size as described in the sensor datasheet. Can be 0 (off), 1, 3, 7, 15, 31, 63 or 127. - required: false - default: 3 - type: int -gas_heater_temperature: - description: The temperature to heat the hotplate to for gas resistance measurements as described in the sensor datasheet. Can be between 200-400°C. - required: false - default: 320 - type: int -gas_heater_duration: - description: The duration to heat the hotplate in milliseconds for gas resistance measurements as described in the sensor datasheet. Can be between 1-4032 ms. In reality, you will likely need between 80-100ms to reach a stable temperature. Using a duration greater than 1000ms is inadvisable as it will essentially result in the heater being continually on due to the 1-second update interval. - required: false - default: 150 - type: int -aq_burn_in_time: - description: The duration to perform gas resistance measurements to establish a stable baseline measurements for Air Quality calculations in seconds. The burn in time is only performed when the sensor component is first initialized. - required: false - default: 300 - type: int -aq_humidity_baseline: - description: The baseline *ideal* relative humidity value for the air quality calculations. - required: false - default: 40 - type: int -aq_humidity_bias: - description: The bias for humidity to the gas resistance measurement in the air quality calculations expressed as a percentage of the total calculation e.g., 25% hudidtity to 75% gas. - required: false - default: 25 - type: int -{% endconfiguration %} - -## {% 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 0x77), add more details to the `configuration.yaml` file: - -```yaml -# Example of customized configuration.yaml entry -sensor: - - platform: bme680 - name: BME680 Sensor - i2c_bus: 1 - i2c_address: 0x77 - monitored_conditions: - - temperature - - humidity - - pressure - - gas - - airquality - oversampling_temperature: 8 - oversampling_humidity: 2 - oversampling_pressure: 4 - filter_size: 3 - gas_heater_temperature: 320 - gas_heater_duration: 150 - aq_burn_in_time: 300 - aq_humidity_baseline: 40 - aq_humidity_bias: 25 -``` - -## {% 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.bme680_sensor_temperature: - icon: mdi:thermometer - friendly_name: Temperature - sensor.bme680_sensor_humidity: - icon: mdi:water - friendly_name: Humidity - sensor.bme680_sensor_pressure: - icon: mdi:gauge - friendly_name: Pressure - sensor.bme680_sensor_air_quality: - icon: mdi:blur - friendly_name: Air Quality -``` - -To create a group, add the following to your `group` section. - -```yaml -# Example configuration.yaml entry -group: - climate: - name: Climate - entities: - - sensor.bme680_sensor_temperature - - sensor.bme680_sensor_humidity - - sensor.bme680_sensor_pressure - - sensor.bme680_sensor_air_quality -``` - -## {% 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 to use the `smbus-cffi` module and add your _homeassistant_ user to 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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- -40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -70: -- -- -- -- -- -- -- 76 -``` - -So you can see the sensor address that you are looking for is **0x76** (there is another I2C device on that Raspberry Pi). diff --git a/source/_components/sensor.bmw_connected_drive.markdown b/source/_components/sensor.bmw_connected_drive.markdown deleted file mode 100644 index 083e5124a6..0000000000 --- a/source/_components/sensor.bmw_connected_drive.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "BMW Connected Drive Sensor" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." -date: 2018-01-10 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bmw.png -ha_category: Sensor -ha_release: 0.64 ---- - - -The `bmw_connected_drive` platform allows you to import data on your BMW into Home Assistant. - -The sensors will be automatically configured if the `bmw_connected_drive` component is configured. - -For more configuration information see the [`bmw_connected_drive` component](/components/bmw_connected_drive/) documentation. diff --git a/source/_components/sensor.bom.markdown b/source/_components/sensor.bom.markdown deleted file mode 100644 index af149f35bf..0000000000 --- a/source/_components/sensor.bom.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "BOM Australia Sensor" -description: "Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant." -date: 2016-09-13 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bom.png -ha_category: Weather -ha_release: 0.29 -ha_iot_class: "Cloud Polling" ---- - -The `bom` sensor platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) as a source for current (half-hourly) meteorological data. - -- Each sensor will be given the `device_id` of "bom [optionalname] friendlyname units" -- A name is optional but if multiple BOM weather stations are used a name will be required. -- The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half-hour. - -To add the BOM weather observation to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: bom - station: IDS60801.94675 - name: Adelaide - monitored_conditions: - - apparent_t - - cloud - - cloud_base_m - - cloud_oktas - - cloud_type_id - - cloud_type - - delta_t - - gust_kmh - - gust_kt - - air_temp - - dewpt - - press - - press_qnh - - press_msl - - press_tend - - rain_trace - - rel_hum - - sea_state - - swell_dir_worded - - swell_height - - swell_period - - vis_km - - weather - - wind_dir - - wind_spd_kmh - - wind_spd_kt -``` - -To get the station ID for any BOM station: -- Find your station on these maps: [NSW](http://www.bom.gov.au/nsw/observations/map.shtml), [QLD](http://www.bom.gov.au/qld/observations/map.shtml), [VIC](http://www.bom.gov.au/vic/observations/map.shtml), [WA](http://www.bom.gov.au/wa/observations/map.shtml), [SA](http://www.bom.gov.au/sa/observations/map.shtml), [TAS](http://www.bom.gov.au/tas/observations/map.shtml), [ACT](http://www.bom.gov.au/act/observations/canberramap.shtml), [NT](http://www.bom.gov.au/nt/observations/map.shtml). - - alternatively, from the [BOM website](http://www.bom.gov.au/), navigate to State -> Observations -> Latest Observations -> Choose the station. -- The URL will look like: http://www.bom.gov.au/products/IDx60801/[station].shtml - - For Adelaide, the URL will look like `http://www.bom.gov.au/products/IDS60801/IDS60801.94675.shtml`; the station ID is `IDS60801.94675`. - -Configuration variables: - -- **station** (*Optional*): The station ID string as identified from the BOM website. If not given, defaults to the closest station. -- **name** (*Optional*): The name you would like to give to the weather station. -- **monitored_conditions** (*Required*): A list of the conditions to monitor. - -

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

    diff --git a/source/_components/sensor.broadlink.markdown b/source/_components/sensor.broadlink.markdown deleted file mode 100644 index 4688cf2aa0..0000000000 --- a/source/_components/sensor.broadlink.markdown +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: page -title: "Broadlink RM2 and A1 sensor" -description: "Instructions on how to integrate Broadlink RM2 and/or A1 E-air sensors within Home Assistant." -date: 2016-12-03 21:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: broadlink.png -ha_category: Sensor -ha_release: 0.35 -ha_iot_class: "Local Polling" ---- - - -The `broadlink` sensor platform let you monitor data from an RM2 and A1 E-air. There is currently no support for the cloud API. - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: broadlink - host: IP_ADDRESS - mac: 'MAC_ADDRESS' - monitored_conditions: - - 'temperature' -``` - -Configuration options: - -- **host** (*Required*): The hostname/IP address to connect to. -- **mac** (*Required*): Device mac address. -- **name** (*Optional*): Default BL. Sensor name -- **update_interval** (*Optional*): Time in seconds to fetch data from sensors. Default 300. -- **timeout** (*Optional*): Timeout in seconds for the connection to the device. -- **monitored_conditions** array (*Required*): States to monitor. - - 'temperature' - - 'humidity' - - 'air_quality' - - 'light' - - 'noise' - -To set it up, add the following information to your `configuration.yaml` file: - -Obtain sensor data from an A1: - -```yaml -sensor: - - platform: broadlink - update_interval: 60 - host: IP_ADDRESS - mac: 'MAC_ADDRESS' - monitored_conditions: - - temperature - - humidity - - air_quality - - light - - noise -``` - -Obtain temperature data from an RM2: - -```yaml -sensor: - - platform: broadlink - update_interval: 60 - host: IP_ADDRESS - mac: 'MAC_ADDRESS' - monitored_conditions: - - temperature -``` - -### {% linkable_title Microsoft Windows installation %} - -

    -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](https://github.com/sfbahr/PyCrypto-Wheels) - -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 deleted file mode 100644 index 63e1f88b46..0000000000 --- a/source/_components/sensor.buienradar.markdown +++ /dev/null @@ -1,165 +0,0 @@ ---- -layout: page -title: "Buienradar Sensor" -description: "Instructions on how to integrate buienradar.nl sensor within Home Assistant." -date: 2017-05-15 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: buienradar.png -ha_category: Weather -ha_release: 0.47 -ha_iot_class: "Cloud Polling" ---- - - -The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a web service that provides detailed weather information for users in The Netherlands. The relevant weather station used will be automatically selected based on the location specified in the Home Assistant configuration (or in the buienradar weather/sensor component). A map of all available weather stations can be found [here](https://www.google.com/maps/d/embed?mid=1NivHkTGQUOs0dwQTnTMZi8Uatj0). - -The selected weather station will provide all weather data, with the exception of the forecasted precipitation. The forecasted precipitation data will be retrieved from buienradar using your actual gps-location (and not the location of the nearest weather station). - -To integrate `buienradar` with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: buienradar - monitored_conditions: - - symbol - - humidity - - temperature - - windspeed - - pressure -``` - -Configuration variables: - -- **name** (*Optional*): You can specify a name of the component, but do not have to. If you specify a name, the sensors will get an entity name of `sensor.[name]_[default sensor display name]`, for example: - - `sensor.lopik_temperature`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `temperature` is `Temperature` - - `sensor.lopik_wind_force`, since the name of the sensor is set to `lopik` and the default display name for monitored condition `windforce` is `Wind force` - - If no name is specified the sensors will be called `sensor.br_[default sensor display name]`, for example: - - `sensor.br_wind_speed`, since no name has been set for the sensor and the default display name for monitored condition `windspeed` is `Wind speed` - - `sensor.br_ground_temperature`, since no name has been set for the sensor and the default display name for monitored condition `groundtemperature` is `Ground Temperature` -- **latitude** (*Optional*): Latitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar.nl. -- **longitude** (*Optional*): Longitude to use for selection of data source location. Longitude and latitude will be taken from Home Assistant configuration, but can be overridden/changed in this component to select a different location for buienradar.nl. -- **timeframe** (*Optional*): Minutes to look ahead for precipitation forecast (5..120) [default: 60]. -- **monitored_conditions** array (*Required*): One or more conditions to display in the frontend. - - **stationname**: The name of the selected meteo-station. - - **conditioncode**: A symbol and a unique code identifying the current weather condition ([a..z]). - - **condition**: A symbol and the current weather condition (clear, cloudy, fog, rainy, snowy, lightning). - - **conditiondetailed**: A symbol and detailed current weather condition (clear, partlycloudy, cloudy, partlycloudy-fog, partlycloudy-light-rain, partlycloudy-rain, light-rain, rainy, snowy-rainy, partlycloudy-light-snow, partlycloudy-snow, light-snow, snowy, partlycloudy-lightning, lightning). - - **conditionexact**: A symbol with the full current weather condition (in English). - - **symbol**: A symbol for the current weather with the full current condition (in Dutch). - - **humidity**: The relative humidity (%). - - **temperature**: The current temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **groundtemperature**: The current ground temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **windspeed**: The wind speed in [m/s](https://en.wikipedia.org/wiki/M/s). - - **windforce**: The wind speed/force in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale). - - **winddirection**: Where the wind is coming from: N (North),Z (south), NO (North-East), etc. - - **windazimuth**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - - **pressure**: The sea-level air pressure in [hPa](https://en.wikipedia.org/wiki/Hectopascal). - - **visibility**: Visibility in meters ([m](https://en.wikipedia.org/wiki/Metre)). - - **windgust**: The wind speed of wind gusts ([m/s](https://en.wikipedia.org/wiki/M/s)). - - **precipitation**: The amount of precipitation/rain in mm/h. - - **precipitation_forecast_average**: The average expected precipitation/rain in mm/h within the given time-frame. - - **precipitation_forecast_total**: The total expected precipitation/rain in mm within the given time-frame. The total expected rain in the configured time-frame will be equal to _precipitation_forecast_total_/_timeframe_ mm/min. So, with time-frame configured to 30 minutes and a value of 5, the expected rain is 5 mm in 30 minutes, which is the same as 10 mm/h. If time-frame is set to 90 minutes and a value of 5, the expected rain is 5 mm in 90 minutes, which is equal to 3.3 mm/h. - - **irradiance**: Sun intensity in Watt per square meter ([W/m2](https://en.wikipedia.org/wiki/W/m2)). - - **temperature_1d** [[1d]](#1d): The forecasted temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **mintemp_1d** [[1d]](#1d): The forecasted minimum temperature (in [C](https://en.wikipedia.org/wiki/Celsius)). - - **rainchance_1d** [[1d]](#1d): The forecasted chance for rain (%). - - **sunchance_1d** [[1d]](#1d): The forecasted chance for sun (%). - - **rain_1d** [[1d]](#1d): The forecasted amount of rain in [mm](https://en.wikipedia.org/wiki/Millimetre). - - **snow_1d** [[1d]](#1d): The forecasted amount of snow in [cm](https://en.wikipedia.org/wiki/Centimetre). - - **windforce_1d** [[1d]](#1d): The expected windforce in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale). - - **conditioncode_1d** [[1d]](#1d): Symbol and condition code of the expected condition. - - **condition_1d** [[1d]](#1d): Symbol and expected condition. - - **conditiondetailed_1d** [[1d]](#1d): Symbol and detailed expected condition. - - **conditionexact_1d** [[1d]](#1d): Symbol and full expected condition (in English). - - **symbol_1d** [[1d]](#1d): Symbol and full expected condition (in Dutch). - - -## 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 - - groundtemperature - - windspeed - - windforce - - winddirection - - windazimuth - - pressure - - visibility - - 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.canary.markdown b/source/_components/sensor.canary.markdown deleted file mode 100644 index 25efd713e3..0000000000 --- a/source/_components/sensor.canary.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Canary Sensor" -description: "Instructions on how to integrate your Canary devices into Home Assistant." -date: 2017-12-07 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: canary.png -ha_category: Sensor -ha_release: "0.60" -ha_iot_class: "Cloud Polling" ---- - -The `canary` sensor platform allows you to integrate the sensors of your [Canary](https://canary.is) devices in Home Assistant. - -To add `canary` sensors to your installation, follow instructions in [Canary component](/components/canary/). - -Once loaded, you will see following sensors: - -* A sensor per camera that reports temperature. -* A sensor per camera that reports humidity. -* A sensor per camera that reports air quality. diff --git a/source/_components/sensor.cert_expiry.markdown b/source/_components/sensor.cert_expiry.markdown deleted file mode 100644 index 2368231893..0000000000 --- a/source/_components/sensor.cert_expiry.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Certificate Expiry" -description: "Instructions on how to set up HTTPS (SSL) certificate expiry sensors within Home Assistant." -date: 2017-04-24 14:14 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: System Monitor -ha_release: 0.44 -ha_iot_class: "depends" ---- - -The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. - -To add the Certificate Expiry sensor to your installation, add these options to `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: cert_expiry - host: home-assistant.io -``` - -Configuration variables: - -- **host** (*Required*): The host FQDN (or IP) to retrieve certificate from. -- **port** (*Optional*): The port number where the server is running. Defaults to `443`. -- **name** (*Optional*): The friendly name for the certificate. - -

    -Make sure that the URL exactly matches your endpoint or resource. -

    - diff --git a/source/_components/sensor.citybikes.markdown b/source/_components/sensor.citybikes.markdown deleted file mode 100644 index 7b4aced03a..0000000000 --- a/source/_components/sensor.citybikes.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -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.coinbase.markdown b/source/_components/sensor.coinbase.markdown deleted file mode 100644 index c506d82341..0000000000 --- a/source/_components/sensor.coinbase.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Coinbase Sensor" -description: "Instructions on how to setup Coinbase sensors within Home Assistant." -date: 2017-12-08 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: coinbase.png -ha_category: Sensor -ha_release: 0.61 ---- - -To get your coinbase sensors working with Home Assistant, follow the instructions for the general [Coinbase component](/components/coinbase/). diff --git a/source/_components/sensor.coinmarketcap.markdown b/source/_components/sensor.coinmarketcap.markdown deleted file mode 100644 index 1fc1300ab5..0000000000 --- a/source/_components/sensor.coinmarketcap.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "CoinMarketCap" -description: "Instructions on how to integrate CoinMarketCap data within Home Assistant." -date: 2016-08-31 08:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: coinmarketcap.png -ha_category: Finance -ha_release: 0.28 -ha_iot_class: "Cloud Polling" ---- - - -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`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: coinmarketcap -``` - -{% configuration %} -currency: - description: The cryptocurrency to use. - required: false - type: string - default: Bitcoin -display_currency: - description: The currency to display. - required: false - type: string - default: USD -{% endconfiguration %} - -All supported currencies can be found [here](https://coinmarketcap.com/api/). - diff --git a/source/_components/sensor.comed_hourly_pricing.markdown b/source/_components/sensor.comed_hourly_pricing.markdown deleted file mode 100644 index b371c8c197..0000000000 --- a/source/_components/sensor.comed_hourly_pricing.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "ComEd Hourly Pricing" -description: "Instructions on how to set up the ComEd Hourly Pricing sensor in Home Assistant." -date: 2017-03-02 0:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: comed.png -ha_category: Energy -ha_release: "0.40" -ha_iot_class: "Cloud Polling" ---- - -The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant. - -There are two price feeds available: the 5-minute price and current hour average price. - -To use this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: comed_hourly_pricing - monitored_feeds: - - type: five_minute - - type: current_hour_average -``` - -Configuration variables: - -- **monitored_feeds** array (*Required*): Feeds to monitor. - - **type** (*Required*): Name of the feed. - - **five_minute**: The latest 5-minute price in cents. - - **current_hour_average**: The latest current hour average price in cents. - - **name** (*Optional*): Custom name for the sensor. - - **offset** (*Optional*): The pricing feeds provide only the *supply* cost of the electricity. The offset parameter allows you to provide a fixed constant that will be added to the pricing data to provide a more accurate representation of the total electricity cost per kWh. - diff --git a/source/_components/sensor.comfoconnect.markdown b/source/_components/sensor.comfoconnect.markdown deleted file mode 100644 index 0d9400f5ce..0000000000 --- a/source/_components/sensor.comfoconnect.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Zehnder ComfoAir Q Ventilation sensors" -description: "Instructions on 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 deleted file mode 100644 index 5cc0b4d9ea..0000000000 --- a/source/_components/sensor.command_line.markdown +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: page -title: "Command line Sensor" -description: "Instructions on how to integrate command line sensors into Home Assistant." -date: 2015-09-13 10:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: command_line.png -ha_category: Sensor -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `command_line` sensor platform that issues specific commands to get data. This might become our most powerful platform as it allows anyone to integrate any type of sensor into Home Assistant that can get data from the command line. - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: command_line - command: SENSOR_COMMAND -``` - -Configuration variables: - -- **command** (*Required*): The action to take to get the value. -- **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 (defaults to 60 seconds). - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Hard drive temperature %} - -There are several ways to get the temperature of your hard drive. A simple solution is to use [hddtemp](https://savannah.nongnu.org/projects/hddtemp/). - -```bash -$ hddtemp -n /dev/sda -``` - -To use this information, the entry for a command-line sensor in the `configuration.yaml` file will look like this. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: command_line - name: HD Temperature - command: "hddtemp -n /dev/sda" - # If errors occur, remove degree symbol below - unit_of_measurement: "°C" -``` - -### {% linkable_title CPU temperature %} - -Thanks to the [`proc`](https://en.wikipedia.org/wiki/Procfs) file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your `configuration.yaml` file: - -{% raw %} -```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: '{{ value | multiply(0.001) | round(1) }}' -``` -{% endraw %} - -### {% linkable_title Monitoring failed login attempts on Home Assistant %} - -If you'd like to know how many failed login attempts are made to Home Assistant, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: command_line - name: badlogin - command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log" -``` - -Make sure to configure the [logger component](/components/logger) to monitor the [http component](/components/http/) at least the `warning` level. - -```yaml -# Example working logger settings that works -logger: - default: critical - logs: - homeassistant.components.http: warning -``` - -### {% linkable_title Details about the upstream Home Assistant release %} - -You can see directly in the frontend (**Developer tools** -> **About**) what release of Home Assistant you are running. The Home Assistant releases are available on the [Python Package Index](https://pypi.python.org/pypi). This makes it possible to get the current release. - -```yaml -sensor: - - platform: command_line - command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])" - name: HA release -``` - -### {% 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. - -```yaml -sensor: - - platform: command_line - command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)" - name: File value -``` - -### {% linkable_title Use an external script %} - -The example is doing the same as the [aREST sensor](/components/sensor.arest/) but with an external Python script. It should give you an idea about interfacing with devices which are exposing a RESTful API. - -The one-line script to retrieve a value is shown below. Of course would it be possible to use this directly in the `configuration.yaml` file but need extra care about the quotation marks. - -```bash -$ python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])" -``` - -The script (saved as `arest-value.py`) that is used looks like the example below. - -```python -#!/usr/bin/python3 -from requests import get -response = get('http://10.0.0.48/analog/2') -print(response.json()['return_value']) -``` - -To use the script you need to add something like the following to your `configuration.yaml` file. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: command_line - name: Brightness - command: "python3 /path/to/script/arest-value.py" -``` - -### {% 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. - -{% raw %} -```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" -``` -{% endraw %} diff --git a/source/_components/sensor.cpuspeed.markdown b/source/_components/sensor.cpuspeed.markdown deleted file mode 100644 index f69f014967..0000000000 --- a/source/_components/sensor.cpuspeed.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "CPU speed" -description: "Instructions on how to integrate CPU speed within Home Assistant." -date: 2015-10-15 11:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: cpu.png -ha_category: System Monitor -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - - -The `cpuspeed` sensor platform to allow you to monitor the current CPU speed. - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: cpuspeed -``` - -Configuration variables: - -- **name** (*Optional*): Name of the sensor. diff --git a/source/_components/sensor.crimereports.markdown b/source/_components/sensor.crimereports.markdown deleted file mode 100644 index 1bb1b89d05..0000000000 --- a/source/_components/sensor.crimereports.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "Crime Reports" -description: "Instructions on how to integrate CrimeReports.com into Home Assistant." -date: 2017-02-16 11:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -logo: crimereports.png -ha_release: 0.42 -ha_iot_class: "Cloud Polling" ---- - -The `crimereports` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Crime Reports](http://crimereports.com). Your regional emergency services may or may not report data. The sensor only counts incidents from the current day. - -## Configuration - -To enable this sensor, add the following lines to your `configuration.yaml`. Your `radius` should be of sufficient size to capture incidents in your area. - -```yaml -sensor: - - platform: crimereports - name: - radius: -``` - -Configuration options for the Crime Reports Sensor: - -- **name** (*Required*): Name the sensor whatever you want. -- **radius** (*Required*): Radius in meters. -- **latitude** (*Optional*): Defaults to your home zone latitude. -- **longitude** (*Optional*): Defaults to your home zone longitude. -- **include** (*Optional*): List of incident types to include. -- **exclude** (*Optional*): List of incident types to exclude. - - -## Notes - -### Area - -Crime Reports captures all incidents in a region defined by a square shape. Home Assistant zones are circular. Therefore, the region defined by a Home Assistant zone in a Crime Reports context is a square that is big enough to fit the zone circle. Practically, this means some incidents may be captured that are outside your zone. - -### Incident Types - -You can explicitly include or exclude incident types. Specifying `include`s restricts the incidents to those types. Specifying `exclude`s will return all incident types except those specified. - -These incident types are available: - -- Alarm -- Arson -- Assault -- Assault with Deadly Weapon -- Breaking & Entering -- Community Policing -- Death -- Disorder -- Drugs -- Emergency -- Family Offense -- Fire -- Homicide -- Kidnapping -- Liquor -- Missing Person -- Other -- Other Sexual Offense -- Pedestrian Stop -- Proactive Policing -- Property Crime -- Property Crime Commercial -- Property Crime Residential -- Quality of Life -- Robbery -- Sexual Assault -- Sexual Offense -- Theft -- Theft from Vehicle -- Theft of Vehicle -- Traffic -- Vehicle Recovery -- Vehicle Stop -- Weapons Offense - -### Events - -The `crimealerts` sensor fires a `crimealerts_incident` event when a new incident is detected, including the type, description, time, location, and coordinates of the incident. diff --git a/source/_components/sensor.cups.markdown b/source/_components/sensor.cups.markdown deleted file mode 100644 index 2e32f5aa0f..0000000000 --- a/source/_components/sensor.cups.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "CUPS Sensor" -description: "Instructions on how to integrate CUPS sensors into Home Assistant." -date: 2016-10-30 12:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: cups.png -ha_category: System Monitor -ha_iot_class: "Local Polling" -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 web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers". - -

    - -

    - -To enable the CUPS sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: cups - printers: - - C410 - - C430 -``` - -{% configuration %} -printers: - description: List of printers to add. - required: true - type: list -host: - description: IP address of the CUPS print server. - required: false - type: string - default: 127.0.0.1 -port: - description: Port of the CUPS print server. - required: false - type: int - default: 631 -{% endconfiguration %} - -

    -You will need to install the `python3-dev` or `python3-devel` and the development files for CUPS (`libcups2-dev` or`cups-devel`) package on your system manually (eg. `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`). -

    diff --git a/source/_components/sensor.currencylayer.markdown b/source/_components/sensor.currencylayer.markdown deleted file mode 100644 index 2c59a2a8b9..0000000000 --- a/source/_components/sensor.currencylayer.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "Currencylayer" -description: "Instructions on integrating exchange rates from https://currencylayer.com/ within Home Assistant." -date: 2016-10-26 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Finance -logo: currencylayer.png -ha_iot_class: "Cloud Polling" -ha_release: 0.32 ---- - - -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) - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: currencylayer - api_key: YOUR_API_KEY - base: USD - quote: - - EUR - - INR -``` - -{% configuration %} -api_key: - description: "The API Key from [Currencylayer](https://currencylayer.com/)." - required: true - type: string -quote: - description: The symbol(s) of the quote or target currencies. - required: false - type: string, list - default: Exchange rate -base: - description: The symbol of the base currency. - required: false - type: string - default: USD -{% endconfiguration %} - diff --git a/source/_components/sensor.daikin.markdown b/source/_components/sensor.daikin.markdown deleted file mode 100644 index 2083178160..0000000000 --- a/source/_components/sensor.daikin.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Daikin AC" -description: "Instructions on how to integrate Daikin AC(s) with Home Assistant." -date: 2017-12-03 05:00 -sidebar: True -comments: false -sharing: true -footer: true -logo: daikin.png -ha_category: Sensor -ha_release: 0.59 -ha_iot_class: "Local Polling" ---- - - -The `daikin` sensor platform integrates Daikin air conditioning systems into Home Assistant, enabling displaying the following parameters: - -- **inside temperature** -- **outside temperature** - -

    -Please note, the `daikin` platform integrates **ONLY the european versions of Daikin ACs (models BRP069A41, 42, 43, 45)** into Home Assistant. -

    - -To enable the platform manually, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: daikin - host: 10.0.0.1 - monitored_conditions: - - inside_temperature - - outside_temperature -``` - -{% configuration %} -host: - description: IP or hostname of the device. - required: true - type: string -monitored_conditions: - description: List of items you want to monitor for each device. - required: false - default: All conditions - type: list - keys: - inside_temperature: - description: The current temperature measured inside the house. - outside_temperature: - description: The current temperature measured outside the house. -{% endconfiguration %} - -

    - Please note that some AC devices may report outside temperature only when they are turned on. -

    diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown deleted file mode 100644 index 6b110a6c72..0000000000 --- a/source/_components/sensor.darksky.markdown +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: page -title: "Dark Sky Sensor" -description: "How to integrate Dark Sky within Home Assistant." -date: 2016-09-26 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dark_sky.png -ha_category: Weather -featured: false -ha_release: "0.30" -redirect_from: /components/sensor.forecast/ -ha_iot_class: "Cloud Polling" ---- - -The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. The location is based on the `longitude` and `latitude` coordinates configured in your `configuration.yaml` file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using [Google Maps](https://www.google.com/maps) and clicking on your home or [Openstreetmap](http://www.openstreetmap.org/). - -You need an API key which is free but requires [registration](https://darksky.net/dev/register). You can make up to 1000 calls per day for free which means that you could make one approximately every 86 seconds. - -

    -[Dark Sky](https://darksky.net/dev/) will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day. -

    - -To add Dark Sky to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: darksky - api_key: YOUR_API_KEY - monitored_conditions: - - summary - - icon - - nearest_storm_distance -``` - -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 `_`. -- **language** (*Optional*): The desired language of the summary properties. Valid options are - - `ar`: Arabic - - `az`: Azerbaijani - - `be`: Belarusian - - `bg`: Bulgarian - - `bs`: Bosnian - - `ca`: Catalan - - `cs`: Czech - - `da`: Danish - - `de`: German - - `el`: Greek - - `en`: English (which is the default) - - `es`: Spanish - - `et`: Estonian - - `fi`: Finnish - - `fr`: French - - `hr`: Croatian - - `hu`: Hungarian - - `id`: Indonesian - - `is`: Icelandic - - `it`: Italian - - `ja`: Japanese - - `ka`: Georgian - - `kw`: Cornish - - `nb`: Norwegian Bokmål - - `nl`: Dutch - - `pl`: Polish - - `pt`: Portuguese - - `ro`: Romanian - - `ru`: Russian - - `sk`: Slovak - - `sl`: Slovenian - - `sr`: Serbian - - `sv`: Swedish - - `tet`: Tetum - - `tr`: Turkish - - `uk`: Ukrainian - - `x-pig-latin`: Igpay Atinlay - - `zh`: simplified Chinese - - `zh-tw`: traditional Chinese -- **latitude** (*Optional*): Latitude coordinate to monitor weather of (required if **longitude** is specified), defaults to coordinates defined in your `configuration.yaml` -- **longitude** (*Optional*): Longitude coordinate to monitor weather of (required if **latitude** is specified), defaults to coordinates defined in your `configuration.yaml` -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. - - **summary**: A human-readable text summary of the current conditions. - - **precip_type**: The type of precipitation occurring. - - **precip_intensity**: The average expected intensity of precipitation occurring. - - **precip_probability**: A value between 0 and 1 which is representing the probability of precipitation. - - **precip_accumulation**: Daily snow accumulation. Returns unknown if no snow accumulation available. - - **temperature**: The current temperature. - - **apparent_temperature**: A numerical value representing the apparent (or "feels like") temperature. - - **dew_point**: The dew point. - - **wind_speed**: The wind speed. - - **wind_bearing**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - - **cloud_cover**: The percentage of sky occluded by clouds. - - **humidity**: The relative humidity. - - **pressure**: The sea-level air pressure in millibars. - - **visibility**: The average visibility. - - **ozone**: The columnar density of total atmospheric ozone in Dobson. - - **minutely_summary**: A human-readable text summary for the next hour. - - **hourly_summary**: A human-readable text summary for the next 24 hours. - - **daily_summary**: A human-readable text summary for the next 7 days. - - **temperature_max**: Today's expected high temperature. - - **temperature_min**: Today's expected low temperature. - - **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`, `uk` and `uk2`. -`auto` will let Dark Sky decide the unit system based on location. -- **update_interval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` - - Time period dictionary, e.g.: -
    update_interval:
    -        # At least one of these must be specified:
    -        days: 0
    -        hours: 0
    -        minutes: 3
    -        seconds: 30
    -        milliseconds: 0
    -    
    - -

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

    - -Details about the API are available in the [Dark Sky documentation](https://darksky.net/dev/docs). diff --git a/source/_components/sensor.deconz.markdown b/source/_components/sensor.deconz.markdown deleted file mode 100644 index 46dad20c0e..0000000000 --- a/source/_components/sensor.deconz.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: deCONZ Sensor -description: "Instructions on how to integrate Zigbee sensors from deCONZ into Home Assistant." -date: 2017-11-12 16:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: deconz.jpeg -ha_category: Sensor -ha_release: "0.61" -ha_iot_class: "Local Push" ---- - -See the [deCONZ main component](/components/deconz/) for configuration instructions. - -The following sensor types are supported: - - * Humidity sensor - * Light level sensor - * Pressure sensor - * Switches - * Temperature sensor - -Entity ids will be sensor.device_name, where device_name is defined in deCONZ. Switches aren't exposed as ordinary entities, see the [deCONZ main component](/components/deconz/) for more details. - -#### {% linkable_title Verified to be supported sensors %} - -- Humidity Sensor - - Xiaomi Aqara Humidity/Temperature Sensor - - Xiaomi MiJia Smart Temperature & Humidity Sensor -- Light Level Sensor -- Pressure Sensor -- Switches - - IKEA Trådfri Wireless Dimmer - - Philips Hue Motion Sensor - - IKEA Trådfri Remote - - Philips Hue Dimmer Switch - - Xiaomi Cube - - Xiaomi Aqara Smart Light Switch - - Xiaomi Aqara Smart Wireless Switch - - Xiaomi Smart Home Wireless Switch -- Temperature Sensor - - Xiaomi Temperature/Humidity Sensor - -#### {% linkable_title deCONZ Daylight Sensor %} - -The deCONZ Daylight sensor is a special sensor built into the deCONZ software since version 2.05.12. It is represented in Home Assistant as a sensor called sensor.daylight. The sensor's state value is a string corresponding to the phase of daylight (descriptions below taken from https://github.com/mourner/suncalc, on which the deCONZ implementation is based): - -| Sensor State | Description | -|--------------|-------------| -| sunrise_start | sunrise (top edge of the sun appears on the horizon) | -| sunrise_end | sunrise ends (bottom edge of the sun touches the horizon) | -| golden_hour_1 | morning golden hour (soft light, the best time for photography) | -| solar_noon | solar noon (sun is in the highest position) | -| golden_hour_2 | evening golden hour | -| sunset_start | sunset starts (bottom edge of the sun touches the horizon) | -| sunset_end | sunset (sun disappears below the horizon, evening civil twilight starts) | -| dusk | dusk (evening nautical twilight starts) | -| nautical_dusk | nautical dusk (evening astronomical twilight starts) | -| night_start | night starts (dark enough for astronomical observations) | -| nadir | nadir (darkest moment of the night, the sun is in the lowest position) | -| night_end | night ends (morning astronomical twilight starts) | -| nautical_dawn | nautical dawn (morning nautical twilight starts) | -| dawn | dawn (morning nautical twilight ends, morning civil twilight starts) | - -The sensor also has an attribute called "daylight" that has the value `true` when the sensor's state is `golden_hour_1`, `solar_noon`, or `golden_hour_2`, and `false` otherwise. - -These states can be used in automations as a trigger (e.g., trigger when a certain phase of daylight starts or ends) or condition (e.g., trigger only if in a certain phase of daylight). diff --git a/source/_components/sensor.deluge.markdown b/source/_components/sensor.deluge.markdown deleted file mode 100644 index d80cedf2f8..0000000000 --- a/source/_components/sensor.deluge.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Deluge Sensor" -description: "Instructions on 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.deutsche_bahn.markdown b/source/_components/sensor.deutsche_bahn.markdown deleted file mode 100644 index 6586e49452..0000000000 --- a/source/_components/sensor.deutsche_bahn.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "Deutsche Bahn" -description: "Instructions on how to integrate timetable data for traveling in Germany within Home Assistant." -date: 2015-06-02 21:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Transport -logo: db.png -ha_iot_class: "Cloud Polling" -ha_release: 0.14 ---- - - -The `deutsche_bahn` sensor will give you the departure time of the next train for the given connection. In case of a delay, the delay is also shown. Additional details are used to inform about eg. the type of the train, price, and if it is on time. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: deutsche_bahn - from: NAME_OF_START_STATION - to: NAME_OF_FINAL_STATION -``` -{% configuration %} -from: - description: The name of the start station. - required: true - type: string -to: - description: The name of the end/destination station. - required: true - type: string -only_direct: - description: Only show direct connections. - required: false - type: boolean - default: false -{% endconfiguration %} - -This sensor stores a lot of attributes which can be accessed by other sensors eg. a [template sensor](/components/sensor.template/). - -```yaml -# Example configuration.yaml entry -sensor: - platform: template - sensors: - next_departure: - value_template: '{% raw %}{{ states.sensor.munich_to_ulm.attributes.next }}{% endraw %}' - friendly_name: 'Next departure' -``` - -The data is coming from the [bahn.de](http://www.bahn.de/p/view/index.shtml) website. diff --git a/source/_components/sensor.dht.markdown b/source/_components/sensor.dht.markdown deleted file mode 100644 index 1898ab35d4..0000000000 --- a/source/_components/sensor.dht.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "DHT Sensor" -description: "Instructions on how to integrate DHTxx sensors within Home Assistant." -date: 2015-08-30 19:15 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: DIY -ha_release: 0.7 -logo: dht.png -ha_iot_class: "Local Polling" ---- - - -The `dht` sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device. - -To use your DHTxx sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: dht - sensor: DHT22 - pin: 23 - monitored_conditions: - - temperature - - humidity -``` - -Configuration variables: - -- **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*. -- **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.discogs.markdown b/source/_components/sensor.discogs.markdown deleted file mode 100644 index 281852abc7..0000000000 --- a/source/_components/sensor.discogs.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: Discogs Sensor -description: "Instructions on how to set up Discogs sensors within Home Assistant." -date: 2017-12-04 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: https://www.magneticmag.com/.image/t_share/MTQ5OTE1NzU4NTczMzk3OTYw/discogs-vinyl-record-mark.png -ha_category: Sensor -ha_release: 0.61 -logo: discogs.png -ha_iot_class: "Cloud Polling" ---- - -The `discogs` platform allows you to see the current amount of records in your [Discogs](https://discogs.com) collection. - -First, you'll need to get a personal access token from your Discogs account. -You can generate a token from your profile's [Developer settings](https://www.discogs.com/settings/developers). - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: discogs - token: YOUR_TOKEN -``` - -{% configuration %} -token: - description: The Discogs API token to use as identification to get your collection. - required: true - type: string -name: - description: Name to use in the frontend. - required: false - type: string -{% endconfiguration %} diff --git a/source/_components/sensor.dnsip.markdown b/source/_components/sensor.dnsip.markdown deleted file mode 100644 index 3eeff8b0c1..0000000000 --- a/source/_components/sensor.dnsip.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "DNS IP" -description: "Instructions on how to integrate a DNS IP sensor into Home Assistant." -date: 2017-02-25 11:05 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_iot_class: "Cloud Polling" -ha_release: "0.40" ---- - - -The `dnsip` sensor will expose an IP address, fetched via DNS resolution, as its value. There are two operational modes: - -1. When you enable the sensor with minimal configuration, it will query the [OpenDNS](https://www.opendns.com/) nameservers with the hostname `myip.opendns.com`, which will resolve to your external/public IP address. -2. If you specify a `hostname`, a regular DNS lookup will be performed, providing you the IP the hostname resolves to. - -You may also override the nameserver that is being used by setting the `resolver` parameter to any nameserver you like. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dnsip -``` - -Configuration variables: - -- **hostname** (*Optional*): The hostname for which to perform the DNS query. Default: `myip.opendns.com` (special hostname that resolves to your public IP) -- **resolver** (*Optional*): The DNS server to target the query at. Default: `208.67.222.222` (OpenDNS) -- **ipv6** (*Optional*): Set this to `true` or `false` if IPv6 should be used. When resolving the public IP, this will be the IP of the machine where Home Assistant is running on. -- **resolver_ipv6** (*Optional*): The IPv6 DNS server to target the query at. Default: `2620:0:ccc::2` (OpenDNS) -- **scan_interval** (*Optional*): Defines number of seconds for polling interval. Default: `120` seconds. - -#### {% linkable_title Extended example %} - -```yaml -# Example configuration.yaml entry -sensor: - # Own public IPv4 address - - platform: dnsip - # Resolve IP address of home-assistant.io via Google DNS - - platform: dnsip - hostname: home-assistant.io - resolver: 8.8.8.8 -``` diff --git a/source/_components/sensor.domain_expiry.markdown b/source/_components/sensor.domain_expiry.markdown deleted file mode 100644 index a70306909a..0000000000 --- a/source/_components/sensor.domain_expiry.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Domain Expiry" -description: "Instructions on how to set up Domain expiry sensors within Home Assistant." -date: 2018-04-24 14:14 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: System Monitor -ha_release: 0.69 -ha_iot_class: "depends" ---- - -The `domain_expiry` sensor gets whois information about domain and displays the expiry in days. - -To add the Domain Expiry sensor to your installation, add these options to `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: domain_expiry - domain: home-assistant.io -``` - -{% configuration %} -domain: - description: Domain name to track - required: true - type: string -name: - description: The friendly name for the certificate. - required: false - type: string - default: Domain Expiry -{% endconfiguration %} \ No newline at end of file diff --git a/source/_components/sensor.dovado.markdown b/source/_components/sensor.dovado.markdown deleted file mode 100644 index bbbd0bae3c..0000000000 --- a/source/_components/sensor.dovado.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Dovado" -description: "How to integrate Dovado sensors within Home Assistant." -date: 2016-11-05 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: System Monitor -logo: dovado.png -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - -The `dovado` platform let you monitor your router from [Dovado](http://www.dovado.com/) - -To add a Dovado sensor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dovado - username: YOUR_USERNAME - password: YOUR_PASSWORD - host: IP_ADDRESS - port: PORT - sensors: - - network -``` - -Configuration variables: - -- **username** (*Required*): Your username. -- **password** (*Required*): Your password. -- **host** (*Optional*): The IP address of your router, e.g., `192.168.1.1`. If no host is provided, the gateway for the same network as Home Assistant will automatically be used. -- **port** (*Optional*): The port number of your router, e.g., `999`. If no port is provided, the default API port (6435) will be used. -- **sensors** array (*Required*): Conditions to display in the frontend. - - **network**: Network state (3G, 4G, etc). - - **signal**: The signal strength (%). - - **download**: The download speed. - - **upload**: The upload speed. - - **sms**: Number of unread text messages - -If the router provides SMS functionality, a service for sending SMS will also be registered in Home Assistant. diff --git a/source/_components/sensor.dsmr.markdown b/source/_components/sensor.dsmr.markdown deleted file mode 100644 index 9980021de1..0000000000 --- a/source/_components/sensor.dsmr.markdown +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: page -title: "DSMR or Slimme meter" -description: "Instructions on how to integrate DSMR Smartmeter within Home Assistant." -date: 2016-11-12 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: netbeheernederland.jpg -ha_category: Energy -ha_release: 0.34 -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/) - -

    - -

    - -This component is known to work for: - -- Iskra ME382 / MT382 (DSMR 2.2) -- Landis+Gyr E350 (DMSR 4) -- Landis+Gyr ZCF110 / ZM F110 (DSMR 4.2) -- Kaifa E0026 -- Kamstrup 382JxC (DSMR 2.2) - -USB serial converters: - -- Cheap (Banggood/ebay) Generic PL2303 -- https://sites.google.com/site/nta8130p1smartmeter/webshop -- https://www.sossolutions.nl/slimme-meter-kabel - -Serial to network proxies: - -- ser2net - http://ser2net.sourceforge.net/ - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dsmr -``` - -{% 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: - -```yaml -# Example configuration.yaml entry for USB/serial connected Smartmeter -sensor: - - platform: dsmr - port: /dev/ttyUSB1 - dsmr_version: 4 - -group: - meter_readings: - name: Meter readings - entities: - - sensor.power_consumption_low - - sensor.power_consumption_normal - - sensor.power_production_low - - sensor.power_production_normal - - sensor.gas_consumption -``` - -```yaml -# Example configuration.yaml entry for remote (TCP/IP, i.e. via ser2net) connection to host which is connected to Smartmeter -sensor: - - platform: dsmr - host: 192.168.1.13 - port: 2001 - dsmr_version: 4 - -group: - meter_readings: - name: Meter readings - entities: - - sensor.power_consumption_low - - sensor.power_consumption_normal - - sensor.power_production_low - - sensor.power_production_normal - - sensor.gas_consumption -``` - -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 -``` -or -```sh -# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv2.2 smart meters -2001:raw:600:/dev/ttyUSB0:9600 EVEN 1STOPBIT 7DATABITS XONXOFF LOCAL -RTSCTS -``` - -[HASSbian](/getting-started/installation-raspberry-pi-image/) users have to give dialout permission to the user `homeassistant`: - -``` -$ sudo usermod -a -G dialout homeassistant -``` - -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 an asynchronous reading loop using the `dsmr_parser` module which waits for a complete telegram, parser it and puts it on an async queue as a dictionary of `obis`/object mapping. The numeric value and unit of each value can be read from the objects attributes. Because the `obis` are know for each DSMR version the Entities for this component are create during bootstrap. - -Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated. - diff --git a/source/_components/sensor.dte_energy_bridge.markdown b/source/_components/sensor.dte_energy_bridge.markdown deleted file mode 100644 index 80028de606..0000000000 --- a/source/_components/sensor.dte_energy_bridge.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "DTE Energy Bridge" -description: "Instructions on how to setup DTE Energy Bridge with Home Assistant." -date: 2016-06-07 08:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: dte_energy.png -ha_category: Energy -ha_release: 0.21 -ha_iot_class: "Local Polling" ---- - -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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dte_energy_bridge - ip: 192.168.1.11 -``` - -Configuration variables: - -- **ip** (*Required*): The IP address of your bridge. -- **name** (*Optional*): Name to use in the frontend. -- **version** (*Optional*): Hardware version of the sensor. Defaults to 1. diff --git a/source/_components/sensor.dublin_bus_transport.markdown b/source/_components/sensor.dublin_bus_transport.markdown deleted file mode 100644 index 6c32206895..0000000000 --- a/source/_components/sensor.dublin_bus_transport.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Dublin Bus Transport" -description: "Instructions on how to integrate timetable data for traveling on Dublin Bus within Home Assistant." -date: 2017-01-09 21:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: dublin_bus.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: 0.36 ---- - - -The `dublin_bus_transport` sensor will give you the time until the next two departures from a Dublin bus stop using the RTPI information. - -The [Dublin Bus](https://www.dublinbus.ie/RTPI/) website can help to determine the id of your bus stop. You can check if this is correct by going to - -https://data.dublinked.ie/cgi-bin/rtpi/realtimebusinformation?stopid=[Stop ID] - -Then add the data to your `configuration.yaml` file as shown in the example: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dublin_bus_transport - stopid: STOP_ID -``` - -Configuration variables: - -- **stopid** (*Required*): The ID of the bus stop to get the information for. -- **route** (*Optional*): Only show a single bus route at the stop. This is the same as the bus number, e.g., `83`. -- **name** (*Optional*): A friendly name for this sensor. - -The public RTPI information is coming from [Dub Linked](https://data.dublinked.ie/). diff --git a/source/_components/sensor.dwd_weather_warnings.markdown b/source/_components/sensor.dwd_weather_warnings.markdown deleted file mode 100644 index 2965c00926..0000000000 --- a/source/_components/sensor.dwd_weather_warnings.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -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 deleted file mode 100644 index 1bc81d27e6..0000000000 --- a/source/_components/sensor.dweet.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: page -title: "Dweet.io" -description: "Instructions on how to integrate Dweet.io sensors within Home Assistant." -date: 2015-12-10 10:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: dweet.png -ha_category: Sensor -ha_release: "0.10" -ha_iot_class: "Cloud Polling" ---- - -The `dweet` sensor platform allows you to get details from your devices which are publishing their values to [Dweet.io](https://dweet.io/). - -To use Dweet.io in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dweet - device: THING_NAME - value_template: '{% raw %}{{ value_json.VARIABLE }}{% endraw %}' -``` - -Configuration variables: - -- **device** (*Required*): Identification of the device (also known as `thing`). -- **value_template** (*Required*): The variable to extract a value from the content. -- **name** (*Optional*): Let you overwrite the name of the device in the frontend. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. - -### {% linkable_title Full configuration sample %} - -A full configuration entry could look like the sample below. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: dweet - name: Temperature - device: THING_NAME - value_template: '{% raw %}{{ value_json.VARIABLE }}{% endraw %}' - unit_of_measurement: "°C" -``` - -### {% linkable_title Interacting with Dweet.io %} - -You can easily send dweets from the command-line to test your sensor with `curl`. - -```bash -$ curl -H 'Content-Type: application/json' -d '{"temperature": 40, "humidity": 65}' https://dweet.io/dweet/for/ha-sensor -``` -will give you a response like the one below: - -```json -{"this":"succeeded","by":"dweeting","the":"dweet","with":{"thing":"ha-sensor","created":"2015-12-10T09:43:31.133Z","content":{"temperature":40,"humidity":65}}} -``` - -The [dweepy](https://github.com/paddycarey/dweepy) module gives you another option to work with [Dweet.io](https://dweet.io/). - -Send a dweet. - -```bash -$ python3 ->>> import dweepy ->>> dweepy.dweet_for('ha-sensor', {'temperature': '23', 'humiditiy':'81'}) -{'thing': 'ha-sensor', 'created': '2015-12-10T09:46:08.559Z', 'content': {'humiditiy': 81, 'temperature': 23}} -``` - -Receive the latest dweet. - -```bash ->>> dweepy.get_latest_dweet_for('ha-sensor') -[{'thing': 'ha-sensor'', 'created': '2015-12-10T09:43:31.133Z', 'content': {'humidity': 65, 'temperature': 40}}] -``` - diff --git a/source/_components/sensor.dyson.markdown b/source/_components/sensor.dyson.markdown deleted file mode 100644 index 022d778ceb..0000000000 --- a/source/_components/sensor.dyson.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Dyson Purifier Sensor" -description: "Instructions on how to setup the Dyson Purifier fans within Home Assistant." -date: 2017-05-27 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dyson.png -ha_category: Sensor -ha_iot_class: "Cloud Polling" -ha_release: 0.47 ---- - - -The `dyson` sensor platform allows you to control your Dyson Purifier's filter life time. - -You have first to setup the [Dyson component](/components/dyson/) - -### {% linkable_title Supported fan devices %} - -- Pure Cool link (desk and tower) -- Pure Hot+cool link (but heating is not yet supported) diff --git a/source/_components/sensor.ebox.markdown b/source/_components/sensor.ebox.markdown deleted file mode 100644 index d2ad1a9cb5..0000000000 --- a/source/_components/sensor.ebox.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "EBox" -description: "Instructions on how to integrate EBox data usage within Home Assistant." -date: 2017-02-15 17:17 -sidebar: true -comments: false -sharing: true -footer: true -logo: ebox.png -ha_category: Sensor -ha_release: 0.39 -ha_iot_class: "Cloud Polling" ---- - -Integrate your [EBox](https://client.ebox.ca/) account information into Home Assistant. - -To use your EBox sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ebox - username: MYUSERNAME - password: MYPASSWORD - monitored_variables: - - before_offpeak_download - - before_offpeak_upload - - before_offpeak_total -``` - -Configuration variables: - -- **username** (*Required*): Your EBox username. -- **password** (*Required*): Your EBox password. -- **monitored_variables** array (*Required*): Variables to monitor. - - **before_offpeak_download**: Download before offpeak usage - - **before_offpeak_upload**: Upload before offpeak usage - - **before_offpeak_total**: Total before offpeak usage - - **offpeak_download**: Download offpeak usage - - **offpeak_upload**: Upload offpeak usage - - **offpeak_total**: Total offpeak usage - - **download**: Download usage - - **upload**: Upload usage - - **total**: Total usage - - **balance**: Account balance - - **limit**: Limit usage - - **usage**: Percent usage diff --git a/source/_components/sensor.ecobee.markdown b/source/_components/sensor.ecobee.markdown deleted file mode 100644 index 19491a566e..0000000000 --- a/source/_components/sensor.ecobee.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Ecobee Sensor" -description: "Instructions on 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 deleted file mode 100644 index 4d5aacbbc2..0000000000 --- a/source/_components/sensor.eddystone_temperature.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Eddystone Beacon" -description: "Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data." -date: 2017-03-26 01:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eddystone.png -ha_category: DIY -ha_release: 0.42 -ha_iot_class: "Local Polling" ---- - -The `eddystone_temperature` sensor platform reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). -All beacons that support the Eddystone protocol, have a temperature sensor and can transmit TLM frames are compatible with this platform. For example [Gimbal](https://store.gimbal.com/collections/beacons/), [Estimote](http://estimote.com/) or [kontakt.io](https://kontakt.io/). For more manufacturers see [this overview](https://developers.google.com/beacons/eddystone#beacon_manufacturers) by Google. - -## Requirements - -As this platform uses `bluez` to scan for Bluetooth LE devices **a Linux OS with bluez installed** is required. In addition to that, the `libbluetooth` headers need to be installed: - -```bash -$ sudo apt-get install libbluetooth-dev -``` - -Scanning for Bluetooth LE devices also requires special permissions. To grant these to the python executable execute the following: - -```bash -$ sudo apt-get install libcap2-bin -$ sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which python3)) -``` - -To use your Eddystone beacon in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: eddystone_temperature - bt_device_id: 0 # optional - beacons: - living_room: - namespace: "112233445566778899AA" - instance: "000000000001" - kitchen: - namespace: "112233445566778899AA" - instance: "000000000002" -``` -Configuration variables: -- **bt_device_id** (*Optional*): The id of the Bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev` (default: 0). -- **beacons** array (*Required*): The beacons that should be monitored. - - **[entry]** (*Required*): Name of the beacon. - - **namespace** (*Required*): Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long. - - **instance** (*Required*): Instance ID of the beacon in hexadecimal notation. Must be exactly 12 characters (6 bytes) long. - - **name** (*Optional*): Friendly name of the beacon. diff --git a/source/_components/sensor.efergy.markdown b/source/_components/sensor.efergy.markdown deleted file mode 100644 index 3fed31f58d..0000000000 --- a/source/_components/sensor.efergy.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Efergy" -description: "Instructions on how to integrate Efergy devices within Home Assistant." -date: 2015-07-11 0:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: efergy.png -ha_category: Energy -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -Integrate your [Efergy](https://efergy.com) meter information into Home Assistant. To get an app token: - -1. Log in to your efergy account - -2. Go to the Settings page - -3. Click on App tokens - -4. Click "Add token" - -```yaml -# Example configuration.yaml entry -sensor: - - platform: efergy - app_token: APP_TOKEN - utc_offset: UTC_OFFSET - monitored_variables: - - type: instant_readings - - type: budget - - type: cost - period: day - currency: $ - - type: amount - period: day - - type: current_values -``` - -Configuration variables: - -- **app_token** (*Required*): The App Token for your account. -- **utc_offset** (*Required*): Some variables (currently only the daily_cost) require that the -negative number of minutes your timezone is ahead/behind UTC time. -- **monitored_variables** array (*Required*): Variables to monitor. - - **type** (*Required*): Name of the variable. - - **instant_readings**: Instant energy consumption. - - **budget**: Monthly budget. - - **cost**: The cost for energy consumption (with the tariff that has been set in Efergy) over a given period. - - **amount**: The amount of energy consumed over a given period. - - **current_values**: This returns the current energy usage of each device on your account, as efergy_\. If you only have one device in your account, this is effectively the same as instant_readings. - - **period** (*Optional*): Some variables take a period argument. Valid options are "day", "week", "month", and "year". - - **currency** (*Optional*): This is used to display the cost/period as the unit when monitoring the cost. It should correspond to the actual currency used in your dashboard. - diff --git a/source/_components/sensor.eight_sleep.markdown b/source/_components/sensor.eight_sleep.markdown deleted file mode 100644 index 2d78d94f70..0000000000 --- a/source/_components/sensor.eight_sleep.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Eight Sleep Sensor" -description: "Instructions on how to integrate sensors for Eight Sleep within Home Assistant." -date: 2017-04-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eight_sleep.png -ha_category: Sensor -ha_release: "0.44" -ha_iot_class: "Cloud Polling" ---- - - -The `eight_sleep` sensor platform lets you observe states of [Eight Sleep](https://eightsleep.com/) sensors through Home Assistant. This includes bed state and results of the current and previous sleep sessions. - -Devices will be configured automatically. Please refer to the [component](/components/eight_sleep/) configuration on how to setup. diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/sensor.eliqonline.markdown deleted file mode 100644 index b87f019f0e..0000000000 --- a/source/_components/sensor.eliqonline.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Eliqonline" -description: "Instructions on how to integrate Eliqonline devices within Home Assistant." -date: 2015-07-11 0:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: eliq.png -ha_category: Energy -ha_release: "0.10" -ha_iot_class: "Cloud Polling" ---- - - -Integrate your [ELIQ Online](http://eliq.io) smart meter information into Home Assistant. To get an [access token](https://my.eliq.io/user/settings/api) and the [Channel ID](https://my.eliq.io/user/settings/locations), log in to your account. - -To enable this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: eliqonline - access_token: ACCESS_TOKEN - channel_id: CHANNEL_ID -``` - -Configuration variables: - -- **access_token** (*Required*): The Access Token for your account. -- **channel_id** (*Required*): Channel ID (as integer) of your device. -- **name** (*Optional*): The name of the sensor, eg. the city. - -For details please check the [API documentation](https://eliq.zendesk.com/hc/en-us/articles/115002708449-API-Eliq-Online). - diff --git a/source/_components/sensor.emoncms.markdown b/source/_components/sensor.emoncms.markdown deleted file mode 100644 index a15c508199..0000000000 --- a/source/_components/sensor.emoncms.markdown +++ /dev/null @@ -1,143 +0,0 @@ ---- -layout: page -title: "Emoncms Sensor" -description: "Instructions on how to integrate Emoncms feeds as sensors into Home Assistant." -date: 2016-09-08 00:15 -logo: emoncms.png -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_release: 0.29 -ha_iot_class: "Local Polling" ---- - - -The `emoncms` sensor platform creates sensors for the feeds available in your local or cloud based version of [Emoncms](https://emoncms.org). - -To enable this sensor, add the following lines to your `configuration.yaml`, it will list all feeds as a sensor: - -```yaml -# Example configuration.yaml entry using cloud based Emoncms -sensor: - platform: emoncms - api_key: API_KEY - url: https://emoncms.org - id: 1 -``` - -## {% linkable_title Configuration variables %} - -- **api_key** (*Required*): The read API key for your Emoncms user. -- **url** (*Required*): The base URL of Emoncms, use "https://emoncms.org" for the cloud based version. -- **id** (*Required*): Positive integer identifier for the sensor. Must be unique if you specify multiple Emoncms sensors. -- **include_only_feed_id** (*Optional*): Positive integer list of Emoncms feed IDs. Only the feeds with feed IDs specified here will be displayed. Can not be specified if `exclude_feed_id` is specified. -- **exclude_feed_id** (*Optional*): Positive integer list of Emoncms feed IDs. All the feeds will be displayed as sensors except the ones listed here. Can not be specified if `include_only_feed_id` is specified. -- **sensor_names** (*Optional*): Dictionary of names for the sensors created that are created based on feed ID. The dictionary consists of `feedid: name` pairs. Sensors for feeds with their feed ID mentioned here will get the chosen name instead of the default name -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to alter the feed value. -- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of for all the sensors. default is "W". - -## {% linkable_title Default naming scheme %} - -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 %} - -In this section you find some more examples of how this sensor can be used. - -Display only feeds with their feed IDs specified in `include_only_feed_id`. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: emoncms - api_key: API_KEY - url: https://emoncms.org - id: 1 - unit_of_measurement: "W" - include_only_feed_id: - - 107 - - 105 -``` - -Display all feeds except feeds with their feed id specified in `exclude_feed_id`. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: emoncms - api_key: API_KEY - url: https://emoncms.org - id: 1 - unit_of_measurement: "KWH" - exclude_feed_id: - - 107 - - 105 -``` - -Display only feeds with their feed id's specified in `include_only_feed_id` and give the feed sensors a name using "sensor_names". You don't have to specify all feeds names in "sensor_names", the remaining sensor names will be chosen based on "id" and the Emoncms `feedid`. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: emoncms - api_key: API_KEY - url: https://emoncms.org - id: 1 - unit_of_measurement: "KW" - include_only_feed_id: - - 5 - - 120 - sensor_names: - 5: "feed 1" - 48: "kWh feed" - 61: "amp feed" - 110: "watt feed" -``` - -Use a `value_template` to add 1500 to the feed value for all specified feed IDs in `include_feed_id`. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: emoncms - api_key: API_KEY - url: https://emoncms.org - scan_interval: 15 - id: 1 - value_template: {% raw %}"{{ value | float + 1500 }}"{% endraw %} - include_only_feed_id: - - 107 - - 106 -``` - -Display feeds from the same Emoncms instance with 2 groups of feeds, different `scan_interval` and a different `unit_of_measurement`. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: emoncms - api_key: API_KEY - url: https://emoncms.org - scan_interval: 30 - id: 1 - unit_of_measurement: "W" - include_only_feed_id: - - 107 - - 106 - - platform: emoncms - api_key: put your emoncms read api key here - url: https://emoncms.org - id: 2 - scan_interval: 60 - unit_of_measurement: "A" - include_only_feed_id: - - 108 - - 61 -``` diff --git a/source/_components/sensor.enocean.markdown b/source/_components/sensor.enocean.markdown deleted file mode 100644 index 669c07825a..0000000000 --- a/source/_components/sensor.enocean.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "EnOcean Sensor" -description: "Instructions on how to integrate TellStick sensors into Home Assistant." -date: 2016-05-26 01:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: enocean.png -ha_category: Sensor -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - - -The `enocean` sensor platform currently only allows reading out the power measured in a Permundo PSC234 switch. - -To use your EnOcean device, you first have to set up your [EnOcean hub](../enocean) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - name: Television - platform: enocean - id: [0x01,0x90,0x84,0x3C] -``` - -Configuration variables: - -- **id** (*Required*): The ID of the device. This is a 4 bytes long number. -- **platform** (*Required*): Set to `enocean`. -- **name** (*Required*): An identifier for the switch diff --git a/source/_components/sensor.envirophat.markdown b/source/_components/sensor.envirophat.markdown deleted file mode 100644 index 9863a4ab3b..0000000000 --- a/source/_components/sensor.envirophat.markdown +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: page -title: "Enviro pHAT" -description: "Instructions on how to integrate the Enviro pHAT within Home Assistant." -date: 2017-05-03 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Sensor -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 features a wide range of sensors, such as: - -- BMP280 temperature/pressure sensor -- TCS3472 light and RGB color sensor with two LEDs for illumination -- LSM303D accelerometer/magnetometer sensor -- ADS1015 4-channel 3.3v, analog to digital sensor (ADC) - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry, -# which is equivalent to the default setup -sensor: - - platform: envirophat - use_led: false - display_options: - - temperature - - pressure - - light - - light_red - - light_green - - light_blue - - accelerometer_x - - accelerometer_y - - accelerometer_z - - magnetometer_x - - magnetometer_y - - magnetometer_z - - voltage_0 - - voltage_1 - - voltage_2 - - voltage_3 -``` - -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 might affect the accuracy of the reading (ie. the Pi might heat up the sensor) - - **pressure**: atmospheric pressure in hPa. - - **light**: ambient light, as an integer in the 0-65535 range - - **light_red**: red color reading scaled to the ambient light, as an integer in the 0-255 range - - **light_green**: green color reading scaled to the ambient light, as an integer in the 0-255 range - - **light_blue**: blue color reading scaled to the ambient light, as an integer in the 0-255 range - - **accelerometer_x**: accelerometer reading in units of G, along the X axis - - **accelerometer_y**: accelerometer reading in units of G, along the Y axis - - **accelerometer_z**: accelerometer reading in units of G, along the Z axis - - **magnetometer_x**: magnetometer reading, the X component of the raw vector - - **magnetometer_y**: magnetometer reading, the Y component of the raw vector - - **magnetometer_z**: magnetometer reading, the X component of the raw vector - - **voltage_0**: voltage reading on Analog In 0 in units of V - - **voltage_1**: voltage reading on Analog In 1 in units of V - - **voltage_2**: voltage reading on Analog In 2 in units of V - - **voltage_3**: voltage reading on Analog In 3 in units of V -- **use_led** (*Optional*) True / False boolean; Default value is False, declaring that the on-board LEDs are *not* used for the color measurements thus these readings are based on the ambient light. If the value is set to True, the on-board LEDs will blink whenever a reading is taken. - -### Notes - -* **X, Y, Z axes** - * X is parallel with the long edge of the board - * Y is parallel with the short edge of the board - * Z is perpendicular to the board -* **Voltages** - * voltage readings are done in the 0-3.3V range, please do not connect higher voltages than that! See the [Enviro pHAT's getting started guide](https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-enviro-phat) regarding how to make a voltage divider - -### Give the values friendly names & icons - -Add something like the following to your [customize section](/docs/configuration/customizing-devices/): - -```yaml -# Example configuration.yaml entry - customize: - sensor.accelerometer_z: - icon: mdi:airplane-landing - friendly_name: "Acc Z" - sensor.magnetometer_x: - icon: mdi:arrow-up-bold-hexagon-outline - friendly_name: "Magnetic X" - sensor.pressure: - icon: mdi:weight - friendly_name: "Pressure" -``` - -### Create groups - -```yaml -# Example configuration.yaml entry -group: - enviro_phat_voltages: - name: Enviro pHAT Voltages` - entities: - - sensor.voltage_0 - - sensor.voltage_1 - - sensor.voltage_2 - - sensor.voltage_3 -``` - -### Enabling the required `i2c-1` device - -Since the Enviro pHAT communicates over I2C, you might also need to make sure that the I2C devices are enabled, by adding or uncommenting the following line in `/boot/config.txt` (see the [DT Parameters section](https://www.raspberrypi.org/documentation/configuration/device-tree.md) in the Raspberry Pi documentation): - -``` -dtparam=i2c_arm=on -``` diff --git a/source/_components/sensor.envisalink.markdown b/source/_components/sensor.envisalink.markdown deleted file mode 100644 index 94235f48b8..0000000000 --- a/source/_components/sensor.envisalink.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Envisalink Sensor" -description: "Instructions on how to integrate Envisalink sensors into Home Assistant." -date: 2016-07-01 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eyezon.png -ha_release: 0.23 -ha_category: Sensor -ha_iot_class: "Local Push" ---- - -The `envisalink` platform allows you to get data from your [Envisalink](http://www.eyezon.com/) sensors from within Home Assistant. - -The requirement is that you have setup your [Envisalink hub](/components/envisalink/). - diff --git a/source/_components/sensor.etherscan.markdown b/source/_components/sensor.etherscan.markdown deleted file mode 100644 index 785ed42492..0000000000 --- a/source/_components/sensor.etherscan.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Etherscan" -description: "Instructions on how to integrate Etherscan.io data within Home Assistant." -date: 2017-06-01 16:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: etherscan.png -ha_category: Finance -ha_release: 0.47 -ha_iot_class: "Cloud Polling" ---- - -The `Etherscan` sensor platform displays Ether and ERC-20 token balances from [Etherscan.io](https://etherscan.io). - -To add the Etherscan sensor to your installation, specify an Ethereum address to watch in the `configuration.yaml` file. You can also optionally provide a token name to retrieve and ERC-20 token balance. If no token is provided then the balance retrieved will be in ETH. You can also optionally provide the token contract address in case the token name is not found. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: etherscan - address: '0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359' - - platform: etherscan - address: "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359" - token: OMG - - platform: etherscan - address: "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359" - token_address: "0xef68e7c694f40c8202821edf525de3782458639f" - token: LRC -``` - -{% configuration %} -address: - description: Ethereum wallet address to watch. - required: true - type: string -name: - description: The name of the sensor used in the frontend. - required: false - type: string - default: ETH Balance -token: - description: The ERC20 token symbol. i.e., OMG. - required: false - type: string -token_address: - description: The ERC20 token contract address. - required: false - type: string -{% endconfiguration %} diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/sensor.fail2ban.markdown deleted file mode 100644 index ca1467cf1b..0000000000 --- a/source/_components/sensor.fail2ban.markdown +++ /dev/null @@ -1,194 +0,0 @@ ---- -layout: page -title: "Fail2Ban Sensor" -description: "Instructions on 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 frontend. - -

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

    - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fail2ban - jails: - - ssh - - hass-iptables -``` - -{% configuration %} -jails: - description: List of configured jails you want to display. - required: true - type: list -name: - description: Name of the sensor. - required: false - type: string - default: fail2ban -file_path: - description: Path to the fail2ban log. - required: false - type: string - default: /var/log/fail2ban.log -{% endconfiguration %} - -### {% linkable_title Set up Fail2Ban %} - -For most setups, you can follow [this tutorial](/cookbook/fail2ban/) to set up `fail2ban` on your system. It will walk you through creating jails and filters, allowing you to monitor IP addresses that have been banned for too many failed SSH login attempts, as well as too many failed Home Assistant login attempts. - -### {% linkable_title Fail2Ban with Docker %} - -

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

    - -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. - -#### {% linkable_title Set http logger %} - -In your `configuration.yaml` file, add the following to the `logger` component to ensure that Home Assistant prints failed login attempts to the log. - -```yaml -logger: - logs: - homeassistant.components.http.ban: warning -``` - -#### {% linkable_title Edit the `jail.local` file %} - -Next, we need to edit the `jail.local` file that is included with the Let's Encrypt docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](/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 -``` - -#### {% linkable_title Create a filter for the Home Assistant jail %} - -Now we need to create a filter for `fail2ban` so that it can properly parse the log. This is done with a `failregex`. Create a file called `hass.local` within the `filter.d` directory in `/mnt/user/appdata/letsencrypt/fail2ban` and add the following: - -``` -[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 -``` - -#### {% linkable_title Map log file directories %} - -First, we need to make sure that fail2ban log can be passed to Home Assistant and that the Home Assistant log can be passed to fail2ban. When starting the Let's Encrypt docker, you need to add the following argument (adjust paths based on your setup): - -``` -/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 -``` - - -#### {% linkable_title Send client IP to Home Assistant %} - -By default, the IP address that Home Assistant sees will be that of the container (something like `172.17.0.16`). What this means is that for any failed login attempt, assuming you have correctly configured `fail2ban`, the Docker IP will be logged as banned, but the originating IP is still allowed to make attempts. We need `fail2ban` to recognize the originating IP to properly ban it. - -First, we have to add the following to the nginx configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`. - -```bash -proxy_set_header X-Real-IP $remote_addr; -proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -``` - -This snippet should be added within your Home Assistant server config, so you have something like the following: - -```bash -server { - ... - location / { - 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. - -#### {% linkable_title Add the fail2ban sensor %} - -Now that we've correctly set everything up for Docker, we can add our sensors to `configuration.yaml` with the following: - -```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.fastdotcom.markdown b/source/_components/sensor.fastdotcom.markdown deleted file mode 100644 index 54af9e77cc..0000000000 --- a/source/_components/sensor.fastdotcom.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Fast.com" -description: "How to integrate Fast.com within Home Assistant." -date: 2016-08-10 17:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: fastdotcom.png -ha_category: System Monitor -featured: false -ha_release: 0.26 -ha_iot_class: "Cloud Polling" ---- - -The `fastdotcom` sensor component uses the [Fast.com](https://fast.com/) web service to measure network bandwidth performance. - -

    -Currently fast.com only supports measuring download bandwidth. If you want to measure bandwidth metrics other then download such as ping and upload, utilize the [speedtest](/components/sensor.speedtest) component. -

    - -By default, it will run every hour. The user can change the update frequency in the config by defining the minute, hour, and day for a speedtest to run. - -To add a Fast.com sensor to your installation, add the following to your `configuration.yaml` file: - -Once per hour, on the hour (default): - -```yaml -sensor: - - platform: fastdotcom -``` - -More examples: - -Every half hour of every day: - -```yaml -sensor: - - platform: fastdotcom - minute: - - 0 - - 30 -``` -Configuration variables: - -- **minute** (*Optional*): Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. Default is 0. -- **hour** (*Optional*): Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. Default is None. -- **day** (*Optional*): Specify the day(s) of the month to schedule the speedtest. Use a list for multiple entries. Default is None. -- **manual** (*Optional*): True or False to turn manual mode on or off. Manual mode will disable scheduled speedtests. - -There is also a service named `sensor.update_fastdotcom` that you can use to run a fast.com speedtest on demand. You can turn on manual mode to disable the scheduled speedtests. diff --git a/source/_components/sensor.fedex.markdown b/source/_components/sensor.fedex.markdown deleted file mode 100644 index acbdf251d6..0000000000 --- a/source/_components/sensor.fedex.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: Fedex Sensor -description: "Instructions on how to set up FedEx sensors within Home Assistant." -date: 2017-02-14 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: fedex.png -ha_category: Sensor -ha_release: 0.39 -ha_iot_class: "Cloud Polling" ---- - -The `fedex` platform allows one to track deliveries by [FedEx](http://www.fedex.com/). To use this sensor, you need a [FedEx Delivery Manager](https://www.fedex.com/us/delivery/) account. - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fedex - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration options for the FedEx Sensor: - -- **username** (*Required*): The username to access the FedEx Delivery Manager service. -- **password** (*Required*): The password for the given username. -- **name** (*Optional*): Name the sensor. -- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 1 hour. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` - - Time period dictionary, e.g.: -
    update_interval:
    -        # At least one of these must be specified:
    -        days: 0
    -        hours: 0
    -        minutes: 3
    -        seconds: 30
    -        milliseconds: 0
    -    
    - -

    -The FedEx sensor logs into the FedEx Delivery Manager website to scrape package data. It does not use an API. Use at your own risk. -

    diff --git a/source/_components/sensor.fido.markdown b/source/_components/sensor.fido.markdown deleted file mode 100644 index edb59195a3..0000000000 --- a/source/_components/sensor.fido.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Fido" -description: "Instructions on how to integrate Fido data usage within Home Assistant." -date: 2017-01-01 17:17 -sidebar: true -comments: false -sharing: true -footer: true -logo: fido.png -ha_category: Sensor -ha_release: 0.39 -ha_iot_class: "Cloud Polling" ---- - - -Integrate your [Fido](https://www.fido.ca/) account information into Home Assistant. - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fido - username: MYUSERNAME - password: MYPASSWORD - monitored_variables: - - fido_dollar - - balance - - data_used -``` - -Configuration variables: - -- **username** (*Required*): You Fido username (your Fido phone number or your email). -- **password** (*Required*): Your Fido password. -- **number** (*Optional*): Your Fido phone number (it will use your username if empty). -- **monitored_variables** array (*Required*): Variables to monitor. - - **fido_dollar**: Your Fido dollar balance - - **balance**: Your account balance - - **data_used**: Current data used - - **data_limit**: Current data limit - - **data_remaining**: Current data remaining - - **text_used**: SMS sent - - **text_limit**: SMS limit - - **text_remaining**: SMS remaining - - **mms_used**: MMS sent - - **mms_limit**: MMS limit - - **mms_remaining**: MMS remaining - - **text_int_used**: International SMS sent - - **text_int_limit**: International SMS limit - - **text_int_remaining**: International SMS remaining - - **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 international calls) - - **other_talk_limit**: Other talk time limit - - **other_talt_remaining**: Other talk time remaining diff --git a/source/_components/sensor.file.markdown b/source/_components/sensor.file.markdown deleted file mode 100644 index 8ae7216a7d..0000000000 --- a/source/_components/sensor.file.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "File Sensor" -description: "Instructions on how to integrate sensors which read from files into Home Assistant." -date: 2017-05-13 12:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: file.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.45 ---- - - -The `file` sensor platform reads the entries from a plain-text file and shows the found value. Only the last line of the file is used. This is similar to do `$ tail -n 1 sensor.txt` on the command-line. Note that file paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). - -To enable the `file` sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: file - file_path: /home/user/.homeassistant/sensor-data.txt -``` - -Configuration variables: - -- **file_path** (*Required*): path to file that stores the sensor data. -- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `File`. -- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Entries as JSON %} - -Assuming that the log file contains multiple values formatted as JSON like shown below: - -```text -[...] -{"temperature": 21, "humidity": 39} -{"temperature": 22, "humidity": 36} -``` - -This would require the following entry in the `configuration.yaml` file to extract the temperature: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: file - name: Temperature - file_path: /home/user/.homeassistant/sensor.json - value_template: {% raw %}'{{ value_json.temperature }}'{% endraw %} - unit_of_measurement: '°C' -``` - diff --git a/source/_components/sensor.filesize.markdown b/source/_components/sensor.filesize.markdown deleted file mode 100644 index 3178fa6e3c..0000000000 --- a/source/_components/sensor.filesize.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "File size sensor" -description: "Component for monitoring the size of a file." -date: 2018-02-06 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: file.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.64 ---- - -Component for displaying the size in MB of a file. Note that paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). -Add to your config: - -```yaml -sensor: - - platform: filesize - file_paths: - - /config/home-assistant_v2.db - ``` - -{% configuration %} -file_paths: - description: The absolute path to the file. - required: true - type: list of strings -{% endconfiguration %} diff --git a/source/_components/sensor.filter.markdown b/source/_components/sensor.filter.markdown deleted file mode 100644 index 30661e8d1f..0000000000 --- a/source/_components/sensor.filter.markdown +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: page -title: "Filter Sensor" -description: "Instructions on how to integrate Data Filter Sensors into Home Assistant." -date: 2018-02-20 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_release: 0.65 -ha_iot_class: "Local Push" -logo: home-assistant.png ---- - -The `filter` platform enables sensors that process the states of other entities. - -`filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm. The next image depicts an original sensor and the filter sensor of that same sensor using the [History Graph]({{site_roor}}/components/history_graph/) component. - -

    - -

    - -To enable Filter Sensors in your installation, add the following to your `configuration.yaml` file: - - -```yaml -# Example configuration.yaml entry -sensor: - - platform: filter - name: "filtered realistic humidity" - entity_id: sensor.realistic_humidity - filters: - - filter: outlier - window_size: 4 - radius: 4.0 - - filter: lowpass - time_constant: 10 - precision: 2 - - platform: filter - name: "filtered realistic temperature" - entity_id: sensor.realistic_temperature - filters: - - filter: outlier - window_size: 4 - radius: 2.0 - - filter: lowpass - time_constant: 10 - - filter: time_simple_moving_average - window_size: 00:05 - precision: 2 -``` - -Filters can be chained and are applied according to the order present in the configuration file. - -{% configuration %} -entity_id: - description: The entity ID of the sensor to be filtered. - required: true - type: string -name: - description: Name to use in the frontend. - required: false - type: string -filters: - description: Filters to be used. - required: true - type: list - keys: - filter: - description: Algorithm to be used to filter data. Available filters are `lowpass`, `outlier`, `throttle` and `time_simple_moving_average`. - required: true - type: string - window_size: - description: Size of the window of previous states. Time based filters such as `time_simple_moving_average` will require a time period (size in time), while other filters such as `outlier` will require an integer (size in number of states) - required: false - type: [int, time] - default: 1 - precision: - description: See [_lowpass_](#low-pass) filter. Defines the precision of the filtered state, through the argument of round(). - required: false - type: int - default: None - time_constant: - description: See [_lowpass_](#low-pass) filter. Loosely relates to the amount of time it takes for a state to influence the output. - required: false - type: int - default: 10 - radius: - description: See [_outlier_](#outlier) filter. Band radius from median of previous states. - required: false - type: float - default: 2.0 - type: - description: See [_time_simple_moving_average_](#time-simple-moving-average) filter. Defines the type of Simple Moving Average. - required: false - type: string - default: last -{% endconfiguration %} - -## {% linkable_title Filters %} - -### {% linkable_title Low-pass %} - -The Low-pass filter (`lowpass`) is one of signal processing most common filters, as it smooths data by shortcutting peaks and valleys. - -The included Low-pass filter is very basic and is based on [exponential smoothing](https://en.wikipedia.org/wiki/Exponential_smoothing), in which the previous data point is weighted with the new data point. - -```python -B = 1.0 / time_constant -A = 1.0 - B -LowPass(state) = A * previous_state + B * state -``` - -The returned value is rounded to the number of decimals defined in (`precision`). - -### {% linkable_title Outlier %} - -The Outlier filter (`outlier`) is a basic Band-pass filter, as it cuts out any value outside a specific range. - -The included Outlier filter will discard any value beyond a band centered on the median of the previous values, replacing it with the median value of the previous values. If inside the band, the - -```python -distance = abs(state - median(previous_states)) - -if distance > radius: - median(previous_states) -else: - state -``` - -### {% linkable_title Throttle %} - -The Throttle filter (`throttle`) will only update the state of the sensor for the first state in the window. This means the filter will skip all other values. - -To adjust the rate you need to set the window_size. To throttle a sensor down to 10%, the `window_size` should be set to 10, for 50% should be set to 2. - -This filter is relevant when you have a sensor which produces states at a very high-rate, which you might want to throttle down for storing or visualization purposes. - -### {% linkable_title Time Simple Moving Average %} - -The Time SMA filter (`time_simple_moving_average`) is based on the paper [Algorithms for Unevenly Spaced Time Series: Moving Averages and Other Rolling Operators](http://www.eckner.com/papers/Algorithms%20for%20Unevenly%20Spaced%20Time%20Series.pdf) by Andreas Eckner. - -The paper defines three types/versions of the Simple Moving Average (SMA): *last*, *next* and *linear*. Currently only *last* is implemented. - -Theta, as described in the paper, is the `window_size` parameter, and can be expressed using time notation (e.g., 00:05 for a five minutes time window). diff --git a/source/_components/sensor.fitbit.markdown b/source/_components/sensor.fitbit.markdown deleted file mode 100644 index a273f3d8af..0000000000 --- a/source/_components/sensor.fitbit.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Fitbit" -description: "Instructions on how to integrate Fitbit devices within Home Assistant." -date: 2016-05-09 15:01 -sidebar: true -comments: false -sharing: true -footer: true -logo: fitbit.png -ha_category: Health -ha_iot_class: "Cloud Polling" -ha_release: 0.19 ---- - -The Fitbit sensor allows you to expose data from [Fitbit](http://fitbit.com) to Home Assistant. - -Enable the sensor by adding the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fitbit - clock_format: 12H - monitored_resources: - - "body/weight" -``` - -Restart Home Assistant once this is complete. Go to the frontend. You will see a new entry for configuring Fitbit. Follow the instructions there to complete the setup process. - -Please be aware that Fitbit has very low rate limits, 150 per user per hour. The clock resets at the _top_ of the hour (meaning it is not a rolling 60 minutes). There is no way around the limits. Due to the rate limits, the sensor only updates every 30 minutes. You can manually trigger an update by restarting Home Assistant. Keep in mind that 1 request is used for every entry in `monitored_resources`. - -The unit system that the sensor will use is based on the country you set in your Fitbit profile. - -Configuration variables: - -- **monitored_resources** (*Optional*): Resource to monitor. Defaults to `activities/steps`. -- **clock_format** (*Optional*): Format to use for `sleep/startTime` resource. Accepts `12H` or `24H`. Defaults to `24H`. -- **unit_system** (*Optional*): Unit system to use for measurements. Accepts `default`, `metric`, `en_US` or `en_GB`. Defaults to `default`. - -Below is the list of resources that you can add to `monitored_resources`. One sensor is exposed for every resource. - -```text -activities/activityCalories -activities/calories -activities/caloriesBMR -activities/distance -activities/elevation -activities/floors -activities/heart -activities/minutesFairlyActive -activities/minutesLightlyActive -activities/minutesSedentary -activities/minutesVeryActive -activities/steps -activities/tracker/activityCalories -activities/tracker/calories -activities/tracker/distance -activities/tracker/elevation -activities/tracker/floors -activities/tracker/minutesFairlyActive -activities/tracker/minutesLightlyActive -activities/tracker/minutesSedentary -activities/tracker/minutesVeryActive -activities/tracker/steps -body/bmi -body/fat -body/weight -devices/battery -sleep/awakeningsCount -sleep/efficiency -sleep/minutesAfterWakeup -sleep/minutesAsleep -sleep/minutesAwake -sleep/minutesToFallAsleep -sleep/startTime -sleep/timeInBed -``` diff --git a/source/_components/sensor.fixer.markdown b/source/_components/sensor.fixer.markdown deleted file mode 100644 index 397d3b5b71..0000000000 --- a/source/_components/sensor.fixer.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Fixer.io" -description: "Instructions on how to integrate exchange rates from Fixer.io within Home Assistant." -date: 2016-06-20 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Finance -logo: fixer-io.png -ha_iot_class: "Cloud Polling" -ha_release: 0.23 ---- - - -The `fixer` sensor will show you the current exchange rate from [Fixer.io](http://fixer.io/) which is using data from the [European Central Bank (ECB)](https://www.ecb.europa.eu). - -To get an overview about the available [currencies](http://api.fixer.io/latest). - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fixer - target: CHF -``` - -{% configuration %} -target: - description: The symbol of the target currency. - required: true - type: string -name: - description: Name to use in the frontend. - required: false - type: string - default: Exchange rate -base: - description: The symbol of the base currency. - required: false - type: string - default: USD -{% endconfiguration %} diff --git a/source/_components/sensor.folder.markdown b/source/_components/sensor.folder.markdown deleted file mode 100644 index 292e7366ea..0000000000 --- a/source/_components/sensor.folder.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Folder sensor" -description: "Sensor for monitoring the contents of a folder." -date: 2018-02-21 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: file.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.64 ---- - -Sensor for monitoring the contents of a folder. Note that folder paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). Optionally a [wildcard filter](https://docs.python.org/3.6/library/fnmatch.html) can be applied to the files considered within the folder. The state of the sensor is the size in MB of files within the folder that meet the filter criteria. The number of filtered files in the folder and total size in bytes of those files are exposed as attributes. - -To enable the `folder` sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -sensor: - - platform: folder - folder: /config -``` - -{% configuration %} -folder: - description: The folder path - required: true - type: string -filter: - description: Filter to apply - required: false - default: "`*`" - type: string -{% endconfiguration %} diff --git a/source/_components/sensor.foobot.markdown b/source/_components/sensor.foobot.markdown deleted file mode 100644 index cf300fa7ac..0000000000 --- a/source/_components/sensor.foobot.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Foobot Air Quality Monitor" -description: "Instructions on how to setup Foobot Air Quality sensor in Home Assistant." -date: 2018-02-14 06:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: foobot.png -ha_category: Health -ha_release: 0.66 -ha_iot_class: "Cloud Polling" ---- - -The `foobot` sensor platform will fetch air quality data from your or yours [Foobot device(s)](https://foobot.io/features/). - -This sensor requires an API token. Please obtain one at [Foobot API site](https://api.foobot.io/apidoc/index.html). - -## {% linkable_title Configuring the Platform %} - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -sensor: - - platform: foobot - token: FOOBOT_SECRET_KEY - username: FOOBOT_USERNAME -``` - -{% configuration %} - token: - description: The token for the Foobot API. - required: true - type: string - username: - description: Your Foobot username, used to fetch devices associated with an account. - required: true - type: string -{% endconfiguration %} - -## {% linkable_title Available Metrics %} - -Every ten minutes, it'll fetch the last ten minutes average of the following measurements: - - * Temperature - * Humidity - * Co2 - * VOC - * PM2.5 - * [Index](https://help.foobot.io/hc/en-us/articles/204814371-What-does-central-number-mean-) diff --git a/source/_components/sensor.fritzbox_callmonitor.markdown b/source/_components/sensor.fritzbox_callmonitor.markdown deleted file mode 100644 index dd57677a9c..0000000000 --- a/source/_components/sensor.fritzbox_callmonitor.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "FRITZ!Box Call Monitor" -description: "Instructions on how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant." -date: 2016-08-13 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: System Monitor -ha_release: 0.27 -ha_iot_class: "Local Polling" ---- - - -The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing` or `talking` with the phone numbers involved contained in the state attributes. -It can also access the internal phone book of the router to look up the names corresponding to the phone numbers and store them in the state attributes. - -## {% linkable_title Configuration %} - -To activate the call monitor on your Fritz!Box, dial #96\*5\* from any phone connected to it. - -To use the Fritz!Box call monitor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fritzbox_callmonitor -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. -- **port** (*Optional*): The TCP port of the call monitor. There is usually no reason to change this. -- **username** (*Optional*): Fritz!Box user's user name. This is required to use the phone book lookup feature. The user needs to have the "voice message, fax message, Fritz!App Fon and call list" permission. -- **password** (*Optional*): Fritz!Box user's user password. This is required to use the phone book lookup feature. -- **phonebook** (*Optional*): Numerical ID identifying the phonebook to be used. If there is just one phonebook, this is usually 0. -- **prefixes** (*Optional*): In case of a local call, the phone number seen by the router might differ from the one stored in the phone book by an area code, similarly for the international prefix. To remedy this, a list of prefixes, that can be appended to the phone number in case it is not found in the phone book, can be given. - -## {% linkable_title Examples %} - -### {% linkable_title Full configuration %} - -The example below shows a full configuration for a call monitor with phone book support. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fritzbox_callmonitor - name: Phone - username: my_username - password: my_password - phonebook: 0 - prefixes: - - '+49' - - '+4989' - - '089' -``` - -### {% linkable_title Send notifications on state change %} - -This example shows how to send notifications whenever the sensor's state changes. You will get notified both when you receive a call and also when a call is placed. - -{% raw %} -```yaml -# Example configuration.yaml entry. -automation: - - alias: "Notify about phone state" - trigger: - - platform: state - entity_id: sensor.phone - action: - - service: notify.notify - data: - title: "Phone" - message: >- - {% if is_state("sensor.phone", "idle") %} - Phone is idle - {% elif is_state("sensor.phone", "dialing") %} - Calling {{ states.sensor.phone.attributes.to_name }} ({{ states.sensor.phone.attributes.to }}) - {% elif is_state("sensor.phone", "ringing") %} - Incoming call from {{ states.sensor.phone.attributes.from_name }} ({{ states.sensor.phone.attributes.from }}) - {% else %} - Talking to {{ states.sensor.phone.attributes.with_name }} ({{ states.sensor.phone.attributes.with }}) - {% endif %} -``` -{% endraw %} diff --git a/source/_components/sensor.fritzbox_netmonitor.markdown b/source/_components/sensor.fritzbox_netmonitor.markdown deleted file mode 100644 index 58eea96a16..0000000000 --- a/source/_components/sensor.fritzbox_netmonitor.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "FRITZ!Box Net Monitor" -description: "Instructions on how to integrate an AVM FRITZ!Box monitor into Home Assistant." -date: 2017-01-17 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: System Monitor -ha_release: 0.36 -ha_iot_class: "Local Polling" ---- - - -The `fritzbox_netmonitor` sensor monitors the network statistics exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers. - -

    -It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml -If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml; be patient this will take a while.

    - -To use the Fritz!Box network monitor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: fritzbox_netmonitor -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of your router, eg. 192.168.1.1. It is optional since every fritzbox is also reachable by using the IP address 169.254.1.1. - -The following statistics will be exposed as attributes. - -|Attribute |Description | -|:----------------------|:------------------------------------------------------------| -|is_linked |True if the FritzBox is physically linked to the provider | -|is_connected |True if the FritzBox has established an internet-connection | -|wan_access_type |Connection-type, can be `DSL` or `Cable` | -|external_ip |External ip address | -|uptime |Uptime in seconds | -|bytes_sent |Bytes sent | -|bytes_received |Bytes received | -|transmission_rate_up |Current upstream speed in bytes/s | -|transmission_rate_down |Current downstream speed in bytes/s | -|max_byte_rate_up |Maximum upstream-rate in bytes/s | -|max_byte_rate_down |Maximum downstream-rate in bytes/s | - -The sensor's state corresponds to the `is_linked` attribute and is either `online`, `offline`, or `unavailable` (in case connection to the router is lost). diff --git a/source/_components/sensor.gearbest.markdown b/source/_components/sensor.gearbest.markdown deleted file mode 100644 index 31803acb75..0000000000 --- a/source/_components/sensor.gearbest.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Gearbest" -description: "Instructions on how to integrate a Gearbest sensor into Home Assistant." -date: 2017-11-13 09:08 -sidebar: true -comments: false -sharing: true -footer: true -logo: gearbest.png -ha_category: Sensor -ha_iot_class: "Cloud Polling" -ha_release: "0.60" ---- - - -The `gearbest` sensor will track the price of a product from [Gearbest](https://www.gearbest.com). This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: gearbest - currency: EUR - items: - - url: https://www.gearbest.com/.... -``` - -{% configuration %} -currency: - description: "The currency in which the products should be tracked. Currently supported: USD, EUR, GBP, AUD, CAD, CHF, HKD, CNY, NZD, JPY, RUB, BRL, CLP, NOK, DKK, SEK, KRW, ILS, COP, MXN, PEN, THB, IDR, UAH, PLN, INR, BGN, HUF, RON, TRY, CZK, HRK, MAD, AED, SAR, ZAR, SGD, MYR, TWD, RSD, NGN - if the currency could not be found in the conversion rate list, USD will be used as default. Either an ID or an URL must be present." - required: true - type: string -items: - description: List of products that should be tracked. - required: true - type: map - keys: - id: - description: The ID of the product. - required: false - type: int - url: - description: The URL of the product. - required: false - type: string - name: - description: The name of the item. If not set, it is parsed from the website. - required: false - type: string - currency: - description: Overwrite the currency for the current item. - required: false - type: string -{% endconfiguration %} - -### {% linkable_title Extended example %} - -```yaml -# Example configuration.yaml entry -sensor: - - platform: gearbest - currency: EUR - items: - - url: https://www.gearbest.com/3d-printers-3d-printer-kits/pp_779174.html?wid=21 - name: Creality CR-10 upgraded - currency: USD - - id: 779174 - name: Creality CR-10 upgraded #2 - currency: EUR -``` diff --git a/source/_components/sensor.geizhals.markdown b/source/_components/sensor.geizhals.markdown deleted file mode 100644 index c978074056..0000000000 --- a/source/_components/sensor.geizhals.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -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 deleted file mode 100644 index 6679f45532..0000000000 --- a/source/_components/sensor.geo_rss_events.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -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 kilometers 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 deleted file mode 100644 index 72f3c4b7dc..0000000000 --- a/source/_components/sensor.gitter.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Gitter Sensor" -description: "Instructions on how to integrate a Gitter room sensor with Home Assistant" -date: 2017-06-11 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: gitter.png -ha_category: Sensor -ha_release: 0.47 ---- - - -This `gitter` sensor allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages. - -## {% linkable_title Configuration %} - -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 -# Example configuration.yaml entry -sensor: - - platform: gitter - api_key: YOUR_API_TOKEN -``` - -{% configuration %} -api_key: - description: Your Gitter.im API token. - required: true - type: string -room: - description: Gitter room to monitor. - required: false - type: string - default: home-assistant/home-assistant -{% endconfiguration %} diff --git a/source/_components/sensor.glances.markdown b/source/_components/sensor.glances.markdown deleted file mode 100644 index f455945493..0000000000 --- a/source/_components/sensor.glances.markdown +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: page -title: "Glances" -description: "Instructions on how to integrate Glances sensors into Home Assistant." -date: 2015-09-14 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: glances.png -ha_category: System Monitor -ha_iot_class: "Local Polling" -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. -To start a Glances RESTful API server on its default port 61208, the a test the following command can be used: - -```bash -$ sudo glances -w -Glances web server started on http://0.0.0.0:61208/ -``` - -Check if you are able to access the API located at `http://IP_ADRRESS:61208/api/2`. Don't use `-s` as this will start the XMLRPC server on port 61209. Home Assistant only supports the REST API of GLANCES. - -The details about your memory usage is provided as a JSON response. If so, you are good to proceed. - -```bash -$ curl -X GET http://IP_ADDRESS:61208/api/2/mem/free -{"free": 203943936} -``` - -For details about auto-starting `glances`, please refer to [Start Glances through Systemd](https://github.com/nicolargo/glances/wiki/Start-Glances-through-Systemd). - -To enable the Glances sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: glances - host: IP_ADDRESS - resources: - - 'disk_use_percent' - - 'disk_use' - - 'disk_free' - - 'memory_use_percent' - - 'memory_use' - - 'memory_free' - - 'swap_use_percent' - - 'swap_use' - - 'swap_free' - - 'processor_load' - - 'process_running' - - 'process_total' - - 'process_thread' - - 'process_sleeping' - - 'cpu_temp' - - 'docker_active' - - 'docker_cpu_use' - - 'docker_memory_use' -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your host, eg. `192.168.1.32`. -- **port** (*Option*): The network port to connect to. Default is `61208`. -- **name** (*Optional*): Name of the Glances sensor. -- **resources** (*Required*): Entries to monitor. - - **disk_use_percent**: Used disk space in percent - - **disk_use**: Used disk space - - **disk_free**: Free disk space - - **memory_use_percent**: Used memory in percent - - **memory_use**: Used memory - - **memory_free**: Free memory - - **swap_use_percent**: Used swap space in percent - - **swap_use**: Used swap space - - **swap_free**: Free swap space - - **processor_load**: Load - - **process_running**: Number of running processes - - **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) - - **docker_active**: Count of active Docker containers - - **docker_cpu_use**: Total CPU usage in percent of Docker containers - - **docker_memory_use**: Total memory used of Docker containers - -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_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown deleted file mode 100644 index 4fb24f39d0..0000000000 --- a/source/_components/sensor.google_travel_time.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: page -title: "Google Maps Travel Time" -description: "Instructions on how to add Google Maps travel time to Home Assistant." -date: 2016-03-28 10:19 -sidebar: true -comments: false -sharing: true -footer: true -logo: google_maps.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: 0.19 ---- - -Sensor to provide travel time from the [Google Distance Matrix API](https://developers.google.com/maps/documentation/distance-matrix/). - -You need to register for an API key by following the instructions [here](https://github.com/googlemaps/google-maps-services-python#api-keys). You only need to turn on the Distance Matrix API. - -A free API Key allows 2500 requests per day. The sensor will update the travel time every 5 minutes. - -```yaml -# Example entry for configuration.yaml -sensor: - - platform: google_travel_time - api_key: XXXX_XXXXX_XXXXX - origin: Trondheim, Norway - destination: Paris, France -``` - -Configuration variables: - -- **api_key** (*Required*): Your application's API key (get one by following the instructions above). This key identifies your application for purposes of quota management. -- **origin** (*Required*): The starting point for calculating travel distance and time. You can supply one or more locations separated by the pipe character, in the form of an address, latitude/longitude coordinates, or a [Google place ID](https://developers.google.com/places/place-id). When specifying the location using a Google place ID, the ID must be prefixed with `place_id:`. -- **destination** (*Required*): One or more locations to use as the finishing point for calculating travel distance and time. The options for the destinations parameter are the same as for the origins parameter, described above. -- **name** (*Optional*): A name to display on the sensor. The default is "Google Travel Time - [Travel Mode]" where [Travel Mode] is the mode set in options for the sensor (see option "mode" below). -- **options** (*Optional*): A dictionary containing parameters to add to all requests to the Distance Matrix API. A full listing of available options can be found [here](https://developers.google.com/maps/documentation/distance-matrix/intro#RequestParameters). - - **mode** (*Optional*): The travel mode used to calculate the directions / time. Can be `driving` (*Default*), `bicycling`, `transit` or `walking`. - - **departure_time** (*Optional*): Can be `now`, a Unix timestamp, or a 24 hour time string like `08:00:00`. If you provide a time string, it will be combined with the current date to get travel time for that moment. - - **arrival_time** (*Optional*): See notes above for `departure_time`. `arrival_time` can not be `now`, only a Unix timestamp or time string. You can not provide both `departure_time` and `arrival_time`. If you do provide both, `arrival_time` will be removed from the request. - - **units** (*Optional*): Set the unit for the sensor in metric or imperial, otherwise the default unit the same as the unit set in `unit_system:`. - -##### {% linkable_title Dynamic Configuration %} - -Tracking can be setup to track entities of type device_tracker, zone, and sensor. If an entity is placed in the origin or destination then every 5 minutes when the component updates it will use the latest location of that entity. - -```yaml -# Example entry for configuration.yaml -sensor: - # Tracking entity to entity - - platform: google_travel_time - name: Phone To Home - api_key: XXXX_XXXXX_XXXXX - origin: device_tracker.mobile_phone - destination: zone.home - - # Tracking entity to zone friendly name - - platform: google_travel_time - name: Home To Eddie's House - api_key: XXXX_XXXXX_XXXXX - origin: zone.home - destination: Eddies House # Friendly name of a zone - - # Tracking entity in imperial unit - - platform: google_travel_time - api_key: XXXX_XXXXX_XXXXX - destination: zone.home - options: - units: imperial # 'metric' for Metric, 'imperial' for Imperial - -``` - -#### {% linkable_title Entity Tracking %} - -- **device_tracker** - - If state is a zone then the zone location will be used - - If state is not a zone it will look for the longitude and latitude attributes -- **zone** - - Uses the longitude and latitude attributes - - Can also be referenced by just the zone's friendly name found in the attributes. -- **sensor** - - If state is a zone or zone friendly name then will use the zone location - - All other states will be passed directly into the google API - - This includes all valid locations listed in the *Configuration Variables* diff --git a/source/_components/sensor.google_wifi.markdown b/source/_components/sensor.google_wifi.markdown deleted file mode 100644 index 303c89ed0a..0000000000 --- a/source/_components/sensor.google_wifi.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Google Wifi" -description: "Instructions on 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.gpsd.markdown b/source/_components/sensor.gpsd.markdown deleted file mode 100644 index 82448cd970..0000000000 --- a/source/_components/sensor.gpsd.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "GPSD" -description: "Instructions on how to integrate GPSD into Home Assistant." -date: 2016-07-18 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: gpsd.png -ha_category: Sensor -ha_release: 0.26 -ha_iot_class: "Local Polling" ---- - -The `gpsd` component is using the GPS information collected by [gpsd](http://catb.org/gpsd/) and a GPS receiver. - -A requirement is that `gpsd` is installed (`$ sudo apt-get install gpsd` or `$ sudo dnf -y install gpsd`). `gpsd` uses the socket activation feature of systemd on recent Linux distributions for USB receivers. This means that if you plug your GPS receiver in, `gpsd` is started. Other GPS device may work too, but this was not tested. - -```bash -$ sudo systemctl status gpsdctl@ttyUSB0.service -● gpsdctl@ttyUSB0.service - Manage ttyUSB0 for GPS daemon - Loaded: loaded (/usr/lib/systemd/system/gpsdctl@.service; static; vendor preset: disabled) - Active: active (exited) since Sat 2016-07-16 09:30:33 CEST; 1 day 23h ago - Process: 5303 ExecStart=/bin/sh -c [ "$USBAUTO" = true ] && /usr/sbin/gpsdctl add /dev/%I || : (code=exited, status=0/SUCCESS) - Main PID: 5303 (code=exited, status=0/SUCCESS) - -Jul 16 09:30:33 laptop019 systemd[1]: Starting Manage ttyUSB0 for GPS daemon... -Jul 16 09:30:33 laptop019 gpsdctl[5305]: gpsd_control(action=add, arg=/dev/ttyUSB0) -Jul 16 09:30:33 laptop019 gpsdctl[5305]: reached a running gpsd -``` - -To check if your setup is working, connect to port 2947 on the host where `gpsd` is running with `telnet`. This may need adjustments to your firewall. - -```bash -$ telnet localhost 2947 -Trying 127.0.0.1... -Connected to localhost. -Escape character is '^]'. -{"class":"VERSION","release":"3.15","rev":"3.15-2.fc23","proto_major":3,"proto_minor":11} -``` - -To setup a GPSD sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: gpsd -``` - -Configuration variables: - -- **host** (*Optional*): The host where GPSD is running. Defaults to `localhost`. -- **port** (*Optional*): The port which GPSD is using. Defaults to `2947`. -- **name** (*Optional*): Friendly name to use for the frontend. Default to GPS. diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/sensor.gtfs.markdown deleted file mode 100644 index 874617d87b..0000000000 --- a/source/_components/sensor.gtfs.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Public Transit (GTFS)" -description: "Instructions on how to use public transit open data in Home Assistant." -date: 2016-03-28 10:19 -sidebar: true -comments: false -sharing: true -footer: true -logo: train.png -ha_category: Transport -ha_iot_class: "Local Polling" -ha_release: 0.17 ---- - - -The `gtfs` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. - -You need to find a valid GTFS data set, which you can usually find just by searching the internet. Most public transit authorities have GTFS available somewhere, as Google requires public transit authorities to provide the data if they wish to appear on Google Maps. You may also be able to find data at either [TransitFeeds](http://transitfeeds.com/feeds) or [GTFS Data Exchange](http://www.gtfs-data-exchange.com/). - -Here are some examples: - -- [Bay Area Rapid Transit (BART)](http://www.bart.gov/schedules/developers/gtfs) - The light rail system for the San Francisco Bay Area. -- [Metropolitan Transit Authority of New York City (MTA)](http://www.bart.gov/schedules/developers/gtfs) - Provides separate data feeds for subway, bus, LIRR and Metro-North of the greater New York City metropolitan region. -- [GBRail.info](http://www.gbrail.info/) - Provides data feeds for most if not all rail companies in Britain. -- [Official Timetable Switzerland](http://www.fahrplanfelder.ch/en/timetable-data.html) - The official timetable data for Switzerland. -- [Public Transport Victoria (Australia)](https://www.data.vic.gov.au/data/dataset/ptv-timetable-and-geographic-information-2015-gtfs) - Official PTV GTFS dataset. - -You need to download a GTFS ZIP file and put it into a folder named `gtfs` in your configuration directory. For ease of use, it is suggested that you rename the file to just the agency/data source name (i.e. `bart.zip` instead of `google_transit_20160328_v1.zip`). You can also unzip and place a folder in the `gtfs` folder. - -The data will be converted into a queryable format and saved as a SQLite3 database alongside the source data. The sensor will check for the existence of this SQLite3 data at every startup and will re-import the ZIP/Folder if none is found. - -To update the data, delete the SQLite3 file and restart Home Assistant. - -To find your stop ID, open the `stops.txt` file inside the ZIP file/unzipped folder. The format of the ID is different for every transit agency but will be the first "column" (meaning the string before the first comma) in a row. - -The sensor attributes will contain all related information for the specific trip, such as agency information, origin and destination stop information, origin and destination stop time and the route information. - -Your mileage may vary depending on the transit agency used. Most agencies respect the GTFS format but some will do weird things like adding extra columns or using different data formatting. If you have any data specific issues, please report them to the [PyGTFS](https://github.com/jarondl/pygtfs) project, which is what the GTFS sensor uses to parse data. - -**Please note**: This is a _static_ data source. Currently, there is no GTFS Realtime support in this sensor due to issues surrounding parsing the protocol buffer format in Python 3. Once those issues have been fixed Realtime support will be added. Once added, the sensor will check for any delays and advisories and report them in the sensor as needed. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: gtfs - origin: STOP_ID - destination: STOP_ID - data: DATA_SOURCE -``` - -Configuration variables: - -- **origin** (*Required*): The stop ID of your origin station. -- **destination** (*Required*): The stop ID of your destination station. -- **data** (*Required*): The name of the ZIP file or folder containing the GTFS data. It must be located inside the `gtfs` folder of your configuration directory. -- **name** (*Optional*): Name to use in the frontend. -- **offset** (*Optional*): A minimum delay to look for. If a departure is in less time than `offset`, it will be ignored. Defaults to `0`. - diff --git a/source/_components/sensor.haveibeenpwned.markdown b/source/_components/sensor.haveibeenpwned.markdown deleted file mode 100644 index 7a6b7bc1b3..0000000000 --- a/source/_components/sensor.haveibeenpwned.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "HaveIBeenPwned Sensor" -description: "Instructions on how to integrate HaveIBeenPwned sensor into Home Assistant." -date: 2016-09-29 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: haveibeenpwned.png -ha_category: Sensor -ha_release: 0.31 -ha_iot_class: "Cloud Polling" ---- - -The `haveibeenpwned` sensor platform creates sensors that check for breached email accounts on [haveibeenpwned](https://haveibeenpwned.com). -To enable this sensor, add the following lines to your `configuration.yaml`, it will list every specified email address as a sensor showing -the number of breaches on that email account: - -```yaml -# Example configuration.yaml entry using cloud based emoncms -sensor: - platform: haveibeenpwned - email: - - your_email1@domain.com - - your_email2@domain.com -``` - -## {% linkable_title Breach meta data %} - -If one of your email accounts is breached the sensor will display breach meta data. It will list the title of the site where your email -account has been breached as well as the added date of the breach data. This data is displayed in descending order so that the state attribute -`breach 1` will always contain the last known breach for the specific email account, if there are any breaches detected. - -

    - -

    - -## {% linkable_title Configuration variables %} - -- **email** (*Required*): List of email addresses. - -

    - The sensor will scan all email addresses specified with a 5 second delay between all breach data requests on Home Assistant startup. - After this initial startup scanning, the sensor will only scan one email account per 15 minutes to prevent abuse, and not hammer "the - Have I been Pwned" service, as this breach data almost never changes. -

    diff --git a/source/_components/sensor.hddtemp.markdown b/source/_components/sensor.hddtemp.markdown deleted file mode 100644 index 0116bedde1..0000000000 --- a/source/_components/sensor.hddtemp.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "HDDTemp" -description: "Instructions on how to integrate hard drive temperature information into Home Assistant." -date: 2016-10-28 07:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: System Monitor -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - -The `hddtemp` sensor platform is using the data provided by [HDDTemp](http://savannah.nongnu.org/projects/hddtemp). - -It required that `hddtemp` is started or running in daemon mode on a local or remote system. - -```bash -$ hddtemp -dF -``` - -To setup a HDDTemp to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: hddtemp - disks: - - /dev/sda1 -``` - -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.history_stats.markdown b/source/_components/sensor.history_stats.markdown deleted file mode 100644 index d1fa2cfa1d..0000000000 --- a/source/_components/sensor.history_stats.markdown +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: page -title: "History Statistics Sensor" -description: "Instructions about how to integrate historical statistics into Home Assistant." -date: 2017-02-10 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.39 ---- - -The `history_stats` sensor platform provides quick statistics about another component or platforms, using data from the [history](/components/history/). - -It can track how long the component has been in a specific state, in a custom time period. - -Examples of what you can track: - -- How long you were at home this week -- How long the lights were ON yesterday -- How long you watched TV today - -## {% linkable_title Configuration %} - -To enable the history statistics sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: history_stats - name: Lamp ON today - entity_id: light.my_lamp - state: 'on' - type: time - start: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}' - end: '{% raw %}{{ now() }}{% endraw %}' -``` - -Configuration variables: - - - **entity_id** (*Required*): The entity you want to track - - **state** (*Required*): The state you want to track - - **name** (*Optional*): Name displayed on the frontend - - **type** (*Optional*): The type of sensor: `time`, `ratio`, or `count`. Defaults to `time` - - **start**: When to start the measure (timestamp or datetime). - - **end**: When to stop the measure (timestamp or datetime) - - **duration**: Duration of the measure - - -

    - You have to provide **exactly 2** of `start`, `end` and `duration`. -
    - You can use [template extensions](/topics/templating/#home-assistant-template-extensions) such as `now()` or `as_timestamp()` to handle dynamic dates, as shown in the examples below. -

    - -## {% linkable_title Sensor type %} - -Depending on the sensor type you choose, the `history_stats` component can show different values: - -- **time**: The default value, which is the tracked time, in hours -- **ratio**: The tracked time divided by the length of your period, as a percentage -- **count**: How many times the component you track was changed to the state you track - -## {% linkable_title Time periods %} - -The `history_stats` component will execute a measure within a precise time period. You should always provide 2 of the following : -- When the period starts (`start` variable) -- When the period ends (`end` variable) -- How long is the period (`duration` variable) - -As `start` and `end` variables can be either datetimes or timestamps, you can configure almost any period you want. - - -### {% linkable_title Duration %} - -The duration variable is used when the time period is fixed. Different syntaxes for the duration are supported, as shown below. - -```yaml -# 6 hours -duration: 06:00 -``` - -```yaml -# 1 minute, 30 seconds -duration: 00:01:30 -``` - -```yaml -# 2 hours and 30 minutes -duration: - # supports seconds, minutes, hours, days - hours: 2 - minutes: 30 -``` - -### {% linkable_title Examples %} - -Here are some examples of periods you could work with, and what to write in your `configuration.yaml`: - -**Today**: starts at 00:00 of the current day and ends right now. - -```yaml - start: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}' - end: '{% raw %}{{ now() }}{% endraw %}' -``` - -**Yesterday**: ends today at 00:00, lasts 24 hours. - -```yaml - end: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}' - duration: - hours: 24 -``` - -**This morning (6AM - 11AM)**: starts today at 6, lasts 5 hours. - -```yaml - start: '{% raw %}{{ now().replace(hour=6).replace(minute=0).replace(second=0) }}{% endraw %}' - duration: - hours: 5 -``` - -**Current week**: starts last Monday at 00:00, ends right now. - -Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekday (86400 is the number of seconds in one day, the weekday is 0 on Monday, 6 on Sunday). -```yaml - start: '{% raw %}{{ as_timestamp( now().replace(hour=0).replace(minute=0).replace(second=0) ) - now().weekday() * 86400 }}{% endraw %}' - end: '{% raw %}{{ now() }}{% endraw %}' -``` - -**Last 30 days**: ends today at 00:00, lasts 30 days. Easy one. - -```yaml - end: '{% raw %}{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}{% endraw %}' - duration: - days: 30 -``` - -**All your history** starts at timestamp = 0, and ends right now. - -```yaml - start: '{% raw %}{{ 0 }}{% endraw %}' - end: '{% raw %}{{ now() }}{% endraw %}' -``` - -

    - The `/dev-template` page of your home-assistant UI can help you check if the values for `start`, `end` or `duration` are correct. If you want to check if your period is right, just click on your component, the `from` and `to` attributes will show the start and end of the period, nicely formatted. -

    diff --git a/source/_components/sensor.hive.markdown b/source/_components/sensor.hive.markdown deleted file mode 100644 index 0d4d087516..0000000000 --- a/source/_components/sensor.hive.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "Hive Sensor" -description: "Instructions on how to integrate Hive Sensors with Home Assistant." -date: 2017-09-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hive.png -ha_category: Sensor -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `hive` sensor component exposes Hive data as a sensor. - -The platform exposes the following sensors: - -- Hive Hub Online Status -- Hive Outside Temperature - -

    -Full configuration details can be found on the main [Hive component](/components/hive/) page. -

    - - diff --git a/source/_components/sensor.homematic.markdown b/source/_components/sensor.homematic.markdown deleted file mode 100644 index 005011cea6..0000000000 --- a/source/_components/sensor.homematic.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Homematic Sensor" -description: "Instructions on how to integrate Homematic sensors within Home Assistant." -date: 2016-06-28 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Sensor -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - - -The `homematic` sensor platform lets you observe the state of [Homematic](http://www.homematic.com/) sensors through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. \ No newline at end of file diff --git a/source/_components/sensor.homematicip_cloud.markdown b/source/_components/sensor.homematicip_cloud.markdown deleted file mode 100644 index bfb8449890..0000000000 --- a/source/_components/sensor.homematicip_cloud.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "HomematicIP Cloud Sensor" -description: "Instructions on how to integrate HomematIP sensors within Home Assistant." -date: 2018-04-02 13:40 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Sensor -ha_release: 0.66 -ha_iot_class: "Local Push" ---- - -The `homematicip_cloud` sensor platform allows you to control -[HomematicIP](http://www.homematicip.de) sensors through Home Assistant. - -Devices will be configured automatically. Please refer to the -[component](/components/homematicip_cloud/) configuration on how to setup -HomematicIP Cloud. diff --git a/source/_components/sensor.hp_ilo.markdown b/source/_components/sensor.hp_ilo.markdown deleted file mode 100644 index f242584b9d..0000000000 --- a/source/_components/sensor.hp_ilo.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: page -title: "HP ILO" -description: "How to integrate HP ILO (Integrated Lights-Out) sensors within Home Assistant." -date: 2016-08-15 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hewlett_packard_enterprise.png -ha_category: System Monitor -ha_release: 0.27 -ha_iot_class: "Local Polling" ---- - -The `hp_ilo` platform allows you to do an API call to the HP ILO (Integrated Lights-Out) sensor of your server, and use this data in Home Assistant sensors. - -If the ILO or specified jsonpath query returns only a single value (e.g., a temperature or state), it will be put in the state field. If a data structure is returned, it will be placed in the `ilo_data` attribute. - -Some more details about what can be retrieved from these sensors is available in the [python-hpilo documentation](http://pythonhosted.org/python-hpilo/). - -

    - -

    - -## {% linkable_title Configuration %} - -To use this component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: hp_ilo - host: IP_ADDRESS or HOSTNAME - username: YOUR_USERNAME - password: YOUR_PASSWORD - monitored_variables: - - name: SENSOR NAME - sensor_type: SENSOR TYPE -``` - -Configuration variables: - -- **host** (*Required*): The hostname or IP address on which the ILO can be reached. -- **port** (*Optional*): The port on which the ILO can be reached, defaults to port `443`. -- **username** (*Required*): The username used to connect to the ILO. -- **password** (*Required*): The password used to connect to the ILO. -- **monitored_variables** array (*Optional*): Sensors created from the ILO data. Defaults to an empty list (no sensors are created). - - **name** (*Required*): The sensor name. - - **sensor_type** (*Required*): The sensor type, has to be one of the specified valid sensor types. - - **unit_of_measurement** (*Optional*): The sensors' unit of measurement. - - **value_template** (*Optional*): When a Jinja2 template is specified here, the created sensor will output the template result. The ILO response can be referenced with the `ilo_data` variable. - -Valid sensor_types: -- **server_name**: Get the name of the server this iLO is managing. -- **server_fqdn**: Get the fqdn of the server this iLO is managing. -- **server_host_data**: Get SMBIOS records that describe the host. -- **server_oa_info**: Get information about the Onboard Administrator of the enclosing chassis. -- **server_power_status**: Whether the server is powered on or not. -- **server_power_readings**: Get current, min, max and average power readings. -- **server_power_on_time**: How many minutes ago has the server been powered on. -- **server_asset_tag**: Gets the server asset tag. -- **server_uid_status**: Get the status of the UID light. -- **server_health**: Get server health information. -- **network_settings**: Get the iLO network settings. - -## {% linkable_title Example %} - -In order to get two sensors reporting CPU fan speed and Ambient Inlet Temperature, as well as a dump of `server_health` on a HP Microserver Gen8, you could use the following in your `configuration.yaml` file - -```yaml -sensor: - - platform: hp_ilo - host: IP_ADDRESS or HOSTNAME - username: YOUR_USERNAME - password: YOUR_PASSWORD - monitored_variables: - - name: CPU fanspeed - sensor_type: server_health - unit_of_measurement: '%' - value_template: '{% raw %}{{ ilo_data.fans["Fan 1"].speed[0] }}{% endraw %}' - - name: Inlet temperature - sensor_type: server_health - unit_of_measurement: '°C' - value_template: '{% raw %}{{ ilo_data.temperature["01-Inlet Ambient"].currentreading[0] }}{% endraw %}' - - name: Server Health - sensor_type: server_health - -``` - -

    - -

    - -## {% linkable_title Hardware specifics %} - -

    -Not every hardware supports all values. -

    - -### {% linkable_title HP Microserver Gen8 %} - -On this hardware you should avoid using the following sensor_types as `monitored_variables:` to prevent errors. - -- `server_oa_info` -- `server_power_readings` -- `server_power_on_time` diff --git a/source/_components/sensor.http.markdown b/source/_components/sensor.http.markdown deleted file mode 100644 index 9b0ec80fe1..0000000000 --- a/source/_components/sensor.http.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "HTTP Sensor" -description: "Instructions on how to integrate HTTP sensors within Home Assistant." -date: 2016-02-05 12:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: http.png -ha_category: Sensor -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 -http://IP_ADDRESS:8123/api/states/sensor.DEVICE_NAME -``` - -

    -You should choose a unique device name (DEVICE_NAME) to avoid clashes with other devices. -

    - - The JSON payload must contain the new state and should include the unit of measurement and a friendly name. The friendly name is used in the frontend to name the sensor. - -```json -{"state": "20", "attributes": {"unit_of_measurement": "°C", "friendly_name": "Bathroom Temperature"}} -``` - -For a quick test, `curl` can be useful to "simulate" a device. - -```bash -$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - -d '{"state": "20", "attributes": {"unit_of_measurement": "°C", "friendly_name": "Bathroom Temp"}}' \ - http://localhost:8123/api/states/sensor.bathroom_temperature -``` - -You can then use `curl` again to retrieve the [current sensor state](/developers/rest_api/#get-apistatesltentity_id) and verify the sensor is working. - -```bash -$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - http://localhost:8123/api/states/sensor.bathroom_temperature -{ - "attributes": { - "friendly_name": "Bathroom Temp", - "unit_of_measurement": "\u00b0C" - }, - "entity_id": "sensor.bathroom_temperature", - "last_changed": "09:46:17 06-02-2016", - "last_updated": "09:48:46 06-02-2016", - "state": "20" -} -``` - -For more examples please visit the [HTTP Binary Sensor](/components/binary_sensor.http/#examples) page. diff --git a/source/_components/sensor.htu21d.markdown b/source/_components/sensor.htu21d.markdown deleted file mode 100644 index a485fb0c38..0000000000 --- a/source/_components/sensor.htu21d.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: page -title: "HTU21D Temperature and humidity sensor" -description: "Instructions on 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 deleted file mode 100644 index 891f74ae21..0000000000 --- a/source/_components/sensor.hydroquebec.markdown +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: page -title: "Hydro-Québec" -description: "Instructions on how to integrate Hydro-Québec consumption profile within Home Assistant." -date: 2016-12-10 0:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: hydroquebec.svg -ha_category: Energy -ha_release: 0.35 -ha_iot_class: "Cloud Polling" ---- - - -Integrate your [Hydro-Québec](https://www.hydroquebec.com/portail/) consumption profile information into Home Assistant. - -

    -Breaking change: Since Home Assistant v0.40, -**contract** attribute is required. -

    - -```yaml -# Example configuration.yaml entry -sensor: - - platform: hydroquebec - username: MYUSERNAME - password: MYPASSWORD - contract: '123456789' - monitored_variables: - - period_total_bill - - period_length - - period_total_days -``` - -Configuration variables: - -- **username** (*Required*): Username used to log into the Hydro-Québec site. -- **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 - - **period_mean_daily_bill**: Period daily average bill - - **period_mean_daily_consumption**: Period daily average consumption - - **period_total_consumption**: Total Consumption - - **period_lower_price_consumption**: Period Lower price consumption - - **period_higher_price_consumption**: Period Higher price consumption - - **period_average_temperature**: Period Average temperature - - **yesterday_total_consumption**: Yesterday total consumption - - **yesterday_lower_price_consumption**: Yesterday lower price consumption - - **yesterday_higher_price_consumption**: Yesterday higher price consumption - - **yesterday_average_temperature**: Yesterday Average temperature - -To find your contract id, go to the [Hydro-Québec website](https://www.hydroquebec.com/portail/) -and connect to your account. -On the main page your can see your contract IDs. -It should be something like: "Contract 1234 56789". -You just have to keep numbers and remove the space. - -

    -Multi contracts accounts are supported only from Home Assistant v0.40. -

    diff --git a/source/_components/sensor.ihc.markdown b/source/_components/sensor.ihc.markdown deleted file mode 100644 index b3e91ed982..0000000000 --- a/source/_components/sensor.ihc.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "IHC Sensor" -description: "Instructions on how to integrate IHC Sensors within Home Assistant." -date: 2017-11-27 13:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: ihc.png -ha_category: Sensor -ha_release: 0.62 -ha_iot_class: "Local Push" ---- - -Before you can use the IHC Sensor platform, you must setup the [IHC Component](/components/ihc/) - -When auto setup is enabled the following products will be found in the IHC project and setup as sensors: - -* Dataline temperature sensor - Will insert 2 temperature sensors -* Dataline Humidity - Will insert 1 humidity and 2 temperature sensors (calculated dewpoint) -* Dataline Lux - will insert 1 light and 1 temperature sensor - -To manually configure IHC sensors insert this section: - -```yaml -sensor: - - platform: ihc - sensors: - - id: 12345 - name: 'mysensor' - unit_of_measurement: '°C' - - id: 12346 - ... -``` - -{% configuration %} -sensors: - description: List of sensors to setup manually - required: false - type: map - keys: - id: - description: The IHC resource id. - required: true - type: int - name: - description: The name of the component - required: false - type: string - unit_of_measurement: - description: Defines the unit of measurement of the sensor, if any. - required: false - type: string -{% endconfiguration %} - -The resource id should be a IHC float resource. -For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) - diff --git a/source/_components/sensor.imap.markdown b/source/_components/sensor.imap.markdown deleted file mode 100644 index a3b9af23b2..0000000000 --- a/source/_components/sensor.imap.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "IMAP Unread E-mail" -description: "Instructions on how to integrate IMAP unread email into Home Assistant." -date: 2016-07-11 06:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: smtp.png -ha_category: Sensor -ha_release: 0.25 -ha_iot_class: "Cloud Push" ---- - - -The `imap` sensor platform is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the amount of unread emails. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: imap - server: imap.gmail.com - port: 993 - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **server** (*Required*): The IP address or hostname of the IMAP server. -- **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.imap_email_content.markdown b/source/_components/sensor.imap_email_content.markdown deleted file mode 100644 index 22212426f6..0000000000 --- a/source/_components/sensor.imap_email_content.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "IMAP Email Content" -description: "Instructions on how to integrate IMAP email content sensor into Home Assistant." -date: 2016-09-09 12:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: smtp.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.25 ---- - - -The `imap_email_content` sensor platform will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: imap_email_content - server: imap.gmail.com - port: 993 - username: USERNAME - password: PASSWORD - senders: - - example@gmail.com -``` - -Configuration variables: - -- **server** (*Required*): The IP address or hostname of the IMAP server. -- **port** (*Required*): The port where the server is accessible. -- **name** (*Optional*): Name of the IMAP sensor to use in the frontend. -- **username** (*Required*): Username for the IMAP server. -- **password** (*Required*): Password for the IMAP server. -- **senders** (*Required*): A list of sender email addresses that are allowed to report state via email. Only emails received from these addresses will be processed. -- **value_template** (*Optional*): If specified this template will be used to render the state of the sensor. If a template is not supplied the message subject will be used for the sensor value. The following attributes will be supplied to the template: - - * **from**: The from address of the email - * **body**: The body of the email - * **subject**: The subject of the email - * **date**: The date and time the email was sent diff --git a/source/_components/sensor.influxdb.markdown b/source/_components/sensor.influxdb.markdown deleted file mode 100644 index 66680379f7..0000000000 --- a/source/_components/sensor.influxdb.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "InfluxDB Sensor" -description: "Instructions on how to integrate InfluxDB sensors within Home Assistant." -date: 2016-10-26 23:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: influxdb.png -ha_category: Sensor -ha_release: 0.32 -ha_iot_class: "depends" ---- - -The `influxdb` sensor allows you to use values from an [InfluxDB](https://influxdb.com/) database to populate a sensor state. This can be use to present statistic about home_assistant sensors if used with the `influxdb` history component. It can also be used with an external data source. - -To configure this sensor, you need to define the sensor connection variables and a list of queries to your `configuration.yaml` file. A sensor will be created for each query: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: influxdb - queries: - - name: mean value of foo - where: '"name" = ''foo''' - measurement: '"°C"' -``` - - -Configuration variables for the server: - -- **host** (*Optional*): IP address of your database host, eg. 192.168.1.10. Defaults to `localhost`. -- **port** (*Optional*): Port to use. Defaults to 8086. -- **username** (*Optional*): The username of the database user. -- **password** (*Optional*): The password for the database user account. -- **ssl** (*Optional*): Use `https` instead of `http` to connect. Defaults to `false`. -- **verify_ssl** (*Optional*): Verify SSL certificate for `https` request. Defaults to `false`. -- **queries** array (*Required*): List of queries - - **name** (*Required*): The name of the sensor. - - **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. - - **measurement** (*Required*): Defines the measurement name in InfluxDB (the from clause of the query). - - **where** (*Required*): Defines the data selection clause (the where clause of the query). - - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. - - **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. - - **group_function** (*Optional*): The group function to be used. Defaults to `mean`. - - **field** (*Optional*): The field name to select. Defaults to value. - -## {% linkable_title Examples %} - -### {% linkable_title Full configuration %} - -The example configuration entry below create two request to your local InfluxDB instance, one to the database `db1`, the other to `db2`: - -- `select last(value) as value from "°C" where "name" = "foo"` -- `select min(tmp) as value from "%" where "entity_id" = ''salon'' and time > now() - 1h` - -```yaml -sensor: - platform: influxdb - host: localhost - username: home-assistant - password: password - queries: - - name: last value of foo - unit_of_measurement: °C - value_template: '{% raw %}{{ value | round(1) }}{% endraw %}' - group_function: last - where: '"name" = ''foo''' - measurement: '"°C"' - field: value - database: db1 - - name: Min for last hour - unit_of_measurement: '%' - value_template: '{% raw %}{{ value | round(1) }}{% endraw %}' - group_function: min - where: '"entity_id" = ''salon'' and time > now() - 1h' - measurement: '"%"' - field: tmp - database: db2 -``` diff --git a/source/_components/sensor.insteon_plm.markdown b/source/_components/sensor.insteon_plm.markdown deleted file mode 100644 index 1974ea9540..0000000000 --- a/source/_components/sensor.insteon_plm.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Insteon PLM Sensor" -description: "Instructions on how to setup the Insteon PLM sensors locally within Home Assistant." -date: 2017-02-19 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Sensor -ha_iot_class: "Local Push" -ha_version: 0.65 ---- - -The `insteon_plm` sensor platform lets you control your sensors through -an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a -USB or serial port. To add support, set up the primary [insteon_plm] -component. - -[insteon_plm]: /components/insteon_plm/ - diff --git a/source/_components/sensor.iota.markdown b/source/_components/sensor.iota.markdown deleted file mode 100644 index e907cb2795..0000000000 --- a/source/_components/sensor.iota.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "IOTA sensor" -description: "Instructions on how to integrate IOTA wallets sensors with Home Assistant." -date: 2017-12-31 13:29 -sidebar: true -comments: false -sharing: true -footer: true -logo: iota.png -ha_category: Finance -ha_release: 0.62 -ha_iot_class: "Cloud Polling" ---- - -The sensors are automatically created if the [IOTA hub](/components/iota/) is present. - -Available sensors: - -- Wallet balance -- Node information - diff --git a/source/_components/sensor.irish_rail_transport.markdown b/source/_components/sensor.irish_rail_transport.markdown deleted file mode 100644 index f107633701..0000000000 --- a/source/_components/sensor.irish_rail_transport.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -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.57 ---- - - -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.isy994.markdown b/source/_components/sensor.isy994.markdown deleted file mode 100644 index 0be49fb0e1..0000000000 --- a/source/_components/sensor.isy994.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ISY994 Sensor" -description: "Instructions on how to integrate ISY994 sensors into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Sensor -ha_iot_class: "Local Push" ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) sensor from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/sensor.juicenet.markdown b/source/_components/sensor.juicenet.markdown deleted file mode 100644 index 03bad7fccc..0000000000 --- a/source/_components/sensor.juicenet.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Juicenet Sensor" -description: "Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: juicenet.png -ha_category: Sensor -ha_release: 0.47 ---- - - -The `juicenet` sensor platform allows you to get data from your [JuiceNet](https://emotorwerks.com/products/juicenet/) sensors. - -The requirement is that you have setup [Juicenet](/components/juicenet/). - -### {% linkable_title Added sensors %} - -These sensors will be added for each juicenet device in your account: - -- Status -- Temperature (inside the device) -- Voltage -- Amps -- Watts -- Charge time of session -- Energy added this session diff --git a/source/_components/sensor.kira.markdown b/source/_components/sensor.kira.markdown deleted file mode 100644 index 1306cf161b..0000000000 --- a/source/_components/sensor.kira.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Kira Sensor" -description: "Instructions on how to integrate Kira modules into Home Assistant." -date: 2017-05-07 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: keene.png -ha_category: Sensor -ha_iot_class: "Local Push" -ha_release: 0.45 ---- - -The `kira` platform allows you to respond to your [Kira](https://www.keene.co.uk/keene-ir-anywhere-single-worldwide.html) modules from within Home Assistant. This enables Home Assistant to respond to infrared inputs from a standard remote control. - -For configuration information see the [Kira component](/components/kira/) documentation. diff --git a/source/_components/sensor.knx.markdown b/source/_components/sensor.knx.markdown deleted file mode 100644 index f7e7892022..0000000000 --- a/source/_components/sensor.knx.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "KNX Sensor" -description: "Instructions on how to use the KNX Sensor with Home Assistant." -date: 2016-08-20 22:24 -sidebar: true -comments: false -sharing: true -footer: true -logo: knx.png -ha_category: Sensor -ha_release: 0.29 -ha_iot_class: "Local Push" ---- - -The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) sensors. - -The `knx` component must be configured correctly, see [KNX Component](/components/knx). - -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 - name: Heating.Valve1 - address: '2/0/0' - type: 'percent' - - platform: knx - name: Kitchen.Temperature - address: '6/2/1' - type: 'temperature' -``` - -- **name** (*Optional*): A name for this device used within Home Assistant. -- **address**: KNX group address of the sensor. -- **type** (Optional): "percent", "temperature", "humidity", "illuminance", "brightness", "speed_ms", "current", "power", "electric_current", "electric_potential", "energy", "frequency", "heatflowrate", "phaseanglerad", "phaseangledeg", "powerfactor" or "speed". - diff --git a/source/_components/sensor.kwb.markdown b/source/_components/sensor.kwb.markdown deleted file mode 100644 index 8c93feb4dd..0000000000 --- a/source/_components/sensor.kwb.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "KWB Easyfire Sensor" -description: "Instructions on how to integrate the KWB Easyfire sensor into Home Assistant." -date: 2017-03-06 14:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: kwb.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: "0.40" ---- - -The `kwb` component integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (http://www.kwbheizung.de/de/produkte/kwb-comfort-3.html) into Home Assistant. - -Direct connection via serial (RS485) or via telnet terminal server is supported. The serial cable has to be attached to the control unit port 25 (which is normally used for detached control terminals). - -Since this serial protocol is proprietary and closed, only most temperature sensors and a few control relays are supported, the rest is still WIP (see https://www.mikrocontroller.net/topic/274137). - -Direct connection via serial port: -```yaml -# Example configuration.yaml entry -- platform: kwb - name: kwb - device: "/dev/ttyUSB0" - type: serial - raw: False -``` - -Telnet terminal server with a serial-ethernet converter: -```yaml -# Example configuration.yaml entry - - platform: kwb - name: kwb - host: - port: 23 - type: tcp - raw: False -``` - -Configuration variables: - -*Required if used with a serial-ethernet converter* - -- **host**: The IP-address of the serial server -- **port**: The TCP-port of the serial server -- **type**: tcp - -*Required if used directly with a serial port* - -- **device**: The serial device of the machine -- **type**: serial - -*Optional for both cases* - -- **name**: The name of the device used in the frontend -- **raw**: Should the raw serial output be shown as a sensor diff --git a/source/_components/sensor.lacrosse.markdown b/source/_components/sensor.lacrosse.markdown deleted file mode 100644 index 5218a2b710..0000000000 --- a/source/_components/sensor.lacrosse.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: page -title: "LaCrosse Sensor" -description: "Instructions on 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 available 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 device. - required: true - type: string - default: /dev/ttyUSB0 - baud: - description: The serial baudrate. - required: true - type: int - default: 57600 - led: - description: Activate or deactivate the Jeelink LED. - required: false - type: boolean - frequency: - description: Initial frequency in 5kHz steps. - required: false - type: int - datarate: - description: "Set the data rate in kbps. Special values for well-known settings are: `0`: 17.241 kbps, `1`: 9.579 kbps, `2`: 8.842 kbps." - required: false - type: int - toggle_mask: - description: "The following values can be combined bitwise: `1` = 17.241 kbps, `2` = 9.579 kbps, `4` = 8.842 kbps" - required: false - type: int - toggle_interval: - description: Enable the toggle mode and set the interval in seconds. - required: false - type: int - 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.lastfm.markdown b/source/_components/sensor.lastfm.markdown deleted file mode 100644 index 8a78726e38..0000000000 --- a/source/_components/sensor.lastfm.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Last.fm" -description: "Instructions on how to integrate Last.fm sensors into Home Assistant." -date: 2016-05-18 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lastfm.png -ha_category: Social -ha_iot_class: "Cloud Polling" -ha_release: "0.20" ---- - - -The `lastfm` sensor platform will allow you to see whenever a user starts scrobbling, their play count, last song played, and top song played on [Last.fm](http://www.last.fm). - -To get an API key you need to create an [API account](http://www.last.fm/api/account/create). - -To use Last.fm with your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: lastfm - api_key: YOUR_API_KEY - users: - - user1 - - user2 -``` - -Configuration variables: - -- **api_key** (*Required*): Your API key. -- **users** array (*Required*): Array of users. - - **username** (*Required*): Username of the user. - diff --git a/source/_components/sensor.linux_battery.markdown b/source/_components/sensor.linux_battery.markdown deleted file mode 100644 index 4bc3ea6b7c..0000000000 --- a/source/_components/sensor.linux_battery.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Linux Battery" -description: "Instructions on how to integrate Linux Battery information into Home Assistant." -date: 2016-09-06 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: linux_battery.png -ha_category: System Monitor -ha_release: 0.28 -ha_iot_class: "Local Polling" ---- - -The `linux_battery` sensor platform is using the information stored in `/sys/class/power_supply/` on your local Linux system to display details about the current state of your battery. - -To setup a battery sensor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: linux_battery -``` - -{% configuration %} -name: - description: Friendly name to use for the frontend. - required: false - default: Battery - type: string -battery: - description: Number of the battery. - required: false - default: 1 - type: integer -system: - description: "The local system type. Support `linux` and `android`." - required: false - default: linux - type: string -{% endconfiguration %} diff --git a/source/_components/sensor.london_air.markdown b/source/_components/sensor.london_air.markdown deleted file mode 100644 index b6713b73dc..0000000000 --- a/source/_components/sensor.london_air.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -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)), Sulfur 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 - - 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](/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 deleted file mode 100644 index 45c7cce409..0000000000 --- a/source/_components/sensor.london_underground.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -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 deleted file mode 100644 index fc38aed98e..0000000000 --- a/source/_components/sensor.loop_energy.markdown +++ /dev/null @@ -1,66 +0,0 @@ ---- -layout: page -title: "Loop Energy" -description: "Instructions on how to integrate Loop Energy devices within Home Assistant." -date: 2016-04-02 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: loop.png -ha_category: Energy -ha_release: 0.17 -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 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 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: - -`Drupal.settings.navetas_realtime.` - -This should show something like - -```yaml -client_ip: "127.0.0.1" -gas_secret: "GAS_SECRET" -gas_serial: "GAS_SERIAL" -host: "www.your-loop.com" -... -secret: "ELECTRICAL_SECRET" -serial: "ELECTRICAL_SERIAL" -``` - -The serial and secret tokens are the ones you need. If you just have an electricity monitor then you won't see the gas keys. - -Now you have the keys, add the following lines to your `configuration.yaml`, replacing the `*_SERIAL` and `*_SECRET` keys with the ones you found in the console: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: loopenergy - electricity: - electricity_serial: 'ELECTRICAL_SERIAL' - electricity_secret: 'ELECTRICAL_SECRET' - gas: - gas_serial: 'GAS_SERIAL' - gas_secret: 'GAS_SECRET' -``` - -Configuration variables: - -- **electricity_serial** (*Required*): Serial number of your electricity sensor -- **electricity_secret** (*Required*): Secret key for your electricity sensor -- **gas_serial** (*Optional*): Serial number for your gas sensor. -- **gas_secret** (*Optional*): Secret key for your gas sensor. -- **gas_type** (*Optional*): Type of meter `imperial` or `metric`. Defaults to `metric`. -- **gas_calorific** (*Optional*): Calorific value of your gas supply (usually on your gas bill). Defaults to 39.11. - -The electricity readings are updated every 10 seconds and the gas readings every 15 minutes. - -The gas readings are experimental and not all gas meters are properly supported. So if the data you see doesn't agree with the readings you see via loop energy please report an issue. diff --git a/source/_components/sensor.luftdaten.markdown b/source/_components/sensor.luftdaten.markdown deleted file mode 100644 index 8e4a41cdef..0000000000 --- a/source/_components/sensor.luftdaten.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Luftdaten Sensor" -description: "Instructions on 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 - monitored_conditions: - description: A list of conditions you want to monitor. - required: true - type: list - keys: - P1: - description: Show the particle sensors (particles 10 microns and below). - P2: - description: Show the particle sensors (particles 2.5 microns and below). - temperature: - description: Display the temperature from the sensor. - humidity: - description: Display the humidity from the sensor. - pressure: - description: Display the pressure from the sensor. - show_on_map: - description: Option to show the position of the sensor on the map. - required: optional - default: false - type: boolean -{% endconfiguration %} - -

    -If you set `show_on_map` to `True` then the location attributes are named `latitude` and `longitude`. The default name of the location attributes is `lat` and `long` to avoid showing them on the map. -

    - -Not all sensors provide all conditions. Also, it's possible that the sensor values are not available all the time. To check what a sensor is publishing use `curl`: - -```bash -$ curl https://api.luftdaten.info/v1/sensor/[sensorid]/ -``` diff --git a/source/_components/sensor.lyft.markdown b/source/_components/sensor.lyft.markdown deleted file mode 100644 index c86b811e16..0000000000 --- a/source/_components/sensor.lyft.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Lyft Sensor" -description: "How to integrate Lyft in Home Assistant" -date: 2017-03-19 21:05 -sidebar: true -comments: false -sharing: true -footer: true -logo: lyft.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: 0.41 ---- - - -The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/reference/). - - -You must create an application [here](https://www.lyft.com/developers/manage) to obtain a `client_id` and `client_secret`. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: lyft - client_id: CLIENT_ID - client_secret: CLIENT_SECRET - start_latitude: 37.8116380 -``` - -Configuration variables: - -- **client_id** (*Required*): A client id obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/manage). -- **client_secret** (*Required*) A client secret obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/manage). -- **start_latitude** (*Required*): The starting latitude for a trip. -- **start_longitude** (*Required*): The starting longitude for a trip. -- **end_latitude** (*Optional*): The ending latitude for a trip. While `end_latitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time. -- **end_longitude** (*Optional*): The ending longitude for a trip. While `end_longitude` is optional, providing an `end_latitude`/`end_longitude` allows price estimates as well as time. -- **product_ids** (*Optional*): A list of Lyft product IDs. - -A full configuration entry could look like the sample below: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: lyft - client_id: CLIENT_ID - client_secret: CLIENT_SECRET - start_latitude: 37.8116380 - start_longitude: -122.2648050 - end_latitude: 37.615223 - end_longitude: -122.389977 - product_ids: - - 'lyft' - - 'lyft_plus' -``` diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown deleted file mode 100644 index 647f0e7ab0..0000000000 --- a/source/_components/sensor.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "Sensor" -description: "Instructions on how to setup your sensors with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -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 web services, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms. - -### {% linkable_title Device Class %} - -The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for sensors: - -- **None**: Generic sensor. This is the default and doesn't need to be set. -- **battery**: Percentage of battery that is left. -- **humidity**: Percentage of humidity in the air. -- **illuminance**: The current light level in lx or lm. -- **temperature**: Temperature in °C or °F. - -

    - -Example of various device class icons for sensors. -

    diff --git a/source/_components/sensor.melissa.markdown b/source/_components/sensor.melissa.markdown deleted file mode 100644 index 4b18248d52..0000000000 --- a/source/_components/sensor.melissa.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Melissa Sensor" -description: "Instructions on how to integrate Melissa sensors into Home Assistant." -date: 2017-08-30 12:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: mclimate.png -ha_category: Sensor -ha_iot_class: "Cloud Polling" -ha_release: 0.63 ---- - -The `Melissa` platform allows you to get data from your [Melissa](http://seemelissa.com/) sensors from within Home Assistant. - -The sensor platform will be automatically configured if Melissa component is configured. - -For more configuration information see the [Melissa component](/components/melissa/) documentation. diff --git a/source/_components/sensor.mercedesme.markdown b/source/_components/sensor.mercedesme.markdown deleted file mode 100644 index da5fd9ba45..0000000000 --- a/source/_components/sensor.mercedesme.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Mercedes me Sensor" -description: "Instructions on how to integrate Mercedes me sensors into Home Assistant." -date: 2018-01-27 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mercedesme.png -ha_category: Sensor -ha_iot_class: "Cloud Push" -ha_release: 0.63 ---- - -The `Mercedes me` platform allows you to get data from your [Mercedes me connected car](https://www.mercedes-benz.com/en/mercedes-me/) sensors from within Home Assistant. - -The sensor platform will be automatically configured if Mercedes me component is configured. - -For more configuration information see the [Mercedes me component](/components/mercedesme/) documentation. diff --git a/source/_components/sensor.metoffice.markdown b/source/_components/sensor.metoffice.markdown deleted file mode 100644 index ff62235771..0000000000 --- a/source/_components/sensor.metoffice.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Met Office Sensor" -description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." -date: 2017-03-23 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: metoffice.jpg -ha_category: Weather -ha_release: 0.42 -ha_iot_class: "Cloud Polling" ---- - -The `metoffice` sensor platform uses the Met Office's [DataPoint API][datapoint] for weather data. - -- Each sensor will be given the `device_id` of "Met Office [condition]" if `name:` is not set. -- The sensor checks for new data every minute, starting 30 minutes after the timestamp of the most recent data as the data is updated every half hour. - -To add the Met Office weather 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 -# Example configuration.yaml entry -sensor: - - platform: metoffice - api_key: YOUR_API_KEY - monitored_conditions: - - weather - - temperature - - feels_like_temperature - - wind_speed - - wind_direction - - wind_gust - - visibility - - visibility_distance - - uv - - precipitation - - humidity -``` - -Your location will be detected from your home `latitude` and `longitude` settings. - -Configuration variables: - -- **api_key** (*Required*): Your personal API key from the [Datapoint website](http://www.metoffice.gov.uk/datapoint). -- **name** (*Optional*): Additional name for the sensors. Default to platform name. -- **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. - - **weather**: A human-readable text summary of the current conditions. - - **temperature**: The current temperature. - - **feels_like_temperature**: A numerical value representing the apparent (or "feels like") temperature. - - **wind_speed**: The wind speed. - - **wind_direction**: Where the wind is coming from. - - **wind_gust**: If there are wind gusts. - - **visibility**: The average visibility. - - **visibility_distance**: The visibility distance. - - **uv**: The UV index. - - **precipitation**: The average expected intensity of precipitation occurring. - - **humidity**: The relative humidity. - -

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

    - diff --git a/source/_components/sensor.mfi.markdown b/source/_components/sensor.mfi.markdown deleted file mode 100644 index 4498c4d328..0000000000 --- a/source/_components/sensor.mfi.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "mFi Sensor" -description: "Instructions on how to integrate mFi sensors within Home Assistant." -date: 2016-02-07 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ubiquiti.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.32 ---- - - -The `mfi` sensor platform to allow you to monitor [mFi mPort interface and sensors](https://www.ubnt.com/mfi/mport/). - -## {% linkable_title Configuration %} - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mfi - host: IP_ADDRESS_OF_SENSOR - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your mFi controller. -- **port** (*Optional*): The port of your mFi controller. Defaults to 6443 for TLS, otherwise 6080. -- **username** (*Required*): The mFi admin username. -- **password** (*Required*): The mFi admin user's password. -- **ssl** (*Optional*): If `True`, use SSL/TLS to contact the mFi controller. Defaults to `True`. -- **verify_ssl** (*Optional*): Set this to `False` if your mFi controller has a self-signed certificate. Defaults to `True`. - diff --git a/source/_components/sensor.mhz19.markdown b/source/_components/sensor.mhz19.markdown deleted file mode 100644 index 25cd6405ce..0000000000 --- a/source/_components/sensor.mhz19.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "MH-Z19 CO2 Sensor" -description: "Instructions on how to integrate the MH-Z19 CO2 sensor with Home Assistant." -date: 2016-08-24 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mhz19_logo.png -ha_category: Sensor -ha_release: 0.27 -ha_iot_class: "Local Polling" ---- - -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. - -To use this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mhz19 - serial_device: /dev/tty.SLAB_USBtoUART -``` - -- **serial_device** (*Required*): The serial port to use. On *nix systems, it can often be identified by `$ ls /dev/tty*` -- **name** (*Optional*): The name displayed in the frontend. -- **monitored_conditions** (*Optional*, starting from version 0.40): Conditions to monitor. Supported conditions: - - **co2** (*default*) - - **temperature** - -Full example: -```yaml -sensor: - - platform: mhz19 - serial_device: /dev/tty.SLAB_USBtoUART - name: My MHZ19 - monitored_conditions: - - co2 - - temperature -``` diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown deleted file mode 100644 index 1034b4a5b3..0000000000 --- a/source/_components/sensor.miflora.markdown +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: page -title: "Mi Flora plant sensor" -description: "Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant." -date: 2016-09-19 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: miflora.png -ha_category: DIY -ha_release: 0.29 -ha_iot_class: "Local Polling" ---- - -The `miflora` sensor platform allows one to monitor plants. The [Mi Flora plant sensor](https://xiaomi-mi.com/sockets-and-sensors/xiaomi-huahuacaocao-flower-care-smart-monitor/) is a small Bluetooth Low Energy device that monitors not only the moisture but also light, temperature, and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. - -# Installation -Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: - -- On [Hass.io](/hassio/installation/): Miflora will work out of the box. -- On other Linux systems: - - Preferred solution: Install the `bluepy` library (via pip). When using a virtual environment, make sure to use install the library in the right one. -    - Fallback solution: Install `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` -- Windows and MacOS are currently not supported by the [miflora library](https://github.com/open-homeautomation/miflora/). - -# Configuration -Start a scan to determine the MAC addresses of the sensor: - -```bash -$ sudo hcitool lescan -LE Scan ... -F8:04:33:AF:AB:A2 [TV] UE48JU6580 -C4:D3:8C:12:4C:57 Flower mate -[...] -``` - -Or if your distribution is using bluetoothctl: - -```bash -$ bluetoothctl -[bluetooth]# scan on -[NEW] Controller [default] -[NEW] F8:04:33:AF:AB:A2 [TV] UE48JU6580 -[NEW] C4:D3:8C:12:4C:57 Flower mate -``` - - -Check for `Flower care` or `Flower mate` entries, those are your sensor. - -To use your Mi Flora plant sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: miflora - mac: 'xx:xx:xx:xx:xx:xx' - monitored_conditions: - - temperature -``` - -- **mac** (*Required*): The MAC address of your sensor. -- **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. - - **conductivity**: Conductivity in the soil. - - **battery**: Battery details. -- **name** (*Optional*): The name displayed in the frontend. -- **force_update** (*Optional*): Sends update events even if the value hasn't changed. -- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine. -- **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. - -Note that by default the sensor is only polled once every 20 minutes. This means with the `median: 3` setting will take as least 40 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. - -A full configuration example could look like the one below: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: miflora - mac: 'xx:xx:xx:xx:xx:xx' - name: Flower 1 - force_update: false - median: 3 - monitored_conditions: - - moisture - - light - - temperature - - conductivity - - battery -``` - diff --git a/source/_components/sensor.min_max.markdown b/source/_components/sensor.min_max.markdown deleted file mode 100644 index 428e848566..0000000000 --- a/source/_components/sensor.min_max.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Min/max Sensor" -description: "Instructions on how to integrate min/max sensors into Home Assistant." -date: 2016-10-13 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: "0.31" ---- - - -The `min_max` sensor platform consumes the state from other sensors to determine the minimum, maximum, latest (last) and the mean of the collected states. The sensor will always show you the lowest/highest/latest 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. - -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) + - float(states.sensor.living_room_temperature.state) + - float(states.sensor.office_temperature.state)) / 3) | round(2) -}}{% 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 unit of measurement is `ERR`. - -To enable the `min_max` sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: min_max - entity_ids: - - sensor.kitchen_temperature - - sensor.living_room_temperature - - sensor.office_temperature -``` - -Configuration variables: - -- **entity_ids** (*Required*): At least two entities to monitor. The unit of measurement of the first entry will be the one that's used. All entities must use the same unit of measurement. -- **type** (*Optional*): The type of sensor: `min`, `max`, `last` or `mean`. Defaults to `max`. -- **name** (*Optional*): Name of the sensor to use in the frontend. -- **round_digits** (*Optional*): Round mean value to specified number of digits. Defaults to 2. - diff --git a/source/_components/sensor.mitemp_bt.markdown b/source/_components/sensor.mitemp_bt.markdown deleted file mode 100644 index 0cfaa72542..0000000000 --- a/source/_components/sensor.mitemp_bt.markdown +++ /dev/null @@ -1,93 +0,0 @@ ---- -layout: page -title: "Xiaomi BLE Temperature and Humidity sensor" -description: "Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant." -date: 2018-04-22 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: DIY -ha_release: 0.69 -ha_iot_class: "Local Polling" ---- - -The `mitemp_bt` sensor platform allows one to monitor room temperature and humidity. The [Xiaomi Mijia BLE Temperature and Humidity sensor with LCD](https://www.amazon.com/Temperature-Humidity-Xiaomi-Bluetooth-Screen-Remote/dp/B079L6N6PC) is a small Bluetooth Low Energy device that monitors the room temperature and humidity. As only a single BLE device can be polled at the same time, the library employs locking to make sure this is the case. - -# Installation -Depending on the operating system you're running, you have to configure the proper Bluetooth backend on your system: - -- On [Hass.io](/hassio/installation/): Not yet supported. -- On other Linux systems: - - Preferred solution: Install the `bluepy` and `btlewrap` library (via pip). When using a virtual environment, make sure to use install the library in the right one. -    - Fallback solution: Install `btlewrap` library (via pip) and `gatttool` via your package manager. Depending on the distribution, the package name might be: `bluez`, `bluetooth`, `bluez-deprecated` -- Windows and MacOS are currently not supported by the btlewrap library. - -# Configuration -Start a scan to determine the MAC addresses of the sensor: - -```bash -$ sudo hcitool lescan -LE Scan ... -4C:65:A8:D2:31:7F MJ_HT_V1 -[...] -``` - -Or if your distribution is using bluetoothctl: - -```bash -$ bluetoothctl -[bluetooth]# scan on -Discovery started -[CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes -[NEW] Device 4C:65:A8:D2:31:7F MJ_HT_V1 - -``` - - -Check for `MJ_HT_V1` or similar entries, those are your sensor. - -To use your Mi Temperature and Humidity sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mitemp_bt - mac: 'xx:xx:xx:xx:xx:xx' - monitored_conditions: - - temperature -``` - -- **mac** (*Required*): The MAC address of your sensor. -- **monitored_conditions** array (*Optional*): The parameters that should be monitored (defaults to monitoring all parameters). - - **temperature**: Temperature in C at the sensor's location. - - **humidity**: Humidity level in % at the sensor's location. - - **battery**: Battery details (in %). -- **name** (*Optional*): The name displayed in the frontend. -- **force_update** (*Optional*): Sends update events even if the value hasn't changed. -- **median** (*Optional*): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes, `median: 1` will work fine. -- **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. - -Note that by default the sensor is only polled once every 5 minutes. This means with the `median: 3` setting will take as least 15 minutes before the sensor will report a value after a Home Assistant restart. Even though the hardware is able to provide new values every second, room temperaturs don't change that quickly. -Reducing polling intervals will have a negative effect on the battery life. - -A full configuration example could look like the one below: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mitemp_bt - mac: 'xx:xx:xx:xx:xx:xx' - name: Kids Room Temp - force_update: false - median: 3 - monitored_conditions: - - temperature - - humidity - - battery -``` - diff --git a/source/_components/sensor.modbus.markdown b/source/_components/sensor.modbus.markdown deleted file mode 100644 index 5868888488..0000000000 --- a/source/_components/sensor.modbus.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: Modbus Sensor -description: "Instructions on how to integrate Modbus sensors into Home Assistant." -date: 2015-08-30 23:38 -sidebar: true -comments: false -sharing: true -footer: true -logo: modbus.png -ha_category: Sensor -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - - -The `modbus` sensor allows you to gather data from [Modbus](http://www.modbus.org/) registers. - -## {% linkable_title Configuration %} - -To use your Modbus sensors in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: modbus - registers: - - name: Sensor1 - unit_of_measurement: °C - slave: 1 - register: 100 - - name: Sensor2 - unit_of_measurement: mg - slave: 1 - register: 110 - count: 2 - - name: Sensor3 - unit_of_measurement: °C - slave: 1 - register: 120 - register_type: input - data_type: float - scale: 0.01 - offset: -273.16 - precision: 2 -``` - -Configuration variables: - -- **registers** array (*Required*): The array contains a list of relevant registers to read from. - - **name** (*Required*): Name of the sensor. - - **slave** (*Required*): The number of the slave (Optional for tcp and upd Modbus). - - **register** (*Required*): Register number. - - **register_type** (*Optional*): Modbus register type (holding, input), default holding. - - **unit_of_measurement** (*Optional*): Unit to attach to value. - - **count** (*Optional*): Number of registers to read. - - **reverse_order** (*Optional*): Reverse the order of registers when count >1, default False. - - **scale** (*Optional*): Scale factor (output = scale * value + offset), default 1. - - **offset** (*Optional*): Final offset (output = scale * value + offset), default 0. - - **precision** (*Optional*): Number of valid decimals, default 0. - - **data_type** (*Optional*): Response representation (int, uint, float, custom). If float selected, value will be converted to IEEE 754 floating point format. Default int. - - **structure** (*Optional*): If data_type is custom specify here a double quoted python struct format string to unpack the value. See python documentation for details. Ex: ">i". - -It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. - -### {% 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 - unit_of_measurement: °C - count: 1 - scale: 0.1 - offset: 0 - precision: 1 - data_type: int -``` diff --git a/source/_components/sensor.modem_callerid.markdown b/source/_components/sensor.modem_callerid.markdown deleted file mode 100644 index 6fa1ed1919..0000000000 --- a/source/_components/sensor.modem_callerid.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "Caller ID Sensor" -description: "Instructions on how to integrate the Caller ID sensor into Home Assistant." -date: 2017-02-20 22:10 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_release: "0.40" -ha_iot_class: "Local Polling" ---- - -The `modem_callerid` sensor platform uses an available modem for collecting caller ID information. It requires a Hayes AT compatible modem that supports caller ID detection (via AT+VCID=1). - -To enable the sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: modem_callerid -``` - -Configuration variables: - -- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `modem_callerid`. -- **device** (*Optional*): Device port name. Defaults to `/dev/ttyACM0`. - -To find the path of your USB modem, run: - -`$ 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` - -Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/modem`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). - -When the sensor detects a new call, its state changes to 'ring' for each ring and 'callerid' when caller id information is received. It returns to 'idle' once ringing stops. The state event includes an attribute payload that includes the time of the call, name and number. - -Some example automations: -```yaml -{% raw %}automation: - - alias: Notify CallerID - trigger: - platform: state - entity_id: sensor.modem_callerid - to: "callerid" - action: - service: notify.notify - data: - message: 'Call from {{ states.sensor.modem_callerid.attributes.cid_name }} at {{ states.sensor.modem_callerid.attributes.cid_number }} ' - - alias: Notify CallerID webui - trigger: - platform: state - entity_id: sensor.modem_callerid - to: "callerid" - action: - service: persistent_notification.create - data: - title: "Call from" - message: '{{ states.sensor.modem_callerid.attributes.cid_time.strftime("%I:%M %p") }} {{ states.sensor.modem_callerid.attributes.cid_name }} {{ states.sensor.modem_callerid.attributes.cid_number }} ' - - alias: Say CallerID - trigger: - platform: state - entity_id: sensor.modem_callerid - to: "callerid" - action: - service: tts.google_say - data_template: - message: 'Call from {{ states.sensor.modem_callerid.attributes.cid_name }} '{% endraw %} -``` - diff --git a/source/_components/sensor.mold_indicator.markdown b/source/_components/sensor.mold_indicator.markdown deleted file mode 100644 index b14f077a19..0000000000 --- a/source/_components/sensor.mold_indicator.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "Mold Indicator" -description: "How to use the mold growth indication component in Home Assistant" -date: 2016-02-11 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_release: '0.20' -ha_iot_class: "Local Polling" ---- - -The Mold Indicator sensor component consumes information of two temperature sensors and a humidity sensor to give an indication for possible mold growth in your home. In case of bad ventilation and insulation, the indoor humidity may lead to condensation on cold surfaces as the windows or even walls. Condensation or a high relative humidity near those cold surfaces leads to a higher risk for mold growth. This sensor component estimates the temperature at a pre-calibrated critical point in the room (the coldest surface) and calculates the relative humidity of the air at that point. If the sensor value rises above approximately 70 percent, mold growth might occur and the room should be ventilated. At 100%, the air humidity condensates at the critical point. - -The sensor data may be used e.g., to signal bad air quality (too high air humidity) or to automate operation of indoor air humidifiers to keep the indoor humidity at an optimum. To use the Mold Indicator sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mold_indicator - indoor_temp_sensor: sensor.temp - indoor_humidity_sensor: sensor.humidity - outdoor_temp_sensor: sensor.weather_temperature - calibration_factor: 2.0 -``` - -Configuration variables: - -- **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. - -## {% linkable_title Calibration %} - -The Mold Indicator sensor component needs to be calibrated in order to estimate the temperature at the critical point from the outdoor and indoor temperature. First find the coldest surface in the room (critical point), which is typically near the window frames, but depends on the insulation of your home. For calibration you need to measure the temperature at this critical point and simultaneously write down the values for the indoor- and outdoor temperature sensors used for the Mold Indicator. Be sure that there is a significant indoor to outdoor temperature difference to get the best calibration results. -With the three measured temperatures (in Celsius or Fahrenheit), the calibration_factor for your configuration file is given by: - -```text -calibration_factor = (temp_indoor - temp_outdoor) / (temp_criticalpoint - temp_outdoor) -``` diff --git a/source/_components/sensor.moon.markdown b/source/_components/sensor.moon.markdown deleted file mode 100644 index 8b90dc0a44..0000000000 --- a/source/_components/sensor.moon.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Moon Sensor" -description: "Instructions on how to integrate the moon sensor into Home Assistant." -date: 2017-02-03 07:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Weather -ha_iot_class: "Local Polling" -ha_release: 0.38 ---- - - -The `moon` sensor platform is tracking the moon phases. - -To enable the moon sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: moon -``` -This sensor will return one of the following values: -`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 deleted file mode 100644 index 6514684183..0000000000 --- a/source/_components/sensor.mopar.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -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 -# Example configuration.yaml entry -sensor: - - platform: mopar - username: YOUR_USERNAME - password: YOUR_PASSWORD - pin: YOUR_UCONNECT_PIN -``` - -{% configuration %} -username: - description: Your mopar.com username. - required: true - type: string -password: - description: Your mopar.com password. - required: true - type: string -pin: - description: v - required: true - type: string -{% endconfiguration %} - -## {% linkable_title Service %} - -Call the `sensor.mopar_remote_command` service to perform a remote command on your vehicle. - -- **vehicle_index** (*Required*): `vehicle_index` attribute found on sensor. -- **command** (*Required*): One of `lock/unlock/engineon/engineoff/horn`. - -Example data: - -```json -{ - "vehicle_index": 0, - "command": "unlock" -} -``` diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown deleted file mode 100644 index 0b44200064..0000000000 --- a/source/_components/sensor.mqtt.markdown +++ /dev/null @@ -1,206 +0,0 @@ ---- -layout: page -title: "MQTT Sensor" -description: "Instructions on how to integrate MQTT sensors within Home Assistant." -date: 2015-05-30 23:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Sensor -ha_release: 0.7 -ha_iot_class: depends ---- - - -This `mqtt` 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 last known value. Otherwise, the initial state will be undefined. - -## {% linkable_title Configuration %} - -To use your MQTT sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mqtt - state_topic: "home/bedroom/temperature" -``` - -{% configuration %} -state_topic: - description: The MQTT topic subscribed to receive sensor values. - required: true - type: string -name: - description: Name of the MQTT sensor. - required: false - type: string - default: MQTT Sensor -qos: - description: The maximum QoS level of the state topic. - required: false - type: int - default: 0 -unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. - required: false - type: string -icon: - description: Icon for the sensor (e.g. `mdi:gauge`). - required: false - type: string -expire_after: - description: Defines the number of seconds after the value expires if it's not updated. - required: false - type: int - default: 0 -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." - required: false - type: template -force_update: - description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. - reqired: false - type: boolean - default: False -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -json_attributes: - description: A list of keys to extract values from a JSON dictionary payload and then set as sensor attributes. - reqired: false - type: list, string -unique_id: - description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception." - required: false - type: string -device_class: - description: The type/class of the sensor to set the icon in the frontend. - required: false - type: device_class - default: None -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title JSON attributes configuration %} - -The example sensor below shows a configuration example which uses JSON in the state topic to add extra attributes. It also makes use of the availability topic. Attributes can then be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}. - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: mqtt - name: "BS RSSI" - state_topic: "HUISHS/BunnyShed/NodeHealthJSON" - unit_of_measurement: 'dBm' - value_template: "{{ value_json.RSSI }}" - availability_topic: "HUISHS/BunnyShed/status" - payload_available: "online" - payload_not_available: "offline" - json_attributes: - - ClientName - - IP - - MAC - - RSSI - - HostName - - ConnectedSSID -``` -{% endraw %} - -### {% linkable_title Get battery level %} - -If you are using the [OwnTracks](/components/device_tracker.owntracks/) and enable the reporting of the battery level then you can use a MQTT sensor to keep track of your battery. A regular MQTT message from OwnTracks looks like this: - -```bash -owntracks/tablet/tablet {"_type":"location","lon":7.21,"t":"u","batt":92,"tst":144995643,"tid":"ta","acc":27,"lat":46.12} -``` - -Thus the trick is extracting the battery level from the payload. - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: mqtt - name: "Battery Tablet" - state_topic: "owntracks/tablet/tablet" - unit_of_measurement: '%' - value_template: "{{ value_json.batt }}" -``` -{% endraw %} - -### {% linkable_title Get temperature and humidity %} - -If you are using a DHT sensor and a NodeMCU board (esp8266), you can retrieve temperature and humidity with a MQTT sensor. A code example can be found [here](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_sensor_dht22). A regular MQTT message from this example looks like this: - -```json -office/sensor1 - { - "temperature": 23.20, - "humidity": 43.70 - } -``` - -Then use this configuration example to extract the data from the payload: - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: mqtt - name: "Temperature" - state_topic: "office/sensor1" - unit_of_measurement: '°C' - value_template: "{{ value_json.temperature }}" - - platform: mqtt - name: "Humidity" - state_topic: "office/sensor1" - unit_of_measurement: '%' - value_template: "{{ value_json.humidity }}" -``` -{% endraw %} - -### {% linkable_title Get sensor value from a device with ESPEasy %} - -Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" set a name ("Unit Name:") for your device (here it's "bathroom"). A "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example the topics are prefixed with "home". Please keep in mind that the ESPEasy default topics start with a `/` and only contain the name when writing your entry for the `configuration.yaml` file. - -- **Controller Subscribe**: `home/%sysname%/#` (instead of `/%sysname%/#`) -- **Controller Publish**: `home/%sysname%/%tskname%/%valname%` (instead of `/%sysname%/%tskname%/%valname%`) - -Also, add a sensor in the "Devices" tap with the name "analog" and "brightness" as value. - -As soon as the unit is online, you will get the state of the sensor. - -```bash -home/bathroom/status Connected -... -home/bathroom/analog/brightness 290.00 -``` - -The configuration will look like the example below: - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: mqtt - name: "Brightness" - state_topic: "home/bathroom/analog/brightness" -``` -{% endraw %} diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/sensor.mqtt_room.markdown deleted file mode 100644 index 96aaa9dc7d..0000000000 --- a/source/_components/sensor.mqtt_room.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "MQTT Room Presence" -description: "Instructions on how to track room presence within Home Assistant." -date: 2016-08-21 03:58 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Presence Detection -ha_release: 0.27 -ha_iot_class: depends ---- - - -The `mqtt_room` sensor platform allows you to detect the indoor location of devices using MQTT clients. - -## {% linkable_title Configuration %} - -To use this device tracker in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: mqtt_room - device_id: 123testid - name: 'Cool device' - state_topic: 'room_presence' - timeout: 5 - away_timeout: 60 -``` - -Configuration variables: - -- **device_id** (*Required*): The device id to track for this sensor. -- **name** (*Optional*): The name of the sensor. -- **state_topic** (*Optional*): The topic that contains all subtopics for the rooms. -- **timeout** (*Optional*): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 seconds scanner2 reports device1 with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed. -- **away_timeout** (*Optional*): The time in seconds after which the state should be set to `not_home` if there were no updates. `0` disables the check and is the default. - -Example JSON that should be published to the room topics: - -```json -{ - "id": "123testid", - "name": "Test Device", - "distance": 5.678 -} -``` - -### {% linkable_title Setting up clients %} - -This component works with any software that is sending data in the given format. -Each client should post the discovered devices in its own subtopic of the configured topic. -Instead of developing your own application, you can also use any of these already existing clients: - -- [**room-assistant**](https://github.com/mKeRix/room-assistant): looks for Bluetooth LE beacons, based on Node.js -- [**Happy Bubbles Presence Server**](https://github.com/happy-bubbles/presence): presence detection server for Happy Bubbles BLE-scanning devices, based on Go diff --git a/source/_components/sensor.mvglive.markdown b/source/_components/sensor.mvglive.markdown deleted file mode 100644 index 7d613d8598..0000000000 --- a/source/_components/sensor.mvglive.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "MVG" -description: "Instructions on how to integrate Munich public transport departure times into Home Assistant." -date: 2017-03-21 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mvg.png -ha_category: Transport -ha_release: 0.42 -ha_iot_class: "Cloud Polling" ---- - - -The `mvglive` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes. - -## {% linkable_title Configuration %} - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mvglive - nextdeparture: - - station: STATION_OR_STOP_NAME -``` - -Configuration variables: - - - **station** (*Required*): Name of the stop or station. Visit [the MVG live web site](http://www.mvg-live.de) to find valid names. - - **destinations** (*Optional*): One or multiple final stop names, e.g., 'Feldmoching' or ['Feldmoching','Harthof']. This can be used to only consider a particular direction of travel - - **directions** (*Optional*): Filter by direction of the departure. For Tram, Bus, SEV, and S-Bahn, direction = direction. For U-Bahn trains, directions are more general. For U1, U2, U3 and U6, direction='1' indicates south-bound trains, direction='2' indicates northbound trains. For U4 and U5, direction='1' indicates east-bound trains, direction='2' indicates west-bound trains. For example, setting directions: '1' can be used to get all south-bound trains at Scheidplatz. - - **lines** (*Optional*): One or more line numbers, e.g., 'U2' or ['U2','U8','N41'] - - **products** (*Optional*): One or more modes of transport, defaults to all 4 modes ['U-Bahn', 'Tram', 'Bus', 'S-Bahn']. - - **timeoffset** (*Optional*): Do not display departures leaving sooner than this number of minutes (defaults to 0). Useful if you are a couple of minutes away from the stop. - - **name** (*Optional*): You can customize the name of the sensor, which defaults to the station name. -## {% linkable_title Examples %} - -### {% linkable_title Full configuration %} - -The example below shows a full configuration with three sensors that showcase the various configuration options. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: mvglive - nextdeparture: - - station: Hauptbahnhof - name: Hbf - destinations: ['München Flughafen Terminal','Markt Schwaben'] - products: 'S-Bahn' - timeoffset: 2 - - station: Sendlinger Tor - lines: ['U2','U8'] - - station: Scheidplatz - products: ['U-Bahn'] - directions: '1' -``` -The first sensor will return S-Bahn departures to Munich Airport or Markt Schwaben that are at least 2 minutes away. The second sensor returns U2 and U8 departures from Sendlinger Tor while the third sensor returns all south-bound U-Bahn trains from Scheidplatz. diff --git a/source/_components/sensor.mysensors.markdown b/source/_components/sensor.mysensors.markdown deleted file mode 100644 index a6e8657014..0000000000 --- a/source/_components/sensor.mysensors.markdown +++ /dev/null @@ -1,184 +0,0 @@ ---- -layout: page -title: "MySensors Sensor" -description: "Instructions on how to integrate MySensors sensors into Home Assistant." -date: 2016-10-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Sensor -featured: false -ha_iot_class: "Local Push" ---- - -Integrates MySensors sensors into Home Assistant. See the [main component] for configuration instructions. - -The following sensor types are supported: - -##### MySensors version 1.4 and higher - -S_TYPE | V_TYPE --------------------|--------------------------------------- -S_TEMP | V_TEMP -S_HUM | V_HUM -S_BARO | V_PRESSURE, V_FORECAST -S_WIND | V_WIND, V_GUST, V_DIRECTION -S_RAIN | V_RAIN, V_RAINRATE -S_UV | V_UV -S_WEIGHT | V_WEIGHT, V_IMPEDANCE -S_POWER | V_WATT, V_KWH -S_DISTANCE | V_DISTANCE -S_LIGHT_LEVEL | V_LIGHT_LEVEL -S_IR | V_IR_RECEIVE -S_WATER | V_FLOW, V_VOLUME -S_AIR_QUALITY | V_DUST_LEVEL -S_CUSTOM | V_VAR1, V_VAR2, V_VAR3, V_VAR4, V_VAR5 -S_DUST | V_DUST_LEVEL -S_SCENE_CONTROLLER | V_SCENE_ON, V_SCENE_OFF - -##### MySensors version 1.5 and higher - -S_TYPE | V_TYPE ----------------|---------------------------------- -S_COLOR_SENSOR | V_RGB -S_MULTIMETER | V_VOLTAGE, V_CURRENT, V_IMPEDANCE -S_SOUND | V_LEVEL -S_VIBRATION | V_LEVEL -S_MOISTURE | V_LEVEL -S_LIGHT_LEVEL | V_LEVEL -S_AIR_QUALITY | V_LEVEL (replaces V_DUST_LEVEL) -S_DUST | V_LEVEL (replaces V_DUST_LEVEL) - -##### MySensors version 2.0 and higher - -S_TYPE | V_TYPE -----------------|-------------------------- -S_INFO | V_TEXT -S_GAS | V_FLOW, V_VOLUME -S_GPS | V_POSITION -S_WATER_QUALITY | V_TEMP, V_PH, V_ORP, V_EC - -### {% linkable_title Custom unit of measurement %} - -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 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. - -### {% linkable_title MySensors 1.5 example sketch %} - -```cpp -/** - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/light - */ - -#include -#include -#include -#include - -#define SN "LightLuxSensor" -#define SV "1.0" -#define CHILD_ID 1 -unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds) - -BH1750 lightSensor; -MySensor gw; -MyMessage msg(CHILD_ID, V_LEVEL); -MyMessage msgPrefix(CHILD_ID, V_UNIT_PREFIX); // Custom unit message. -uint16_t lastlux = 0; - -void setup() -{ - gw.begin(); - gw.sendSketchInfo(SN, SV); - gw.present(CHILD_ID, S_LIGHT_LEVEL); - lightSensor.begin(); - gw.send(msg.set(lastlux)); - gw.send(msgPrefix.set("lux")); // Set custom unit. -} - -void loop() -{ - uint16_t lux = lightSensor.readLightLevel(); // Get Lux value - if (lux != lastlux) { - gw.send(msg.set(lux)); - lastlux = lux; - } - - gw.sleep(SLEEP_TIME); -} -``` - -### {% linkable_title MySensors 2.x example sketch %} - -```cpp -/** - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/light - */ - -#define MY_DEBUG -#define MY_RADIO_NRF24 - -#include -#include -#include - -#define SN "LightLuxSensor" -#define SV "1.0" -#define CHILD_ID 1 -unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds) - -BH1750 lightSensor; -MyMessage msg(CHILD_ID, V_LEVEL); -MyMessage msgPrefix(CHILD_ID, V_UNIT_PREFIX); // Custom unit message. -uint16_t lastlux = 0; -bool initialValueSent = false; - -void setup() -{ - sendSketchInfo(SN, SV); - present(CHILD_ID, S_LIGHT_LEVEL); - lightSensor.begin(); -} - -void loop() -{ - if (!initialValueSent) { - Serial.println("Sending initial value"); - send(msgPrefix.set("custom_lux")); // Set custom unit. - send(msg.set(lastlux)); - Serial.println("Requesting initial value from controller"); - request(CHILD_ID, V_LEVEL); - wait(2000, C_SET, V_LEVEL); - } - uint16_t lux = lightSensor.readLightLevel(); // Get Lux value - if (lux != lastlux) { - send(msg.set(lux)); - lastlux = lux; - } - - sleep(SLEEP_TIME); -} - -void receive(const MyMessage &message) { - if (message.type == V_LEVEL) { - if (!initialValueSent) { - Serial.println("Receiving initial value from controller"); - initialValueSent = true; - } - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: http://www.mysensors.org/download diff --git a/source/_components/sensor.nederlandse_spoorwegen.markdown b/source/_components/sensor.nederlandse_spoorwegen.markdown deleted file mode 100644 index bbdee43f63..0000000000 --- a/source/_components/sensor.nederlandse_spoorwegen.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Nederlandse Spoorwegen" -description: "Instructions on how to integrate timetable data for traveling 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 traveling routes. - - **name** (*Required*): Name of the route. - - **from** (*Required*): The start station. - - **to** (*Required*): Direction of the traveling. - - **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 deleted file mode 100644 index 73c15de3d2..0000000000 --- a/source/_components/sensor.nest.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Nest Sensor" -description: "Instructions on how to integrate Nest sensors within Home Assistant." -date: 2016-01-13 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: nest.png -ha_category: Sensor -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -The `nest` sensor platform lets you monitor sensors connected to your [Nest](https://nest.com) devices. - -

    -You must have the [Nest component](/components/nest/) configured to use these sensors. The sensors will be setup if the `nest` component is configured and the required configuration for the `nest sensor` is set. -

    - -To enable sensors and customize which sensors are setup, you can extend the [Nest component](/components/nest/) configuration in your `configuration.yaml` file with the following settings: -```yaml -# Example configuration.yaml entry -nest: - sensors: - monitored_conditions: - - 'temperature' - - 'target' -``` - -By default all sensors for your available Nest devices will be monitored. Leave `monitored_conditions` blank to disable all sensors for the [Nest component](/components/nest/). - -Configuration variables: - -- **monitored_conditions** array (*Optional*): States to monitor. - -The following conditions are available by device: - -- Nest Thermostat: - - humidity - - operation\_mode - - temperature - - target - - hvac\_state: The currently active state of the HVAC system, `heating`, `cooling`, or `off`. -- Nest Protect: - - co\_status - - smoke\_status - - battery\_health -- Nest Camera: none - diff --git a/source/_components/sensor.nest_weather.markdown b/source/_components/sensor.nest_weather.markdown deleted file mode 100644 index 971e72cb16..0000000000 --- a/source/_components/sensor.nest_weather.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Nest Weather Sensor" -description: "Instructions on how to integrate Nest sensors within Home Assistant." -date: 2016-01-13 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: nest.png -ha_category: Weather -ha_iot_class: "Cloud Polling" ---- - -

    -**This platform is currently not available. It's possible that `nest_weather` will be removed in the future.** -

    - - -The `nest` weather sensor platform let you monitor current weather conditions based on the location of your [Nest](https://nest.com) thermostat. - -

    -You must have the [Nest component](/components/nest/) configured to use those sensors. -

    - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -sensor: - - platform: nest - monitored_conditions: - - 'weather_temperature' -``` - -Configuration variables: - -- **monitored_conditions** array (*Required*): States to monitor. - - 'weather_temperature' - - 'weather_humidity' - - 'weather_condition' - - 'wind_speed' - - 'wind_direction' - diff --git a/source/_components/sensor.netatmo.markdown b/source/_components/sensor.netatmo.markdown deleted file mode 100644 index 856ccc0ec4..0000000000 --- a/source/_components/sensor.netatmo.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "Netatmo Sensor" -description: "Instructions on how to integrate Netatmo sensors into Home Assistant." -date: 2016-06-23 11:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: netatmo.png -ha_category: Weather -ha_iot_class: "Cloud Polling" ---- - -### {% linkable_title Basic Configuration %} - -The `netatmo` sensor platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) device. - -To enable the Netatmo sensor, you have to set up [netatmo](/components/netatmo/), this will use discovery to add your sensor. - -### {% linkable_title Advanced configuration %} - -If you want to select a specific sensor, set discovery to False for [netatmo](/components/netatmo/) and add the following lines to your `configuration.yaml`: - -The `netatmo` sensor platform is consuming the information provided by a [Netatmo](https://www.netatmo.com) device. - -To enable the Netatmo sensor, you first have to set up [netatmo](/components/netatmo/), and add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: netatmo - station: STATION_NAME - modules: - module_name1: - - temperature - module_name2: - - temperature - - battery_vp -``` - -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 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. - - **pressure**: Pressure in mbar. - - **noise**: Noise level in dB. - - **humidity**: Humidity in %. - - **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 - - **min_temp**: Min temperature for today - - **max_temp**: Max temperature for today - - **rf_status**: Current radio status per module. (90=low, 60=highest) - - **wifi_status**: Wifi status per Base station - - **battery_vp**: Current battery status per module. - -### {% linkable_title Find your modules name %} - -You can find your modules name in your [online NetAtmo account](https://my.netatmo.com/app/station). These names can be found and changed in parameters. You have to provide these name in your Home Assistant `configuration.yaml` file. - -

    - -

    diff --git a/source/_components/sensor.netdata.markdown b/source/_components/sensor.netdata.markdown deleted file mode 100644 index 4cd3157c19..0000000000 --- a/source/_components/sensor.netdata.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Netdata" -description: "Instructions on how to integrate Netdata within Home Assistant." -date: 2016-12-05 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: netdata.png -ha_category: System Monitor -ha_release: 0.35 -ha_iot_class: "Local Polling" ---- - - -The `netdata` sensor platform allows you to display information collected by [Netdata](http://my-netdata.io/). - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: netdata -``` - -Configuration variables: - -- **host** (*Optional*): The IP address or hostname of your Netdata instance. Defaults to `localhost`. -- **port** (*Optional*): The port that the Netdata instance is running on. Defaults to `19999`. -- **name** (*Optional*): Name of the sensor. Defaults to "Netdata". -- **resources** (*Optional*) array: List of details to monitor. Defaults is `memory_free`. - - 'memory_free': Free memory - - 'memory_used': Used memory - - 'memory_cached': Cached memory - - 'memory_buffers': Buffered memory - - 'swap_free': Free swap - - 'swap_used': Used swap - - 'processes_running': Processes Running - - 'processes_blocked': Processes Blocked - - '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.neurio_energy.markdown b/source/_components/sensor.neurio_energy.markdown deleted file mode 100644 index 03f9c22b58..0000000000 --- a/source/_components/sensor.neurio_energy.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Neurio" -description: "Instructions on how to integrate Neurio within Home Assistant." -date: 2016-02-15 21:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: neurio.png -ha_category: Energy -ha_iot_class: "Cloud Polling" -ha_release: 0.14 ---- - - -Integrate your [Neurio](http://neur.io/) meter information into Home Assistant. To get an API key and secret, login to your [Neurio account](https://my.neur.io/#settings/applications/register) and register an application. Note the Homepage URL and Callback URL are optional. - -To enable this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: neurio_energy - api_key: CLIENT_ID - api_secret: CLIENT_SECRET -``` - -Two sensors will be created with the following names: -- **Energy Usage**: Current active power usage in Watts. Updated every 10 seconds. -- **Daily Energy Usage**: Daily power usage in kWh. Updated every 2.5 minutes. - -Configuration variables: - -- **api_key** (*Required*): The API key for your account/application. -- **api_secret** (*Required*): The API secret for your account/application. -- **sensor_id** (*Optional*): The sensor ID will be auto-detected but can be set if you have more then one sensor. - diff --git a/source/_components/sensor.nut.markdown b/source/_components/sensor.nut.markdown deleted file mode 100644 index 6f42f38688..0000000000 --- a/source/_components/sensor.nut.markdown +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: page -title: NUT Sensor -description: "Instructions on how to set up NUT sensors within Home Assistant." -date: 2016-11-23 -sidebar: true -comments: false -sharing: true -footer: true -logo: nut.png -ha_category: System Monitor -ha_version: 0.34 -ha_iot_class: "Local Polling" ---- - -The `nut` sensor platform allows you to monitor a UPS (battery backup) by using data from a [NUT](http://networkupstools.org/) (Network UPS Tools) server. - -To use this sensor platform, you need to add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: nut - resources: - - ups.load - - ups.realpower.nominal - - input.voltage - - battery.runtime -``` - -Configuration variables: - -- **name** (*Optional*): Name prefix for defined sensors. Defaults to 'NUT UPS'. -- **host** (*Optional*): The host name or address of the device that is running NUT. Defaults to localhost. -- **port** (*Optional*): The port number. Defaults to 3493. -- **alias** (*Optional*): Name of the ups on the NUT server. Will default to the first UPS name listed. -- **username** (*Optional*): Username to login to the NUT server. Default is none. -- **password** (*Optional*): Password to login to the NUT server. Default is none. -- **resources** array (*Required*): Contains all entries to display. - -### {% linkable_title Example %} - -Given the following example output from NUT (Your variables may differ): - -```yaml -'ups.timer.reboot': '0', -'battery.voltage': '27.0', -'ups.firmware.aux': 'L3 -P ', -'ups.mfr': 'American Power Conversion', -'battery.runtime.low': '120', -'ups.delay.shutdown': '20', -'ups.load': '19', -'ups.realpower.nominal': '600', -'battery.charge.warning': '50', -'battery.charge.low': '10', -'ups.vendorid': '051d', -'ups.timer.shutdown': '-1', -'ups.test.result': 'No test initiated', -'ups.firmware': '868.L3 -P.D', -'battery.mfr.date': '2015/05/08', -'ups.serial': '3B1519X19994 ', -'ups.productid': '0002', -'battery.runtime': '2552', -'battery.date': '2001/09/25', -'battery.voltage.nominal': '24.0', -'battery.type': 'PbAc', -'ups.mfr.date': '2015/05/08', -'ups.status': 'OL', -'ups.model': 'Back-UPS RS1000G', -'ups.beeper.status': 'disabled', -'battery.charge': '100', -'input.sensitivity': 'medium', -'input.transfer.low': '88' -'input.transfer.high': '147', -'input.voltage': '121.0', -'input.voltage.nominal': '120', -'input.transfer.reason': 'input voltage out of range', -``` - -Use the values from the left hand column. Support is included for most values with 'ups', 'battery', and 'input' prefixes. - -```yaml -sensor: - - platform: nut - name: UPS Name - host: 192.168.11.5 - port: 3493 - alias: ups_name - username: user - password: pass - resources: - - ups.load - - ups.realpower.nominal - - input.voltage - - battery.runtime -``` diff --git a/source/_components/sensor.nzbget.markdown b/source/_components/sensor.nzbget.markdown deleted file mode 100644 index cb3b45fc5a..0000000000 --- a/source/_components/sensor.nzbget.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "NZBGet" -description: "Instructions on how to integrate NZBGet within Home Assistant." -date: 2016-04-08 19:59 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Downloading -logo: nzbget.png -ha_iot_class: "Local Polling" -ha_release: 0.17 ---- - -The `nzbget` platform will allow you to monitor your downloads with [NZBGet](http://NZBGet.net) from within Home Assistant and setup automation based on the information. - -To use NZBGet with your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: nzbget - host: YOUR_NZBGET_HOST - monitored_variables: - - article_cache - - download_rate - - download_paused -``` - -Configuration variables: - -- **host** (*Required*): IP address where your NZBGet installation is running. -- **port** (*Optional*): The port of your NZBGet installation. Defaults to 6789. -- **ssl** (*Optional*): Whether or not to use SSL to access NZBGet. Defaults to false. -- **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** array (*Required*): List of monitored details. - - **article_cache**: Number of cached articles. - - **average_download_rate**: Average download rate - - **download_paused**: Paused downloads - - **download_rate**: Current download rate - - **download_size**: The size to download - - **free_disk_space**: Free disk space at the storage location of NZBGet - - **post_paused**: Paused posts - - **remaining_size**: Remaining size to download - - **uptime**: Uptime of NZBGet - diff --git a/source/_components/sensor.octoprint.markdown b/source/_components/sensor.octoprint.markdown deleted file mode 100644 index f16fc83ffb..0000000000 --- a/source/_components/sensor.octoprint.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "OctoPrint Sensor" -description: "Instructions on how to integrate OctoPrint sensors within Home Assistant." -date: 2016-05-05 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: octoprint.png -ha_category: Sensor -ha_release: 0.19 -ha_iot_class: "Local Polling" ---- - - -The `octoprint` sensor platform let you monitor various states of your 3D printer and its print jobs. - -

    -You must have the [OctoPrint component](/components/octoprint/) configured to use this sensor. -

    - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: octoprint - name: OctoPrint - monitored_conditions: - - Current State - - Temperatures - - Job Percentage -``` - -Configuration variables: - -- **name** (*Optional*): The name of the sensor. Default is 'OctoPrint'. -- **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**: 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.ohmconnect.markdown b/source/_components/sensor.ohmconnect.markdown deleted file mode 100644 index 7f564a76d3..0000000000 --- a/source/_components/sensor.ohmconnect.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "OhmConnect" -description: "Documentation about the OhmConnect sensor." -date: 2016-08-08 17:05 -sidebar: true -comments: false -sharing: true -footer: true -logo: "ohmconnect.png" -ha_category: Energy -ha_iot_class: "Cloud Polling" -ha_release: 0.26 ---- - - -The `ohmconnect` sensor will show you the current [OhmConnect](https://www.ohmconnect.com/) status for the given OhmConnect ID. - -> OhmConnect monitors real-time conditions on the electricity grid. When dirty and unsustainable power plants turn on, our users receive a notification to save energy. By saving energy at that time, California does not have to turn on additional power plants and California's energy authorities pay you for that. - - -You can find your OhmConnect ID under "Open Source Projects" on the [settings page](https://login.ohmconnect.com/settings). It's the string after the last `/` in the URL, i.e. for the URL `https://login.ohmconnect.com/verify-ohm-hour/AbCd1e` your ID is `AbCd1e`. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ohmconnect - id: AbCd1e -``` - -Configuration variables: - -- **id** (*Required*): Your OhmConnect ID which can be found on the settings page. -- **name** (*Optional*): A name to display on the sensor. The default is "OhmConnect Status". diff --git a/source/_components/sensor.onewire.markdown b/source/_components/sensor.onewire.markdown deleted file mode 100644 index d8d9076f8c..0000000000 --- a/source/_components/sensor.onewire.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "One wire Sensor" -description: "Instructions on how to integrate One wire (1-wire) sensors into Home Assistant." -date: 2017-09-15 10:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: onewire.png -ha_category: DIY -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - -The `onewire` platform supports sensors which are using the One wire (1-wire) bus for communication. - -Supported devices: - -- [DS18B20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf) -- [DS18S20](https://www.maximintegrated.com/en/products/analog/sensors-and-sensor-interface/DS18S20.html) -- [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)). - -#### Raspberry Pi setup -In order to setup 1-Wire support on Raspberry Pi, you'll need to edit `/boot/config.txt` following [this documentation](https://www.waveshare.com/wiki/Raspberry_Pi_Tutorial_Series:_1-Wire_DS18B20_Sensor#Enable_1-Wire). Don't use the `mount_dir` option. - -#### 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/](/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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: onewire - names: - some_id: your name -``` - -Configuration variables: - -- **names** array (*Optional*): ID and friendly name of your sensors. -- **mount_dir** (*Optional*): Location of device tree if owfs driver used. - diff --git a/source/_components/sensor.openevse.markdown b/source/_components/sensor.openevse.markdown deleted file mode 100644 index e9df04e8da..0000000000 --- a/source/_components/sensor.openevse.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "OpenEVSE Sensor" -description: "Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant" -date: 2017-02-02 22:09 -sidebar: true -comments: false -sharing: true -footer: true -logo: openevse.png -ha_category: Sensor -ha_release: "0.38" -ha_iot_class: "Local Polling" ---- - - -This `openevse` sensor platform pulls data from an [OpenEVSE](https://www.openevse.com/) Charging station equipped with an ESP8266-based wifi connection. - -## {% linkable_title Configuration %} - -To enable this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: openevse - host: IP_ADDRESS - monitored_variables: - - status -``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your charger -- **monitored_variables** array (*Required*): Conditions to display on the frontend. - - **status**: The status of the charger (i.e., "Connected", "Charging", etc.) - - **charge_time**: The number of minutes the charging has been charging, or 0 if it is not charging. - - **rtc_temp**: The temperature reported by the real time clock sensor, or 0 if the sensor is not installed. - - **ir_temp**: The temperature reported by the IR remote sensor, or 0 if the sensor is not installed. - - **ambient_temp**: The temperature reported by the ambient sensor, or 0 if the sensor is not installed. - - **usage_session**: The energy usage for the current charging session. - - **usage_total**: The total energy usage for the device. diff --git a/source/_components/sensor.openexchangerates.markdown b/source/_components/sensor.openexchangerates.markdown deleted file mode 100644 index 14340a4471..0000000000 --- a/source/_components/sensor.openexchangerates.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Open Exchange Rates" -description: "Instructions on how to integrate exchange rates from https://openexchangerates.org within Home Assistant." -date: 2016-06-23 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Finance -logo: openexchangerates.png -ha_iot_class: "Cloud Polling" -ha_release: 0.23 ---- - - -The `openexchangerates` sensor will show you the current exchange rate from [Open Exchange Rates](https://openexchangerates.org) that provides realtime exchange rates for [170 currencies](https://openexchangerates.org/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://openexchangerates.org/signup) - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: openexchangerates - api_key: YOUR_API_KEY - quote: EUR -``` - -{% configuration %} -name: - description: The name of the sensor. - required: false - type: string - default: Exchange Rate Sensor -api_key: - description: "The API Key for [Open Exchange Rates](https://openexchangerates.org)." - required: true - type: string -quote: - description: The symbol of the quote or target currency. - required: true - type: string -base: - description: The symbol of the base currency. - required: false - type: string - default: USD -{% endconfiguration %} - diff --git a/source/_components/sensor.openhardwaremonitor.markdown b/source/_components/sensor.openhardwaremonitor.markdown deleted file mode 100644 index 6479aa9c9d..0000000000 --- a/source/_components/sensor.openhardwaremonitor.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Open Hardware Monitor Sensor" -description: "Instructions on 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.opensky.markdown b/source/_components/sensor.opensky.markdown deleted file mode 100644 index baa285ce24..0000000000 --- a/source/_components/sensor.opensky.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "OpenSky Network" -description: "Instructions on how to integrate OpenSky Network into Home Assistant." -date: 2017-04-14 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: opensky.png -ha_category: Sensor -featured: false -ha_release: 0.43 -ha_iot_class: "Cloud Polling" ---- - -The `opensky` sensor allows one to track overhead flights in a given region. It uses crowd-sourced data from the [OpenSky Network](https://opensky-network.org/) public API. It will also fire Home Assistant events when flights enter and exit the defined region. - -## Configuration - -To enable this sensor, add the following lines to your `configuration.yaml`. - -```yaml -sensor: - - platform: opensky - radius: 10 -``` - -Configuration options for the OpenSky Network sensor: - -- **radius** (*Required*): Radius of region to monitor, in kilometers -- **latitude** (*Optional*): Region latitude (defaults to home zone latitude) -- **longitude** (*Optional*): Region longitude (defaults to home zone longitude) -- **name** (*Optional*): Sensor name (defaults to `opensky`) - -## Events - -- **opensky_entry**: Fired when a flight enters the region -- **opensky_exit**: Fired when a flight exits the region - -Both events have two attributes: - -- **sensor**: Name of `opensky` sensor that fired the event -- **callsign**: Callsign of the flight diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown deleted file mode 100644 index 48d141ddfe..0000000000 --- a/source/_components/sensor.openweathermap.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "OpenWeatherMap Sensor" -description: "Instructions on how to integrate OpenWeatherMap within Home Assistant." -date: 2015-04-25 9:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: openweathermap.png -ha_category: Weather -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -The `openweathermap` platform uses [OpenWeatherMap](http://openweathermap.org/) as a source for current meteorological data for your location. The `forecast` will show you the condition in 3 h. - -You need an API key which is free but requires a [registration](http://home.openweathermap.org/users/sign_up). - -To add OpenWeatherMap to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: openweathermap - api_key: YOUR_API_KEY - monitored_conditions: - - weather -``` - -{% configuration %} - api_key: - description: Your API key for OpenWeatherMap. - required: true - type: string - name: - description: Additional name for the sensors. Default to platform name. - required: false - default: OWM - type: string - forecast: - description: Enables the forecast. The default is to display the current conditions. - required: false - default: false - type: string - language: - description: The language in which you want text results to be returned. It's a two-characters string, eg. `en`, `es`, `ru`, `it`, etc. - required: false - default: en - type: string - monitored_conditions: - description: Conditions to display in the frontend. - required: true - type: list - keys: - weather: - description: A human-readable text summary. - temperature: - description: The current temperature. - wind_speed: - description: The wind speed. - wind_bearing: - description: The wind bearing. - humidity: - description: The relative humidity. - pressure: - description: The sea-level air pressure in millibars. - clouds: - description: Description about cloud coverage. - rain: - description: The rain volume. - snow: - description: The snow volume. -{% endconfiguration %} - -Details about the API are available in the [OpenWeatherMap documentation](http://openweathermap.org/api). diff --git a/source/_components/sensor.otp.markdown b/source/_components/sensor.otp.markdown deleted file mode 100644 index 849f216718..0000000000 --- a/source/_components/sensor.otp.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "OTP Sensor" -description: "Instructions on 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 deleted file mode 100644 index f0b5dedbdb..0000000000 --- a/source/_components/sensor.pi_hole.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Pi-Hole Sensor" -description: "Instructions on how to integrate REST sensors into Home Assistant." -date: 2016-09-03 16:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: System Monitor -ha_iot_class: "Local Polling" -logo: pi_hole.png -ha_release: 0.28 ---- - - -The `pi_hole` sensor platform is displaying the statistical summary of a [Pi-Hole](https://pi-hole.net/) system. - -To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: pi_hole -``` - -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. - - **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 deleted file mode 100644 index 2a33cc2a1d..0000000000 --- a/source/_components/sensor.pilight.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: page -title: "Pilight Sensor" -description: "Instructions on how to integrate pilight sensors within Home Assistant." -date: 2016-10-08 23:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: pilight.png -ha_category: Sensor -ha_release: 0.31 -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. - -## {% linkable_title Configuration %} - -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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: pilight - variable: temperature - payload: - uuid: '0000-b8-27-eb-f447d3' -``` - -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. -- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. - -## {% linkable_title Example: Weather station %} - -This section shows a real life example how to use values of a weather station. - - -```yaml -# Example configuration.yml entry -sensor: - - platform: pilight - name: 'Temperature' - variable: 'temperature' - payload: - uuid: 0000-b8-27-eb-f1f72e - unit_of_measurement: '°C' - - platform: pilight - name: 'Humidity' - variable: 'humidity' - payload: - uuid: 0000-b8-27-eb-f1f72e - unit_of_measurement: '%' - - platform: pilight - name: 'Battery' - variable: 'battery' - payload: - uuid: 0000-b8-27-eb-f1f72e - unit_of_measurement: '%' -``` diff --git a/source/_components/sensor.plex.markdown b/source/_components/sensor.plex.markdown deleted file mode 100644 index 3478171623..0000000000 --- a/source/_components/sensor.plex.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Plex Activity Monitor" -description: "How to add a Plex sensor to Home Assistant." -date: 2016-06-3 08:19 -sidebar: true -comments: false -sharing: true -footer: true -logo: plex.png -ha_category: Media Player -ha_release: 0.22 -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 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`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: plex -``` - -Configuration variables: - -- **host** (*Optional*): The IP address of your Plex server. Defaults to `localhost`. -- **port** (*Optional*): The port of your Plex Server. Defaults to `32400`. -- **name** (*Optional*): Name of the Plex server. Defaults to "Plex". -- **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. -- **ssl** (*Optional*): Use HTTPS to connect to Plex server, *NOTE* host *must not* be an IP when this option is enabled. Defaults to "False" diff --git a/source/_components/sensor.pocketcasts.markdown b/source/_components/sensor.pocketcasts.markdown deleted file mode 100644 index 89d48c79f3..0000000000 --- a/source/_components/sensor.pocketcasts.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: PocketCasts -description: "Instructions on how to set up PocketCasts sensors within Home Assistant." -date: 2017-02-14 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pocketcasts.png -ha_category: Sensor -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 -# Example configuration.yaml entry -sensor: - - platform: pocketcasts - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -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.pollen.markdown b/source/_components/sensor.pollen.markdown deleted file mode 100644 index 8c61388224..0000000000 --- a/source/_components/sensor.pollen.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: page -title: "Pollen.com" -description: "Instructions on how to use Pollen.com data within Home Assistant" -date: 2018-01-10 19:20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pollen.jpg -ha_category: Health -ha_release: 0.63 -ha_iot_class: "Cloud Polling" ---- - -The `pollen` sensor platform collects and displays allergy and disease -information (based on a U.S. ZIP code) from [Pollen.com](https://www.pollen.com/). Data measured includes: - -* Indicies for allergies and cold/flu measurements -* Trends -* Current outlook -* more! - -## {% linkable_title Configuring the Platform %} - -To integrate `pollen` into Home Assistant, add the following section to your -`configuration.yaml` file (adjusting the `monitored_conditions` list to your -liking): - -```yaml -sensor: - platform: pollen - zip_code: "00544" - monitored_conditions: - - allergy_average_forecasted - - allergy_average_historical - - allergy_index_today - - allergy_index_tomorrow - - allergy_index_yesterday - - disease_average_forecasted -``` - -{% configuration %} - zip_code: - description: the U.S. ZIP code to gather data for (as a quoted string) - required: true - type: string - monitored_conditions: - description: the metric types to monitor; valid values are specified below - required: true - type: list -{% endconfiguration %} - -

    -It is important to ensure the ZIP code is quoted if it starts with a 0. Unquoted -ZIP codes that start with 0 will cause errors. -

    - -## {% linkable_title Available Metrics %} - -The following metrics can be monitored: - -* Allergy Index: Forecasted Average (`allergy_average_forecasted`): the average -forecasted allergy index over the next 5 days -* Allergy Index: Historical Average (`allergy_average_historical`): the average -historical allergy index over the past 30 days -* Allergy Index: Today (`allergy_index_today`): the allergy index for today -* Allergy Index: Tomorrow (`allergy_index_tomorrow`): the allergy index for -tomorrow -* Allergy Index: Yesterday (`allergy_index_yesterday`): the allergy index for -yesterday -* Cold & Flu: Forecasted Average (`disease_average_forecasted`): the average -forecasted cold/flu index over the next 5 days - -## {% linkable_title Understanding the Indices %} - -Any index-related sensor will have a value between 0.0 and 12.0. The values -map to the following human-friendly ratings: - -Range | Rating ---------- | ----------- -0.0 - 2.4 | Low -2.5 - 4.8 | Low/Medium -4.9 - 7.2 | Medium -7.3 - 9.6 | Medium/High -9.7 - 12.0 | High diff --git a/source/_components/sensor.postnl.markdown b/source/_components/sensor.postnl.markdown deleted file mode 100644 index 3087ce4b01..0000000000 --- a/source/_components/sensor.postnl.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: PostNL Sensor -description: "Instructions on how to set up PostNL sensors within Home Assistant." -date: 2017-04-22 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: postnl.png -ha_category: Sensor -ha_release: 0.69 -ha_iot_class: "Cloud Polling" ---- - -The `postnl` platform allows one to track deliveries by [PostNL](https://www.postnl.nl) (Dutch Postal Services). To use this sensor, you need a [PostNL Account](https://jouw.postnl.nl). It is possible to add multiple accounts to your Home Assistant configuration. - -## {% linkable_title Configuration %} - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -sensors: - - platform: postnl - username: POSTNL_USERNAME - password: POSTNL_PASSWORD -``` - -{% configuration %} -name: - description: Sensor name - required: false - default: "postnl" - type: string -username: - description: Account username of jouw.postnl.nl - required: true - type: string -password: - description: Account password of jouw.postnl.nl - required: true - type: string -{% endconfiguration %} - -

    -This component is not affiliated with PostNL and retrieves date from the endpoints of the mobile application. Use at your own risk. -

    diff --git a/source/_components/sensor.pushbullet.markdown b/source/_components/sensor.pushbullet.markdown deleted file mode 100644 index bd8ee0eda5..0000000000 --- a/source/_components/sensor.pushbullet.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Pushbullet Mirrors" -description: "Instructions on how to read user pushes in Home Assistant" -date: 2017-04-20 16:44 -sidebar: true -comments: false -sharing: true -footer: true -logo: pushbullet.png -ha_category: Sensor -ha_release: 0.44 -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 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. - -To enable the Pushbullet sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: pushbullet - api_key: YOUR_API_KEY - monitored_conditions: - - body -``` - -Configuration variables: - -- **api_key** (*Required*): Enter the API key for Pushbullet. Go to [https://www.pushbullet.com/#settings/account](https://www.pushbullet.com/#settings/account) to retrieve your API key/access token. - -- **monitored_conditions** array (*Optional*): Properties of the push to monitor. Defaults to `body` and `title`. - - **application_name**: The application sending the push. - - **body**: Body of the message. - - **notification_id**: ID of the notification. - - **notification_tag**: Tag (if the application sending supports it). - - **package_name**: Name of the sender's package. - - **receiver_email**: The email of the push's target. - - **sender_email**: The sender of the push. - - **source_device_iden**: ID of the sender's device. - - **title**: Title of the push. - - **type**: Type of push. - - -All properties will be displayed as attributes. The properties array are just for logging the sensor readings for multiple properties. diff --git a/source/_components/sensor.pvoutput.markdown b/source/_components/sensor.pvoutput.markdown deleted file mode 100644 index a61f661459..0000000000 --- a/source/_components/sensor.pvoutput.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -layout: page -title: "PVOutput Sensor" -description: "Instructions on how to use PVOutput within Home Assistant." -date: 2016-11-06 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pvoutput.png -ha_category: Energy -ha_release: 0.33 -ha_iot_class: "Cloud Polling" ---- - - -The `pvoutput` sensor platform consumes information from [PVOutput](http://pvoutput.org/) which were uploaded by your solar photovoltaic (PV) system. - -To add PVOutput details to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: pvoutput - system_id: YOUR_SYSTEM_ID - api_key: YOUR_API_KEY - scan_interval: 120 -``` - -Configuration variables: - -- **api_key** (*Required*): Your API key. A read-only key is fine. -- **system_id** (*Required*): The ID of your station. - -

    -It's recommended to set `scan_interval:` according to a value greater than 60 seconds. The service only allows 60 requests per hour but the sensor's default is 30 seconds. -

    - -To format the PVoutput sensor it's recommended to use the [template component](/topics/templating/). For example: - -```yaml -sensor: - - platform: pvoutput - system_id: YOUR_SYSTEM_ID - api_key: YOUR_API_KEY - scan_interval: 150 - - platform: template - sensors: - power_consumption: - value_template: {% raw %}'{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ states.sensor.pvoutput.attributes.power_consumption }}{% endif %}'{% endraw %} - friendly_name: 'Using' - unit_of_measurement: 'Watt' - energy_consumption: - value_template: {% raw %}'{{ "%0.1f"|format(states.sensor.pvoutput.attributes.energy_consumption|float/1000) }}'{% endraw %} - friendly_name: 'Used' - unit_of_measurement: 'kWh' - power_generation: - value_template: {% raw %}'{% if is_state_attr("sensor.pvoutput", "power_generation", "NaN") %}0{% else %}{{ states.sensor.pvoutput.attributes.power_generation }}{% endif %}'{% endraw %} - friendly_name: 'Generating' - unit_of_measurement: 'Watt' - energy_generation: - value_template: {% raw %}'{% if is_state_attr("sensor.pvoutput", "energy_generation", "NaN") %}0{% else %}{{ "%0.2f"|format(states.sensor.pvoutput.attributes.energy_generation|float/1000) }}{% endif %}'{% endraw %} - friendly_name: 'Generated' - unit_of_measurement: 'kWh' -``` diff --git a/source/_components/sensor.pyload.markdown b/source/_components/sensor.pyload.markdown deleted file mode 100644 index 0c5886b637..0000000000 --- a/source/_components/sensor.pyload.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "pyLoad Sensor" -description: "Instructions on 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 %} -host: - description: This is the IP address of your pyLoad download manager. - required: false - type: string - default: localhost -port: - description: The port your pyLoad interface uses. - required: false - type: int - default: 8000 -name: - description: The name to use when displaying this pyLoad instance. - required: false - type: string - default: 20 -username: - description: Your pyLoad username. - required: false - type: string -password: - description: Your pyLoad password. - required: false - type: string -ssl: - description: Enable SSL/TLS for the host. - required: false - type: boolean - default: false -{% endconfiguration %} - - -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 deleted file mode 100644 index 3814f37bd0..0000000000 --- a/source/_components/sensor.qnap.markdown +++ /dev/null @@ -1,82 +0,0 @@ ---- -layout: page -title: "QNAP Sensor" -description: "Instructions on how to integrate the QNAP sensor within Home Assistant." -date: 2017-02-02 06:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: qnap.png -ha_category: Sensor -ha_release: 0.38 -ha_iot_class: "Local Polling" ---- - - -This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). - -## {% linkable_title Configuration %} - -To use the `qnap` sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: qnap - host: IP_ADDRESS_OF_QNAP_NAS - username: USERNAME - password: PASSWORD - monitored_conditions: - - status - - cpu_usage - - memory_percent_used - - network_tx - - volume_percentage_used -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the QNAP NAS to monitor -- **port** (*Optional*): The port number on which the QNAP NAS web interface is reachable. Defaults to `8080`. -- **ssl** (*Optional*): Whether to connect via `https`. Defaults to `false`. -- **verify_ssl** (*Optional*): Whether SSL certificates should be validated. Defaults to `true`. -- **timeout** (*Optional*): How long (in seconds) to wait for a response from the QNAP device before giving up. Defaults to `10`. -- **username** (*Required*): An user to connect to the QNAP NAS. -- **password** (*Required*): The password of the user to connect to the QNAP NAS. -- **drives** (*Optional*): Array of drives to monitor (ex: `0:1`). Defaults to all drives. -- **volumes** (*Optional*): Array of volumes to monitor (ex: `DataVol1`). Defaults to all volumes. -- **nics** (*Optional*): Array of network interfaces to monitor (ex: `eth0`). Defaults to all NICs. -- **monitored_conditions** (*Required*): Defines the stats to monitor as sensors. - - **status**: Displays overall system health. - - **system_temp**: Displays the overall system temperature. - - **cpu_temp**: Displays the CPU's temperature. - - **cpu_usage**: Displays the CPU's utilization as a percentage. - - **memory_free**: Displays the size of available RAM in GB. - - **memory_used**: Displays the size of used RAM in GB. - - **memory_percent_used**: Displays the size of used RAM as a percentage of total RAM. - - **network_link_status**: Displays whether the network interfaces is up (creates a new entry for each interface). - - **network_tx**: Displays the upload speed of a network interface in MB/s (creates a new entry for each interface). - - **network_rx**: Displays the download speed of a network interface in MB/s (creates a new entry for each interface). - - **drive_smart_status**: Displays the S.M.A.R.T. status of the drive (creates a new entry for each drive). - - **drive_temp**: Displays the temperature of the drive (creates a new entry for each drive). - - **volume_size_free**: Displays the available space of the volume in GB (creates a new entry for each volume). - - **volume_size_used**: Displays the used space of the volume in GB (creates a new entry for each volume). - - **volume_percentage_used**: Displays the used space of the volume as a percentage (creates a new entry for each volume). - -### Self-signed certificates - -If your QNAP device uses self-signed certificates, set the `verify_ssl` option to `false`. - -### QNAP device support: - -This component has been tested on the following devices: - - - TS-259 Pro+ (QTS 4.2.6) - - TS-410 (QTS 4.2.3) - - TS-419 (QTS 4.2.3) - - TS-451 (QTS 4.2.2) - - TS-470 (QTS 4.2.2) - - TS-639 (QTS 4.2.3) - -Other QNAP NAS devices using similar firmware should work fine. For more information about supported devices, or to report issues with your device, please visit the [qnapstats project](https://github.com/colinodell/python-qnapstats#device-support). diff --git a/source/_components/sensor.qwikswitch.markdown b/source/_components/sensor.qwikswitch.markdown deleted file mode 100644 index afc4fc6cb4..0000000000 --- a/source/_components/sensor.qwikswitch.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "QwikSwitch Sensor" -description: "Instructions on how to integrate Qwikswitch dimmers and relays as sensors into Home Assistant." -date: 2016-05-04 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: qwikswitch.png -ha_category: Sensor -ha_iot_class: "Local Push" -ha_release: "0.67" ---- - -The `qwikswitch` sensor platform allows you to use your [QwikSwitch](http://www.qwikswitch.co.za/) sensors in Home Assistant. - -The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/sensor.radarr.markdown b/source/_components/sensor.radarr.markdown deleted file mode 100644 index 94a4665548..0000000000 --- a/source/_components/sensor.radarr.markdown +++ /dev/null @@ -1,123 +0,0 @@ ---- -layout: page -title: "Radarr Sensor" -description: "Instructions on how to integrate Radarr sensors with Home Assistant" -date: 2017-05-04 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: radarr.png -ha_category: Sensor -ha_release: 0.47 ---- - - -This `radarr` sensor platform pulls data from a given [Radarr](https://radarr.video/) instance. - -## {% linkable_title Configuration %} - -To use your Radarr sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: radarr - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **api_key** (*Required*): Your Radarr API key, found in Settings > General in the Radarr Web UI. -- **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**: 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 %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Get Episodes airing in next 2 days %} - -```yaml -# Example configuration.yml entry -sensor: - - platform: radarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - upcoming - days: 2 -``` - -### {% linkable_title Enable SSL %} - -SSL may run on a different port than the default (7878). The SSL port can be bound to any port in Radarr, so it should be set in the config here (unless it is changed to 7878). - -```yaml -# Example configuration.yml entry -sensor: - - platform: radarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - port: 9898 - monitored_conditions: - - upcoming - days: 2 - ssl: true -``` - -### {% linkable_title Get disk space for all storage locations %} - -```yaml -# Example configuration.yml entry -sensor: - - platform: radarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - diskspace -``` - -### {% linkable_title Get disk space for listed storage locations %} - -The storage locations Radarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor. - -```yaml -# Example configuration.yml entry -sensor: - - platform: radarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - diskspace - include_paths: - - /tank/plex -``` - -### {% linkable_title Get disk space in different unit %} - -The Radarr API returns available space in bytes, but this sensor will default to reporting it in GB to make the number more manageable. This can be overridden if your storage needs require a different unit. All units from bytes (B) to yottabytes (YB) are supported. - -*This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.* - -```yaml -# Example configuration.yml entry -sensor: - - platform: radarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - diskspace - unit: TB -``` diff --git a/source/_components/sensor.rainbird.markdown b/source/_components/sensor.rainbird.markdown deleted file mode 100644 index 750c287497..0000000000 --- a/source/_components/sensor.rainbird.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Rain Bird Sensor" -description: "Instructions on how to integrate your Rain Bird LNK WiFi Module rain sensor 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.61 -ha_iot_class: "Local Polling" ---- - -This `rainbird` sensor 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. - -Once you have enabled the [Rain Bird component](/components/rainbird), add the following to your `configuration.yaml` file to enable the rain sensor: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: rainbird - monitored_conditions: - - rainsensor -``` - -Configuration variables: - -- **monitored_conditions**: Currently only rainsensor is supported. Returns the sensor level. - -Please note that due to the implementation of the API within the LNK Module, there is a concurrency issue. For example, the Rain Bird app will give connection issues (like already a connection active). diff --git a/source/_components/sensor.raincloud.markdown b/source/_components/sensor.raincloud.markdown deleted file mode 100644 index 381599c785..0000000000 --- a/source/_components/sensor.raincloud.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -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 deleted file mode 100644 index cbe6049cf3..0000000000 --- a/source/_components/sensor.random.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Random Sensor" -description: "Instructions on how to integrate random number sensors into Home Assistant." -date: 2016-10-30 12:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.32 ---- - - -The `random` sensor platform is creating random sensor values (integers) out of a given range. Returned values form a [discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution), meaning that each integer value in the range configured is equally likely to be drawn. This can be useful if you want to test automation rules. It generates a new value every time it is polled. - -## {% linkable_title Configuration %} - -To enable the random sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: random -``` - -{% configuration %} -name: - description: Name to use in the frontend. - required: false - type: string - default: Random Sensor -minimum: - description: Lower limit for the values. - required: false - type: string - default: 0 -maximum: - description: Upper limit for the values. - required: false - type: int - default: 20 -unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. - required: false - type: string -{% endconfiguration %} - -See the [entity component options][entity-docs] to control how often the main component polls the random sensor. The default is 30 seconds. - -[entity-docs]: /docs/configuration/platform_options/ diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown deleted file mode 100644 index 0c0cc9a7ab..0000000000 --- a/source/_components/sensor.rest.markdown +++ /dev/null @@ -1,258 +0,0 @@ ---- -layout: page -title: "RESTful Sensor" -description: "Instructions on how to integrate REST sensors into Home Assistant." -date: 2015-09-14 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: restful.png -ha_category: Sensor -ha_release: 0.7.4 -ha_iot_class: "Local Polling" ---- - - -The `rest` sensor platform is consuming a given endpoint which is exposed by a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) of a device, an application, or a web service. The sensor has support for GET and POST requests. - -To enable this sensor, add the following lines to your `configuration.yaml` file for a GET request: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: rest - resource: http://IP_ADDRESS/ENDPOINT -``` - -or for a POST request: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: rest - resource: http://IP_ADDRESS/ENDPOINT - method: POST - payload: '{ "device" : "heater" }' -``` - -{% configuration %} -resource: - description: The resource or endpoint that contains the value. - required: true - type: string - default: string -method: - description: The method of the request. - required: false - type: string - default: GET -name: - description: Name of the REST sensor. - required: false - type: string - default: REST Sensor -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." - required: false - type: template -payload: - description: The payload to send with a POST request. Depends on the service, but usually formed as JSON. - required: false - type: string -verify_ssl: - description: Verify the certification of the endpoint. - required: false - type: boolean - default: True -unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. - required: false - type: string -authentication: - description: Type of the HTTP authentication. `basic` or `digest`. - required: false - type: string -username: - description: The username for accessing the REST endpoint. - required: false - type: string -password: - description: The password for accessing the REST endpoint. - required: false - type: string -headers: - description: The headers for the requests. - required: false - type: list, string -json_attributes: - description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. - reqired: false - type: list, string -force_update: - description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. - reqired: false - type: boolean - default: False -{% endconfiguration %} - -

    -Make sure that the URL exactly matches your endpoint or resource. -

    - -`curl` can help you identify the variable you want to display in your Home Assistant frontend. The example below shows the JSON response of a device that is running with [aREST](http://arest.io/). - -```bash -$ curl -X GET http://192.168.1.31/temperature/ -{"temperature": 77, "id": "sensor02", "name": "livingroom", "connected": true} -``` - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title External IP address %} - -You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their [http://ip.jsontest.com/](http://ip.jsontest.com/) URL. - -```yaml -sensor: - - platform: rest - resource: http://ip.jsontest.com - name: External IP - value_template: '{% raw %}{{ value_json.ip }}{% endraw %}' -``` - -### {% linkable_title Single value from a local Glances instance %} - -The [glances](/components/sensor.glances/) sensor is doing the exact same thing for all exposed values. - -```yaml -sensor: - - platform: rest - resource: http://IP_ADRRESS:61208/api/2/mem/used - name: Used mem - value_template: '{% raw %}{{ value_json.used| multiply(0.000000954) | round(0) }}{% endraw %}' - unit_of_measurement: MB -``` - -### {% 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. - -If the Home Assistant instance in the resource variable is protected by an API password, you can append `?api_password=YOUR_PASSWORD` to the resource URL to authenticate or use `headers:`. - -```yaml -sensor: - - platform: rest - resource: http://IP_ADDRESS:8123/api/states/sensor.weather_temperature - name: Temperature - value_template: {% raw %}'{{ value_json.state }}'{% endraw %} - unit_of_measurement: "°C" -``` - -### {% linkable_title Accessing an HTTP authentication protected endpoint %} - -The REST sensor supports HTTP authentication and customized headers. - -```yaml -sensor: - - platform: rest - resource: http://IP_ADDRESS:5000/sensor - username: ha1 - password: test1 - authentication: basic - headers: - User-Agent: Home Assistant - Content-Type: application/json -``` - -The headers will contain all relevant details. This will also give you the ability to access endpoints that are protected by tokens. - -```bash -Content-Length: 1024 -Host: IP_ADDRESS1:5000 -Authorization: Basic aGExOnRlc3Qx -Accept-Encoding: identity -Content-Type: application/json -User-Agent: Home Assistant -``` - -### {% linkable_title Use GitHub to get the latest release of Home Assistant %} - -This sample is very similar to the [`updater`](/components/updater/) component but the information is received from GitHub. - -```yaml -sensor: - - platform: rest - resource: https://api.github.com/repos/home-assistant/home-assistant/releases/latest - username: YOUR_GITHUB_USERNAME - password: YOUR_GITHUB_ACCESS_TOKEN - authentication: basic - value_template: '{% raw %}{{ value_json.tag_name }}{% endraw %}' - headers: - Accept: application/vnd.github.v3+json - Content-Type: application/json - User-Agent: Home Assistant REST sensor -``` - -### {% linkable_title Fetch multiple JSON values and present them as attributes %} - -[JSON Test](http://www.jsontest.com) returns the current time, date and milliseconds since epoch from [http://date.jsontest.com/](http://date.jsontest.com/). - -{% raw %} -```yaml -sensor: - - platform: rest - name: JSON time - json_attributes: - - date - - milliseconds_since_epoch - resource: http://date.jsontest.com/ - value_template: '{{ value_json.time }}' - - platform: template - sensors: - date: - friendly_name: 'Date' - value_template: '{{ states.sensor.json_time.attributes["date"] }}' - milliseconds: - friendly_name: 'milliseconds' - value_template: '{{ states.sensor.json_time.attributes["milliseconds_since_epoch"] }}' -``` -{% endraw %} - -This sample fetches a weather report from [OpenWeatherMap](http://openweathermap.org/), maps the resulting data into attributes of the RESTful sensor and then creates a set of [template](/components/sensor.template/) sensors that monitor the attributes and present the values in a usable form. - -{% raw %} -```yaml -sensor: - - platform: rest - name: OWM_report - json_attributes: - - main - - weather - value_template: '{{ value_json["weather"][0]["description"].title() }}' - resource: http://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY - - platform: template - sensors: - owm_weather: - value_template: '{{ states.sensor.owm_report.attributes.weather[0]["description"].title() }}' - icon_template: '{{ "http://openweathermap.org/img/w/"+states.sensor.owm_report.attributes.weather[0]["icon"]+".png" }}' - entity_id: sensor.owm_report - owm_temp: - friendly_name: 'Outside temp' - value_template: '{{ states.sensor.owm_report.attributes.main["temp"]-273.15 }}' - unit_of_measurement: "°C" - entity_id: sensor.owm_report - owm_pressure: - friendly_name: 'Outside pressure' - value_template: '{{ states.sensor.owm_report.attributes.main["pressure"] }}' - unit_of_measurement: "hP" - entity_id: sensor.owm_report - owm_humidity: - friendly_name: 'Outside humidity' - value_template: '{{ states.sensor.owm_report.attributes.main["humidity"] }}' - unit_of_measurement: "%" - entity_id: sensor.owm_report -``` -{% endraw %} diff --git a/source/_components/sensor.rflink.markdown b/source/_components/sensor.rflink.markdown deleted file mode 100644 index 7efee12d68..0000000000 --- a/source/_components/sensor.rflink.markdown +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: page -title: "RFLink Sensor" -description: "Instructions on how to integrate RFLink sensors into Home Assistant." -date: 2016-01-04 -sidebar: true -comments: false -sharing: true -footer: true -logo: rflink.png -ha_category: Sensor -ha_release: 0.38 -ha_iot_class: "Local Polling" ---- - -The `rflink` component support devices that use [RFLink gateway firmware](http://www.nemcon.nl/blog2/), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/nl/21-rflink-gateway). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). - -First you have to set up your [rflink hub](/components/rflink/). - -After configuring the RFLink hub sensors will be automatically discovered and added. - -RFLink sensor ID's are composed of: protocol, id and type (optional). For example: `alectov1_0334_temp`. Some sensors emit multiple types of data. Each will be created as its own - -Once the ID of a sensor is known it can be used to configure the sensor in HA, for example to add it to a different group, hide it or configure a nice name. - -Assigning name to a sensor: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: rflink - devices: - alectov1_0334_temp: - name: Temperature Outside -``` - -Configuration variables: - -- **automatic_add** (*Optional*): Automatically add new/unconfigured devices to HA if detected (default: True). -- **devices** (*Optional*): A list of devices with their name to use in the frontend. - -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. -- **aliases** (*Optional*): Alternative RFLink ID's this device is known by. - -Sensor type values: - -- average_windspeed -- barometric_pressure -- battery -- weather_forecast -- doorbell_melody -- command -- co2_air_quality -- current_phase_1 -- current_phase_2 -- current_phase_3 -- distance -- firmware -- humidity_status -- humidity -- hardware -- kilowatt -- light_intensity -- meter_value -- total_rain -- rain_rate -- total_rain -- revision -- noise_level -- temperature -- uv_intensity -- version -- voltage -- watt -- windchill -- winddirection -- windgusts -- windspeed -- windtemp - -### {% linkable_title Hiding/ignoring sensors %} - -Sensors are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods: - -- Disable automatically adding of unconfigured new sensors (set `automatic_add` to `false`). -- Hide unwanted devices using [customizations](/getting-started/customizing-devices/) -- [Ignore devices on a platform level](/components/rflink/#ignoring-devices) - -### {% linkable_title Device support %} - -See [device support](/components/rflink/#device-support) - diff --git a/source/_components/sensor.rfxtrx.markdown b/source/_components/sensor.rfxtrx.markdown deleted file mode 100644 index 91a2dd5cf1..0000000000 --- a/source/_components/sensor.rfxtrx.markdown +++ /dev/null @@ -1,96 +0,0 @@ ---- -layout: page -title: "RFXtrx Sensor" -description: "Instructions on how to integrate RFXtrx sensors into Home Assistant." -date: 2015-08-06 17:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: rfxtrx.png -ha_category: Sensor -ha_iot_class: "Local Polling" ---- - -The `rfxtrx` platform support sensors that communicate in the frequency range of 433.92 MHz. - -First you have to set up your [rfxtrx hub](/components/rfxtrx/). -The easiest way to find your sensors is to add this to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - platform: rfxtrx - automatic_add: True -``` - -Then when the sensor emits a signal it will be automatically added: - -

    - -

    - -Here the name is `0a52080000301004d240259` or `0a52080000301004d240259_temperature` and you can verify that it works from the frontend. -Then you should update your configuration to (_temperature is not needed): - -```yaml -# Example configuration.yaml entry -sensor: - platform: rfxtrx - devices: - 0a52080000301004d240259: - name: device_name -``` - -If you want to display several data types from one sensor: - -```yaml -# Example configuration.yaml entry -sensor: - platform: rfxtrx - devices: - 0a520802060100ff0e0269: - name: Bath - data_type: - - Humidity - - Temperature -``` -Only these data_type are valid : -- *Temperature* -- *Humidity* -- *Barometer* -- *Wind direction* -- *Rain rate* -- *Energy usage* -- *Total usage* -- *Sound* -- *Sensor Status* -- *Counter value* -- *UV* - -Example configuration: - -```yaml -# Example configuration.yaml entry -sensor: - platform: rfxtrx - automatic_add: True - devices: - 0a52080705020095220269: - name: Lving - fire_event: True - 0a520802060100ff0e0269: - name: Bath - data_type: - - Humidity - - Temperature -``` - -Configuration variables: - -- **devices** (*Optional*): A list of devices with their name to use in the frontend. -- **automatic_add** (*Optional*): To enable the automatic addition of new lights. -- **data_type** (*Optional*): Which data type the sensor should show -- **fire_event** (*Optional*): Fires an event even if the state is the same as before. Can be used for automations. - - diff --git a/source/_components/sensor.ring.markdown b/source/_components/sensor.ring.markdown deleted file mode 100644 index 898a76ffa4..0000000000 --- a/source/_components/sensor.ring.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Ring Sensor" -description: "Instructions on how to integrate your Ring.com devices within Home Assistant." -date: 2017-04-01 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ring.png -ha_category: Sensor -ha_release: "0.40" -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). - -Once you have enabled the [Ring component](/components/ring), add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ring -``` - -Configuration variables: - -- **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_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. - - **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 doorbell, external chimes and stickup cameras. diff --git a/source/_components/sensor.ripple.markdown b/source/_components/sensor.ripple.markdown deleted file mode 100644 index 2eda541505..0000000000 --- a/source/_components/sensor.ripple.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Ripple" -description: "Instructions on how to integrate ripple.com data within Home Assistant." -date: 2017-06-06 16:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: ripple.png -ha_category: Finance -ha_release: 0.47 -ha_iot_class: "Cloud Polling" ---- - - -The `ripple` sensor platform displays Ripple wallet balances from [Ripple.com](https://ripple.com). - -To add the Ripple sensor to your installation, specify a ripple address to watch in the `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ripple - address: 'r3kmLJN5D28dHuH8vZNUZpMC43pEHpaocV' -``` - -{% configuration %} -address: - description: Ripple wallet address to watch. - required: true - type: string -name: - description: Name for the sensor to use in the frontend. - required: false - type: string - default: Ripple Balance -{% endconfiguration %} - diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown deleted file mode 100644 index 27766435fd..0000000000 --- a/source/_components/sensor.sabnzbd.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "SABnzbd" -description: "Instructions on how to integrate SABnzbd within Home Assistant." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: sabnzbd.png -ha_category: Downloading -ha_release: pre 0.7 -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. - -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 -sensor: - platform: sabnzbd - host: YOUR_SABNZBD_HOST - api_key: YOUR_API_KEY - monitored_variables: - - 'current_status' - - 'speed' - - 'queue_size' - - 'queue_remaining' - - 'disk_size' - - 'disk_free' - - 'queue_count' -``` - -Configuration variables: - -- **host** (*Required*): The host where your SABnzbd instance is running, eg. 192.168.1.32 -- **port** (*Optional*): The port to use with SABnzbd instance. Defaults to `8080`. -- **api_key** (*Required*): Name that will be used in the frontend for the pin. -- **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. - - **queue_size**: Size of the queue - - **queue_remaining**: Remaining elements in the queue - - **disk_size**: Disk size of the storage location - - **disk_free**: Free disk space at the storage location - - **queue_count**: Number of items in the queue - -Note that this will create the following sensors: - -``` - - sensor.sabnzbd_status - - sensor.sabnzbd_speed - - sensor.sabnzbd_queue - - sensor.sabnzbd_left - - sensor.sabnzbd_disk - - sensor.sabnzbd_disk_free - - sensor.sabnzbd_queue_count -``` - -As always, you can determine the names of sensors by looking at the dev-state page `< >` in the web interface. diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown deleted file mode 100644 index 047dd0e956..0000000000 --- a/source/_components/sensor.scrape.markdown +++ /dev/null @@ -1,132 +0,0 @@ ---- -layout: page -title: "Scrape Sensor" -description: "Instructions on how to integrate Web scrape sensors into Home Assistant." -date: 2016-10-12 09:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_release: 0.31 -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 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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: scrape - resource: https://www.home-assistant.io - select: ".current-version h1" -``` - -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 %} - -In this section you find some real life examples of how to use this sensor. There is also a [Jupyter notebook](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/web-scraping.ipynb) available for this example to give you a bit more insight. - -### {% linkable_title Home Assistant %} - -The current release Home Assistant is published on [https://www.home-assistant.io/](/) - -{% raw %} -```yaml -sensor: -# Example configuration.yaml entry - - platform: scrape - resource: https://www.home-assistant.io - name: Release - select: ".current-version h1" - value_template: '{{ value.split(":")[1] }}' -``` -{% endraw %} - -### {% linkable_title Available implementations %} - -Get the counter for all our implementations from the [Component overview](/components/) page. - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: scrape - resource: https://www.home-assistant.io/components/ - name: Home Assistant impl. - select: 'a[href="#all"]' - value_template: '{{ value.split("(")[1].split(")")[0] }}' -``` -{% endraw %} - -### {% 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. - -```yaml -# 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 - select: 'p:nth-of-type(19)' - unit_of_measurement: 'UV Index' -``` - -### {% linkable_title IFTTT status %} - -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 -# 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 [favorite 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 -``` - -### {% linkable_title Energy price %} - -This example tries to retrieve the price for electricity. - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: scrape - resource: https://elen.nu/timpriser-pa-el-for-elomrade-se3-stockholm/ - name: Electricity price - select: ".elspot-content" - value_template: '{{ ((value.split(" ")[0]) | replace (",", ".")) }}' - unit_of_measurement: "öre/kWh" -``` -{% endraw %} diff --git a/source/_components/sensor.season.markdown b/source/_components/sensor.season.markdown deleted file mode 100644 index 875636fb7c..0000000000 --- a/source/_components/sensor.season.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Season Sensor" -description: "Instructions on 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.sense.markdown b/source/_components/sensor.sense.markdown deleted file mode 100644 index e13e45dd93..0000000000 --- a/source/_components/sensor.sense.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: Sense -description: "Instructions on how to integrate Sense within Home Assistant." -date: 2018-01-11 13:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: sense.png -ha_category: Energy -ha_iot_class: "Cloud Polling" -ha_release: 0.65 ---- - - -Integrate your [Sense](https://sense.com) meter information into Home Assistant. -To enable this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: sense - email: CLIENT_ID - password: CLIENT_SECRET - monitored_conditions: - - active_usage - - active_production - - daily_usage - - daily_production -``` - -Two types of sensors can be monitored and will be created with the following names: -- **Active Usage/Production**: Current active power usage/production in Watts. Updated every 30 seconds. -- **Daily Usage/Production**: Daily power usage/production in kWh. Updated every 5 minutes. -- ... - -Weekly, Monthly and Yearly variants are also available. - -{% configuration %} -email: - description: The email associated with your Sense account/application. - required: true - type: string -password: - description: The password for your Sense account/application. - required: true - type: string -monitored_conditions: - description: List of sensors to display in the front end. - required: true - type: list - keys: - active_usage: - description: The current power usage in W - active_production: - description: The current solar production in W - daily_usage: - description: Total power used for current day in kWh - daily_production: - description: Total power produced for current day in kWh - weekly_usage: - description: Total power used for current week in kWh - weekly_production: - description: Total power produced for current week in kWh - monthly_usage: - description: Total power used for current month in kWh - monthly_production: - description: Total power produced for current month in kWh - yearly_usage: - description: Total power used for current year in kWh - yearly_production: - description: Total power produced for current year in kWh -{% endconfiguration %} diff --git a/source/_components/sensor.sensehat.markdown b/source/_components/sensor.sensehat.markdown deleted file mode 100644 index fb3447acd5..0000000000 --- a/source/_components/sensor.sensehat.markdown +++ /dev/null @@ -1,154 +0,0 @@ ---- -layout: page -title: "Sense HAT" -description: "Instructions on how to integrate Sense HAT within Home Assistant." -date: 2017-06-03 04:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: sense-hat.png -ha_category: Sensor -ha_release: 0.35 -ha_iot_class: "Local Push" ---- - - -The `sensehat` sensor platform allows you to display information collected by a [Sense HAT](https://www.raspberrypi.org/products/sense-hat/) add-on board for Raspberry Pi. - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: sensehat - display_options: - - temperature - - humidity - - pressure -``` - -Configuration variables: - -- **display_options** (*Requires*) array: List of details to monitor. Defaults is `memory_free`. - - 'temperature' - - 'humidity' - - 'pressure' - is_hat_attached (Optional): True|False boolean; Default value is True declaring that the SenseHAT _is_ physically on the Raspberry Pi - - -#### Customizing the Sense HAT data - -**Format the sensor values** -Add the following to your `sensor` - -```yaml -# Example configuration.yaml entry -sensor: - - platform: sensehat - display_options: - - temperature - - humidity - - pressure - - - platform: template - sensors: - sensehat_temperature: - value_template: '{% raw %}{{ states.sensor.temperature.state | round(1) }}{% endraw %}' - unit_of_measurement: '°C' - sensehat_pressure: - value_template: '{% raw %}{{ states.sensor.pressure.state | round(1) }}{% endraw %}' - unit_of_measurement: 'mb' - sensehat_humidity: - value_template: '{% raw %}{{ states.sensor.humidity.state | round(1) }}{% endraw %}' - unit_of_measurement: '%' -``` - -**Give the values friendly names & icons** -Add the following to your `customize` - -```yaml -# Example configuration.yaml entry -customize: - sensor.sensehat_temperature: - icon: mdi:thermometer - friendly_name: "Temperature" - sensor.sensehat_humidity: - icon: mdi:weather-rainy - friendly_name: "Humidity" - sensor.sensehat_pressure: - icon: mdi:gauge - friendly_name: "Pressure" -``` - -**Create a group** -Add the following to your `groups` - -```yaml -# Example configuration.yaml entry -group: - sense_hat: - name: Sense HAT - entities: - - sensor.sensehat_temperature - - sensor.sensehat_humidity - - sensor.sensehat_pressure -``` -Add the _sense_hat group_ a group (_Kitchen for example_) -```yaml -# Example configuration.yaml entry -group: - kitchen: - - group.sense_hat -``` - - -### Directions for installing on Raspberry Pi All-In-One installer and HASSbian: -Here are the steps to make the _SenseHAT_ sensor work _successfully_ with the virtual environment versions. - -#### Install SenseHAT package to _homeassistant_venv_ -```bash -# switch to the homeassistant_venv environment -sudo su -s /bin/bash homeassistant -source /srv/homeassistant/homeassistant_venv/bin/activate - -# install the sense-hat lib -pip3 install sense-hat -# be patient, this will take a long while -``` -#### Return to `pi` -Type `exit` to quit out of the _homeassistant_venv_ back to your `pi` environment. - -As all of the following steps should be under the `pi` user environment. - -###### Install _RTIMU_ - -```bash -# pi user environment: Install RTIMU -pip3 install rtimulib - -# pi user environment: Add _homeassistant_ user to the _input_, _video_ and the _i2c_ groups -sudo addgroup homeassistant input -sudo addgroup homeassistant i2c -sudo addgroup homeassistant video - -# HA environment: Add symlink to RTIMU -ln -s /usr/lib/python3/dist-packages/RTIMU.cpython-35m-arm-linux-gnueabihf.so /srv/homeassistant/lib/python3.5/site-packages/ - -# pi user environment: Reboot Raspberry Pi to apply changes -sudo reboot -``` - -Unfortunately enabling the SenseHAT Sensor component for a Virtual Environment install of Home-Assistant fails with errors. -_(The Raspberry Pi All-In-One installer and HASSbian both run Home-Assistant in an virtual environment)._ -These issues have been discussed in the repository issue (#5093)[https://github.com/home-assistant/home-assistant/issues/5093) - -This fix has been tested with a clean install of: - -* [Raspbian Jessie - version January 2017](https://downloads.raspberrypi.org/raspbian/images/raspbian-2017-01-10/) - -and - -* [Home-Assistant 0.37.1](/getting-started/installation-raspberry-pi-all-in-one/) - -For setting up the Sense HAT's RGB LED matrix as lights within Home Assistant, please see the [Sense HAT light component](/components/light.sensehat/). diff --git a/source/_components/sensor.serial.markdown b/source/_components/sensor.serial.markdown deleted file mode 100644 index 356ced350f..0000000000 --- a/source/_components/sensor.serial.markdown +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: page -title: "Serial Sensor" -description: "Instructions on 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 - serial_port: /dev/ttyACM0 -``` - -{% configuration %} -serial_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 -baudrate: - description: Baudrate of the serial port. - required: false - default: 9600 Bps - type: int -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the serial line." - required: false - type: template -{% 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 %} - -## {% linkable_title Examples %} - -### {% linkable_title Arduino %} - -For controllers of the Arduino family a possible sketch to read the temperature and the humidity could look like the sample below. - -``` -#include - -void setup() { - Serial.begin(115200); -} - -void loop() { - StaticJsonBuffer<100> jsonBuffer; - JsonObject& json = prepareResponse(jsonBuffer); - json.printTo(Serial); - Serial.println(); - delay(2000); -} - -JsonObject& prepareResponse(JsonBuffer& jsonBuffer) { - JsonObject& root = jsonBuffer.createObject(); - root["temperature"] = analogRead(A0); - root["humidity"] = analogRead(A1); - return root; -} -``` - -### {% linkable_title Digispark USB Development Board %} - -This [blog post](/blog/2017/10/23/simple-analog-sensor/) describes the setup with a Digispark USB Development Board. diff --git a/source/_components/sensor.serial_pm.markdown b/source/_components/sensor.serial_pm.markdown deleted file mode 100644 index 454bb3bdb9..0000000000 --- a/source/_components/sensor.serial_pm.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Particulate matter Sensor" -description: "Instructions on how to integrate particulate matter (dust) sensors with Home Assistant." -date: 2016-08-11 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: serial_pm.png -ha_category: DIY -ha_release: 0.26 -ha_iot_class: "Local Polling" ---- - -Particulate matter sensors measure the amount of very small particles in the air. A short introduction how these sensors work can be found on [Open Home Automation](https://www.open-homeautomation.com/2016/07/19/measuring-air-quality/). - -Cheap LED based sensors usually use a GPIO interface that is hard to attach to computers. However, there are a lot of laser LED based sensors on the market that use a serial interface and can be [connected to your Home Assistant system easily with an USB to serial converter](https://www.open-homeautomation.com/2016/07/20/connecting-an-particulate-matter-sensor-to-your-pc-or-mac/). - -At this time, the following sensors are supported: - -* oneair,s3 -* novafitness,sds021 -* novafitness,sds011 -* plantower,pms1003 -* plantower,pms5003 -* plantower,pms7003 -* plantower,pms2003 -* plantower,pms3003 - -To use your PM sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -sensor: - - platform: serial_pm - serial_device: /dev/tty.SLAB_USBtoUART - name: Nova - brand: novafitness,sds011 -``` - -- **serial_device** (*Required*): The serial port to use. On *nix systems, it can often be identified by `$ ls /dev/tty*` -- **name** (*Optional*): The name displayed in the frontend. -- **brand** (*Required*): Manufacturer and type of the sensor. - diff --git a/source/_components/sensor.shodan.markdown b/source/_components/sensor.shodan.markdown deleted file mode 100644 index 6a98ad3042..0000000000 --- a/source/_components/sensor.shodan.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Shodan Sensor" -description: "Instructions on 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.sht31.markdown b/source/_components/sensor.sht31.markdown deleted file mode 100644 index 7adbfc2cee..0000000000 --- a/source/_components/sensor.sht31.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Sensirion SHT31 Sensor" -description: "Instructions on how to integrate SHT31 sensors within Home Assistant." -date: 2018-03-06 19:15 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: DIY -ha_release: 0.68 -logo: sensirion.png -ha_iot_class: "Local Polling" ---- - -The `sht31` sensor platform allows you to get the current temperature and humidity from a Sensirion SHT31 device. - -## {% linkable_title Configuration %} - -To use your SHT31 sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: sht31 - name: Bedroom - i2c_address: 0x44 - monitored_conditions: - - temperature - - humidity -``` - -{% configuration %} - name: - description: The name of the sensor. Temperature and Humidity will be added to the name for the sensor name. - required: false - default: SHT31 - type: string - i2c_address: - description: I2C address of the sensor. - required: false - default: "`0x44`" - type: int - monitored_conditions: - description: Conditions to monitor. - required: false - default: All conditions - type: list - keys: - temperature: - description: The current temperature of the SHT31. - humidity: - description: The current humidity of the SHT31. -{% endconfiguration %} diff --git a/source/_components/sensor.sigfox.markdown b/source/_components/sensor.sigfox.markdown deleted file mode 100644 index f3f0bbb0ea..0000000000 --- a/source/_components/sensor.sigfox.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Sigfox Sensor" -description: "Display messages from Sigfox devices in Home Assistant." -date: 2018-04-07 12:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: sigfox.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.68 ---- - -[SigFox](https://www.sigfox.com/en) component adding a sensor for each Sigfox device registered with your account. The default name of sensors is `sigfox_{DEVICE_ID}` where `DEVICE_ID` is the devices Sigfox ID. The state of an added Sigfox sensor is the payload of the last message published by that device. Additionally, there are attributes for the latitude and longitude coordinates of the device, as well as the signal-to-noise ratio ( [snr](https://en.wikipedia.org/wiki/Signal-to-noise_ratio)). - -```yaml -# Example configuration.yaml entry -sensor: - - platform: sigfox - api_login: your_api_login - api_password: your_api_password -``` - -{% configuration %} -api_login: - description: Your Sigfox API login. - required: true - type: string -api_password: - description: Your Sigfox API password. - required: true - type: string -name: - description: The name to prepend to the device ID. - required: false - default: "sigfox" - type: string -{% endconfiguration %} - -Note that `your_api_login` and `your_api_password` are your **API access credentials** which can be accessed by following: - -1. Log into [Sigfox backend](https://backend.sigfox.com) -1. Select `GROUP` -1. Select `API ACCESS` -1. Click on `new` and create new access entry diff --git a/source/_components/sensor.simulated.markdown b/source/_components/sensor.simulated.markdown deleted file mode 100644 index 4667b9ff39..0000000000 --- a/source/_components/sensor.simulated.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: page -title: "Simulated sensor" -description: "Component for simulating a numerical sensor." -date: 2018-02-20 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.65 ---- - -This component provides a simulated sensor that generates a time-varying signal ```V(t)``` given by the [function](https://en.wikipedia.org/wiki/Sine_wave): - - ``` - V(t) = M + A sin((2 pi (t - t_0) / w) + P) + N(s) - ``` - -where: - -- **M** = the [mean](https://en.wikipedia.org/wiki/Mean) value of the sensor -- **A** = the [amplitude](https://en.wikipedia.org/wiki/Amplitude) of the periodic contribution -- **t** = the time when a value is generated -- **t_0** = the time when the sensor is started -- **w** = the time [period](https://en.wikipedia.org/wiki/Periodic_function) in seconds for a single complete cycle of the periodic contribution -- **P** = the [phase](https://en.wikipedia.org/wiki/Phase_(waves)) offset to add to the periodic contribution, in units of degrees -- **N(s)** = the random [Gaussian noise](https://en.wikipedia.org/wiki/Gaussian_noise) with spread **s** - -A simulated sensor with default values can be added to home-assistant using the following config: - -```yaml -sensor: - - platform: simulated -``` - -To give an example of simulating real world data, a simulated relative humidity sensor (in %) can be added using the following config: - -```yaml -sensor: - - platform: simulated - name: 'simulated relative humidity' - unit: '%' - amplitude: 0 # Turns off the periodic contribution - mean: 50 - spread: 10 - seed: 999 -``` - -Configuration variables: -{% configuration %} -name: - description: The name of the sensor - required: false - default: Defaults to 'simulated' - type: string -unit: - description: The unit to apply - required: false - default: Defaults to 'value' - type: string -amplitude: - description: The amplitude of periodic contribution - required: false - default: 1 - type: float -mean: - description: The mean level of the sensor - required: false - default: 0 - type: float -period: - description: The time in seconds for one complete oscillation of the periodic contribution - required: false - default: 0 - type: seconds -phase: - description: The phase offset (in degrees) to apply to the periodic component - required: false - default: 0 - type: float -seed: - description: The [seed](https://docs.python.org/3.6/library/random.html#random.seed) value for the random noise component - required: false - default: 999 - type: int -spread: - description: The spread is the range of the randomly distributed values about their mean. This is sometimes referred to as the Full Width at Half Maximum ([FWHM](https://en.wikipedia.org/wiki/Full_width_at_half_maximum)) of the random distribution - required: false - default: None - type: float -{% endconfiguration %} diff --git a/source/_components/sensor.skybeacon.markdown b/source/_components/sensor.skybeacon.markdown deleted file mode 100644 index d4e95bb97f..0000000000 --- a/source/_components/sensor.skybeacon.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Skybeacon sensor" -description: "Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant." -date: 2017-01-17 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: DIY -ha_release: 0.37 -ha_iot_class: "Local Polling" ---- - -The `skybeacon` sensor platform supports [CR2477](http://cnsky9.en.alibaba.com)-powered [iBeacon](https://en.wikipedia.org/wiki/IBeacon)/eddystone sensors that come with temperature/sensor module. - -To use your Skybeacon sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: skybeacon - mac: "xx:xx:xx:xx:xx:xx" - monitored_conditions: - - temperature - - humidity -``` - -- **mac** (*Required*): The MAC address of your sensor. You can find this be running `hcitool lescan` from command line. -- **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 deleted file mode 100644 index 4c9f3b5434..0000000000 --- a/source/_components/sensor.skybell.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -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.sleepiq.markdown b/source/_components/sensor.sleepiq.markdown deleted file mode 100644 index 6740af6ab8..0000000000 --- a/source/_components/sensor.sleepiq.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "SleepIQ Sensor" -description: "Instructions for how to integrate SleepIQ sensors within Home Assistant." -date: 2016-08-28 8:56 -sidebar: true -comments: false -sharing: true -footer: true -logo: sleepiq.png -ha_category: Sensor -ha_release: 0.29 -ha_iot_class: "Local Polling" ---- - -To get your SleepIQ sensors working with Home Assistant, follow the instructions for the general [SleepIQ component](/components/sleepiq/). diff --git a/source/_components/sensor.sma.markdown b/source/_components/sensor.sma.markdown deleted file mode 100644 index f3eb166564..0000000000 --- a/source/_components/sensor.sma.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "SMA Solar WebConnect" -description: "Instructions on how to connect your SMA Solar Inverter to Home Assistant." -date: 2015-12-28 21:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Energy -logo: sma.png -ha_iot_class: "Local Polling" -ha_release: 0.36 ---- - - -The `sma` sensor will poll a [SMA](http://www.sma-solar.com/) [(US)](http://www.sma-america.com/) solar inverter and present the values as sensors (or attributes of sensors) in Home Assistant. - -## {% linkable_title Configuration %} - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor sma: - - platform: sma - host: IP_ADDRESS_OF_DEVICE - password: YOUR_SMA_PASSWORD - sensors: - current_consumption: [total_consumption] - current_power: - total_yield: -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the SMA WebConnect module. -- **password** (*Required*): The password of the SMA WebConnect module. -- **group** (*Optional*): The user group, which can be either `user` (the default) or `installer`. -- **sensors** (*Required*): A dictionary of sensors that will be added. The value of the dictionary can include sensor names that will be shown as attributes. -- **custom** (*Optional*): A dictionary of custom sensor key values and units - -Sensors configuration: - -The sensors can be any one of the following: -- current_power -- current_consumption -- total_power -- total_consumption - -You can create composite sensors, where the sub-sensors will be attributes of the main sensor, e.g. - -```yaml - sensors: - - current_power: [total_power, total_consumption] -``` - -The SMA WebConnect module supports a wide variety of sensors, and not all these have been mapped to standard sensors. Custom sensors can be defined by using the `custom` section of the configuration. You will need: A sensor name (no spaces), the SMA sensor key and the unit - -Example: -```yaml - custom: - yesterday_consumption: - key: 6400_00543A01 - unit: kWh - factor: 1000 -``` - -Over time more sensors will be added as standard sensors to the [pysma library](https://github.com/kellerza/pysma/blob/master/pysma/__init__.py#L18). Feel free to submit additional sensors on that repository. diff --git a/source/_components/sensor.smappee.markdown b/source/_components/sensor.smappee.markdown deleted file mode 100644 index 2886f2b434..0000000000 --- a/source/_components/sensor.smappee.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Smappee Sensor" -description: "Instructions on how to integrate Smappee energy monitor into Home Assistant." -date: 2018-02-26 08:37 -sidebar: true -comments: false -sharing: true -footer: true -logo: smappee.png -ha_release: "0.64" -ha_category: Sensor ---- - -[Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches. - -Energy monitor measurements will be automatically added when you connect to the Smappee controller. - -For more configuration information see the [Smappee component](/components/smappee/) documentation. diff --git a/source/_components/sensor.snmp.markdown b/source/_components/sensor.snmp.markdown deleted file mode 100644 index f492d5ef3a..0000000000 --- a/source/_components/sensor.snmp.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: page -title: "SNMP" -description: "Instructions on how to integrate SNMP sensors within Home Assistant." -date: 2016-06-05 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: network-snmp.png -ha_category: System Monitor -ha_iot_class: "Local Polling" -ha_release: "0.22" ---- - - -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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: snmp - host: 192.168.1.32 - baseoid: 1.3.6.1.4.1.2021.10.1.3.1 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your host, eg. `192.168.1.32`. -- **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. -- **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. - -## {% linkable_title Finding OIDs %} - -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. - -```bash -$ 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.sochain.markdown b/source/_components/sensor.sochain.markdown deleted file mode 100644 index 26ff8d5fd1..0000000000 --- a/source/_components/sensor.sochain.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "SoChain" -description: "Instructions on how to integrate chain.so data within Home Assistant." -date: 2017-06-01 16:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: sochain.png -ha_category: Finance -ha_release: 0.61 -ha_iot_class: "Cloud Polling" ---- - - -The `SoChain` sensor platform displays supported cryptocurrency wallet balances from [SoChain](https://chain.so). - -To add the SoChain sensor to your installation, specify a network and address to watch in the `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: sochain - network: LTC - address: 'M9m37h3dVkLDS13wYK7vcs7ck6MMMX6yhK' -``` - -{% configuration %} -network: - description: The network or blockchain of the cryptocurrency to watch. - required: true - type: string -address: - description: Cryptocurrency wallet address to watch. - required: true - type: string -name: - description: The name of the sensor used in the frontend. (recommended) - required: false - type: string - default: Crypto Balance -{% endconfiguration %} - -Supported networks (which can also be found [here](https://chain.so/api#networks-supported)) are: - -* BTC -* LTC -* DOGE -* DASH diff --git a/source/_components/sensor.socialblade.markdown b/source/_components/sensor.socialblade.markdown deleted file mode 100644 index cf106c9133..0000000000 --- a/source/_components/sensor.socialblade.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: Social Blade Sensor -description: "Instructions on how to set up Social Blade Sensor within Home Assistant." -date: 2018-04-23 08:00 -sidebar: false -comments: false -sharing: true -footer: true -logo: socialblade.png -ha_category: Sensor -ha_release: 0.69 -ha_iot_class: "Cloud Polling" ---- - -The `socialblade` sensor component allows you get updates on a youtube channel using your social blade channel id. The sensor gets the subscribers and total views count from [Social Blade Website]( https://socialblade.com/) - -to get the channel id you can go to [Social Blade Website]( https://socialblade.com/) and search for youtube channel by username, then select the channel and grab the id from the url. -The channel id will be the last part of the url : -https://socialblade.com/youtube/channel/{channel_id} - -## Example for `configuration.yaml` : - -```yaml -sensor: - - platform: socialblade - channel_id: YOUR_CHANNEL_NUMBER -``` - -{% configuration %} -channel_id: - description: channel id number optained from the URL when you access Social Blade web client. - required: true - type: string -{% endconfiguration %} - -All the data will be fetch from [Social Blade]( https://socialblade.com/). diff --git a/source/_components/sensor.sonarr.markdown b/source/_components/sensor.sonarr.markdown deleted file mode 100644 index 13a4944fea..0000000000 --- a/source/_components/sensor.sonarr.markdown +++ /dev/null @@ -1,126 +0,0 @@ ---- -layout: page -title: "Sonarr Sensor" -description: "Instructions on how to integrate Sonarr sensors with Home Assistant" -date: 2016-11-19 13:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: sonarr.png -ha_category: Sensor -ha_release: 0.34 -ha_iot_class: "Local Polling" ---- - - -This `sonarr` sensor platform pulls data from a given [Sonarr](https://sonarr.tv/) instance. - -## {% linkable_title Configuration %} - -To use your Sonarr sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: sonarr - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **api_key** (*Required*): Your Sonarr API key, found in Settings > General in the Sonarr Web UI. -- **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. - -- **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 %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Get Episodes airing in next 2 days %} - -```yaml -# Example configuration.yml entry -sensor: - - platform: sonarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - upcoming - days: 2 -``` - -### {% linkable_title Enable SSL %} - -SSL may run on a different port than the default (8989). The SSL port can be bound to any port in Sonarr, so it should be set in the config here (unless it is changed to 8989). See the [Sonarr site](https://github.com/Sonarr/Sonarr/wiki/SSL) for details on SSL in Sonarr. - -```yaml -# Example configuration.yml entry -sensor: - - platform: sonarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - port: 9898 - monitored_conditions: - - upcoming - days: 2 - ssl: true -``` - -### {% linkable_title Get disk space for all storage locations %} - -```yaml -# Example configuration.yml entry -sensor: - - platform: sonarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - diskspace -``` - -### {% linkable_title Get disk space for listed storage locations %} - -The storage locations Sonarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor. - -```yaml -# Example configuration.yml entry -sensor: - - platform: sonarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - diskspace - include_paths: - - /tank/plex -``` - -### {% linkable_title Get disk space in different unit %} - -The Sonarr API returns available space in bytes, but this sensor will default to reporting it in GB to make the number more manageable. This can be overridden if your storage needs require a different unit. All units from bytes (B) to yottabytes (YB) are supported. - -*This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.* - -```yaml -# Example configuration.yml entry -sensor: - - platform: sonarr - api_key: YOUR_API_KEY - host: 192.168.1.8 - monitored_conditions: - - diskspace - unit: TB -``` diff --git a/source/_components/sensor.speedtest.markdown b/source/_components/sensor.speedtest.markdown deleted file mode 100644 index fb95a0cdff..0000000000 --- a/source/_components/sensor.speedtest.markdown +++ /dev/null @@ -1,151 +0,0 @@ ---- -layout: page -title: "Speedtest.net" -description: "How to integrate Speedtest.net within Home Assistant." -date: 2016-02-12 9:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: speedtest.png -ha_category: System Monitor -featured: false -ha_release: 0.13 -ha_iot_class: "Cloud Polling" ---- - -The `speedtest` sensor component uses the [Speedtest.net](https://speedtest.net/) web service to measure network bandwidth performance. - -## {% linkable_title Configuration %} - -By default, it will run every hour. The user can change the update frequency in the configuration by defining the minute, hour, and day for a speed test to run. For the `server_id` check the list of [available servers](https://www.speedtest.net/speedtest-servers.php). - -To add a Speedtest.net sensor to your installation, add the following to your `configuration.yaml` file: - -Once per hour, on the hour (default): - -```yaml -# Example configuration.yaml entry -sensor: - - platform: speedtest - monitored_conditions: - - ping - - download - - upload -``` - -{% configuration %} - monitored_conditions: - description: Sensors to display in the frontend. - required: true - type: list - keys: - ping: - description: Reaction time in ms of your connection (how fast you get a response after you've sent out a request). - download: - description: Download speed (Mbit/s) - upload: - description: Upload speed (Mbit/s) - server_id: - description: Specify the speed test server to perform the test against. - required: false - type: int - day: - description: Specify the day(s) of the month to schedule the speed test. Use a list for multiple entries. - required: false - type: [int, list] - hour: - description: Specify the hour(s) of the day to schedule the speed test. Use a list for multiple entries. - required: false - type: [int, list] - minute: - description: Specify the minute(s) of the hour to schedule the speed test. Use a list for multiple entries. - required: false - type: [int, list] - default: 0 - second: - description: Specify the second(s) of the minute to schedule the speed test. Use a list for multiple entries. - required: false - type: [int, list] - default: 0 - manual: - description: True or False to turn manual mode on or off. Manual mode will disable scheduled speed tests. - required: false - type: bool - default: false -{% endconfiguration %} - -This component uses [speedtest-cli](https://github.com/sivel/speedtest-cli) to gather network performance data from Speedtest.net. Please be aware of the potential [inconsistencies](https://github.com/sivel/speedtest-cli#inconsistency) that this component may display. - -When Home Assistant first starts up, the values of the speed test will show as `Unknown`. You can use the service `sensor.update_speedtest` to run a manual speed test and populate the data or just wait for the next regularly scheduled test. You can turn on manual mode to disable the scheduled speed tests. - -## {% linkable_title Examples %} - -In this section, you find some real-life examples of how to use this sensor. - -### {% linkable_title Run periodically %} - -Every half hour of every day: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: speedtest - minute: - - 0 - - 30 - monitored_conditions: - - ping - - download - - upload -``` - -### {% linkable_title Run at a specific time %} - -Everyday at 12:30AM, 6:30AM, 12:30PM, 6:30PM: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: speedtest - minute: 30 - hour: - - 0 - - 6 - - 12 - - 18 - monitored_conditions: - - ping - - download - - upload -``` - -### {% linkable_title Using as a trigger in an automation %} - -{% raw %} -```yaml -# Example configuration.yaml entry -automation: - - alias: "Internet Speed Glow Connect Great" - trigger: - - platform: template - value_template: "{{ states('sensor.speedtest_download')|float > 10 }}" - action: - - service: shell_command.green - - - alias: "Internet Speed Glow Connect Poor" - trigger: - - platform: template - value_template: "{{ states('sensor.speedtest_download')|float < 10 }}" - action: - - service: shell_command.red -``` -{% endraw %} - -## {% linkable_title Notes %} - -- When running on Raspberry Pi, just note that the maximum speed is limited by its 100 Mbit/s LAN adapter. -- Running this platform can have negative effects on the system's performance as it requires a fair amount of memory. -- Entries under `monitored_conditions` only control what entities are available in Home Assistant, it does not disable the condition from running. -- If ran frequently, this component has the ability to use a considerable amount of data. Frequent updates should be avoided on bandwidth-capped connections. -- While running, your network capacity is fully utilized. This may have a negative effect on other devices in use the network such as gaming consoles or streaming boxes. diff --git a/source/_components/sensor.spotcrime.markdown b/source/_components/sensor.spotcrime.markdown deleted file mode 100644 index b36d01b4b4..0000000000 --- a/source/_components/sensor.spotcrime.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "Spot Crime" -description: "Instructions on how to integrate spotcrime.com into Home Assistant." -date: 2018-02-16 9:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_release: 0.65 -ha_iot_class: "Cloud Polling" ---- - -The `spotcrime` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Spot Crime](http://spotcrime.com). Your regional emergency services may or may not report data. The sensor defaults to counting incidents within one day, but can be customized via configuration.yaml. - -You will need to request an API key from [Spotcrime](mailto:pyrrhus@spotcrime.com). - -To enable this sensor, add the following lines to your `configuration.yaml`. Your `radius` should be of sufficient size to capture incidents in your area. 0.01 = 1 mile. - -```yaml -sensor: - - platform: spotcrime - name: - radius: - api_key: <"your_api_key_here"> -``` - -{% configuration %} -name: - description: Name the sensor what you'd like. - required: true - type: string -radius: - description: Radius you'd like to search within. 0.01 = 1 mile. - required: true - type: float -api_key: - description: The API key to access the service. - required: true - type: string -days: - description: Number of days you'd like see to crime statistics for. - required: false - type: int -include: - description: Event types you want statistics for. - required: false - type: list -exclude: - description: Event types to ignore statistics for. - required: false - type: list -{% endconfiguration %} - -## {% linkable_title Notes %} - -### {% linkable_title Incident Types %} - -You can explicitly include or exclude incident types. Specifying `include`s restricts the incidents to those types. Specifying `exclude`s will return all incident types except those specified. - -These incident types are available: - -- Arrest -- Arson -- Assault -- Burglary -- Robbery -- Shooting -- Theft -- Vandalism -- Other - -### {% linkable_title Events %} - -The `crimealerts` sensor fires a `crimealerts_incident` event when a new incident is detected, including the type, time, and location of the incident. diff --git a/source/_components/sensor.sql.md b/source/_components/sensor.sql.md deleted file mode 100644 index e676ca9d43..0000000000 --- a/source/_components/sensor.sql.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: page -title: "SQL Sensor" -description: "Instructions how to integrate SQL sensors into Home Assistant." -date: 2018-02-03 00:22 -sidebar: true -comments: false -sharing: true -footer: true -logo: sql.png -ha_category: Sensor -ha_release: 0.63 ---- - -The `SQL` sensor platform enables you to use values from an [SQL](https://en.wikipedia.org/wiki/SQL) database supported by the [sqlalchemy](https://www.sqlalchemy.org) library, to populate a sensor state (and attributes). -This can be used to present statistics about Home Assistant sensors if used with the recorder component database. It can also be used with an external data source. - -To configure this sensor, you need to define the sensor connection variables and a list of queries to your `configuration.yaml` file. A sensor will be created for each query: - -To enable it, add the following lines to your `configuration.yaml`: - -{% raw %} -```yaml -# Example configuration.yaml entry to monitor hass database size in MySQL -sensor: - - platform: sql - db_url: mysql://user:password@localhost/hass - queries: - - name: HASS DB size - query: 'SELECT table_schema "database", Round(Sum(data_length + index_length) / 1024, 1) "value" FROM information_schema.tables WHERE table_schema="hass" GROUP BY table_schema;' - column: 'value' - unit_of_measurement: kB -``` -{% endraw %} - -{% configuration %} -db_url: - description: The URL which points to your database. See [supported engines](/components/recorder/#custom-database-engines). - required: false - default: "Defaults to the default recorder `db_url` (not the current `db_url` of recorder)." - type: string -queries: - description: List of your queries. - required: true - type: map - keys: - name: - description: The name of the sensor. - required: true - type: string - query: - description: An SQL QUERY string, should return 1 result at most. - required: true - type: string - column: - description: The field name to select. - required: true - type: string - unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. - required: false - type: string - value_template: - description: Defines a template to extract a value from the payload. - required: false - type: template -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Current state of an entity %} - -This example shows the previously *recorded* state of sensor *abc123*. - -```sql -SELECT * FROM states WHERE entity_id = 'sensor.abc123' ORDER BY id DESC LIMIT 2 -``` - -Note that the SQL sensor state corresponds to the last row of the SQL resultset. - -### {% linkable_title Previous state of an entity %} - -This example only works with *binary_sensors*: - -```sql -SELECT * FROM states WHERE entity_id='binary_sensor.xyz789' GROUP BY state ORDER BY last_changed DESC LIMIT 1 -``` - -### {% linkable_title Database size in Postgres %} - -```yaml -- platform: sql - db_url: postgresql://user:password@host/dbname - queries: - - name: db_size - query: "SELECT (pg_database_size('dsmrreader')/1024/1024) as db_size;" - column: "db_size" - unit_of_measurement: MB -``` diff --git a/source/_components/sensor.startca.markdown b/source/_components/sensor.startca.markdown deleted file mode 100644 index cd92fe272c..0000000000 --- a/source/_components/sensor.startca.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: page -title: "Start.ca" -description: "Instructions on how to integrate Start.ca data usage within Home Assistant." -date: 2018-02-12 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: startca.png -ha_category: Sensor -ha_release: 0.64 -ha_iot_class: "Cloud Polling" ---- - -Integrate your [Start.ca](https://www.start.ca/) account information into Home Assistant. - -You can get your API key from: - -[Start.ca Usage API](https://www.start.ca/support/usage/api) - -To use your Start.ca sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: startca - api_key: API_KEY - total_bandwidth: 400 - monitored_variables: - - usage - - usage_gb - - limit - - used_download - - used_upload - - used_total - - grace_download - - grace_upload - - grace_total - - total_download - - total_upload - - used_remaining -``` - -{% configuration %} -api_key: - description: The Start.ca API key to access the service. - required: true - type: string -total_bandwidth: - description: Your bandwidth limit in gigabytes. Set to `0` for unlimited plans without a cap. - required: true - type: string -monitored_conditions: - description: Conditions to display in the frontend. - required: true - type: list - keys: - usage: - description: Bandwidth usage (percentage). - usage_gb: - description: Bandwidth usage (gigabytes). - limit: - description: Monthly bandwidth limit (gigabytes). - used_download: - description: Bandwidth used by download outside the grace period (gigabytes). - used_upload: - description: Bandwidth used by upload outside the grace period (gigabytes). - used_total: - description: Total bandwidth (download and upload sum calculation) used outside the grace period (gigabytes). - grace_download: - description: Bandwidth used by download during the grace period (gigabytes). - grace_upload: - description: Bandwidth used by upload during the grace period (gigabytes). - grace_total: - description: Total bandwidth (download and upload sum calculation) used during the unlimited period (gigabytes). - total_download: - description: Total bandwidth download (Grace + Used) (gigabytes). - total_download: - description: Total bandwidth upload (Grace + Used) (gigabytes). - used_remaining: - description: Remaining bandwidth calucated from used and supplied total bandwidth (gigabytes). -{% endconfiguration %} - diff --git a/source/_components/sensor.statistics.markdown b/source/_components/sensor.statistics.markdown deleted file mode 100644 index 9bfd40dd39..0000000000 --- a/source/_components/sensor.statistics.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Statistics Sensor" -description: "Instructions on how to integrate statistical sensors into Home Assistant." -date: 2016-09-28 12:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: "0.30" ---- - - -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. - -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 `recorder` 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: - -- **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.steam_online.markdown b/source/_components/sensor.steam_online.markdown deleted file mode 100644 index e49bef70cb..0000000000 --- a/source/_components/sensor.steam_online.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Steam" -description: "Instructions on how to set up Steam sensors in Home Assistant." -date: 2016-04-30 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: steam.png -ha_category: Social -ha_iot_class: "Cloud Polling" -ha_release: 0.14 ---- - - -The Steam component will allow you to track the online status of public [Steam](https://steamcommunity.com) accounts. - -You need a [free API key](https://steamcommunity.com/dev/apikey) to use the component - -To find an account's 64-bit SteamID on profiles without a custom URL you can check the URL of the profile page, the long string of numbers at the end is the 64-bit SteamID. If the profile has a custom URL you will have to copy the URL into [STEAMID I/O](https://steamid.io/) to find the 64-bit SteamID. - -To use Steam in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: steam_online - api_key: YOUR_API_KEY - accounts: - - account1 - - account2 -``` - -Configuration variables: - -- **api_key** (*Required*): Your API key from [https://steamcommunity.com/dev/apikey](https://steamcommunity.com/dev/apikey). -- **accounts** array (*Required*): Array of accounts. - - **account_id** (*Required*): 64-bit SteamID. - - -If you want to add the accounts to a group for example you will have to use: - -```yaml -# Example configuration.yaml entry -group: - steam: - name: Steam - entities: - - sensor.steam_account1 - - sensor.steam_account2 -``` diff --git a/source/_components/sensor.supervisord.markdown b/source/_components/sensor.supervisord.markdown deleted file mode 100644 index fc978f2f2d..0000000000 --- a/source/_components/sensor.supervisord.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Supervisord" -description: "Instructions on how to integrate Supervisord within Home Assistant." -date: 2016-05-13 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: supervisord.png -ha_category: System Monitor -ha_release: "0.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 an [iFrame panel](/components/panel_iframe/). - -

    - -

    - - -To use this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: supervisord -``` - -Configuration variables: - -- **url** (*Optional*): The URL to track. Default to `http://localhost:9001/RPC2`. - diff --git a/source/_components/sensor.swiss_hydrological_data.markdown b/source/_components/sensor.swiss_hydrological_data.markdown deleted file mode 100644 index 44f4d6100b..0000000000 --- a/source/_components/sensor.swiss_hydrological_data.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Swiss Hydrological Data" -description: "Instructions on how to integrate hydrological data of Swiss waters within Home Assistant." -date: 2016-06-17 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: swiss-hydrological-data.png -ha_category: Weather -ha_iot_class: "Cloud Polling" -ha_release: 0.22 ---- - -

    - This sensor doesn't work at the moment due to changed by the [Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie)](http://www.hydrodaten.admin.ch) to access the data. -

    - -The `swiss_hydrological_data` sensor will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland. - -The [station overview](http://www.hydrodaten.admin.ch/en/danger-levels-table.html) contains a list of all available measuring points and will help to determine the ID of station which is needed for the configuration. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: swiss_hydrological_data - station: STATION_ID -``` - -Configuration variables: - -- **name** (*Optional*): Name to use in the frontend. -- **station** (*Required*): The ID of the measurement point. - -The hydrological measurings are coming from the [Swiss Federal Office for the Environment (Bundesamt für Umwelt - Abt. Hydrologie)](http://www.hydrodaten.admin.ch) and are updated almost in real-time. - -This sensor contains additional information which an easily accessed by a [template sensor](/components/sensor.template/). - -```yaml -# Example configuration.yaml entry -sensor: - platform: template - sensors: - discharge: - value_template: '{% raw %}{{ states.sensor.aare.attributes.Discharge }}{% endraw %}' - friendly_name: 'Discharge' -``` - diff --git a/source/_components/sensor.swiss_public_transport.markdown b/source/_components/sensor.swiss_public_transport.markdown deleted file mode 100644 index c1063e4d4a..0000000000 --- a/source/_components/sensor.swiss_public_transport.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Swiss Public Transport" -description: "Instructions on how to integrate timetable data for traveling in Switzerland within Home Assistant." -date: 2015-06-02 21:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: train.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: pre 0.7 ---- - - -The `swiss_public_transport` sensor will give you the next three departure times from a given location to another one in Switzerland. - -The [Swiss public transport API](http://transport.opendata.ch/) only allows 1000 requests per 24 hours. - -The [Stationboard](http://transport.opendata.ch/examples/stationboard.html) website can help to determine the exact name of the start and the end station. - -Then add the data to your `configuration.yaml` file as shown in the example: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: swiss_public_transport - from: STATION_ID - to: STATION_ID -``` - -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.syncthru.markdown b/source/_components/sensor.syncthru.markdown deleted file mode 100644 index 19b2e5d139..0000000000 --- a/source/_components/sensor.syncthru.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: page -title: "Samsung SyncThru Printer" -description: "Instructions on how to integrate a Samsung printer providing SyncThru within Home Assistant." -date: 2018-02-19 23:33 -sidebar: true -comments: false -sharing: true -footer: true -logo: samsung.png -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.66 ---- - -The Samsung SyncThru Printer platform allows you to read current data from your local Samsung printer. - -It usually provides information about the device's state, the left amount of ink or toner and the state of paper trays. -The platform automatically monitors every supported part. - -If you wish not to include certain monitored values specify the values that you would like to see in the front-end via the `monitored_conditions` setting. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: syncthru - resource: http://my-printer.address - name: My Awesome Printer - monitored_conditions: - - toner_black - - output_tray_0 -``` - -{% configuration %} - resource: - description: The address for connecting to the printer. Equal to the SyncThru Webservice address. - required: true - default: false - type: url - name: - description: A user specified name for the printer. Defaults to "Samsung Printer" and the friendly name will be the name of the printer model. - required: false - default: Samsung Printer - type: string - monitored_conditions: - description: Conditions to display in the frontend. - required: false - default: all values - type: list - keys: - toner_black: - description: Black toner fill level - toner_cyan: - description: Cyan toner fill level - toner_magenta: - description: Magenta toner fill level - toner_yellow: - description: Yellow toner fill level - drum_black: - description: Black drum state - drum_cyan: - description: Cyan drum state - drum_magenta: - description: Magenta drum state - drum_yellow: - description: Yellow drum state - tray_1: - description: First paper input tray state - tray_2: - description: Second paper input tray state - tray_3: - description: Third paper input tray state - tray_4: - description: Fourth paper input tray state - tray_5: - description: Fifth paper input tray state - output_tray_0: - description: First paper output tray state - output_tray_1: - description: Second paper output tray state - output_tray_2: - description: Third paper output tray state - output_tray_3: - description: Fourth paper output tray state - output_tray_4: - description: Fifth paper output tray state - output_tray_5: - description: Sixth paper output tray state -{% endconfiguration %} diff --git a/source/_components/sensor.synologydsm.markdown b/source/_components/sensor.synologydsm.markdown deleted file mode 100644 index 0b4b4ba197..0000000000 --- a/source/_components/sensor.synologydsm.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "SynologyDSM Sensor" -description: "Instructions on how to integrate the SynologyDSM sensor within Home Assistant." -date: 2016-10-30 23:21 -sidebar: true -comments: false -sharing: true -footer: true -logo: synology.png -ha_category: System Monitor -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - - -The `synologydsm` sensor platform allows getting various statistics from your [Synology NAS](https://www.synology.com). - -## {% linkable_title Configuration %} - -To use the `synologydsm` sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: synologydsm - host: IP_ADDRESS_OF_SYNOLOGY_NAS - username: YOUR_USERNAME - password: YOUR_PASSWORD - monitored_conditions: - - cpu_total_load - - memory_real_usage - - network_up -``` - -Configuration variables: - -- **host** (*Required*): The IP address of the Synology NAS to monitor. -- **port** (*Optional*): The port number on which the Synology NAS is reachable. Defaults to `5000`. -- **username** (*Required*): An user to connect to the Synology NAS (a separate account is advised, see the Separate User Configuration section below for details). -- **password** (*Required*): The password of the user to connect to the Synology NAS. -- **volumes** (*Optional*): Array of volumes to monitor. Defaults to all volumes. -- **disks** (*Optional*): Array of disks to monitor. Defaults to all disks. -- **monitored_conditions** (*Required*): Defines a [template](/topics/templating/) to extract a value from the payload. - - **cpu_other_load**: Displays unspecified load in percentage. - - **cpu_user_load**: Displays user load in percentage. - - **cpu_system_load**: Displays system load in percentage. - - **cpu_total_load**: Displays combined load in percentage. - - **cpu_1min_load**: Displays maximum load in past minute. - - **cpu_5min_load**: Displays maximum load in past 5 minutes. - - **cpu_15min_load**: Displays maximum load in past 15 minutes. - - **memory_real_usage**: Displays percentage of memory used. - - **memory_size**: Displays total size of memory in MB. - - **memory_cached**: Displays total size of cache in MB. - - **memory_available_swap**: Displays total size of available swap in MB. - - **memory_available_real**: Displays total size of memory used (based on real memory) in MB. - - **memory_total_swap**: Displays total size of actual memory in MB. - - **memory_total_real**: Displays total size of real memory in MB. - - **network_up**: Displays total up speed of network interfaces (combines all interfaces). - - **network_down**: Displays total down speed of network interfaces (combines all interfaces). - - **disk_name**: Displays the name of the hard disk (creates a new entry for each disk). - - **disk_device**: Displays the path of the hard disk (creates a new entry for each disk). - - **disk_smart_status**: Displays the S.M.A.R.T status of the hard disk (creates a new entry for each disk). - - **disk_status**: Displays the status of the hard disk (creates a new entry for each disk). - - **disk_exceed_bad_sector_thr**: Displays true / false to indicate if the hard disk exceeded the maximum bad sector threshold (creates a new entry for each disk). - - **disk_below_remain_life_thr**: Displays true / false to indicate if the hard disk dropped below the remain life threshold (creates a new entry for each disk). - - **disk_temp**: Displays the temperature of the hard disk (creates a new entry for each disk, uses the unit_system to display in C or F). - - **volume_status**: Displays the status of the volume (creates a new entry for each volume). - - **volume_device_type**: Displays the volume type (RAID, etc) (creates a new entry for each volume). - - **volume_size_total**: Displays the total size of the volume in GB's (creates a new entry for each volume). - - **volume_size_used**: Displays the used space on this volume in GB's (creates a new entry for each volume). - - **volume_percentage_used**: Displays the percentage used for this volume in GB's (creates a new entry for each volume). - - **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). - -

    -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. - -When creating the user it is possible to deny access to all locations and applications. By doing this the user will not be able to login to the web interface or view any of the files on the Synology NAS. It is still able to read the utilization and storage information using the API. diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown deleted file mode 100644 index 855dca71c0..0000000000 --- a/source/_components/sensor.systemmonitor.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: page -title: "System Monitor" -description: "Instructions on how to monitor the Home Assistant host." -date: 2015-03-23 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: system_monitor.png -ha_category: System Monitor -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - -The `systemmonitor` sensor platform allows you to monitor disk usage, memory usage, CPU usage, and running processes. This platform has superseded the process component which is now considered deprecated. - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: systemmonitor - resources: - - type: disk_use_percent - arg: /home - - type: memory_free -``` - -Configuration variables: - -- **resources** array (*Required*): Contains all entries to display. - - **type** (*Required*): The type of the information to display, please check the table below for details. - - **arg** (*Optional*): Argument to use, please check the table below for details. - -The table contains types and their argument to use in your `configuration.yaml` file. - -| 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 | | - -## {% linkable_title Linux specific %} - -To retrieve all available network interfaces on a Linux System, execute the `ifconfig` command. - -```bash -$ ifconfig -a | sed 's/[ \t].*//;/^$/d' -``` - -## {% linkable_title Windows specific %} - -When running this platform on Microsoft Windows, Typically, the default interface would be called `Local Area Connection`, so your configuration might look like: - -```yaml -sensor: - - platform: systemmonitor - resources: - - type: network_in - arg: 'Local Area Connection' -``` - -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: - - Media State . . . . . . . . . . . : Media disconnected - Connection-specific DNS Suffix . : -``` - -Where the name is `Wireless Network Connection` diff --git a/source/_components/sensor.sytadin.markdown b/source/_components/sensor.sytadin.markdown deleted file mode 100644 index 1c44a9bdd3..0000000000 --- a/source/_components/sensor.sytadin.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Sytadin Sensor" -description: "Instructions on 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.tado.markdown b/source/_components/sensor.tado.markdown deleted file mode 100644 index 669042f8bc..0000000000 --- a/source/_components/sensor.tado.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Tado Sensor" -description: "Instructions on how to integrate Tado thermostats with Home Assistant." -date: 2017-03-20 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tado.png -ha_category: Sensor -ha_release: 0.41 -ha_iot_class: "Cloud Polling" ---- - -The `tado` sensor platform allow you to monitor your tado climate devices. - - -The requirement is that you have set up the [tado](/components/tado/) component. - diff --git a/source/_components/sensor.tahoma.markdown b/source/_components/sensor.tahoma.markdown deleted file mode 100644 index d5dbf0530e..0000000000 --- a/source/_components/sensor.tahoma.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Tahoma Sensor" -description: "Instructions on how to integrate Tahoma sensors into Home Assistant." -date: 2017-07-18 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tahoma.png -ha_category: Sensor -ha_release: 0.59 ---- - -The `tahoma` sensor platform lets you see sensors added to your Tahoma Box in Home Assistant. - -Sensors will be added automatically. Please refer to the [component](/components/tahoma/) configuration on how to setup Tahoma. diff --git a/source/_components/sensor.tank_utility.markdown b/source/_components/sensor.tank_utility.markdown deleted file mode 100644 index 061c66ab91..0000000000 --- a/source/_components/sensor.tank_utility.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -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 deleted file mode 100644 index 1d27c66882..0000000000 --- a/source/_components/sensor.tcp.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: page -title: TCP Sensor -description: "Instructions on how to set up TCP sensors within Home Assistant." -date: 2016-02-22 10:03 -sidebar: true -comments: false -sharing: true -footer: true -logo: tcp_ip.png -ha_category: Sensor -ha_release: 0.14 -ha_iot_class: "Local Polling" ---- - -The TCP component allows the integration of some services for which a specific Home Assistant component does not exist. If the service communicates over a TCP socket with a simple request/reply mechanism then the chances are that this component will allow integration with it. - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: tcp - host: IP_ADDRESS - port: PORT - payload: PAYLOAD -``` - -Configuration options for the a TCP Sensor: - -- **name** (*Required*): The name you'd like to give the sensor in Home Assistant. -- **host** (*Required*): The hostname/IP address to connect to. -- **port** (*Required*): The port to connect to the host on. -- **payload** (*Required*): What to send to the host in order to get the response we're interested in. -- **timeout** (*Optional*): How long in seconds to wait for a response from the service before giving up and disconnecting. Defaults to `10` -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. By default it's assumed that the entire response is the value. -- **unit_of_measurement** (*Optional*): The unit of measurement to use for the value. -- **buffer_size** (*Optional*): The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default. Defaults to `1024`. - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title EBUSd %} - -The [EBUSd](https://github.com/john30/ebusd/wiki) service enables connection to an EBUS serial bus on some home heating/cooling systems. Using this service it is possible to extract various metrics which may be useful to have within Home Assistant. In order to use EBUSd, you connect to it using a TCP socket and send it a command. The service will respond with the value it has received from EBUS. On the command line, this would look something like: - -```bash -$ echo "r WaterPressure" | nc 10.0.0.127 8888 -0.903;ok -``` - -You will notice that the output from the service is not just a single value (it contains ";ok" as well). To grab the value we're interested in, we can use a Jinja2 template. The response received is injected into the template as the `value` variable. To use this value within Home Assistant, use the following configuration: - -```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 -``` - -### {% linkable_title hddtemp %} - -The tool `hddtemp` collects the temperature of your hard disks. - -```bash -$ hddtemp -/dev/sda: SAMSUNG MZMTE256HMHP-000L1: 39°C -``` - -With `hddtemp -d` you can run the tool in TCP/IP daemon mode on port 7634 which enables you to get the data across the network. - -```bash -$ telnet localhost 7634 -Trying 127.0.0.1... -Connected to localhost. -Escape character is '^]'. -|/dev/sda|SAMSUNG MZMTE256HMHP-000L1|38|C|Connection closed by foreign host. -``` - -The entry for the `configuration.yaml` file for a `hddtemp` sensor could look like the example below. - -```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" -``` diff --git a/source/_components/sensor.ted5000.markdown b/source/_components/sensor.ted5000.markdown deleted file mode 100644 index 20e94ba3e8..0000000000 --- a/source/_components/sensor.ted5000.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "TED5000 electricity monitoring" -description: "How to add a TED5000 to Home Assistant." -date: 2016-09-27 11:19 -sidebar: true -comments: false -sharing: true -footer: true -logo: ted.png -ha_category: Sensor -ha_release: "0.30" -ha_iot_class: "Local Polling" ---- - -The `ted 5000` monitors electricity consumption/production by connecting to the [TED](http://www.theenergydetective.com/home) gateway, itself connected to one or several Measuring Transmitting Units (MTU). The platform creates up to two sensors per MTU, one for Wattage the other for Voltage. - -If you want to enable the ted5000 sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ted5000 - host: 192.168.1.100 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your ted gateway. -- **port** (*Optional*): The port of your ted gateway. Defaults to 80. -- **name** (*Optional*): Name of the ted gateway. Defaults to ted. - -For each plugged MTU, using an index starting at 1, the platform creates 2 sensors: - -```yaml -sensor._mtu_power -sensor._mtu_voltage -``` - diff --git a/source/_components/sensor.teksavvy.markdown b/source/_components/sensor.teksavvy.markdown deleted file mode 100644 index 9f7a8e70fa..0000000000 --- a/source/_components/sensor.teksavvy.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: "TekSavvy" -description: "Instructions on how to integrate TekSavvy data usage within Home Assistant." -date: 2017-12-17 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: teksavvy.png -ha_category: Sensor -ha_release: 0.62 -ha_iot_class: "Cloud Polling" ---- - -Integrate your [TekSavvy](https://myaccount.teksavvy.com/) account information into Home Assistant. - -You can get your API key from [TekSavvy My Account](https://myaccount.teksavvy.com/ApiKey/ApiKeyManagement). - -To use your TekSavvy sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: teksavvy - api_key: API_KEY - total_bandwidth: 400 - monitored_variables: - - usage - - usage_gb - - limit - - onpeak_download - - onpeak_upload - - onpeak_total - - offpeak_download - - offpeak_upload - - offpeak_total - - onpeak_remaining -``` - -{% configuration %} -api_key: - description: The TekSavvy API key to access the service. - required: true - type: string -total_bandwidth: - description: Your bandwidth limit in gigabytes. Set to `0` for unlimited plans without a cap. - required: true - type: string -monitored_conditions: - description: Conditions to display in the frontend. - required: true - type: list - keys: - usage: - description: Bandwidth usage (percentage). - usage_gb: - description: Bandwidth usage (gigabytes). - limit: - description: Monthly bandwidth limit (gigabytes). - onpeak_download: - description: Bandwidth used by download outside the unmetered period (gigabytes). - onpeak_upload: - description: Bandwidth used by upload outside the unmetered period (gigabytes). - onpeak_total: - description: Total bandwidth used outside the unmetered period (gigabytes). - offpeak_download: - description: Bandwidth used by download during the unlimited period (gigabytes). - offpeak_upload: - description: Bandwidth used by upload during the unlimited period (gigabytes). - offpeak_total: - description: Total bandwidth used during the unlimited period (gigabytes). - onpeak_remaining: - description: Remaining bandwidth (gigabytes). -{% endconfiguration %} - diff --git a/source/_components/sensor.tellduslive.markdown b/source/_components/sensor.tellduslive.markdown deleted file mode 100644 index 4e136af476..0000000000 --- a/source/_components/sensor.tellduslive.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Telldus Live sensor" -description: "Instructions on how to integrate Telldus Live sensors into Home Assistant." -date: 2016-01-17 15:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus.png -ha_category: Sensor -ha_iot_class: "Local Polling" ---- - -Integrates Telldus Live sensors into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. - diff --git a/source/_components/sensor.tellstick.markdown b/source/_components/sensor.tellstick.markdown deleted file mode 100644 index c980118ed4..0000000000 --- a/source/_components/sensor.tellstick.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "TellStick Sensor" -description: "Instructions on how to integrate TellStick sensors into Home Assistant." -date: 2015-08-06 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus_tellstick.png -ha_category: Sensor -ha_iot_class: "Local Polling" ---- - - -The `tellstick` sensor platform allows you to get current meteorological data from a [TellStick](http://www.telldus.se/products/tellstick) device. - - -To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: tellstick -``` - -Configuration variables: - -- **ID: Name** (*Optional*): Entry for a sensor with the name for it and its ID. -- **only_named** (*Optional*): Only show the named sensors. Set to `True` to hide sensors. -- **temperature_scale** (*Optional*): The scale of the temperature value. -- **datatype_mask** (*Optional*): Mask to determine which sensor values to show based on. Please check the [TellCore tellcore.constants documentation](https://tellcore-py.readthedocs.org/en/v1.1.2/constants.html#module-tellcore.constants) for details. - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Full configuration %} - -```yaml -# Example configuration.yaml entry -sensor: - - platform: tellstick - 135: Outside - 21: Inside - only_named: True - temperature_scale: "°C" - datatype_mask: 1 -``` diff --git a/source/_components/sensor.temper.markdown b/source/_components/sensor.temper.markdown deleted file mode 100644 index 09626f0984..0000000000 --- a/source/_components/sensor.temper.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "TEMPer Sensor" -description: "Instructions on how to integrate TEMPer sensors into Home Assistant." -date: 2015-08-06 19:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -This `temper` sensor platform allows you to get the current temperature from a TEMPer device. - -To use your TEMPer sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: temper -``` - -{% configuration %} -offset: - description: The offset to fix reported vales. - required: false - type: int - default: o -scale: - description: The scale for the sensor. - required: false - type: int - default: 1 -name: - description: The name to use when displaying this switch. - required: false - type: string - default: myStrom Switch -{% endconfiguration %} - -Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. -The calculation follows the formula `scale * sensor value + offset`. - -The TEMPer sensors can only be accessed as root by default. To fix the USB permissions on your system create the file `/etc/udev/rules.d/99-tempsensor.rules` and add the following line to it: - -```text -SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="7401", MODE="666" -``` - -After that re-plug the device and restart Home Assistant. diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown deleted file mode 100644 index 8ef5a5dc44..0000000000 --- a/source/_components/sensor.template.markdown +++ /dev/null @@ -1,297 +0,0 @@ ---- -layout: page -title: "Template Sensor" -description: "Instructions on how to integrate Template Sensors into Home Assistant." -date: 2016-01-27 07:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -ha_release: 0.12 -ha_iot_class: "Local Push" -logo: home-assistant.png ---- - -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: - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: template - sensors: - solar_angle: - friendly_name: "Sun angle" - unit_of_measurement: 'degrees' - value_template: "{{ states.sun.sun.attributes.elevation }}" - - sunrise: - value_template: "{{ states.sun.sun.attributes.next_rising }}" -``` -{% endraw %} - -{% 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 - friendly_name_template: - description: Defines a template for the name to be used in the frontend (this overrides friendly_name). - required: false - type: template - entity_id: - description: A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. - required: false - type: string, list - unit_of_measurement: - description: Defines the units of measurement of the sensor, if any. - 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 - entity_picture_template: - description: Defines a template for the entity picture of the sensor. - required: false - type: template - device_class: - description: The type/class of the sensor to set the icon in the frontend. - required: false - type: device_class - default: None -{% endconfiguration %} - -## {% 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. To avoid this (and the resulting -error messages in your log file), you can use `is_state()` function in your template. -For example, you would replace -{% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} -with this equivalent that returns `true`/`false` and never gives an `unknown` -result: -{% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Sun Angle %} - -This example shows the sun angle in the frontend. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - solar_angle: - friendly_name: "Sun Angle" - unit_of_measurement: '°' - value_template: "{{ '%+.1f'|format(states.sun.sun.attributes.elevation) }}" -``` -{% endraw %} - -### {% linkable_title Renaming Sensor Output %} - -If you don't like the wording of a sensor output then the Template Sensor can -help too. Let's rename the output of the [Sun component](/components/sun/) as -a simple example: - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - 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. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - glances: - friendly_name: "Glances" - value_template: >- - {% if is_state('sensor.process_glances', 'on') %} - running - {% else %} - not running - {% endif %} -``` -{% endraw %} - -The [Template Binary Sensor](/components/binary_sensor.template/) is the one in -similar cases if you prefer to see an icon instead of text. - -### {% linkable_title Multiline Example With an `if` Test %} - -This example shows a multiple line template with an `if` test. It looks at a -sensing switch and shows `on`/`off` in the frontend. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - kettle: - 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 %} - -### {% 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. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - transmission_down_speed_kbps: - friendly_name: "Transmission Down Speed" - unit_of_measurement: 'kB/s' - value_template: "{{ states('sensor.transmission_down_speed')|float * 1024 }}" - - 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: >- - {% 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 %} - -### {% linkable_title Change the Friendly Name Used in the Frontend %} - -This example shows how to change the `friendly_name` based on a date. -Explanation: we add a multiple of 86400 seconds (= 1 day) to the current unix timestamp to get a future date. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - forecast_1_day_ahead: - friendly_name_template: >- - {%- set date = as_timestamp(now()) + (1 * 86400 ) -%} - {{ date|timestamp_custom("Tomorrow (%-m/%-d)") }} - value_template: "{{ sensor.darksky_weather_forecast_1 }}" - forecast_2_days_ahead: - friendly_name_template: >- - {%- set date = as_timestamp(now()) + (2 * 86400 ) -%} - {{ date|timestamp_custom("%A (%-m/%-d)") }} - value_template: "{{ sensor.darksky_weather_forecast_2 }}" -``` -{% endraw %} - -This example shows how to change the `friendly_name` based on a state. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - net_power: - friendly_name_template: >- - {% if states('sensor.power_consumption')|float < 0 %} - Power Consumption - {% else %} - Power Production - {% end %} - value_template: "{{ states('sensor.power_consumption') }}" - unit_of_measurement: 'kW' -``` -{% endraw %} diff --git a/source/_components/sensor.tesla.markdown b/source/_components/sensor.tesla.markdown deleted file mode 100644 index 262a18910e..0000000000 --- a/source/_components/sensor.tesla.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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 deleted file mode 100644 index faeb8b7e65..0000000000 --- a/source/_components/sensor.thethingsnetwork.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: page -title: "The Things Network Sensor" -description: "Instructions on 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. - -## {% linkable_title Prerequisites %} - -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 -

    - -## {% linkable_title Configuration %} - -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 measurement - 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 deleted file mode 100644 index af6979bed2..0000000000 --- a/source/_components/sensor.thinkingcleaner.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: page -title: "Thinking Cleaner sensor" -description: "Instructions on how to integrate a ThinkingCleaner sensor within Home Assistant." -date: 2016-04-10 17:24 -sidebar: true -comments: false -sharing: true -footer: true -logo: thinkingcleaner.png -ha_category: Sensor -ha_iot_class: "Local Poll" -ha_release: 0.18 ---- - -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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: thinkingcleaner -``` - -This will automatically add sensors for each Thinking Cleaner in your network. diff --git a/source/_components/sensor.tibber.markdown b/source/_components/sensor.tibber.markdown deleted file mode 100644 index 81d11c7ac2..0000000000 --- a/source/_components/sensor.tibber.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "Tibber" -description: "Instructions on 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 %} - -## {% linkable_title Examples %} - -In this section, you will find some real-life examples of how to use this sensor. - -### {% linkable_title Electricity price %} - -The electricity price can be used to make automations. The sensor has a `max_price` and `min_price` attribute, with max and min price for the current day. Here is an example to get a notification when the price is above 90% of the maximum price for the day: - -{% raw %} -```yaml -- alias: "Electricity price" - trigger: - platform: time - # Matches every hour at 1 minutes past whole - minutes: 1 - seconds: 00 - condition: - condition: template - value_template: '{{ float(states.sensor.electricity_price_hamretunet_10.state) > 0.9 * float(states.sensor.electricity_price_hamretunet_10.attributes.max_price) }}' - action: - - service: notify.pushbullet - data: - title: "Electricity price" - target: "device/daniel_telefon_cat" - message: "The electricity price is now {{ states.sensor.electricity_price_hamretunet_10.state }}" -``` -{% endraw %} diff --git a/source/_components/sensor.time_date.markdown b/source/_components/sensor.time_date.markdown deleted file mode 100644 index ce9547358e..0000000000 --- a/source/_components/sensor.time_date.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Time & Date" -description: "Instructions on how to integrate the time and the date within Home Assistant." -date: 2015-05-08 17:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Calendar -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - - -The time and date (`time_date`) sensor platform simple displays the time in various formats, the date, or both. - -To enable this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: time_date - display_options: - - 'time' - - 'date' - - 'date_time' - - 'time_date' - - 'time_utc' - - 'beat' -``` - -- **display_options** array (*Required*): The option to display. The types *date_time* and *time_date* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](http://www.swatch.com/en_us/internet-time). - -

    - -

    - diff --git a/source/_components/sensor.toon.markdown b/source/_components/sensor.toon.markdown deleted file mode 100644 index 7a82ab95e9..0000000000 --- a/source/_components/sensor.toon.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Toon Sensor" -description: "Instructions on 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 deleted file mode 100644 index 38379ccd67..0000000000 --- a/source/_components/sensor.torque.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Torque (OBD2)" -description: "Instructions on how to integrate Torque sensors into Home Assistant." -date: 2015-12-20 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: torque.png -ha_category: Transport -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. - -## {% linkable_title Configuration %} -To use Torque sensors with your installation, you must configure both the Torque mobile application and Home Assistant. - -### {% linkable_title Torque application %} - -In **Settings** -> **Data Logging & Upload**: - -Under the **Logging Preferences** header: - -- Touch **Select what to log**, activate the menu in the upper right, and select **Add PID to log**. -- Select items of interest. - -Under the **Realtime Web Upload** header: - -- 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. - -### {% linkable_title Home Assistant %} - -Add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: torque - email: your_configured@email.com -``` - -Configuration variables: - -- **name** (*Optional*): Vehicle name (your choice). -- **email** (*Required*): Email address configured in Torque application. diff --git a/source/_components/sensor.tradfri.markdown b/source/_components/sensor.tradfri.markdown deleted file mode 100644 index fb78480fb1..0000000000 --- a/source/_components/sensor.tradfri.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "IKEA Trådfri sensors" -description: "Access and control your ZigBee-based IKEA Trådfri (Tradfri) Sensors." -date: 2017-04-12 22.04 -sidebar: true -comments: false -sharing: true -footer: true -logo: ikea.svg -ha_category: Sensor -ha_iot_class: "Local Polling" -ha_release: 0.67 ---- - -For installation instructions, see [the Trådfri component](/components/tradfri/). diff --git a/source/_components/sensor.trafikverket_weatherstation.markdown b/source/_components/sensor.trafikverket_weatherstation.markdown deleted file mode 100644 index 272c4e0994..0000000000 --- a/source/_components/sensor.trafikverket_weatherstation.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: page -title: "Trafikverket WeatherStation" -description: "Instructions how to integrate Trafikverket WeatherStation within Home Assistant." -date: 2018-02-01 12:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: trafikverket.png -ha_category: Sensor -ha_release: 0.66.0 ---- - -Showing weather information for air and road temperature provided by [Trafikverket](https://www.trafikverket.se/) in Sweden. - -Potential use cases: -- Get weather data in general -- You live near a weather station and want to know the current temperature at home -- Setup automations for your car heating system. If the road is frozen along the way to work, you might want the car heating system to start earlier. - -##### {% linkable_title Configuration %} - -To enable this sensor, add the following lines to your `configuration.yaml`. - -```yaml -sensor: - - platform: trafikverket_weatherstation - name: Trafikverket Road WeatherStation Kungälv - api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX - station: Kungälv - type: road -``` - -{% configuration %} -name: - description: Unique name of the device in the frontend. - required: true - type: string -api_key: - description: API key from Trafikverket. - required: true - type: string -station: - description: Name of the weather station. - required: true - type: string -type: - description: Defines which temperature you want (`air` or `road`). - required: true - type: string -scan_interval: - description: How frequently to query for new data (in seconds). - required: false - type: int - default: 300 -{% endconfiguration %} - -##### {% linkable_title Obtaining API key %} - -Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obtain the API key. - -##### {% linkable_title Weather stations %} - -Click [here](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=personalTraffic&map=1/606442.17/6886316.22/&Layers=RoadWeather%2b) to get a map of valid weather stations. Once a station is found, copy the name according to the below picture and paste it in your `configuration.yaml` file as the `station` variable. - -

    - -

    - -##### {% linkable_title Examples %} - -```yaml -sensor: - - platform: trafikverket_weatherstation - name: Trafikverket Road WeatherStation Kungälv - api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX - station: Kungälv - type: road - - platform: trafikverket_weatherstation - name: Trafikverket Air WeatherStation Lanna - api_key: eXXcbXXXacXXXXc39XX3aXXX4aXX46XX - station: Lanna - type: air - scan_interval: 600 -``` diff --git a/source/_components/sensor.transmission.markdown b/source/_components/sensor.transmission.markdown deleted file mode 100644 index e76da08026..0000000000 --- a/source/_components/sensor.transmission.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Transmission Sensor" -description: "Instructions on how to integrate Transmission sensors within Home Assistant." -date: 2015-04-25 9:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: transmission.png -ha_category: Downloading -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `transmission` platform allows you to monitor your downloads with [Transmission](http://www.transmissionbt.com/) 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: transmission - host: IP_ADDRESS - monitored_variables: - - 'current_status' - - 'download_speed' - - 'upload_speed' - - 'active_torrents' -``` - -Configuration variables: - -- **host** (*Required*): This is the IP address of your Transmission daemon, eg. 192.168.1.32. -- **port** (*Optional*): The port your Transmission daemon uses, defaults to 9091. -- **name** (*Optional*): The name to use when displaying this Transmission instance. -- **username** (*Optional*): Your Transmission username, if you use authentication. -- **password** (*Optional*): Your Transmission password, if you use authentication. -- **monitored_variables** array (*Required*): Conditions to display in the frontend. - - **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. - -

    - -

    - -If everything is setup correctly, the details will show up in the frontend. - -

    - -

    - diff --git a/source/_components/sensor.travisci.markdown b/source/_components/sensor.travisci.markdown deleted file mode 100644 index 82698ab737..0000000000 --- a/source/_components/sensor.travisci.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -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/tokens) 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.twitch.markdown b/source/_components/sensor.twitch.markdown deleted file mode 100644 index 6ed513ca90..0000000000 --- a/source/_components/sensor.twitch.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Twitch" -description: "Instructions on how to integrate Twitch sensors into Home Assistant." -date: 2015-12-19 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: twitch.png -ha_category: Social -ha_release: "0.10" -ha_iot_class: "Cloud Polling" ---- - - -The `twitch` platform will allow you to monitor [Twitch](http://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. - -To use Twitch with your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: twitch - channels: - - channel1 - - channel2 -``` - -Configuration variables: - -- **channels** array (*Required*): Array of channels. - - **channel_name** (*Required*): Name of the channel. - diff --git a/source/_components/sensor.uber.markdown b/source/_components/sensor.uber.markdown deleted file mode 100644 index 601de1fb87..0000000000 --- a/source/_components/sensor.uber.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Uber" -description: "How to integrate Uber in Home Assistant" -date: 2016-03-24 23:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: uber.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -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 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`. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: uber - server_token: 'BeAPPTDsWZSHLf7fd9OWjZkIezweRw18Q8NltY27' -``` - -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** (*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. - -A full configuration entry could look like the sample below: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: uber - start_latitude: 37.8116380 - start_longitude: -122.2648050 - end_latitude: 37.7768520 - end_longitude: -122.4155500 - server_token: 'BeAPPTDsWZSHLf7fd9OWjZkIezweRw18Q8NltY27' - product_ids: - - '04a497f5-380d-47f2-bf1b-ad4cfdcb51f2' -``` diff --git a/source/_components/sensor.uk_transport.markdown b/source/_components/sensor.uk_transport.markdown deleted file mode 100644 index de21db07dd..0000000000 --- a/source/_components/sensor.uk_transport.markdown +++ /dev/null @@ -1,122 +0,0 @@ ---- -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](/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 deleted file mode 100644 index c9d31bcca2..0000000000 --- a/source/_components/sensor.upnp.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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.ups.markdown b/source/_components/sensor.ups.markdown deleted file mode 100644 index 6e1989bfe2..0000000000 --- a/source/_components/sensor.ups.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: UPS Sensor -description: "Instructions on how to set up UPS sensors within Home Assistant." -date: 2017-02-14 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ups.png -ha_category: Sensor -ha_release: 0.39 -ha_iot_class: "Cloud Polling" ---- - -The `ups` platform allows one to track deliveries by the [UPS](https://www.ups.com/). To use this sensor, you need a [My UPS Account](https://www.ups.com/mychoice). - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: ups - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration options for the UPS Sensor: - -- **username** (*Required*): The username to access the UPS My Choice service. -- **password** (*Required*): The password for the given username. -- **name** (*Optional*): Name the sensor. -- **update_inverval** (*Optional*): Minimum time interval between updates. Default is 1 hour. Supported formats: - - `update_interval: 'HH:MM:SS'` - - `update_interval: 'HH:MM'` - - Time period dictionary, e.g.: -
    update_interval:
    -        # At least one of these must be specified:
    -        days: 0
    -        hours: 0
    -        minutes: 3
    -        seconds: 30
    -        milliseconds: 0
    -    
    - -

    -The UPS sensor logs into the UPS My Choice website to scrape package data. It does not use an API. Use at your own risk. -

    diff --git a/source/_components/sensor.uptime.markdown b/source/_components/sensor.uptime.markdown deleted file mode 100644 index f67feb188e..0000000000 --- a/source/_components/sensor.uptime.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Uptime Sensor" -description: "Instructions on 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.uscis.markdown b/source/_components/sensor.uscis.markdown deleted file mode 100644 index 3d214dc818..0000000000 --- a/source/_components/sensor.uscis.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: USCIS Sensor -description: "Instructions on how to set up USCIS within Home Assistant." -date: 2018-03-21 08:00 -sidebar: false -comments: false -sharing: true -footer: true -logo: uscis.png -ha_category: Sensor -ha_release: 0.68 -ha_iot_class: "Cloud Polling" ---- - -The `uscis` sensor component allows you get updates on your USCIS case using your case/receipt number. The sensor gets the case information from [USCIS Website]( https://egov.uscis.gov/casestatus/landing.do) - -## Example for `configuration.yaml` : - -```yaml -sensor: - - platform: uscis - case_id: YOUR_CASE_NUMBER - name: OPTIONAL_NAME -``` - -{% configuration %} -friendly_name: - description: Name of the sensor in Home Assistant. - required: false - default: USCIS - type: string -case_id: - description: Case/receipt number used to get the case details from USCIS web client. - required: true - type: string -{% endconfiguration %} - -All the data will be fetch from [USCIS](https://egov.uscis.gov/casestatus/mycasestatus.do). diff --git a/source/_components/sensor.usps.markdown b/source/_components/sensor.usps.markdown deleted file mode 100644 index 4624410730..0000000000 --- a/source/_components/sensor.usps.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: USPS Sensor -description: "Instructions on how to set up USPS sensors within Home Assistant." -date: 2017-01-06 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: usps.png -ha_category: Sensor -ha_release: 0.36 -ha_iot_class: "Cloud Polling" ---- - -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 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 deleted file mode 100644 index 8f3862fdd8..0000000000 --- a/source/_components/sensor.vasttrafik.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "Västtrafik Public Transport" -description: "Instructions on how to integrate timetable data for traveling in Sweden within Home Assistant." -date: 2016-10-05 08:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: vasttrafik.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: "0.30" ---- - -The `vasttrafik` sensor will provide you traveling details for the larger Göteborg area in Sweden from the [Västtrafik](https://vasttrafik.se/) public transportation service. - -You must create an application [here](https://developer.vasttrafik.se/portal/#/applications) to obtain a `key` and a `secret`. - -Add the data to your `configuration.yaml` file as shown in the example: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: vasttrafik - key: XXXXXXXXXXXXXXXXXXX - secret: YYYYYYYYYYYYYYYYY - departures: - - from: Musikvägen -``` - -Configuration variables: - -- **key** (*Required*): The API key to access your Västtrafik account. -- **secret** (*Required*): The API secret to access your Västtrafik account. -- **departures** array (*Required*): List of travel routes. - - **name** (*Optional*): Name of the route. - - **from** (*Required*): The start station. - - **heading** (*Optional*): Direction of the traveling. - - **lines** (*Optional*): Only consider these lines. - - **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 - lines: - - 7 - - GRÖN - delay: 10 -``` diff --git a/source/_components/sensor.vera.markdown b/source/_components/sensor.vera.markdown deleted file mode 100644 index 0fbdf0ff31..0000000000 --- a/source/_components/sensor.vera.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Vera Sensor" -description: "Instructions on how to integrate Vera sensors into Home Assistant." -date: 2015-10-20 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Sensor -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -The `vera` platform allows you to get data from your [Vera](http://getvera.com/) sensors from within Home Assistant. - -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 to txts) when they are _armed_ and change state. - -Home Assistant will display the state of these sensors regardless of the _armed_ state. - -To allow you to change the _armed state_ - Home Assistant will create a switch as well as a sensor for each _Armable_ sensor. You can hide these switches using customization if you wish. diff --git a/source/_components/sensor.verisure.markdown b/source/_components/sensor.verisure.markdown deleted file mode 100644 index 8ee60938a9..0000000000 --- a/source/_components/sensor.verisure.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Verisure Sensor" -description: "Instructions on how to integrate Verisure sensors into Home Assistant." -date: 2016-02-23 21:31 +0100 -sidebar: true -comments: false -sharing: true -footer: true -logo: verisure.png -ha_category: Sensor -ha_iot_class: "Cloud Polling" ---- - -Integrates Verisure sensors into Home Assistant. See the [main component](/components/verisure/) for configuration instructions. - -The following sensor types are supported: - - * Thermometers - * Hygrometers - * Mouse detectors - diff --git a/source/_components/sensor.version.markdown b/source/_components/sensor.version.markdown deleted file mode 100644 index a84c05f7a2..0000000000 --- a/source/_components/sensor.version.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Version Sensor" -description: "Instructions on 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.viaggiatreno.markdown b/source/_components/sensor.viaggiatreno.markdown deleted file mode 100644 index d8ad4e16a0..0000000000 --- a/source/_components/sensor.viaggiatreno.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "ViaggiaTreno Italian Railroads" -description: "Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant." -date: 2017-11-07 14:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: train.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: 0.58 ---- - -The `viaggiatreno` sensor will give you information about configured train ids and stations using the public [ViaggiaTreno](http://viaggiatreno.it) API. - -To activate the sensor you need at least two parameters: the `train_id` and the `station_id`. - -The first is available just looking at the [ViaggiaTreno](http://viaggiatreno.it/) timetable, the latter can be obtained using the dedicated API endpoint: -`http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/` -(e.g., `http://www.viaggiatreno.it/viaggiatrenonew/resteasy/viaggiatreno/autocompletaStazione/ROMA` will list all station names (with ids) that starts with *ROMA*). - -

    -Note that the `station_id` is referred to the train's **departing station**. If a train number does not match with the station id, no data will be returned to the sensor. -

    - -Then add the data to your `configuration.yaml` file as shown in the example: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: viaggiatreno - train_id: 12279 - station_id: S08409 -``` - -{% configuration %} -train_id: - description: The ID of the train. - required: true - type: int -station_id: - description: The ID of the starting station. - required: true - type: int -train_name: - description: The name of the sensor. Defaults to 'Train from '. - required: false - type: string -{% endconfiguration %} - -

    -In a future implementation, the station name could be used to automatically search best-matching station id, without the need to specify it. -

    - -The public timetables are coming from [ViaggiaTreno](http://viaggiatreno.it). - -

    -Instructions (in Italian) for the API are available at: -https://github.com/bluviolin/TrainMonitor/wiki/API-del-sistema-Viaggiatreno -

    diff --git a/source/_components/sensor.vultr.markdown b/source/_components/sensor.vultr.markdown deleted file mode 100644 index 5aa03c7393..0000000000 --- a/source/_components/sensor.vultr.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -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.waqi.markdown b/source/_components/sensor.waqi.markdown deleted file mode 100644 index a3fd05aab8..0000000000 --- a/source/_components/sensor.waqi.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "World Air Quality Index" -description: "Instructions on how to setup World Air Quality Index sensor in Home Assistant." -date: 2016-11-17 06:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: waqi.png -ha_category: Health -ha_release: 0.34 -ha_iot_class: "Cloud Polling" ---- - -The `waqi` sensor platform will query [World Air Quality Index](http://aqicn.org) service to check AQI value for a specific set of locations. The resulting indexes will be added to the Home Assistant as sensor outputs. - -This sensor requires an API token. Please obtain one at [AQICN API token](http://aqicn.org/data-platform/token/#/). - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: waqi - token: AQICN_API_TOKEN - locations: - - beijing - stations: - - Beijing US Embassy -``` - -Configuration variables: - -- **locations** (*Required*): A list of location names to look for air quality data. In case a specific location has multiple registered stations all of them will be added to Home Assistant. -- **token** (*Required*): The token for the AQICN public API. -- **stations** (*Optional*): A list of station names to look for air quality data. Station should be within locations specified above. - -The value reported is an overall AQ index for the location. The values of the index can be interpreted as following: - -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 diff --git a/source/_components/sensor.waze_travel_time.markdown b/source/_components/sensor.waze_travel_time.markdown deleted file mode 100644 index db3e3f0418..0000000000 --- a/source/_components/sensor.waze_travel_time.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Waze Travel Time" -description: "Instructions on how to add Waze travel time to Home Assistant." -date: 2018-01-23 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: waze.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: 0.67 ---- - -The `waze_travel_time` sensor provides travel time from the [Waze](https://www.waze.com/). - -Unit system is set to metric system. - -## {% linkable_title Configuration %} - -To use this sensor in your installation, add the following `abode` section to your `configuration.yaml` file: - -```yaml -# Example entry for configuration.yaml -sensor: - - platform: waze_travel_time - origin: Montréal, QC - destination: Québec, QC - region: 'US' -``` - -{% configuration %} -origin: - description: Enter the starting address or the GPS coordinates of the location (GPS coordinates has to be separated by a comma). - required: true - type: string -destination: - description: Enter the destination address or the GPS coordinates of the location (GPS coordinates has to be separated by a comma). - required: true - type: string -region: - description: Choose one of the available regions from 'EU', 'US', 'NA' (equivalent to 'US') or 'IL'. - required: true - type: string -name: - description: A name to display on the sensor. - required: false - default: "Waze Travel Time" - type: string -incl_filter: - description: A substring that has to be present in the description of the selected route (a simple case-insensitive matching). - required: false - type: string -excl_filter: - description: A substring that has to be NOT present in the description of the selected route (a simple case-insensitive matching). - required: false - type: string -{% endconfiguration %} diff --git a/source/_components/sensor.whois.markdown b/source/_components/sensor.whois.markdown deleted file mode 100644 index 7a6937ce33..0000000000 --- a/source/_components/sensor.whois.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -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 deleted file mode 100644 index 7300fd8d65..0000000000 --- a/source/_components/sensor.wink.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Wink Sensor" -description: "Instructions on how to setup the Wink sensors within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Sensor -ha_iot_class: "Cloud Polling" -ha_release: pre 0.7 ---- - - -The Wink sensor platform allows you to get data from your [Wink](http://www.wink.com/) sensors. - -The requirement is that you have setup [Wink](/components/wink/). - - -### Supported sensor devices - -- Wink Relay temperature, proximity, and humidity -- Wink Spotter temperature, humidity, and brightness (No Wink hub required) -- Wink Porkfolio balance (No Wink hub required) -- 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 (No Wink hub required) - -

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

    - diff --git a/source/_components/sensor.worldclock.markdown b/source/_components/sensor.worldclock.markdown deleted file mode 100644 index c35d652f10..0000000000 --- a/source/_components/sensor.worldclock.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Worldclock" -description: "Instructions on how to integrate a Worldclock within Home Assistant." -date: 2015-10-02 11:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Calendar -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - - -The `worldclock` sensor platform simply displays the current time in a different time zone - -To enable this sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: worldclock - time_zone: America/New_York -``` - -Configuration variables: - -- **time_zone** (*Required*): The resource or endpoint that contains the value. -- **name** (*Optional*): The name of the sensor, eg. the city. Defaults to 'Worldclock Sensor'. - -For valid time zones check the **TZ** column in the [Wikipedia overview](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Or get the full list from the [pytz](https://pypi.python.org/pypi/pytz) module. - -```python -python3 -c "import pytz;print(pytz.all_timezones)" -``` diff --git a/source/_components/sensor.worldtidesinfo.markdown b/source/_components/sensor.worldtidesinfo.markdown deleted file mode 100644 index 1b5dca3185..0000000000 --- a/source/_components/sensor.worldtidesinfo.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "World Tides" -description: "Instructions on 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 deleted file mode 100644 index 5497ae7005..0000000000 --- a/source/_components/sensor.worxlandroid.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Worx Landroid" -description: "Instructions on 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.wsdot.markdown b/source/_components/sensor.wsdot.markdown deleted file mode 100644 index 3b2e163398..0000000000 --- a/source/_components/sensor.wsdot.markdown +++ /dev/null @@ -1,81 +0,0 @@ ---- -layout: page -title: "Washington State DOT" -description: "Instructions on how to integrate WSDOT data into your home." -date: 2017-01-21 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: wsdot.png -ha_category: Transport -ha_iot_class: "Cloud Polling" -ha_release: 0.37 ---- - -The `wsdot` sensor will give you travel time information from the [Washington State Department of Transportation (WSDOT)](http://wsdot.com/). - -First, you need to get a free Traveler Information `api_key` from the [WSDOT API webpage](http://wsdot.com/traffic/api/). Just enter your email address to instantly get the key. - - -Once you have the code, create `wsdot` sensors by editing your `configuration.yaml` file as follows: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: wsdot - api_key: XXXXXXXXXXXXXXXXXXXXXXX - travel_time: - - id: 95 - name: I-90 Eastbound HOV -``` - -Configuration variables: - -- **api_key** (*Required*): Your `api_key` from WSDOT. -- **scan_interval** (*Optional*): How frequently to query for new data. Default: 3 minutes. -- **travel_time** array (*Required*): List of routes. - - **id** (*Required*): Name of the route. - - **name** (*Optional*): Name of the route. Default just uses `id`. - -Figuring out which Travel Time ID (`id`) is associated with your routes is a bit of a challenge. If you visit `http://wsdot.com/Traffic/api/TravelTimes/TravelTimesREST.svc/GetTravelTimesAsJson?AccessCode=[your_api_key_here]` substituting your `api_key`, you will get a list of all available routes. Search through it and then find the key `TravelTimeID`. That tells you the number you need. - -Some common examples include: - -``` - 73 Issaquah-Seattle (WB PM) - 74 Seattle-Issaquah (EB AM) - 75 HOV Issaquah-Seattle (WB REV) - 76 Issaquah-Seattle (WB REV) - 77 HOV Redmond-Seattle (WB PM) - 78 HOV Seattle-Redmond (EB AM) - 79 Redmond-Seattle (WB PM) - 80 Seattle-Redmond (EB AM) - 81 HOV Redmond-Seattle via I-90 (WB PM) - 82 HOV Seattle-Redmond via I-90 (EB AM) - 83 Redmond-Seattle via I-90 (WB PM) - 84 Seattle-Redmond via I-90 (EB AM) - 85 HOV Redmond-Seattle via I-90 (WB REV) - 86 Redmond-Seattle via I-90 (WB REV) - 89 Bellevue-Seattle via 520 (WB PM) - 90 HOV Bellevue-Seattle via 520 (WB PM) - 91 HOV Seattle-Bellevue via 520 (EB AM) - 92 Seattle-Bellevue via 520 (EB AM) - 93 Bellevue-Seattle via I-90 (WB PM) - 94 HOV Bellevue-Seattle via I-90 (WB PM) - 95 HOV Seattle-Bellevue via I-90 (EB AM) - 96 Seattle-Bellevue via I-90 (EB AM) - 97 Bellevue-Seattle via I-90 (WB REV) - 98 HOV Bellevue-Seattle via I-90 (WB REV) -``` - -

    -WSDOT does provide information about ferry schedules, mountain passes, tolls, etc. but so far only Travel Time data is available in this platform. -

    - -Here's an example of the sensor in use: - -

    - -

    - diff --git a/source/_components/sensor.wunderground.markdown b/source/_components/sensor.wunderground.markdown deleted file mode 100644 index d86dd62935..0000000000 --- a/source/_components/sensor.wunderground.markdown +++ /dev/null @@ -1,198 +0,0 @@ ---- -layout: page -title: "Weather Underground (WUnderground)" -description: "Instructions on how to integrate Weather Underground (WUnderground) Weather within Home Assistant." -date: 2016-08-18 -sidebar: true -comments: false -sharing: true -footer: true -logo: wunderground.png -ha_category: Weather -ha_release: 0.27 -ha_iot_class: "Cloud Polling" ---- - - -The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information. - -

    -Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). A free account allows 500 requests per day and also a maximum of 10 per minute. See details [here](https://www.wunderground.com/weather/api/d/pricing.html). -

    - -To add Wunderground to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: wunderground - api_key: your_api_key - monitored_conditions: - - alerts - - dewpoint_c -``` - -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 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 - - **dewpoint_c**: Temperature in Celsius below which water droplets begin to condense and dew can form - - **dewpoint_f**: Temperature in Fahrenheit below which water droplets begin to condense and dew can form - - **dewpoint_string**: Text summary of dew point - - **feelslike_c**: Feels like (or apparent) temperature in Celsius - - **feelslike_f**: Feels like (or apparent) temperature in Fahrenheit - - **feelslike_string**: Text summary of how the current temperature feels like - - **heat_index_c**: Heat index (combined effects of the temperature and humidity of the air) in Celsius - - **heat_index_f**: Heat index (combined effects of the temperature and humidity of the air) in Fahrenheit - - **heat_index_string**: Text summary of current heat index - - **elevation**: Elevation in feet - - **location**: City and State - - **observation_time**: Text summary of observation time - - **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 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 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 combining Fahrenheit and Celsius - - **temp_c**: Current temperature in Celsius - - **temp_f**: Current temperature 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 - - **temp_low_avg_f**: Average low for today in Fahrenheit - - **temp_high_1d_c** [[1d]](#1d): Forecasted high temperature in Celsius - - **temp_high_1d_f** [[1d]](#1d): Forecasted high temperature in Fahrenheit - - **temp_low_1d_c** [[1d]](#1d): Forecasted low temperature in Celsius - - **temp_low_1d_f** [[1d]](#1d): Forecasted low temperature in Fahrenheit - - **UV**: Current levels of UV radiation. See [here](https://www.wunderground.com/resources/health/uvindex.asp) for explanation. - - **visibility_km**: Average visibility in km - - **visibility_mi**: Average visibility in miles - - **weather**: A human-readable text summary with picture from Wunderground. - - **weather_1d** [[12h]](#12h): A human-readable weather forecast using imperial units. - - **weather_1d_metric** [[12h]](#12h): A human-readable weather forecast using metric units. - - **weather_1h** [[1h]](#1h): Weather conditions in 1 hour. (e.g., "Thunderstorm" etc.) - - **wind_degrees**: Wind degrees - - **wind_dir**: Wind direction - - **wind_gust_kph**: Wind gusts speed in kph - - **wind_gust_mph**: Wind gusts speed in mph - - **wind_gust_1d_kph** [[1d]](#1d): Max. forecasted Wind in kph - - **wind_gust_1d_mph** [[1d]](#1d): Max. forecasted Wind in mph - - **wind_kph**: Current wind speed in kph - - **wind_mph**: Current wind speed in mph - - **wind_1d_kph** [[1d]](#1d): Forecasted wind speed in kph - - **wind_1d_mph** [[1d]](#1d): Forecasted wind speed in mph - - **wind_string**: Text summary of current wind conditions - -All the conditions listed above will be updated every 5 minutes. - -### {% linkable_title Forecasts %} - -_12 hour forecasts_ - -Monitored conditions marked above with [12h] are 12 hour forecasts. To get a forecast for different period/daytime replace the `_1d_` part of the sensor name. e.g., `weather_2n` will give you forecast for tomorrow night. Valid values for day are `1` to `4` and valid values for daytime are `d` or `n`. - -_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 `4`. - -_Hourly forecasts_ - -Conditions marked with [1h] are hourly forecasts. To get forecast for different hour, replace the number -in the `_1h_` part of the sensor name with `1` to `36`. e.g., `weather_24h` will give you weather in 24 hours. - -### {% linkable_title Additional examples %} - -#### Daily forecast - - -```yaml -sensor: - - platform: wunderground - api_key: your_api_key - monitored_conditions: - - weather_1d_metric - - weather_1n_metric - - weather_2d_metric - - weather_2n_metric - - weather_3d_metric - - weather_3n_metric - - weather_4d_metric - - weather_4n_metric - -group: - daily_forecast: - name: Daily Forecast - entities: - - sensor.pws_weather_1d_metric - - sensor.pws_weather_1n_metric - - sensor.pws_weather_2d_metric - - sensor.pws_weather_2n_metric - - sensor.pws_weather_3d_metric - - sensor.pws_weather_3n_metric - - sensor.pws_weather_4d_metric - - sensor.pws_weather_4n_metric -``` - -![Daily Forecast](/images/screenshots/wunderground_daily_forecast.png) - -#### Weather overview - - -```yaml -sensor: - - platform: wunderground - api_key: your_api_key - monitored_conditions: - - temp_high_record_c - - temp_high_1d_c - - temp_c - - temp_low_1d_c - - temp_low_record_c - - precip_1d - - precip_1d_mm - - wind_kph - - wind_1d_kph - - alerts - -group: - weather_overview: - name: Weather overview - entities: - - sensor.pws_weather_1d_metric - - sensor.pws_temp_high_record_c - - sensor.pws_temp_high_1d_c - - sensor.pws_temp_c - - sensor.pws_temp_low_1d_c - - sensor.pws_temp_low_record_c - - sensor.pws_precip_1d - - sensor.pws_precip_1d_mm - - sensor.pws_wind_kph - - sensor.pws_wind_1d_kph - - sensor.pws_alerts -``` - -![Weather overview](/images/screenshots/wunderground_weather_overview.png) - - -

    -Note: While the platform is called “wunderground” the sensors will show up in Home Assistant as “PWS” (eg: sensor.pws_weather). -

    - -Additional details about the API are available [here](https://www.wunderground.com/weather/api/d/docs). diff --git a/source/_components/sensor.xbox_live.markdown b/source/_components/sensor.xbox_live.markdown deleted file mode 100644 index ca0aa22789..0000000000 --- a/source/_components/sensor.xbox_live.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Xbox Live" -description: "Instructions on how to set up Xbox Live sensors in Home Assistant." -date: 2016-08-28 02:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: xbox-live.png -ha_category: Social -ha_iot_class: "Cloud Polling" -ha_release: 0.28 ---- - -The Xbox Live component is able to track [Xbox](http://xbox.com/) profiles. - -To use this sensor you need a free API key from [XboxAPI.com](http://xboxapi.com). Please also make sure to connect your Xbox account on that site. - -The configuration requires you to specify XUIDs which are the unique identifiers for profiles. These can be determined on [XboxAPI.com](http://xboxapi.com) by either looking at your own profile page or using their interactive documentation to search for gamertags. - -To use the Xbox Live sensor in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: xbox_live - api_key: YOUR_API_KEY - xuid: - - account1 - - account2 -``` - -Configuration variables: - -- **api_key** (*Required*): Your API key from [XboxAPI.com](http://xboxapi.com). -- **xuid** (*Required*): Array of profile XUIDs to be tracked. diff --git a/source/_components/sensor.xiaomi_aqara.markdown b/source/_components/sensor.xiaomi_aqara.markdown deleted file mode 100644 index a69c4f685a..0000000000 --- a/source/_components/sensor.xiaomi_aqara.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Xiaomi Sensor" -description: "Instructions on 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.xiaomi_miio.markdown b/source/_components/sensor.xiaomi_miio.markdown deleted file mode 100644 index 65d1f3780f..0000000000 --- a/source/_components/sensor.xiaomi_miio.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Xiaomi Air Quality Monitor" -description: "Instructions how to integrate your Xiaomi Mi Air Quality Monitor within Home Assistant." -date: 2018-02-28 08:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: xiaomi.png -ha_category: Sensor -ha_version: 0.66 -ha_iot_class: "Local Polling" ---- - -The `xiaomi_miio` sensor platform is observing your Xiaomi Mi Air Quality Monitor (PM2.5) and reporting the air quality index. - -Currently, the supported features are: - -* Air Quality Index (AQI) -* Attributes - - power - - charging - - battery - - time_stat - -Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token. - -To add a Xiaomi Mi Air Quality Monitor to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: xiaomi_miio - name: Xiaomi Air Quality Monitor - host: 192.168.130.73 - token: YOUR_TOKEN -``` - -{% configuration %} -host: - description: The IP address of your miio device. - required: true - type: string -token: - description: The API token of your miio device. - required: true - type: string -name: - description: The name of your miio device. - required: false - type: string - default: Xiaomi Miio Sensor -{% endconfiguration %} diff --git a/source/_components/sensor.yahoo_finance.markdown b/source/_components/sensor.yahoo_finance.markdown deleted file mode 100644 index 0e8d12c0fb..0000000000 --- a/source/_components/sensor.yahoo_finance.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Yahoo Finance" -description: "Instructions on how to setup Yahoo Finance within Home Assistant." -date: 2016-09-18 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: yahoo_finance.png -ha_category: Finance -ha_iot_class: "Cloud Polling" -featured: false -ha_release: 0.29 ---- - -

    - This sensor doesn't work anymore as [Yahoo!](https://yahoo.uservoice.com/forums/382977-finance/suggestions/32103877-yahoo-stock-quote-api-please-bring-back) decommissioned the service in early November 2017. A repleacement is the [`alpha_vantage` sensor](/components/sensor.alpha_vantage/). -

    - -The `yahoo_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market. - -To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yahoo_finance -``` - -{% configuration %} -name: - description: The name of the sensor. - required: false - type: string - default: Yahoo Stock -symbols: - description: List of stock market symbols for given companies. - required: false - type: string, list - default: YHOO -{% endconfiguration %} - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this sensor. - -### {% linkable_title Red Hat and Google %} - -```yaml -sensor: - - platform: yahoo_finance - symbols: - - RHT - - GOOGL -``` - diff --git a/source/_components/sensor.yr.markdown b/source/_components/sensor.yr.markdown deleted file mode 100644 index 772fa6560e..0000000000 --- a/source/_components/sensor.yr.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "YR" -description: "Instructions on how to integrate Yr.no within Home Assistant." -date: 2016-01-04 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: yr.png -ha_category: Weather -ha_release: 0.11 -ha_iot_class: "Cloud Polling" ---- - - -The `yr` platform uses [YR.no](http://www.yr.no/) as a 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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yr -``` - -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. - - **humidity**: The relative humidity. - - **fog**: Fog. - - **pressure**: The sea-level air pressure in millibars. - - **precipitation**: The precipitation. - - **dewpointTemperature**: The dew point temperature. - - **windSpeed**: The wind speed. - - **windDirection**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise. - - **cloudiness**: The cloudiness. - - **lowClouds**: Low cloud level. - - **mediumClouds**: Medium cloud level. - - **highClouds**: High cloud level. - -A full configuration example can be found below: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yr - name: Weather - forecast: 24 - monitored_conditions: - - temperature - - symbol - - precipitation - - windSpeed - - pressure - - windDirection - - humidity - - fog - - cloudiness - - lowClouds - - mediumClouds - - highClouds - - dewpointTemperature -``` diff --git a/source/_components/sensor.yweather.markdown b/source/_components/sensor.yweather.markdown deleted file mode 100644 index fdd5a38b80..0000000000 --- a/source/_components/sensor.yweather.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "Yahoo Weather Sensor" -description: "Instructions on how to integrate Yahoo Weather within Home Assistant." -date: 2016-07-06 9:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: yahooweather.png -ha_category: Weather -ha_release: 0.24 -ha_iot_class: "Cloud Polling" ---- - - -The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as a source for current meteorological data. The `forecast` will show you the condition for 5 days, 0 is the current day. You can use only `weather`, `temp_min`, and `temp_max` with forecast. It's important to note that a yweather sensor will only show ONE days forecast at a time so to show multiple days forecasts, you will need to use the 'name:' option and give each sensor a unique name. - -

    -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. - -To add Yahoo Weather to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yweather - monitored_conditions: - - weather - - weather_current - - temp_min - - temp_max - - wind_speed - - pressure - - visibility - - humidity - - temperature -``` - -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`. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. - - **weather**: A human-readable text summary with picture from yahoo. - - **weather_current**: A human-readable text summary with picture from yahoo from current condition. - - **temperature**: The current temperature. - - **temp_min**: The minimal temperature of this day. - - **temp_max**: The maximum temperature of this day. - - **wind_speed**: The wind speed. - - **humidity**: The relative humidity. - - **pressure**: The sea-level air pressure in millibars. - - **visibility**: The average visibility. - -Example of forecast using multiple days. In example, first sensor shows tomorrow's forecast, second sensor shows the next day and so on: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: yweather - forecast: 1 - name: yw_day1 - monitored_conditions: - - weather - - temp_min - - temp_max - - platform: yweather - forecast: 2 - name: yw_day2 - monitored_conditions: - - weather - - temp_min - - temp_max - - platform: yweather - forecast: 3 - name: yw_day3 - monitored_conditions: - - weather - - temp_min - - temp_max -``` - -Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/). - diff --git a/source/_components/sensor.zabbix.markdown b/source/_components/sensor.zabbix.markdown deleted file mode 100644 index 64e960ed61..0000000000 --- a/source/_components/sensor.zabbix.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Zabbix Sensor" -description: "Instructions on how to integrate Zabbix Triggers sensors within Home Assistant." -date: 2016-12-13 22:57 -sidebar: true -comments: false -sharing: true -footer: true -logo: zabbix.png -ha_category: System Monitor -ha_release: 0.37 -ha_iot_class: "Local Polling" ---- - -The `zabbix` sensor platform let you monitor the current count of active triggers for your [Zabbix](http://www.zabbix.com/) monitoring instance. - -

    -You must have the [Zabbix component](/components/zabbix/) configured to use those sensors. -

    - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: zabbix - triggers: - name: Important Hosts Trigger Count - hostids: [10051,10081,10084] - individual: true -``` - -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 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 deleted file mode 100644 index 014752a66e..0000000000 --- a/source/_components/sensor.zamg.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "ZAMG Sensor" -description: "Instructions on how to integrate ZAMG sensors within Home Assistant." -date: 2016-12-06 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zamg.png -ha_category: Weather -ha_release: 0.35 -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 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: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: zamg -``` - -Configuration variables: - -- **station_id** (*Optional*): The ID number for a supported ZAMG station. -- **name** (*Optional*): Additional name for the sensors. Defaults to platform name. -- **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 - - **wind_speed**: Wind speed - - **wind_bearing**: Wind bearing - - **wind_max_speed**: Top wind speed - - **wind_max_bearing**: Top wind bearing - - **sun_last_hour**: Sun last hour percentage - - **temperature**: Temperature - - **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 `zamg` weather platform is easier to configure but less customizable. -

    diff --git a/source/_components/sensor.zestimate.markdown b/source/_components/sensor.zestimate.markdown deleted file mode 100644 index ca9547e404..0000000000 --- a/source/_components/sensor.zestimate.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Zestimate" -description: "Instructions on how to integrate the Zestimate sensor into Home Assistant." -date: 2018-03-02 3:10 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -logo: zillow.png -ha_release: 0.65 -ha_iot_class: "Cloud Polling" ---- - -The `zestimate` sensor allows one to track the Zestimate value of properties using the [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). - -## {% linkable_title Configuration %} - -You will need to sign up for the Zillow API at the following link [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). You will also need the Zillow property ID for each property you'd like to track. This information is available from the URL of a property you are interested in. - -For example, the White House zpid is 84074482 and can be found in it's Zillow URL: [https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/](https://www.zillow.com/homedetails/1600-Pennsylvania-Ave-NW-Washington-DC-20006/84074482_zpid/) - -To enable this sensor, add the following lines to your `configuration.yaml`. - -```yaml -sensor: - - platform: zestimate - api_key: YOUR_API_KEY - zpid: - - YOUR_ZPID_1 - - YOUR_ZPID_2 -``` - -{% configuration %} -api_key: - description: The API key to access the service. - required: true - type: string -zpid: - description: Property IDs to track in the front end. - required: true - type: list -{% endconfiguration %} - -### {% linkable_title Additional Attributes %} - -The following additional attributes are also available via the sensor. - -These attributes are available: - -- Last update -- 30 Day change in value -- Valuation Range High -- Valuation Range Low -- Address -- Currency -- Amount diff --git a/source/_components/sensor.zha.markdown b/source/_components/sensor.zha.markdown deleted file mode 100644 index 03c0687d27..0000000000 --- a/source/_components/sensor.zha.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "ZigBee Home Automation Sensor" -description: "Instructions on how to setup ZigBee Home Automation sensors within Home Assistant." -date: 2017-02-22 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Sensor -ha_iot_class: "Local Polling" ---- - -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/sensor.zigbee.markdown b/source/_components/sensor.zigbee.markdown deleted file mode 100644 index 64049c9837..0000000000 --- a/source/_components/sensor.zigbee.markdown +++ /dev/null @@ -1,76 +0,0 @@ ---- -layout: page -title: ZigBee Sensor -description: "Instructions on how to set up ZigBee sensors within Home Assistant." -date: 2016-01-28 10:08 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Sensor -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - -There are two types of [ZigBee](http://www.zigbee.org/) sensor available to Home Assistant: - -- [Analog input pin](#analog-input-pin) -- [Temperature sensor](#temperature-sensor) (XBee Pro) - -To configure an analog input pin sensor, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: zigbee - name: My Analog ZigBee Input - type: analog - pin: 0 - address: 0013A2004233D138 -``` - -Configuration variables: - -- **name** (*Required*): The name you would like to give the sensor in Home Assistant. -- **type** (*Required*): Set to `analog` or `temperature`. -- **pin** (*Optional*): The number identifying which pin to sample. -- **address** (*Optional*): The long 64 bit address of the remote ZigBee device whose pin you would like to sample. Do not include this variable if you want to sample the local ZigBee device's pins. -- **max_volts** (*Optional*): The maximum voltage which the input pin is able to read. Defaults to `1.2`. - - -## {% linkable_title Examples %} - -### {% linkable_title Analog Input Pin %} - -The analog input pins on an XBee (non-Pro) will read 0V to 1.2 V. This is translated by the [xbee-helper](https://github.com/flyte/xbee-helper) library into a percentage. The maximum voltage your ZigBee device will read is configurable using the `max_volts` configuration variable. - -To configure an analog input pin sensor, add the following to your `configuration.yaml` file: - -```yaml -## Example configuration.yaml entry -sensor: - - platform: zigbee - name: My Analog ZigBee Input - type: analog - pin: 0 - address: 0013A2004233D138 -``` - -See the [Digi knowledge base](http://knowledge.digi.com/articles/Knowledge_Base_Article/Digital-and-analog-sampling-using-XBee-radios) for more XBee sampling details. - -## {% linkable_title Temperature Sensor %} - -The XBee Pro (and perhaps other third party modules) contains a thermometer device which can be read by using the `TP` AT command. - -To configure a temperature sensor device, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: zigbee - name: Living Room Temperature ZigBee - type: temperature - address: 0013A20050E752C5 -``` - diff --git a/source/_components/sensor.zoneminder.markdown b/source/_components/sensor.zoneminder.markdown deleted file mode 100644 index e60e274205..0000000000 --- a/source/_components/sensor.zoneminder.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "ZoneMinder Sensor" -description: "How to view ZoneMinder monitor functions and events within Home Assistant." -date: 2016-10-13 22:57 -sidebar: true -comments: false -sharing: true -footer: true -logo: zoneminder.png -ha_category: Sensor -ha_release: 0.31 -ha_iot_class: "Local Polling" ---- - - -The `zoneminder` sensor platform lets you monitor the current state of your [ZoneMinder](https://www.zoneminder.com) install including the number of events and the current state of the cameras. - -

    -You must have the [ZoneMinder component](/components/zoneminder/) configured to use this sensor. -

    - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: zoneminder - include_archived: false -``` - -Configuration variables: - -- **include_archived** (*Optional*): Whether to include archived ZoneMinder events in event counts. Default is `false`. -- **monitored_conditions** array (*Optional*): Event count sensors to display in the frontend. Default is 'all'. - - **all**: All events. - - **month**: Events in the last month. - - **week**: Events in the last week. - - **day**: Events in the last day. - - **hour**: Events in the last hour. - diff --git a/source/_components/sensor.zwave.markdown b/source/_components/sensor.zwave.markdown deleted file mode 100644 index 70fba841c5..0000000000 --- a/source/_components/sensor.zwave.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Z-Wave Sensor" -description: "Instructions on how to setup the Z-Wave sensors within Home Assistant." -date: 2015-11-15 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Sensor -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - -To get your Z-Wave sensors working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). diff --git a/source/_components/shell_command.markdown b/source/_components/shell_command.markdown deleted file mode 100644 index 8c03c7c7af..0000000000 --- a/source/_components/shell_command.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Shell command" -description: "Instructions on how to integrate Shell commands into Home Assistant." -date: 2015-10-13 19:10 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation -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/ - -```yaml -# Example configuration.yaml entry -# Exposes service shell_command.restart_pow -shell_command: - restart_pow: touch ~/.pow/restart.txt -``` - -Configuration variables: - - - Alias for the command - - Command itself. - -The commands can be dynamic, using templates to insert values for arguments. When using templates, shell_command runs in a more secure environment which doesn't allow any shell helpers like automatically expanding the home dir `~` or using pipe symbols to run multiple commands. - -Any service data passed into the service call to activate the shell command will be available as a variable within the template. - -```yaml - -# Apply value of a GUI slider to the shell_command -automation: - - alias: run_set_ac - trigger: - platform: state - entity_id: input_number.ac_temperature - action: - service: shell_command.set_ac_to_slider - -input_number: - ac_temperature: - name: A/C Setting - initial: 24 - min: 18 - max: 32 - step: 1 - -{% raw %} -shell_command: - set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states.input_number.ac_temperature.state }}_AUTO' -{% endraw %} -``` diff --git a/source/_components/shiftr.markdown b/source/_components/shiftr.markdown deleted file mode 100644 index a383534704..0000000000 --- a/source/_components/shiftr.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Shiftr.io" -description: "Transfer events to Shiftr.io." -date: 2017-06-16 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: shiftr.png -ha_category: "History" -featured: false -ha_release: 0.48 ---- - -The `shiftr` component makes it possible to transfer details collected with Home Assistant to [Shiftr.io](https://shiftr.io) and visualize the flow of the information. Keep in mind that your details will be public! - -## {% linkable_title Configuration %} - -Create a new [namespace](https://shiftr.io/new) and generate a new token. You will need to use `Key (Username)` and `Secret (Password)` to setup the component. - -To use the `shiftr` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -shiftr: - username: YOUR_NAMESPACE_USERNAME - password: YOUR_NAMESPACE_PASSWORD -``` - -{% configuration %} -username: - description: Username for the Shiftr namespace. - required: true - type: string -password: - description: Password for the Shiftr namespace. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/shopping_list.markdown b/source/_components/shopping_list.markdown deleted file mode 100644 index c30bbd9ff6..0000000000 --- a/source/_components/shopping_list.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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 deleted file mode 100644 index 189f3a1b99..0000000000 --- a/source/_components/skybell.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -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](http://www.skybell.com/) doorbells in Home Assistant. - -Currently only the Skybell HD is supported by this platform. - -## {% linkable_title Configuration %} - -To enable devices set up with your [Skybell.com](http://www.skybell.com/) account, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -skybell: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username for accessing your Skybell account. - required: true - type: string -password: - description: The password for accessing your Skybell account. - required: true - type: string -{% endconfiguration %} - -Finish your configuration by visiting the [Skybell binary sensor](/components/binary_sensor.skybell/), [Skybell camera](/components/camera.skybell/), [Skybell light](/components/light.skybell/), [Skybell sensor](/components/sensor.skybell/), or [Skybell switch](/components/switch.skybell/) documentation. diff --git a/source/_components/sleepiq.markdown b/source/_components/sleepiq.markdown deleted file mode 100644 index a3efeaa0a0..0000000000 --- a/source/_components/sleepiq.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "SleepIQ" -description: "Instructions for how to integrate SleepIQ beds within Home Assistant." -date: 2016-08-28 8:56 -sidebar: true -comments: false -sharing: true -footer: true -logo: sleepiq.png -ha_category: Hub -ha_release: 0.29 -ha_iot_class: "Local Polling" ---- - -The SleepIQ implementation lets you view sensor data from [SleepIQ by SleepNumber](http://www.sleepnumber.com/sn/en/sleepiq-sleep-tracker). In particular, it lets you see the occupancy and current SleepNumber (ie current firmness) of each side of a SleepNumber bed. - -You will need an account on [SleepIQ](https://sleepiq.sleepnumber.com/) to use this component. - -To set it up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sleepiq: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: Your SleepIQ username (usually an e-mail address). - required: true - type: string -password: - description: Your SleepIQ password. - required: true - type: string -{% endconfiguration %} - diff --git a/source/_components/smappee.markdown b/source/_components/smappee.markdown deleted file mode 100644 index ce56987f72..0000000000 --- a/source/_components/smappee.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "Smappee" -description: "Instructions on how to setup Smappee within Home Assistant." -date: 2018-02-26 08:37 -sidebar: true -comments: false -sharing: true -footer: true -logo: smappee.png -ha_release: "0.64" -ha_category: Hub ---- - -The `smappee` component adds support for the [Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches. - -Switches and Sensors are supported - and will be automatically added when you connect to the Smappee controller. - -The smappee component gets information from [Smappee API](https://smappee.atlassian.net/wiki/display/DEVAPI/API+Methods). - -## {% linkable_title Configuration %} - -Info on how to get API access is described in the [smappy wiki](https://github.com/EnergieID/smappy/wiki). - -To use the `smappee` component in your installation, add the following to your `configuration.yaml` file: - - -```yaml -# Example configuration.yaml entry -smappee: - host: 10.0.0.5 - client_id: YOUR_CLIENT_ID - client_secret: YOUR_CLIENT_SECRET - username: YOUR_MYSMAPPEE_USERNAME - password: YOUR_MYSMAPPEE_PASSWORD -``` - -```yaml -# Minimal example configuration.yaml entry -smappee: - host: 10.0.0.5 -``` - -```yaml -# Cloud only example configuration.yaml entry -smappee: - client_id: YOUR_CLIENT_ID - client_secret: YOUR_CLIENT_SECRET - username: YOUR_MYSMAPPEE_USERNAME - password: YOUR_MYSMAPPEE_PASSWORD -``` - -Configuration variables: - -- **host** (*Optional*): Your Local Smappee unit IP. -- **host_password** (*Optional*): Your Local Smappee password. -- **client_id** (*Optional*): Your Smappee API client_id. -- **client_secret** (*Optional*): Your Smappee API client_secret. -- **username** (*Optional*): Your My Smappee username. -- **password** (*Optional*): Your My Smappee password. diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown deleted file mode 100644 index e7086ac9dc..0000000000 --- a/source/_components/snips.markdown +++ /dev/null @@ -1,292 +0,0 @@ ---- -layout: page -title: "Snips" -description: "Instructions on how to integrate Snips within Home Assistant." -date: 2018-05-02 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. - -The latest documentation can be found here: [Snips Platform Documentation](https://snips.gitbook.io/documentation/). - -![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 %} - -### {% linkable_title Installation %} - -The Snips platform can be installed via the Snips APT/Debian repository. If you prefer to install the platform using the Docker distribution, check out our [Docker Installation Guide](https://github.com/snipsco/snips-platform-documentation/wiki/6.--Miscellaneous#using-docker). - -```bash -$ sudo apt-get update -$ sudo apt-get install -y dirmngr -$ sudo bash -c 'echo "deb https://raspbian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list' -$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys D4F50CDCA10A2849 -$ sudo apt-get update -$ sudo apt-get install -y snips-platform-voice -``` - -Note: if the keyserver pgp.mit.edu is down try to use another one in the 4th line , like pgp.surfnet.nl: - -```bash -sudo apt-key adv --keyserver pgp.surfnet.nl --recv-keys D4F50CDCA10A2849 -``` - -### {% linkable_title Creating an assistant %} - -
    - -
    - -Head over to the [Snips Console](https://console.snips.ai) to create your assistant. Launch the training and download by clicking on the "Download Assistant" button. - -The next step is to get the assistant to work on your device. Unzip and copy the assistant folder that you downloaded from the web console to the path. Assuming your downloaded assistant folder is on your desktop, just run: - -```bash -$ scp -r ~/Desktop/assistant pi@:/home/pi/. -``` - -Now ssh into your Raspberry Pi: - -```bash -$ ssh pi@ -``` - -By default, this command is `ssh pi@raspberrypi.local`, if you are using the default Raspberry Pi hostname. - -Then, move the assistant to the right folder: - -```bash -(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant -``` - -Note: if you already have an assistant installed and wish to replace it, start by removing the previous one, and then move the new one in its place: - -```bash -(pi) $ sudo rm -r /usr/share/snips/assistant -(pi) $ sudo mv /home/pi/assistant /usr/share/snips/assistant -``` - -### {% linkable_title 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 by starting the `snips-*` services: - -```bash -$ sudo systemctl start "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 - -As the Snips Platform parses this query into an intent, it will be published on MQTT, on the `hermes/intent/` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml` file, as explained below. - -#### {% linkable_title 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, we need to specify this in the `/etc/snips.toml` configuration file. For more information on configuring this, see the [Using an external MQTT broker](https://github.com/snipsco/snips-platform-documentation/wiki/6.--Miscellaneous#using-external-mqtt-broker) article. - -## {% linkable_title Home Assistant configuration %} - -### {% linkable_title Specifying the MQTT broker %} - -Messages between Snips and Home Assistant are passed via MQTT. We can either point Snips to the MQTT broker used by Home Assistant, as explained above, or tell Home Assistant which [MQTT broker](/docs/mqtt/) to use by adding the following entry to the `configuration.yaml` file: - -```yaml -mqtt: - broker: MQTT_BROKER_IP - port: MQTT_BROKER_PORT -``` - -By default, Snips runs an MQTT broker on port 9898. So if we wish to use this broker, and if Snips and Home Assistant run on the same device, the entry will look as follows: - -```yaml -mqtt: - broker: 127.0.0.1 - port: 9898 -``` - -Alternatively, MQTT can be configured to bridge messages between servers if using a custom MQTT broker such as [mosquitto](https://mosquitto.org/). - -### {% linkable_title 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 a `ActivateLightColor` intent to change light colors: - -{% raw %} -```yaml -snips: - -intent_script: - ActivateLightColor: - action: - - service: light.turn_on - data_template: - entity_id: light.{{ objectLocation | replace(" ","_") }} - color_name: {{ objectColor }} -``` -{% endraw %} - -In the `data_template` block, we have access to special variables, corresponding to the slot names for the intent. In the present case, the `ActivateLightColor` has two slots, `objectLocation` and `objectColor`. - -### {% linkable_title Special slots %} - -In the above example, the slots are plain strings. However, when more complex types are used, such as dates or time ranges, they will be transformed to rich Python objects, for example: - -{% raw %} -```yaml -SetTimer: - speech: - type: plain - text: weather - action: - service: script.set_timer - data_template: - name: "{{ timer_name }}" - duration: "{{ timer_duration }}" - seconds: "{{ slots.timer_duration.value.seconds }}" - minutes: "{{ slots.timer_duration.value.minutes }}" - hours: "{{ slots.timer_duration.value.hours }}" -``` -{% endraw %} - -### {% linkable_title Sending TTS Notifications %} - -You can send TTS notifications to Snips using the snips.say and snips.say_action services. Say_action starts a session and waits for user response, "Would you like me to close the garage door?", "Yes, close the garage door". - -#### {% linkable_title Service `snips.say` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------------| -| `text` | no | Text to say. | -| `site_id` | yes | Site to use to start session. | -| `custom_data` | yes | custom data that will be included with all messages in this session. | - -#### {% linkable_title Service `snips.say_action` %} - -| Service data attribute | Optional | Description | -|------------------------|----------|--------------------------------------------------------| -| `text` | no | Text to say. | -| `site_id` | yes | Site to use to start session. | -| `custom_data` | yes | custom data that will be included with all messages in this session. | -| `can_be_enqueued` | yes | If True, session waits for an open session to end, if False session is dropped if one is running. | -| `intent_filter` | yes | Array of Strings - A list of intents names to restrict the NLU resolution to on the first query. | - - -### {% linkable_title Snips Support %} - -There is an active [discord](https://discordapp.com/invite/3939Kqx) channel for further support. - -### {% linkable_title Configuration Examples %} - -#### {% linkable_title Turn on a light %} - -```yaml -intent_script: - turn_on_light: - speech: - type: plain - text: 'OK, closing the garage door' - action: - service: light.turn_on -``` - -##### {% linkable_title Open a Garage Door %} - -```yaml -intent_script: - OpenGarageDoor: - speech: - type: plain - text: 'OK, opening the garage door' - action: - - service: cover.open_cover - data: - entity_id: garage_door -``` - -##### {% linkable_title Intiating a query %} - -Here is a more complex example. The automation is triggered if the garage door is open for more than 10 minutes. -Snips will then ask you if you want to close it and if you respond with something like "Close the garage door" it -will do so. Unfortunately there is no builtin support for yes and no responses. - -```yaml -automation: - garage_door_has_been_open: - trigger: - - platform: state - entity_id: binary_sensor.my_garage_door_sensor - from: 'off' - to: 'on' - for: - minutes: 10 - sequence: - service: snips.say_action - data: - text: 'Garage door has been open 10 minutes, would you like me to close it?' - intentFilter: - - closeGarageDoor - -# This intent is fired if the user responds with the appropriate intent after the above notification -intent_script: - closeGarageDoor: - speech: - type: plain - text: 'OK, closing the garage door' - action: - - service: script.garage_door_close -``` - -##### {% linkable_title Weather %} - -So now you can open and close your garage door, let's check the weather. Add the Weather by Snips Skill to your assistant. Create a weather sensor, in this example (Dark Sky)[/components/sensor.darksky/] and the `api_key` in the `secrets.yaml` file. - -```yaml -- platform: darksky - name: "Dark Sky Weather" - api_key: !secret dark_sky_key - update_interval: - minutes: 10 - monitored_conditions: - - summary - - hourly_summary - - temperature - - temperature_max - - temperature_min -``` - -Then create this `intent_script.yaml` file in your configuration directory. - -{% raw %} -```yaml -intent_script: - searchWeatherForecast: - speech: - type: plain - text: > - The weather is currently - {{ states('sensor.dark_sky_weather_temperature') | round(0) }} - degrees outside and {{ states('sensor.dark_sky_weather_summary') }}. - The high today will be - {{ states('sensor.dark_sky_weather_daily_high_temperature') | round(0)}} - and {{ states('sensor.dark_sky_weather_hourly_summary') }} -``` -{% endraw %} - diff --git a/source/_components/spc.markdown b/source/_components/spc.markdown deleted file mode 100644 index 0e8819fb85..0000000000 --- a/source/_components/spc.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "SPC" -description: "Instructions on how to setup Vanderbilt SPC devices within Home Assistant." -date: 2017-05-18 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_release: 0.47 -logo: vanderbilt_spc.png ---- - -Home Assistant has support to integrate your [Vanderbilt SPC](http://www.spc-intruder-detection.com/ssp-spc/) alarm panel and any connected motion, door and smoke sensors. - -Integration with SPC is done through a third-party API gateway called [SPC Web Gateway](http://www.lundix.se/smarta-losningar/) which must be installed and configured somewhere on your network. - -Home Assistant needs to know where to find the SPC Web Gateway API endpoints, to configure this add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -spc: - api_url: API_URL - ws_url: WS_URL -``` - -Configuration variables: - -- **api_url** (*Required*): URL of the SPC Web Gateway command REST API, e.g., `http://:8088`. -- **ws_url** (*Required*): URL of the SPC Web Gateway websocket, e.g., `ws://:8088`. - -Supported sensors will be automatically discovered and added, however they will be hidden by default. - diff --git a/source/_components/splunk.markdown b/source/_components/splunk.markdown deleted file mode 100644 index 274bbbad75..0000000000 --- a/source/_components/splunk.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Splunk" -description: "Record events in Splunk." -date: 2016-02-05 15:31 -sidebar: true -comments: false -sharing: true -footer: true -logo: splunk.png -ha_category: "History" -ha_release: 0.13 ---- - -The `splunk` component makes it possible to log all state changes to an external [Splunk](http://splunk.com/) database using Splunk's HTTP Event Collector (HEC) feature. You can either use this alone, or with the Home Assistant for Splunk [app](https://github.com/miniconfig/splunk-homeassistant). Since the HEC feature is new to Splunk, you will need to use at least version 6.3. - -To use the `splunk` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -splunk: - token: B4415DFF-683C-5C6C-3994-4F6D4A5DB03A -``` - -Configuration variables: - -- **token** (*Required*): The HTTP Event Collector Token already created in your Splunk instance. -- **host** (*Optional*): IP address or host name of your Splunk host, eg. 192.168.1.10. Will default to `localhost` if not supplied. -- **port** (*Optional*): Port to use. Defaults to 8088. -- **ssl** (*Optional*): Use https instead of http to connect. Defaults to False. -- **name** (*Optional*): This parameter allows you to specify a friendly to send to Splunk as the host, instead of using the name of the HEC. Defaults to HASS diff --git a/source/_components/statsd.markdown b/source/_components/statsd.markdown deleted file mode 100644 index 4b0b5249b2..0000000000 --- a/source/_components/statsd.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "StatsD" -description: "Record events in StatsD." -date: 2016-01-25 08:00 -sidebar: true -comments: false -sharing: true -logo: statsd.png -footer: true -ha_category: "History" -ha_release: 0.12 ---- - -The `statsd` component makes it possible to transfer all state changes to an external [StatsD](https://github.com/etsy/statsd) instance. - -To use the `statsd` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -statsd: -``` - -Configuration variables: - -- **host** (*Optional*): IP address of your StatsD host, eg. 192.168.1.10. Defaults to `localhost`. -- **port** (*Optional*): Port to use. Defaults to 8125. -- **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 deleted file mode 100644 index 91d1f7903e..0000000000 --- a/source/_components/sun.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "Sun" -description: "Instructions on how to track the sun within Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Weather ---- - -The sun component will use your current location to track if the sun is above or below the horizon. The sun can be used within automation as [a trigger with an optional offset to simulate dawn/dusk][automation-trigger]. - -[automation-trigger]: /getting-started/automation-trigger/#sun-trigger - -```yaml -# Example configuration.yaml entry -sun: -``` - -Configuration variables: - -- **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. - -

    - -

    - -### {% linkable_title Implementation Details %} - -The sun's event listener will call the service when the sun rises or sets with an offset. - -The sun event need to have the type 'sun', which service to call, which event (sunset or sunrise) and the offset. - -```json -{ - "type": "sun", - "service": "switch.turn_on", - "event": "sunset", - "offset": "-01:00:00" -} -``` - -#### {% linkable_title Maintains entity `sun.sun` %} - -| Possible state | Description | -| --------- | ----------- | -| `above_horizon` | When the sun is above the horizon. -| `below_horizon` | When the sun is below the horizon. - - - -| State Attributes | Description | -| --------- | ----------- | -| `next_rising` | Date and time of the next sun rising (in UTC). -| `next_setting` | Date and time of the next sun setting (in UTC). -| `next_dawn` | Date and time of the next dawn (in UTC). -| `next_dusk` | Date and time of the next dusk (in UTC). -| `next_noon` | Date and time of the next solar noon (in UTC). -| `next_midnight` | Date and time of the next solar midnight (in UTC). -| `elevation` | Solar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon. -| `azimuth` | Solar azimuth. The angle is shown clockwise from north. diff --git a/source/_components/switch.abode.markdown b/source/_components/switch.abode.markdown deleted file mode 100644 index 2cc7d2e977..0000000000 --- a/source/_components/switch.abode.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Abode Switch" -description: "Instructions on 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.acer_projector.markdown b/source/_components/switch.acer_projector.markdown deleted file mode 100644 index 70e1ae5499..0000000000 --- a/source/_components/switch.acer_projector.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Acer Projector Switch" -description: "Instructions on how to integrate Acer Projector switches into Home Assistant." -date: 2016-05-07 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: acer.png -ha_category: Switch -ha_iot_class: "Local Polling" -ha_release: 0.19 ---- - - -The `acer_projector` switch platform allows you to control the state of RS232 connected projectors from [Acer](http://www.acer.com). - -To use your Acer Projector in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: acer_projector - filename: /dev/ttyUSB0 -``` - -Configuration variables: - -- **filename** (*Required*): The pipe where the projector is connected to. -- **name** (*Optional*): The name to use when displaying this switch. -- **timeout** (*Optional*): Timeout for the connection in seconds. -- **write_timeout** (*Optional*): Write timeout in seconds. - diff --git a/source/_components/switch.ads.markdown b/source/_components/switch.ads.markdown deleted file mode 100644 index 2839641329..0000000000 --- a/source/_components/switch.ads.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "ADS Switch" -description: "Instructions on how to set up ADS switches within Home Assistant." -date: 2017-10-25 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beckhoff.png -ha_category: Switch -ha_release: "0.60" -ha_iot_class: "Local Push" ---- - -The `ads` switch platform accesses a boolean variable on the connected ADS device. The variable is identified by its name. - -To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` -file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: ads - adsvar: .global_bool -``` - -{% configuration %} - adsvar: - required: true - description: The name of the variable which you want to access on the ADS device. - type: string - name: - required: false - description: An identifier for the switch in the frontend. - type: string -{% endconfiguration %} diff --git a/source/_components/switch.amcrest.markdown b/source/_components/switch.amcrest.markdown deleted file mode 100644 index d9ed4564b2..0000000000 --- a/source/_components/switch.amcrest.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Amcrest IP Camera Settings" -description: "Instructions on how to integrate settings for Amcrest IP Camera as switches within Home Assistant." -date: 2018-03-08 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: amcrest.png -ha_category: Switch -ha_release: 0.67 -ha_iot_class: "Local Polling" ---- - -The `amcrest` switch platform lets you control settings of [Amcrest IP Camera](https://home-assistant.io/components/camera.amcrest/) through Home Assistant. - -Switches will be configured automatically. Please refer to the [component](/components/amcrest/) configuration on how to setup. diff --git a/source/_components/switch.android_ip_webcam.markdown b/source/_components/switch.android_ip_webcam.markdown deleted file mode 100644 index bb32b0c9f5..0000000000 --- a/source/_components/switch.android_ip_webcam.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Android IP Webcam Settings" -description: "Instructions on how to integrate settings for Android IP webcam as switch within Home Assistant." -date: 2017-03-10 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: android_ip_webcam.png -ha_category: Switch -ha_release: "0.40" -ha_iot_class: "Local Polling" ---- - - -The `android_ip_webcam` switch platform lets you control settings of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/android_ip_webcam/) configuration on how to setup. diff --git a/source/_components/switch.anel_pwrctrl.markdown b/source/_components/switch.anel_pwrctrl.markdown deleted file mode 100644 index c753805477..0000000000 --- a/source/_components/switch.anel_pwrctrl.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "ANEL PwrCtrl Switch" -description: "Instructions on how to integrate ANEL PwrCtrl switches within Home Assistant." -date: 2016-10-02 19:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: anel.png -ha_category: Switch -ha_iot_class: "Local Polling" -ha_release: "0.30" ---- - -The `anel_pwrctrl` switch platform allows you to control [ANEL PwrCtrl](http://anel-elektronik.de/SITE/produkte/produkte.htm) devices. - -Supported devices (tested): - -- PwrCtrl HUT - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - platform: anel_pwrctrl - host: IP_ADDRESS - port_recv: PORT - port_send: PORT - username: USERNAME - password: PASSWORD -``` - -Configuration variables: - -- **host** (*Optional*): The IP address or hostname of your PwrCtrl device. -- **port_recv** (*Required*): The port to receive data from the device. -- **port_send** (*Required*): The port to send data to the device. -- **username** (*Required*): The username for your device. -- **password** (*Required*): The password for your device. - -

    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.arduino.markdown b/source/_components/switch.arduino.markdown deleted file mode 100644 index a27907103a..0000000000 --- a/source/_components/switch.arduino.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "Arduino Switch" -description: "Instructions on how to integrate Arduino boards pins as switches within Home Assistant." -date: 2015-09-14 18:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: arduino.png -ha_category: DIY -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `arduino` switch platform allows you to control the digital pins of your [Arduino](https://www.arduino.cc/) board. Support for switching pins is limited to high/on and low/off of the digital pins. PWM (pin 3, 5, 6, 9, 10, and 11 on an Arduino Uno) is not supported yet. - -To enable the Arduino pins with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - platform: arduino - pins: - 11: - name: Fan Office - 12: - name: Light Desk - initial: true - negate: true -``` - -{% configuration %} -pins: - description: List of of pins to use. - required: true - type: map - keys: - pin_number: - description: The pin number that corresponds with the pin numbering schema of your board. - required: true - type: map - keys: - name: - default: Name that will be used in the frontend for the pin. - type: string - required: false - initial: - default: The initial value for this port. - type: boolean - required: false - default: false - negate: - default: If this pin should be inverted. - type: boolean - required: false - default: false -{% endconfiguration %} - -The digital pins are numbered from 0 to 13 on a Arduino UNO. The available pins are 2 till 13. For testing purposes you can use pin 13 because with that pin you can control the internal LED. - diff --git a/source/_components/switch.arest.markdown b/source/_components/switch.arest.markdown deleted file mode 100644 index 603949d5c1..0000000000 --- a/source/_components/switch.arest.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: page -title: "aREST Switch" -description: "Instructions on how to integrate aREST switches within Home Assistant." -date: 2015-09-11 23:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: arest.png -ha_category: Switch -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. - -To use your aREST enabled device with pins in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: arest - resource: http://IP_ADDRESS - pins: - 11: - name: Fan -``` - -If you want to use custom functions, then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: arest - resource: http://IP_ADDRESS - name: Office - functions: - function1: - name: Light Desk -``` - -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 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. - -or - -- **functions** array (*Optional*): An array with all used functions. - - **name** (*Required*): The name to use in the frontend. - -You can still switch your pins with a web browser or a command line tool. Use the URL http://192.168.1.10/digital/8/1 to set pin 8 to high/on, the JSON response will give you the feedback. - -```json -{"message": "Pin D8 set to 1", "id": "sensor02", "name": "livingroom", "connected": true} -``` - diff --git a/source/_components/switch.bbb_gpio.markdown b/source/_components/switch.bbb_gpio.markdown deleted file mode 100644 index 7b02e6a927..0000000000 --- a/source/_components/switch.bbb_gpio.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "BeagleBone Black GPIO Switch" -description: "Instructions on how to integrate the GPIO of a BeagleBone Black into Home Assistant as a switch." -date: 2017-01-14 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: beaglebone-black.png -ha_category: Switch -ha_release: 0.36 -ha_iot_class: "Local Push" ---- - -The `bbb_gpio` switch platform allows you to control the GPIOs of your [BeagleBone Black](https://beagleboard.org/black). - -To use yourBeagleBone Black's GPIO in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: bbb_gpio - pins: - GPIO0_7: - name: LED Red - P9_12: - name: LED Green -``` - -Configuration variables: - -- **pins** array (*Required*): Array of used ports. - - **pin_name** (*Required*): Port numbers and corresponding names. - - **name** (*Optional*): Friendly name to use for the frontend. - - **initial** (*Optional*): Initial state of the pin. Defaults to `False`. - - **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 [article](http://elinux.org/Beagleboard:BeagleBoneBlack) about the BeagleBone Black. - diff --git a/source/_components/switch.broadlink.markdown b/source/_components/switch.broadlink.markdown deleted file mode 100644 index ad5f0214dc..0000000000 --- a/source/_components/switch.broadlink.markdown +++ /dev/null @@ -1,194 +0,0 @@ ---- -layout: page -title: "Broadlink RM Switch" -description: "Instructions on how to have Broadlink RM switches." -date: 2016-11-22 22:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: broadlink.png -ha_category: Switch -ha_release: 0.35 -ha_iot_class: "Local Polling" ---- - -This `Broadlink` switch platform allow to you control Broadlink [devices](http://www.ibroadlink.com/rm/). - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - - platform: broadlink - host: IP_ADDRESS - mac: 'MAC_ADDRESS' -``` - -Configuration variables: - -- **host** (*Required*): The hostname/IP address to connect to. -- **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** (*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](/components/sensor.broadlink/#microsoft-windows-installation) - - -### {% linkable_title How to obtain IR/RF packets? %} - -Choose Call Service from the Developer Tools. Choose the service `switch.broadlink_learn_command` from the list of **Available services:** and hit **CALL SERVICE**. Press the button on your remote with in 20 seconds. The packet will be printed as a persistent notification in the States page of the web interface. - -Example config for `rm`, `rm2`, `rm_mini`, `rm_pro_phicomm`, `rm2_home_plus`, `rm2_home_plus_gdt`, `rm2_pro_plus`, `rm2_pro_plus2`, `rm2_pro_plus_bl` and `rm_mini_shate` devices: - -```yaml -switch: - - platform: broadlink - host: 192.168.1.2 - mac: 'B4:43:0D:CC:0F:58' - timeout: 15 - switches: - # Will work on most Phillips TVs: - tv_phillips: - friendly_name: "Phillips Tv Power" - command_on: 'JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA=' - command_off: 'JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA=' - # Will work on most LG TVs - tv_lg: - friendly_name: "LG Tv Power" - command_on: 'JgBYAAABIJISExETETcSEhISEhQQFBETETcROBESEjcRNhM1EjcTNRMTERISNxEUERMSExE2EjYSNhM2EhIROBE3ETcREhITEgAFGwABH0oSAAwzAAEfShEADQU=' - command_off: 'JgBYAAABIJISExETETcSEhISEhQQFBETETcROBESEjcRNhM1EjcTNRMTERISNxEUERMSExE2EjYSNhM2EhIROBE3ETcREhITEgAFGwABH0oSAAwzAAEfShEADQU=' - tv_lg_hdmi1_hdmi2: - friendly_name: "LG Tv HDMI12" - command_on: 'JgBIAAABIZMRExITEjYSExMRERURExEUEDkRNxEUEjYSNhM3ETcSNxITETgSNhI2ExMQExE4ETYSNxIUERMSExE4ETcRFBETEQANBQ==' - command_off: 'JgBQAAABJJMSEhISETgSEhITEBMSEhMSETcSNxMREjcSNxI3EjcSOBETERITNhM2EhITERM2EzcRNxI3ExISEhI3EjcRExETEgAFLQABJEoRAA0FAAAAAAAAAAA=' - tv_lg_hdmi3: - friendly_name: "LG Tv HDMI3" - command_on: 'JgBIAAABIZMSFBISETgRExEUERQQFBETEjcTNhMSETgRNxE3EjcROBM2ERMSFBE4ERMSNxM2EjUSFBE2ETgRExM2ExITEhATEwANBQ==' - tv_lg_av1_av2: - friendly_name: "LG Tv AV12" - command_on: 'JgBIAAABIpQPFBITETgSEw8UEhQSEhEVDzgSOBAUETgQOQ84EjgRNxITETgSExA5EDgREhI3EhMROBMSEDkQFBETEjYTEhE4EQANBQ==' - command_off: 'JgBIAAABH5YPFBETETgUERAUEBURFBATETgROBEUETcSNxE4ETcSOBISEBUQFREUEjUSFBA5ETcRNxE4ETkQOBAUEjcRFRAUEQANBQ==' - - platform: broadlink - host: 192.168.1.2 - mac: 'B4:43:0D:CC:0F:58' - timeout: 15 - switches: - # Will work on most Phillips TVs: - tv: - friendly_name: "Phillips Tv" - command_on: 'JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA=' - command_off: 'JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA=' -``` - -Example config for `sp1`, `sp2`, `honeywell_sp2`, `sp3`, `spmini2` and `spminiplus` devices: - -```yaml -switch: - - platform: broadlink - host: IP_ADDRESS - mac: 'MAC_ADDRESS' - type: sp1 - friendly_name: 'Humidifier' - - platform: broadlink - host: IP_ADDRESS - mac: 'MAC_ADDRESS' - type: sp2 - 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 `broadlink_send_packet` %} - -You can use the service `switch.broadlink_send_packet` to directly send IR packets without the need to assign a switch entity for each command. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `packet` | no | String or list of strings that contain the packet data. - -Example: - -```yaml -script: - tv_select_source: - sequence: - - service: switch.broadlink_send_packet_192_168_0_107 - data: - packet: - - "JgCMAJSSFDYUNhQ2FBEUERQRFBEUERQ2FDYUNhQRFBEUERQRFBEUERQRFDYUERQRFBEUERQRFDYUNhQRFDYUNhQ2FDYUNhQABfWUkhQ2FDYUNhQRFBEUERQRFBEUNhQ2FDYUERQRFBEUERQRFBEUERQ2FBEUERQRFBEUERQ2FDYUERQ2FDYUNhQ2FDYUAA0FAAAAAAAAAAAAAAAA" - - "JgBGAJSTFDUUNhM2ExITEhMSExITEhM2EzYTNhQRFBEUERQRFBEUNRQ2ExITNhMSExITNhMSExITEhM2ExITNhQ1FBEUNhMADQUAAA==" -``` - -### {% linkable_title Using E-Control Remotes %} - -If you already have your remotes learned on E-Control app you can use this method to "copy" them to Home Assistant. - -First get or learn all the remotes you want to add to Home Assistant in E-Control - -1. Download - - Get the script from [here](https://github.com/NightRang3r/Broadlink-e-control-db-dump). - -2. Dump the data from the app - - Open the E-Control app on your mobile device. On the left side menu choose "Share" and then "Share to other phones in WLAN". It will generate the files you will need for the script. - -3. Get data from your Android device - - Connect your Android device to your computer and browse the SD card/External Storage folder "/broadlink/newremote/SharedData/". You need to get the following files and put them in the same folder as this script: - - jsonSubIr - jsonButton - jsonIrCode - -4. Install Requirements - - Run `pip install simplejson`. You must install simplejson in the same python version you will use to run the scripts. You can ensure that the current version is installed by attempting to install again and confirming that you see "Requirement already satisfied". - -5. Get the data from the device - - Navigate to the folder you downloaded and run `python getBroadlinkSharedData.py`. Follow the steps on screen. NOTE: These scripts were only tested with Python 2.7. - -6. Install python-broadlink library: - - 1. `git clone https://github.com/mjg59/python-broadlink.git` - 2. `cd python-broadlink` - 3. `sudo python setup.py install` - -7. Test the codes -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... -Not every code works. - -8. Convert the HEX codes to base64 -Use [this](http://tomeko.net/online_tools/hex_to_base64.php?lang=en1) tool to convert the hex codes to base64 for use with Home Assistant. diff --git a/source/_components/switch.command_line.markdown b/source/_components/switch.command_line.markdown deleted file mode 100644 index 3f3ef8d022..0000000000 --- a/source/_components/switch.command_line.markdown +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: page -title: "Command line Switch" -description: "Instructions on how to have switches call command line commands." -date: 2015-06-10 22:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: command_line.png -ha_category: Switch -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `command_line` switch platform issues specific commands when it is turned on and off. This might very well become our most powerful platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts! - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - - platform: command_line - switches: - kitchen_light: - command_on: switch_command on kitchen - command_off: switch_command off kitchen -``` - -Configuration variables: - -- **switches** (*Required*): The array that contains all command switches. - - **identifier** (*Required*): Name of the command switch as slug. Multiple entries are possible. - - **command_on** (*Required*): The action to take for on. - - **command_off** (*Required*): The action to take for off. - - **command_state** (*Optional*): If given, this command will be run. Returning a result code `0` will indicate that the switch is on. - - **value_template** (*Optional*): If specified, `command_state` will ignore the result code of the command but the template evaluating to `true` will indicate the switch is on. - - **friendly_name** (*Optional*): The name used to display the switch in the frontend. - -A note on `friendly_name`: - -When set, the `friendly_name` had been previously used for API calls and backend configuration instead of the `object_id` ("identifier"), but [this behavior is changing](https://github.com/home-assistant/home-assistant/pull/4343) to make the `friendly_name` for display purposes only. This allows users to set an `identifier` that emphasizes uniqueness and predictability for API and config purposes but have a prettier `friendly_name` still show up in the UI. As an additional benefit, if a user wanted to change the `friendly_name` / display name (e.g., from "Kitchen Lightswitch" to "Kitchen Switch" or "Living Room Light", or remove the `friendly_name` altogether), he or she could do so without needing to change existing automations or API calls. See aREST device below for an example. - -## {% linkable_title Examples %} - -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 command line tool [`curl`](http://curl.haxx.se/) is used to toggle a pin which is controllable through REST. - -```yaml -# Example configuration.yaml entry -switch: - platform: command_line - switches: - arest_pin_four: - command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1" - command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0" - command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4" - value_template: '{% raw %}{{ value == "1" }}{% endraw %}' - friendly_name: Kitchen Lightswitch -``` - -Given this example, in the UI one would see the `friendly_name` of "Kitchen Light". However, the `identifier` is `arest_pin_four`, making the `entity_id` `switch.arest_pin_four`, which is what one would use in [`automation`](/components/automation/) or in [API calls](/developers/). - -### {% linkable_title Shutdown your local host %} - -This switch will shutdown your system that is hosting Home Assistant. - -

    -This switch will shutdown your host immediately, there will be no confirmation. -

    - - -```yaml -# Example configuration.yaml entry -switch: - platform: command_line - switches: - home_assistant_system_shutdown: - command_off: "/usr/sbin/poweroff" -``` - -### {% linkable_title Control your VLC player %} - -This switch will control a local VLC media player ([Source](https://community.home-assistant.io/t/vlc-player/106)). - - -```yaml -# Example configuration.yaml entry -switch: - platform: command_line - switches: - vlc: - command_on: "cvlc 1.mp3 vlc://quit &" - command_off: "pkill vlc" -``` - -### {% linkable_title Control Foscam Motion Sensor %} - -This switch will control the motion sensor of Foscam Webcams which Support CGI Commands ([Source](http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf)). This switch supports statecmd, which checks the current state of motion detection. - -```yaml -# Example configuration.yaml entry -switch: - platform: command_line - switches: - foscam_motion: - command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"' - command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"' - command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=)"' - value_template: {% raw %}'{{ value == "1" }}'{% endraw %} -``` - -- Replace admin and password with an "Admin" privileged Foscam user -- Replace ipaddress with the local IP address of your Foscam diff --git a/source/_components/switch.deluge.markdown b/source/_components/switch.deluge.markdown deleted file mode 100644 index b9673415c3..0000000000 --- a/source/_components/switch.deluge.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Deluge Switch" -description: "Instructions on 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.digital_ocean.markdown b/source/_components/switch.digital_ocean.markdown deleted file mode 100644 index e17a74ab35..0000000000 --- a/source/_components/switch.digital_ocean.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Digital Ocean Switch" -description: "Instructions on how to set up Digital Ocean switches within Home Assistant." -date: 2016-09-24 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: digital_ocean.png -ha_category: Switch -ha_release: "0.30" -ha_iot_class: "Local Polling" ---- - -The `digital_ocean` switch platform allows you to control (start/stop) your Digital Ocean droplets. - -To use your Digital Ocean droplets, you first have to set up your [Digital Ocean hub](/components/digital_ocean/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: digital_ocean - droplets: - - 'fedora-512mb-nyc3-01' - - 'coreos-512mb-nyc3-01' -``` - -{% configuration %} -droplets: - description: List of droplets you want to control. - required: true - type: list -{% endconfiguration %} - diff --git a/source/_components/switch.digitalloggers.markdown b/source/_components/switch.digitalloggers.markdown deleted file mode 100755 index c0c2272d17..0000000000 --- a/source/_components/switch.digitalloggers.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Digital Loggers Switch" -description: "Instructions on how to integrate Digital Loggers DIN III relays into Home Assistant." -date: 2016-10-02 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: digitalloggers.png -ha_category: Switch -ha_release: 0.35 -ha_iot_class: "Local Polling" ---- - - -The `digitalloggers` switch platform allows you to control the state of your [Digital Loggers](http://www.digital-loggers.com/dinfaqs.html) switches. - -To use your digitalloggers switch in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: digitalloggers - host: 192.168.1.43 -``` - -Configuration variables: - -- **host** (*Required*): The IP address or FQDN of your DIN III relay, eg. `192.168.1.32` or `myrelay.example.com`. -- **name** (*Optional*): The name to use when controlling this relay. Default: `DINRelay`. -- **username** (*Optional*): Credentials for controlling this relay. Default: `admin`. -- **password** (*Optional*): Credentials for controlling this relay. Default: `admin`. -- **timeout** (*Optional*): Default timeout as set by the underlying python-dlipower library is `20` seconds. Override it if you need to. Valid range is 1 to 600. -- **cycletime** (*Optional*): This is the delay enforced by the library when you send multiple commands to the same device. The default relay cycle time is `2` seconds. Override it if you need to. Valid range is 1 to 600. A delay is a recommendation of Digital Loggers: ->Many loads draw more power when they are initially switched on. Sequencing prevents circuit overloads when loads devices are attached to a single circuit. - - -Your relays will be available in the form `switch.fantasticrelaydevice_individualrelayname` - -**Note:** There is currently a limitation of the [dlipower library](https://github.com/dwighthubbard/python-dlipower) used by the `digitalloggers` component that communication is only available over port 80. diff --git a/source/_components/switch.dlink.markdown b/source/_components/switch.dlink.markdown deleted file mode 100644 index 50da6cf4a7..0000000000 --- a/source/_components/switch.dlink.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "D-Link Switch" -description: "Instructions on how to integrate D-Link switches into Home Assistant." -date: 2016-02-21 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: dlink.png -ha_category: Switch -ha_iot_class: "Local Polling" -ha_release: 0.14 ---- - - -The `dlink` switch platform allows you to control the state of your [D-Link Wi-Fi Smart Plugs](http://us.dlink.com/product-category/home-solutions/connected-home/smart-plugs/). - -Supported devices (tested): - -- DSP-W215 -- DSP-W110 - -To use your D-Link smart plugs in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - platform: dlink - host: IP_ADRRESS - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your D-Link plug, eg. http://192.168.1.32 -- **name** (*Optional*): The name to use when displaying this switch. -- **username** (*Required*): The username for your plug. Defaults to `admin`. -- **password** (*Required*): The password for your plug. Default password is the `PIN` included on the configuration card. -- **use_legacy_protocol** (*Optional*): Enable limited support for legacy firmware protocols (Tested with v1.24). - diff --git a/source/_components/switch.doorbird.markdown b/source/_components/switch.doorbird.markdown deleted file mode 100644 index cb5b66db17..0000000000 --- a/source/_components/switch.doorbird.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "DoorBird Switch" -description: "Instructions on 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.edimax.markdown b/source/_components/switch.edimax.markdown deleted file mode 100644 index 06f58328a4..0000000000 --- a/source/_components/switch.edimax.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Edimax Switch" -description: "Instructions on how to integrate Edimax switches into Home Assistant." -date: 2015-06-10 22:54 -sidebar: true -comments: false -sharing: true -footer: true -logo: edimax.png -ha_category: Switch -ha_release: pre 0.7 ---- - - -This `edimax` switch platform allows you to control the state of your [Edimax](http://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches. - -To use your Edimax switch in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: edimax - host: 192.168.1.32 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your Edimax switch, eg. `192.168.1.32`. -- **username** (*Optional*): Your username for the Edimax switch. Defaults to `admin`. -- **password** (*Optional*): Your password for the Edimax switch. Defaults to `1234`. -- **name** (*Optional*): The name to use when displaying this switch. - diff --git a/source/_components/switch.enocean.markdown b/source/_components/switch.enocean.markdown deleted file mode 100644 index e701d3e6f4..0000000000 --- a/source/_components/switch.enocean.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "EnOcean Switch" -description: "Instructions on how to set up EnOcean switches within Home Assistant." -date: 2016-05-25 23:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: enocean.png -ha_category: Switch -ha_release: 0.21 -ha_iot_class: "Local Push" ---- - -An EnOcean switch can take many forms. Currently only one type has been tested: Permundo PSC234 - - -To use your EnOcean device, you first have to set up your [EnOcean hub](/components/enocean/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: enocean - id: [0x01,0x90,0x84,0x3C] -``` - -Configuration variables: - -- **id** (*Required*): The ID of the device. This is a 4 bytes long number. -- **name** (*Optional*): An identifier for the switch. Default to `EnOcean Switch`. diff --git a/source/_components/switch.eufy.markdown b/source/_components/switch.eufy.markdown deleted file mode 100644 index 1a79dbd26b..0000000000 --- a/source/_components/switch.eufy.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Eufy Switch" -description: "Instructions on how to integrate Eufy switches into Home Assistant." -date: 2018-04-09 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: eufy.png -ha_category: Switch -ha_iot_class: "Local Polling" -ha_release: 0.68 ---- - -The `eufy` platform allows you to control your [Eufy](http://www.eufylife.com) switches from within Home Assistant. - -They will be automatically discovered if the [Eufy](/components/eufy/) component is enabled. - diff --git a/source/_components/switch.flux.markdown b/source/_components/switch.flux.markdown deleted file mode 100644 index 41df410065..0000000000 --- a/source/_components/switch.flux.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Flux Light Adjustment" -description: "Instructions on how to have switches call command line commands." -date: 2016-06-01 17:41 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation -ha_release: 0.21 -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 time of day. It will only affect lights that are turned on and listed in the flux configuration. - -During the day (in between `start time` and `sunset time`), it will fade the lights from the `start_colortemp` to the `sunset_colortemp`. After sunset (between `sunset_time` and `stop_time`), the lights will fade from the `sunset_colortemp` to the `stop_colortemp`. If the lights are still on after the `stop_time` it will continue to change the light to the `stop_colortemp` until the light is turned off. The fade effect is created by updating the lights periodically. - -The color temperature is specified kelvin, and accepted values are between 1000 and 40000 kelvin. Lower values will seem more red, while higher will look more white. - -If you want to update at variable intervals, you can leave the switch turned off and use automation rules that call the service `switch._update` whenever you want the lights updated, where `` equals the `name:` property in the switch configuration. - -To use the Flux switch in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: flux - lights: - - light.desk - - light.lamp -``` - -Configuration variables: - -- **lights** (*Required*) array: List of light entities. -- **name** (*Optional*): The name to use when displaying this switch. -- **start_time** (*Optional*): The start time. Default to sunrise. -- **stop_time** (*Optional*): The stop time. Defaults to dusk. -- **start_colortemp** (*Optional*): The color temperature at the start. Defaults to `4000`. -- **sunset_colortemp** (*Optional*): The sun set color temperature. Defaults to `3000`. -- **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`, `mired` and `rgb`. Defaults to `xy`. -- **transition** (*Optional*): Transition time for the light changes (high values may not be supported by all light models). Defaults to 30. -- **interval** (*Optional*): Frequency at which the lights should be updated. Defaults to 30. - -Full example: - -```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 - transition: 30 - interval: 60 -``` - diff --git a/source/_components/switch.fritzbox.markdown b/source/_components/switch.fritzbox.markdown deleted file mode 100644 index 83657be0c8..0000000000 --- a/source/_components/switch.fritzbox.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Fritzbox Switch" -description: "Instructions on how to integrate the AVM Fritzbox switch." -date: 2017-11-12 17:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: Switch -ha_release: 0.68 -ha_iot_class: "Local Polling" ---- - -

    -To get AVM Fritzbox switch follow the instructions for the general [Fritzbox](/components/fritzbox/). -

    - -### {% linkable_title Attributes %} - -The are several attributes that can be useful for automations and templates. - -| Attribute | Description | -| --------- | ----------- | -| `device_locked` | The state of the key lock at the device. -| `locked` | The state of the lock for configuring the device via the app or the Fritzbox web interface. -| `temperature_unit` | The unit of the temperature sensor (only available if the device support temperature sensor). -| `temperature` | The current temperature sensor reading (only available if the device supports temperature sensor). -| `total_consumption` | The total power consumption since the beginning of operation (only available if the device supports power meter function). -| `total_consumption_unit` | The unit of the total_consumption (only available if the device supports power meter function). diff --git a/source/_components/switch.fritzdect.markdown b/source/_components/switch.fritzdect.markdown deleted file mode 100644 index 380deebdaf..0000000000 --- a/source/_components/switch.fritzdect.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "AVM FRITZ!DECT Switch" -description: "Instructions on how to integrate your AVM FRITZ!DECT switches into Home Assistant." -date: 2017-01-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: avm.png -ha_category: Switch -ha_iot_class: "Local Polling" -ha_release: 0.38 ---- - - -The `fritzdect` switch platform allows you to control the state of your [AVM FRITZ!DECT DECT-based wireless switches](https://en.avm.de/products/fritzdect/). The AVM FRITZ!DECT switches need to be paired to your Fritz!Box and then can be monitored and controlled via Home Assistant. - -Supported devices (tested): - -- FRITZ!DECT 200 - -Supported Firmwares (tested): - -- FRITZ!OS: 06.80 / FRITZ!DECT: 03.83 -- FRITZ!OS: 06.98-51288 (Beta) / FRITZ!DECT: 03.87 - -To use your AVM FRITZ!DECT switch(es) in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: fritzdect - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: The username for your Fritz!Box. - required: true - type: string -password: - description: The password for your Fritz!Box. - required: true - type: string -host: - description: The IP address/hostname of your Fritz!Box. - required: false - type: string - default: fritz.box -{% endconfiguration %} - -It is recommended to create a dedicated user for Home Assistant and only allow access to "Smart Home". - -

    -If this component throws an error when starting home-assistant you should check if all actors are plugged in and connected to the FritzBox. Inactive actors that are not deleted from FritzBox configuration might lead to errors. -

    diff --git a/source/_components/switch.gc100.markdown b/source/_components/switch.gc100.markdown deleted file mode 100644 index 59649d72d1..0000000000 --- a/source/_components/switch.gc100.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: gc100 Switch -description: "Instructions on how to set up a 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.hikvisioncam.markdown b/source/_components/switch.hikvisioncam.markdown deleted file mode 100644 index 64fc873989..0000000000 --- a/source/_components/switch.hikvisioncam.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Hikvision Camera Switch" -description: "Instructions on how to integrate Hikvision camera switches into Home Assistant." -date: 2015-06-10 22:54 -sidebar: true -comments: false -sharing: true -footer: true -logo: hikvision.png -ha_category: Switch -ha_release: pre 0.7 ---- - - -This `hikvisioncam` switch platform allows you to control your motion detection setting on your [Hikvision](http://www.hikvision.com/) camera. - -

    -Currently works using default https port only. -

    - -To use your Hikvision cam in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: hikvisioncam - host: 192.168.1.32 -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your Hikvision camera, eg. `192.168.1.32`. -- **port** (*Optional*): The port to connect to your Hikvision camera. Defaults to `80`. -- **name** (*Optional*): This parameter allows you to override the name of your camera. -- **username** (*Optional*): The username for accessing your Hikvision camera. Defaults to `admin`. -- **password** (*Optional*): The password to access your Hikvision camera. Defaults to `12345`. diff --git a/source/_components/switch.hive.markdown b/source/_components/switch.hive.markdown deleted file mode 100644 index e4ea483797..0000000000 --- a/source/_components/switch.hive.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "Hive Switch" -description: "Instructions on how to integrate Hive Plugs with Home Assistant." -date: 2017-09-24 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: hive.png -ha_category: Switch -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `hive` switch platform integrates your Hive plugs into Home Assistant, enabling control of your devices. - -The platform supports the following Hive products: - -- Hive Active Plug - - -

    -Full configuration details can be found on the main [Hive component](/components/hive/) page. -

    - - diff --git a/source/_components/switch.homekit_controller.markdown b/source/_components/switch.homekit_controller.markdown deleted file mode 100644 index 43bf3be57b..0000000000 --- a/source/_components/switch.homekit_controller.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "HomeKit Switch" -description: "Instructions on how to setup HomeKit switches within Home Assistant." -date: 2017-03-19 21:08 -sidebar: true -comments: false -sharing: true -footer: true -logo: apple-homekit.png -ha_category: Light -ha_iot_class: "Local Polling" -ha_release: 0.68 ---- - -To get your HomeKit switches working with Home Assistant, follow the instructions for the general [HomeKit controller component](/components/homekit_controller/). diff --git a/source/_components/switch.homematic.markdown b/source/_components/switch.homematic.markdown deleted file mode 100644 index 7902ae4974..0000000000 --- a/source/_components/switch.homematic.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Homematic Switch" -description: "Instructions on how to integrate Homematic switches within Home Assistant." -date: 2016-06-28 08:30 -sidebar: true -comments: false -sharing: true -footer: true -logo: homematic.png -ha_category: Switch -ha_release: 0.23 -ha_iot_class: "Local Push" ---- - - -The `homematic` switch platform lets you control [Homematic](http://www.homematic.com/) switches through Home Assistant. - -Devices will be configured automatically. Please refer to the [component](/components/homematic/) configuration on how to setup Homematic. \ No newline at end of file diff --git a/source/_components/switch.hook.markdown b/source/_components/switch.hook.markdown deleted file mode 100644 index fbfeef75b4..0000000000 --- a/source/_components/switch.hook.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "Hook Switch" -description: "Instructions on how to integrate the Hook Smart Home Hub into Home Assistant." -sidebar: true -comments: false -sharing: true -footer: true -logo: hook.png -ha_category: Switch -ha_iot_class: "Assumed State" -ha_release: 0.34 ---- - -The `hook` component allows you to control the [Hook Smart Home Hub](http://www.hooksmarthome.com/) from within Home Assistant. - -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 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. - -## {% linkable_title Configuration %} - -Configure with either your username/password or your API token for the official app. - -To enable this platform in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: hook - username: YOUR_E_MAIL_ADDRESS - password: YOUR_HOOK -``` - -Or - -```yaml -# Example configuration.yaml entry -switch: - - platform: hook - token: YOUR_API_TOKEN -``` - -{% configuration %} -username: - description: The email address associated with your Hook Smart Home Hub. - required: true - type: string -password: - description: The password for your Hook Smart Home Hub. - required: true - type: string -token: - description: The API token for your Hook Smart Home Hub. - required: true - type: string -{% endconfiguration %} - -Extra debug logging is available, if you need it. - -```yaml -# Example configuration.yaml entry -logger: - default: error - logs: - homeassistant.components.switch.hook: debug -``` diff --git a/source/_components/switch.ihc.markdown b/source/_components/switch.ihc.markdown deleted file mode 100644 index 67abf63932..0000000000 --- a/source/_components/switch.ihc.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "IHC Switch" -description: "Instructions on how to integrate IHC switches within Home Assistant." -date: 2017-11-27 13:35 -sidebar: true -comments: false -sharing: true -footer: true -logo: ihc.png -ha_category: Switch -ha_release: 0.62 -ha_iot_class: "Local Push" ---- - -Before you can use the IHC Switch platform, you must setup the [IHC Component](/components/ihc/) - -When auto setup is enabled the following products will be found in the ihc project and setup as switch devices: - -* Wireless plug outlet -* Wireless relay -* Mobile wireless relay -* Dataline plug outlet - -To manually configure IHC switches insert this section in your configuration: - -```yaml -switch: - - platform: ihc - auto_setup: True - switches: - - id: 12345 - name: myswitch - - id: 12346 - .... -``` - -{% configuration %} -switches: - description: List of switches to setup manually - required: false - type: map - keys: - id: - description: The IHC resource id. - required: true - type: int - name: - description: The name of the component - required: false - type: string -{% endconfiguration %} - -The resource id should be a boolean resource. (On/Off) -For more information about IHC resource ids see [Manual Setup](/components/ihc/#manual-setup) - diff --git a/source/_components/switch.insteon_local.markdown b/source/_components/switch.insteon_local.markdown deleted file mode 100644 index 8a3c3f9360..0000000000 --- a/source/_components/switch.insteon_local.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Insteon (Local) Switch" -description: "Instructions on how to setup the Insteon Hub switches locally within Home Assistant." -date: 2016-12-18 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Switch -ha_version: 0.36 ---- - -The `insteon_local` switch component lets you control your switches connected to an [Insteon Hub](http://www.insteon.com/insteon-hub/) with Home Assistant. - -To get your insteon switches working with Home Assistant, follow the instructions for the general [Insteon local component](/components/insteon_local/). The switches will be automatically disovered and added to Home Assistant. The device names will be the Insteon address of the switch. diff --git a/source/_components/switch.insteon_plm.markdown b/source/_components/switch.insteon_plm.markdown deleted file mode 100644 index 8843679bb0..0000000000 --- a/source/_components/switch.insteon_plm.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Insteon PLM Switch" -description: "Instructions on how to setup the Insteon PLM switches locally within Home Assistant." -date: 2017-02-19 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: insteon.png -ha_category: Switch -ha_iot_class: "Local Push" -ha_version: 0.39 ---- - -The `insteon_plm` switch platform lets you control your on/off switches through -an INSTEON PowerLinc Modem (PLM) device connected directly to your system on a -USB or serial port. To add support, set up the primary [insteon_plm] -component. - -[insteon_plm]: /components/insteon_plm/ - diff --git a/source/_components/switch.isy994.markdown b/source/_components/switch.isy994.markdown deleted file mode 100644 index eacf1a002d..0000000000 --- a/source/_components/switch.isy994.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ISY994 Switch" -description: "Instructions on how to integrate ISY994 switch into Home Assistant." -date: 2016-09-03 23:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: universal_devices.png -ha_category: Switch -ha_iot_class: "Local Push" ---- - -The `isy994` platform allows you to get data from your [ISY994](https://www.universal-devices.com/residential/isy994i-series/) switch from within Home Assistant. - -They will be automatically discovered if the `isy994` component is loaded. diff --git a/source/_components/switch.kankun.markdown b/source/_components/switch.kankun.markdown deleted file mode 100644 index 919b798f9d..0000000000 --- a/source/_components/switch.kankun.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "Kankun SP3 Wifi Switch" -description: "Instructions for the Kankun SP3 Wifi switch" -date: 2016-12-28 01:50 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Switch -ha_release: 0.36 -ha_iot_class: "Local Polling" ---- - - -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 an 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 -of the script as linked above). - -To enable it, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - platform: kankun - switches: - bedroom_heating: - host: hostname_or_ipaddr -``` - -Configuration variables: - -- **switches** (*Required*): The array that contains all Kankun switches. - - **identifier** (*Required*): Name of the Kankun switch as slug. Multiple entries are possible. - - **host** (*Required*): Hostname or IP address of the switch on the local network. - - **name** (*Optional*): Friendly name of the switch. - - **port** (*Optional*): HTTP connection port, defaults to 80. - - **path** (*Optional*): Path of CGI script, defaults to `/cgi-bin/json.cgi`. - - **username** (*Optional*): Username for basic authentication. - - **password** (*Optional*): Password for basic authentication. - diff --git a/source/_components/switch.knx.markdown b/source/_components/switch.knx.markdown deleted file mode 100644 index dbddf76151..0000000000 --- a/source/_components/switch.knx.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "KNX Switch" -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: Switch -ha_release: 0.24 -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 -switch: - - platform: knx - 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. - -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.litejet.markdown b/source/_components/switch.litejet.markdown deleted file mode 100644 index 34f90d9bad..0000000000 --- a/source/_components/switch.litejet.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "LiteJet Switch" -description: "Instructions on how to setup the LiteJet switches within Home Assistant." -date: 2016-10-26 13:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Switch -ha_release: 0.32 -ha_iot_class: "Local Polling" ---- - -To get your LiteJet switches working with Home Assistant, follow the instructions for the general [LiteJet component](/components/litejet/). diff --git a/source/_components/switch.lutron_caseta.markdown b/source/_components/switch.lutron_caseta.markdown deleted file mode 100644 index 100e044b1b..0000000000 --- a/source/_components/switch.lutron_caseta.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "Lutron Caseta Switch" -description: "Instructions on how to setup the Lutron Caseta switches within Home Assistant." -date: 2017-04-30 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: lutron.png -ha_category: Switch -ha_iot_class: "Local Polling" ---- - -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 deleted file mode 100644 index 54fb891d5c..0000000000 --- a/source/_components/switch.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "Switches" -description: "Instructions on how to setup your switches with Home Assistant." -date: 2015-01-24 14:39 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Keeps track which switches are in your environment, their state and allows you to control them. - - * Maintains a state per switch and a combined state `all_switches`. - * Registers services `switch/turn_on`, `switch/turn_off`, and `switch/toggle` to control switches. - -### {% linkable_title Use the services %} - -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"} -``` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on specific switch. Else targets all. diff --git a/source/_components/switch.mfi.markdown b/source/_components/switch.mfi.markdown deleted file mode 100644 index f82e580257..0000000000 --- a/source/_components/switch.mfi.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "mFi Switch" -description: "Instructions on how to integrate mFi switches within Home Assistant." -date: 2016-02-07 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ubiquiti.png -ha_category: Switch -ha_iot_class: "Local Polling" ---- - - -The `mfi` switch platform to allow you to control [mFi Controllable Power Outlets](https://www.ubnt.com/mfi/mpower/). - -## {% linkable_title Configuration %} - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: mfi - host: IP_ADDRESS_OF_SWITCH - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your mFi controller. -- **port** (*Optional*): The port of your mFi controller. Defaults to 6443. -- **username** (*Required*): The mFi admin username. -- **password** (*Required*): The mFi admin user's password. -- **ssl** (*Optional*): If `True`, use SSL/TLS to contact the mFi controller. Defaults to `True`. -- **verify_ssl** (*Optional*): Set this to `False` if your mFi controller has a self-signed certificate. Defaults to `True`. diff --git a/source/_components/switch.mochad.markdown b/source/_components/switch.mochad.markdown deleted file mode 100644 index a1d7569ec1..0000000000 --- a/source/_components/switch.mochad.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Mochad Switch" -description: "Instructions on how to integrate X10 Mochad switches into Home Assistant." -date: 2016-10-20 21:13 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Switch -ha_iot_class: depends -ha_release: 0.32 ---- - -The `mochad` switch platform lets you control an X10 enabled switch device. - -## {% linkable_title Configuration %} - -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.yaml entry -switch: - - platform: mochad - devices: - - address: a1 - - address: a5 -``` - -Configuration variables: - -- **address** (*Required*): The X10 address of the switch. -- **name** (*Optional*): The name of the switch. Default is: x10_switch_dev_*address*. -- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. - - - diff --git a/source/_components/switch.modbus.markdown b/source/_components/switch.modbus.markdown deleted file mode 100644 index 3bf176c125..0000000000 --- a/source/_components/switch.modbus.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Modbus Switch" -description: "Instructions on how to integrate Modbus switches into Home Assistant." -date: 2015-08-30 23:38 -sidebar: true -comments: false -sharing: true -footer: true -logo: modbus.png -ha_category: Switch -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - - -The `modbus` switch platform allows you to control [Modbus](http://www.modbus.org/) coils or registers. - -## {% linkable_title Configuration %} - -To use your Modbus switches in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - platform: modbus - slave: 1 - coils: - - name: Switch1 - slave: 1 - coil: 13 - - name: Switch2 - slave: 2 - coil: 14 - registers: - - name: Register1 - slave: 1 - register: 11 - command_on: 1 - command_off: 0 -``` - -Configuration variables: - -- **coils** (*Optional*): A list of relevant coils to read from/write to. - - **slave** (*Required*): The number of the slave (can be omitted for tcp and udp Modbus). - - **name** (*Required*): Name of the switch. - - **coil** (*Required*): Coil number. -- **registers** (*Optional*): A list of relevant registers to read from/write to. - - **slave** (*Required*): The number of the slave (can be omitted for tcp and udp Modbus). - - **name** (*Required*): Name of the switch. - - **register** (*Required*): Register number. - - **command_on** (*Required*): Value to write to turn on the switch. - - **command_off** (*Required*): Value to write to turn off the switch. - - **verify_state** (*Optional*): Define if is possible to readback the status of the switch. (default: True) - - **verify_register** (*Optional*): Register to readback. (default: same as register) - - **register_type** (*Optional*): Modbus register type: holding or input. (default: holding) - - **state_on** (*Optional*): Register value when switch is on. (default: same as command_on) - - **state_off** (*Optional*): Register value when switch is off. (default: same as command_off) diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown deleted file mode 100644 index 295ae106db..0000000000 --- a/source/_components/switch.mqtt.markdown +++ /dev/null @@ -1,155 +0,0 @@ ---- -layout: page -title: "MQTT Switch" -description: "Instructions on how to integrate MQTT switches into Home Assistant." -date: 2015-08-30 23:38 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png -ha_category: Switch -ha_release: 0.7 -ha_iot_class: depends ---- - -The `mqtt` switch platform lets you control your MQTT enabled switches. - -## {% linkable_title Configuration %} - -In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT 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 the device (message from `state_topic`). - -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: - -```yaml -# Example configuration.yaml entry -switch: - - platform: mqtt - command_topic: "home/bedroom/switch1/set" -``` - -{% configuration %} -name: - description: The name to use when displaying this switch. - required: false - type: string - default: MQTT Switch -icon: - description: Icon for the switch (e.g. `mdi:radiator`). - required: false - type: string -state_topic: - description: The MQTT topic subscribed to receive state updates. - required: false - type: string -command_topic: - description: The MQTT topic to publish commands to change the switch state. - required: false - type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_on: - description: The payload that represents enabled state. - required: false - type: string - default: ON -payload_off: - description: The payload that represents disabled state. - required: false - type: string - default: OFF -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -optimistic: - description: Flag that defines if switch works in optimistic mode. - required: false - type: boolean - default: "`true` if no `state_topic` defined, else `false`." -qos: - description: The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -value_template: - description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload." - required: false - type: string -{% endconfiguration %} - -

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

    - -## {% linkable_title Examples %} - -In this section you will find some real life examples of how to use this sensor. - -### {% linkable_title Full configuration %} - -The example below shows a full configuration for a switch. - -```yaml -# Example configuration.yaml entry -switch: - - platform: mqtt - 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 - qos: 0 - retain: true -``` - -For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your switch manually: - -```bash -$ mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1 -m "ON" -``` - -### {% linkable_title Set the state of a device with ESPEasy %} - -Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" is a name ("Unit Name:") set for your device (here it's "bathroom"). A configuration for a "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example the topics are prefixed with "home". There is no further configuration needed as the [GPIOs](https://www.letscontrolit.com/wiki/index.php/GPIO) can be controlled with MQTT directly. - -Manually you can set pin 13 to high with `mosquitto_pub` or another MQTT tool: - -```bash -$ mosquitto_pub -h 127.0.0.1 -t home/bathroom/gpio/13 -m "1" -``` - -The configuration will look like the example below: - -{% raw %} -```yaml -# Example configuration.yaml entry -switch: - - platform: mqtt - name: bathroom - state_topic: "home/bathroom/gpio/13" - command_topic: "home/bathroom/gpio/13" - payload_on: "1" - payload_off: "0" -``` -{% endraw %} - diff --git a/source/_components/switch.mysensors.markdown b/source/_components/switch.mysensors.markdown deleted file mode 100644 index a0fffa84e3..0000000000 --- a/source/_components/switch.mysensors.markdown +++ /dev/null @@ -1,206 +0,0 @@ ---- -layout: page -title: "MySensors Switch" -description: "Instructions on how to integrate MySensors switches into Home Assistant." -date: 2016-10-01 15:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -logo: mysensors.png -ha_category: Switch -featured: false -ha_iot_class: "Local Push" ---- - -Integrates MySensors switches into Home Assistant. See the [main component] for configuration instructions. - -The following actuator types are supported: - -##### MySensors version 1.4 and higher - -S_TYPE | V_TYPE ----------|------------------- -S_DOOR | V_ARMED -S_MOTION | V_ARMED -S_SMOKE | V_ARMED -S_LIGHT | V_LIGHT -S_LOCK | V_LOCK_STATUS -S_IR | V_IR_SEND, V_LIGHT - -##### MySensors version 1.5 and higher - -S_TYPE | V_TYPE --------------|---------------------- -S_LIGHT | V_STATUS -S_BINARY | [V_STATUS or V_LIGHT] -S_SPRINKLER | V_STATUS -S_WATER_LEAK | V_ARMED -S_SOUND | V_ARMED -S_VIBRATION | V_ARMED -S_MOISTURE | V_ARMED - -##### MySensors version 2.0 and higher - -S_TYPE | V_TYPE -----------------|--------- -S_WATER_QUALITY | V_STATUS - -All V_TYPES for each S_TYPE above are required to activate the actuator for the platform. Use either V_LIGHT or V_STATUS depending on library version for cases where that V_TYPE is required. - -For more information, visit the [serial api] of MySensors. - -### {% linkable_title Services %} - -The MySensors switch platform exposes a service to change an IR code attribute for an IR switch device and turn the switch on. The IR switch will automatically be turned off after being turned on, if `optimistic` is set to `true` in the [config](/components/mysensors/#configuration) for the MySensors component. This will simulate a push button on a remote. If `optimistic` is `false`, the MySensors device will have to report its updated state to reset the switch. See the [example sketch](#ir-switch-sketch) for the IR switch below. - -| Service | Description | -| ------- | ----------- | -| mysensors_send_ir_code | Set an IR code as a state attribute for a MySensors IR device switch and turn the switch on.| - -The service can be used as part of an automation script. For example: - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: turn hvac on - trigger: - platform: time - at: '5:30:00' - action: - service: switch.mysensors_send_ir_code - entity_id: switch.hvac_1_1 - data: - V_IR_SEND: '0xC284' # the IR code to send - - - alias: turn hvac off - trigger: - platform: time - at: '0:30:00' - action: - service: switch.mysensors_send_ir_code - entity_id: switch.hvac_1_1 - data: - V_IR_SEND: '0xC288' # the IR code to send -``` - -### {% linkable_title Example sketches %} - -#### {% linkable_title Switch sketch %} -```cpp -/* - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/relay - */ - -#include -#include - -#define SN "Relay" -#define SV "1.0" -#define CHILD_ID 1 -#define RELAY_PIN 3 - -MySensor gw; -MyMessage msgRelay(CHILD_ID, V_STATUS); - -void setup() -{ - gw.begin(incomingMessage); - gw.sendSketchInfo(SN, SV); - // Initialize the digital pin as an output. - pinMode(RELAY_PIN, OUTPUT); - gw.present(CHILD_ID, S_BINARY); - gw.send(msgRelay.set(0)); -} - -void loop() -{ - gw.process(); -} - -void incomingMessage(const MyMessage &message) -{ - if (message.type == V_STATUS) { - // Change relay state. - digitalWrite(RELAY_PIN, message.getBool() ? 1 : 0); - gw.send(msgRelay.set(message.getBool() ? 1 : 0)); - } -} -``` - -#### {% linkable_title IR switch sketch %} -```cpp -/* - * Documentation: http://www.mysensors.org - * Support Forum: http://forum.mysensors.org - * - * http://www.mysensors.org/build/ir - */ - -#include -#include -#include - -#define SN "IR Sensor" -#define SV "1.0" -#define CHILD_ID 1 - -MySensor gw; - -char code[10] = "abcd01234"; -char oldCode[10] = "abcd01234"; -MyMessage msgCodeRec(CHILD_ID, V_IR_RECEIVE); -MyMessage msgCode(CHILD_ID, V_IR_SEND); -MyMessage msgSendCode(CHILD_ID, V_LIGHT); - -void setup() -{ - gw.begin(incomingMessage); - gw.sendSketchInfo(SN, SV); - gw.present(CHILD_ID, S_IR); - // Send initial values. - gw.send(msgCodeRec.set(code)); - gw.send(msgCode.set(code)); - gw.send(msgSendCode.set(0)); -} - -void loop() -{ - gw.process(); - // IR receiver not implemented, just a dummy report of code when it changes - if (String(code) != String(oldCode)) { - Serial.print("Code received "); - Serial.println(code); - gw.send(msgCodeRec.set(code)); - strcpy(oldCode, code); - } -} - -void incomingMessage(const MyMessage &message) { - if (message.type==V_LIGHT) { - // IR sender not implemented, just a dummy print. - if (message.getBool()) { - Serial.print("Sending code "); - Serial.println(code); - } - gw.send(msgSendCode.set(message.getBool() ? 1 : 0)); - // Always turn off device - gw.wait(100); - gw.send(msgSendCode.set(0)); - } - if (message.type == V_IR_SEND) { - // Retrieve the IR code value from the incoming message. - String codestring = message.getString(); - codestring.toCharArray(code, sizeof(code)); - Serial.print("Changing code to "); - Serial.println(code); - gw.send(msgCode.set(code)); - } -} -``` - -[main component]: /components/mysensors/ -[serial api]: http://www.mysensors.org/download diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown deleted file mode 100644 index 924087adcd..0000000000 --- a/source/_components/switch.mystrom.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "myStrom Switch" -description: "Instructions on how to integrate myStrom switches into Home Assistant." -date: 2015-11-25 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mystrom.png -ha_category: Switch -ha_release: 0.9 -ha_iot_class: "Local Polling" ---- - - -The `mystrom` switch platform allows you to control the state of your [myStrom](https://mystrom.ch/en/) switches. The built-in sensor is measuring the power consumption while the switch is on. - -To use your myStrom switch in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: mystrom - host: IP_ADRRESS -``` - -{% configuration %} -host: - description: "The IP address of your myStrom switch, e.g., `http://192.168.1.32`." - required: true - type: string -name: - description: The name to use when displaying this switch. - required: false - type: string - default: myStrom Switch -{% endconfiguration %} - -Check if you are able to access the device located at `http://IP_ADRRESS`. The details about your switch is provided as a JSON response. - -```bash -$ curl -X GET -H "Content-Type: application/json" http://IP_ADDRESS/report -{ - "power": 0, - "relay": false -} -``` - -or change its state: - -```bash -$ curl -G -X GET http://IP_ADDRESS/relay -d 'state=1' -``` - -### {% linkable_title Get the current power consumption %} - -The switch is measuring the current power consumption. To expose this as a sensor use a [`template` sensor](/components/sensor.template/). - -{% raw %} -```yaml -# Example configuration.yaml entry -sensor: - - platform: template - sensors: - power: - friendly_name: "Current Power" - unit_of_measurement: "W" - value_template: "{{ states.switch.office.attributes.current_power_w }}" -``` -{% endraw %} - diff --git a/source/_components/switch.neato.markdown b/source/_components/switch.neato.markdown deleted file mode 100644 index 2f0e1e8d1e..0000000000 --- a/source/_components/switch.neato.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Neato Robotics Switch" -description: "Instructions on how to integrate a Neato Botvac Connected switch within Home Assistant." -date: 2016-10-19 17:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: neato.png -ha_category: Switch -ha_release: 0.31 ---- - -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 deleted file mode 100644 index f5c4a9742f..0000000000 --- a/source/_components/switch.netio.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Netio Switch" -description: "Instructions on how to integrate Netio switches into Home Assistant." -date: 2016-09-02 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: netio.png -ha_category: Switch -ha_iot_class: "Local Polling" -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). - -To use Netio devices in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: netio - host: 192.168.1.43 - username: YOUR_USERNAME - password: YOUR_PASSWORD - outlets: - 1: Free - 2: TV - 4: Lamp -``` - -Configuration variables: - -- **host** (*Required*): The IP address of your Netio plug, eg. `http://192.168.1.32`. -- **port** (*Optional*): The port to communicate with the switch. Defaults to `1234`. -- **username** (*Required*): The username for your plug. -- **password** (*Required*): The password for your plug. -- **outlets** (*Required*) array: List of all outlets. - - **[No.]: [Name]** (*Required*): Identification of an outlet. - -To get pushed updates from the Netio devices, one can add this Lua code in the device interface as an action triggered on "Netio" "System variables updated" with an 'Always' schedule: - - -```lua --- this will send socket and consumption status updates via CGI --- to given address. Associate with 'System variables update' event --- to get consumption updates when they show up - -local address='ha:8123' -local path = '/api/netio/' - - -local output = {} -for i = 1, 4 do for _, what in pairs({'state', 'consumption', - 'cumulatedConsumption', 'consumptionStart'}) do - local varname = string.format('output%d_%s', i, what) - table.insert(output, - varname..'='..tostring(devices.system[varname]):gsub(" ","|")) -end end - -local qs = table.concat(output, '&') -local url = string.format('http://%s%s?%s', address, path, qs) -devices.system.CustomCGI{url=url} -``` - diff --git a/source/_components/switch.orvibo.markdown b/source/_components/switch.orvibo.markdown deleted file mode 100644 index 656bcd4a22..0000000000 --- a/source/_components/switch.orvibo.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Orvibo Switch" -description: "Instructions on how to integrate Orvibo sockets within Home Assistant." -date: 2015-11-15 18:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: orvibo.png -ha_category: Switch ---- - -The `orvibo` switch platform allows you to toggle your Orvibo S20 Wifi Smart Sockets. - -To automatically discover Orvibo sockets on your network: - -```yaml -# Example configuration.yaml entry -switch: - - platform: orvibo -``` - -To specify Orvibo sockets and skip discovery: - -```yaml -# Example configuration.yaml entry -switch: - - platform: orvibo - discovery: false - switches: - - host: IP_ADDRESS - mac: MA:CA:DD:RE:SS:00 - name: "My Socket" -``` - -Configuration variables: - -- **discovery** (*Optional*): Whether to discover sockets. Defaults to `true`. -- **switches** (*Optional*): - - **host** (*Required*): IP address of your socket, eg. `192.168.1.10`. - - **mac** (*Optional*): MAC address of the socket, eg "AA:BB:CC:DD:EE:FF". This is required if the socket is connected to a different subnet to the machine running Home Assistant. - - **name** (*Optional*): Your name for the socket. - diff --git a/source/_components/switch.pilight.markdown b/source/_components/switch.pilight.markdown deleted file mode 100644 index ca2c837986..0000000000 --- a/source/_components/switch.pilight.markdown +++ /dev/null @@ -1,97 +0,0 @@ ---- -layout: page -title: "Pilight Switch" -description: "Instructions on how to have switches using 433 MHz connected to a computer running pilight." -date: 2015-06-10 22:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: pilight.png -ha_category: Switch -ha_release: 0.26 -ha_iot_class: "Local Polling" ---- - -The `pilight` switch platform is issuing 433 MHz commands using [pilight](https://www.pilight.org/) to turn a 433 MHz device on or off. The Pilight Home Assistant hub has to be set up. - -Additionally, RF commands can be defined that trigger this switch to turn on and off. This allows you to also use the remote shipped with your 433 MHz switch without mixing up the Home Assistant states. You can even define several on/off commands, thus several RF remotes to toggle this switch. - -To be really sure that Home Assistant knows the actual state of your device it is recommended to use the RF remote with codes unknown to any of your 433 MHz devices. Thus you use the remote to trigger this switch to send the correct RF code to the device. - -## {% linkable_title Configuration %} - -To define a Pilight switch, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - - platform: pilight - switches: - Bed light: - on_code: - protocol: intertechno_old - 'on': 1 - off_code: - protocol: intertechno_old - 'off': 1 -``` - -Configuration variables: - -- **switches** array (*Required*): The list that contains all command switches. - - **[entry]** (*Required*): Name of the command switch. Multiple entries are possible. - - **on_code** (*Required*): The code to turn the device on. - - **off_code** (*Required*): The code to turn the device off. - - **on_code_receive** (*Optional*): If given, this command will turn the switch on if it is received by pilight. - - **off_code_receive** (*Optional*): If given, this command will turn the switch off if it is received by pilight. - -Variables for the different codes (`on_code` and `off_code`): - -- **protocol** (*Required*): Protocol to use, eg. `intertechno_old` or `daycom`. -- **systemcode** (*Optional*): The systemcode of the device. -- **unit** (*Optional*): The unit to use (is equivalent to `pilight-send --unit`). -- **unitcode** (*Optional*): The unitcode to use (is equivalent to `pilight-send --unitcode`). -- **id** (*Optional*): ID of the device -- **state** (*Optional*): `'on'` or `'off'` has to be in apostrophes to be parsed correctly. -- **'off'** (*Optional*): `1` or `0` -- **'on'** (*Optional*): `1` or `0` - -For possible code entries, look at the [pilight API](https://manual.pilight.org/development/api.html). All commands allowed by [pilight-send](https://manual.pilight.org/programs/send.html) 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`): - -- **echo** (*Optional*) Set to `true` if the on-/off-code should be sent if the given code was received. - -This is useful if you have paired your sender directly with the receiver to prevent sending the signal twice. - -## {% linkable_title Examples %} - -```yaml -switch: - - platform: pilight - switches: - Bed light: - on_code: - protocol: intertechno_old - unit: 3 - id: 4 - 'on': 1 - off_code: - protocol: intertechno_old - unit: 3 - id: 4 - 'off': 1 - on_code_receive: - protocol: daycom - systemcode: 14462 - unit: 6 - id: 34 - state: 'on' - off_code_receive: - protocol: daycom - systemcode: 14462 - unit: 6 - id: 34 - state: 'off' -``` diff --git a/source/_components/switch.pulseaudio_loopback.markdown b/source/_components/switch.pulseaudio_loopback.markdown deleted file mode 100644 index 6248f9910e..0000000000 --- a/source/_components/switch.pulseaudio_loopback.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "PulseAudio Loopback Switch" -description: "Instructions on how to use Pulseaudio loopback modules to build a flexible whole-home audio system." -date: 2016-03-22 21:00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: pulseaudio.png -ha_category: Switch -ha_release: 0.16 -ha_iot_class: "Local Polling" ---- - - -The goal behind this switch is to allow a very flexible whole home audio system based upon [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/). - -For example, for a system with a 7.1 surround sound card, and 3 instances of [MPD](https://www.musicpd.org/) running, it is possible to quickly route the output of any MPD instance to any of the 8 possible (4 stereo) channels on the sound card, by loading/unloading a loopback module. This loading/unloading functionality is provided by this component. When the switch is `on`, the loopback module is loaded. When the switch is `off`, the module is not loaded. - -The benefit of this approach is that this audio routing can occur without modifying the design-time configuration of MPD or PulseAudio. - -This component uses a TCP connection to control a local or remote PulseAudio server. So there are no local dependencies. - -To enable this switch, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: pulseaudio_loopback -``` - -Configuration variables: - -- **sink_name** (*Required*): The name of the Pulseaudio sink that will receive the audio. -- **source_name** (*Required*): The name of the Pulseaudio source that will supply the audio. -- **name** (*Optional*): Name of the switch. -- **host** (*Optional*): The IP address or host name of the PulseAudio server. If not specified, 127.0.0.1 is used. -- **port** (*Optional*): The port that Pulseaudio is listening on. Defaults to 4712. -- **buffer_size** (*Optional*): How much data to load from Pulseaudio at once. Default is 1KB. -- **tcp_timeout** (*Optional*): How long to wait for a response from Pulseaudio before giving up. Default is 3 seconds. - -

    -This component relies on raw TCP commands to PulseAudio. In order for PulseAudio to accept commands with this component, `module-cli-protocol` must be loaded on the PulseAudio server. -

    - diff --git a/source/_components/switch.qwikswitch.markdown b/source/_components/switch.qwikswitch.markdown deleted file mode 100644 index 805e47d5fe..0000000000 --- a/source/_components/switch.qwikswitch.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "QwikSwitch Switch" -description: "Instructions on how to integrate QwikSwitch relays into Home Assistant." -date: 2016-05-04 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: qwikswitch.png -ha_category: Switch -ha_iot_class: "Local Push" -ha_release: "0.20" ---- - - -The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays as switches from within Home Assistant. - -If the device name in the QS Mobile application ends with `Switch` it will be created as a switch, otherwise as a [light](/components/light.qwikswitch/). - -The platform is configured through the [QwikSwitch component](/components/qwikswitch/). diff --git a/source/_components/switch.rachio.markdown b/source/_components/switch.rachio.markdown deleted file mode 100644 index 9208a2d475..0000000000 --- a/source/_components/switch.rachio.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Rachio Switch" -description: "Instructions on how to use Rachio switches with Home Assistant." -date: 2017-05-29 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: rachio.png -ha_category: Switch -ha_iot_class: "Cloud Polling" -ha_release: 0.46 ---- - -The `rachio` switch platform allows you to control your [Rachio irrigation system](http://rachio.com/). - -## {% linkable_title Getting your Rachio API Access Token %} - -1. Log in at [https://app.rach.io/](https://app.rach.io/). -1. Click the user button at the top right. -1. Click API Access Token. -1. Copy the API access token from the dialog that opens. - -To add this platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: rachio - access_token: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -``` - -Configuration variables: - -- **access_token** (*Required*): Your Rachio API Access Token. -- **manual_run_mins** (*Optional*): For how long, in minutes, to turn on a station when the switch is enabled. Defaults to 10 minutes. - -## {% linkable_title Examples %} - -In this section you find some real life examples of how to use this switch. - -### {% linkable_title `groups.yaml` example %} - - -```yaml -irrigation: - name: Irrigation - icon: mdi:water-pump - view: true - entities: - - group.zones_front - - group.zones_back - -zones_front: - name: Front Yard - view: false - entities: - - switch.driveway - - switch.front_bushes - - switch.front_garden - - switch.front_yard - - switch.side_yard - -zones_back: - name: Back Yard - view: false - entities: - - switch.back_bushes - - switch.back_garden - - switch.back_porch - - switch.back_trees -``` - -### {% linkable_title iFrame %} - -If you would like to see and control more detailed zone information, create an [iFrame](/components/panel_iframe/) that renders the Rachio web app. - -```yaml -panel_iframe: - rachio: - title: Rachio - url: "https://app.rach.io" - icon: mdi:water-pump -``` diff --git a/source/_components/switch.rainbird.markdown b/source/_components/switch.rainbird.markdown deleted file mode 100644 index 673c4d1928..0000000000 --- a/source/_components/switch.rainbird.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Rain Bird Switch" -description: "Instructions on how to integrate your Rain Bird LNK WiFi Module as Switches within Home Assistant." -date: 2017-08-25 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: rainbird.png -ha_category: Hub -ha_release: 0.57 -ha_iot_class: "Local Polling" ---- - -This `rainbird` switch platform allows interacting with [LNK WiFi](http://www.rainbird.com/landscape/products/controllers/LNK-WiFi.htm) module of the Rain Bird Irrigation system in Home Assistant. - -## {% linkable_title Configuration %} - -Once you have enabled the [Rain Bird component](/components/rainbird), add the following to your `configuration.yaml` file: - -```yaml -switch: - - platform: rainbird - switches: - sprinkler_1: - zone: 1 - friendly_name: "Front sprinklers" - trigger_time: 10 - scan_interval: 10 - sprinkler_2: - friendly_name: "Back sprinklers" - zone: 2 - trigger_time: 20 - scan_interval: 10 -``` - -Configuration variables: - -- **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 deleted file mode 100644 index 2e2af72de8..0000000000 --- a/source/_components/switch.raincloud.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -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. The values allowed are: 5, 10, 15, 30, 45, 60. -- **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 deleted file mode 100644 index f37ce0fbd5..0000000000 --- a/source/_components/switch.rainmachine.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -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/). - -

    -You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/) -configured to use this switch. After configuring that component, switches will -automatically appear. -

    - -## {% linkable_title Controlling Your Device %} - -After Home Assistant loads, new switches will be added for every enabled -program and zone. These work as expected: - -- Program On/Off: starts/stops a program -- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to -determine how long to run for) - -Programs and zones are linked. While a program is running, you will see both -the program and zone switches turned on; turning either one off will turn the -other one off (just like in the web app). diff --git a/source/_components/switch.raspihats.markdown b/source/_components/switch.raspihats.markdown deleted file mode 100644 index f31a33edaa..0000000000 --- a/source/_components/switch.raspihats.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: page -title: "Raspihats Switch" -description: "Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant as a switch." -date: 2017-05-15 04:20 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspihats.png -ha_category: Switch -ha_release: 0.45 -ha_iot_class: "Local Push" ---- - - -The `raspihats` switch platform allows you to control the digital outputs of your [raspihats](http://www.raspihats.com/) boards. - -To use your raspihats boards in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: raspihats - i2c_hats: - - board: DI6acDQ6rly - address: 0x60 - channels: - - index: 0 - name: Fan Office - invert_logic: true - initial_state: true - - index: 1 - name: Light Office -``` - -Configuration variables: - -- **i2c_hats** (*Optional*): Array of used I2C-HATs. - - **board** (*Required*): The board name. - - **address** (*Required*): The board I2C address, hex value. - - **channels** (*Required*): Array of used digital output channels. - - **index** (*Required*): Digital output channel index. - - **name** (*Required*): Friendly name to use for the frontend. - - **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 deleted file mode 100644 index 65f0afcd3e..0000000000 --- a/source/_components/switch.rest.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: page -title: "RESTful Switch" -description: "Instructions on how to integrate REST switches into Home Assistant." -date: 2015-09-14 19:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: restful.png -ha_category: Switch -ha_release: 0.7.6 -ha_iot_class: "Local Polling" ---- - -The `rest` switch platform allows you to control a given endpoint that supports a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer). The switch can get the state via GET and set the state via POST on a given REST resource. - -## {% linkable_title Configuration %} - -To enable this switch, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: rest - resource: http://IP_ADDRESS/ENDPOINT -``` - -{% configuration %} -resource: - description: The resource or endpoint that contains the value. - required: true - type: string -method: - description: "The method of the request. Supported `post` or `put`." - required: false - type: string - default: post -name: - description: Name of the REST Switch. - required: false - type: string - default: REST Switch -timeout: - description: Timeout for the request. - required: false - type: int - default: 10 -body_on: - description: "The body of the POST request that commands the switch to become enabled. This value can be a [template](/topics/templating/)." - required: false - type: string - default: ON -body_off: - description: "The body of the POST request that commands the switch to become disabled. This value can also be a [template](/topics/templating/)." - required: false - type: string - default: OFF -is_on_template: - description: "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." - required: false - type: string -username: - description: The username for accessing the REST endpoint. - required: false - type: string -password: - description: The password for accessing the REST endpoint. - required: false - type: string -headers: - description: The headers for the request. - required: false - type: list, string -{% endconfiguration %} - -

    -Make sure that the URL matches exactly your endpoint or resource. -

    - -## {% linkable_title Example %} - -### {% linkable_title Switch with templated value %} - -This example shows a switch that uses a [template](/topics/templating/) to allow Home Assistant to determine its state. In this example, the REST endpoint returns this JSON response with true indicating the switch is on. - -```json -{"is_active": "true"} -``` - -{% raw %} -```yaml -switch: - - platform: rest - resource: http://IP_ADDRESS/led_endpoint - body_on: '{"active": "true"}' - body_off: '{"active": "false"}' - is_on_template: '{{ value_json.is_active }}' - headers: - Content-Type: application/json -``` -{% endraw %} - -`body_on` and `body_off` can also depend on the state of the system. For example, to enable a remote temperature sensor tracking on a radio thermostat, one has to send the current value of the remote temperature sensor. This can be achieved by using the template `{% raw %}'{"rem_temp":{{states.sensor.bedroom_temp.state}}}'{% endraw %}`. diff --git a/source/_components/switch.rflink.markdown b/source/_components/switch.rflink.markdown deleted file mode 100644 index ee42e8bbd7..0000000000 --- a/source/_components/switch.rflink.markdown +++ /dev/null @@ -1,83 +0,0 @@ ---- -layout: page -title: "RFLink Switch" -description: "Instructions on how to integrate RFLink switches into Home Assistant." -date: 2016-01-04 -sidebar: true -comments: false -sharing: true -footer: true -logo: rflink.png -ha_category: Switch -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 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/). - -The RFLink component does not know the difference between a `switch` and a `light`. Therefore all switchable devices are automatically added as `light` by default. - -RFLink switch/light ID's are composed of: protocol, id, switch. For example: `newkaku_0000c6c2_1`. - -Once the ID of a switch is known it can be used to configure it as a switch type in HA, for example to add it to a different group, hide it or configure a nice name. - -Configuring a device as switch with a nice name: - -```yaml -# Example configuration.yaml entry -switch: - platform: rflink - device_defaults: - fire_event: true - signal_repetitions: 2 - devices: - newkaku_0000c6c2_1: - name: Ceiling fan - conrad_00785c_0a: - name: Motion sensor kitchen - -``` - -Configuration variables: - -- **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 a `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 aliases: - -```yaml -# Example configuration.yaml entry -switch: - platform: rflink - devices: - newkaku_0000c6c2_1: - name: Ceiling fan - icon: mdi:fan - aliases: - - newkaku_000000001_2 - - kaku_000001_a -``` - -Any on/off command from any alias ID updates the current state of the switch. However when sending a command through the frontend only the primary ID is used. - -### {% linkable_title Device support %} - -See [device support](/components/rflink/#device-support) - diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown deleted file mode 100644 index 52b58ab4a6..0000000000 --- a/source/_components/switch.rfxtrx.markdown +++ /dev/null @@ -1,158 +0,0 @@ ---- -layout: page -title: "RFXtrx Switch" -description: "Instructions on how to integrate RFXtrx switches into Home Assistant." -date: 2015-10-08 10:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: rfxtrx.png -ha_category: Switch -ha_release: 0.7.5 ---- - -The `rfxtrx` platform support switches that communicate in the frequency range of 433.92 MHz. - -First you have to set up your [rfxtrx hub](/components/rfxtrx/). -The easiest way to find your switches is to add this to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - platform: rfxtrx - automatic_add: True -``` - -Launch your Home Assistant and go the website. -Push your remote and your device should be added: - -

    - -

    - -Here the name is `0b11000102ef9f210010f70` and you can verify that it works from the frontend. -Then you should update your configuration to: - -```yaml -# Example configuration.yaml entry -switch: - platform: rfxtrx - devices: - 0b11000102ef9f210010f70: - name: device_name -``` - -Configuration variables: - -- **devices** (*Required*): A list of devices with their name to use in the frontend. -- **automatic_add** (*Optional*): To enable the automatic addition of new switches. -- **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). - -- Go to home-assistant-IP:8123/dev-template -- Use this code to generate a code: - -```yaml -{% raw %}0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}010f70{% endraw %} -``` - -- Use this code to add a new switch in your configuration.yaml -- 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 - -## {% linkable_title Examples %} - -Basic configuration with 3 devices: - -```yaml -# Example configuration.yaml entry -switch: - platform: rfxtrx - automatic_add: False - signal_repetitions: 2 - devices: - 0b1100ce3213c7f210010f70: - name: Movment1 - 0b11000a02ef2gf210010f50: - name: Movment2 - 0b1111e003af16aa10000060: - name: Door - fire_event: True -``` - -Light hallway if doorbell is pressed (when is sun down): - -```yaml -# Example configuration.yaml entry -switch: - platform: rfxtrx - automatic_add: False - devices: - 0710014c440f0160: - name: Hall - 0710010244080780: - name: Door - fire_event: true - -automation: - - alias: Switch light on when door bell rings if sun is below horizon and light was off - trigger: - platform: event - event_type: button_pressed - event_data: {"entity_id": "switch.door"} - condition: - condition: and - conditions: - - condition: state - entity_id: sun.sun - state: "below_horizon" - - condition: state - entity_id: switch.hall - state: 'off' - action: - - service: switch.turn_on - entity_id: switch.hall -``` - -Use remote to enable scene (using event_data): - -```yaml -# Example configuration.yaml entry -switch: - platform: rfxtrx - automatic_add: False - devices: - 0b1100ce3213c7f210010f70: - name: Light1 - 0b11000a02ef2gf210010f50: - name: Light2 - 0b1111e003af16aa10000060: - name: Keychain remote - fire_event: true -scene: - name: Livingroom - entities: - switch.light1: on - switch.light2: on - -automation: - - alias: Use remote to enable scene - trigger: - platform: event - event_type: button_pressed - event_data: {"state": "on", "entity_id": "switch.keychain_remote"} - action: - service: scene.turn_on - entity_id: scene.livingroom -``` diff --git a/source/_components/switch.rpi_gpio.markdown b/source/_components/switch.rpi_gpio.markdown deleted file mode 100644 index 5b3a888e24..0000000000 --- a/source/_components/switch.rpi_gpio.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Raspberry Pi GPIO Switch" -description: "Instructions on how to integrate the GPIO of a Raspberry Pi into Home Assistant as a switch." -date: 2015-08-07 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Switch -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - - -The `rpi_gpio` switch platform allows you to control the GPIOs of your [Raspberry Pi](https://www.raspberrypi.org/). - -To use your Raspberry Pi's GPIO in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: rpi_gpio - ports: - 11: Fan Office - 12: Light Desk -``` - -Configuration variables: - -- **ports** array (*Required*): Array of used ports. - - **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. - -

    -Note that a pin managed by HASS is expected to be exclusive to HASS. -

    - -A common question is what does Port refer to, this number is the actual GPIO # not the pin #. -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.rpi_pfio.markdown b/source/_components/switch.rpi_pfio.markdown deleted file mode 100644 index 30498f7d99..0000000000 --- a/source/_components/switch.rpi_pfio.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "PiFace Digital I/O Switch" -description: "Instructions on how to integrate the PiFace Digital I/O module into Home Assistant as a switch." -date: 2016-05-08 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Switch -ha_release: 0.45 -ha_iot_class: "Local Polling" ---- - -The `rpi_pfio` switch platform allows you to control the [PiFace Digital I/O](http://www.piface.org.uk/products/piface_digital/) module. - -To use your PiFace Digital I/O module in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: rpi_pfio - ports: - 0: - name: Doorlock - invert_logic: true - 1: - name: Light Desk -``` - -Configuration variables: - -- **ports** array (*Required*): Array of used ports. - - **num** (*Required*): Port number. - - **name** (*Required*): Port name. - - **invert_logic** (*Optional*): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH). - diff --git a/source/_components/switch.rpi_rf.markdown b/source/_components/switch.rpi_rf.markdown deleted file mode 100644 index b9813ceb56..0000000000 --- a/source/_components/switch.rpi_rf.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Raspberry Pi RF Switch" -description: "Instructions on how to integrate devices controlled via codes sent with low-cost GPIO RF modules on a Raspberry Pi into Home Assistant as a switch." -date: 2016-05-10 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: raspberry-pi.png -ha_category: Switch -ha_release: 0.19 -ha_iot_class: "Assumed state" ---- - - -The `rpi_rf` switch platform allows you to control devices over 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a [Raspberry Pi](https://www.raspberrypi.org/). - -Interoperable with codes sniffed via [the rpi-rf module](https://pypi.python.org/pypi/rpi-rf) or [rc-switch](https://github.com/sui77/rc-switch). -For more info see the PyPi module description: [rpi-rf](https://pypi.python.org/pypi/rpi-rf). - -To enable, add the following to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -switch: - - platform: rpi_rf - gpio: 17 - switches: - bedroom_light: - code_on: 1234567 - code_off: 1234568 - ambilight: - pulselength: 200 - code_on: 987654 - code_off: 133742 - living_room_light: - protocol: 5 - code_on: 654321,565874,233555,149874 - code_off: 654320,565873,233554,149873 - signal_repetitions: 15 -``` - -Configuration variables: - -- **gpio** (*Required*): GPIO to which the data line of the TX module is connected. -- **switches:** (*Required*): The array that contains all switches. - - **[entry]** (*Required*): Name of the switch. Multiple entries are possible. - - **code_on** (*Required*): Decimal code(s) to switch the device on. To run multiple codes in a sequence, separate the individual codes with commas ','. - - **code_off** (*Required*): Decimal code(s) to switch the device off. To run multiple codes in a sequence, separate the individual codes with commas ','. - - **protocol** (*Optional*): RF Protocol (Default is `1`). - - **pulselength** (*Optional*): Pulselength (Default is the protocol default). - - **signal_repetitions** (*Optional*): Number of times to repeat transmission (default is 10, can increase to try to improve reliability). diff --git a/source/_components/switch.scsgate.markdown b/source/_components/switch.scsgate.markdown deleted file mode 100644 index 35e1f6b7f8..0000000000 --- a/source/_components/switch.scsgate.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "SCSGate Switch" -description: "Instructions on how to integrate SCSGate switches into Home Assistant." -date: 2016-01-31 22:15 -sidebar: true -comments: false -sharing: true -footer: true -logo: bus_scs.png -ha_category: Switch -ha_release: 0.13 -ha_iot_class: "Local Polling" ---- - -The SCSGate device can control switches of the BTicino MyHome system. - -To enable SCSGate switches in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: scsgate - devices: - living_room: - scs_id: XXXXX -``` - -Configuration variables: - -- **devices** (*Required*): A list of devices with their name to use in the frontend. diff --git a/source/_components/switch.skybell.markdown b/source/_components/switch.skybell.markdown deleted file mode 100644 index 511aa39c1a..0000000000 --- a/source/_components/switch.skybell.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -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.smappee.markdown b/source/_components/switch.smappee.markdown deleted file mode 100644 index 0576738e51..0000000000 --- a/source/_components/switch.smappee.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Smappee Switch" -description: "Instructions on how to integrate Smappee Comfort Plug into Home Assistant." -date: 2018-02-26 08:37 -sidebar: true -comments: false -sharing: true -footer: true -logo: smappee.png -ha_release: "0.64" -ha_category: Switch -ha_iot_class: "Local Push" ---- - -[Smappee](https://www.smappee.com/) controller for energy monitoring and Comport plug switches. - -Comport Plugs will be automatically added when you connect to the Smappee controller. - -For more configuration information see the [Smappee component](/components/smappee/) documentation. diff --git a/source/_components/switch.snmp.markdown b/source/_components/switch.snmp.markdown deleted file mode 100644 index 59d9b23904..0000000000 --- a/source/_components/switch.snmp.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -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. -- **command_oid** (*Optional*): The SNMP OID which to set in order to turn the switch on and off, if different from `baseoid`. -- **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 if `command_payload_on` is not set. 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 if `command_payload_off` is not set. Defaults to `0`. -- **command_payload_on** (*Optional*): The value to write to turn on the switch, if different from `payload_on`. -- **command_payload_off** (*Optional*): The value to write to turn off the switch, if different from `payload_off`. - -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.tahoma.markdown b/source/_components/switch.tahoma.markdown deleted file mode 100644 index a7c3338fee..0000000000 --- a/source/_components/switch.tahoma.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Tahoma Switch" -description: "Instructions on how to integrate Tahoma switches into Home Assistant." -date: 2017-07-18 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tahoma.png -ha_category: Sensor -ha_release: 0.59 ---- - -The `tahoma` switch platform lets you see switches added to your Tahoma Box in Home Assistant. - -Switches will be added automatically. Please refer to the [component](/components/tahoma/) configuration on how to setup Tahoma. diff --git a/source/_components/switch.tellduslive.markdown b/source/_components/switch.tellduslive.markdown deleted file mode 100644 index 1cfa2c6fc8..0000000000 --- a/source/_components/switch.tellduslive.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Telldus Live Switch" -description: "Instructions on how to integrate Telldus Live switches into Home Assistant." -date: 2016-01-17 15:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus.png -ha_category: Switch -featured: false ---- - -Integrates Telldus Live switches into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. - diff --git a/source/_components/switch.tellstick.markdown b/source/_components/switch.tellstick.markdown deleted file mode 100644 index 9de976af4b..0000000000 --- a/source/_components/switch.tellstick.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "TellStick Switch" -description: "Instructions on how to integrate TellStick switches into Home Assistant." -date: 2015-08-06 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus_tellstick.png -ha_category: Switch -ha_iot_class: "Assumed State" ---- - - -This `tellstick` switch platform allows you to control [TellStick](http://www.telldus.se/products/tellstick) devices. - -To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: tellstick -``` diff --git a/source/_components/switch.telnet.markdown b/source/_components/switch.telnet.markdown deleted file mode 100644 index ef1345cd5b..0000000000 --- a/source/_components/switch.telnet.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Telnet Switch" -description: "Instructions on 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** (*Optional*): Command to determine the state of the switch. If not defined the switch will assume successful state changes. - - **value_template** (*Optional*): 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 deleted file mode 100644 index cfcb54d092..0000000000 --- a/source/_components/switch.template.markdown +++ /dev/null @@ -1,224 +0,0 @@ ---- -layout: page -title: "Template Switch" -description: "Instructions on how to integrate Template Switches into Home Assistant." -date: 2016-02-07 07:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Switch -ha_release: 0.13 -ha_iot_class: "Local Push" -logo: home-assistant.png ---- - -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. - -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: - -{% raw %} -```yaml -# Example configuration.yaml entry -switch: - - platform: template - switches: - skylight: - value_template: "{{ is_state('sensor.skylight', 'on') }}" - turn_on: - service: switch.turn_on - data: - entity_id: switch.skylight_open - turn_off: - service: switch.turn_on - data: - entity_id: switch.skylight_close -``` -{% endraw %} - -{% 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: A list of entity IDs so the switch only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. - required: false - type: [string, list] - 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 - icon_template: - description: Defines a template for the icon of the switch. - required: false - type: template - entity_picture_template: - description: Defines a template for the picture of the switch. - 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 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 %} - -This example shows a switch that copies another switch. - -{% raw %} -```yaml -switch: - - platform: template - switches: - copy: - value_template: "{{ is_state('switch.source', 'on') }}" - turn_on: - service: switch.turn_on - data: - entity_id: switch.source - turn_off: - service: switch.turn_off - data: - entity_id: switch.source -``` -{% endraw %} - -### {% linkable_title Toggle 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: "{{ is_state_attr('switch.blind_toggle', 'sensor_state', 'on') }}" - turn_on: - service: switch.toggle - data: - entity_id: switch.blind_toggle - turn_off: - service: switch.toggle - data: - entity_id: switch.blind_toggle -``` -{% endraw %} - -### {% 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. - -{% raw %} -```yaml -switch: - - platform: template - switches: - skylight: - friendly_name: "Skylight" - value_template: "{{ is_state('sensor.skylight.state', 'on') }}" - turn_on: - service: switch.turn_on - data: - entity_id: switch.skylight_open - turn_off: - service: switch.turn_on - data: - entity_id: switch.skylight_close -``` -{% 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: "{{ 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 - 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 deleted file mode 100644 index 2ded4d7d10..0000000000 --- a/source/_components/switch.tesla.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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, max range switch) 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 deleted file mode 100644 index 30a937f212..0000000000 --- a/source/_components/switch.thinkingcleaner.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: page -title: "Thinking Cleaner Switch" -description: "Instructions on how to integrate a ThinkingCleaner switches within Home Assistant." -date: 2016-04-10 17:24 -sidebar: true -comments: false -sharing: true -footer: true -logo: thinkingcleaner.png -ha_category: Switch -ha_iot_class: "Local Poll" -ha_release: 0.18 ---- - -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: - -```yaml -# Example configuration.yaml entry -switch: - - platform: thinkingcleaner -``` - -This will automatically add switches for each Thinking Cleaner in your network. diff --git a/source/_components/switch.toon.markdown b/source/_components/switch.toon.markdown deleted file mode 100644 index 744622da78..0000000000 --- a/source/_components/switch.toon.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: page -title: "Toon Smart Plugs" -description: "Instructions on 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.tplink.markdown b/source/_components/switch.tplink.markdown deleted file mode 100644 index da0083120b..0000000000 --- a/source/_components/switch.tplink.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "TP-Link Switch" -description: "Instructions on how to integrate TP-Link switches into Home Assistant." -date: 2016-07-13 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tp-link.png -ha_category: Switch -ha_iot_class: "Local Polling" -ha_release: "0.24" ---- - - -The `tplink` switch platform allows you to control the state of your [TP-Link smart switch](http://www.tp-link.com/en/products/list-5258.html). - -Supported units: - -- HS100 -- HS105 -- HS110 -- HS200 - -To use your TP-Link switch in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: tplink - host: IP_ADDRESS -``` - -{% configuration %} -name: - description: The name to use when displaying this switch. - required: false - type: string - default: TP-Link Switch -host: - description: "The IP address of your TP-Link switch, eg. `192.168.1.32`." - required: true - type: string -enable_leds: - description: If the LEDs on the switch (WiFi and power) should be lit. - required: false - type: boolean -{% endconfiguration %} - diff --git a/source/_components/switch.transmission.markdown b/source/_components/switch.transmission.markdown deleted file mode 100644 index 888f1470a0..0000000000 --- a/source/_components/switch.transmission.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Transmission Switch" -description: "Instructions on how to integrate Transmission within Home Assistant." -date: 2015-06-02 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: transmission.png -ha_category: Downloading -ha_release: pre 0.7 -ha_iot_class: "Local Polling" ---- - - -The `transmission` switch platform allows you to control your [Transmission](http://www.transmissionbt.com/) client from within Home Assistant. The platform enables you switch to your 'Alternative Speed Limits' (aka 'Turtle mode') setting. - -To add Transmission to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - platform: transmission - host: IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Required*): This is the IP address of your Transmission daemon, eg. 192.168.1.32. -- **port** (*Optional*): The port your Transmission daemon uses, defaults to 9091. -- **name** (*Optional*): The name to use when displaying this Transmission instance. -- **username** (*Optional*): Your Transmission username, if you use authentication. -- **password** (*Optional*): Your Transmission password, if you use authentication. - diff --git a/source/_components/switch.upcloud.markdown b/source/_components/switch.upcloud.markdown deleted file mode 100644 index 98f45d0e68..0000000000 --- a/source/_components/switch.upcloud.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: UpCloud Switch -description: Instructions on how to set up UpCloud switches within Home Assistant. -date: 2018-01-28 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: upcloud.png -ha_category: Switch -ha_release: 0.65 -ha_iot_class: Cloud Polling ---- - -The `upcloud` switch platform allows you to control (start/stop) your UpCloud servers. - -To use your UpCloud servers, you first have to set up your [UpCloud hub](/components/upcloud/) and then add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: upcloud - servers: - - 002167b7-4cb1-44b7-869f-e0900ddeeae1 - - 00886296-6137-4074-afe3-068e16d89d00 -``` - -{% configuration %} -servers: - description: List of servers you want to control. - required: true - type: list -{% endconfiguration %} diff --git a/source/_components/switch.velbus.markdown b/source/_components/switch.velbus.markdown deleted file mode 100644 index b4a7ae1296..0000000000 --- a/source/_components/switch.velbus.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -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.vera.markdown b/source/_components/switch.vera.markdown deleted file mode 100644 index e515a8d74c..0000000000 --- a/source/_components/switch.vera.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Vera Switch" -description: "Instructions on how to integrate Vera switches into Home Assistant." -date: 2015-10-20 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Switch -ha_iot_class: "Local Push" -ha_release: pre 0.7 ---- - -The `vera` platform allows you to control your [Vera](http://getvera.com/) switches from within Home Assistant. - -They will be automatically discovered if the vera component is loaded. - -For more configuration information see the [Vera component](/components/vera/) documentation. diff --git a/source/_components/switch.verisure.markdown b/source/_components/switch.verisure.markdown deleted file mode 100644 index c84b3739f8..0000000000 --- a/source/_components/switch.verisure.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Verisure SmartPlug" -description: "Instructions on how to setup the Verisure SmartPlug within Home Assistant." -date: 2016-02-15 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: verisure.png -ha_category: Switch -ha_iot_class: "Cloud Polling" ---- - - -The Verisure switch platform allows you to control your [Verisure](https://www.verisure.com/) SmartPlugs. - -The requirement is that you have setup your [Verisure hub](/components/verisure/). - diff --git a/source/_components/switch.vesync.markdown b/source/_components/switch.vesync.markdown deleted file mode 100644 index b02f476e93..0000000000 --- a/source/_components/switch.vesync.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "VeSync Switch" -description: "Instructions on how to set up Etekcity VeSync switches within Home Assistant." -date: 2018-03-09 02:11 -sidebar: true -comments: false -sharing: true -footer: true -logo: vesync.png -ha_category: Switch -ha_release: 0.66 ---- - -The `vesync` switch platform enables integration with Etekcity VeSync smart switches. - -VeSync switches are low-cost wifi smart plugs that offer energy monitoring and work with popular voice assistants. - -To use your VeSync switches, you must first register your switches with the VeSync app. Once registration is complete you must add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: vesync - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -{% configuration %} -username: - description: Username needed to log in to VeSync. - required: true - type: string -password: - description: Password needed to log in to VeSync. - required: true - type: string -{% endconfiguration %} - -### {% linkable_title Exposed Attributes %} - -VeSync switches will expose the following details. - -| Attribute | Description | Example | -| ------------------- | ------------------------------------------------------------------- | --------------- | -| `current_power_w` | The present power consumption of the switch in watts. | 100 | -| `today_energy_kwh` | The kilowatt hours used by the switch during the previous 24 hours. | 0.12 | diff --git a/source/_components/switch.volvooncall.markdown b/source/_components/switch.volvooncall.markdown deleted file mode 100644 index f4de42f501..0000000000 --- a/source/_components/switch.volvooncall.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Volvo On Call" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." -date: 2016-10-02 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: volvo.png -ha_category: Presence Detection -ha_release: "0.30" ---- - - -Integrates Volvo on Call into Home Assistant. See the [main component](/components/volvooncall/) for configuration instructions. diff --git a/source/_components/switch.vultr.markdown b/source/_components/switch.vultr.markdown deleted file mode 100644 index 087be7fe92..0000000000 --- a/source/_components/switch.vultr.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -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 deleted file mode 100644 index 161cfcd1b5..0000000000 --- a/source/_components/switch.wake_on_lan.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: page -title: "Wake on LAN Switch" -description: "Instructions on how to integrate a wake on lan switch." -date: 2016-03-18 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ethernet.png -ha_category: Switch -ha_release: 0.16 -ha_iot_class: "Local Polling" ---- - -The `wake_on_lan` (WOL) switch platform allows you to turn on a [WOL](https://en.wikipedia.org/wiki/Wake-on-LAN) enabled computer. - -## {% linkable_title Configuration %} - -

    -The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. The `turn_off` variable is there to help you call a script when you have figured out how to remotely turn off your computer. -See below for suggestions on how to do this. -

    - -To enable this switch in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: wake_on_lan - mac_address: "00-01-02-03-04-05" -``` - -Configuration variables: - -- **mac_address** (*Required*): MAC address to send the wake up command to. -- **name** (*Optional*): The name of the switch. Default is 'Wake on LAN'. -- **host** (*Optional*): The IP address or hostname to check the state of the device (on/off). -- **turn_off** (*Optional*): Defines an [action](/getting-started/automation/) to run when the switch is turned off. -- **broadcast_address** (*Optional*): The IP address of the host to send the magic packet to (default 255.255.255.255). - -## {% linkable_title Examples %} - -Here are some real life examples of how to use the **turn_off** variable. - -### {% 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**). - -1. On the **server**, log in as the user account Home Assistant is running under. (I'm using `hass` in this example) -2. On the **server**, create ssh keys by running `ssh-keygen`. Just press enter on all questions. -3. On the **target**, create a new account that Home Assistant can ssh into: `sudo adduser hass`. Just press enter on all questions except password. I recommend using the same user name as on the server. If you do, you can leave out `hass@` in the ssh commands below. -4. On the **server**, transfer your public ssh key by `ssh-copy-id hass@TARGET` where TARGET is your target machine's name or IP address. Enter the password you created in step 3. -5. On the **server**, verify that you can reach your target machine without password by `ssh TARGET`. -6. On the **target**, we need to let the hass user execute the program needed to suspend/shut down the target computer. I'm using `pm-suspend`, use `poweroff` to turn off the computer. First, get the full path: `which pm-suspend`. On my system, this is `/usr/sbin/pm-suspend`. -7. On the **target**, using an account with sudo access (typically your main account), `sudo visudo`. Add this line last in the file: `hass ALL=NOPASSWD:/usr/sbin/pm-suspend`, where you replace `hass` with the name of your user on the target, if different, and `/usr/sbin/pm-suspend` with the command of your choice, if different. -8. On the **server**, add the following to your configuration, replacing TARGET with the target's name: - -```yaml -switch: - - platform: wake_on_lan - name: "TARGET" - ... - turn_off: - service: shell_command.turn_off_TARGET - -shell_command: - turn_off_TARGET: 'ssh hass@TARGET sudo pm-suspend' -``` diff --git a/source/_components/switch.wemo.markdown b/source/_components/switch.wemo.markdown deleted file mode 100644 index 6bca30af1a..0000000000 --- a/source/_components/switch.wemo.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Belkin WeMo Switch" -description: "Instructions on how to integrate Belkin WeMo switches into Home Assistant." -date: 2016-02-20 00:47 -sidebar: true -comments: false -sharing: true -footer: true -logo: belkin_wemo.png -ha_category: Switch -ha_iot_class: "Local Push" ---- - - -The `wemo` platform allows you to control your [Belkin WeMo](http://www.belkin.com/us/p/P-F7C027/) switches from within Home Assistant. This includes support for Wemo enabled [Mr. Coffee](http://www.mrcoffee.com/wemo-landing-page.html) smart coffee makers. - -They will be automatically discovered if the discovery component is enabled. - -For more configuration information see the [WeMo component](/components/wemo/) documentation. diff --git a/source/_components/switch.wink.markdown b/source/_components/switch.wink.markdown deleted file mode 100644 index 9a02607792..0000000000 --- a/source/_components/switch.wink.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Wink Switch" -description: "Instructions on how to setup the Wink switches within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Switch -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - - -The Wink switch platform allows you to control your [Wink](http://www.wink.com/) switches. - -The requirement is that you have setup [Wink](/components/wink/). - - -### Supported switch devices - -- Wink Pivot power genius (No Wink hub required) -- non-dimming Z-wave in wall switches (dimming switches show up as lights) -- Wink Relay load controlling switches -- Rachio sprinkler controller (No Wink hub required) -- iHome smart plug (No Wink hub required) -- Wink switch groups (User created groups of switches) - diff --git a/source/_components/switch.xiaomi_aqara.markdown b/source/_components/switch.xiaomi_aqara.markdown deleted file mode 100644 index 0306ba2921..0000000000 --- a/source/_components/switch.xiaomi_aqara.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Xiaomi Switch" -description: "Instructions on 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 deleted file mode 100644 index 6124437209..0000000000 --- a/source/_components/switch.xiaomi_miio.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: page -title: "Xiaomi Smart WiFi Socket and Smart Power Strip" -description: "Instructions on 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, Xiaomi Smart Power Strip and Xiaomi Chuangmi Plug V1. - -Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. - -## Features - -### Xiaomi Smart WiFi Socket - -* Power (on, off) -* Attributes - - Temperature - -### Xiaomi Chuangmi Plug V1 - -* Power (on, off) -* USB (on, off) -* Attributes - - Temperature - -### Xiaomi Smart Power Strip - -* Power (on, off) -* Wifi LED (on, off) -* Power Price (0...999) -* Power Mode (green, normal) (Power Strip V1 only) -* Attributes - - Temperature - - Current - - Load power - - Wifi LED - - Mode (Power Strip V1 only) - -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 - model: chuangmi.plug.m1 -``` - -Configuration variables: -- **host** (*Required*): The IP of your miio device. -- **token** (*Required*): The API token of your miio device. -- **name** (*Optional*): The name of your miio device. -- **model** (*Optional*): The model of your miio device. Valid values are `chuangmi.plug.v1`, `qmi.powerstrip.v1`, `zimi.powerstrip.v2`, `chuangmi.plug.m1` and `chuangmi.plug.v2`. This setting can be used to bypass the device model detection and is recommended if your device isn't always available. - -{% configuration %} -host: - description: The IP address of your device. - required: true - type: string -token: - description: The API token of your device. - required: true - type: string -name: - description: The name of your device. - required: false - type: string - default: Xiaomi Miio Switch -model: - description: The model of your device. - required: false - type: string -{% endconfiguration %} - -## {% linkable_title Platform Services %} - -### {% linkable_title Service `switch.xiaomi_miio_set_wifi_led_on` %} (Power Strip only) - -Turn the wifi led on. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | - -### {% linkable_title Service `switch.xiaomi_miio_set_wifi_led_off` %} (Power Strip only) - -Turn the wifi led off. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | - -### {% linkable_title Service `switch.xiaomi_miio_set_power_price` %} (Power Strip) - -Set the power price. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | -| `price` | no | Power price, between 0 and 999. | - -### {% linkable_title Service `switch.xiaomi_miio_set_power_mode` %} (Power Strip V1 only) - -Set the power mode. - -| Service data attribute | Optional | Description | -|---------------------------|----------|---------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific xiaomi miio switch entity. Else targets all. | -| `mode` | no | Power mode, valid values are 'normal' and 'green' | diff --git a/source/_components/switch.zha.markdown b/source/_components/switch.zha.markdown deleted file mode 100644 index c5c7eee2c5..0000000000 --- a/source/_components/switch.zha.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "ZigBee Home Automation Switch" -description: "Instructions on how to setup ZigBee Home Automation switches within Home Assistant." -date: 2017-02-22 00:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Switch -ha_iot_class: "Local Polling" ---- - -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/switch.zigbee.markdown b/source/_components/switch.zigbee.markdown deleted file mode 100644 index cbdd87bdfe..0000000000 --- a/source/_components/switch.zigbee.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "ZigBee Switch" -description: "Instructions on how to set up ZigBee switches within Home Assistant." -date: 2016-01-28 11:52 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Switch -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - -A ZigBee switch in this context is a device connected to one of the digital output pins on a ZigBee module. It can simply be switched on and off. By default, a switch is considered `on` when the ZigBee device's digital output is held `high` and considered `off` when it is held `low`. This behavior can be inverted by setting the `on_state` configuration variable to `low`. - -To configure a digital output pin as switch, add the following to your `configuration.yaml` file: - -```yaml -switch: - - name: Pond Fountain - platform: zigbee - pin: 0 - address: 0013A20040791FA2 - on_state: low -``` - -Configuration variables: - -- **name** (*Required*): The name you would like to give the switch in Home Assistant. -- **pin** (*Required*): The number identifying which pin to use. -- **address**: The long 6 4bit address of the remote ZigBee device whose digital output pin you would like to switch. Do not include this variable if you want to switch the local ZigBee device's pins. -- **on_state**: Either `high` (default) or `low`, depicting whether the digital output pin is pulled `high` or `low` when the switch is turned on. diff --git a/source/_components/switch.zoneminder.markdown b/source/_components/switch.zoneminder.markdown deleted file mode 100644 index dd55a07ec9..0000000000 --- a/source/_components/switch.zoneminder.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "ZoneMinder Switch" -description: "How to toggle the function of ZoneMinder monitors in Home Assistant." -date: 2016-10-13 22:57 -sidebar: true -comments: false -sharing: true -footer: true -logo: zoneminder.png -ha_category: Switch -ha_release: 0.31 -ha_iot_class: "Local Polling" ---- - - -The `zoneminder` switch platform allows you to toggle the current function of all cameras attached to your [ZoneMinder](https://www.zoneminder.com) instance. - -

    -You must have the [ZoneMinder component](/components/zoneminder/) configured to use this and if ZoneMinder authentication is enabled the account specified in the component configuration must have "Edit" permission for "System". -

    - -To enable this switch, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -switch: - - platform: zoneminder - command_on: Modect - command_off: Monitor -``` - -Configuration variables: - -- **command_on** (*Required*): The function you want the camera to run when turned on. -- **command_off** (*Required*): The function you want the camera to run when turned off. - - -

    -The default functions installed by ZoneMinder are: None, Monitor, Modect, Record, Mocord, Nodect. -

    diff --git a/source/_components/switch.zwave.markdown b/source/_components/switch.zwave.markdown deleted file mode 100644 index 9525daed35..0000000000 --- a/source/_components/switch.zwave.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Z-Wave Switch" -description: "Instructions on how to setup the Z-Wave switches within Home Assistant." -date: 2015-11-15 13:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Switch -ha_release: pre 0.7 -ha_iot_class: "Local Push" ---- - -To get your Z-Wave switches working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). diff --git a/source/_components/system_log.markdown b/source/_components/system_log.markdown deleted file mode 100644 index ef3ba0f5ed..0000000000 --- a/source/_components/system_log.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: page -title: "System Log" -description: "Summary of errors and warnings in Home Assistant during runtime." -date: 2017-11-11 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other -ha_release: 0.58 ---- - -The `system_log` component stores information about all logged errors and warnings in Home Assistant. All collected information is accessible directly in the frontend, just navigate to the `Info` section under `Developer Tools`. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the number of stored log entries using the parameter `max_entries`. - -This component is automatically loaded by the `frontend` (so no need to do anything if you are using the frontend). If you are not doing so, or if you wish to change a parameter, add the following section to your `configuration.yaml` file: - -```yaml -system_log: - max_entries: MAX_ENTRIES -``` - -{% configuration %} -max_entries: - description: Number of entries to store (older entries are discarded). - required: false - type: int - default: 50 -{% endconfiguration %} - -## {% linkable_title Services %} - -### {% linkable_title Service `clear` %} - -To manually clear the system log, call this service. - -## {% linkable_title Events %} - -Errors and warnings are posted as the event `system_log_event`, so it is possible to write automations that trigger whenever a warning or error occurs. The following information is included in each event: - -| Field | Description | -|------------------------------------------------------------------------------------------| -| `level` | Either `WARNING` or `ERROR` depending on severity. | -| `source` | File that triggered the error, e.g., `core.py` or `media_player/yamaha.py`. | -| `exception` | Full stack trace if available, otherwise empty string. | -| `message` | Descriptive message of the error, e.g., "Error handling request". | -| `timestamp` | Unix timestamp with as a double, e.g., 1517241010.237416. | - -Live examples of these events can be found in the Home Assistant log file or by just looking in the system log. An example could, for instance, look like this: - - - -The message ("Unable to find service..."), source (`core.py`) and level (`WARNING`) can easily be extracted from the image. Exact timestamp and stack trace is shown if the entry is selected. - -## {% linkable_title Examples %} - -Here are some examples using the events posted by `system_log`. - -### {% linkable_title Counting Number of Warnings %} - -This will create a `counter` that increases every time a warning is logged: - -```yaml -counter: - warning_counter: - name: Warnings - icon: mdi:alert - -automation: - - alias: Count warnings - trigger: - platform: event - event_type: system_log_event - event_data: - level: WARNING - action: - service: counter.increment - entity_id: counter.warning_counter -``` - -### {% linkable_title Conditional Messages %} - -This automation will create a persistent notification whenever an error or warning is logged that has the word "service" in the message: - -```yaml -automation: - - alias: Create notifications for "service" errors - trigger: - platform: event - event_type: system_log_event - condition: - condition: template - value_template: {% raw %}'{{ "service" in trigger.event.data.message }}'{% endraw %} - action: - service: persistent_notification.create - data_template: - title: Something bad happened - message: {% raw %}'{{ trigger.event.data.message }}'{% endraw %} -``` diff --git a/source/_components/tado.markdown b/source/_components/tado.markdown deleted file mode 100644 index 34447a66d9..0000000000 --- a/source/_components/tado.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Tado" -description: "Instructions on how to integrate Tado devices with Home Assistant." -date: 2017-03-20 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tado.png -ha_category: Hub -ha_release: 0.41 -ha_iot_class: "Cloud Polling" ---- - - -The `tado` component platform is used as an interface to the [my.tado.com](https://my.tado.com/webapp/#/account/sign-in) website. It adds climate devices for every tado zone and sensors for some additional information of the zones. - -To use your tado thermostats in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -tado: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Configuration variables: - -- **username** (*Required*): Username for my.tado.com. -- **password** (*Required*): Password for my.tado.com. - -The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/webapp/#/account/sign-in), which is used by their website and now by this component. - -It currently supports presenting the current temperature, the setting temperature and the current operation mode. Switching the mode is also supported. If no user is at home anymore, the devices are showing the away-state. Switching to away-mode is not supported. diff --git a/source/_components/tahoma.markdown b/source/_components/tahoma.markdown deleted file mode 100644 index f41f3936cc..0000000000 --- a/source/_components/tahoma.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Tahoma" -description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant." -date: 2017-07-18 12:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: tahoma.png -ha_category: Hub -ha_release: 0.59 -ha_iot_class: "Cloud Polling" ---- - - -The `Tahoma` component platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds covers, scenes and a sun sensor from the Tahoma platform. - -To use your Tahoma devices in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -tahoma: - username: YOUR_USERNAME - password: YOUR_PASSWORD - exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent] -``` - -{% configuration %} -username: - description: Username for tahomalink.com - required: true - type: string -password: - description: Password for tahomalink.com - required: true - type: string -exclude: - description: Excludes devices - required: false - type: list -{% endconfiguration %} diff --git a/source/_components/telegram_bot.broadcast.markdown b/source/_components/telegram_bot.broadcast.markdown deleted file mode 100644 index ee9d403232..0000000000 --- a/source/_components/telegram_bot.broadcast.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -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: Notifications -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 deleted file mode 100644 index 32397d0fbe..0000000000 --- a/source/_components/telegram_bot.markdown +++ /dev/null @@ -1,469 +0,0 @@ ---- -layout: page -title: "Telegram chatbot" -description: "Telegram chatbot support" -date: 2017-04-05 18:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: telegram.png -ha_category: Hub -ha_release: 0.42 -ha_iot_class: "Cloud Push" ---- - -Use Telegram on your mobile or desktop device to send and receive messages or commands to/from your Home Assistant. - -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`, `send_sticker`, `edit_message`, `edit_replymarkup`, `edit_caption` and `answer_callback_query`. - -### {% linkable_title Service `telegram_bot.send_message` %} - -Send a notification. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `message` | no | Message body of the notification. | -| `title` | yes | Optional title for your notification. Will be composed as '%title\n%message'. | -| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | -| `parse_mode` | yes | Parser for the message text: `html` or `markdown`. | -| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | -| `disable_web_page_preview`| yes | True/false for disable link previews for links in the message. | -| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | -| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | - -### {% linkable_title Service `telegram_bot.send_photo` and `telegram_bot.send_sticker` %} - -Send a photo. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `url` | no | Remote path to an image. | -| `file` | no | Local path to an image. | -| `caption` | yes | The title of the image. | -| `username` | yes | Username for a URL which requires HTTP basic authentication. | -| `password` | yes | Password for a URL which requires HTTP basic authentication. | -| `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | -| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | -| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | -| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | -| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | - -### {% linkable_title Service `telegram_bot.send_video` %} - -Send a video. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `url` | no | Remote path to a video. | -| `file` | no | Local path to a video. | -| `caption` | yes | The title of the video. | -| `username` | yes | Username for a URL which requires HTTP basic authentication. | -| `password` | yes | Password for a URL which requires HTTP basic authentication. | -| `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | -| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | -| `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | -| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | -| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | - -### {% linkable_title Service `telegram_bot.send_document` %} - -Send a document. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `url` | no | Remote path to a document. | -| `file` | no | Local path to a document. | -| `caption` | yes | The title of the document. | -| `username` | yes | Username for a URL which requires HTTP basic authentication. | -| `password` | yes | Password for a URL which requires HTTP basic authentication. | -| `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | -| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | -| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | -| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | -| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | - -### {% linkable_title Service `telegram_bot.send_location` %} - -Send a location. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `latitude` | no | The latitude to send. | -| `longitude` | no | The longitude to send. | -| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | -| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | -| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | -| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | - -### {% linkable_title Service `telegram_bot.edit_message` %} - -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 }}`. 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'. | -| `parse_mode` | yes | Parser for the message text: `html` or `markdown`. | -| `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"]]]` | - -### {% linkable_title Service `telegram_bot.edit_caption` %} - -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 }}`. 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. | -| `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_replymarkup` %} - -Edit the inline keyboard 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 }}`. 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"]]]` | - -### {% linkable_title Service `telegram_bot.answer_callback_query` %} - -Respond to a callback query originated by clicking on an online keyboard button. The answer will be displayed to the user as a notification at the top of the chat screen or as an alert. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `message` | no | Unformatted text message body of the notification. | -| `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 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 -notify: - - name: NOTIFIER_NAME - platform: telegram - chat_id: USER_CHAT_ID -``` - -## {% linkable_title Event triggering %} - -A command looks like `/thecommand`, or `/othercommand with some args`. - -When received by Home Assistant it will fire a `telegram_command` event on the event bus with the following `event_data`: - -```yaml -command: "/thecommand" -args: "" -from_first: "" -from_last: "" -user_id: "" -chat_id: "" -chat: "" -``` - -Any other message not starting with `/` will be processed as simple text, firing a `telegram_text` event on the event bus with the following `event_data`: - -```yaml -text: "some text received" -from_first: "" -from_last: "" -user_id: "" -chat_id: "" -chat: "" -``` - -If the message is sent from a [press from an inline button](https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating), for example, a callback query is received, and Home Assistant will fire a `telegram_callback` event with: - -```yaml -data: "" -message: -from_first: "" -from_last: "" -user_id: "" -id: "" -chat_instance: "" -chat_id: "" -``` - -### {% linkable_title Configuration samples %} - -Simple ping pong example. - -```yaml -alias: 'Telegram bot that reply pong to ping' -hide_entity: true -trigger: - platform: event - event_type: telegram_command - event_data: - command: '/ping' -action: - - service: notify.notify - data: - message: 'pong' -``` - -An example that shows keyboard interaction with `notify.telegram` - -```yaml -trigger: - platform: event - event_type: telegram_command - event_data: - command: '/start' -action: - - service: notify.telegram - data: - message: 'commands' - data: - keyboard: - - '/ping, /alarm' - - '/siren' -``` - -and an automation to trigger a related command "/siren". - -```yaml -trigger: - platform: event - event_type: telegram_command - event_data: - command: '/siren' -action: - - service: homeassistant.turn_on - entity_id: switch.vision_zm1601eu5_battery_operated_siren_switch_9_0 - - delay: - seconds: 10 - - service: homeassistant.turn_off - entity_id: switch.vision_zm1601eu5_battery_operated_siren_switch_9_0 -``` - -An example to show the use of event_data in action: - -{% raw %} -```yaml -- alias: 'Kitchen Telegram Speak' - trigger: - platform: event - event_type: telegram_command - event_data: - command: '/speak' - action: - - service: notify.kitchen_echo - data_template: - message: > - Message from {{ trigger.event.data["from_first"] }}. {% for state in trigger.event.data["args"] %} {{ state }} {% endfor %} -``` -{% endraw %} - -### {% linkable_title Sample automations with callback queries and inline keyboards %} - -A quick example to show some of the callback capabilities of inline keyboards with a dumb automation consisting in a simple repeater of normal text that presents an inline keyboard with 3 buttons: 'EDIT', 'NO' and 'REMOVE BUTTON': - -- Pressing 'EDIT' changes the sent message. -- Pressing 'NO' only shows a brief notification (answering the callback query). -- Pressing 'REMOVE BUTTON' changes the inline keyboard removing that button. - -Text repeater: - -{% raw %} -```yaml -- alias: 'Telegram bot that repeats text' - hide_entity: true - trigger: - platform: event - event_type: telegram_text - action: - - service: telegram_bot.send_message - data_template: - title: '*Dumb automation*' - target: '{{ trigger.event.data.user_id }}' - message: 'You said: {{ trigger.event.data.text }}' - disable_notification: true - inline_keyboard: - - "Edit message:/edit_msg, Don't:/do_nothing" - - "Remove this button:/remove button" -``` -{% endraw %} - -Message editor: - -{% raw %} -```yaml -- alias: 'Telegram bot that edits the last sent message' - hide_entity: true - trigger: - platform: event - event_type: telegram_callback - event_data: - data: '/edit_msg' - action: - - service: telegram_bot.answer_callback_query - data_template: - callback_query_id: '{{ trigger.event.data.id }}' - message: 'Editing the message!' - show_alert: true - - service: telegram_bot.edit_message - data_template: - message_id: '{{ trigger.event.data.message.message_id }}' - chat_id: '{{ trigger.event.data.chat_id }}' - title: '*Message edit*' - inline_keyboard: - - "Edit message:/edit_msg, Don't:/do_nothing" - - "Remove this button:/remove button" - message: > - Callback received from {{ trigger.event.data.from_first }}. - Message id: {{ trigger.event.data.message.message_id }}. - Data: {{ trigger.event.data.data }} -``` -{% endraw %} - -Keyboard editor: - -{% raw %} -```yaml -- alias: 'Telegram bot that edits the keyboard' - hide_entity: true - trigger: - platform: event - event_type: telegram_callback - event_data: - data: '/remove button' - action: - - service: telegram_bot.answer_callback_query - data_template: - callback_query_id: '{{ trigger.event.data.id }}' - message: 'Callback received for editing the inline keyboard!' - - service: telegram_bot.edit_replymarkup - data_template: - message_id: 'last' - chat_id: '{{ trigger.event.data.chat_id }}' - inline_keyboard: - - "Edit message:/edit_msg, Don't:/do_nothing" -``` -{% endraw %} - -Only acknowledges the 'NO' answer: - -{% raw %} -```yaml -- alias: 'Telegram bot that simply acknowledges' - hide_entity: true - trigger: - platform: event - event_type: telegram_callback - event_data: - data: '/do_nothing' - action: - - service: telegram_bot.answer_callback_query - data_template: - callback_query_id: '{{ trigger.event.data.id }}' - message: 'OK, you said no!' -``` -{% endraw %} - -For a more complex usage of the `telegram_bot` capabilities, using [AppDaemon](/docs/ecosystem/appdaemon/tutorial/) is advised. - -This is how the previous 4 automations would be through a simple AppDaemon app: - -```python -import appdaemon.appapi as appapi - -class TelegramBotEventListener(appapi.AppDaemon): - """Event listener for Telegram bot events.""" - - def initialize(self): - """Listen to Telegram Bot events of interest.""" - self.listen_event(self.receive_telegram_text, 'telegram_text') - self.listen_event(self.receive_telegram_callback, 'telegram_callback') - - def receive_telegram_text(self, event_id, payload_event, *args): - """Text repeater.""" - assert event_id == 'telegram_text' - user_id = payload_event['user_id'] - msg = 'You said: ``` %s ```' % payload_event['text'] - keyboard = [[("Edit message", "/edit_msg"), - ("Don't", "/do_nothing")], - [("Remove this button", "/remove button")]] - self.call_service('telegram_bot/send_message', - title='*Dumb automation*', - target=user_id, - message=msg, - disable_notification=True, - inline_keyboard=keyboard) - - def receive_telegram_callback(self, event_id, payload_event, *args): - """Event listener for Telegram callback queries.""" - assert event_id == 'telegram_callback' - data_callback = payload_event['data'] - callback_id = payload_event['id'] - chat_id = payload_event['chat_id'] - # keyboard = ["Edit message:/edit_msg, Don't:/do_nothing", - # "Remove this button:/remove button"] - keyboard = [[("Edit message", "/edit_msg"), - ("Don't", "/do_nothing")], - [("Remove this button", "/remove button")]] - - if data_callback == '/edit_msg': # Message editor: - # Answer callback query - self.call_service('telegram_bot/answer_callback_query', - message='Editing the message!', - callback_query_id=callback_id, - show_alert=True) - - # Edit the message origin of the callback query - msg_id = payload_event['message']['message_id'] - user = payload_event['from_first'] - title = '*Message edit*' - msg = 'Callback received from %s. Message id: %s. Data: ``` %s ```' - self.call_service('telegram_bot/edit_message', - chat_id=chat_id, - message_id=msg_id, - title=title, - message=msg % (user, msg_id, data_callback), - inline_keyboard=keyboard) - - elif data_callback == '/remove button': # Keyboard editor: - # Answer callback query - self.call_service('telegram_bot/answer_callback_query', - message='Callback received for editing the ' - 'inline keyboard!', - callback_query_id=callback_id) - - # Edit the keyboard - new_keyboard = keyboard[:1] - self.call_service('telegram_bot/edit_replymarkup', - chat_id=chat_id, - message_id='last', - inline_keyboard=new_keyboard) - - elif data_callback == '/do_nothing': # Only Answer to callback query - self.call_service('telegram_bot/answer_callback_query', - message='OK, you said no!', - callback_query_id=callback_id) -``` diff --git a/source/_components/telegram_bot.polling.markdown b/source/_components/telegram_bot.polling.markdown deleted file mode 100644 index 15c4d26eb0..0000000000 --- a/source/_components/telegram_bot.polling.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Telegram polling" -description: "Telegram polling support" -date: 2017-04-05 18:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: telegram.png -ha_category: Notifications -ha_release: 0.42 ---- - -Telegram chatbot polling implementation. - -One of two bot implementations supported by Telegram. Your Home Assistant does not have to be exposed to the internet. - -To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry - -telegram_bot: - - platform: polling - 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.webhooks.markdown b/source/_components/telegram_bot.webhooks.markdown deleted file mode 100644 index 7821b03c00..0000000000 --- a/source/_components/telegram_bot.webhooks.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "Telegram webhooks" -description: "Telegram webhooks support" -date: 2017-04-05 18:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: telegram.png -ha_category: Notifications -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: - -```yaml -# Example configuration.yaml entry -http: - base_url: # the Home Assistant https url which is exposed to the internet. - -telegram_bot: - - platform: webhooks - api_key: telegram api key - parse_mode: html - allowed_chat_ids: - - 12345 - - 67890 -``` - -Configuration variables: - -- **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'. -- **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). 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: - -```yaml -# Example configuration.yaml entry -http: - base_url: - -telegram_bot: - - platform: webhooks - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - trusted_networks: - - 149.154.167.197/32 - - 149.154.167.198/31 - - 149.154.167.200/29 - - 149.154.167.208/28 - - 149.154.167.224/29 - - 149.154.167.232/31 - allowed_chat_ids: - - 12345 - - 67890 -``` diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown deleted file mode 100644 index 42968880ba..0000000000 --- a/source/_components/tellduslive.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Telldus Live" -description: "Instructions on how to integrate Telldus Live into Home Assistant." -date: 2016-01-17 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus.png -ha_category: Hub -featured: false -ha_release: 0.11 ---- - -The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home. - -

    -If you are upgrading from 0.58 or older, you need to remove all Telldus configuration from your `configuration.yaml` file before continuing. -

    - -Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery]({{site_root}}/components/discovery/) component is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API. - -To manually integrate your Telldus Live with Home Assistant, e.g., if your device is on another network or in another location, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -tellduslive: -``` - -Configuration variables: - -- **host** (*Optional*): Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled. -- **update_interval** (*Optional*): Interval (in seconds) for polling the Telldus Live server (or the local server). - -The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account. diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown deleted file mode 100644 index 4f9e03870d..0000000000 --- a/source/_components/tellstick.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "TellStick" -description: "Instructions on how to integrate your TellStick into Home Assistant." -date: 2015-03-28 13:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: telldus_tellstick.png -ha_category: Hub ---- - - -The `tellstick` component integrates [TellStick](http://www.telldus.se/products/tellstick) devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 MHz. There are a number of vendors (Capidi Elro, Intertechno, Nexa, Proove, Sartano, and Viking) who are selling products that work with TellStick. For more details, please check the TellStick [protocol list](http://developer.telldus.com/wiki/TellStick_conf). - -To get started, add the devices to your `configuration.yaml` file. - -```yaml -# Example configuration.yaml entry -tellstick: -``` - -```yaml -# Example configuration.yaml entry for hass.io with TellStick add-on -tellstick: - host: core-tellstick - port: [50800, 50801] -``` -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 another server or with a hass.io add-on. -- **port** (*Optional*): If needed with host config option. Must be port pair, for example `[50800, 50801]`. - diff --git a/source/_components/tesla.markdown b/source/_components/tesla.markdown deleted file mode 100644 index 8673396fc6..0000000000 --- a/source/_components/tesla.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -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, odometer, and estimated range. - - Device tracker - to track location of your car - - Lock - Door lock. Enables you to control Tesla's door lock - - Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. - - Switch - Charger and max range switch. Allow you to start/stop charging and set max range charging. - -To use Tesla in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -tesla: - username: YOUR_E_MAIL_ADDRESS - password: YOUR_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 deleted file mode 100644 index 328022f6cc..0000000000 --- a/source/_components/thethingsnetwork.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -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`](/components/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 deleted file mode 100644 index 2336a59747..0000000000 --- a/source/_components/thingspeak.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "ThingSpeak" -description: "Record one entity in ThingSpeak" -date: 2016-10-24 15:45 -sidebar: true -comments: false -sharing: true -footer: true -logo: thingspeak.png -ha_category: "History" -ha_release: 0.32 ---- - -The `thingspeak` components makes Home Assistant communicate with the [ThingSpeak API](https://thingspeak.com/). -For now, it records exactly one entity at once, which is great for testing purposes. For long-time storage you should rely on the [InfluxDB component](/components/influxdb/). - -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 ThingSpeak component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -thingspeak: - api_key: MY_API_KEY - id: 1337 - whitelist: sensor.yr_temperature -``` - -Configuration variables: - -- **api_key** (*Required*): Your ThingSpeak Channel Write API key. -- **id** (*Required*): The ID of your desired ThingSpeak channel. -- **whitelist** (*Required*): The name of the entity whose states should be sent to the channel. - diff --git a/source/_components/timer.markdown b/source/_components/timer.markdown deleted file mode 100644 index eb6db877f3..0000000000 --- a/source/_components/timer.markdown +++ /dev/null @@ -1,162 +0,0 @@ ---- -layout: page -title: "Timer" -description: "Instructions on 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 canceled the corresponding events are fired. This allows you to differentiate if a timer has switched from `active` to `idle` because the given duration has elapsed or it has been canceled. To control timers in your automations you can use the services mentioned below. When calling the `start` service on a timer that is already running, it resets the duration it will need to finish and restart the timer without triggering any events. This for example makes it easy to create timed lights that get triggered by motion. - -

    -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: - laundry: - 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 canceled | -| 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 canceled. - -| 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" -} -``` - -## {% linkable_title Examples %} - -Set a timer called `test` to a duration of 30 seconds. - -```yaml -# Example configuration.yaml entry -timer: - test: - duration: '00:00:30' -``` - -### {% linkable_title Control a timer from the frontend %} - -```yaml -# Example automations.yaml entry -- alias: Timerswitch - id: 'Timerstart' - # Timer is started when the switch pumprun is set to on. - trigger: - - platform: state - entity_id: switch.pumprun - to: 'on' - action: - - service: timer.start - entity_id: timer.test - -# When timer is stopped, the time run out, another message is sent -- alias: Timerstop - id: 'Timerstop' - trigger: - - platform: event - event_type: timer.finished - event_data: - entity_id: timer.test - action: - - service: notify.nma - data: - message: "Timer stop" -``` - -### {% linkable_title Control a timer from the frontend %} - -With the [`script`](/components/script/) component you would be able to control a timer (see above for a `timer` configuration sample) manually. - -```yaml -script: - start_timer: - alias: Start timer - sequence: - - service: timer.start - entity_id: timer.test - pause_timer: - alias: Pause timer - sequence: - - service: timer.pause - entity_id: timer.test - cancel_timer: - alias: Cancel timer - sequence: - - service: timer.cancel - entity_id: timer.test - finish_timer: - alias: Finish timer - sequence: - - service: timer.finish - entity_id: timer.test -``` - diff --git a/source/_components/toon.markdown b/source/_components/toon.markdown deleted file mode 100644 index e516db9ce8..0000000000 --- a/source/_components/toon.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Toon" -description: "Instructions on 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 deleted file mode 100644 index 0f85a2a644..0000000000 --- a/source/_components/tradfri.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "IKEA Trådfri (Tradfri)" -description: "Access and control your ZigBee-based IKEA Trådfri (Tradfri) devices." -date: 2017-04-12 22.04 -sidebar: true -featured: true -comments: false -sharing: true -footer: true -logo: ikea.svg -ha_category: Hub -ha_iot_class: "Local Polling" -ha_release: 0.43 ---- - -The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network, if `discovery:` is present in your `configuration.yaml` file. - -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. Don't forget to assign a permanent IP to your Trådfri gateway. -

    - -

    - The Python version 3.4.4 or greater is required for this component. The component will not initialize without this and will report a `Could not install all requirements` error in the logs. -

    - -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 -``` - -Configuration variables: - - - **host** (*Required*): The IP address or hostname of your Trådfri gateway. - - **allow_tradfri_groups** (*Optional*): Set this to `false` 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. -

    - -

    - -Please make sure you have `autoconf` installed (`apt-get install autoconf`) if you want to use this component. Also, installing some dependencies might take considerable time (>1h) on slow devices. You might have to use `sudo` when installing `autoconf`. - -

    diff --git a/source/_components/tts.amazon_polly.markdown b/source/_components/tts.amazon_polly.markdown deleted file mode 100644 index 8be1fdc0a5..0000000000 --- a/source/_components/tts.amazon_polly.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: page -title: "Amazon Polly" -description: "Instructions on how to setup Amazon Polly with Home Assistant." -date: 2017-01-28 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: polly.png -ha_category: Text-to-speech -ha_release: 0.37 ---- - -The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output. -Polly is a paid service via Amazon Web Services. There is a [free tier](https://aws.amazon.com/polly/pricing/) for the first 12 months and then a charge per million characters afterwards. - -## {% linkable_title Configuration %} - -To get started, add the following lines to your `configuration.yaml` (example for Amazon Polly): - -```yaml -# Example configuration.yaml entry -tts: - - platform: amazon_polly - aws_access_key_id: AWS_ACCESS_KEY_ID - aws_secret_access_key: AWS_SECRET_ACCESS_KEY -``` - -{% configuration %} -aws_access_key_id: - description: "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`." - required: true - type: string -aws_secret_access_key: - description: "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`." - required: true - type: string -profile_name: - description: 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. - required: false - type: string -region_name: - description: "The region identifier to connect to. The default is `us-east-1`. See the [AWS Regions and Endpoints Reference](https://docs.aws.amazon.com/general/latest/gr/rande.html#pol_region) for available regions." - required: false - type: string or list -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 -text_type: - description: "Specify wherever to use text (default) or ssml markup by default." - required: false - type: string - default: text -voice: - description: "Voice name to be used. See the [Amazon Documentation](http://docs.aws.amazon.com/polly/latest/dg/voicelist.html) for available voices." - required: false - type: string -output_format: - description: "Override the default output format, e.g., `mp3`, `ogg_vorbis` or `pcm`." - required: false - type: string - default: mp3 -sample_rate: - description: "Override the default sample rate, defaults to 22050 for MP3 and Ogg Vorbis, 16000 for pcm." - required: false - type: string -{% endconfiguration %} - - -## {% linkable_title Usage %} - -Say to all `media_player` device entities: - -```yaml -- service: tts.amazon_polly_say - data_template: - message: 'Hello from Amazon Polly' -``` - -or - -```yaml -- service: tts.amazon_polly_say - data_template: - message: > - - Hello from Amazon Polly - -``` - -Say to the `media_player.living_room` device entity: - -```yaml -- service: tts.amazon_polly_say - data_template: - entity_id: media_player.living_room - message: > - - Hello from Amazon Polly - -``` - -Say with break: - -```yaml -- service: tts.amazon_polly_say - data_template: - message: > - - Hello from - - Amazon Polly - -``` diff --git a/source/_components/tts.baidu.markdown b/source/_components/tts.baidu.markdown deleted file mode 100644 index 47ba6f0ad8..0000000000 --- a/source/_components/tts.baidu.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "Baidu Text-to-Speech" -description: "Instructions on how to setup Baidu TTS with Home Assistant." -date: 2017-11-21 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: baiducloud.png -ha_category: Text-to-speech -ha_release: 0.59 ---- - -The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices. - -To get started, add the following lines to your `configuration.yaml`: - -```yaml -#Example configuration.yaml entry -tts: - - platform: baidu - app_id: YOUR_APPID - api_key: YOUR_APIKEY - secret_key: YOUR_SECRETKEY -``` - -{% configuration %} -app_id: - description: The App ID for the use this service, must be already registered on Baidu. - required: true - type: string -api_key: - description: The API key from Baidu. - required: true - type: string -secret_key: - description: The secret key from Baidu. - required: true - type: string -speed: - description: Audio speed from 0 to 9. - required: false - type: int - default: 5 -pitch: - description: Audio pitch from 0 to 9. - required: false - type: int - default: 5 -volume: - description: Audio volume from 0 to 15. - required: false - type: int - default: 5 -person: - description: Voice type. You choose one from 0, 1, 3 or 4. - required: false - type: int - default: 0 -{% endconfiguration %} - diff --git a/source/_components/tts.google.markdown b/source/_components/tts.google.markdown deleted file mode 100644 index 1b0468c87d..0000000000 --- a/source/_components/tts.google.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Google Text-to-Speech" -description: "Instructions on how to setup Google Text-to-Speech with Home Assistant." -date: 2016-12-13 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: google.png -ha_category: Text-to-speech -ha_release: 0.35 ---- - -The `google` text-to-speech platform uses [Google Text-to-Speech engine](https://console.developers.google.com/apis/api/speech.googleapis.com/overview) Text-to-Speech engine to read a text with natural sounding voices. - -To enable text-to-speech with Google, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -tts: - - platform: google -``` - -Configuration variables: - -- **language** (*Optional*): The language to use. Defaults to `en`. - - [Complete list of supported languages](https://cloud.google.com/speech/docs/languages). - -A full configuration sample: - -```yaml -# Example configuration.yaml entry -tts: - - platform: google - language: 'de' -``` - -If you are using SSL certificate or Docker, you may need to add the `base_url` configuration variable to your `http` component as follows: - -```yaml -#Example configuration.yaml entry -http: - base_url: example.duckdns.org -``` - -The `base_url` configuration variable was added in 0.35.1, so make sure your Home Assistant version is **0.35.1 or above.** diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown deleted file mode 100644 index 5fc0d8de47..0000000000 --- a/source/_components/tts.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: page -title: "Text-to-Speech (TTS)" -description: "Instructions on how to setup Text-to-Speech (TTS) with Home Assistant." -date: 2016-12-13 07:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.35 ---- - -Text-to-speech (TTS) enables Home Assistant to speak to you. - -## {% linkable_title Configuring a `tts` platform %} - -To get started, add the following lines to your `configuration.yaml` (example for google): - -```yaml -# Example configuration.yaml entry for google tts service -tts: - - platform: google -``` - -

    -Depending on your setup, you might need to set a base URL (`base_url`) inside the [http component](/components/http/). -

    - -The following optional parameters can be used with any platform. However, the TTS component will only look for global settings under the configuration of the first configured platform: - -| Parameter | Default | Description | -|---------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `cache` | True | Allow TTS to cache voice file to local storage. | -| `cache_dir` | tts | Folder name or path to a folder for caching files. | -| `time_memory` | 300 | Time to hold the voice data inside memory for fast play on a media player. Minimum is 60 s and the maximum 57600 s (16 hours). | - -The extended example from above would look like the following sample: - -```yaml -# Example configuration.yaml entry for google tts service -tts: - - platform: google - cache: true - cache_dir: /tmp/tts - time_memory: 300 -``` - -## {% linkable_title Service say %} - -The `say` service support `language` and on some platforms also `options` for set, i.e., *voice, motion, speed, etc*. The text for speech is set with `message`. - -Say to all `media_player` device entities: - -```yaml -# Replace google_say with _say when you use a different platform. -service: tts.google_say -data: - message: 'May the Force be with you.' -``` -Say to the `media_player.floor` device entity: - -```yaml -service: tts.google_say -entity_id: media_player.floor -data: - message: 'May the Force be with you.' -``` - -Say to the `media_player.floor` device entity in French: - -```yaml -service: tts.google_say -entity_id: media_player.floor -data: - message: 'Que la force soit avec toi.' - language: 'fr' -``` - -With a template: - -```yaml -service: tts.google_say -data_template: - message: "Temperature is {% raw %}{{states('sensor.temperature')}}{% endraw %}." - cache: false -``` - -## {% linkable_title Cache %} - -The component has two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. - -## {% linkable_title REST Api %} - -#### {% linkable_title POST /api/tts_get_url %} - -Returns an URL to the generated TTS file. Platform and message are required. - -```json -{ - "plaform": "amazon_polly", - "message": "I am speaking now" -} -``` - -The return code is 200 if the file is generated. The message body will contain a JSON object with the URL. - -```json -{ - "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_demo.mp3" -} -``` - -Sample `curl` command: - -```bash -$ curl -X POST -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" \ - -d '{"message": "I am speaking now", "platform": "amazon_polly"}' \ - http://localhost:8123/api/tts_get_url -``` diff --git a/source/_components/tts.marytts.markdown b/source/_components/tts.marytts.markdown deleted file mode 100644 index 7b13da9906..0000000000 --- a/source/_components/tts.marytts.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "MaryTTS" -description: "Instructions on how to setup MaryTTS with Home Assistant." -date: 2017-04-08 16:49 -sidebar: true -comments: false -sharing: true -footer: true -logo: marytts.png -ha_category: Text-to-speech -ha_release: 0.43 ---- - -The `marytts` text-to-speech platform uses [MaryTTS](http://mary.dfki.de/) Text-to-Speech engine to read a text with natural sounding voices. - -To enable text-to-speech with MaryTTS, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -tts: - - platform: marytts - host: 'localhost' - port: 59125 -``` - -Configuration variables: - -- **host** (*Optional*): MaryTTS server hostname or IP address. Default is `localhost`. -- **port** (*Optional*): MaryTTS server port. Default is 59125. -- **codec** (*Optional*): Audio codec. Default is `wav`. Supported are `aiff`, `au`, `wav`. -- **voice** (*Optional*): Speaker voice. Default is `cmu-slt-hsmm`. -- **language** (*Optional*): Language to use. Default is `en-US`. Supports 'de', 'en-GB', 'en-US', 'fr', 'it', 'lb', 'ru', 'sv', 'te', 'tr'. - -See [documentation](http://mary.dfki.de/documentation/index.html) for details. - -A full configuration sample: - -```yaml -# Example configuration.yaml entry -tts: - - platform: marytts - host: 'localhost' - port: 59125 - codec: 'wav' - voice: 'cmu-slt-hsmm' - language: 'en-US' -``` diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown deleted file mode 100644 index bb68917616..0000000000 --- a/source/_components/tts.microsoft.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Microsoft Text-to-Speech" -description: "Instructions on how to setup Microsoft Text-to-Speech with Home Assistant." -date: 2017-11-07 12: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. Note that if you set the language to anything other than the default of `en-us`, you will need to specify a matching voice type as well. -- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female`. -- **type** (*Optional*): The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS`. -- **rate** (*Optional*): Change the rate of speaking in percentage. Example values: `25`, `50`. Defaults to `0` (no change). -- **volume** (*Optional*): Change the volume of the output in percentage. Example values: `-20`, `70`. Defaults to `0` (no change). -- **pitch** (*Optional*): Change the pitch of the output. Example values: `high`. Defaults to `default` (no change). -- **contour** (*Optional*): Change the contour of the output in percentages. This overrides the pitch setting. See the [W3 SSML specification](http://www.w3.org/TR/speech-synthesis/#pitch_contour) for what it does. Example value: `(0,0) (100,100)`. - -A full configuration sample including optional configuration variables: - -```yaml -# Example configuration.yaml entry -tts: - - platform: microsoft - api_key: XXXXXXXXX - language: en-gb - gender: Male - type: George, Apollo - rate: 20 - volume: -50 - pitch: high - contour: (0, 0) (100, 100) -``` diff --git a/source/_components/tts.picotts.markdown b/source/_components/tts.picotts.markdown deleted file mode 100644 index 5525c0b8ec..0000000000 --- a/source/_components/tts.picotts.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Pico Text-to-Speech" -description: "Instructions on how to setup Pico Text-to-Speech with Home Assistant." -date: 2017-01-03 16:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Text-to-speech -ha_release: 0.36 ---- - -The `picotts` text-to-speech platform uses offline pico Text-to-Speech engine to read a text with natural sounding voices. -This requires to install the pico tts library on the system, typically on debian just do `sudo apt-get install libttspico-utils` -On some raspbian release, this package is missing but you can just copy the arm deb package from debian. - -To enable text-to-speech with Pico, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -tts: - - platform: picotts -``` - -Configuration variables: - -- **language** (*Optional*): The language to use. Defaults to `en-US`. -Supported languages : 'en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT' - -A full configuration sample: - -```yaml -# Example configuration.yaml entry -tts: - - platform: picotts - language: 'fr-FR' -``` diff --git a/source/_components/tts.voicerss.markdown b/source/_components/tts.voicerss.markdown deleted file mode 100644 index 99e6b5d685..0000000000 --- a/source/_components/tts.voicerss.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "VoiceRSS" -description: "Instructions on how to setup VoiceRSS TTS with Home Assistant." -date: 2016-12-13 07:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: voicerss.png -ha_category: Text-to-speech -ha_release: 0.35 ---- - -The `voicerss` text-to-speech platform uses [VoiceRSS](http://www.voicerss.org/) Text-to-Speech engine to read a text with natural sounding voices. - -To enable text-to-speech with VoiceRSS, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -tts: - - platform: voicerss - api_key: 'XXXXXXXX' -``` - -Configuration variables: - -- **api_key** (*Required*): API Key for use this service. -- **language** (*Optional*): The language to use. Defaults to `en-us`. -- **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. - -A full configuration sample: - -```yaml -# Example configuration.yaml entry -tts: - - platform: voicerss - api_key: 'XXXXX' - language: 'de-de' - codec: mp3 - format: '8khz_8bit_mono' -``` - -Please note, some media_players require a certain format. For example the Sonos requires a format of '44khz_16bit_stereo' diff --git a/source/_components/tts.yandextts.markdown b/source/_components/tts.yandextts.markdown deleted file mode 100644 index af30eacea7..0000000000 --- a/source/_components/tts.yandextts.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Yandex TTS" -description: "Instructions on how to setup Yandex SpeechKit TTS with Home Assistant." -date: 2017-01-17 03:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: yandex.png -ha_category: Text-to-speech -ha_release: 0.36 ---- - -The `yandextts` text-to-speech platform uses [Yandex SpeechKit](https://tech.yandex.com/speechkit/) Text-to-Speech engine to read a text with natural sounding voices. - -To enable text-to-speech with Yandex SpeechKit, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -tts: - - platform: yandextts - api_key: 'XXXXXXXX' -``` - -Configuration variables: - -- **api_key** (*Required*): API Key for use this service. -- **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` - -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: - -```yaml -# Example configuration.yaml entry -tts: - - platform: yandextts - api_key: 'XXXXX' - language: 'ru-RU' - codec: mp3 - voice: oksana - emotion: evil - speed: 2 -``` diff --git a/source/_components/twilio.markdown b/source/_components/twilio.markdown deleted file mode 100644 index ed3752a9e2..0000000000 --- a/source/_components/twilio.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Twilio" -description: "Instructions on how to add Twilio notifications to Home Assistant." -date: 2016-05-14 14:14 -sidebar: true -comments: false -sharing: true -footer: true -logo: twilio.png -ha_category: Hub -ha_release: "0.40" ---- - -The `twilio` component enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). - -Free trial account is available at [Twilio](https://twilio.com) website providing free calls to verified phone numbers. -Calls are limited to 10 minutes and will play a short trial message before your message runs. Upgraded accounts have no limitation. - -To use this notification component in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -twilio: - account_sid: ACCOUNT_SID_FROM_TWILIO - auth_token: AUTH_TOKEN_FROM_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 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](/components/notify.twilio_sms/) and [twilio Phone](/components/notify.twilio_call) components to utilize the notification functionality. diff --git a/source/_components/upcloud.markdown b/source/_components/upcloud.markdown deleted file mode 100644 index dcb15e41fc..0000000000 --- a/source/_components/upcloud.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: UpCloud -description: Instructions on how to integrate UpCloud within Home Assistant. -date: 2018-01-28 20:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Hub -ha_release: 0.65 -logo: upcloud.png -ha_iot_class: Cloud Polling ---- - - -The `upcloud` component allows you to access the information about your [UpCloud](https://www.upcloud.com/) servers from Home Assistant. - -Set up your API user credentials in your [UpCloud control panel](https://my.upcloud.com/). - -To integrate your UpCloud servers with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -upcloud: - username: YOUR_API_USERNAME - password: YOUR_API_PASSWORD -``` - -{% configuration %} -username: - description: Your UpCloud API username. - required: true - type: string -password: - description: Your UpCloud API user password. - required: true - type: string -scan_interval: - description: Update interval in seconds. - required: false - type: int - default: 60 -{% endconfiguration %} diff --git a/source/_components/updater.markdown b/source/_components/updater.markdown deleted file mode 100644 index b87d554bb9..0000000000 --- a/source/_components/updater.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Updater" -description: "Detecting when Home Assistant updates are available." -date: 2015-11-15 20:40 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Other ---- - -The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. As [Hass.io](/hassio/) has its own schedule for release it doesn't make sense to use this component on Hass.io. - -The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/updater.py#L91). For further information about the Updater's data, please check the [detailed overview](/docs/backend/updater/). - -To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -updater: -``` - -If you choose not to share any information when checking for updates, you can add `reporting: False`. - -It is possible to report the components that you are using to the Home Assistant developers. This will help them focus on improving the popular ones. To enable this option, you have to add `include_used_components: True`. - -```json -"components": [ - "apcupsd", - "api", - "automation", - "binary_sensor", - "binary_sensor.zwave", - "camera", - "camera.uvc", - "config", - "config.core", - ... -] -``` - -### {% linkable_title Notification %} - -For an added bonus, an automation component can be created to send a message with a notifier when that state of this component's entity changes. - -```yaml -# Example configuration.yaml entry -automation: - alias: 'Update Available Notifications' - trigger: - platform: state - entity_id: updater.updater - action: - service: notify.notify - data: - message: 'Update for Home Assistant is available.' -``` - diff --git a/source/_components/upnp.markdown b/source/_components/upnp.markdown deleted file mode 100644 index fb538ef183..0000000000 --- a/source/_components/upnp.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "UPnP" -description: "Internet Gateway Device (IGD) Protocol for Home Assistant." -date: 2016-04-10 19:16 -sidebar: true -comments: false -sharing: true -footer: true -logo: upnp.png -ha_category: "Other" -ha_release: 0.18 ---- - -The `upnp` component enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the Internet Gateway Device (IGD) Protocol if enabled on your router. - -The IGD automatically creates port forwarding mappings on your router for Home Assistant, exposing your installation to the internet. The mapping will never automatically expire. Upon stopping Home Assistant, the mapping will be removed from your router. - -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 with custom external portal -upnp: - ports: - hass: 8000 - 8080: 8080 -``` - -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 deleted file mode 100644 index 3a7c9a06ab..0000000000 --- a/source/_components/usps.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -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. - -## Prerequisites - -This component requires that a headless-capable web browser is installed on your system - either PhantomJS or Google Chrome. Preferably use Chrome if your operating system supports it, since PhantomJS is deprecated. - -

    - If you are using a Raspberry Pi, you must use PhantomJS. -

    - -### PhantomJS - -Install the latest version of [PhantomJS]( http://phantomjs.org/download.html). Ensure the executable is on your `PATH`. `phantomjs --version` should work and report the correct version. This is the default option and requires no further configuration. - -

    - Don't use apt-get to install PhantomJS. This version is not compatible. -

    - -If you use the PhantomJS option, specify `driver: phantomjs` in your `usps` configuration. - - -### Chrome - -Install Chrome 59 or greater (preferably the most recent). Install the latest [Chromedriver](https://sites.google.com/a/chromium.org/chromedriver/downloads). Ensure both executables are on your `PATH`. `google-chrome --version` and `chromedriver --version` should work and report the correct version. - -OS-specific instructions: -- [Ubuntu 16](https://gist.github.com/ziadoz/3e8ab7e944d02fe872c3454d17af31a5) (Selenium server portion *not* necessary) -- [RHEL/Centos 7](https://stackoverflow.com/a/46686621) - -If you use the Chrome option, specify `driver: chrome` in your `usps` configuration. - -## Configuration - -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. -- **driver** (*Required*): Specify if you're using `phantomjs` or `chrome`. -- **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 deleted file mode 100644 index b482899130..0000000000 --- a/source/_components/vacuum.dyson.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Dyson 360 Eye" -description: "Instructions on 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 deleted file mode 100644 index c626a39934..0000000000 --- a/source/_components/vacuum.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: page -title: "Vacuum cleaner robots" -description: "Instructions on 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_miio/). - -```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 deleted file mode 100644 index 1777c7cd89..0000000000 --- a/source/_components/vacuum.mqtt.markdown +++ /dev/null @@ -1,234 +0,0 @@ ---- -layout: page -title: "MQTT Vacuum" -description: "Instructions on 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' -``` - -{% configuration %} -name: - description: The name of the vacuum. - required: false - type: string - default: MQTT Vacuum -supported_features: - description: "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`)." - required: false - type: string list - default: "`turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" -command_topic: - description: The MQTT topic to publish commands to control the vacuum. - required: false - type: string -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -payload_turn_on: - description: "The payload to send to the `command_topic` to begin the cleaning cycle." - required: false - type: string - default: turn_on -payload_turn_off: - description: "The payload to send to the `command_topic` to turn the vacuum off." - required: false - type: string - default: turn_off -payload_return_to_base: - description: The payload to send to the `command_topic` to tell the vacuum to return to base. - required: false - type: string - default: return_to_base -payload_stop: - description: The payload to send to the `command_topic` to stop the vacuum. - required: false - type: string - default: stop -payload_clean_spot: - description: The payload to send to the `command_topic` to begin a spot cleaning cycle. - required: false - type: string - default: clean_spot -payload_locate: - description: The payload to send to the `command_topic` to locate the vacuum (typically plays a song). - required: false - type: string - default: locate -payload_start_pause: - description: The payload to send to the `command_topic` to start or pause the vacuum. - required: false - type: string - default: start_pause -battery_level_topic: - description: The MQTT topic subscribed to receive battery level values from the vacuum. - required: false - type: string -battery_level_template: - description: "Defines a [template](/topics/templating/) to define the battery level of the vacuum." - required: false - type: string -charging_topic: - description: The MQTT topic subscribed to receive charging state values from the vacuum. - required: false - type: string -charging_template: - description: "Defines a [template](/topics/templating/) to define the charging state of the vacuum." - required: false - type: string -cleaning_topic: - description: The MQTT topic subscribed to receive cleaning state values from the vacuum. - required: false - type: string -cleaning_template: - description: "Defines a [template](/topics/templating/) to define the cleaning state of the vacuum." - required: false - type: string -docked_topic: - description: The MQTT topic subscribed to receive docked state values from the vacuum. - required: false - type: string -docked_template: - description: "Defines a [template](/topics/templating/) to define the docked state of the vacuum." - required: false - type: string -fan_speed_topic: - description: The MQTT topic subscribed to receive fan speed values from the vacuum. - required: false - type: string -fan_speed_template: - description: "Defines a [template](/topics/templating/) to define the fan speed of the vacuum." - required: false - type: string -set_fan_speed_topic: - description: The MQTT topic to publish commands to control the vacuum's fan speed. - required: false - type: string -fan_speed_list: - description: List of possible fan speeds for the vacuum. - required: false - type: string list -send_command_topic: - description: The MQTT topic to publish custom commands to the vacuum. - required: false - type: string -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -{% endconfiguration %} - -### {% 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 deleted file mode 100644 index b670457369..0000000000 --- a/source/_components/vacuum.neato.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Neato Robotics Vacuum" -description: "Instructions on 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 deleted file mode 100644 index bf28b11035..0000000000 --- a/source/_components/vacuum.roomba.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "iRobot Roomba" -description: "Instructions on 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 deleted file mode 100644 index 9fa8cbe3da..0000000000 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ /dev/null @@ -1,251 +0,0 @@ ---- -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 milliseconds that the robot should move for | - -### {% linkable_title Service `vacuum.xiaomi_remote_control_move_step` %} - -Enter remote control mode, make one move, stop, and exit remote control mode. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific robot; default targets all | -| `velocity` | no | Speed: between -0.29 and 0.29. | -| `rotation` | no | Rotation: between -179 degrees and 179 degrees. | -| `duration` | no | The number of milliseconds that the robot should move for | - -## {% linkable_title Attributes %} - -In addition to [all of the attributes provided by the `vacuum` component](/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 %} - -

    -As per [python-miio issue 185](https://github.com/rytilahti/python-miio/issues/185) the Mi-Home app no longer stores the token within the database (it's retrieved from Xiaomi servers from version 5.0.31+). Currently the only known fix is to uninstall, then install a downgraded version of the apk. Apkmirror is a trusted source for older versions of the app. [Mi-Home version 5.0.0](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-0-release/) is confirmed as working for the following Android methods. - -This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Mi Robot 2 (Roborock) Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained -easily via a hidden menu item at the Mi-Home app or using the `miio` command line tool. -

    - -#### {% linkable_title Miio command line tool %} - -You can install the command line tool with: - -```bash -$ npm install -g miio -``` - -Discovering devices on current network - -```bash -$ miio discover -``` - -This will list devices that are connected to the same network as your computer. Let it run for a while so it has a chance to reach all devices, as it might take a minute or two for all devices to answer. - -The commands outputs each device on this format: - -```text -Device ID: 48765421 -Model info: zhimi.airpurifier.m1 -Address: 192.168.100.9 -Token: token-as-hex-here via auto-token -Support: At least basic -``` - -The information output is: - -* __Device ID__ - the unique identifier of the device, does not change if the device is reset. -* __Model ID__ - the model id if it could be determined, this indicates what type of device it is -* __Address__ - the IP that the device has on the network -* __Token__ - the token of the device or ??? if it could not be automatically determined - -#### {% linkable_title Windows and Android %} - -To fetch the token follow these instructions depending on your mobile phone platform. - -1. Configure the robot with the Mi-Home app. -2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases). -3. Enable developer mode and USB debugging on the Android phone and plug it into the computer. -4. Change the MiToolKit language to English if you need to. -5. Click "Extract Token" -6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. -8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. - -#### {% linkable_title Linux and Android (not rooted) %} - -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. - -Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` 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 plug the Android phone into the computer. -3. Get ADB e.g., `apt-get install android-tools-adb` or `apt-get install adb` -4. `adb devices` should list your device. Consult ADB manual if necessary. -5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone). Some devices may required single quotes in the command `adb backup '-noapk com.xiaomi.smarthome -f backup.ab'` -6. Download the 'ADB Backup Extractor' from [here](https://sourceforge.net/projects/adbextractor/files/latest/download) -7. Extract the data from the backup: `java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar` (enter the password, if prompted) -8. Untar the unpacked data: `tar -xvf unpacked.tar` -9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";'` returns the token for your Xiaomi vacuum bot. - - -#### {% 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-miio` 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` (for those using Magisk based root the previous command won't work. After entering a shell, type `su` to enter the root shell) -7. `echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db` returns a list of all registered devices including IP address and token. - -#### {% 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 LIKE "%Vacuum%"` -12. Copy the returned 32-digit hexadecimal string to your clipboard. -13. Open `Terminal` and execute this command: `echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000` -14. Use the resulting string as your token. diff --git a/source/_components/velbus.markdown b/source/_components/velbus.markdown deleted file mode 100644 index 0f8f3abdea..0000000000 --- a/source/_components/velbus.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -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 deleted file mode 100644 index f73ddfab26..0000000000 --- a/source/_components/velux.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -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 deleted file mode 100644 index 1dfa965fb4..0000000000 --- a/source/_components/vera.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Vera" -description: "Instructions on how to setup Vera Z-Wave hubs and configure devices within Home Assistant." -date: 2015-03-23 20:04 -sidebar: true -comments: false -sharing: true -footer: true -logo: vera.png -ha_category: Hub -ha_release: pre 0.7 ---- - -The [Vera](http://getvera.com) hub is a controller mainly connecting to Z-Wave devices. - -Switches, Lights (inc Dimmers), Locks, Sensors, Binary sensors, and Scenes are supported - and will be automatically added when HA connects to your Vera controller. - -To use Vera devices in your installation, add the following to your configuration.yaml file using the IP and port number of your Vera controller: - -```yaml -vera: - vera_controller_url: http://192.168.1.161:3480/ -``` - -Configuration variables: - -- **vera_controller_url** (*Required*): The URL for your Vera device. - -

    - It is recommended to assign a static IP address to your Vera Controller. This ensures that it won't change IP addresses, so you won't have to change the `vera_controller_url` if it reboots and comes up with a different IP address. See your router's manual for details on how to set this up. If you need the MAC address of your Vera, check the label on the bottom. -

    - -### {% 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. - -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). - -```yaml -vera: - vera_controller_url: http://192.168.1.161:3480/ - # Optional to exclude devices - this is a list of vera device ids - exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99] - # Optional to import switches as lights - this is a list of vera device ids - lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87] -``` - -### {% 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, and you'll find the entity id on the left. diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown deleted file mode 100644 index 7eac9bad58..0000000000 --- a/source/_components/verisure.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Verisure" -description: "Instructions on how to setup Verisure devices within Home Assistant." -date: 2015-08-17 20:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: verisure.png -ha_category: Hub -ha_release: pre 0.7 -ha_iot_class: "Cloud Polling" ---- - -Home Assistant has support to integrate your [Verisure](https://www.verisure.com/) devices. - -We support: - - * [Alarm](/components/alarm_control_panel.verisure/) - * [Smartplugs](/components/switch.verisure/) - * Reading from thermometers and hygrometers integrated in various [devices](/components/sensor.verisure/) - * Mouse Detector - * [Locks](/components/lock.verisure/) - * [Door & Window](/components/binary_sensor.verisure/) - -To integrate Verisure with Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -verisure: - username: USERNAME - password: PASSWORD -``` - -Configuration variables: - -- **username** (*Required*): The username to Verisure mypages. -- **password** (*Required*): The password to Verisure mypages. -- **alarm** (*Optional*): Set to 1 to show alarm, 0 to disable. Default 1. -- **hygrometers** (*Optional*): Set to 1 to show hygrometers, 0 to disable. Default 1. -- **smartplugs** (*Optional*): Set to 1 to show smartplugs, 0 to disable. Default 1. -- **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. -- **giid** (*Optional*): The GIID of your installation (If you have more then one alarm system). To find the GIID for your systems run 'python verisure.py EMAIL PASSWORD installations' diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown deleted file mode 100644 index 6482d372cc..0000000000 --- a/source/_components/volvooncall.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Volvo On Call" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." -date: 2016-10-02 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: volvo.png -ha_category: Hub -ha_release: 0.39 -ha_iot_class: "Cloud Polling" ---- - - -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: - -```yaml -# Example configuration.yaml entry -volvooncall: - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - -Users registered with Volvo in North America or China will need to specify a region: - -```yaml -# North America -volvooncall: - username: YOUR_USERNAME - password: YOUR_PASSWORD - region: na -``` - -or - -```yaml -# China -volvooncall: - username: YOUR_USERNAME - password: YOUR_PASSWORD - region: cn -``` - -A more advanced example for setting the vehicle name and selecting what resources to display: - -```yaml -# Example configuration.yaml entry -volvooncall: - username: YOUR_USERNAME - password: YOUR_PASSWORD - name: - abc123: 'Batmobile' - resources: - - doors - - lock - - heater -``` - -Configuration variables: - -- **username** (*Required*): The username associated with your Volvo On Call account. -- **password** (*Required*): The password for your given Volvo On Call account. -- **region** (*Optional*): The region where the Volvo is registered. Needs to be set for users in North America or China. -- **service_url** (*Optional*): The service URL to use for Volvo On Call. Normally not necessary to specify. -- **name** (*Optional*): Make it possible to provide a name for the vehicles. -- **resources** (*Optional*): A list of resources to display (defaults to all available). -- **scandinavian_miles** (*Optional*): If set to yes, Scandinavian miles ("mil") are used for distances and fuel range (defaults to no). - diff --git a/source/_components/vultr.markdown b/source/_components/vultr.markdown deleted file mode 100644 index 187ddaab3f..0000000000 --- a/source/_components/vultr.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -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 deleted file mode 100644 index 2f7b1d4532..0000000000 --- a/source/_components/wake_on_lan.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Wake on LAN" -description: "Instructions on 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/waterfurnace.markdown b/source/_components/waterfurnace.markdown deleted file mode 100644 index 2555b1fb80..0000000000 --- a/source/_components/waterfurnace.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "WaterFurnace" -description: "Instructions on how to integrate WaterFurnace Geothermal System into Home Assistant." -date: 2018-01-19 17:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: waterfurnace.png -ha_category: Hub -ha_release: 0.62 -ha_iot_class: "Cloud Polling" ---- - -The `waterfurnace` component communicates with the WaterFurnace Symphony website's WebSocket to show you many of the sensors in your -system. While not an official API, this is the same backend the Symphony website is based on, and should be reasonably stable. - -The sensors provided include: - - - Thermostat Setpoint - - Thermostat Current Temp - - Leaving Air Temp - - Entering Water Loop Temp - - Current Humidity - - Current Humidity Setpoint - - Total system power (in Watts) - - Furnace Mode - -## {% linkable_title Configuration %} - -To use Waterfurnace in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -waterfurnace: - username: YOUR_USERNAME - password: YOUR_PASSWORD - unit: 0123456789AB -``` - -{% configuration %} -username: - description: The email address for your Symphony WaterFurnace account - required: true - type: string -password: - description: The password for your Symphony WaterFurnace account - required: true - type: string -unit: - description: The unit serial number for your WaterFurnace - required: true - type: string -{% endconfiguration %} - - -#### {% linkable_title Limitations %} - -The WebSocket interface used by this module requires active polling, otherwise the server side shuts down the connection. By default, this polling is happening every 10 seconds. All sensors are updated during every polling cycle. - -While this is communicating with a thermostat, geothermal systems operate most efficiently when setbacks are not used, and the home is kept at a constant temperature. It remains useful to collect the data from the system to understand its performance, but a full climate interface won't be implemented. - diff --git a/source/_components/weather.bom.markdown b/source/_components/weather.bom.markdown deleted file mode 100644 index fe26c58337..0000000000 --- a/source/_components/weather.bom.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "BOM Australia" -description: "Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant." -date: 2016-09-29 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: bom.png -ha_category: Weather -ha_release: 0.36 -ha_iot_class: "Cloud Polling" ---- - -The `bom` weather platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) as a source for current (half-hourly) meteorological data. - -## {% linkable_title Configuration %} - -To add the BOM weather platform to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: bom -``` - -{% configuration %} -name: - description: The name you would like to give to the weather station. - required: optional - type: string -station: - description: "The station ID string. See the [`sensor.bom` docs](/components/sensor.bom/) for details on how to find the ID of a station." - required: optional - default: The closest station - type: string -{% endconfiguration %} - -

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

    diff --git a/source/_components/weather.buienradar.markdown b/source/_components/weather.buienradar.markdown deleted file mode 100644 index 0b4ef3f0db..0000000000 --- a/source/_components/weather.buienradar.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Buienradar" -description: "Instructions on how to integrate buienradar.nl weather within Home Assistant." -date: 2017-05-15 14:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: buienradar.png -ha_category: Weather -ha_release: 0.47 -ha_iot_class: "Cloud Polling" ---- - -The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a web service that provides detailed weather information for users in The Netherlands. - -The relevant weather station used will be automatically selected based on the location specified in the Home Assistant configuration (or in the Buienradar weather/sensor component). A map of all available weather stations can be found [here](https://www.google.com/maps/d/embed?mid=1NivHkTGQUOs0dwQTnTMZi8Uatj0). - -## {% linkable_title Configuration %} - -To add the Buienradar weather to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: buienradar -``` - -Configuration variables: - -- **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: 'volkel' - # Force 'Meetstation Volkel' to be used: - latitude: 51.65 - longitude: 5.70 - forecast: True -``` - -

    -This platform is an alternative to the [`buienradar`](/components/sensor.buienradar/) sensor. -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.darksky.markdown b/source/_components/weather.darksky.markdown deleted file mode 100644 index 6a3b1ad138..0000000000 --- a/source/_components/weather.darksky.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "Dark Sky" -description: "Instructions on how to integrate Dark Sky within Home Assistant." -date: 2016-09-29 09:00 -sidebar: true -comments: false -sharing: true -footer: true -featured: true -logo: dark_sky.png -ha_category: Weather -ha_release: 0.61 -ha_iot_class: "Cloud Polling" ---- - -The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. - -## {% linkable_title Configuration %} - -You need an API key which is free but requires [registration](https://darksky.net/dev/register). The free tier allows up to 1000 calls per day, this platform updates at most every 3 minutes, using up to 480 of those calls. - -

    -[Dark Sky](https://darksky.net/dev/) will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day. -

    - -To add Dark Sky to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: darksky - api_key: YOUR_API_KEY -``` - -{% configuration %} -api_key: - description: "Your API key for [Dark Sky](https://darksky.net/dev/)." - required: true - type: string -latitude: - description: Manually specify latitude. By default the value will be taken from the Home Assistant configuration. - required: false - type: number - default: Provided by Home Assistant configuration -longitude: - description: Manually specify longitude. By default the value will be taken from the Home Assistant configuration. - required: false - type: number - default: Provided by Home Assistant configuration -units: - description: "Manually specify unit system. Valid values are: `auto`, `us`, `si`, `ca`, `uk` and `uk2`." - required: false - type: string - default: "`si` if Home Assistant unit system is metric, `us` if imperial." -name: - description: Name to use in the frontend. - required: false - type: string - default: Open Sky -{% endconfiguration %} - -

    -This platform is an alternative to the [`darksky`](/components/sensor.darksky/) -sensor. -

    - -Details about the API are available in the [Dark Sky documentation](https://darksky.net/dev/docs). diff --git a/source/_components/weather.ecobee.markdown b/source/_components/weather.ecobee.markdown deleted file mode 100644 index 33f1983ecd..0000000000 --- a/source/_components/weather.ecobee.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Ecobee Weather" -description: "Instructions on how to setup the Ecobee weather within Home Assistant." -date: 2017-11-29 21:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: ecobee.png -ha_category: Weather -ha_release: 0.59 -ha_iot_class: "Local Push" ---- - -To get your Ecobee weather component working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/). diff --git a/source/_components/weather.markdown b/source/_components/weather.markdown deleted file mode 100644 index c256cae2a8..0000000000 --- a/source/_components/weather.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Weather" -description: "Instructions on how to setup your Weather platforms with Home Assistant." -date: 2016-09-28 14:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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 require a registration. Please check the sidebar for a full list of supported `weather` platforms. - -## {% linkable_title Condition mapping %} - -The `weather` platform only knows the below listed conditions. The reason for this is that for these conditions is an icon from [Material Design Icons](https://materialdesignicons.com/) available and mapped in the [frontend](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/cards/ha-weather-card.html#L77). - -- 'cloudy' -- 'fog' -- 'hail' -- 'lightning' -- 'lightning-rainy' -- 'partlycloudy' -- 'pouring' -- 'rainy' -- 'snowy' -- 'snowy-rainy' -- 'sunny' -- 'windy' -- 'windy-variant' -- 'exceptional': - diff --git a/source/_components/weather.metoffice.markdown b/source/_components/weather.metoffice.markdown deleted file mode 100644 index df624d2a9c..0000000000 --- a/source/_components/weather.metoffice.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Met Office" -description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." -date: 2017-03-23 22:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: metoffice.jpg -ha_category: Weather -ha_release: 0.42 -ha_iot_class: "Cloud Polling" ---- - -The `metoffice` weather platform uses the Met Office's [DataPoint API][datapoint] for weather data. - -## {% linkable_title Configuration %} - -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 -# Example configuration.yaml entry -weather: - - platform: metoffice - api_key: YOUR_API_KEY -``` - -Configuration variables: - -- **api_key** (*Required*): Your personal API key from the [Datapoint website](http://www.metoffice.gov.uk/datapoint). - -

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

    - diff --git a/source/_components/weather.openweathermap.markdown b/source/_components/weather.openweathermap.markdown deleted file mode 100644 index 53f7e9a348..0000000000 --- a/source/_components/weather.openweathermap.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "OpenWeatherMap" -description: "Instructions on how to integrate OpenWeatherMap within Home Assistant." -date: 2016-09-29 09:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: openweathermap.png -ha_category: Weather -ha_release: 0.32 -ha_iot_class: "Cloud Polling" ---- - -The `openweathermap` weather platform uses [OpenWeatherMap](http://openweathermap.org/) as a source for current meteorological data for your location. - -## {% linkable_title Configuration %} - -You need an API key which is free but requires a [registration](http://home.openweathermap.org/users/sign_up). - -To add OpenWeatherMap to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: openweathermap - api_key: YOUR_API_KEY -``` - -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 `configuration.yaml` file. -- **longitude** (*Optional*): Longitude of the location to display the weather. Defaults to the longitude in your `configuration.yaml` file. - -

    -This platform is an alternative to the [`openweathermap`](/components/sensor.openweathermap/) sensor. -

    diff --git a/source/_components/weather.yweather.markdown b/source/_components/weather.yweather.markdown deleted file mode 100644 index 27bbda8214..0000000000 --- a/source/_components/weather.yweather.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Yahoo Weather" -description: "Instructions on how to integrate Yahoo Weather within Home Assistant." -date: 2016-07-06 9:06 -sidebar: true -comments: false -sharing: true -footer: true -logo: yahooweather.png -ha_category: Weather -ha_release: 0.47 ---- - - -The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as a source for current meteorological data. This component will show you the condition and temperatures for max. 10 days. - -

    -Use of the Yahoo Weather API should not exceed reasonable request volume. Access is limited to 2000 signed calls per day. -

    - -## {% linkable_title Configuration %} - -The `woeid` (Where On Earth ID) for your location, as shown in the example below. You can find your WOEID by copying the numeric digits at the end of the URL for your location at [Yahoo Weather](https://www.yahoo.com/news/weather/). If you don't add a WOEID, it will be generated from Home Assistant's latitude and longitude. - -To add Yahoo Weather to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: yweather -``` - -Configuration variables: - -- **woeid** (*Optional*): See above. -- **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`. - - -

    -This platform is an alternative to the [`yweather`](/components/sensor.yweather/) sensor. -

    - -Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/). - diff --git a/source/_components/weather.zamg.markdown b/source/_components/weather.zamg.markdown deleted file mode 100644 index b3112d97ea..0000000000 --- a/source/_components/weather.zamg.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "ZAMG Weather" -description: "Instructions on how to integrate ZAMG sensors within Home Assistant." -date: 2016-12-06 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: zamg.png -ha_category: Weather -ha_release: 0.39 -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 publicly available. You can check the list of stations in [CSV format](http://www.zamg.ac.at/ogd). - -## {% linkable_title Configuration %} - -To add ZAMG to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weather: - - platform: zamg -``` - -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 customizable. -

    diff --git a/source/_components/weblink.markdown b/source/_components/weblink.markdown deleted file mode 100644 index ebc44a1eb9..0000000000 --- a/source/_components/weblink.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: page -title: "Weblink" -description: "Instructions on how to setup Links within Home Assistant." -date: 2016-02-02 20:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Front end -ha_release: 0.13 ---- - -The `weblink` component allows you to display links in the Home Assistant frontend. - -To use this component in your installation, add something like the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -weblink: - entities: - - name: Router - url: http://192.168.1.1/ - icon: mdi:router-wireless - - name: Home Assistant - url: https://www.home-assistant.io - - name: Grafana - url: /grafana -``` - -{% configuration %} -name: - description: Text for the link. - required: true - type: string -url: - description: The URL (absolute URL or absolute path) for the link. - required: true - type: string -icon: - description: Icon for entry. - required: false - type: string -{% endconfiguration %} - -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/websocket_api.markdown b/source/_components/websocket_api.markdown deleted file mode 100644 index 5cb8e926d0..0000000000 --- a/source/_components/websocket_api.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Websocket API" -description: "Instructions on how to setup the WebSocket API within Home Assistant." -date: 2018-01-21 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: "Other" ---- - -The `websocket_api` component set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This component depends on the [`http` component](/components/http/). - -

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

    - -```yaml -# Example configuration.yaml entry -websocket_api: -``` - -For details to use the WebSocket API, please refer to the [WebSocket API documentation](/developers/websocket_api/) . diff --git a/source/_components/wemo.markdown b/source/_components/wemo.markdown deleted file mode 100644 index ab0f345bf7..0000000000 --- a/source/_components/wemo.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Belkin WeMo" -description: "Instructions on how to integrate Belkin WeMo devices into Home Assistant." -date: 2016-02-20 00:41 -sidebar: true -comments: false -sharing: true -footer: true -logo: belkin_wemo.png -ha_category: Hub -featured: true -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. 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, 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: - static: - - 192.168.1.23 - - 192.168.52.172 -``` - -Any WeMo devices that are not statically configured but reachable via discovery will still be added automatically. - -Note that if you use this, you may want to set up your router (or whatever runs your DHCP server) to force your WeMo devices to use a static IP address. Check the DHCP section of your router configuration for this ability. - -If the device doesn't seem to work and all you see is the state "unavailable" on your dashboard, check that your firewall doesn't block incoming request on port 8989 since this is the address to which the WeMo devices send their update. diff --git a/source/_components/wink.markdown b/source/_components/wink.markdown deleted file mode 100644 index cf62b8d380..0000000000 --- a/source/_components/wink.markdown +++ /dev/null @@ -1,288 +0,0 @@ ---- -layout: page -title: "Wink" -description: "Instructions on how to setup the Wink hub within Home Assistant." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -logo: wink.png -ha_category: Hub -featured: true -ha_iot_class: "Cloud Polling" -ha_release: pre 0.7 ---- - -[Wink](http://www.wink.com/) is a home automation hub that can control a whole wide range of devices on the market. Or, as they say in their own words: - -
    - 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 automatically sets up any switches, lights, locks, fans, climate devices (thermostats, air conditioners, and water heaters), covers, sensors, alarms, and sirens. - -Check the related components pages for actual devices that are supported. - -### {% linkable_title Authenticate using [developer.wink.com](https://developer.wink.com) %} - -You need to setup a developer account with Wink. This process can take a few days to get approved. - -Wink requests three pieces of information from the user when they sign up for a developer account. - -1. `Name:` This can be anything, for example "Home Assistant" -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: -``` - -### {% linkable_title Full oauth authentication (legacy). %} - -This should be used for users that obtained their client_id and client_secret via email from Wink support prior to [developer.wink.com's](https://developer.wink.com) existence. - - -```yaml -wink: - email: YOUR_WINK_EMAIL_ADDRESS - password: YOUR_WINK_PASSWORD - client_id: YOUR_WINK_CLIENT_ID - client_secret: YOUR_WINK_CLIENT_SECRET -``` - -Configuration variables: - -- **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. - -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 where an update isn't pushed device states can be out of sync. - -You can use the service wink/refresh_state_from_wink to pull the most recent state from the Wink API for all devices. If `local_control` is set to `True` states will be pulled from the devices controlling hub, not the online API. - -### {% 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) - -

    -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 deleted file mode 100644 index 1fd18f55c2..0000000000 --- a/source/_components/xiaomi_aqara.markdown +++ /dev/null @@ -1,265 +0,0 @@ ---- -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.57" -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 %} - -- Xiaomi Aqara Gateway (lumi.gateway.v2, lumi.gateway.v3) -- Aqara Air Conditioning Companion (lumi.acpartner.v3) -- Aqara Intelligent Door Lock (lock.aq1) -- Temperature and Humidity Sensor (1st and 2nd generation) -- Motion Sensor (1st and 2nd generation) -- Door and Window Sensor (1st and 2nd generation) -- Button (1st 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 -- Xiaomi Mi Air Conditioning Companion (lumi.acpartner.v2) -- Aqara Intelligent Air Conditioner Controller Hub (lumi.acpartner.v1) -- 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 (password) from within the app following [this tutorial](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz). - -To enable {{ page.title }} in your installation, add the following to your `configuration.yaml` file: - -### {% linkable_title One Gateway %} - -```yaml -# You can leave MAC empty if you only have one gateway. -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` %} - -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 Double Click on Smart Button %} - -This example toggles the living room lamp on a double click of the button. - -```yaml -- alias: Double Click to toggle living room lamp - trigger: - platform: event - event_type: click - event_data: - entity_id: binary_sensor.switch_158d000xxxxxc2 - click_type: double - action: - service: light.toggle - data: - entity_id: light.living_room_lamp -``` - - -## {% linkable_title Troubleshooting %} - -### {% linkable_title Initial setup problem %} - -If you run into trouble initializing the gateway with your app, try another smartphone. E.g., it didn't work on an OnePlus 3, but it worked with a Nexus 5. - -### {% linkable_title Connection problem %} - -```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://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz). -- Turn off the firewall on the system where Home Assistant is running. -- Ensure your router supports multicast as this is a requirement of the Xiaomi Gateway. -- 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 alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application. -- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`). - diff --git a/source/_components/zabbix.markdown b/source/_components/zabbix.markdown deleted file mode 100644 index e463083999..0000000000 --- a/source/_components/zabbix.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Zabbix" -description: "Instructions on how to integrate Zabbix into Home Assistant." -date: 2016-12-13 22:57 -sidebar: true -comments: false -sharing: true -footer: true -logo: zabbix.png -ha_category: System Monitor -featured: false -ha_release: 0.37 -ha_iot_class: "Local Polling" ---- - -The `zabbix` component is the main component to connect to a [Zabbix](http://www.zabbix.com/) monitoring instance via the Zabbix API. - -To set the Zabbix component up, add the following information to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -zabbix: - host: 192.168.0.100 -``` - -Configuration variables: - -- **host** (*Required*): Your Zabbix server. -- **path** (*Optional*): Path to your Zabbix install. Defaults to `/zabbix/`. -- **ssl** (*Optional*): Set to `True` if your Zabbix installation is using SSL. Default to `False`. -- **username** (*Optional*): Your Zabbix username. -- **password** (*Optional*): Your Zabbix password. - -### {% linkable_title Full configuration %} - -```yaml -# Example configuration.yaml entry -zabbix: - host: ZABBIX_HOST - path: ZABBIX_PATH - ssl: False - username: USERNAME - password: PASSWORD -``` diff --git a/source/_components/zeroconf.markdown b/source/_components/zeroconf.markdown deleted file mode 100644 index 3d054ea4d5..0000000000 --- a/source/_components/zeroconf.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Zeroconf/Avahi/Bonjour" -description: "Exposes Home Assistant using the Zeroconf protocol." -date: 2016-04-10 18:50 -sidebar: true -comments: false -sharing: true -footer: true -logo: avahi.png -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. - -To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -zeroconf: -``` - -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 -+ eth0 IPv4 Home _home-assistant._tcp local -= eth0 IPv4 Home _home-assistant._tcp local - hostname = [Home._home-assistant._tcp.local] - address = [192.168.0.70] - port = [8123] - txt = ["base_url=http://192.168.0.70:8123" "requires_api_password=true" "version=0.41.0"] -``` - -```bash -$ avahi-discover -Browsing domain 'local' on -1.-1 ... -Browsing for services of type '_home-assistant._tcp' in domain 'local' on 4.0 ... -Found service 'Home' of type '_home-assistant._tcp' in domain 'local' on 4.0. -Service data for service 'Home' of type '_home-assistant._tcp' in domain 'local' on 4.0: - Host Home._home-assistant._tcp.local (192.168.0.70), port 8123, TXT data: -['requires_api_password=true', 'base_url=http://192.168.0.70:8123', 'version=0.41.0'] -``` diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown deleted file mode 100644 index 0e769fc6a4..0000000000 --- a/source/_components/zha.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Zigbee Home Automation" -description: "Instructions on how to integrate your Zigbee Home Automation within Home Assistant." -date: 2017-02-22 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: Hub -ha_release: 0.44 -ha_iot_class: "Local Polling" ---- - -[ZigBee Home Automation](http://www.zigbee.org/zigbee-for-developers/applicationstandards/zigbeehomeautomation/) -integration for Home Assistant allows you to connect many off-the-shelf ZigBee devices to Home Assistant, using a compatible ZigBee radio. - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](../binary_sensor.zha) (e.g., motion and door sensors) -- [Sensor](../sensor.zha) (e.g., temperature sensors) -- [Light](../light.zha) -- [Switch](../switch.zha) -- [Fan](../fan.zha) - -Known working ZigBee radios: - -- Nortek/GoControl Z-Wave & Zigbee USB Adapter - Model HUSBZB-1 -- XBee Series 2C -- [Elelabs ZigBee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) -- [Elelabs ZigBee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) - -To configure the component, a `zha` section must be present in the `configuration.yaml`, -and the path to the serial device for the radio and path to the database which will persist your network data is required. - -```yaml -# Example configuration.yaml entry -zha: - usb_path: /dev/ttyUSB2 - database_path: zigbee.db -``` - -Configuration variables: - - - **radio_type** (*Optional*): One of `ezsp` (default) or `xbee` - - **usb_path** (*Required*): Path to the serial device for the radio. - - **baud_rate** (*Optional*): Baud rate of the serial device. - - **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 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 deleted file mode 100644 index a7e8b31974..0000000000 --- a/source/_components/zigbee.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "ZigBee" -description: "Instructions on how to integrate a ZigBee network with Home Assistant." -date: 2016-01-27 17:10 -sidebar: true -comments: false -sharing: true -footer: true -logo: zigbee.png -ha_category: DIY -ha_release: 0.12 -ha_iot_class: "Local Polling" ---- - -[ZigBee](http://www.zigbee.org/what-is-zigbee/) integration for Home Assistant allows you to utilize modules such as the [XBee](http://www.digi.com/lp/xbee) as wireless General Purpose Input/Output (GPIO) devices. The component requires a local ZigBee device to be connected to a serial port. Through this it will send and receive commands to and from other devices on the ZigBee mesh network. - -There is currently support for the following device types within Home Assistant: - -- [Binary Sensor](../binary_sensor.zigbee) (digital input pins) -- [Sensor](../sensor.zigbee) (analog input pins and temperature sensor) -- [Light](../light.zigbee) (digital output pins) -- [Switch](../switch.zigbee) (digital output pins) - -The local ZigBee device (assuming XBee) must have an up to date Router or Coordinator API firmware installed. - -A `zigbee` section must be present in the `configuration.yaml` file and contain the following options as required: - -```yaml -# Example configuration.yaml entry -zigbee: -``` - -- **device** (*Optional*): The serial port to which the local ZigBee device is connected. Defaults to `/dev/ttyUSB0` -- **baud** (*Optional*): The baud rate at which to communicate with the local ZigBee device. Defaults to `9600` - -To find the possible serial port names of your device, run: - -```bash -$ ls /dev/ttyUSB* -``` - -

    -The port may also appear as /dev/ttyACM* if you're communicating with the ZigBee device through an Arduino. -

    - -### {% linkable_title Example %} - -```yaml -# Example configuration.yaml entry -zigbee: - device: /dev/ttyACM1 - baud: 115200 -``` diff --git a/source/_components/zone.markdown b/source/_components/zone.markdown deleted file mode 100644 index c97d06657f..0000000000 --- a/source/_components/zone.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "Zone" -description: "Instructions on how to setup zones within Home Assistant." -date: 2015-10-04 09:23 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -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. - -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: Work - latitude: 32.8753367 - longitude: -117.2474053 - - # 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 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 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 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. -

    - -#### {% linkable_title Icons %} - -It is preferred to pick an icon to use for your zone. Pick any icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) and prefix the name with `mdi:`. For example `mdi:school`, `mdi:worker`, `mdi:home`, `mdi:cart`, or `mdi:castle`. - -#### State - -`zoning` is the state a `zone` has when it is configured. A `zone` doesn't have another state; all configured zones are `zoning` all the time. diff --git a/source/_components/zoneminder.markdown b/source/_components/zoneminder.markdown deleted file mode 100644 index 0ebf5fbafc..0000000000 --- a/source/_components/zoneminder.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "ZoneMinder" -description: "How to integrate ZoneMinder into Home Assistant." -date: 2016-10-13 22:57 -sidebar: true -comments: false -sharing: true -footer: true -logo: zoneminder.png -ha_category: Hub -featured: false -ha_release: 0.31 -ha_iot_class: "Local Polling" ---- - -The ZoneMinder component sets up the integration with your [ZoneMinder](https://www.zoneminder.com) instance so that [cameras](/components/camera.zoneminder/), [sensors](/components/sensor.zoneminder/), and [switches](/components/switch.zoneminder) can use it. - -```yaml -# Example configuration.yaml entry -zoneminder: - host: ZM_HOST -``` - -Configuration variables: -- **host** (*Required*): Your ZoneMinder server's host (and optional port), not including the scheme. -- **path** (*Optional*): Path to your ZoneMinder install. Defaults to `/zm/`. -- **path_zms** (*Optional*): Path to the CGI script for streaming. This should match `PATH_ZMS` in ZM's "Paths" settings. Defaults to `/zm/cgi-bin/nph-zms`. -- **ssl** (*Optional*): Set to `True` if your ZoneMinder installation is using SSL. Default to `False`. -- **username** (*Optional*): Your ZoneMinder username. -- **password** (*Optional*): Your ZoneMinder password. Required if `OPT_USE_AUTH` is enabled in ZM. - -### {% linkable_title Full configuration %} - -```yaml -# Example configuration.yaml entry -zoneminder: - host: ZM_HOST - path: ZM_PATH - path_zms: ZM_PATH_ZMS - ssl: False - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` diff --git a/source/_components/zwave.markdown b/source/_components/zwave.markdown deleted file mode 100644 index 9dd4811b3e..0000000000 --- a/source/_components/zwave.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "Z-Wave" -description: "Instructions on how to integrate your existing Z-Wave within Home Assistant." -date: 2016-02-27 19:59 -sidebar: true -comments: false -sharing: true -footer: true -logo: z-wave.png -ha_category: Hub -featured: true -ha_iot_class: "Local Push" ---- - -The [Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Please see the [Z-Wave getting started section](/docs/z-wave/) for in-depth documentation on how to use and setup the Z-Wave component. - -If you have setup the requirements, then add the following entry `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -zwave: -``` diff --git a/source/_cookbook/automation_enocean_phue.markdown b/source/_cookbook/automation_enocean_phue.markdown deleted file mode 100644 index 2a6a738684..0000000000 --- a/source/_cookbook/automation_enocean_phue.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Switch Philips Hue with enocean" -description: "Automation to switch a Philips Hue lamp with an enocean switch." -date: 2016-09-02 22:35 +0800 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -Assume that you have an enocean wall switch and some Philips Hue lamps. The enocean wall switch will fire the event button_pressed and pass along several parameters which is used to turn on/off the lamps. - -event_data: - -* which -* pushed -* onoff -* id -* devname - -```yaml -enocean: - device: /dev/ttyUSB0 - -binary_sensor: - - platform: enocean - id: [0x00,0x01,0x02,0x03] - name: living_room_switch - -automation: - - alias: Turn on living room light - trigger: - platform: event - event_type: button_pressed - event_data: - onoff: 1 - devname: living_room_switch - action: - service: light.turn_on - entity_id: light.hue_color_lamp_3 - - - alias: Turn off living room light - trigger: - platform: event - event_type: button_pressed - event_data: - onoff: 0 - devname: living_room_switch - action: - service: light.turn_off - entity_id: light.hue_color_lamp_3 -``` diff --git a/source/_cookbook/automation_first_light.markdown b/source/_cookbook/automation_first_light.markdown deleted file mode 100644 index 098036db77..0000000000 --- a/source/_cookbook/automation_first_light.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: page -title: "Examples using first light" -description: "Automation examples that trigger lights in the morning." -date: 2016-10-08 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -#### {% linkable_title Create an input_boolean in your configuration.yaml %} - -```yaml -input_boolean: - trigger_first_morning: - name: Waiting for first morning motion - icon: mdi:kettle -``` - -#### {% linkable_title The Main Automation %} - -```yaml -## These first two control t input_boolean that allows the "first morning action" to occur -## If the action is triggered, it will also disable this boolean. This assumes you have the sun platform enabled. - -automation: -#turns it on at 5am - - alias: Enable First Morning Trigger - trigger: - - platform: time - at: '5:00' - action: - service: homeassistant.turn_on - entity_id: input_boolean.trigger_first_morning - -# turns it off an hour after sunrise - - alias: Disable First Morning Trigger - trigger: - - platform: sun - event: sunrise - offset: "01:00:00" - action: - service: homeassistant.turn_off - entity_id: input_boolean.trigger_first_morning - - - -# This is the main automation. It triggers when my motion sensor is triggered -# (in this case, a motion sensor from a security system attached to my Vera) - - alias: First Morning Motion - trigger: - platform: state - entity_id: binary_sensor.livingroom_motion - to: 'on' - # only complete the automation if we're still waiting for the first motion - condition: - condition: state - entity_id: input_boolean.trigger_first_morning - state: 'on' - - action: - # turn off the "waiting" boolean regardless of whether lights will turn on - # so that this happens only once - - service: homeassistant.turn_off - entity_id: input_boolean.trigger_first_morning - - # But only turn on lights if the living room and kitchen lights are off or dimmed - # If a condition tests false, the automation will end - - condition: and - conditions: - - condition: numeric_state - entity_id: light.livingroom_ec - # if light is off, force a 0, otherwise use the brightness value - value_template: {% raw %}'{% if states.light.livingroom_ec.state == "on" %}{{ states.light.livingroom_ec.attributes.brightness }}{% else %}0{% endif %}'{% endraw %} - # brightness below 50% (255 = 100%) - below: 128 - - condition: numeric_state - entity_id: light.kitchen_bar - value_template: {% raw %}'{% if states.light.kitchen_bar.state == "on" %}{{ states.light.kitchen_bar.attributes.brightness }}{% else %}0{% endif %}'{% endraw %} - below: 128 - - condition: numeric_state - entity_id: light.kitchen_ceiling - value_template: {% raw %}'{% if states.light.kitchen_ceiling.state == "on" %}{{ states.light.kitchen_ceiling.attributes.brightness }}{% else %}0{% endif %}'{% endraw %} - below: 128 - - # Trigger a scene - # You could add as many services or scenes as you'd like - - service: scene.turn_on - entity_id: scene.morning_first_motion - - -``` - -#### {% linkable_title The Scene %} - -Here is the Scene that is called via the Automations above. - -```yaml -# here's the scene that gets called. Lights in -# my living room and kitchen turn on. -scene: - - name: Morning First Motion - entities: - light.kitchen_ceiling: - state: on - brightness: 127 - light.kitchen_bar: - state: on - brightness: 178 - light.kitchen_above_cabinet: - state: on - brightness: 178 - light.livingroom_ec: - state: on - brightness: 153 - light.livingroom_track: - state: on - brightness: 153 -``` diff --git a/source/_cookbook/automation_flashing_lights.markdown b/source/_cookbook/automation_flashing_lights.markdown deleted file mode 100644 index 5a55323eac..0000000000 --- a/source/_cookbook/automation_flashing_lights.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: page -title: "Examples for flashing lights" -description: "Automation examples for flashing lights in case of an alarm." -date: 2016-03-30 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -#### {% linkable_title Flashing lights triggered by an alarm %} - -For flashing regular lights in case an alarm is triggered. - -```yaml -# AlmAct1 - switch to activate the alarm in Room1 -# AlmSnd1 - switch for a buzzer - -automation: -- alias: 'Alarm_PIR_Room1' - trigger: - platform: state - entity_id: binary_sensor.PIR1 - to: 'on' - condition: - - condition: state - entity_id: switch.AlmAct1 - state: 'on' - - condition: state - entity_id: script.alarm_room1 - state: 'off' - action: - # start alarm on movement if alarm activated - # and the alarm is not triggered - service: script.turn_on - entity_id: script.alarm_room1 - -- alias: 'flash_room1_start' - trigger: - platform: state - entity_id: switch.AlmSnd1 - to: 'on' - action: - service: script.turn_on - entity_id: script.flash_room1 - -- alias: 'flash_room1_stop' - trigger: - platform: state - entity_id: switch.REL1 - to: 'off' - condition: - condition: state - entity_id: switch.AlmSnd1 - to: 'off' - action: - service: script.turn_off - entity_id: script.flash_room1 - -script: - alarm_room1: - alias: Alarm room1 - sequence: - - alias: Alarm Room1 Start - service: homeassistant.turn_on - data: - entity_id: switch.AlmSnd1 - - alias: Set Ack Room1 - service: homeassistant.turn_on - data: - entity_id: input_boolean.ack1 - - alias: email_Room1 - service: notify.email - data: - message: 'Movement alarm in Room1' - - delay: - # time interval for alarm sound and light flashing - seconds: 60 - - alias: Alarm Room1 Stop - service: homeassistant.turn_off - data: - entity_id: switch.AlmSnd1 - - flash_room1: - alias: Flash Room1 On - sequence: - - alias: Light Room1 On - service: homeassistant.turn_on - data: - entity_id: switch.REL1 - - delay: - # time for flash light on - seconds: 1 - - alias: Light Room1 Off - service: homeassistant.turn_off - data: - entity_id: switch.REL1 - - alias: loop_room1 - service: script.turn_on - data: - entity_id: script.flash_loop - - flash_loop: - alias: Flash loop - sequence: - - delay: - # time for flash light off - seconds: 1 - - alias: loop_room1 - service: script.turn_on - data: - entity_id: script.flash_room1 -``` - diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown deleted file mode 100644 index 7ce7c46b16..0000000000 --- a/source/_cookbook/automation_for_rainy_days.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Automation for rainy days" -description: "Basic example how to use weather conditions to set states" -date: 2015-10-08 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -This requires a [Dark Sky](/components/sensor.darksky/) sensor with the condition `precip_intensity` that tells if it's raining or not. You could also experiment with other attributes such as `cloud_cover`. - -Turn on a light in the living room when it starts raining, someone is home, and it's afternoon or later. - -```yaml -automation: - - alias: 'Rainy Day' - trigger: - - platform: state - entity_id: sensor.precip_intensity - to: 'rain' - condition: - - condition: state - entity_id: group.all_devices - state: 'home' - - condition: time - after: '14:00' - before: '23:00' - action: - service: light.turn_on - entity_id: light.couch_lamp -``` - -And then of course turn off the lamp when it stops raining but only if it's within an hour before sunset. - -```yaml - - alias: 'Rain is over' - trigger: - - platform: state - entity_id: sensor.precip_intensity - to: 'None' - condition: - - condition: sun - after: 'sunset' - offset: '-01:00:00' - action: - service: light.turn_off - entity_id: light.couch_lamp -``` - diff --git a/source/_cookbook/automation_kodi_dynamic_input_select.markdown b/source/_cookbook/automation_kodi_dynamic_input_select.markdown deleted file mode 100644 index 9fc1bbd3f9..0000000000 --- a/source/_cookbook/automation_kodi_dynamic_input_select.markdown +++ /dev/null @@ -1,156 +0,0 @@ ---- -layout: page -title: "Dynamic input select with Kodi media" -description: "How to configure an `input_select` that can play in Kodi the latest entries added to the library" -date: 2017-05-16 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -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](/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. - -The media player yaml config: - -```yaml -media_player: -- platform: kodi - name: Kodi - host: 192.168.0.123 -``` - -The `input_select` with the scripts and a group: - -```yaml -input_select: - kodi_results: - name: Kodi API results - options: - - Nothing to do - -script: - get_recent_movies: - alias: Last added movies - sequence: - - service: media_player.kodi_call_method - data: - entity_id: media_player.kodi - method: VideoLibrary.GetRecentlyAddedMovies - properties: - - title - - year - - file - - lastplayed - - get_recent_episodes: - alias: Last TV shows - sequence: - - service: media_player.kodi_call_method - data: - entity_id: media_player.kodi - method: VideoLibrary.GetRecentlyAddedEpisodes - properties: - - showtitle - - file - - lastplayed - - firstaired - - get_pvr_channels: - alias: TV Channels - sequence: - - service: media_player.kodi_call_method - data: - entity_id: media_player.kodi - method: PVR.GetChannels - channelgroupid: 1 - -group: - Media Select: - control: hidden - entities: - - input_select.kodi_results - - script.get_recent_movies - - script.get_recent_episodes - - script.get_pvr_channels -``` - -The AppDaemon app: - -```python -import appdaemon.appapi as appapi -from homeassistant.components.media_player.kodi import ( - EVENT_KODI_CALL_METHOD_RESULT) - -ENTITY = 'input_select.kodi_results' -MEDIA_PLAYER = 'media_player.kodi' -DEFAULT_ACTION = "Nothing to do" -MAX_RESULTS = 20 - -class DynamicKodiInputSelect(appapi.AppDaemon): - """AppDaemon app to dynamically populate an `input_select`.""" - _ids_options = None - - def initialize(self): - """Set up appdaemon app.""" - self.listen_event(self._receive_kodi_result, - EVENT_KODI_CALL_METHOD_RESULT) - self.listen_state(self._change_selected_option, ENTITY) - # Input select: - self._ids_options = {DEFAULT_ACTION: None} - - def _receive_kodi_result(self, event_id, payload_event, *args): - result = payload_event['result'] - method = payload_event['input']['method'] - - assert event_id == EVENT_KODI_CALL_METHOD_RESULT - if method == 'VideoLibrary.GetRecentlyAddedMovies': - values = result['movies'][:MAX_RESULTS] - data = [('{} ({})'.format(r['label'], r['year']), - ('MOVIE', r['file'])) for r in values] - self._ids_options.update(dict(zip(*zip(*data)))) - labels = list(list(zip(*data))[0]) - self.call_service('input_select/set_options', - entity_id=ENTITY, - options=[DEFAULT_ACTION] + labels) - self.set_state(ENTITY, - attributes={"friendly_name": 'Recent Movies', - "icon": 'mdi:movie'}) - elif method == 'VideoLibrary.GetRecentlyAddedEpisodes': - values = list(filter(lambda r: not r['lastplayed'], - result['episodes']))[:MAX_RESULTS] - data = [('{} - {}'.format(r['showtitle'], r['label']), - ('TVSHOW', r['file'])) for r in values] - self._ids_options.update(dict(zip(*zip(*data)))) - labels = list(list(zip(*data))[0]) - self.call_service('input_select/set_options', - entity_id=ENTITY, - options=[DEFAULT_ACTION] + labels) - self.set_state(ENTITY, - attributes={"friendly_name": 'Recent TvShows', - "icon": 'mdi:play-circle'}) - elif method == 'PVR.GetChannels': - values = result['channels'] - data = [(r['label'], ('CHANNEL', r['channelid'])) - for r in values] - self._ids_options.update(dict(zip(*zip(*data)))) - labels = list(list(zip(*data))[0]) - self.call_service('input_select/set_options', - entity_id=ENTITY, - options=[DEFAULT_ACTION] + labels) - self.set_state(ENTITY, - attributes={"friendly_name": 'TV channels', - "icon": 'mdi:play-box-outline'}) - - def _change_selected_option(self, entity, attribute, old, new, kwargs): - selected = self._ids_options[new] - if selected: - mediatype, file = selected - self.call_service('media_player/play_media', - entity_id=MEDIA_PLAYER, - media_content_type=mediatype, - media_content_id=file) -``` diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown deleted file mode 100644 index 931972beab..0000000000 --- a/source/_cookbook/automation_sun.markdown +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: page -title: "Examples using the sun" -description: "Automation examples that use the sun." -date: 2015-10-08 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -#### {% linkable_title Turn on the living room lights 45 minutes before sunset if anyone is at home %} - -```yaml -automation: - trigger: - platform: sun - event: sunset - offset: "-00:45:00" - condition: - condition: state - entity_id: group.all_devices - state: home - action: - service: homeassistant.turn_on - entity_id: group.living_room_lights -``` - -#### {% linkable_title Natural wake up light %} - -_Note, Philips Hue and LIFX are currently the only light platforms that support transitions._ - -```yaml -automation: - trigger: - platform: time - at: "07:15:00" - action: - service: light.turn_on - entity_id: light.bedroom - data: - # 900 seconds = 15 minutes - transition: 900 -``` - -#### {% linkable_title Send sun rise/sun set notifications %} - -Send notifications through [PushBullet](/components/notify.pushbullet/) when the sun state is changed. - -```yaml -automation: - - alias: 'Send notification when sun rises' - trigger: - platform: sun - event: sunrise - offset: '+00:00:00' - action: - service: notify.pushbullet - data: - message: 'The sun is up.' - - alias: 'Send notification when sun sets' - trigger: - platform: sun - event: sunset - offset: '+00:00:00' - action: - service: notify.pushbullet - data: - message: 'The sun is down.' -``` - -#### {% linkable_title Automations for lights and blinds based on solar elevation %} - -Solar elevation automations can cope with offsets from sunset / sunrise as the seasons change better than using a time based offsets. - -```yaml -- alias: 'Turn a few lights on when the sun gets dim' - trigger: - platform: numeric_state - entity_id: sun.sun - value_template: '{% raw %}{{ state.attributes.elevation }}{% endraw %}' - below: 3.5 - action: - service: scene.turn_on - entity_id: scene.background_lights - -- alias: 'Turn more lights on as the sun gets dimmer' - trigger: - platform: numeric_state - entity_id: sun.sun - value_template: '{% raw %}{{ state.attributes.elevation }}{% endraw %}' - below: 1.5 - action: - service: scene.turn_on - entity_id: scene.more_lights - -- alias: 'Close blind at dusk' - trigger: - platform: numeric_state - entity_id: sun.sun - value_template: '{% raw %}{{ state.attributes.elevation }}{% endraw %}' - below: -2.5 - action: - service: switch.turn_off - entity_id: switch.blind - -``` diff --git a/source/_cookbook/automation_telegram_presence_alert.markdown b/source/_cookbook/automation_telegram_presence_alert.markdown deleted file mode 100644 index c31da51c22..0000000000 --- a/source/_cookbook/automation_telegram_presence_alert.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Examples sending notification depending of the presence" -description: "Examples sending notification depending of the presence" -date: 2017-02-12 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -This will send a message when someone in your known devices list connects to your local network. In other words, when someone arrives home. It will only work if you are using the [nmap](/components/device_tracker.nmap_tracker/) device tracker or a similar component. - -This example uses [Telegram](/components/notify.telegram/) to send the notification. - -```yaml -notify: - - name: Telegram - platform: telegram - api_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - chat_id: xxxxxxxxx -``` - -Add the automation rule. Change `device_name_here` to match the device you want to track. - -```yaml -automation: - trigger: - platform: state - entity_id: device_tracker.device_name_here - from: 'not_home' - to: 'home' - action: - service: notify.Telegram - data: - message: 'Person is now home' -``` diff --git a/source/_cookbook/automation_using_timeinterval_inputboolean.markdown b/source/_cookbook/automation_using_timeinterval_inputboolean.markdown deleted file mode 100644 index d5edc5e961..0000000000 --- a/source/_cookbook/automation_using_timeinterval_inputboolean.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Using time interval and input boolean" -description: "Automation to get a random color every 2 minutes that can be turned on/off." -date: 2016-02-07 22:35 +0800 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -#### {% linkable_title Change Hue light on interval to random color based on state of an input boolean %} - -_Note, Philips Hue is currently the only light platform that support the random effect._ - -```yaml -input_boolean: - loop_livingcolors: - name: Loop LivingColors - initial: off - icon: mdi:spotlight - -automation: -# Changes Hue light every two minutes to random color if input boolean is set to on -- alias: 'Set LivingColors to random color' - trigger: - platform: time - minutes: '/2' - seconds: 0 - condition: - condition: state - entity_id: input_boolean.loop_livingcolors - state: 'on' - action: - service: light.turn_on - entity_id: light.woonkamer_livingcolors - data: - effect: random - transition: 5 - brightness: 255 -``` diff --git a/source/_cookbook/configuration_yaml_by_alok_saboo.markdown b/source/_cookbook/configuration_yaml_by_alok_saboo.markdown deleted file mode 100644 index a5cfc0512f..0000000000 --- a/source/_cookbook/configuration_yaml_by_alok_saboo.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Alok Saboo" -description: "" -date: 2016-10-25 10:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/arsaboo/homeassistant-config ---- diff --git a/source/_cookbook/configuration_yaml_by_aneisch.markdown b/source/_cookbook/configuration_yaml_by_aneisch.markdown deleted file mode 100644 index fa59c4f648..0000000000 --- a/source/_cookbook/configuration_yaml_by_aneisch.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by aneisch" -description: "" -date: 2017-2-23 20:27 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/aneisch/home-assistant-config/ ---- - diff --git a/source/_cookbook/configuration_yaml_by_apocrathia.markdown b/source/_cookbook/configuration_yaml_by_apocrathia.markdown deleted file mode 100644 index 6ac2ccd329..0000000000 --- a/source/_cookbook/configuration_yaml_by_apocrathia.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Apocrathia" -description: "" -date: 2018-05-02 12:40 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Apocrathia/home-assistant-config/ ---- diff --git a/source/_cookbook/configuration_yaml_by_bah2830.markdown b/source/_cookbook/configuration_yaml_by_bah2830.markdown deleted file mode 100644 index 1831f4a17f..0000000000 --- a/source/_cookbook/configuration_yaml_by_bah2830.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by bah2830" -description: "" -date: 2016-07-14 20:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/bah2830/Home-Assistant-Configs ---- diff --git a/source/_cookbook/configuration_yaml_by_carlo_costanzo.markdown b/source/_cookbook/configuration_yaml_by_carlo_costanzo.markdown deleted file mode 100644 index 3109710311..0000000000 --- a/source/_cookbook/configuration_yaml_by_carlo_costanzo.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Carlo Costanzo" -description: "" -date: 2016-10-11 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/CCOSTAN/Home-AssistantConfig ---- - diff --git a/source/_cookbook/configuration_yaml_by_cbulock.markdown b/source/_cookbook/configuration_yaml_by_cbulock.markdown deleted file mode 100644 index c4aa3905bd..0000000000 --- a/source/_cookbook/configuration_yaml_by_cbulock.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by cbulock" -description: "" -date: 2016-06-29 15:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/cbulock/home-assistant-configs ---- diff --git a/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown b/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown deleted file mode 100644 index 6c873a0808..0000000000 --- a/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by chriskacerguis" -description: "" -date: 2017-12-12 09:14 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/chriskacerguis/Home-AssistantConfig ---- diff --git a/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown b/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown deleted file mode 100644 index 247ddab133..0000000000 --- a/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Ciquattro" -description: "" -date: 2017-06-13 12:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/CiquattroFPV/Homeassistant-Example-Config ---- diff --git a/source/_cookbook/configuration_yaml_by_cy1701.markdown b/source/_cookbook/configuration_yaml_by_cy1701.markdown deleted file mode 100644 index 34e1c4cab4..0000000000 --- a/source/_cookbook/configuration_yaml_by_cy1701.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by cy1701" -description: "" -date: 2016-12-28 20:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/cy1701/Home-Assistant-Configuration ---- diff --git a/source/_cookbook/configuration_yaml_by_danichispa.markdown b/source/_cookbook/configuration_yaml_by_danichispa.markdown deleted file mode 100644 index df10048636..0000000000 --- a/source/_cookbook/configuration_yaml_by_danichispa.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Danichispa" -description: "" -date: 2016-02-20 02:19 -0800 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/danichispa/hass ---- - diff --git a/source/_cookbook/configuration_yaml_by_daniel_hoyer_iversen.markdown b/source/_cookbook/configuration_yaml_by_daniel_hoyer_iversen.markdown deleted file mode 100644 index 5fe391eb75..0000000000 --- a/source/_cookbook/configuration_yaml_by_daniel_hoyer_iversen.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Daniel Høyer Iversen" -description: "" -date: 2016-10-11 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Danielhiversen/home-assistant_config ---- diff --git a/source/_cookbook/configuration_yaml_by_fredsmith.markdown b/source/_cookbook/configuration_yaml_by_fredsmith.markdown deleted file mode 100644 index 8cd2bdf208..0000000000 --- a/source/_cookbook/configuration_yaml_by_fredsmith.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by fredsmith" -description: "" -date: 2017-04-28 18:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://git.smith.bz/derf/homeautomation ---- - diff --git a/source/_cookbook/configuration_yaml_by_geekofweek.markdown b/source/_cookbook/configuration_yaml_by_geekofweek.markdown deleted file mode 100644 index 7ca356543f..0000000000 --- a/source/_cookbook/configuration_yaml_by_geekofweek.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by geekofweek" -description: "" -date: 2016-04-23 13:51 +0700 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/geekofweek/homeassistant ---- - diff --git a/source/_cookbook/configuration_yaml_by_greenturtwig.markdown b/source/_cookbook/configuration_yaml_by_greenturtwig.markdown deleted file mode 100644 index a5bc7c5b18..0000000000 --- a/source/_cookbook/configuration_yaml_by_greenturtwig.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by GreenTurtwig" -description: "" -date: 2016-02-13 13:51 +0700 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/GreenTurtwig/personal-home-automation/blob/master/configuration.yaml ---- - diff --git a/source/_cookbook/configuration_yaml_by_gstevenson.markdown b/source/_cookbook/configuration_yaml_by_gstevenson.markdown deleted file mode 100644 index eadfbfe2c0..0000000000 --- a/source/_cookbook/configuration_yaml_by_gstevenson.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by gstevenson" -description: "" -date: 2016-07-13 21:58 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/gstevenson/ha-config ---- diff --git a/source/_cookbook/configuration_yaml_by_gummientchen.markdown b/source/_cookbook/configuration_yaml_by_gummientchen.markdown deleted file mode 100644 index 3205562886..0000000000 --- a/source/_cookbook/configuration_yaml_by_gummientchen.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Gummientchen" -description: "" -date: 2018-03-23 09:13 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Gummientchen/Home-AssistantConfig ---- diff --git a/source/_cookbook/configuration_yaml_by_happyleavesaoc.markdown b/source/_cookbook/configuration_yaml_by_happyleavesaoc.markdown deleted file mode 100644 index 33fc4f0504..0000000000 --- a/source/_cookbook/configuration_yaml_by_happyleavesaoc.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by happyleavesaoc" -description: "" -date: 2016-02-07 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/happyleavesaoc/my-home-automation/tree/master/homeassistant ---- - diff --git a/source/_cookbook/configuration_yaml_by_instagraeme.markdown b/source/_cookbook/configuration_yaml_by_instagraeme.markdown deleted file mode 100644 index d6ddee0fa4..0000000000 --- a/source/_cookbook/configuration_yaml_by_instagraeme.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by InstaGraeme" -description: "" -date: 2016-09-08 21:30 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Instagraeme/Home-Assistant-Configuration ---- diff --git a/source/_cookbook/configuration_yaml_by_jjmontesl.markdown b/source/_cookbook/configuration_yaml_by_jjmontesl.markdown deleted file mode 100644 index 742d618f91..0000000000 --- a/source/_cookbook/configuration_yaml_by_jjmontesl.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by jjmontesl" -description: "" -date: 2017-02-22 23:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/jjmontesl/home-assistant-config ---- diff --git a/source/_cookbook/configuration_yaml_by_lancehaynie.markdown b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown deleted file mode 100644 index 892714d140..0000000000 --- a/source/_cookbook/configuration_yaml_by_lancehaynie.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -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_mertenats.markdown b/source/_cookbook/configuration_yaml_by_mertenats.markdown deleted file mode 100644 index 47b1bbb38e..0000000000 --- a/source/_cookbook/configuration_yaml_by_mertenats.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by mertenats" -description: "" -date: 2016-10-08 19:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/mertenats/open-home-automation/tree/master/openhome ---- diff --git a/source/_cookbook/configuration_yaml_by_mf_social.markdown b/source/_cookbook/configuration_yaml_by_mf_social.markdown deleted file mode 100644 index 67eb9d1628..0000000000 --- a/source/_cookbook/configuration_yaml_by_mf_social.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by mf_social" -description: "" -date: 2017-10-11 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/mf-social/Home-Assistant ---- diff --git a/source/_cookbook/configuration_yaml_by_ntalekt.markdown b/source/_cookbook/configuration_yaml_by_ntalekt.markdown deleted file mode 100644 index 657e33b001..0000000000 --- a/source/_cookbook/configuration_yaml_by_ntalekt.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -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_oakbrad.markdown b/source/_cookbook/configuration_yaml_by_oakbrad.markdown deleted file mode 100644 index c499139441..0000000000 --- a/source/_cookbook/configuration_yaml_by_oakbrad.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by oakbrad" -description: "" -date: 2016-03-14 11:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/oakbrad/brad-homeassistant-config ---- - diff --git a/source/_cookbook/configuration_yaml_by_scottocs11.markdown b/source/_cookbook/configuration_yaml_by_scottocs11.markdown deleted file mode 100644 index a9b4637975..0000000000 --- a/source/_cookbook/configuration_yaml_by_scottocs11.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Scottoc11" -description: "" -date: 2017-02-23 16:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/scottocs11/Home-Assistant-Config ---- \ No newline at end of file diff --git a/source/_cookbook/configuration_yaml_by_shortbloke.markdown b/source/_cookbook/configuration_yaml_by_shortbloke.markdown deleted file mode 100644 index d7aa547555..0000000000 --- a/source/_cookbook/configuration_yaml_by_shortbloke.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -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_silvrr.markdown b/source/_cookbook/configuration_yaml_by_silvrr.markdown deleted file mode 100644 index 847b4bf1c0..0000000000 --- a/source/_cookbook/configuration_yaml_by_silvrr.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by silvrr" -description: "" -date: 2018-1-18 13:08 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/SilvrrGIT/HomeAssistant ---- diff --git a/source/_cookbook/configuration_yaml_by_skalavala.markdown b/source/_cookbook/configuration_yaml_by_skalavala.markdown deleted file mode 100644 index 28550e1d7d..0000000000 --- a/source/_cookbook/configuration_yaml_by_skalavala.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Mahasri Kalavala" -description: "" -date: 2017-04-19 12:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/skalavala/smarthome ---- diff --git a/source/_cookbook/configuration_yaml_by_stanvx.markdown b/source/_cookbook/configuration_yaml_by_stanvx.markdown deleted file mode 100644 index a40ec0e30b..0000000000 --- a/source/_cookbook/configuration_yaml_by_stanvx.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Stanvx" -description: "" -date: 2017-04-09 21:35 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/stanvx/Home-Assistant-Configuration ---- diff --git a/source/_cookbook/configuration_yaml_by_teagan42.markdown b/source/_cookbook/configuration_yaml_by_teagan42.markdown deleted file mode 100644 index 1440f63f1c..0000000000 --- a/source/_cookbook/configuration_yaml_by_teagan42.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by Teagan42" -description: "" -date: 2016-08-24 23:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml -ha_external_link: https://github.com/Teagan42/HomeAssistantConfig ---- diff --git a/source/_cookbook/configuration_yaml_by_vasiley.markdown b/source/_cookbook/configuration_yaml_by_vasiley.markdown deleted file mode 100644 index 5334be04d3..0000000000 --- a/source/_cookbook/configuration_yaml_by_vasiley.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -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/configuration_yaml_from_bassclarinetl2.markdown b/source/_cookbook/configuration_yaml_from_bassclarinetl2.markdown deleted file mode 100644 index 0f418577c3..0000000000 --- a/source/_cookbook/configuration_yaml_from_bassclarinetl2.markdown +++ /dev/null @@ -1,460 +0,0 @@ ---- -layout: page -title: "Configuration.yaml by bassclarinetl2" -description: "" -date: 2016-03-24 17:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Example configuration.yaml ---- - -```yaml -homeassistant: - # Name of the location where Home Assistant is running - name: example.com - # Location required to calculate the time the sun rises and sets - latitude: 37 - longitude: -121 - # 'metric' for Metric, 'imperial' for Imperial - unit_system: imperial - # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones - time_zone: America/Los_Angeles - customize: - switch.aeon_labs_smart_energy_switch_switch_2: - friendly_name: Mac Switch-Meter - switch.leviton_unknown_type1a02_id0334_switch_3: - friendly_name: W Nightstand - entity_picture: /local/zwvapl.jpg - switch.hub_switch: - friendly_name: Wink Hub Switch - entity_picture: /local/wemoswitch.jpg - switch.leviton_unknown_type1a02_id0334_switch_4: - friendly_name: Christmas Tree - entity_picture: /local/zwvapl.jpg - switch.leviton_unknown_type1a02_id0334_switch_5: - friendly_name: Roof Lights - entity_picture: /local/zwvapl.jpg - - light.w_bedroom_ceiling_: - friendly_name: Will's Bedroom Ceiling Lights (Wink) - entity_picture: /local/casetta.jpg - light.living_room_wall_: - friendly_name: Living Room Couch Lights (Wink) - entity_picture: /local/casetta.jpg - - media_player.my_shield_android_tv: - friendly_name: Dalek (Cast) - entity_picture: /local/shieldtv.jpg - media_player.chromecast: - friendly_name: Jeff chromecast - entity_picture: /local/chromecast.jpg - media_player.kodi: - friendly_name: Tardis-Win7 (Kodi) - entity_picture: /local/kodi.png - media_player.kodi_2: - friendly_name: Dalek (Kodi) - media_player.roku_2_xd__12a18n045363: - friendly_name: Parents Roku - entity_picture: /local/roku2xd.jpg - - sensor.aeon_labs_smart_energy_switch_power_2: - friendly_name: Mac Usage (W) - sensor.aeon_labs_smart_energy_switch_previous_reading_2: - friendly_name: Mac Usage Previous (W) - hidden: true - sensor.aeon_labs_smart_energy_switch_energy_2: - friendly_name: Mac Usage (kWh) - hidden: true - -##################### -## GROUPS -##################### -group: - w_bedroom: - - switch.leviton_unknown_type1a02_id0334_switch_3 - - light.w_bedroom_ceiling_ - christmas: - - switch.leviton_unknown_type1a02_id0334_switch_4 - - switch.leviton_unknown_type1a02_id0334_switch_5 - almanac: - - sensor.date - - sensor.time - - sensor.time_utc - - sun.sun - tracker: - - device_tracker.will_wnexus -# OpenWeatherMap: -# - sensor.weather_temperature -# - sensor.weather_humidity -# - sensor.weather_pressure -# - sensor.weather_rain -# - sensor.weather_wind_speed -# - sensor.weather_cloud_coverage -# - sensor.weather_forecast - Meteobridge: - - sensor.outdoor_temp_meteobridge - - sensor.outdoor_humidity_meteobridge - - sensor.outdoor_dewpoint_meteobridge - - sensor.precip_rate_meteobridge - - sensor.wind_direction_meteobridge - - sensor.wind_gust_meteohub - - sensor.wind_chill_meteobridge - - sensor.wind_speed_meteobridge - - sensor.indoor_dewpoint_meteobridge - - sensor.indoor_humidity_meteobridge - - sensor.indoor_temp_meteobridge - - sensor.precip_change_meteobridge - - sensor.precip_total_meteobridge - - sensor.sea_level_pressure_meteobridge - - sensor.barometric_pressure_meteobridge - -#################### -## ZONES -#################### -zone: - name: Home - latitude: 37 - longitude: -121 - radius: 200 - icon: mdi:home - -zone 2: - name: Barracuda_(SJ) - latitude: 37 - longitude: -121 - radius: 100 - -zone 3: - name: SFC - latitude: 37 - longitude: -122 - radius: 95 - -#################### -## NOTIFICATIONS -#################### - - -#################### -## AUTOMATION -#################### -automation: -#- alias: 'W_at_work' -# trigger: -# - platform: zone -# entity_id: device_tracker.will_wnexus -# zone: zone.barracuda_sj -# event: enter -# - platform: time -# at: '07:15' -# before: '09:00' -# action: -# service: ifttt.trigger -# data: {"event":"hassnotification_dadsms", "value1": "Will's at Work"} -- alias: "Update_Update" - trigger: - platform: state - entity_id: updater.updater - action: - service: ifttt.trigger - data: {"event":"hassnotification_willsms","value1":"HASS has an update"} -- alias: 'Christmas Roof ON' - trigger: - platform: sun - event: sunset - offset: '-01:00:00' - action: - service: homeassistant.turn_on - entity_id: switch.leviton_unknown_type1a02_id0334_switch_5 -- alias: 'Christmas Roof OFF' - trigger: - platform: time - hours: 1 - minutes: 0 - seconds: 0 - action: - service: homeassistant.turn_off - entity_id: switch.leviton_unknown_type1a02_id0334_switch_5 -- alias: 'Christmas Tree ON' - trigger: - platform: time - hours: 8 - minutes: 0 - seconds: 0 - action: - service: homeassistant.turn_on - entity_id: switch.leviton_unknown_type1a02_id0334_switch_4 -- alias: 'Christmas Tree (OFF)' - trigger: - platform: time - hours: 23 - minutes: 0 - seconds: 0 - action: - service: homeassistant.turn_off - entity_id: switch.leviton_unknown_type1a02_id0334_switch_4 -#- alias: test notify -# trigger: -# platform: time -# minutes: '/5' #every 5 min -# action: -# service: notify.pushEtta -# data: -# message: 5 Min Test - - -################################# -### COMPONENTS ### -################################# -#discovery: -sun: -#updater: -history: -#conversation: -frontend: -logbook: - -http: - api_password: [password goes here] - server_port: 8123 - ssl_certificate: /etc/letsencrypt/live/example.com/fullchain.pem - ssl_key: /etc/letsencrypt/live/example.com/privkey.pem - -ifttt: - key: [redacted] - -media_player 1: - platform: plex -#media_player 2: -# platform: squeezebox -# host: 192.168.2.80 -# port: 9000 -media_player 3: - platform: cast -media_player 4: - platform: kodi - url: http://192.168.2.129:8080/jsonrpc - user: kodi - password: kodi -media_player 5: - platform: plex -media_player 6: - platform: kodi - url: http://192.168.2.165/jsonrpc -media_player 7: - platform: samsungtv - host: 192.168.2.90 - name: Parents TV - -wink: - access_token: [redacted] - refresh_token: [redacted] - -zwave: - usb_path: /dev/ttyUSB0 - config_path: /usr/local/share/python-openzwave/config - polling_interval: 10000 - -#zigbee: -# device: /dev/ttyUSB1 -# baud: 115200 - -mqtt: - broker: 127.0.0.1 - port: 8883 - username: [redacted] - password: [redacted] - -device_tracker 1: - platform: owntracks - - track_new_devices: yes - interval_seconds: 40 - consider_home: 120 - -device_tracker 2: - platform: nmap_tracker - hosts: 192.168.2.0/24 - home_interval: 3 - -#sensor: -# platform: openweathermap -# api_key: [redacted] -# forecast: 1 -# monitored_conditions: -# - temperature -# - wind_speed -# - humidity -# - pressure -# - clouds -# - rain - -sensor 2: - platform: time_date - display_options: - - 'time' - - 'date' - - 'time_utc' - -### BEGIN METEO SENSORS ### -sensor 3: - platform: tcp - name: Outdoor Temp (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[2]}}{% endraw %}" - unit: C - -sensor 4: - platform: tcp - name: Outdoor Humidity (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[3]}}{% endraw %}" - unit: Percent - -sensor 5: - platform: tcp - name: Outdoor Dewpoint (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[4] }}{% endraw %}" - unit: C - -sensor 6: - platform: tcp - name: Wind Direction (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[7]}}{% endraw %}" - unit: Degrees - -sensor 7: - platform: tcp - name: Wind Gust (Meteohub) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[8]}}{% endraw %}" - unit: m/s - -sensor 8: - platform: tcp - name: Wind Speed (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[9]}}{% endraw %}" - unit: m/s - -sensor 9: - platform: tcp - name: Wind Chill (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[10]}}{% endraw %}" - unit: C - -sensor 10: - platform: tcp - name: Precip Rate (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[13]}}{% endraw %}" - unit: mm/hr - -sensor 11: - platform: tcp - name: Precip Total (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[14]}}{% endraw %}" - unit: mm - -sensor 12: - platform: tcp - name: Precip Change (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[15]}}{% endraw %}" - unit: mm - -sensor 13: - platform: tcp - name: Indoor Temp (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[18]}}{% endraw %}" - unit: C - -sensor 14: - platform: tcp - name: Indoor Humidity (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[19]}}{% endraw %}" - unit: percent - -sensor 15: - platform: tcp - name: Indoor Dewpoint (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[20]}}{% endraw %}" - unit: C - -sensor 16: - platform: tcp - name: Barometric Pressure (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[21]}}{% endraw %}" - unit: mb - -sensor 17: - platform: tcp - name: Sea Level Pressure (Meteobridge) - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charaset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[22]}}{% endraw %}" - unit: mb - -sensor 18: - platform: steam_online - api_key: [Redact] - accounts: - - 76561198012067051 - -switch: - platform: wemo -``` diff --git a/source/_cookbook/custom_panel_using_react.markdown b/source/_cookbook/custom_panel_using_react.markdown deleted file mode 100644 index e526487b0c..0000000000 --- a/source/_cookbook/custom_panel_using_react.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: page -title: "Custom Panel using React" -description: "" -date: 2016-07-29 12:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: User Interface ---- - -This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC](http://todomvc.com/) but instead of checking off to do items, you are turning lights and switches on/off. - -- It uses React to render the data. -- It hooks into Home Assistant JS which means updates pushed from the server are instantly rendered. -- It accesses properties made available from Polymer. -- It uses the user configuration for the component in the `configuration.yaml` file for rendering. -- It allows toggling the sidebar. - -Download the source [here](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Copy the file to `/panels/` (you might have to create the directory if it doesn't exist). - -Create an entry for the panel in your `configuration.yaml` file to enable it. - -```yaml -panel_custom: - - name: react - sidebar_title: TodoMVC - sidebar_icon: mdi:work - url_path: todomvc - config: - title: hello -``` - -This video shows the example in action. - -
    - -
    - diff --git a/source/_cookbook/custom_ui_by_andrey-git.markdown b/source/_cookbook/custom_ui_by_andrey-git.markdown deleted file mode 100644 index 5b593d3250..0000000000 --- a/source/_cookbook/custom_ui_by_andrey-git.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "Custom UI state-card by andrey-git" -description: "" -date: 2017-02-04 10:45 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: User Interface -ha_external_link: https://github.com/andrey-git/home-assistant-custom-ui ---- diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown deleted file mode 100644 index 98222e719c..0000000000 --- a/source/_cookbook/dim_and_brighten_lights.markdown +++ /dev/null @@ -1,173 +0,0 @@ ---- -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 deleted file mode 100644 index a53c90d9f0..0000000000 --- a/source/_cookbook/dim_lights_when_playing_media.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Dim lights when playing media" -description: "Dim lights up or down when playing media" -date: 2015-10-15 19:05 -sidebar: true -comments: false -sharing: true -footer: true -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](/components/media_player/), [lights](/components/light/) (transitions) and the [sun](/components/sun/) component. We'll use actions to detect media player state changes and [scenes](/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. - -```yaml -scene: - - name: Livingroom normal - entities: - light.light1: - state: on - transition: 2 - brightness_pct: 60 - light.light2: - state: on - transition: 2 - brightness_pct: 85 - - name: Livingroom dim - entities: - light.light1: - state: on - transition: 2 - brightness_pct: 30 - light.light2: - state: on - transition: 2 - brightness_pct: 55 -``` - - -#### {% linkable_title Automation %} -The paused/stopped state is best matched using "from: 'playing'". Adding in the sun condition as we only want this when it's dark. - -```yaml -automation: - - alias: "Media player paused/stopped" - trigger: - - platform: state - entity_id: media_player.htpc - from: 'playing' - to: 'idle' - condition: - - condition: state - entity_id: sun.sun - state: 'below_horizon' - action: - service: scene.turn_on - entity_id: scene.livingroom_normal - - - alias: "Media player playing" - trigger: - - platform: state - entity_id: media_player.htpc - to: 'playing' - from: 'idle' - condition: - - condition: state - entity_id: sun.sun - state: 'below_horizon' - action: - service: scene.turn_on - entity_id: scene.livingroom_dim -``` - diff --git a/source/_cookbook/fail2ban.markdown b/source/_cookbook/fail2ban.markdown deleted file mode 100644 index 505fad6272..0000000000 --- a/source/_cookbook/fail2ban.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: page -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 -sharing: true -footer: true -ha_category: Infrastructure ---- - -This is a quick guide on how to setup fail2ban for Home Assistant. This was originally in the [forum](https://community.home-assistant.io/t/is-there-a-log-file-for-invalid-logins-blocking-hackers/2892) but I created this here for people. - -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` -- `/etc/fail2ban/filter.d/hass.local` -- `/etc/fail2ban/jail.local` - -Contents of `/etc/fail2ban/fail2ban.local`: - -```text -[Definition] -logtarget = SYSLOG -``` - -Contents of `/etc/fail2ban/filter.d/hass.local`: - -```text -[INCLUDES] -before = common.conf - -[Definition] -failregex = ^%(__prefix_line)s.*Login attempt or request with invalid authentication from .*$ - -ignoreregex = -``` - -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.): - -```text -[hass-iptables] -enabled = true -filter = hass -action = iptables-allports[name=HASS] -logpath = /home/homeassistant/.homeassistant/home-assistant.log -maxretry = 5 -``` - -Finally restart fail2ban : `sudo systemctl restart fail2ban` - -Check your log to make sure it read in your settings : `tail -100 /var/log/syslog|grep fail` - -If all is well you should see this from your syslog: - -```bash -May 24 20:58:01 homeauto fail2ban.server[14997]: INFO Stopping all jails -May 24 20:58:02 homeauto fail2ban.jail[14997]: INFO Jail 'sshd' stopped -May 24 20:58:02 homeauto fail2ban-client[15206]: Shutdown successful -May 24 20:58:02 homeauto fail2ban.server[14997]: INFO Exiting Fail2ban -May 24 20:58:02 homeauto fail2ban-client[15213]: 2017-05-24 20:58:02,342 fail2ban.server [15215]: INFO Starting Fail2ban v0.9.6 -May 24 20:58:02 homeauto fail2ban-client[15213]: 2017-05-24 20:58:02,343 fail2ban.server [15215]: INFO Starting in daemon mode -May 24 20:58:02 homeauto fail2ban.server[15217]: INFO Changed logging target to SYSLOG (/dev/log) for Fail2ban v0.9.6 -May 24 20:58:02 homeauto fail2ban.database[15217]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3' -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Creating new jail 'sshd' -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'sshd' uses pyinotify {} -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Initiated 'pyinotify' backend -May 24 20:58:02 homeauto fail2ban.actions[15217]: INFO Set banTime = 600 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set findtime = 600 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set maxRetry = 5 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Added logfile = /var/log/auth.log -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set jail log file encoding to UTF-8 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set maxlines = 10 -May 24 20:58:02 homeauto fail2ban.server[15217]: INFO Jail sshd is not a JournalFilter instance -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Creating new jail 'hass-iptables' -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'hass-iptables' uses pyinotify {} -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Initiated 'pyinotify' backend -May 24 20:58:02 homeauto fail2ban.actions[15217]: INFO Set banTime = 600 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set findtime = 600 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set maxRetry = 5 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Added logfile = /opt/hass-prod-cfg/home-assistant.log -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Set jail log file encoding to UTF-8 -May 24 20:58:02 homeauto fail2ban.filter[15217]: INFO Date pattern set to `'^%y-%m-%d %H:%M:%S'`: `^Year2-Month-Day 24hour:Minute:Second` -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'sshd' started -May 24 20:58:02 homeauto fail2ban.jail[15217]: INFO Jail 'hass-iptables' started -``` - -That's it! - - -If you want to read more about fail2ban, some links are below: - - [fail2ban Split config](http://www.fail2ban.org/wiki/index.php/FEATURE_Split_config) - - [How To Protect SSH with Fail2Ban on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04) diff --git a/source/_cookbook/foscam_away_mode_PTZ.markdown b/source/_cookbook/foscam_away_mode_PTZ.markdown deleted file mode 100644 index d5b6e9ec0d..0000000000 --- a/source/_cookbook/foscam_away_mode_PTZ.markdown +++ /dev/null @@ -1,84 +0,0 @@ ---- -layout: page -title: "Foscam Recording during Away Mode Only using Pan/Tilt/Zoom Control and Motion Detection" -description: "Example of how to set Foscam to only have Motion Detection Recording while no one is home. When users are home the Foscam will indicate it is not recording by pointing down and away from users" -date: 2016-03-10 13:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -This requires a [Foscam IP Camera](/components/camera.foscam/) camera with PTZ (Pan, Tilt, Zoom) and CGI functionality ([Source](http://www.foscam.es/descarga/Foscam-IPCamera-CGI-User-Guide-AllPlatforms-2015.11.06.pdf)) - -Foscam Cameras can be controlled by Home Assistant through a number of CGI commands. -The following outlines examples of the switch, services, and scripts required to move between 2 preset destinations while controlling motion detection, but many other options of movement are provided in the Foscam CGI User Guide linked above. - -The `switch.foscam_motion` will control whether the motion detection is on or off. This switch supports `statecmd`, which checks the current state of motion detection. - -```yaml -# Replace admin and password with an "Admin" privileged Foscam user -# Replace ipaddress with the local IP address of your Foscam -switch: - platform: command_line - switches: - #Switch for Foscam Motion Detection - foscam_motion: - command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"' - command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"' - command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=)"' - value_template: '{% raw %}{{ value == "1" }}{% endraw %}' -``` - -The service `shell_command.foscam_turn_off` sets the camera to point down and away to indicate it is not recording, and `shell_command.foscam_turn_on` sets the camera to point where I'd like to record. h of these services require preset points to be added to your camera. See source above for additional information. - -```yaml -shell_command: - #Created a preset point in Foscam Web Interface named Off which essentially points the camera down and away - foscam_turn_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=Off&usr=admin&pwd=password"' - #Created a preset point in Foscam Web Interface named Main which points in the direction I would like to record - foscam_turn_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=Main&usr=admin&pwd=password"' -``` - -The `script.foscam_off` and `script.foscam_on` can be used to set the motion detection appropriately, and then move the camera. These scripts can be called as part of an automation with `device_tracker` triggers to set `home` and `not_home` modes for your Foscam and disable motion detection recording while `home`. - -```yaml -script: - foscam_off: - sequence: - - service: switch.turn_off - data: - entity_id: switch.foscam_motion - - service: shell_command.foscam_turn_off - foscam_on: - sequence: - - service: switch.turn_off - data: - entity_id: switch.foscam_motion - - service: shell_command.foscam_turn_on - - service: switch.turn_on - data: - entity_id: switch.foscam_motion -``` - -To automate Foscam being set to "on" (facing the correct way with motion sensor on), I used the following simple automation: - -```yaml -automation: - - alias: Set Foscam to Away Mode when I leave home - trigger: - platform: state - entity_id: group.family - from: 'home' - action: - service: script.foscam_on - - alias: Set Foscam to Home Mode when I arrive Home - trigger: - platform: state - entity_id: group.family - to: 'home' - action: - service: script.foscam_off -``` - diff --git a/source/_cookbook/google_maps_card.markdown b/source/_cookbook/google_maps_card.markdown deleted file mode 100644 index 1f3c9c1f01..0000000000 --- a/source/_cookbook/google_maps_card.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Show Google Maps as a card" -description: "Example how to show a Google Map as a Google card." -date: 2016-08-20 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: User Interface ---- - -Using the [generic camera platform] you can present any image on the internet as a camera. Starting release 0.27 these urls can also be based on a template. This example uses this functionality to point a generic camera at the Google Maps static image API and pass in the location of a device. - -It also leverages the `limit_refetch_to_url_change` option to ensure that we do not make a lot of requests to the Google Maps API. - -```yaml -# Example configuration.yaml entry. -# Shows device_tracker.demo_paulus on a map. -camera: - name: Paulus - platform: generic - still_image_url: {% raw %}https://maps.googleapis.com/maps/api/staticmap?center={{ states.device_tracker.demo_paulus.attributes.latitude }},{{ states.device_tracker.demo_paulus.attributes.longitude }}&zoom=13&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ states.device_tracker.demo_paulus.attributes.latitude }},{{ states.device_tracker.demo_paulus.attributes.longitude }}{% endraw %} - limit_refetch_to_url_change: true -``` - -

    - Screenshot showing Google Maps integration in Home Assistant front end. -

    - -[generic camera platform]: /components/camera.generic/ diff --git a/source/_cookbook/notify_if__new_ha_release.markdown b/source/_cookbook/notify_if__new_ha_release.markdown deleted file mode 100644 index bb32d0e32e..0000000000 --- a/source/_cookbook/notify_if__new_ha_release.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Send notification if new Home Assistant release" -description: "Basic example of how to send a notification if a new Home Assistant release is available" -date: 2016-07-17 10:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -The following example sends a notification via XMPP if a new Home Assistant release is available: - -```yaml -notify: - - platform: xmpp - name: jabber - sender: sender@jabber.org - password: !secret xmpp_password - recipient: recipient@jabber.org - -automation: - - alias: Update notifications - trigger: - - platform: state - entity_id: updater.updater - action: - service: notify.jabber - data: - message: 'There is a new Home Assistant release available.' -``` - -You can use [templates](/topics/templating/) to include the release number of Home Assistant if you prefer. The following example sends a notification via [Pushbullet](/components/notify.pushbullet/) with the Home Assistant version in the message. - -```yaml -notify: - platform: pushbullet - api_key: 'YOUR_KEY_HERE' - name: pushbullet - -automation: - - alias: Update notifications - trigger: - - platform: state - entity_id: updater.updater - action: - service: notify.pushbullet - data_template: - title: 'New Home Assistant Release' - target: 'YOUR_TARGET_HERE' #See Pushbullet component for usage - message: "Home Assistant {% raw %} {{ states.updater.updater.state }} {% endraw %} is now available." -``` - diff --git a/source/_cookbook/notify_if_over_threshold.markdown b/source/_cookbook/notify_if_over_threshold.markdown deleted file mode 100644 index c7dbc72ea1..0000000000 --- a/source/_cookbook/notify_if_over_threshold.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Send notification based on sensor" -description: "Basic example of how to send a templated notification if a sensor is over a given threshold" -date: 2016-02-25 15:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -The following example sends a notification via pushbullet if a sensor is over a critical value: - -```yaml - -notify me: - platform: pushbullet - api_key: "API_KEY_HERE" - name: mypushbullet - -automation: - - alias: FanOn - trigger: - platform: numeric_state - entity_id: sensor.furnace - above: 2 - action: - service: notify.mypushbullet - data_template: - title: "Furnace fan is running" - message: "Fan running because current is {% raw %}{{ states.sensor.furnace.state }}{% endraw %} amps" -``` - -If you also want a notification when it drops back down below that limit, you could add this as well: - -```yaml - - alias: FanOff - trigger: - platform: numeric_state - entity_id: sensor.furnace - below: 2 - action: - service: notify.mypushbullet - data_template: - title: "Furnace fan is stopped" - message: "Fan stopped because current is {% raw %}{{ states.sensor.furnace.state }}{% endraw %} amps" -``` diff --git a/source/_cookbook/owntracks_two_mqtt_broker.markdown b/source/_cookbook/owntracks_two_mqtt_broker.markdown deleted file mode 100644 index c4be879045..0000000000 --- a/source/_cookbook/owntracks_two_mqtt_broker.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: page -title: "OwnTracks with two MQTT brokers" -description: "Setting up OwnTracks with 2 MQTT brokers bridged for use with the MQTT bridge for SmartThings." -date: 2016-08-27 10:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Infrastructure ---- - -I ([surge919](https://github.com/surge919)) successfully tied in [OwnTracks](http://owntracks.org/) to Home Assistant and [SmartThings](https://www.smartthings.com/) while using authentication for external access. The MQTT bridge doesn't support authentication so I set up 2 MQTT instances. - -Here are the steps I performed. Hopefully it saves someone else some time. - -It seems to be working pretty well but if anyone sees something incorrect in my configuration, please let me know. This is my first real interaction with MQTT. - -Here's a summary of my setup: - -Two Docker instances for MQTT - -- 1 for internal use (the MQTT bridge for SmartThings - no authentication) -- 1 for external use (for OwnTracks - with authentication) - -All Docker configuration files are on my NAS so the Docker containers can be destroyed without affecting my actual configuration files. - -#### Docker setup for the mosquitto internal instance. No authentication for use with the MQTT bridge. - -```bash -$ docker run -ti -p 1883:1883 \ - -v /volume1/data/mosquitto-int/config:/mqtt/config:ro \ - -v /volume1/data/mosquitto-int/log:/mqtt/log \ - -v /volume1/data/mosquitto-int/data/:/mqtt/data/ \ - --name mosquitto-int -d toke/mosquitto -``` - -#### Docker setup for the mosquitto external instance. With authentication for use with Owntracks. - -```bash -$ docker run -ti -p 1884:1883 \ - -v /volume1/data/mosquitto-ext/config:/mqtt/config:ro \ - -v /volume1/data/mosquitto-ext/log:/mqtt/log \ - -v /volume1/data/mosquitto-ext/data/:/mqtt/data/ \ - -v /volume1/data/mosquitto-ext/etc:/etc/mosquitto \ - --name mosquitto-ext -d toke/mosquitto -``` - -Here are the config files: - -`/volume1/data/mosquitto-int/config/mosquitto.conf` - -```bash -connection mosquitto-ext -persistence_file mosquitto.db -try_private true -address 10.0.0.20:1884 -start_type automatic -sername test -password test -notifications true -topic owntracks/# in -log_type all -log_dest file /mqtt/log/mqtt.log -log_facility 5 -``` - -`/volume1/data/mosquitto-ext/config/mosquitto.conf` - -```bash -connection mosquitto-int -persistence_file mosquitto.db -try_private true -address 10.0.0.20:1883 -start_type automatic -username test -password test -notifications true -topic owntracks/# out -log_type all -log_dest file /mqtt/log/mqtt.log -log_facility 5 -allow_anonymous false -password_file /etc/mosquitto/pwfile -``` - -Create a password for `mosquitto-ext` - -```bash -$ docker exec -it mosquitto-ext /bin/bash -$ cd /etc/mosquitto/ -$ mosquitto_passwd -c /etc/mosquitto/pwfile -``` - -### OwnTracks settings for Android - -```bash -Preferences / Connection / Mode - Private MQTT - -Fill out - Host - Identification - Security: TLS disabled -``` - - diff --git a/source/_cookbook/perform_actions_based_on_input_select.markdown b/source/_cookbook/perform_actions_based_on_input_select.markdown deleted file mode 100644 index 235ef58351..0000000000 --- a/source/_cookbook/perform_actions_based_on_input_select.markdown +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: page -title: "Perform actions based on input select" -description: "Example playing media to chromecast based on input select element" -date: 2016-03-07 12:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -This example uses an [`input_select`](/components/input_select/) element to pick which mp3 file to play on a [Chromecast](components/media_player.cast/). - -```yaml -# Define our dropdown list -input_select: - lullaby: - name: Lullaby - options: - - Rain - - Babbling Brook - - None - initial: None - icon: mdi:weather-rainy - -# Define our media player -media_player: - - platform: cast - host: chromecast-nursery - name: Nursery - -automation: - # If you select "Rain", play the "rain.mp3" file - - alias: Play Rain Lullaby - - trigger: - platform: state - entity_id: input_select.lullaby - to: "Rain" - - action: - service: media_player.play_media - data: - entity_id: media_player.nursery - media_content_id: http://fileserver/rain.mp3 - media_content_type: audio/mp4 - - - # If you select "Babbling Brook", play the "babbling_brook.mp3" file - - alias: Play Babbling Brook Lullaby - - trigger: - platform: state - entity_id: input_select.lullaby - to: "Babbling Brook" - - action: - service: media_player.play_media - data: - entity_id: media_player.nursery - media_content_id: http://fileserver/babbling_brook.mp3 - media_content_type: audio/mp4 - - # If you select "None, turn the Chromecast off - - alias: Stop the Lullaby - - trigger: - platform: state - entity_id: input_select.lullaby - to: "None" - - action: - service: media_player.turn_off - data: - entity_id: media_player.nursery -``` -A little bit more complex example that uses [`input_select`](/components/input_select/) and template to decide what to play, and which [Chromecast](components/media_player.cast/) to play on. - -```yaml -input_select: - radio_station: - name: Radio Station - options: - - Z88.3 - - Virgin - - RMC - - rmcHQ - - 105 - - None - initial: None - icon: mdi:radio - radio_player: - name: Radio Player - options: - - Mansarda - - Doccia - - Bed - - Bath - - Salotto - - Salotto Video - - None - initial: None - icon: mdi:airplay - -automation: - - alias: Stop Streaming Radio - trigger: - - platform: state - entity_id: input_select.radio_station - to: "None" - action: - service: media_player.turn_off - data_template: - entity_id: >{% raw %} - {% if is_state("input_select.radio_player", "Mansarda") %}{% endraw %} - media_player.bed_2{% raw %} - {%-elif is_state("input_select.radio_player", "Doccia") %}{% endraw %} - media_player.bed_3{% raw %} - {%-elif is_state("input_select.radio_player", "Bed") %}{% endraw %} - media_player.bed{% raw %} - {%-elif is_state("input_select.radio_player", "Bath") %}{% endraw %} - media_player.bath{% raw %} - {%-elif is_state("input_select.radio_player", "Salotto") %}{% endraw %} - media_player.salotto{% raw %} - {%-elif is_state("input_select.radio_player", "Salotto Video") %}{% endraw %} - media_player.salotto_video{% raw %} - {% else %}{% endraw %} - none{% raw %} - {% endif %}{% endraw %} - - - alias: Stream Radio - Template - trigger: - - platform: state - entity_id: input_select.radio_station - action: - - service: media_player.play_media - data_template: - entity_id: >{% raw %} - {% if is_state("input_select.radio_player", "Mansarda") %}{% endraw %} - media_player.bed_2{% raw %} - {%-elif is_state("input_select.radio_player", "Doccia") %}{% endraw %} - media_player.bed_3{% raw %} - {%-elif is_state("input_select.radio_player", "Bed") %}{% endraw %} - media_player.bed{% raw %} - {%-elif is_state("input_select.radio_player", "Bath") %}{% endraw %} - media_player.bath{% raw %} - {%-elif is_state("input_select.radio_player", "Salotto") %}{% endraw %} - media_player.salotto{% raw %} - {%-elif is_state("input_select.radio_player", "Salotto Video") %}{% endraw %} - media_player.salotto_video{% raw %} - {% else %}{% endraw %} - none{% raw %} - {% endif %}{% endraw %} - media_content_id: >{% raw %} - {% if is_state("input_select.radio_station", "Z88.3") %}{% endraw %} - http://ice.zradio.org/z/high.mp3{% raw %} - {%-elif is_state("input_select.radio_station", "Virgin") %}{% endraw %} - http://icecast.unitedradio.it/Virgin.mp3{% raw %} - {%-elif is_state("input_select.radio_station", "RMC") %}{% endraw %} - http://icecast.unitedradio.it/RMC.mp3{% raw %} - {%-elif is_state("input_select.radio_station", "rmcHQ") %}{% endraw %} - http://icecast.unitedradio.it/rmcHQ.mp3{% raw %} - {%-elif is_state("input_select.radio_station", "105") %}{% endraw %} - http://icecast.unitedradio.it/Radio105.mp3{% raw %} - {% else %}{% endraw %} - none{% raw %} - {% endif %}{% endraw %} - media_content_type: 'audio/mp4' -``` diff --git a/source/_cookbook/python_component_automation.markdown b/source/_cookbook/python_component_automation.markdown deleted file mode 100644 index b098278555..0000000000 --- a/source/_cookbook/python_component_automation.markdown +++ /dev/null @@ -1,159 +0,0 @@ ---- -layout: page -title: "Automation in Code" -description: "A sample to do automations in Python Code." -date: 2016-02-14 0:40 -0800 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation in Python Examples ---- - -Example component to target an `entity_id` to: - - - turn it on at 7AM in the morning - - turn it on if anyone comes home and it is off - - turn it off if all lights are turned off - - turn it off if all people leave the house - - offer a service to turn it on for 10 seconds - -To set it up, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -example: - target: TARGET_ENTITY -``` - -Configuration variables: - -- **target** (*Required*): TARGET_ENTITY should be one of your devices that can be turned on and off, e.g., a light or a switch. Example value could be light.Ceiling or switch.AC (if you have these devices with those names). - -Create the file `/custom_components/example.py` and copy paste the content below: - - -```python -""" -Example of a custom component. -""" -import time -import logging - -from homeassistant.const import STATE_HOME, STATE_NOT_HOME, STATE_ON, STATE_OFF -from homeassistant.helpers import validate_config -from homeassistant.helpers.event_decorators import \ - track_state_change, track_time_change -from homeassistant.helpers.service import service -import homeassistant.components as core -from homeassistant.components import device_tracker -from homeassistant.components import light - -# The domain of your component. Should be equal to the name of your component. -DOMAIN = "example" - -# List of component names (string) your component depends upon. -# We depend on group because group will be loaded after all the components that -# initialize devices have been setup. -DEPENDENCIES = ['group', 'device_tracker', 'light'] - -# Configuration key for the entity id we are targeting. -CONF_TARGET = 'target' - -# Variable for storing configuration parameters. -TARGET_ID = None - -# Name of the service that we expose. -SERVICE_FLASH = 'flash' - -# Shortcut for the logger -_LOGGER = logging.getLogger(__name__) - - -def setup(hass, config): - """Setup example component.""" - global TARGET_ID - - # Validate that all required config options are given. - if not validate_config(config, {DOMAIN: [CONF_TARGET]}, _LOGGER): - return False - - TARGET_ID = config[DOMAIN][CONF_TARGET] - - # Validate that the target entity id exists. - if hass.states.get(TARGET_ID) is None: - _LOGGER.error("Target entity id %s does not exist", - TARGET_ID) - - # Tell the bootstrapper that we failed to initialize and clear the - # stored target id so our functions don't run. - TARGET_ID = None - return False - - # Tell the bootstrapper that we initialized successfully. - return True - - -@track_state_change(device_tracker.ENTITY_ID_ALL_DEVICES) -def track_devices(hass, entity_id, old_state, new_state): - """Called when the group.all devices change state.""" - # If the target id is not set, return - if not TARGET_ID: - return - - # If anyone comes home and the entity is not on, turn it on. - if new_state.state == STATE_HOME and not core.is_on(hass, TARGET_ID): - - core.turn_on(hass, TARGET_ID) - - # If all people leave the house and the entity is on, turn it off. - elif new_state.state == STATE_NOT_HOME and core.is_on(hass, TARGET_ID): - - core.turn_off(hass, TARGET_ID) - - -@track_time_change(hour=7, minute=0, second=0) -def wake_up(hass, now): - """Turn light on in the morning. - - Turn the light on at 7 AM if there are people home and it is not already - on. - """ - if not TARGET_ID: - return - - if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): - _LOGGER.info('People home at 7AM, turning it on') - core.turn_on(hass, TARGET_ID) - - -@track_state_change(light.ENTITY_ID_ALL_LIGHTS, STATE_ON, STATE_OFF) -def all_lights_off(hass, entity_id, old_state, new_state): - """If all lights turn off, turn off.""" - if not TARGET_ID: - return - - if core.is_on(hass, TARGET_ID): - _LOGGER.info('All lights have been turned off, turning it off') - core.turn_off(hass, TARGET_ID) - - -@service(DOMAIN, SERVICE_FLASH) -def flash_service(hass, call): - """Service that will toggle the target. - - Set the light to off for 10 seconds if on and vice versa. - """ - if not TARGET_ID: - return - - if core.is_on(hass, TARGET_ID): - core.turn_off(hass, TARGET_ID) - time.sleep(10) - core.turn_on(hass, TARGET_ID) - - else: - core.turn_on(hass, TARGET_ID) - time.sleep(10) - core.turn_off(hass, TARGET_ID) -``` diff --git a/source/_cookbook/python_component_mqtt_basic.markdown b/source/_cookbook/python_component_mqtt_basic.markdown deleted file mode 100644 index f038f21969..0000000000 --- a/source/_cookbook/python_component_mqtt_basic.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Basic MQTT Example" -description: "" -date: 2016-02-07 12:13 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Custom Python Component Examples ---- - -

    -This example requires you to have the [MQTT component](/components/mqtt/) up and running. -

    - -This is a simple hello world example to show the basics of using MQTT in a custom component. To use this example, create the file `/custom_components/hello_mqtt.py` and copy the below example code. - -This example follows a topic on MQTT and updates the state of an entity to the last message received on that topic. It will also register a service 'set_state' that will publish a message to the MQTT topic that we're listening to. - -```python -import homeassistant.loader as loader - -# The domain of your component. Should be equal to the name of your component. -DOMAIN = 'hello_mqtt' - -# List of component names (string) your component depends upon. -DEPENDENCIES = ['mqtt'] - - -CONF_TOPIC = 'topic' -DEFAULT_TOPIC = 'home-assistant/hello_mqtt' - - -def setup(hass, config): - """Set up the Hello MQTT component.""" - mqtt = loader.get_component('mqtt') - topic = config[DOMAIN].get('topic', DEFAULT_TOPIC) - entity_id = 'hello_mqtt.last_message' - - # Listener to be called when we receive a message. - def message_received(topic, payload, qos): - """Handle new MQTT messages.""" - hass.states.set(entity_id, payload) - - # Subscribe our listener to a topic. - mqtt.subscribe(hass, topic, message_received) - - # Set the initial state. - hass.states.set(entity_id, 'No messages') - - # Service to publish a message on MQTT. - def set_state_service(call): - """Service to send a message.""" - mqtt.publish(hass, topic, call.data.get('new_state')) - - # Register our service with Home Assistant. - hass.services.register(DOMAIN, 'set_state', set_state_service) - - # Return boolean to indicate that initialization was successfully. - return True -``` - -Load the component by adding the following to your `configuration.yaml`. When your component is loaded, a new entity should popup and there should be a new service available to call. - -```yaml -# configuration.yaml entry -hello_mqtt: - topic: some_mqtt/topic/here -``` - -You can call the service with example payload: - -```json -{ - "new_state": "some new state" -} -``` diff --git a/source/_cookbook/python_component_simple_alarm.markdown b/source/_cookbook/python_component_simple_alarm.markdown deleted file mode 100644 index 16e7d015da..0000000000 --- a/source/_cookbook/python_component_simple_alarm.markdown +++ /dev/null @@ -1,124 +0,0 @@ ---- -layout: page -title: "Flash lights when intruder detected" -description: "Detect intruders by checking if the light is turning on while no one is home." -date: 2016-02-14 0:40 -0800 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation in Python Examples ---- - -This example component will detect intruders. It does so by checking if lights are being turned on while there is no one at home. When this happens it will turn the lights red, flash them for 30 seconds and send a message via [the notify component](/components/notify/). It will also flash a specific light when a known person comes home. - -This component depends on the components [device_tracker](/components/device_tracker/) and [light](/components/light/) being setup. - -To set it up, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -simple_alarm: - known_light: light.Bowl - unknown_light: group.living_room -``` - -Configuration variables: - -- **known_light** (*Optional*): Which light/light group has to flash when a known device comes home. -- **unknown_light** (*Optional*): Which light/light group has to flash red when light turns on while no one home. - -Create the file `/custom_components/simple_alarm.py` and copy paste the content below: - -```python -"""Simple alarm component.""" -import logging - -import homeassistant.loader as loader -from homeassistant.components import device_tracker, light, notify -from homeassistant.helpers.event import track_state_change -from homeassistant.const import STATE_ON, STATE_OFF, STATE_HOME, STATE_NOT_HOME - -_LOGGER = logging.getLogger(__name__) - -DOMAIN = 'simple_alarm"' - -DEPENDENCIES = ['group', 'device_tracker', 'light'] - -# Attribute to tell which light has to flash when a known person comes home -# If omitted will flash all. -CONF_KNOWN_LIGHT = 'known_light' - -# Attribute to tell which light has to flash when an unknown person comes home -# If omitted will flash all. -CONF_UNKNOWN_LIGHT = 'unknown_light' - -# Services to test the alarms -SERVICE_TEST_KNOWN_ALARM = 'test_known' -SERVICE_TEST_UNKNOWN_ALARM = 'test_unknown' - - -def setup(hass, config): - """Set up the simple alarms.""" - light_ids = [] - - for conf_key in (CONF_KNOWN_LIGHT, CONF_UNKNOWN_LIGHT): - light_id = config[DOMAIN].get(conf_key, light.ENTITY_ID_ALL_LIGHTS) - - if hass.states.get(light_id) is None: - _LOGGER.error( - "Light id %s could not be found in state machine", light_id) - - return False - - light_ids.append(light_id) - - # pylint: disable=unbalanced-tuple-unpacking - known_light_id, unknown_light_id = light_ids - - if hass.states.get(device_tracker.ENTITY_ID_ALL_DEVICES) is None: - _LOGGER.error("No devices are being tracked, cannot setup alarm") - - return False - - def known_alarm(): - """ Fire an alarm if a known person arrives home. """ - light.turn_on(hass, known_light_id, flash=light.FLASH_SHORT) - - def unknown_alarm(): - """ Fire an alarm if the light turns on while no one is home. """ - light.turn_on( - hass, unknown_light_id, - flash=light.FLASH_LONG, rgb_color=[255, 0, 0]) - - # Send a message to the user - notify.send_message( - hass, "The lights just got turned on while no one was home.") - - # Setup services to test the effect - hass.services.register( - DOMAIN, SERVICE_TEST_KNOWN_ALARM, lambda call: known_alarm()) - hass.services.register( - DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, lambda call: unknown_alarm()) - - def unknown_alarm_if_lights_on(entity_id, old_state, new_state): - """Called when a light has been turned on.""" - if not device_tracker.is_on(hass): - unknown_alarm() - - track_state_change( - hass, light.ENTITY_ID_ALL_LIGHTS, - unknown_alarm_if_lights_on, STATE_OFF, STATE_ON) - - def ring_known_alarm(entity_id, old_state, new_state): - """Called when a known person comes home.""" - if light.is_on(hass, known_light_id): - known_alarm() - - # Track home coming of each device - track_state_change( - hass, hass.states.entity_ids(device_tracker.DOMAIN), - ring_known_alarm, STATE_NOT_HOME, STATE_HOME) - - return True -``` diff --git a/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown b/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown deleted file mode 100644 index 9e2f066337..0000000000 --- a/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown +++ /dev/null @@ -1,98 +0,0 @@ ---- -layout: page -title: "Restart Home Assistant if Wemo Switch is not detected" -description: "Restart Home Assistant if Wemo Switch is not detected." -date: 2016-01-29 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -### {% linkable_title Restart Home Assistant %} - -This configuration example is restarting Home Assistant if a [WeMo](/components/switch.wemo/) switch is not detected. An additional MQTT switch is present for stopping Home Assistant and can be triggered by [IFTTT](/components/ifttt/). The running batch script will automatically restart Home Assistant if the process isn't found anymore. - -```yaml -mqtt: - broker: 127.0.0.1 - port: 1883 - client_id: home-assistant-1 - keepalive: 60 - -device_tracker: - - platform: nmap_tracker - hosts: 192.168.0.1-255 - home_interval: 1 - interval_seconds: 30 - consider_home: 900 - -ifttt: - key: *** - -notify: - - platform: pushbullet - api_key: *** - name: pushbullet - -switch: - - platform: wemo - - platform: mqtt - state_topic: "home/killhass" - command_topic: "home/killhass" - name: "KillHass" - qos: 0 - payload_on: "ON" - payload_of: "OFF" - optimistic: false - -script: - restarthawemo: - alias: "Restart HA if WeMo isn't found after 15 minutes" - sequence: - - delay: - minutes: 15 - - service: notify.pushbullet - data: - message: 'WeMo not found, restarting HA' - - service: switch.turn_on - data: - entity_id: switch.killhass - -automation: -- alias: "Restart HA if WeMo switch isn't found after 15 minutes" - trigger: - platform: state - entity_id: device_tracker.wemo - from: 'not_home' - to: 'home' - condition: - - condition: template - value_template: {% raw %}'{% if states.switch.wemo %}false{% else %}true{% endif %}'{% endraw %} - - condition: state - entity_id: script.restarthawemo - state: 'off' - action: - service: homeassistant.turn_on - entity_id: script.restarthawemo -- alias: 'Stop HA' - trigger: - - platform: state - entity_id: switch.KillHass - to: 'on' - action: - service: homeassistant.stop - - alias: 'Stop restarting HA is WeMo is found' - trigger: - platform: template - value_template: {% raw %}'{% if states.switch.wemo %}true{% else %}false{% endif %}'{% endraw %} - condition: - condition: state - entity_id: script.restarthawemo - state: 'on' - action: - service: homeassistant.turn_off - entity_id: script.restarthawemo -``` - diff --git a/source/_cookbook/send_a_reminder.markdown b/source/_cookbook/send_a_reminder.markdown deleted file mode 100644 index e08d2c9767..0000000000 --- a/source/_cookbook/send_a_reminder.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "Send a reminder" -description: "Send a reminder" -date: 2015-12-16 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -Always forget to eat lunch? Let Home Assistant send you a reminder. - -Add a [notify platform](/components/notify/) of your choice. - -```yaml -notify: - - platform: xmpp - name: jabber - sender: YOUR_JID - password: YOUR_JABBER_ACCOUNT_PASSWORD - recipient: YOUR_RECIPIENT -``` - -and automation part to your `configuration.yaml` file. - -```yaml -automation: - - alias: Send message at a given time - trigger: - platform: time - hours: 12 - minutes: 15 - seconds: 0 - action: - service: notify.jabber - data: - message: 'Time for lunch' -``` - - diff --git a/source/_cookbook/sonos_say.markdown b/source/_cookbook/sonos_say.markdown deleted file mode 100644 index fd4b04b402..0000000000 --- a/source/_cookbook/sonos_say.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Sonos say script to speak with text-to-speech" -description: "Sonos say script to use text-to-speech with Sonos" -date: 2017-01-18 00:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -#### {% linkable_title Sonos say script to speak with text-to-speech %} - -This script allows you to use [TTS](/components/#text-to-speech) on Sonos. - -```yaml -script: - sonos_say: - alias: "Sonos TTS script" - sequence: - - service: media_player.sonos_snapshot - data_template: - entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %} - - service: media_player.sonos_unjoin - data_template: - entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %} - - service: media_player.volume_set - data_template: - entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %} - volume_level: {% raw %}"{{ volume }}"{% endraw %} - - service: tts.voicerss_say - data_template: - entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %} - message: {% raw %}"{{ message }}"{% endraw %} - - delay: {% raw %}"{{ delay }}"{% endraw %} - - service: media_player.sonos_restore - data_template: - entity_id: {% raw %}"{{ sonos_entity }}"{% endraw %} -``` - -We call this now with: -```yaml -automation: - - alias: 'test' - trigger: - - platform: state - entity_id: input_boolean.mytest - action: - - service: script.sonos_say - data: - sonos_entity: media_player.office - volume: 0.5 - message: 'Your husband coming home!' - delay: '00:00:05' -``` -Note that this example uses the `voicerss` text-to-speech platform. There are many platforms that can be used. The one installed by default with Home Assistant is Google TTS. This appears in your `configuration.yaml` file as: - -``` - tts: - - platform: google -``` - -If you want to use this TTS engine, change the line in the example provided to: -``` -- service: tts.google_say -``` diff --git a/source/_cookbook/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown deleted file mode 100644 index 13eca37354..0000000000 --- a/source/_cookbook/track_battery_level.markdown +++ /dev/null @@ -1,49 +0,0 @@ ---- -layout: page -title: "Track your battery level" -description: "Basic example how to track the battery level of your mobile devices." -date: 2016-01-29 09:00 -sidebar: true -comments: false -sharing: true -footer: true -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/). You can also the `battery` [sensor device class](/components/sensor/#device-class) to dynamically change the icon with the battery level. - -{% raw %} -```yaml -sensor: - - platform: template - sensors: - battery_iphone: - friendly_name: iPhone Battery - unit_of_measurement: '%' - value_template: >- - {%- if states.device_tracker.iphone.attributes.battery %} - {{ states.device_tracker.iphone.attributes.battery|round }} - {% else %} - {{ states.sensor.battery_iphone.state }} - {%- endif %} - device_class: battery -``` -{% endraw %} - -### {% 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. 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/username/deviceid" - name: "Battery Tablet" - unit_of_measurement: "%" - value_template: '{{ value_json.batt }}' - device_class: battery -``` -{% 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 deleted file mode 100644 index 65f5cb6b59..0000000000 --- a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: page -title: "Turn on lights for 10 minutes after motion detected" -description: "Turn on lights for 10 minutes when motion detected." -date: 2015-10-08 19:05 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Automation Examples ---- - -#### {% linkable_title Turn on lights with a resetable off timer %} - -This recipe will turn on a light when there is motion and turn off the light when ten minutes has passed without any motion events. - -```yaml -automation: -- alias: Turn on kitchen light when there is movement - trigger: - platform: state - entity_id: sensor.motion_sensor - to: 'on' - action: - service: homeassistant.turn_on - entity_id: light.kitchen_light - -- alias: Turn off kitchen light 10 minutes after last movement - trigger: - platform: state - entity_id: sensor.motion_sensor - to: 'off' - for: - minutes: 10 - action: - service: homeassistant.turn_off - entity_id: light.kitchen_light -``` diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml deleted file mode 100644 index d68d4c26ca..0000000000 --- a/source/_data/glossary.yml +++ /dev/null @@ -1,48 +0,0 @@ -- 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 also the command line tool." -- topic: Hass.io - description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended." -- 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 configurations 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 deleted file mode 100644 index c5f3d7cbd7..0000000000 --- a/source/_docs/asterisk_mbox.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: page -title: "Asterisk Voicemail Server Installation" -description: "Instructions on 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 an `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.markdown b/source/_docs/automation.markdown deleted file mode 100644 index e50db5d9bf..0000000000 --- a/source/_docs/automation.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Automating Home Assistant" -description: "Steps to help you get automation setup in Home Assistant." -date: 2015-09-19 09:40 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Home Assistant offers a wide range of automation configurations. In this section, we'll try to guide you through all the different possibilities and options. Besides this documentation, there are also a couple of people who have made their automations [publicly available](/cookbook/#example-configurationyaml). - -### {% linkable_title Automation basics %} - -Before you can go ahead and create your own automations, it's important to learn the basics. To explore these, let's have a look at the following example home automation rule: - -```text -(trigger) When Paulus arrives home -(condition) and it is after sunset: -(action) Turn the lights in the living room on -``` - -The example consists of three different parts: a [trigger](/docs/automation/trigger/), a [condition](/docs/automation/condition/) and an [action](/docs/automation/action/). - -The first line is the **trigger** of the automation rule. Triggers describe events that should trigger the automation rule. In this case, it is a person arriving home, which can be observed in Home Assistant by observing the state of Paulus changing from 'not_home' to 'home'. - -The second line is the **condition**. Conditions are optional tests that can limit an automation rule to only work in your specific use cases. A condition will test against the current state of the system. This includes the current time, devices, people and other things like the sun. In this case, we only want to act when the sun has set. - -The third part is the **action**, which will be performed when a rule is triggered and all conditions are met. For example, it can turn a light on, set the temperature on your thermostat or activate a scene. - -

    -The difference between a condition and a trigger can be confusing as they are very similar. Triggers look at the actions, while conditions look at the results: turning a light on versus a light being on. -

    - -### {% linkable_title Exploring the internal state %} - -Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. The icon will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts: - -| Name | Description | Example | -| ---- | ----- | ---- | -| Entity ID | Unique identifier for the entity. | `light.kitchen` -| State | The current state of the device. | `home` -| Attributes | Extra data related to the device and/or current state. | `brightness` - -State changes can be used as the source of triggers and the current state can be used in conditions. - -Actions are all about calling services. To explore the available services open the Services developer tool. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service `light.turn_on` is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use. - -You have to set an initial state in your automations in order for Home Assistant to enable them upon restart. - -```text -automation: -- alias: Automation Name - initial_state: True - trigger: - ... -``` diff --git a/source/_docs/automation/action.markdown b/source/_docs/automation/action.markdown deleted file mode 100644 index 0df212be7c..0000000000 --- a/source/_docs/automation/action.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: page -title: "Automation Actions" -description: "Automations result in action." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-action/ ---- - -The action of an automation rule is what is being executed when a rule fires. The action part follows the [script syntax](/docs/scripts/) which can be used to interact with anything via services or events. For services you can specify the entity_id that it should apply to and optional service parameters (to specify for example the brightness). - -You can also call the service to activate [a scene](/components/scene/) which will allow you to define how you want your devices to be and have Home Assistant call the right services. - -```yaml -automation: - # Change the light in the kitchen and living room to 150 brightness and color red. - trigger: - platform: sun - event: sunset - action: - service: light.turn_on - data: - brightness: 150 - rgb_color: [255, 0, 0] - entity_id: - - light.kitchen - - light.living_room -automation 2: - # Notify me on my mobile phone of an event - trigger: - platform: sun - event: sunset - offset: -00:30 - action: - # Actions are scripts so can also be a list of actions - - service: notify.notify - data: - message: Beautiful sunset! - - delay: 0:35 - - service: notify.notify - data: - message: Oh wow you really missed something great. -``` - -Conditions can also be part of an action. You can combine multiple service calls and conditions in a single action, and they will be processed in the order you put them in. If the result of a condition is false, the action will stop there so any service calls after that condition will not be executed. - -```yaml -automation: -- alias: 'Enciende Despacho' - trigger: - platform: state - entity_id: sensor.mini_despacho - to: 'ON' - action: - - service: notify.notify - data: - message: Testing conditional actions - - condition: or - conditions: - - condition: template - value_template: '{% raw %}{{ states.sun.sun.attributes.elevation < 4 }}{% endraw %}' - - condition: template - value_template: '{% raw %}{{ states.sensor.sensorluz_7_0.state < 10 }}{% endraw %}' - - service: scene.turn_on - entity_id: scene.DespiertaDespacho -``` diff --git a/source/_docs/automation/condition.markdown b/source/_docs/automation/condition.markdown deleted file mode 100644 index cae9f96a97..0000000000 --- a/source/_docs/automation/condition.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Automation Conditions" -description: "Automations can test conditions when invoked." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-condition/ ---- - -Conditions are an optional part of an automation rule and can be used to prevent an action from happening when triggered. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off. - -The available conditions for an automation are the same as for the script syntax so see that page for a [full list of available conditions](/docs/scripts/conditions/). - -Example of using condition: - -```yaml -automation: -- alias: 'Enciende Despacho' - trigger: - platform: state - entity_id: sensor.mini_despacho - to: 'on' - condition: - condition: or - conditions: - - condition: template - value_template: '{% raw %}{{ states.sun.sun.attributes.elevation < 4 }}{% endraw %}' - - condition: template - value_template: '{% raw %}{{ states.sensor.sensorluz_7_0.state < 10 }}{% endraw %}' - action: - - service: scene.turn_on - entity_id: scene.DespiertaDespacho -``` - diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown deleted file mode 100644 index 31bced2ddb..0000000000 --- a/source/_docs/automation/editor.markdown +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: page -title: "Automation Editor" -description: "Instructions on how to use the automation editor." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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. - -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. - -

    - -

    - -If the value of the sensor is greater than 10, then the automation rule should apply. - -

    - -

    - -Firing a [persistent notification](/components/persistent_notification/) is the result. - -

    - -

    - -As "Service Data" we want a simple text that is shown as part of the notification. - -```json -{ - "message": "Sensor value greater than 10" -} -``` - -Don't forget to save your new automation rule. 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 %} - -First, check that you have activated the configuration editor. - -```yaml -# Activate the configuration editor -config: -``` - -The automation editor reads and writes to the file `automations.yaml` in the root of your [configuration](/docs/configuration/) folder. -Currently, both the name of this file and its location are fixed. -Make sure that you have set up the automation component to read from it: - -```yaml -# Configuration.yaml example -automation: !include automations.yaml -``` - -If you still want to use your old automation section, add a label to the old entry: - -```yaml -automation old: -- trigger: - platform: ... -``` - -You can use the `automation:` and `automation old:` sections at the same time: - - `automation old:` to keep your manual designed automations - - `automation:` to save the automation created by the online editor - -```yaml -automation: !include automations.yaml -automation old: !include_dir_merge_list automations -``` - - -## {% linkable_title Migrating your automations to `automations.yaml` %} - -If you want to migrate your old automations to use the editor, you'll have to copy them to `automations.yaml`. Make sure that `automations.yaml` remains a list! For each automation that you copy over, you'll have to add an `id`. This can be any string as long as it's unique. - -For example, the below automation will be triggered when the sun goes from below the horizon to above the horizon. Then, if the temperature is between 17 and 25 degrees, a light will be turned on. - -```yaml -# Example automations.yaml entry -- id: my_unique_id # <-- Required for editor to work. - alias: Hello world - trigger: - - platform: state - entity_id: sun.sun - from: below_horizon - to: above_horizon - condition: - - condition: numeric state - entity_id: sensor.temperature - above: 17 - below: 25 - value_template: '{% raw %}{{ float(state.state) + 2 }}{% endraw %}' - action: - - service: light.turn_on -``` - -

    -Any comments in the YAML file will be lost when you update an automation via the editor. -

    - diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown deleted file mode 100644 index 2e2ade256f..0000000000 --- a/source/_docs/automation/examples.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Automation Examples" -description: "Some automation examples to get you started." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-examples/ ---- - -Just some sample automation rules to get you started. - -{% raw %} -```yaml -# Example of entry in configuration.yaml -automation: -# Turns on lights 1 hour before sunset if people are home -# and if people get home between 16:00-23:00 - - alias: 'Rule 1 Light on in the evening' - trigger: - # Prefix the first line of each trigger configuration - # with a '-' to enter multiple - - platform: sun - event: sunset - offset: '-01:00:00' - - platform: state - entity_id: group.all_devices - to: 'home' - condition: - # Prefix the first line of each condition configuration - # with a '-'' to enter multiple - - condition: state - entity_id: group.all_devices - state: 'home' - - condition: time - after: '16:00:00' - before: '23:00:00' - action: - # With a single service call, we don't need a '-' before service - though you can if you want to - service: homeassistant.turn_on - entity_id: group.living_room - -# Turn off lights when everybody leaves the house - - alias: 'Rule 2 - Away Mode' - trigger: - platform: state - entity_id: group.all_devices - to: 'not_home' - action: - service: light.turn_off - entity_id: group.all_lights - -# Notify when Paulus leaves the house in the evening - - alias: 'Leave Home notification' - trigger: - platform: zone - event: leave - zone: zone.home - entity_id: device_tracker.paulus - condition: - condition: time - after: '20:00' - action: - service: notify.notify - data: - message: 'Paulus left the house' - -# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component. - - alias: 'Xiaomi Cube Action' - hide_entity: false - initial_state: false - trigger: - platform: event - event_type: cube_action - event_data: - entity_id: binary_sensor.cube_158d000103a3de - action: - service_template: notify.pushover - data_template: - title: "Cube event detected" - message: "Cube has triggered this event: {{ trigger.event }}" -``` -{% endraw %} diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown deleted file mode 100644 index 74f0427f48..0000000000 --- a/source/_docs/automation/templating.markdown +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: page -title: "Automation Templating" -description: "Advanced automation documentation using templating." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-templating/ ---- - -In Home Assistant 0.19 we introduced a new powerful feature: variables in scripts and automations. This makes it possible to adjust your condition and action based on the information of the trigger. - -The trigger data made is available during [template](/docs/configuration/templating/) rendering as the `trigger` variable. - -```yaml -# Example configuration.yaml entries -automation: - trigger: - platform: state - entity_id: device_tracker.paulus - action: - service: notify.notify - data_template: - message: >{% raw %} - Paulus just changed from {{ trigger.from_state.state }} - to {{ trigger.to_state.state }}{% endraw %} - -automation 2: - trigger: - platform: mqtt - topic: /notify/+ - action: - service_template: >{% raw %} - notify.{{ trigger.topic.split('/')[-1] }}{% endraw %} - data_template: - message: {% raw %}'{{ trigger.payload }}'{% endraw %} -``` - -## {% linkable_title Important Template Rules %} - -There are a few very important rules to remember when writing automation templates: - -1. You ***must*** use `data_template` in place of `data` when using templates in the `data` section of a service call. -1. You ***must*** use `service_template` in place of `service` when using templates in the `service` section of a service call. -1. You ***must*** surround single-line templates with double quotes (`"`) or single quotes (`'`). -1. It is advised that you prepare for undefined variables by using `if ... is not none` or the [`default` filter](http://jinja.pocoo.org/docs/dev/templates/#default), or both. -1. It is advised that when comparing numbers, you convert the number(s) to a [`float`](http://jinja.pocoo.org/docs/dev/templates/#float) or an [`int`](http://jinja.pocoo.org/docs/dev/templates/#int) by using the respective [filter](http://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters). -1. While the [`float`](http://jinja.pocoo.org/docs/dev/templates/#float) and [`int`](http://jinja.pocoo.org/docs/dev/templates/#int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables. - -Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates. - -## {% linkable_title Trigger State Object %} - -Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity could be one of the more common questions. Here are a few ways for the [`state`](#state), [`numeric_state`](#numeric_state) and [`template`](#template) triggers: - -* `trigger.from_state` will return the **previous** [state object](/docs/configuration/state_object/) of the entity. -* `trigger.to_state` will return the **new** [state object](/docs/configuration/state_object/) that triggered trigger. -* `states[trigger.to_state.domain][trigger.to_state.object_id]` will return the **current** [state object](/docs/configuration/state_object/) of the entity. - -## {% linkable_title Available Trigger Data %} - -The following tables show the available trigger data per platform. - -### {% linkable_title event %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `event`. -| `trigger.event` | Event object that matched. -| `trigger.event.data` | Optional data - -### {% linkable_title mqtt %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `mqtt`. -| `trigger.topic` | Topic that received payload. -| `trigger.payload` | Payload. -| `trigger.payload_json` | Dictonary of the JSON parsed payload. -| `trigger.qos` | QOS of payload. - -### {% linkable_title numeric_state %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `numeric_state` -| `trigger.entity_id` | Entity ID that we observe. -| `trigger.below` | The below threshold, if any. -| `trigger.above` | The above threshold, if any. -| `trigger.from_state` | The previous [state object] of the entity. -| `trigger.to_state` | The new [state object] that triggered trigger. - -### {% linkable_title state %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `state` -| `trigger.entity_id` | Entity ID that we observe. -| `trigger.from_state` | The previous [state object] of the entity. -| `trigger.to_state` | The new [state object] that triggered trigger. -| `trigger.for` | Timedelta object how long state has been to state, if any. - -### {% linkable_title sun %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `sun` -| `trigger.event` | The event that just happened: `sunset` or `sunrise`. -| `trigger.offset` | Timedelta object with offset to the event, if any. - -### {% linkable_title template %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `template` -| `trigger.entity_id` | Entity ID that caused change. -| `trigger.from_state` | Previous [state object] of entity that caused change. -| `trigger.to_state` | New [state object] of entity that caused template to change. - -### {% linkable_title time %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `time` -| `trigger.now` | DateTime object that triggered the time trigger. - -### {% linkable_title zone %} - -| Template variable | Data | -| ---- | ---- | -| `trigger.platform` | Hardcoded: `zone` -| `trigger.entity_id` | Entity ID that we are observing. -| `trigger.from_state` | Previous [state object] of the entity. -| `trigger.to_state` | New [state object] of the entity. -| `trigger.zone` | State object of zone -| `trigger.event` | Event that trigger observed: `enter` or `leave`. - -[state object]: /docs/configuration/state_object/ diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown deleted file mode 100644 index 748ff6313d..0000000000 --- a/source/_docs/automation/trigger.markdown +++ /dev/null @@ -1,213 +0,0 @@ ---- -layout: page -title: "Automation Trigger" -description: "All the different ways how automations can be triggered." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-trigger/ ---- - -Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action. - -### {% linkable_title Event trigger %} -Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present. - -Events can be fired by components or via the API. There is no limitation to the types. A list of built-in events can be found [here](/docs/configuration/events/). - -```yaml -automation: - trigger: - platform: event - event_type: MY_CUSTOM_EVENT - # optional - event_data: - mood: happy -``` - -

    - Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' platform below instead. -

    - -### {% linkable_title Home Assistant trigger %} - -Triggers when Home Assistant starts up or shuts down. - -```yaml -automation: - trigger: - platform: homeassistant - # Event can also be 'shutdown' - event: start -``` - -### {% linkable_title MQTT trigger %} -Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic. - -```yaml -automation: - trigger: - platform: mqtt - topic: living_room/switch/ac - # Optional - payload: 'on' -``` - -### {% linkable_title Numeric state trigger %} -Triggers when numeric value of an entity's state crosses a given 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 or from below to above the given threshold. - -```yaml -automation: - trigger: - platform: numeric_state - entity_id: sensor.temperature - # Optional - value_template: '{% raw %}{{ state.attributes.battery }}{% endraw %}' - # 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 goes to 17.1-24.9 (from 17 or below, or 25 or above) -would fire this trigger. -

    - -### {% linkable_title State trigger %} - -Triggers when the state of a given entity changes. If only entity_id is given trigger will activate for all state changes, even if only state attributes change. - -```yaml -automation: - trigger: - platform: state - entity_id: device_tracker.paulus, device_tracker.anne_therese - # Optional - from: 'not_home' - # Optional - to: 'home' - - # If given, will trigger when state has been the to state for X time. - for: - hours: 1 - minutes: 10 - seconds: 5 -``` - -

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

    - -### {% linkable_title Sun trigger %} -Triggers when the sun is setting or rising. An optional time offset can be given to have it trigger a set time before or after the sun event (i.e. 45 minutes before sunset, when dusk is setting in). - -```yaml -automation: - trigger: - platform: sun - # Possible values: sunset, sunrise - event: sunset - # Optional time offset. This example is 45 minutes. - offset: '-00:45:00' -``` - -Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting. - -```yaml -automation: - alias: "Exterior Lighting on when dark outside" - trigger: - platform: numeric_state - entity_id: sun.sun - value_template: "{% raw %}{{ state.attributes.elevation }}{% endraw %}" - # Can be a positive or negative number - below: -4.0 - action: - service: switch.turn_on - entity_id: switch.exterior_lighting -``` -The US Naval Observatory has a [tool](http://aa.usno.navy.mil/data/docs/AltAz.php) that will help you estimate what the solar angle will be at any specific time. - -### {% linkable_title Template trigger %} - -Template triggers work by evaluating a [template] on every state change for all of the recognized entities. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below). -With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`) - -```yaml -automation: - trigger: - platform: template - value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}" -``` - -[template]: /docs/configuration/templating/ - -### {% linkable_title Time trigger %} - -Time can be triggered in many ways. The most common is to specify `at` and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a `/` to match whenever the value is divisible by that number. You cannot use `at` together with hour, minute or second. - -```yaml -automation: - trigger: - platform: time - # Matches every hour at 5 minutes past whole - minutes: 5 - seconds: 00 - -automation 2: - trigger: - platform: time - # When 'at' is used, you cannot also match on hour, minute, seconds. - # Military time format. - at: '15:32:00' - -automation 3: - trigger: - platform: time - # You can also match on interval. This will match every 5 minutes - minutes: '/5' - seconds: 00 -``` -

    - Remember that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute. -

    - -### {% linkable_title Zone trigger %} - -Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. This includes [GPS Logger](/components/device_tracker.gpslogger/), the [OwnTracks platform](/components/device_tracker.owntracks/), and the [iCloud platform](/components/device_tracker.icloud/). - -```yaml -automation: - trigger: - platform: zone - entity_id: device_tracker.paulus - zone: zone.home - # Event is either enter or leave - event: enter # or "leave" -``` - - -### {% linkable_title Multiple triggers %} - -When your want your automation rule to have multiple triggers, just prefix the first line of each trigger with a dash (-) and indent the next lines accordingly. Whenever one of the triggers fires, your rule is executed. - -```yaml -automation: - trigger: - # first trigger - - platform: time - minutes: 5 - seconds: 00 - # our second trigger is the sunset - - platform: sun - event: sunset -``` diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown deleted file mode 100644 index 86cf9c9e47..0000000000 --- a/source/_docs/automation/troubleshooting.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: page -title: "Troubleshooting Automations" -description: "Tips on how to troubleshoot your automations." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -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: - -```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 -INFO [homeassistant.components.automation] Initialized rule Rain is over -``` - -The Logbook component will show a line entry when an automation is triggered. You can look at the previous entry to determine which trigger in the rule triggered the event. - -![Logbook example](/images/components/automation/logbook.png) - -[template]: /topics/templating/ diff --git a/source/_docs/autostart.markdown b/source/_docs/autostart.markdown deleted file mode 100644 index 48ca9fb411..0000000000 --- a/source/_docs/autostart.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Autostart Home Assistant" -description: "Instructions on how to setup Home Assistant to launch on start." -date: 2015-9-1 22:57 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/autostart/ ---- - -Once you get started with Home Assistant you want it to start automatically when you launch your machine. To help you get started we've compiled a few guides for different systems. - - - [systemd (Linux)](/docs/autostart/systemd/) - - [Upstart (Linux)](/docs/autostart/upstart/) - - [init.d (Linux)](/docs/autostart/init.d/) - - [macOS](/docs/autostart/macos/) - - [Synology NAS](/docs/autostart/synology/) diff --git a/source/_docs/autostart/init.d.markdown b/source/_docs/autostart/init.d.markdown deleted file mode 100644 index db3ff12fee..0000000000 --- a/source/_docs/autostart/init.d.markdown +++ /dev/null @@ -1,308 +0,0 @@ ---- -layout: page -title: "Autostart using init.d" -description: "Documentation about setting up Home Assistant as a daemon running under init.d." -release_date: 2016-12-02 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/autostart-init.d/ ---- - -Home Assistant can run as a daemon within init.d with the script below. - -### {% linkable_title 1. Copy script %} - -Copy either the daemon script or the Python environment scrip at the end of this page to `/etc/init.d/hass-daemon` depending on your installation. - -After that, set the script to be executable: - -```bash -$ sudo chmod +x /etc/init.d/hass-daemon -``` - -### {% linkable_title 2. Select a user. %} - -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. Change hass executable and other variables 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. Please also check the other variables for the appropriate value. In general the defaults should work - -### {% linkable_title 4. Install this service %} - -```bash -$ sudo service hass-daemon install -``` - -### {% linkable_title 5. Create logrotate rule %} - -This logrotate script at `/etc/logrotate.d/homeassistant` will create an outage of a few seconds every week at night. If you do not want this add `--log-rotate-days 7` to the `FLAGS` variable in the init script. - -``` -/var/log/homeassistant/home-assistant.log -{ - rotate 7 - daily - missingok - notifempty - delaycompress - compress - postrotate - invoke-rc.d hass-daemon restart > /dev/null - endscript -} - -``` - -### {% linkable_title 6. Restart Machine %} - -That's it. Restart your machine and Home Assistant should start automatically. - -If HA does not start, check the log file output for errors at `/var/log/homeassistant/home-assistant.log` - -### {% linkable_title Extra: Running commands before hass executes %} - -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 %} - -```bash -#!/bin/sh -### BEGIN INIT INFO -# Provides: hass -# Required-Start: $local_fs $network $named $time $syslog -# Required-Stop: $local_fs $network $named $time $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Description: Home\ Assistant -### END INIT INFO - -# /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_DIR="/var/run" -PID_FILE="$PID_DIR/hass.pid" -CONFIG_DIR="/var/opt/homeassistant" -LOG_DIR="/var/log/homeassistant" -LOG_FILE="$LOG_DIR/home-assistant.log" -FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --log-file $LOG_FILE --daemon" - - -start() { - create_piddir - if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then - echo 'Service already running' >&2 - return 1 - fi - echo -n 'Starting service… ' >&2 - local CMD="$PRE_EXEC $HASS_BIN $FLAGS;" - su -s /bin/bash -c "$CMD" $RUN_AS - if [ $? -ne 0 ]; then - echo "Failed" >&2 - else - echo 'Done' >&2 - fi -} - -stop() { - if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then - echo 'Service not running' >&2 - return 1 - fi - echo -n 'Stopping service… ' >&2 - kill $(cat "$PID_FILE") - while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; - rm -f $PID_FILE - echo 'Done' >&2 -} - -install() { - echo "Installing Home Assistant Daemon (hass-daemon)" - update-rc.d hass-daemon defaults - create_piddir - mkdir -p $CONFIG_DIR - chown $RUN_AS $CONFIG_DIR - mkdir -p $LOG_DIR - chown $RUN_AS $LOG_DIR -} - -uninstall() { - echo "Are you really sure you want to uninstall this service? The INIT script will" - echo -n "also be deleted! That cannot be undone. [yes|No] " - local SURE - read SURE - if [ "$SURE" = "yes" ]; then - stop - remove_piddir - echo "Notice: The config directory has not been removed" - echo $CONFIG_DIR - echo "Notice: The log directory has not been removed" - echo $LOG_DIR - update-rc.d -f hass-daemon remove - rm -fv "$0" - echo "Home Assistant Daemon has been removed. Home Assistant is still installed." - fi -} - -create_piddir() { - if [ ! -d "$PID_DIR" ]; then - mkdir -p $PID_DIR - chown $RUN_AS "$PID_DIR" - fi -} - -remove_piddir() { - if [ -d "$PID_DIR" ]; then - if [ -e "$PID_FILE" ]; then - rm -fv "$PID_FILE" - fi - rmdir -fv "$PID_DIR" - fi -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - install) - install - ;; - uninstall) - uninstall - ;; - restart) - stop - start - ;; - *) - echo "Usage: $0 {start|stop|restart|install|uninstall}" -esac -``` - -### {% linkable_title Python virtual environment %} - -```bash -#!/bin/sh -### BEGIN INIT INFO -# Provides: hass -# Required-Start: $local_fs $network $named $time $syslog -# Required-Stop: $local_fs $network $named $time $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Description: Home\ Assistant -### END INIT INFO - -# /etc/init.d Service Script for Home Assistant -# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh -PRE_EXEC="cd /srv/homeassistant; python3 -m venv .; source bin/activate;" -# Typically /usr/bin/hass -HASS_BIN="hass" -RUN_AS="homeassistant" -PID_DIR="/var/run/hass" -PID_FILE="$PID_DIR/hass.pid" -CONFIG_DIR="/home/$RUN_AS/.homeassistant" -LOG_DIR="/var/log/homeassistant" -LOG_FILE="$LOG_DIR/home-assistant.log" -FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --log-file $LOG_FILE --daemon" - -start() { - create_piddir - if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then - echo 'Service already running' >&2 - return 1 - fi - echo -n 'Starting service… ' >&2 - local CMD="$PRE_EXEC $HASS_BIN $FLAGS;" - su -s /bin/bash -c "$CMD" $RUN_AS - if [ $? -ne 0 ]; then - echo "Failed" >&2 - else - echo 'Done' >&2 - fi -} - -stop() { - if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then - echo 'Service not running' >&2 - return 1 - fi - echo -n 'Stopping service… ' >&2 - kill $(cat "$PID_FILE") - while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; - rm -f $PID_FILE - echo 'Done' >&2 -} - -install() { - echo "Installing Home Assistant Daemon (hass-daemon)" - update-rc.d hass-daemon defaults - create_piddir - mkdir -p $CONFIG_DIR - chown $RUN_AS $CONFIG_DIR - mkdir -p $LOG_DIR - chown $RUN_AS $LOG_DIR -} - -uninstall() { - echo "Are you really sure you want to uninstall this service? The INIT script will" - echo -n "also be deleted! That cannot be undone. [yes|No] " - local SURE - read SURE - if [ "$SURE" = "yes" ]; then - stop - remove_piddir - echo "Notice: The config directory has not been removed" - echo $CONFIG_DIR - echo "Notice: The log directory has not been removed" - echo $LOG_DIR - update-rc.d -f hass-daemon remove - rm -fv "$0" - echo "Home Assistant Daemon has been removed. Home Assistant is still installed." - fi -} - -create_piddir() { - if [ ! -d "$PID_DIR" ]; then - mkdir -p $PID_DIR - chown $RUN_AS "$PID_DIR" - fi -} - -remove_piddir() { - if [ -d "$PID_DIR" ]; then - if [ -e "$PID_FILE" ]; then - rm -fv "$PID_FILE" - fi - rmdir -fv "$PID_DIR" - fi -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - install) - install - ;; - uninstall) - uninstall - ;; - restart) - stop - start - ;; - *) - echo "Usage: $0 {start|stop|restart|install|uninstall}" -esac -``` diff --git a/source/_docs/autostart/macos.markdown b/source/_docs/autostart/macos.markdown deleted file mode 100644 index 56e6b27c3f..0000000000 --- a/source/_docs/autostart/macos.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "Autostart on macOS" -description: "Instructions on how to setup Home Assistant to launch on Apple macOS." -date: 2015-9-1 22:57 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/autostart-macos/ ---- - -Setting up Home Assistant to run as a background service is simple; macOS will start Home Assistant on boot and make sure it's always running. - -To get Home Assistant installed as a background service, run: - - -```bash -$ hass --script macos install - -Home Assistant has been installed. Open it here: http://localhost:8123 -``` - -Home Assistant will log to `~/Library/Logs/homeassistant.log` - -To uninstall the service, run: - -```bash -$ hass --script macos uninstall - -Home Assistant has been uninstalled. -``` diff --git a/source/_docs/autostart/synology.markdown b/source/_docs/autostart/synology.markdown deleted file mode 100644 index f19f15ab73..0000000000 --- a/source/_docs/autostart/synology.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: page -title: "Autostart on Synology NAS boot" -description: "Instructions on how to setup Home Assistant to launch on boot on Synology NAS." -date: 2015-9-1 22:57 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/autostart-synology/ ---- - -To get Home Assistant to automatically start when you boot your Synology NAS: - -SSH into your synology & login as admin or root - -```bash -$ cd /volume1/homeassistant -``` - -Create "homeassistant.conf" file using the following code - -```bash -# only start this service after the httpd user process has started -start on started httpd-user - -# stop the service gracefully if the runlevel changes to 'reboot' -stop on runlevel [06] - -# run the scripts as the 'http' user. Running as root (the default) is a bad ide -#setuid admin - -# exec the process. Use fully formed path names so that there is no reliance on -# the 'www' file is a node.js script which starts the foobar application. -exec /bin/sh /volume1/homeassistant/hass-daemon start -``` - -Register the autostart - -```bash -$ ln -s homeassistant.conf /etc/init/homeassistant.conf -``` - -Make the relevant files executable: - -```bash -$ 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 deleted file mode 100644 index 17211e5ed9..0000000000 --- a/source/_docs/autostart/systemd.markdown +++ /dev/null @@ -1,136 +0,0 @@ ---- -layout: page -title: "Autostart using systemd" -description: "Instructions on how to setup Home Assistant to launch on boot using systemd." -date: 2015-9-1 22:57 -sidebar: true -comments: false -sharing: true -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: - -```bash -$ ps -p 1 -o comm= -``` - -If the preceding command returns the string `systemd`, continue with the instructions below. - -A service file is needed to control Home Assistant with `systemd`. The template below should be created using a text editor. Note, root permissions via `sudo` will likely be needed. The following should be noted to modify the template: - -- `ExecStart` contains the path to `hass` and this may vary. Check with `whereis hass` for the location. -- For most systems, the file is `/etc/systemd/system/home-assistant@[your user].service` with [your user] replaced by the user account that Home Assistant will run as (normally `homeassistant`). In particular, this is the case for Ubuntu 16.04. -- If unfamiliar with command-line text editors, `sudo nano -w [filename]` can be used with `[filename]` replaced with the full path to the file. Ex. `sudo nano -w /etc/systemd/system/home-assistant@[your user].service`. After text entered, press CTRL-X then press Y to save and exit. -- If you're running Home Assistant in a Python virtual environment or a Docker container, please skip to the appropriate template listed below. - -``` -[Unit] -Description=Home Assistant -After=network-online.target - -[Service] -Type=simple -User=%i -ExecStart=/usr/bin/hass - -[Install] -WantedBy=multi-user.target -``` - -### {% linkable_title Python virtual environment %} - -If you've setup Home Assistant in `virtualenv` following our [Python installation guide](/getting-started/installation-virtualenv/) or [manual installation guide for Raspberry Pi](/getting-started/installation-raspberry-pi/), the following template should work for you. If Home Assistant install is not located at `/srv/homeassistant`, please modify the `ExecStart=` line appropriately. - -``` -[Unit] -Description=Home Assistant -After=network-online.target - -[Service] -Type=simple -User=%i -ExecStart=/srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" - -[Install] -WantedBy=multi-user.target -``` - -### {% linkable_title Docker %} - -If you want to use Docker, the following template should work for you. - -``` -[Unit] -Description=Home Assistant -Requires=docker.service -After=docker.service - -[Service] -Restart=always -RestartSec=3 -ExecStart=/usr/bin/docker run --name="home-assistant-%i" -v /home/%i/.homeassistant/:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant -ExecStop=/usr/bin/docker stop -t 2 home-assistant-%i -ExecStopPost=/usr/bin/docker rm -f home-assistant-%i - -[Install] -WantedBy=multi-user.target -``` - -### Next Steps - -You need to reload `systemd` to make the daemon aware of the new configuration. - -```bash -$ sudo systemctl --system daemon-reload -``` - -To have Home Assistant start automatically at boot, enable the service. - -```bash -$ sudo systemctl enable home-assistant@[your user] -``` - -To disable the automatic start, use this command. - -```bash -$ sudo systemctl disable home-assistant@[your user] -``` - -To start Home Assistant now, use this command. -```bash -$ sudo systemctl start home-assistant@[your user] -``` - -You can also substitute the `start` above with `stop` to stop Home Assistant, `restart` to restart Home Assistant, and 'status' to see a brief status report as seen below. - -```bash -$ sudo systemctl status home-assistant@[your user] -● home-assistant@fab.service - Home Assistant for [your user] - Loaded: loaded (/etc/systemd/system/home-assistant@[your user].service; enabled; vendor preset: disabled) - Active: active (running) since Sat 2016-03-26 12:26:06 CET; 13min ago - Main PID: 30422 (hass) - CGroup: /system.slice/system-home\x2dassistant.slice/home-assistant@[your user].service - ├─30422 /usr/bin/python3 /usr/bin/hass - └─30426 /usr/bin/python3 /usr/bin/hass -[...] -``` - -To get Home Assistant's logging output, simple use `journalctl`. - -```bash -$ sudo journalctl -f -u home-assistant@[your user] -``` - -Because the log can scroll quite quickly, you can select to view only the error lines: -```bash -$ sudo journalctl -f -u home-assistant@[your user] | grep -i 'error' -``` - -When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using `&&` - -```bash -$ sudo systemctl restart home-assistant@[your user] && sudo journalctl -f -u home-assistant@[your user] -``` - diff --git a/source/_docs/autostart/upstart.markdown b/source/_docs/autostart/upstart.markdown deleted file mode 100644 index c77660a84d..0000000000 --- a/source/_docs/autostart/upstart.markdown +++ /dev/null @@ -1,137 +0,0 @@ ---- -layout: page -title: "Autostart using Upstart" -description: "Instructions on how to setup Home Assistant to launch on boot using Upstart." -date: 2015-9-1 22:57 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Many linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04. If you are unsure if your system is using Upstart, you may check with the following command: - -```bash -$ ps -p 1 -o comm= -``` - -If the preceding command returns the string `init`, you are likely using Upstart. - -Upstart will launch init scripts that are located in the directory `/etc/init.d/`. A sample init script for systems using Upstart could look like the sample below. - -```bash -#!/bin/sh -### BEGIN INIT INFO -# Provides: hass -# Required-Start: $local_fs $network $named $time $syslog -# Required-Stop: $local_fs $network $named $time $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Description: Home\ Assistant -### END INIT INFO - -# /etc/init.d Service Script for Home Assistant -# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh -# -# Installation: -# 1) 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. -# 2) Set RUN_AS to the username that should be used to execute hass. -# 3) Copy this script to /etc/init.d/ -# sudo cp hass-daemon /etc/init.d/hass-daemon -# sudo chmod +x /etc/init.d/hass-daemon -# 4) Register the daemon with Linux -# sudo update-rc.d hass-daemon defaults -# 5) Install this service -# sudo service hass-daemon install -# 6) Restart Machine -# -# After installation, HA should start automatically. If HA does not start, -# check the log file output for errors. -# /var/opt/homeassistant/home-assistant.log - -PRE_EXEC="" -RUN_AS="USER" -PID_FILE="/var/run/hass.pid" -CONFIG_DIR="/var/opt/homeassistant" -FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon" -REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1" - -start() { - if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then - echo 'Service already running' >&2 - return 1 - fi - echo 'Starting service…' >&2 - local CMD="$PRE_EXEC hass $FLAGS $REDIRECT;" - su -c "$CMD" $RUN_AS - echo 'Service started' >&2 -} - -stop() { - if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then - echo 'Service not running' >&2 - return 1 - fi - echo 'Stopping service…' >&2 - kill -3 $(cat "$PID_FILE") - while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; - echo 'Service stopped' >&2 -} - -install() { - echo "Installing Home Assistant Daemon (hass-daemon)" - echo "999999" > $PID_FILE - chown $RUN_AS $PID_FILE - mkdir -p $CONFIG_DIR - chown $RUN_AS $CONFIG_DIR -} - -uninstall() { - echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " - local SURE - read SURE - if [ "$SURE" = "yes" ]; then - stop - rm -fv "$PID_FILE" - echo "Notice: The config directory has not been removed" - echo $CONFIG_DIR - update-rc.d -f hass-daemon remove - rm -fv "$0" - echo "Home Assistant Daemon has been removed. Home Assistant is still installed." - fi -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - install) - install - ;; - uninstall) - uninstall - ;; - restart) - stop - start - ;; - *) - echo "Usage: $0 {start|stop|restart|install|uninstall}" -esac -``` - -To install this script, download it, tweak it to you liking, and install it by following the directions in the header. This script will setup Home Assistant to run when the system boots. To start/stop Home Assistant manually, issue the following commands: - -```bash -$ sudo service hass-daemon start -$ sudo service hass-daemon stop -``` - -When running Home Assistant with this script, the configuration directory will be located at `/var/opt/homeassistant`. This directory will contain a verbose log rather than simply an error log. - -When running daemons, it is good practice to have the daemon run under its own user name rather than the default user's name. Instructions for setting this up are outside the scope of this document. diff --git a/source/_docs/backend.markdown b/source/_docs/backend.markdown deleted file mode 100644 index 01b28b17a4..0000000000 --- a/source/_docs/backend.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Backend of Home Assistant" -description: "Backend of Home Assistant." -date: 2017-02-14 12:50 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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. - -To implement a new platform or component, please refer to the [Development documentation](/developers/development/). - diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown deleted file mode 100644 index 652ef13f05..0000000000 --- a/source/_docs/backend/database.markdown +++ /dev/null @@ -1,125 +0,0 @@ ---- -layout: page -title: "Database" -description: "Details about the database which Home Assistant is using." -date: 2016-10-10 10:00 -sidebar: true -comments: false -sharing: true -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/) (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 -SQLite version 3.13.0 2016-05-18 10:57:30 -Enter ".help" for usage hints. -sqlite> -``` - -It helps to set some options to make the output more readable: - -```bash -sqlite> .header on -sqlite> .mode column -``` - -You could also start `sqlite3` and attach the database later. Not sure what database you are working with? Check it, especially if you are going to delete data. - -```bash -sqlite> .databases -seq name file ---- --------------- ---------------------------------------------------------- -0 main /home/fab/.homeassistant/home-assistant_v2.db -``` - -### {% linkable_title Schema %} - -Get all available tables from your current Home Assistant database: - -```bash -sqlite> SELECT sql FROM sqlite_master; - -------------------------------------------------------------------------------------- -CREATE TABLE events ( - event_id INTEGER NOT NULL, - event_type VARCHAR(32), - event_data TEXT, - origin VARCHAR(32), - time_fired DATETIME, - created DATETIME, - PRIMARY KEY (event_id) -) -CREATE INDEX ix_events_event_type ON events (event_type) -CREATE TABLE recorder_runs ( - run_id INTEGER NOT NULL, - start DATETIME, - "end" DATETIME, - closed_incorrect BOOLEAN, - created DATETIME, - PRIMARY KEY (run_id), - CHECK (closed_incorrect IN (0, 1)) -) -CREATE TABLE states ( - state_id INTEGER NOT NULL, - domain VARCHAR(64), - entity_id VARCHAR(64), - state VARCHAR(255), - attributes TEXT, - event_id INTEGER, - last_changed DATETIME, - last_updated DATETIME, - created DATETIME, - PRIMARY KEY (state_id), - FOREIGN KEY(event_id) REFERENCES events (event_id) -) -CREATE INDEX states__significant_changes ON states (domain, last_updated, entity_id) -CREATE INDEX states__state_changes ON states (last_changed, last_updated, entity_id) -CREATE TABLE sqlite_stat1(tbl,idx,stat) -``` - -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'; -``` - -### {% 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 your Top 10 entities: - -```bash -sqlite> .width 30, 10, -sqlite> SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10; -entity_id count ------------------------------- ---------- -sensor.cpu 28874 -sun.sun 21238 -sensor.time 18415 -sensor.new_york 18393 -cover.kitchen_cover 17811 -switch.mystrom_switch 14101 -sensor.internet_time 12963 -sensor.solar_angle1 11397 -sensor.solar_angle 10440 -group.all_switches 8018 -``` - -### {% linkable_title Delete %} - -If you don't want to keep certain entities, you can delete them permanently: - -```bash -sqlite> DELETE FROM states WHERE entity_id="sensor.cpu"; -``` - -The `VACUUM` command cleans the your database. - -```bash -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 deleted file mode 100644 index 8551fff955..0000000000 --- a/source/_docs/backend/updater.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "Updater" -description: "Details what the updater component is reporting about your Home Assistant instance." -date: 2016-10-22 08:00 -sidebar: true -comments: false -sharing: true -footer: true -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 | -|-----------------------|--------------------------------------------|------------------------------------|----------------| -| `arch` | CPU Architecture | `x86_64` | Local Instance | -| `distribution` | Linux Distribution name (only Linux) | `Ubuntu` | Local Instance | -| `docker` | True if running inside Docker | `false` | Local Instance | -| `first_seen_datetime` | First time instance ID was submitted | `2016-10-22T19:56:03.542Z` | Update Server | -| `geo_city` | GeoIP determined city | `Oakland` | Update Server | -| `geo_country_code` | GeoIP determined country code | `US` | Update Server | -| `geo_country_name` | GeoIP determined country name | `United States` | Update Server | -| `geo_latitude` | GeoIP determined latitude | `37.8047` | Update Server | -| `geo_longitude` | GeoIP determined longitude | `-122.2124` | Update Server | -| `geo_metro_code` | GeoIP determined metro code | `807` | Update Server | -| `geo_region_code` | GeoIP determined region code | `CA` | Update Server | -| `geo_region_name` | GeoIP determined region name | `California` | Update Server | -| `geo_time_zone` | GeoIP determined time zone | `America/Los_Angeles` | Update Server | -| `geo_zip_code` | GeoIP determined zip code | `94602` | Update Server | -| `last_seen_datetime` | Most recent time instance ID was submitted | `2016-10-22T19:56:03.542Z` | Update Server | -| `os_name` | Operating system name | `Darwin` | Local Instance | -| `os_version` | Operating system version | `10.12` | Local Instance | -| `python_version` | Python version | `3.5.2` | Local Instance | -| `timezone` | Timezone | `America/Los_Angeles` | Local Instance | -| `user_agent` | User agent used to submit analytics | `python-requests/2.11.1` | Local Instance | -| `uuid` | Unique identifier | `10321ee6094d4a2ebb5ed55c675d5f5e` | Local Instance | -| `version` | Home Assistant version | `0.31.0` | Local Instance | -| `virtualenv` | True if running inside virtualenv | `true` | Local Instance | - -In addition to the above collected data, the server will also use your IP address to do a geographic IP address lookup to determine a general geographic area that your address is located in. To be extremely, extremely clear about this bit: __The Home Assistant updater does not: store your IP address in a database and also does not submit the location information from your `configuration.yaml`.__ - -Our tests showed that at best, we get 4 digits of accuracy on your IP address location which is a 5 mile radius of your actual IP location, assuming that it is even correct in the first place (geo IP lookups are very hit or miss). - -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 - -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.markdown b/source/_docs/configuration.markdown deleted file mode 100644 index 2d0dc0f027..0000000000 --- a/source/_docs/configuration.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "Configuring Home Assistant" -description: "Configuring Home Assistant." -date: 2015-03-23 12:50 -sidebar: true -comments: false -sharing: true -footer: true ---- - -When launched for the first time, Home Assistant will write a default configuration file enabling the web interface and device discovery. It can take up to a minute for your devices to be discovered and appear in the user interface. - -The web interface can be found at `http://ip.ad.dre.ss:8123/` - for example if your Home Assistant system has the IP address `192.168.0.40` then you'll find the web interface as `http://192.168.0.40:8123/`. - -The location of the folder differs between operating systems: - -| OS | Path | -| -- | ---- | -| macOS | `~/.homeassistant` | -| Linux | `~/.homeassistant` | -| Windows | `%APPDATA%/.homeassistant` | - -If you want to use a different folder for configuration, use the config command line parameter: `hass --config path/to/config`. - -Inside your configuration folder is the file `configuration.yaml`. This is the main file that contains components to be loaded with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable functionality. - -

    - You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting. -

    - -If you run into trouble while configuring Home Assistant, have a look at the [configuration troubleshooting page](/getting-started/troubleshooting-configuration/) and at the [configuration.yaml examples](/cookbook/#example-configurationyaml). - -

    - Test any changes to your configuration files from the command line with `hass --script check_config`. This script allows you to test changes without the need to restart Home Assistant. Remember to run this as the user you run Home Assistant as. -

    - diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown deleted file mode 100644 index 3ac38b00a2..0000000000 --- a/source/_docs/configuration/basic.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: page -title: "Setup basic information" -description: "Setting up the basic info of Home Assistant." -date: 2015-03-23 12:50 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/basic/ ---- - -By default, Home Assistant will try to detect your location from IP address geolocation. Home Assistant will automatically select a temperature unit and time zone based on this location. You can overwrite this by adding the following information to your `configuration.yaml`: - -```yaml -homeassistant: - latitude: 32.87336 - longitude: 117.22743 - elevation: 430 - unit_system: metric - time_zone: America/Los_Angeles - 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](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 favorite text editor to open `configuration.yaml` and edit the `http` section: - -```yaml -http: - api_password: YOUR_PASSWORD -``` - -

    -If you decide to expose your Home Assistant instance to the internet and forget to set a password, your installation could be accessed by everybody. -

    - -See the [HTTP component documentation](/components/http/) for more options, such as the use of HTTPS encryption. - diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown deleted file mode 100644 index a76c1ed2aa..0000000000 --- a/source/_docs/configuration/customizing-devices.markdown +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: page -title: "Customizing entities" -description: "Simple customization for entities in the frontend." -date: 2016-04-20 06:00 -sidebar: true -comments: false -sharing: true -footer: true -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. - -

    -If you implement `customize`, `customize_domain`, or `customize_glob` you must make sure it is done inside of `homeassistant:` or it will fail. -

    - -```yaml -homeassistant: - name: Home - unit_system: metric - # etc - - customize: - # Add an entry for each entity that you want to overwrite. - sensor.living_room_motion: - hidden: true - thermostat.family_room: - entity_picture: https://example.com/images/nest.jpg - friendly_name: Nest - switch.wemo_switch_1: - friendly_name: Toaster - entity_picture: /local/toaster.jpg - switch.wemo_switch_2: - friendly_name: Kitchen kettle - icon: mdi:kettle - switch.rfxtrx_switch: - assumed_state: false - # Customize all entities in a domain - 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_hidden: false - homebridge_hidden: true -``` - -### {% linkable_title Possible values %} - -| Attribute | Description | -| --------- | ----------- | -| `friendly_name` | Name of the entity. -| `homebridge_name` | Name of the entity in `HomeBridge`. -| `hidden` | Set to `true` to hide the 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) ([Cheatsheet](https://materialdesignicons.com/cheatsheet)). Prefix name with `mdi:`, ie `mdi:home`. -| `assumed_state` | For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting `assumed_state` to `false` you will get the default switch icon. -| `device_class` | Sets the class of the device, changing the device state and icon that is displayed on the UI (see below). -| `initial_state` | Sets the initial state for automations. `on` or `off`. -| `unit_of_measurement` | Defines the units of measurement, if any. - -### {% linkable_title Device Class %} - -Device class is currently supported by the following components: - -* [Binary Sensor](/components/binary_sensor/) -* [Sensor](/components/sensor/) -* [Cover](/components/cover/) - -### {% linkable_title Reloading customize %} - -Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the service developer tool icon service developer tools, select the service `homeassistant.reload_core_config` and click "CALL SERVICE". - -

    -New customize information will be applied the next time the state of the entity gets updated. -

    - diff --git a/source/_docs/configuration/devices.markdown b/source/_docs/configuration/devices.markdown deleted file mode 100644 index 6fbee6a433..0000000000 --- a/source/_docs/configuration/devices.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Adding devices to Home Assistant" -description: "Steps to help you get your devices in Home Assistant." -date: 2015-09-19 09:40 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/devices/ ---- - -Home Assistant will be able to automatically discover many devices and services available on your network if you have [the discovery component](/components/discovery/) enabled (the default setting). - -See the [components overview page](/components/) to find installation instructions for your devices and services. If you can't find support for your favorite device or service, [consider adding support](/developers/add_new_platform/). - -Usually every entity needs its own entry in the `configuration.yaml` file. There are two styles for multiple entries: - -#### {% linkable_title Style 1: Collect every entity under the "parent" %} - -```yaml -sensor: - - platform: mqtt - state_topic: "home/bedroom/temperature" - name: "MQTT Sensor 1" - - platform: mqtt - state_topic: "home/kitchen/temperature" - name: "MQTT Sensor 2" - - platform: rest - resource: http://IP_ADDRESS/ENDPOINT - -switch: - - platform: vera -``` - -#### {% linkable_title Style 2: List each device separately %} - -You need to append numbers or strings to differentiate the entries, as in the example below. The appended number or string must be unique. - -```yaml -media_player livingroom: - platform: mpd - server: IP_ADDRESS - -media_player kitchen: - platform: plex - -camera 1: - platform: generic - -camera 2: - platform: mjpeg -``` - -### {% linkable_title Grouping devices %} - -Once you have several devices set up, it is time to organize them into groups. -Each group consists of a name and a list of entity IDs. Entity IDs can be retrieved from the web interface by using the Set State page in the Developer Tools (service developer tool icon). - -```yaml -# Example configuration.yaml entry showing two styles -group: - living_room: - entities: light.table_lamp, switch.ac - bedroom: - entities: - - light.bedroom - - media_player.nexus_player -``` - -For more details please check the [Group](/components/group/) page. - diff --git a/source/_docs/configuration/entity-registry.markdown b/source/_docs/configuration/entity-registry.markdown deleted file mode 100644 index 6c75ad8dfe..0000000000 --- a/source/_docs/configuration/entity-registry.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: page -title: "Entity Registry" -description: "The entity registry contains." -date: 2016-04-20 06:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -

    -This is a new and experimental feature of Home Assistant. -

    - -Starting with version 0.63, Home Assistant keeps a registry of known entities. -The entity registry makes sure that entities get unique identifiers and allow -customizing the identifiers and names of these entities. - -As this is still a very new part of Home Assistant, changes will require a -restart of Home Assistant to take effect. A config user interface will be added -in a future version. - -

    -An entity needs to have a unique ID to be registered in the entity registry. -Not all integrations currently provide a unique id for their entities. -

    - -The entity registry is stored in `/entity_registry.yaml`. As a user, -you are unable to add entries, only update them. Here is an example file: - -``` -climate.downstairs_virtual: - platform: nest - unique_id: EPoMyWkpNyoYu3pGlmGxabcdefghijkl - name: Downstairs thermostat -light.study_ceiling: - platform: hue - unique_id: f0:fe:6b:00:14:00:00:00-00 - disabled_by: user -``` - -As a user, you can change the `entity_id` and add the `name` and `disabled_by` -value to each entry. - - - The value of `name` will override the name of the entity as given by the - integration. - - _Added in Home Assistant 0.64._ - - The key `disabled_by` can either be `hass` or `user`. This functionality - is even more experimental than the whole entity registry itself and might - cause integrations to fail and might be removed in the future. - - _Added in Home Assistant 0.64._ - -{% linkable_title Supported Components %} - -At the moment, only the following components are supported: Z-Wave, Hue, Nest, LIFX, Sonos, Apple TV diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown deleted file mode 100644 index ff0bcd3514..0000000000 --- a/source/_docs/configuration/events.markdown +++ /dev/null @@ -1,88 +0,0 @@ ---- -layout: page -title: "Events" -description: "Describes all there is to know about events in Home Assistant." -date: 2016-03-12 12:00 -0800 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/events/ ---- - -The core of Home Assistant is the event bus. The event bus allows any component to fire or listen for events. It is the core of everything. For example, any state change will be announced on the event bus as a `state_changed` event containing the previous and the new state of an entity. - -Home Assistant contains a few built-in events that are used to coordinate between various components. - -### {% 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. - -

    - Starting 0.42, it is no longer possible to listen for event `homeassistant_start`. Use the 'homeassistant' [platform](/docs/automation/trigger) instead. -

    - -### {% 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. - - -### {% linkable_title Event `state_changed` %} -Event `state_changed` is fired when a state changes. Both `old_state` and `new_state` are state objects. [Documentation about state objects.](/topics/state_object/) - -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 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` %} -Event `time_changed` is fired every second by the timer and contains the current time. - -Field | Description ------ | ----------- -`now` | A [datetime object](https://docs.python.org/3.4/library/datetime.html#datetime.datetime) containing the current time in UTC. - - -### {% linkable_title Event `service_registered` %} -Event `service_registered` is fired when a new service has been registered within Home Assistant. - -Field | Description ------ | ----------- -`domain` | Domain of the service. Example: `light`. -`service` | The service to call. Example: `turn_on` - - -### {% linkable_title Event `call_service` %} -Event `call_service` is fired to call a service. - -Field | Description ------ | ----------- -`domain` | Domain of the service. Example: `light`. -`service` | The service to call. Example: `turn_on` -`service_data` | Dictionary with the service call parameters. Example: `{ 'brightness': 120 }`. -`service_call_id` | String with a unique call id. Example: `23123-4`. - - -### {% linkable_title Event `service_executed` %} -Event `service_executed` is fired by the service handler to indicate the service is done. - -Field | Description ------ | ----------- -`service_call_id` | String with the unique call id of the service call that was executed. Example: `23123-4`. - - -### {% linkable_title Event `platform_discovered` %} -Event `platform_discovered` is fired when a new platform has been discovered by the [`discovery`](/components/discovery/) component. - -Field | Description ------ | ----------- -`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` %} -Event `component_loaded` is fired when a new component has been loaded and initialized. - -Field | Description ------ | ----------- -`component` | Domain of the component that has just been initialized. Example: `light`. diff --git a/source/_docs/configuration/group_visibility.markdown b/source/_docs/configuration/group_visibility.markdown deleted file mode 100644 index 0ea062deb9..0000000000 --- a/source/_docs/configuration/group_visibility.markdown +++ /dev/null @@ -1,184 +0,0 @@ ---- -layout: page -title: "Group Visibility" -description: "Instructions on how to change group visibility using automations." -date: 2016-10-29 13:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/group_visibility/ ---- - -After filling Home Assistant with all your precious home automation devices, you usually end up with a cluttered interface and lots of groups that are not interesting in your current context. What if you just want to show groups that are interesting _now_ and hide the rest? That's when group visibility comes to play. - -## {% linkable_title Changing visibility of a group %} - -To change visibility of a group, use the service `group.set_visibility`, pass the group name as `entity_id` and use `visible` to decide whether the group should be shown or hidden. - -```yaml -service: group.set_visibility -entity_id: group.basement -data: - visible: False -``` - -

    -If a sensor belongs to only one group and that group is hidden, the sensor will "jump" to the top of the web interface. Add the sensor to an additional (visible) group if you do not want this to happen. -

    - -## {% linkable_title Automations %} - -First you should decide under which circumstances a group should be visible or not. Depending on the complexity, you might have to write two automations: one that hides the group and another that shows it. - -In this example, the group `group.basement` is hidden when the sun sets and shown again when it rises: - -```yaml -automation: - trigger: - platform: sun - event: sunset - action: - service: group.set_visibility - entity_id: group.basement - data: - visible: False - -automation 2: - trigger: - platform: sun - event: sunrise - action: - service: group.set_visibility - entity_id: group.basement - data: - visible: True -``` - -## {% linkable_title Easier automations %} - -One of the most common uses cases are to show groups during certain times of day, maybe commuting information during a work day morning or light switches when it is getting dark. The complexity of automations needed to make this happen will quickly get out of hand. So, one way to make the automations easier is to create a sensor that alters its state depending on time of day. One way of doing that is using a `command_line` sensor and a script: - -```python -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -from datetime import time, datetime - -def mk_occasion(name, start, end, days=None): - s = start.split(':') - e = end.split(':') - return {'name' : name, - 'start': time(int(s[0]), int(s[1]), int(s[2])), - 'end' : time(int(e[0]), int(e[1]), int(e[2])), - 'days' : days} - -# Matching is done from top to bottom -OCCASIONS = [ - # More specific occasions - mk_occasion('work_morning', '06:00:00', '07:10:00', range(5)), - - # General matching - mk_occasion('weekday', '00:00:00', '23:59:59', range(5)), - mk_occasion('weekend', '00:00:00', '23:59:59', [5, 6]) -] - -def get_current_occasion(occasion_list, default_occasion='normal'): - now = datetime.now() - for occasion in OCCASIONS: - if occasion['start'] <= now.time() <= occasion['end'] and \ - (occasion['days'] is None or now.weekday() in occasion['days']): - return occasion['name'] - return default_occasion - -if __name__ == '__main__': - print(get_current_occasion(OCCASIONS)) -``` - -This script will output "work_morning" from 06:00-07:10 during weekdays (monday-friday), "weekday" during all other time from monday-friday and "weekend" on saturdays and sundays. Adjust according to your needs. To create the sensor, just add it like this: - -```yaml -sensor: - - platform: command_line - name: Occasion - 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" -

    - - -To simplify things, we create a Home Assistant script that changes the visibility of a group, but also verifies that an entity is in a specific state: - -```yaml -script: - group_visibility: - sequence: - - service: group.set_visibility - data_template: - entity_id: '{% raw %}{{ entity_id }}{% endraw %}' - visible: '{% raw %}{{ is_state(cond, visible_state) }}{% endraw %}' -``` - -The last part is writing an automation that hides or shows the group: - -```yaml -automation: - - alias: Work morning - trigger: - - platform: state - entity_id: sensor.occasion - - platform: homeassistant - event: start - action: - service: script.group_visibility - data: - entity_id: group.work_sensors - cond: sensor.occasion - visible_state: 'work_morning' -``` - -Our previously defined script will be called if `sensor.occasion` changes state OR when Home Assistant has started. The group `group.work_sensors` will be shown when `sensor.occasion` changes state to "work_morning" and hidden otherwise. - -### {% linkable_title The complete example %} - -```yaml -group: - default_view: - entities: - - group.work_sensors - - # Only visible when it's time to go to work - work_sensors: - name: Time to go to work - entities: - - sensor.something1 - - sensor.something2 - -sensor: - - platform: command_line - name: Occasion - command: "python3 occasion.py" - -script: - group_visibility: - sequence: - - service: group.set_visibility - data_template: - entity_id: '{% raw %}{{ entity_id }}{% endraw %}' - visible: '{% raw %}{{ is_state(cond, visible_state) }}{% endraw %}' - -automation: - - alias: Work morning - trigger: - - platform: state - entity_id: sensor.occasion - - platform: homeassistant - event: start - action: - service: script.group_visibility - data: - entity_id: group.work_sensors - cond: sensor.occasion - visible_state: 'work_morning' -``` diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown deleted file mode 100644 index 7c95fa719e..0000000000 --- a/source/_docs/configuration/packages.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: page -title: "Packages" -description: "Describes all there is to know about configuration packages in Home Assistant." -date: 2017-01-10 20:00 +0200 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/packages/ ---- - -Packages in Home Assistant provides a way to bundle different component's configuration together. We already learned about the two configuration styles (specifying platforms entries together or individually) on the [adding devices](/docs/configuration/devices/) page. Both of these configuration methods require you to create the component key in the main `configuration.yaml` file. With packages we have a way to include different components, or different configuration parts using any of the `!include` directives introduced in [splitting the configuration](/docs/configuration/splitting_configuration). - -Packages are configured under the core `homeassistant/packages` in the configuration and take the format of a package name (no spaces, all lower case) followed by a dictionary with the package config. For example, package `pack_1` would be created as: - -```yaml -homeassistant: - ... - packages: - pack_1: - ...package configuration here... -``` - -The package configuration can include: `switch`, `light`, `automation`, `groups`, or most other Home Assistant components. - -It can be specified inline or in a separate YAML file using `!include`. - -Inline example, main `configuration.yaml`: - -```yaml -homeassistant: - ... - packages: - pack_1: - switch: - - platform: rest - ... - light: - - platform: rpi - ... -``` - -Include example, main `configuration.yaml`: - -```yaml -homeassistant: - ... - packages: - pack_1: !include my_package.yaml -``` - -The file `my_package.yaml` contains the "top-level" configuration: - -``` -switch: - - platform: rest - ... -light: - - platform: rpi - ... -``` - -There are some rules for packages that will be merged: - -1. Component names may only use the basic form (e.g., `switch`, but not `switch 1` or `switch aa`). -2. Platform based components (`light`, `switch`, etc) can always be merged. -3. Components where entities are identified by a key that will represent the entity_id (`{key: config}`) need to have unique 'keys' between packages and the main configuration file. - - For example if we have the following in the main config. You are not allowed to re-use "my_input" again for `input_boolean` in a package: - - ```yaml - input_boolean: - my_input: - ``` -4. Any component that is not a platform [2], or dictionaries with Entity ID keys [3] cannot be merged and can only occur once between all packages and the main configuration. - -

    -Components inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the component name. -

    - -### {% linkable_title Create a packages folder %} - -One way to organize packages is to create a folder named "packages" in your Home Assistant configuration directory. In the packages directory you can store any number of packages in a YAML file. This entry in your `configuration.yaml` will load all packages: - -```yaml -homeassistant: - packages: !include_dir_named packages -``` - -This uses the concept splitting the configuration and will include all files in a directory with the keys representing the filenames. -See the documentation about [splitting the configuration](/docs/configuration/splitting_configuration/) for more information about `!include_dir_named` and other include statements that might be helpful. diff --git a/source/_docs/configuration/platform_options.markdown b/source/_docs/configuration/platform_options.markdown deleted file mode 100644 index 544c651e4b..0000000000 --- a/source/_docs/configuration/platform_options.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Entity component platform options" -description: "Shows how to customize polling interval for any component via configuration.yaml." -date: 2016-02-12 23:17 -0800 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/platform_options/ ---- - -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 %} - -By setting an entity namespace, all entities will be prefixed with that namespace. That way `light.bathroom` can become `light.holiday_house_bathroom`. - -```yaml -# Example configuration.yaml entry -light: - platform: hue - entity_namespace: holiday_house -``` - -### {% 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` 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. -light: - platform: hue - scan_interval: 10 -``` diff --git a/source/_docs/configuration/remote.markdown b/source/_docs/configuration/remote.markdown deleted file mode 100644 index a323ff1c98..0000000000 --- a/source/_docs/configuration/remote.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "Remote access" -description: "Setting up remote access for Home Assistant." -date: 2015-03-23 12:50 -sidebar: true -comments: false -sharing: true -footer: true ---- - -If you're interested in logging in to Home Assistant while away, you'll have to make your instance remotely accessible. Remember to follow the [securing checklist](/docs/configuration/securing/) before doing this. - -The most common approach is to set up port forwarding from your router to port 8123 on the computer that is hosting Home Assistant. General instructions on how to do this can be found by searching ` port forwarding instructions`. - -A problem with making a port accessible is that some Internet Service Providers only offer dynamic IPs. This can cause you to lose access to Home Assistant while away. You can solve this by using a free Dynamic DNS service like [DuckDNS](https://www.duckdns.org/). - -Remember: Just putting a port up is not secure. You should definitely consider encrypting your traffic if you are accessing your Home Assistant installation remotely. For details please check the [set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post, or this [detailed guide](/docs/ecosystem/certificates/lets_encrypt/) to using Let's Encrypt with HA. - -Protect your communication with a [self-signed certificate](/cookbook/tls_self_signed_certificate/) between your client and the Home Assistant instance. - -For another way to access your Home Assistant frontend, check out [the instructions how to use Tor](/cookbook/tor_configuration/). - diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown deleted file mode 100644 index 906c40f536..0000000000 --- a/source/_docs/configuration/secrets.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Storing secrets" -description: "Storing secrets outside of your configuration.yaml." -date: 2016-07-01 08:30 -sidebar: true -comments: false -sharing: true -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](/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](/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. - -```yaml -http: - api_password: YOUR_PASSWORD -``` - -Those entries need to be replaced with `!secret` and an identifier. - -```yaml -http: - api_password: !secret http_password -``` - -The `secrets.yaml` file contains the corresponding password assigned to the identifier. - -```yaml -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, -- 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](/docs/tools/check_config/) from the command line: - -```bash -$ hass --script check_config --secrets -``` -This will print all your secrets. - -## {% linkable_title Alternatives to `secrets.yaml` %} - -- [Using a keyring that is managed by your OS to store secrets](/docs/tools/keyring/) -- [Storing passwords securely in AWS](/docs/tools/credstash/) - diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown deleted file mode 100644 index fa6e91f8d3..0000000000 --- a/source/_docs/configuration/securing.markdown +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: page -title: "Securing" -description: "Instructions on how to secure your Home Assistant installation." -date: 2016-10-06 06:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/securing/ ---- - -One major advantage of Home Assistant is that it's not dependent on cloud services. Even if you're only using Home Assistant on a local network, you should take steps to secure your instance. - -### {% linkable_title Checklist %} - -- [Protect your web interface with a password](/getting-started/basic/#password-protecting-the-web-interface) -- Secure your host. Sources could be [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/pdf/Security_Guide/Red_Hat_Enterprise_Linux-7-Security_Guide-en-US.pdf), [CIS Red Hat Enterprise Linux 7 Benchmark](https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v1.0.0.pdf), or the [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-howto/index.en.html). -- Restrict network access to your devices. Set `PermitRootLogin no` in your sshd config (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. -- Don't run Home Assistant as root – consider the Principle of Least Privilege. -- Keep your [secrets](/topics/secrets/) safe. - -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/). - - diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown deleted file mode 100644 index ec0d021ea5..0000000000 --- a/source/_docs/configuration/splitting_configuration.markdown +++ /dev/null @@ -1,447 +0,0 @@ ---- -layout: page -title: "Splitting up the configuration" -description: "Splitting the configuration.yaml into several files." -date: 2016-03-25 23:30 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/splitting_configuration/ ---- - -So you've been using Home Assistant for a while now and your [configuration.yaml file brings people to tears](/cookbook/configuration_yaml_from_bassclarinetl2/) or you simply want to start off with the distributed approach, here's how to "split the configuration.yaml" into more manageable (read: humanly readable) pieces. - -First off, several community members have sanitized (read: without api keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/cookbook/#example-configurationyaml). - -As commenting code doesn't always happen, please read on for the details. - -Now despite the logical assumption that the `configuration.yaml` will be replaced by this process it will in fact remain, albeit in a much less cluttered form. - -In this lighter version we will still need what could be called the core snippet: - -```yaml -homeassistant: - # Name of the location where Home Assistant is running - name: My Home Assistant Instance - # Location required to calculate the time the sun rises and sets - latitude: 37 - longitude: -121 - # 'metric' for Metric, 'imperial' for Imperial - unit_system: imperial - # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones - time_zone: America/Los_Angeles - customize: !include customize.yaml -``` - -Note that each line after `homeassistant:` is indented two (2) spaces. Since the configuration files in Home Assistant are based on the YAML language, indentation and spacing are important. Also note that seemingly strange entry under `customize:`. - -`!include filename.yaml` is the statement that tells Home Assistant to insert the contents of `filename.yaml` at that point. This is how we are going to break a monolithic and hard to read file (when it gets big) into more manageable chunks. - -Now before we start splitting out the different components, let's look at the other components (in our example) that will stay in the base file: - -```yaml -history: -frontend: -logbook: -http: - api_password: ImNotTelling! - -ifttt: - key: [nope] - -wink: - access_token: [wouldn't you] - refresh_token: [like to know] - -zwave: - usb_path: /dev/ttyUSB0 - config_path: /usr/local/share/python-openzwave/config - polling_interval: 10000 - -mqtt: - broker: 127.0.0.1 -``` -As with the core snippet, indentation makes a difference. The component headers (`mqtt:`) should be fully left aligned (aka no indent), and the parameters (`broker:`) should be indented two (2) spaces. - -While some of these components can technically be moved to a separate file they are so small or "one off's" where splitting them off is superfluous. Also, you'll notice the # symbol (hash/pound). This represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored. This makes breaking up files for human readability really convenient, not to mention turning off features while leaving the entry intact. (Look at the `zigbee:` entry above and the b entry further down) - -Now, lets assume that a blank file has been created in the Home Assistant configuration directory for each of the following: - -```text -automation.yaml -zones.yaml -sensors.yaml -switches.yaml -device_tracker.yaml -customize.yaml -``` - -`automation.yaml` will hold all the automation component details. `zones.yaml` will hold the zone component details and so forth. These files can be called anything but giving them names that match their function will make things easier to keep track of. - -Inside the base configuration file add the following entries: - -```yaml -automation: !include automation.yaml -zone: !include zones.yaml -sensor: !include sensors.yaml -switch: !include switches.yaml -device_tracker: !include device_tracker.yaml -``` - -Note that there can only be one `!include:` for each component so chaining them isn't going to work. If that sounds like greek, don't worry about it. - -Alright, so we've got the single components and the include statements in the base file, what goes in those extra files? - -Let's look at the `device_tracker.yaml` file from our example: - -```yaml -- platform: owntracks -- platform: nmap_tracker - hosts: 192.168.2.0/24 - home_interval: 3 - - track_new_devices: yes - interval_seconds: 40 - consider_home: 120 -``` - -This small example illustrates how the "split" files work. In this case, we start with a "comment block" identifying the file followed by two (2) device tracker entries (`owntracks` and `nmap`). These files follow ["style 1"](/getting-started/devices/#style-2-list-each-device-separately) that is to say a fully left aligned leading entry (`- platform: owntracks`) followed by the parameter entries indented two (2) spaces. - -This (large) sensor configuration gives us another example: - -```yaml -### sensors.yaml -### METEOBRIDGE ############################################# -- platform: tcp - name: 'Outdoor Temp (Meteobridge)' - host: 192.168.2.82 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[2]}}{% endraw %}" - unit: C -- platform: tcp - name: 'Outdoor Humidity (Meteobridge)' - host: 192.168.2.82 - port: 5556 - timeout: 6 - payload: "Content-type: text/xml; charset=UTF-8\n\n" - value_template: "{% raw %}{{value.split (' ')[3]}}{% endraw %}" - unit: Percent - -#### STEAM FRIENDS ################################## -- platform: steam_online - api_key: [not telling] - accounts: - - 76561198012067051 - -#### TIME/DATE ################################## -- platform: time_date - display_options: - - 'time' - - 'date' -- platform: worldclock - time_zone: Etc/UTC - name: 'UTC' -- platform: worldclock - time_zone: America/New_York - name: 'Ann Arbor' -``` - -You'll notice that this example includes a secondary parameter section (under the steam section) as well as a better example of the way comments can be used to break down files into sections. - -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 our [Discord chat server][discord] and ask away. - -### {% linkable_title Debugging multiple configuration files %} - -If you have many configuration files, the `check_config` script allows you to see how Home Assistant interprets them: -- Listing all loaded files: `hass --script check_config --files` -- Viewing a component's config: `hass --script check_config --info light` -- Or all components' config: `hass --script check_config --info all` - -You can get help from the command line using: `hass --script check_config --help` - -### {% linkable_title Advanced Usage %} - -We offer four advanced options to include whole directories at once. -- `!include_dir_list` will return the content of a directory as a list with each file content being an entry in the list. -- `!include_dir_named` will return the content of a directory as a dictionary which maps filename => content of file. -- `!include_dir_merge_list` will return the content of a directory as a list by merging all files (which should contain a list) into 1 big list. -- `!include_dir_merge_named` will return the content of a directory as a dictionary by loading each file and merging it into 1 big dictionary. - -These work recursively. As an example using `!include_dir_* automation`, will include all 6 files shown below: - -```bash -. -└── .homeassistant - ├── automation - │   ├── lights - │   │   ├── turn_light_off_bedroom.yaml - │   │   ├── turn_light_off_lounge.yaml - │   │   ├── turn_light_on_bedroom.yaml - │   │   └── turn_light_on_lounge.yaml - │   ├── say_hello.yaml - │   └── sensors - │   └── react.yaml - └── configuration.yaml (not included) -``` - -#### {% linkable_title Example: `!include_dir_list` %} - -`configuration.yaml` - -```yaml -automation: - - alias: Automation 1 - trigger: - platform: state - entity_id: device_tracker.iphone - to: 'home' - action: - service: light.turn_on - entity_id: light.entryway - - alias: Automation 2 - trigger: - platform: state - entity_id: device_tracker.iphone - from: 'home' - action: - service: light.turn_off - entity_id: light.entryway -``` - -can be turned into: - -`configuration.yaml` - -```yaml -automation: !include_dir_list automation/presence/ -``` - -`automation/presence/automation1.yaml` - -```yaml -alias: Automation 1 -trigger: - platform: state - entity_id: device_tracker.iphone - to: 'home' -action: - service: light.turn_on - entity_id: light.entryway -``` - -`automation/presence/automation2.yaml` - -```yaml -alias: Automation 2 -trigger: - platform: state - entity_id: device_tracker.iphone - from: 'home' -action: - service: light.turn_off - entity_id: light.entryway -``` - -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` %} - -`configuration.yaml` - -```yaml -{% raw %} -alexa: - intents: - LocateIntent: - action: - service: notify.pushover - data: - message: Your location 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 }} - {%- endif -%} - {%- else -%} - I am sorry. Pootie! I do not know where {{User}} is. - {%- endfor -%} - WhereAreWeIntent: - speech: - type: plaintext - text: > - {%- if is_state('device_tracker.iphone', 'home') -%} - iPhone is home. - {%- else -%} - iPhone is not home. - {% endif %}{% endraw %} -``` - -can be turned into: - -`configuration.yaml` - -```yaml -alexa: - intents: !include_dir_named alexa/ -``` - -`alexa/LocateIntent.yaml` - -```yaml -{% raw %} -action: - service: notify.pushover - data: - message: Your location 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 }} - {%- endif -%} - {%- else -%} - I am sorry. Pootie! I do not know where {{User}} is. - {%- endfor -%}{% endraw %} -``` - -`alexa/WhereAreWeIntent.yaml` - -```yaml -{% raw %} -speech: - type: plaintext - text: > - {%- if is_state('device_tracker.iphone', 'home') -%} - iPhone is home. - {%- else -%} - iPhone is not home. - {% endif %}{% endraw %} -``` - -#### {% linkable_title Example: `!include_dir_merge_list` %} - -`configuration.yaml` - -```yaml -automation: - - alias: Automation 1 - trigger: - platform: state - entity_id: device_tracker.iphone - to: 'home' - action: - service: light.turn_on - entity_id: light.entryway - - alias: Automation 2 - trigger: - platform: state - entity_id: device_tracker.iphone - from: 'home' - action: - service: light.turn_off - entity_id: light.entryway -``` - -can be turned into: - -`configuration.yaml` - -```yaml -automation: !include_dir_merge_list automation/ -``` - -`automation/presence.yaml` - -```yaml -- alias: Automation 1 - trigger: - platform: state - entity_id: device_tracker.iphone - to: 'home' - action: - service: light.turn_on - entity_id: light.entryway -- alias: Automation 2 - trigger: - platform: state - entity_id: device_tracker.iphone - from: 'home' - action: - service: light.turn_off - entity_id: light.entryway -``` - -It is important to note that when using `!include_dir_merge_list`, you must include a list in each file (each list item is denoted with a hyphen [-]). Each file may contain one or more entries. - -#### {% linkable_title Example: `!include_dir_merge_named` %} - -`configuration.yaml` - -```yaml -group: - bedroom: - name: Bedroom - entities: - - light.bedroom_lamp - - light.bedroom_overhead - hallway: - name: Hallway - entities: - - light.hallway - - thermostat.home - front_yard: - name: Front Yard - entities: - - light.front_porch - - light.security - - light.pathway - - sensor.mailbox - - camera.front_porch -``` - -can be turned into: - -`configuration.yaml` - -```yaml -group: !include_dir_merge_named group/ -``` - -`group/interior.yaml` - -```yaml -bedroom: - name: Bedroom - entities: - - light.bedroom_lamp - - light.bedroom_overhead -hallway: - name: Hallway - entities: - - light.hallway - - thermostat.home -``` - -`group/exterior.yaml` - -```yaml -front_yard: - name: Front Yard - entities: - - light.front_porch - - light.security - - light.pathway - - 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 deleted file mode 100644 index fdb99ea075..0000000000 --- a/source/_docs/configuration/state_object.markdown +++ /dev/null @@ -1,43 +0,0 @@ ---- -layout: page -title: "State Objects" -description: "Describes all there is to know about state objects in Home Assistant." -date: 2016-03-12 12:00 -0800 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/state_object/ ---- - -Your devices are represented in Home Assistant as entities. The entities will write their current state to the state machine for other entities/templates/frontend to access. States are a current representation of the entity. - -If you overwrite a state via the states dev tool or the API, it will not impact the actual device. If the device state is being polled, it will overwrite the state in the state machine the next polling. - -All states will always have an entity id, a state and a timestamp when last updated and last changed. - -Field | Description ------ | ----------- -`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: `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 its 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. - -When using templates, attributes will be available by their name. For example `state.attributes.assumed_state`. - -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`. -`assumed_state` | Boolean if the current state is an assumption. [More info](/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`. - -When an attribute contains spaces, you can retrieve it like this: `states.sensor.livingroom.attributes["Battery numeric"]`. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown deleted file mode 100644 index dfcd8bddce..0000000000 --- a/source/_docs/configuration/templating.markdown +++ /dev/null @@ -1,308 +0,0 @@ ---- -layout: page -title: "Templating" -description: "Instructions on how to use the templating feature of Home Assistant." -date: 2015-12-12 12:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /topics/templating/ ---- - -This is an advanced feature of Home Assistant. You'll need a basic understanding of the following things: - -- [Home Assistant architecture](/developers/architecture/), especially states. -- [State object](/topics/state_object/) - -Templating is a powerful feature in Home Assistant that allows the user control over information that is going into and out of the system. It is used for: - -- Formatting outgoing messages in, for example, the [notify] and [alexa] components. -- Process incoming data from sources that provide raw data, like [MQTT], [REST sensor], or the [command line sensor]. -- [Automation Templating]. - -[notify]: /components/notify/ -[alexa]: /components/alexa/ -[MQTT]: /components/mqtt/ -[REST sensor]: /components/sensor.rest/ -[command line sensor]: /components/sensor.command_line/ -[Automation Templating]: /docs/automation/templating/ - -## {% linkable_title Building templates %} - -Templating in Home Assistant is powered by the [Jinja2](http://jinja.pocoo.org/) templating engine. This means that we are using their syntax and make some custom Home Assistant variables available to templates during rendering. We will not go over the basics of the syntax, as Jinja2 does a lot better job at this in their [Jinja2 documentation](http://jinja.pocoo.org/docs/dev/templates/). - -

    -The frontend has a template editor developer tool to help develop and debug templates. -

    - -Templates can get big pretty fast. To keep a clear overview, consider using YAML multiline strings to define your templates: - -```yaml -script: - msg_who_is_home: - sequence: - - service: notify.notify - data_template: - message: > - {% raw %}{% if is_state('device_tracker.paulus', 'home') %} - Ha, Paulus is home! - {% else %} - Paulus is at {{ states('device_tracker.paulus') }}. - {% endif %}{% endraw %} -``` - -[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) -- [Logic](http://jinja.pocoo.org/docs/dev/templates/#logic) - - -## {% linkable_title Home Assistant template extensions %} - -Home Assistant adds extensions to allow templates to access all of the current states: - -- Iterating `states` will yield each state sorted alphabetically by entity ID. -- Iterating `states.domain` will yield each state of that domain sorted alphabetically by entity ID. -- `states.sensor.temperature` returns the state object for `sensor.temperature`. -- `states('device_tracker.paulus')` will return the state string (not the object) of the given entity or `unknown` if it doesn't exist. -- `is_state('device_tracker.paulus', 'home')` will test if the given entity is specified state. -- `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist. -- `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. -- `float` will format the output as float. -- `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format]. -- `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter. -- `sin(value)` will return the sine of the input. Can be used as a filter. -- `cos(value)` will return the cosine of the input. Can be used as a filter. -- `tan(value)` will return the tangent of the input. Can be used as a filter. -- `sqrt(value)` will return the square root of the input. Can be used as a filter. -- `e` mathematical constant, approximately 2.71828. -- `pi` mathematical constant, approximately 3.14159. -- `tau` mathematical constant, approximately 6.28318. -- Filter `round(x)` will convert the input to a number and round it to `x` decimals. -- Filter `timestamp_local` will convert an UNIX timestamp to local time/data. -- Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data. -- Filter `timestamp_custom(format_string, local_boolean)` will convert an UNIX timestamp to a custom format, the use of a local timestamp is default, supporting [Python format options](https://docs.python.org/3/library/time.html#time.strftime). -- Filter `max` will obtain the largest item in a sequence. -- Filter `min` will obtain the smallest item in a sequence. -- Filter `regex_match(string, find, ignorecase=FALSE)` will match the find expression at the beginning of the string using regex. -- Filter `regex_search(string, find, ignorecase=FALSE)` will match the find expression anywhere in the string using regex. -- Filter `regex_replace(string, find='', replace='', ignorecase=False)` will replace the find expression with the replace string using regex. -- Filter `regex_findall_index(string, find='', index=0, ignorecase=False)` will find all regex matches of find in string and return the match at index (findall returns an array of matches). - -[strp-format]: https://docs.python.org/3.6/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 %} - -### {% linkable_title States %} -The next two statements result in same value if state exists. The second one will result in an error if state does not exist. - -```text -{% raw %}{{ states('device_tracker.paulus') }} -{{ states.device_tracker.paulus.state }}{% endraw %} -``` - -### {% linkable_title Attributes %} - -Print an attribute if state is defined. Both will return the same thing but the last one you can specify entity_id from a variable. - -```text -{% raw %}{% if states.device_tracker.paulus %} - {{ states.device_tracker.paulus.attributes.battery }} -{% else %} - ?? -{% endif %}{% endraw %} -``` - -With strings - -```text -{% raw %}{% set tracker_name = "paulus"%} - -{% if states("device_tracker." + tracker_name) != "unknown" %} - {{ state_attr("device_tracker." + tracker_name, "battery")}} -{% else %} - ?? -{% endif %}{% endraw %} -``` - -### {% linkable_title Sensor states %} - -Print out a list of all the sensor states. - -```text -{% raw %}{% for state in states.sensor %} - {{ state.entity_id }}={{ state.state }}, -{% endfor %} - -{% if is_state('device_tracker.paulus', 'home') %} - Ha, Paulus is home! -{% else %} - Paulus is at {{ states('device_tracker.paulus') }}. -{% endif %} - -{{ states.sensor.temperature | float + 1 }} - -{{ (states.sensor.temperature | float * 10) | round(2) }} - -{% if states('sensor.temperature') | float > 20 %} - It is warm! -{%endif %} - -{{ as_timestamp(states.binary_sensor.garage_door.last_changed) }} - -{{ as_timestamp(now()) - as_timestamp(states.binary_sensor.garage_door.last_changed) }}{% endraw %} -``` - -### {% linkable_title Distance examples %} - -If only 1 location is passed in, Home Assistant will measure the distance from home. - -```text -{% raw %}Using Lat Lng coordinates: {{ distance(123.45, 123.45) }} - -Using State: {{ distance(states.device_tracker.paulus) }} - -These can also be combined in any combination: -{{ distance(123.45, 123.45, 'device_tracker.paulus') }} -{{ distance('device_tracker.anne_therese', 'device_tracker.paulus') }}{% endraw %} -``` - -### {% linkable_title Closest examples %} - -Find entities closest to the Home Assistant location: - -```text -{% raw %}Query all entities: {{ closest(states) }} -Query all entities of a specific domain: {{ closest('states.device_tracker') }} -Query all entities in group.children: {{ closest('group.children') }} -Query all entities in group.children: {{ closest(states.group.children) }}{% endraw %} -``` - -Find entities closest to a coordinate or another entity. All previous arguments still apply for 2nd argument. - -```text -{% raw %}Closest to a coordinate: {{ closest(23.456, 23.456, 'group.children') }} -Closest to an entity: {{ closest('zone.school', 'group.children') }} -Closest to an entity: {{ closest(states.zone.school, 'group.children') }}{% endraw %} -``` - -### {% linkable_title Combined %} -Since closest returns a state, we can combine it with distance too. - -```text -{% raw %}{{ closest(states).name }} is {{ distance(closest(states)) }} meters away.{% endraw %} -``` - -## {% linkable_title Processing incoming data %} - -The other part of templating is processing incoming data. It will allow you to modify incoming data and extract only the data you care about. This will work only for platforms and components that mentioned support for this in their documentation. - -It depends per component or platform, but it is common to be able to define a template using the `value_template` configuration key. When a new value arrives, your template will be rendered while having access to the following values on top of the usual Home Assistant extensions: - -| Variable | Description | -| ------------ | -------------------------------------- | -| `value` | The incoming value. | -| `value_json` | The incoming value parsed as JSON. | - -This means that if the incoming values looks like the sample below: - -```json -{ - "on": "true", - "temp": 21 -} -``` - -The template for `on` would be: - -```yaml -'{% raw %}{{value_json.on}}{% endraw %}' -``` - -Nested JSON in a response is supported as well - -```json -{ - "sensor": { - "type": "air", - "id": "12345" - }, - "values": { - "temp": 26.09, - "hum": 56.73, - } -} -``` - -Just use the "Square bracket notation" to get the value. - -```yaml -'{% raw %}{{ value_json["values"]["temp"] }}{% endraw %}' -``` - - -The following overview contains a couple of options to get the needed values: - -```text -# Incoming value: -{"primes": [2, 3, 5, 7, 11, 13]} - -# Extract third prime number -{% raw %}{{ value_json.primes[2] }}{% endraw %} - -# Format output -{% raw %}{{ "%+.1f" | value_json }}{% endraw %} - -# Math -{% raw %}{{ value_json | float * 1024 }}{% endraw %} -{% raw %}{{ float(value_json) * (2**10) }}{% endraw %} -{% raw %}{{ value_json | log }}{% endraw %} -{% raw %}{{ log(1000, 10) }}{% endraw %} -{% raw %}{{ sin(pi / 2) }}{% endraw %} -{% raw %}{{ cos(tau) }}{% endraw %} -{% raw %}{{ tan(pi) }}{% endraw %} -{% raw %}{{ sqrt(e) }}{% endraw %} - -# Timestamps -{% raw %}{{ value_json.tst | timestamp_local }}{% endraw %} -{% raw %}{{ value_json.tst | timestamp_utc }}{% endraw %} -{% raw %}{{ value_json.tst | timestamp_custom('%Y' True) }}{% endraw %} -``` - -To evaluate a response, go to the template developer tool icon template developer tools, create your output into "Template", and check the result. - -```yaml -{% raw %} -{% set value_json= - {"name":"Outside", - "device":"weather-ha", - "data": - {"temp":"24C", - "hum":"35%" - } }%} - -{{value_json.data.hum[:-1]}}{% endraw %} -``` diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown deleted file mode 100644 index 0d867a2622..0000000000 --- a/source/_docs/configuration/troubleshooting.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: page -title: "Troubleshooting your configuration" -description: "Common problems with tweaking your configuration and their solutions." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/troubleshooting-configuration/ ---- - -It can happen that you run into trouble while configuring Home Assistant. Perhaps a component is not showing up or is acting strangely. This page will discuss a few of the most common problems. - -Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up. - -Whenever a component or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. - -### {% linkable_title My component does not show up %} - -When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your component you are trying to set up. - -If you have incorrect entries in your configuration files you can use the [`check_config`](/docs/tools/check_config/) script to assist in identifying them: `hass --script check_config`. If you need to provide the path for your configuration you can do this using the `-c` argument like this: `hass --script check_config -c /path/to/your/config/dir`. - -#### {% linkable_title Problems with the configuration %} - -One of the most common problems with Home Assistant is an invalid `configuration.yaml` file. - - - You can test your configuration using the command line with: `hass --script check_config` - - You can verify your configuration's yaml structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). - -`configuration.yaml` does not allow multiple sections to have the same name. If you want to load multiple platforms for one component, you can append a [number or string](/getting-started/devices/#style-2-list-each-device-separately) to the name or nest them using [this style](/getting-started/devices/#style-1-collect-every-entity-under-the-parent): - -```yaml -sensor: - - platform: forecast - ... - - platform: bitcoin - ... -``` - -Another common problem is that a required configuration setting is missing. If this is the case, the component will report this to `home-assistant.log`. You can have a look at [the various component pages](/components/) for instructions on how to setup the components. - -See the [logger](/components/logger/) component for instructions on how to define the level of logging you require for specific modules. - -If you find any errors or want to expand the documentation, please [let us know](https://github.com/home-assistant/home-assistant.io/issues). - -#### {% linkable_title Problems with dependencies %} - -Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in `home-assistant.log`. - -The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can't figure it out, please [report it](https://github.com/home-assistant/home-assistant/issues) so we can investigate what is going on. - -#### {% linkable_title Problems with components %} - -It can happen that some components either do not work right away or stop working after Home Assistant has been running for a while. If this happens to you, please [report it](https://github.com/home-assistant/home-assistant/issues) so that we can have a look. - -#### {% linkable_title Multiple files %} - -If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. - -```yaml -light: !include devices/lights.yaml -sensor: !include devices/sensors.yaml -``` -Contents of `lights.yaml` (notice it does not contain `light: `): - -```yaml -- platform: hyperion - host: 192.168.1.98 - ... -``` - -Contents of `sensors.yaml`: - -```yaml -- platform: mqtt - name: "Room Humidity" - state_topic: "room/humidity" -- platform: mqtt - name: "Door Motion" - state_topic: "door/motion" - ... -``` - -

    -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 deleted file mode 100644 index 68503dab96..0000000000 --- a/source/_docs/configuration/yaml.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: page -title: "YAML" -description: "Details about YAML to configure Home Assistant." -date: 2015-03-23 12:50 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/yaml/ ---- - -Home Assistant uses the [YAML](http://yaml.org/) syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations. - -For each component that you want to use in Home Assistant, you add code in your `configuration.yaml` file to specify its settings. -The following example entry specifies that you want to use the [notify component](/components/notify) with the [pushbullet platform](/components/notify.pushbullet). - - -```yaml -notify: - platform: pushbullet - api_key: "o.1234abcd" - name: pushbullet -``` - -- 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. 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 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. - -```yaml -input_select: - threat: - name: Threat level -# A collection is used for options - options: - - 0 - - 1 - - 2 - - 3 - 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). - -```yaml -sensor: - - platform: mqtt - state_topic: sensor/topic - - platform: mqtt - 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/). - -## {% linkable_title Common Issues %} - -### {% linkable_title found character '\t' %} - -If you see the following message: - -``` -found character '\t' that cannot start any token -``` - -This means that you've mistakenly entered a tab character, instead of spaces. diff --git a/source/_docs/ecosystem.markdowm b/source/_docs/ecosystem.markdowm deleted file mode 100644 index 2d221faf00..0000000000 --- a/source/_docs/ecosystem.markdowm +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Ecosystem" -description: "External tools for Home Assistant" -date: 2016-10-26 00:46 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ ---- - -Ecosystem includes documentation for related tools and projects that extend Home Assistant to new platforms and systems. - diff --git a/source/_docs/ecosystem/apache.markdown b/source/_docs/ecosystem/apache.markdown deleted file mode 100644 index 92c27eb51a..0000000000 --- a/source/_docs/ecosystem/apache.markdown +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: page -title: "Apache Proxy" -description: "Configure Apache to work with Home Assistant as a subdomain" -date: 2016-06-20 13:05 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /cookbook/apache_configuration/ ---- - -This example demonstrates how you can configure Apache to act as a proxy for Home Assistant. - -This is useful if you want to have: - - * a subdomain redirecting to your Home Assistant instance - * several subdomain for several instance - * HTTPS redirection - -#### {% linkable_title Subdomain %} - -So you already have a working Apache server available at example.org. Your Home Assistant is correctly working on this web server and available at http://localhost:8123 - -Enable [`mod_proxy_wstunnel`](https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html) by running if you encounter issues while serving Home Assistant through your proxy: - -```bash -$ sudo a2enmod proxy_wstunnel -``` - -To be able to access to your Home Assistant instance by using https://home.example.org, add to following file to `/etc/httpd/conf/extra/` as `hass.conf` - -```text - - ServerName home.example.org - ProxyPreserveHost On - ProxyRequests off - ProxyPass /api/websocket ws://localhost:8123/api/websocket - ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket - ProxyPass / http://localhost:8123/ - ProxyPassReverse / http://localhost:8123/ - - 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] - -``` - -and make sure that this file is read by Apache's main configuration file `/etc/httpd/conf/httpd.conf` - -```text -... -Include conf/extra/hass.conf -... -``` - -If you don't want HTTPS, you can change `` to `` or better consider redirecting all HTTP to HTTPS. - - -

    -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 - - [...] - ProxyPass /api/websocket ws://localhost:8123/api/websocket disablereuse=on - [...] - ProxyPass / http://localhost:8123/ disablereuse=on - [...] - -``` - -#### {% linkable_title Multiple Instance %} - -You already have Home Assistant running on http://localhost:8123 and available at home.example.org as describe before. The configuration file for this Home Assistant is available in `/home/alice/.homeassistant/configuration.yaml` - -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/` - -In both solution, change port number used by modifying `configuration.yaml` - -```yaml -http: - server_port: 8124 - ... -``` - -Start Home Assistant: Now, you have another instance running on http://localhost:8124 - -To access this instance by using https://countryside.example.org add to `/etc/httpd/conf/extra/hass.conf` - -```text - - ProxyPreserveHost On - ProxyRequests Off - ServerName countryside.example.org - ProxyPass /api/websocket ws://localhost:8123/api/websocket - ProxyPassReverse /api/websocket ws://localhost:8123/api/websocket - ProxyPass / http://localhost:8124/ - ProxyPassReverse / http://localhost:8124/ - -``` - -#### {% linkable_title HTTP to HTTPS redirection %} - -Add to your `/etc/httpd/conf/extra/hass.conf` - -```text - - ServerName example.org - ServerSignature Off - - RewriteEngine on - RewriteCond %{HTTPS} !=on - RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L] - -``` diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown deleted file mode 100755 index f327433108..0000000000 --- a/source/_docs/ecosystem/appdaemon.markdown +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: page -title: "AppDaemon" -description: "AppDaemon is a loosely coupled, multithreaded, sandboxed Python execution environment for writing automation apps for Home Assistant" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -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 appdaemon.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 bails out after ten iterations. - -```python -import appdaemon.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/stable/). diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown deleted file mode 100755 index 923505b262..0000000000 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ /dev/null @@ -1,2108 +0,0 @@ ---- -layout: page -title: "AppDaemon API Reference" -description: "AppDaemon API Reference" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/api/ ---- - -## {% linkable_title Anatomy of an App %} - -Automations in AppDaemon are performed by creating a piece of code (essentially a Python Class) and then instantiating it as an Object one or more times by configuring it as an App in the configuration file. The App is given a chance to register itself for whatever events it wants to subscribe to, and AppDaemon will then make calls back into the Object's code when those events occur, allowing the App to respond to the event with some kind of action. - -The first step is to create a unique file within the apps directory (as defined in the `[AppDaemon]` section of configuration file). This file is in fact a Python module, and is expected to contain one or more classes derived from the supplied `AppDaemon` class, imported from the supplied `homeassistant.appapi` module. The start of an app might look like this: - -```python -import homeassistant.appapi as appapi - -class MotionLights(appapi.AppDaemon): -``` - -When configured as an app in the config file (more on that later) the lifecycle of the App begins. It will be instantiated as an object by AppDaemon, and immediately, it will have a call made to its `initialize()` function - this function must appear as part of every app: - -```python - def initialize(self): -``` - -The initialize function allows the app to register any callbacks it might need for responding to state changes, and also any setup activities. When the `initialize()` function returns, the App will be dormant until any of its callbacks are activated. - -There are several circumstances under which `initialize()` might be called: - -- Initial start of AppDaemon -- Following a change to the Class code -- Following a change to the module parameters -- Following initial configuration of an app -- Following a change in the status of Daylight Savings Time -- Following a restart of Home Assistant - -In every case, the App is responsible for recreating any state it might need as if it were the first time it was ever started. If `initialize()` is called, the app can safely assume that it is either being loaded for the first time, or that all callbacks and timers have been canceled. In either case, the APP will need to recreate them. Depending upon the application it may be desirable for the App to establish state such as whether or not a particular light is on, within the `initialize()` function to ensure that everything is as expected or to make immediate remedial action (e.g., turn off a light that might have been left on by mistake when the app was restarted). - -After the `initialize()` function is in place, the rest of the app consists of functions that are called by the various callback mechanisms, and any additional functions the user wants to add as part of the program logic. Apps are able to subscribe to 2 main classes of events: - -- Scheduled Events -- State Change Events - -These, along with their various subscription calls and helper functions, will be described in detail in later sections. - -To wrap up this section, here is a complete functioning App (with comments): - -```python -import homeassistant.appapi as appapi -import datetime - -# Declare Class -class NightLight(appapi.AppDaemon): - #initialize() function which will be called at startup and reload - def initialize(self): - # Create a time object for 7pm - time = datetime.time(19, 00, 0) - # Schedule a daily callback that will call run_daily() at 7pm every night - self.run_daily(self.run_daily_callback, time) - - # Our callback function will be called by the scheduler every day at 7pm - def run_daily_callback(self, kwargs): - # Call to Home Assistant to turn the porch light on - self.turn_on("light.porch") -``` - -To summarize - an App's lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That's all there is to it! - -## {% linkable_title About the API %} - -The implementation of the API is located in the AppDaemon class that Apps are derived from. The code for the functions is therefore available to the App simply by invoking the name of the function from the object namespace using the `self` keyword, as in the above examples. `self.turn_on()` for example is just a method defined in the parent class and made available to the child. This design decision was made to simplify some of the implementation and hide passing of unnecessary variables during the API invocation. - -## {% linkable_title Configuration of Apps %} -Apps are configured by specifying new sections in the configuration file. `[AppDaemon]` is a reserved section, for configuration of AppDaemon itself. The name of the section is the name the App is referred to within the system in log files etc. and must be unique. - -To configure a new App you need a minimum of two directives: - -- `module` - the name of the module (without the `.py`) that contains the class to be used for this App -- `class` - the name of the class as defined within the module for the APPs code - -Although the section/App name must be unique, it is possible to re-use a class as many times as you want, and conversely to put as many classes in a module as you want. A sample definition for a new App might look as follows: - -```ini -[newapp] -module = new -class = NewApp -``` - -When AppDaemon sees the following configuration it will expect to find a class called `NewApp` defined in a module called `new.py` in the apps subdirectory. Apps can be placed at the root of the Apps directory or within a subdirectory, an arbitrary depth down - wherever the App is, as long as it is in some subdirectory of the Apps dir, or in the Apps dir itself, AppDaemon will find it. There is no need to include information about the path, just the name of the file itself (without the `.py`) is sufficient. If names in the subdirectories overlap, AppDir will pick one of them but the exact choice it will make is undefined. - -When starting the system for the first time or when reloading an App or Module, the system will log the fact in its main log. It is often the case that there is a problem with the class, maybe a syntax error or some other problem. If that is the case, details will be output to the error log allowing the user to remedy the problem and reload. - -## {% linkable_title Steps to writing an App %} - -1. Create the code in a new or shared module by deriving a class from AppDaemon, add required callbacks and code -2. Add the App to the configuration file -3. There is no number 3 - -## {% linkable_title Reloading Modules and Classes %} - -Reloading of modules is automatic. When the system spots a change in a module, it will automatically reload and recompile the module. It will also figure out which Apps were using that Module and restart them, causing all of their existing callbacks to be cleared, and their `initialize()` function to be called. - -The same is true if changes are made to an App's configuration - changing the class, or arguments (see later) will cause that app to be reloaded in the same way. The system is also capable of detecting if a new app has been added, or if one has been removed, and it will act appropriately, starting the new app immediately and removing all callbacks for the removed app. - -The suggested order for creating a new App is to add the module code first and work until it compiles cleanly, and only then add an entry in the configuration file to actually run it. A good workflow is to continuously monitor the error file (using `tail -f` on Linux for instance) to ensure that errors are seen and can be remedied. - -## {% linkable_title Passing Arguments to Apps %} - -There wouldn't be much point in being able to run multiple versions of an App if there wasn't some way to instruct them to do something different. For this reason it is possible to pass any required arguments to an App, which are then made available to the object at runtime. The arguments themselves can be called anything (apart from `module` or `class`) and are simply added into the section after the 2 mandatory directives like so: - -```ini -[MyApp] -module = myapp -class = MyApp -param1 = spam -param2 = eggs -``` - -Within the Apps code, the 2 parameters (as well as the module and class) are available as a dictionary called `args`, and accessed as follows: - -```python -param1 = self.args["param1"] -param2 = self.args["param2"] -``` - -A use case for this might be an App that detects motion and turns on a light. If you have 3 places you want to run this, rather than hardcoding this into 3 separate Apps, you need only code a single app and instantiate it 3 times with different arguments. It might look something like this: - -```ini -[downstairs_motion_light] -module = motion_light -class = MotionLight -sensor = binary_sensor.downstairs_hall -light = light.downstairs_hall -[upstairs_motion_light] -module = motion_light -class = MotionLight -sensor = binary_sensor.upstairs_hall -light = light.upstairs_hall -[garage_motion_light] -module = motion_light -class = MotionLight -sensor = binary_sensor.garage -light = light.garage -``` - -## {% linkable_title Callback Constraints %} - -Callback constraints are a feature of AppDaemon that removes the need for repetition of some common coding checks. Many Apps will wish to process their callbacks only when certain conditions are met, e.g., someone is home, and it's after sunset. These kinds of conditions crop up a lot, and use of callback constraints can significantly simplify the logic required within callbacks. - -Put simply, callback constraints are one or more conditions on callback execution that can be applied to an individual App. An App's callbacks will only be executed if all of the constraints are met. If a constraint is absent it will not be checked for. - -For example, the presence callback constraint can be added to an App by adding a parameter to its configuration like this: - -```ini -[some_app] -module = some_module -class = SomeClass -constrain_presence = noone -``` - -Now, although the `initialize()` function will be called for MyClass, and it will have a chance to register as many callbacks as it desires, none of the callbacks will execute, in this case, until everyone has left. This could be useful for an interior motion detector App for instance. There are several different types of constraints: - -- input_boolean -- input_select -- presence -- time - -An App can have as many or as few as are required. When more than one constraint is present, they must all evaluate to true to allow the callbacks to be called. Constraints becoming true are not an event in their own right, but if they are all true at a point in time, the next callback that would otherwise been blocked due to constraint failure will now be called. Similarly, if one of the constraints becomes false, the next callback that would otherwise have been called will be blocked. - -They are described individually below. - -### {% linkable_title input_boolean %} -By default, the input_boolean constraint prevents callbacks unless the specified input_boolean is set to "on". This is useful to allow certain Apps to be turned on and off from the user interface. For example: - -```ini -[some_app] -module = some_module -class = SomeClass -constrain_input_boolean = input_boolean.enable_motion_detection -``` - -If you want to reverse the logic so the constraint is only called when the input_boolean is off, use the optional state parameter by appending ",off" to the argument, e.g.: - -```ini -[some_app] -module = some_module -class = SomeClass -constrain_input_boolean = input_boolean.enable_motion_detection,off -``` - -### {% linkable_title input_select %} -The input_select constraint prevents callbacks unless the specified input_select is set to one or more of the nominated (comma separated) values. This is useful to allow certain Apps to be turned on and off according to some flag, e.g., a house mode flag. - -```ini -# Single value -constrain_input_select = input_select.house_mode,Day -# or multiple values -constrain_input_select = input_select.house_mode,Day,Evening,Night -``` - -### {% linkable_title presence %} -The presence constraint will constrain based on presence of device trackers. It takes 3 possible values: -- `noone` - only allow callback execution when no one is home -- `anyone` - only allow callback execution when one or more person is home -- `everyone` - only allow callback execution when everyone is home - -```ini -constrain_presence = anyone -# or -constrain_presence = someone -# or -constrain_presence = noone -``` - -### {% linkable_title time %} -The time constraint consists of 2 variables, `constrain_start_time` and `constrain_end_time`. Callbacks will only be executed if the current time is between the start and end times. -- If both are absent no time constraint will exist -- If only start is present, end will default to 1 second before midnight -- If only end is present, start will default to midnight - -The times are specified in a string format with one of the following formats: -- HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. -- `sunrise`|`sunset` [+|- HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds - -The time based constraint system correctly interprets start and end times that span midnight. - -```ini -# Run between 8am and 10pm -constrain_start_time = 08:00:00 -constrain_end_time = 22:00:00 -# Run between sunrise and sunset -constrain_start_time = sunrise -constrain_end_time = sunset -# Run between 45 minutes before sunset and 45 minutes after sunrise the next day -constrain_start_time = sunset - 00:45:00 -constrain_end_time = sunrise + 00:45:00 -``` - -### {% linkable_title days %} -The day constraint consists of as list of days for which the callbacks will fire, e.g. - -```ini -constrain_days = mon,tue,wed -``` - -Callback constraints can also be applied to individual callbacks within Apps, see later for more details. - -## {% linkable_title A Note on Threading %} - -AppDaemon is multithreaded. This means that any time code within an App is executed, it is executed by one of many threads. This is generally not a particularly important consideration for this application; in general, the execution time of callbacks is expected to be far quicker than the frequency of events causing them. However, it should be noted for completeness, that it is certainly possible for different pieces of code within the App to be executed concurrently, so some care may be necessary if different callback for instance inspect and change shared variables. This is a fairly standard caveat with concurrent programming, and if you know enough to want to do this, then you should know enough to put appropriate safeguards in place. For the average user however this shouldn't be an issue. If there are sufficient use cases to warrant it, I will consider adding locking to the function invocations to make the entire infrastructure threadsafe, but I am not convinced that it is necessary. - -An additional caveat of a threaded worker pool environment is that it is the expectation that none of the callbacks tie threads up for a significant amount of time. To do so would eventually lead to thread exhaustion, which would make the system run behind events. No events would be lost as they would be queued, but callbacks would be delayed which is a bad thing. - -Given the above, NEVER use Python's `time.sleep()` if you want to perform an operation some time in the future, as this will tie up a thread for the period of the sleep. Instead use the scheduler's `run_in()` function which will allow you to delay without blocking any threads. - -## {% linkable_title State Operations %} - -### {% linkable_title A note on Home Assistant State %} - -State within Home Assistant is stored as a collection of dictionaries, one for each entity. Each entity's dictionary will have some common fields and a number of entity type specific fields The state for an entity will always have the attributes: - -- `last_updated` -- `last_changed` -- `state` - -Any other attributes such as brightness for a lamp will only be present if the entity supports them, and will be stored in a sub-dictionary called `attributes`. When specifying these optional attributes in the `get_state()` call, no special distinction is required between the main attributes and the optional ones - `get_state()` will figure it out for you. - -Also bear in mind that some attributes such as brightness for a light, will not be present when the light is off. - -In most cases, the attribute `state` has the most important value in it, e.g., for a light or switch this will be `on` or `off`, for a sensor it will be the value of that sensor. Many of the AppDaemon API calls and callbacks will implicitly return the value of state unless told to do otherwise. - -### {% linkable_title get_state() %} - -#### {% linkable_title Synopsis %} - -```python -get_state(entity = None, attribute = None) -``` - -`get_state()` is used to query the state of any component within Home Assistant. State updates are continuously tracked so this call runs locally and does not require AppDaemon to call back to Home Assistant and as such is very efficient. - -#### {% linkable_title Returns %} - -`get_state()` returns a `dictionary` or single value, the structure of which varies according to the parameters used. - -#### {% linkable_title Parameters %} - -All parameters are optional, and if `get_state()` is called with no parameters it will return the entire state of Home Assistant at that given time. This will consist of a dictionary with a key for each entity. Under that key will be the standard entity state information. - -##### {% linkable_title entity %} - -This is the name of an entity or device type. If just a device type is provided, e.g., `light` or `binary_sensor`, `get_state()` will return a dictionary of all devices of that type, indexed by the entity_id, containing all the state for each entity. - -If a fully qualified `entity_id` is provided, `get_state()` will return the state attribute for that entity, e.g., `on` or `off` for a light. - -##### {% linkable_title attribute %} - -Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified `entity_id`, a single value representing the attribute will be returned, or `None` if it is not present. - -The value `all` for attribute has special significance and will return the entire state dictionary for the specified entity rather than an individual attribute value. - -#### {% linkable_title Examples %} - -```python -# Return state for the entire system -state = self.get_state() - -# Return state for all switches in the system -state = self.get_state("switch") - -# Return the state attribute for light.office_1 -state = self.get_state("light.office_1") - -# Return the brightness attribute for light.office_1 -state = self.get_state("light.office_1", "brightness") - -# Return the entire state for light.office_1 -state = self.get_state("light.office_1", "all") -``` - -### {% linkable_title set_state() %} - -`set_state()` will make a call back to Home Assistant and make changes to the internal state of Home Assistant. This is not something that you would usually want to do and the applications are limited however the call is included for completeness. Note that for instance, setting the state of a light to `on` won't actually switch the device on, it will merely change the state of the device in Home Assistant so that it no longer reflects reality. In most cases, the state will be corrected the next time Home Assistant polls the device or someone causes a state change manually. To effect actual changes of devices use one of the service call functions. - -One possible use case for `set_state()` is for testing. If for instance you are writing an App to turn on a light when it gets dark according to a luminance sensor, you can use `set_state()` to temporarily change the light level reported by the sensor to test your program. However this is also possible using the developer tools. - -At the time of writing, it appears that no checking is done as to whether or not the entity exists, so it is possible to add entirely new entries to Home Assistant's state with this call. - -#### {% linkable_title Synopsis %} - -```python -set_state(entity_id, **kwargs) -``` - -#### {% linkable_title Returns %} - -`set_state()` returns a dictionary representing the state of the device after the call has completed. - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -Entity id for which the state is to be set, e.g., `light.office_1`. - -##### {% linkable_title values %} - -A list of keyword values to be changed or added to the entities state. e.g., `state = "off"`. Note that any optional attributes such as colors for bulbs etc, need to reside in a dictionary called `attributes`; see the example. - -#### {% linkable_title Examples %} - -```python -status = self.set_state("light.office_1", state = "on", attributes = {"color_name": "red"}) -``` - -### {% linkable_title About Callbacks %} - -A large proportion of home automation revolves around waiting for something to happen and then reacting to it; a light level drops, the sun rises, a door opens etc. Home Assistant keeps track of every state change that occurs within the system and streams that information to AppDaemon almost immediately. - -An individual App however usually doesn't care about the majority of state changes going on in the system; Apps usually care about something very specific, like a specific sensor or light. Apps need a way to be notified when a state change happens that they care about, and be able to ignore the rest. They do this through registering callbacks. A callback allows the App to describe exactly what it is interested in, and tells AppDaemon to make a call into its code in a specific place to be able to react to it - this is a very familiar concept to anyone familiar with event-based programming. - -There are 3 types of callbacks within AppDaemon: - -- State Callbacks - react to a change in state -- Scheduler Callbacks - react to a specific time or interval -- Event Callbacks - react to specific Home Assistant and Appdaemon events. - -All callbacks allow the user to specify additional parameters to be handed to the callback via the standard Python `**kwargs` mechanism for greater flexibility. - -### {% linkable_title About Registering Callbacks %} - -Each of the various types of callback have their own function or functions for registering the callback: - -- `listen_state()` for state callbacks -- Various scheduler calls such as `run_once()` for scheduler callbacks -- `listen_event()` for event callbacks. - -Each type of callback shares a number of common mechanisms that increase flexibility. - -#### {% linkable_title Callback Level Constraints %} - -When registering a callback, you can add constraints identical to the Application level constraints described earlier. The difference is that a constraint applied to an individual callback only affects that callback and no other. The constraints are applied by adding Python keyword-value style arguments after the positional arguments. The parameters themselves are named identically to the previously described constraints and have identical functionality. For instance, adding: - -`constrain_presence="everyone"` - -to a callback registration will ensure that the callback is only run if the callback conditions are met and in addition everyone is present although any other callbacks might run whenever their event fires if they have no constraints. - -For example: - -`self.listen_state(self.motion, "binary_sensor.drive", constrain_presence="everyone")` - -#### {% linkable_title User Arguments %} - -Any callback has the ability to allow the App creator to pass through arbitrary keyword arguments that will be presented to the callback when it is run. The arguments are added after the positional parameters just like the constraints. The only restriction is that they cannot be the same as any constraint name for obvious reasons. For example, to pass the parameter `arg1 = "home assistant"` through to a callback you would register a callback as follows: - -`self.listen_state(self.motion, "binary_sensor.drive", arg1="home assistant")` - -Then in the callback you could use it as follows: - -```python -def motion(self, entity, attribute, old, new, **kwargs): - self.log("Arg1 is {}".format(kwargs["arg1"])) -``` - -### {% linkable_title State Callbacks %} - -AppDaemons's state callbacks allow an App to listen to a wide variety of events, from every state change in the system, right down to a change of a single attribute of a particular entity. Setting up a callback is done using a single API call `listen_state()` which takes various arguments to allow it to do all of the above. Apps can register as many or as few callbacks as they want. - -### {% linkable_title About State Callback Functions %} - -When calling back into the App, the App must provide a class function with a known signature for AppDaemon to call. The callback will provide various information to the function to enable the function to respond appropriately. For state callbacks, a class defined callback function should look like this: - -```python - def my_callback(self, entity, attribute, old, new, **kwargs): - -``` - -You can call the function whatever you like - you will reference it in the `listen_state()` call, and you can create as many callback functions as you need. - -The parameters have the following meanings: - -#### {% linkable_title self %} - -A standard Python object reference. - -#### {% linkable_title entity %} - -Name of the entity the callback was requested for or `None`. - -#### {% linkable_title attribute %} - -Name of the attribute the callback was requested for or `None`. - -#### {% linkable_title old %} - -The value of the state before the state change. - -#### {% linkable_title new %} - -The value of the state after the state change. - -`old` and `new` will have varying types depending on the type of callback. - -#### {% linkable_title \*\*kwargs %} - -A dictionary containing any constraints and/or additional user specific keyword arguments supplied to the `listen_state()` call. - -### {% linkable_title listen_state() %} - -`listen_state()` allows the user to register a callback for a wide variety of state changes. - -#### {% linkable_title Synopsis %} - -```python -handle = listen_state(callback, entity = None, **kwargs) -``` - -#### {% linkable_title Returns %} - -A unique identifier that can be used to cancel the callback if required. Since variables created within object methods are local to the function they are created in, and in all likelihood the cancellation will be invoked later in a different function, it is recommended that handles are stored in the object namespace, e.g., `self.handle`. - -#### {% linkable_title Parameters %} - -All parameters except `callback` are optional, and if `listen_state()` is called with no additional parameters it will subscribe to any state change within Home Assistant. - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard State Callback format documented above. - -##### {% linkable_title entity %} - -This is the name of an entity or device type. If just a device type is provided, e.g., `light` or `binary_sensor`, `listen_state()` will subscribe to state changes of all devices of that type. If a fully qualified `entity_id` is provided, `listen_state()` will listen for state changes for just that entity. - -When called, AppDaemon will supply the callback function, in old and new, with the state attribute for that entity, e.g., `on` or `off` for a light. - -##### {% linkable_title attribute (optional) %} - -Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified `entity_id`, `listen_state()` will subscribe to changes for just that attribute within that specific entity. The new and old parameters in the callback function will be provided with a single value representing the attribute. - -The value `all` for attribute has special significance and will listen for any state change within the specified entity, and supply the callback functions with the entire state dictionary for the specified entity rather than an individual attribute value. - -##### {% linkable_title new = (optional) %} - -If `new` is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually `state`) in the new state match the value of `new`. - -##### {% linkable_title old = (optional) %} - -If `old` is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually `state`) in the old state match the value of `old`. - -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 occurred, since the assumption is that none of them have changed in the intervening period. - -```python - def my_callback(self, **kwargs): - -``` - -(Scheduler callbacks are documented in detail laer in this document) - -##### {% linkable_title \*\*kwargs %} - -Zero or more keyword arguments that will be supplied to the callback when it is called. - -#### {% linkable_title Examples %} - -```python -# Listen for any state change and return the state attribute -self.handle = self.listen_state(self.my_callback) - -# Listen for any state change involving a light and return the state attribute -self.handle = self.listen_state(self.my_callback, "light") - -# Listen for a state change involving light.office1 and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1") - -# Listen for a state change involving light.office1 and return the entire state as a dict -self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "all") - -# Listen for a state change involving the brightness attribute of light.office1 -self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "brightness") - -# Listen for a state change involving light.office1 turning on and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on") - -# Listen for a state change involving light.office1 changing from brightness 100 to 200 and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1", old = "100", new = "200") - -# Listen for a state change involving light.office1 changing to state on and remaining on for a minute -self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on", duration = 60) - -``` - -### {% linkable_title cancel_listen_state() %} - -Cancel a `listen_state()` callback. This will mean that the App will no longer be notified for the specific state change that has been canceled. Other state changes will continue to be monitored. - -#### {% linkable_title Synopsis %} - -```python -cancel_listen_state(handle) -``` - -#### {% linkable_title Returns %} - -Nothing - -#### {% linkable_title Parameters %} - -##### {% linkable_title handle %} - -The handle returned when the `listen_state()` call was made. - -#### {% linkable_title Examples %} - -```python -self.cancel_listen_state(self.office_light_handle) -``` - -### {% linkable_title info_listen_state() %} - -Get information on state a callback from its handle. - -#### {% linkable_title Synopsis %} - -```python -entity, attribute, kwargs = self.info_listen_state(self.handle) -``` - -#### {% linkable_title Returns %} - -entity, attribute, kwargs - the values supplied when the callback was initially created. - -#### {% linkable_title Parameters %} - -##### {% linkable_title handle %} - -The handle returned when the `listen_state()` call was made. - -#### {% linkable_title Examples %} - -```python -entity, attribute, kwargs = self.info_listen_state(self.handle) -``` - -## {% linkable_title Scheduler %} - -AppDaemon contains a powerful scheduler that is able to run with 1 second resolution to fire off specific events at set times, or after set delays, or even relative to sunrise and sunset. In general, events should be fired less than a second after specified but under certain circumstances there may be short additional delays. - -### {% linkable_title About Schedule Callbacks %} - -As with State Change callbacks, Scheduler Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: - -```python - def my_callback(self, **kwargs): - -``` - -You can call the function whatever you like; you will reference it in the Scheduler call, and you can create as many callback functions as you need. - -The parameters have the following meanings: - -#### {% linkable_title self %} -A standard Python object reference - -#### {% linkable_title \*\*kwargs %} - -A dictionary containing Zero or more keyword arguments to be supplied to the callback. - -### {% linkable_title Creation of Scheduler Callbacks %} - -Scheduler callbacks are created through use of a number of convenience functions which can be used to suit the situation. - -#### {% linkable_title run_in() %} - -Run the callback in a defined number of seconds. This is used to add a delay, for instance a 60 second delay before a light is turned off after it has been triggered by a motion detector. This callback should always be used instead of `time.sleep()` as discussed previously. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_in(callback, delay, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### vcallback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title delay %} - -Delay, in seconds before the callback is invoked. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -self.handle = self.run_in(self.run_in_c) -self.handle = self.run_in(self.run_in_c, title = "run_in5") -``` -#### {% linkable_title run_once() %} - -Run the callback once, at the specified time of day. If the time of day is in the past, the callback will occur on the next day. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_once(callback, time, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title time %} - -A Python `time` object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Run at 4pm today, or 4pm tomorrow if it is already after 4pm -import datetime -... -runtime = datetime.time(16, 0, 0) -handle = self.run_once(self.run_once_c, runtime) -``` - -#### {% linkable_title run_at() %} - -Run the callback once, at the specified date and time. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_at(callback, datetime, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. `run_at()` will raise an exception if the specified time is in the past. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title datetime %} - -A Python `datetime` object that specifies when the callback will occur. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Run at 4pm today -import datetime -... -runtime = datetime.time(16, 0, 0) -today = datetime.date.today() -event = datetime.datetime.combine(today, runtime) -handle = self.run_once(self.run_once_c, event) -``` -#### {% linkable_title run_daily() %} - -Execute a callback at the same time every day. If the time has already passed, the function will not be invoked until the following day at the specified time. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_daily(callback, time, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title time %} - -A Python `time` object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Run daily at 7pm -import datetime -... -time = datetime.time(19, 0, 0) -self.run_daily(self.run_daily_c, runtime) -``` - -#### {% linkable_title run_hourly() %} - -Execute a callback at the same time every hour. If the time has already passed, the function will not be invoked until the following hour at the specified time. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_hourly(callback, time = None, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title time %} - -A Python `time` object that specifies when the callback will occur, the hour component of the time object is ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start an hour from the time that `run_hourly()` was executed. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Run every hour, on the hour -import datetime -... -time = datetime.time(0, 0, 0) -self.run_daily(self.run_daily_c, runtime) -``` -#### {% linkable_title run_minutely() %} - -Execute a callback at the same time every minute. If the time has already passed, the function will not be invoked until the following minute at the specified time. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_minutely(callback, time = None, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title time %} - -A Python `time` object that specifies when the callback will occur, the hour and minute components of the time object are ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start a minute from the time that `run_minutely()` was executed. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Run Every Minute on the minute -import datetime -... -time = datetime.time(0, 0, 0) -self.run_minutely(self.run_minutely_c, time) -``` - -#### {% linkable_title run_every() %} - -Execute a repeating callback with a configurable delay starting at a specific time. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_every(callback, time, repeat, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title time %} - -A Python `time` object that specifies when the initial callback will occur. - -##### {% linkable_title repeat %} - -After the initial callback has occurred, another will occur every `repeat` seconds. - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Run every 17 minutes starting in 2 hours time -import datetime -... -self.run_every(self.run_every_c, time, 17 * 60) -``` - -#### {% linkable_title cancel_timer() %} -Cancel a previously created timer - -#### {% linkable_title Synopsis %} - -```python -self.cancel_timer(handle) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title handle %} - -A handle value returned from the original call to create the timer. - -#### {% linkable_title Examples %} - -```python -self.cancel_timer(handle) -``` - -### {% linkable_title info_timer() %} - -Get information on a scheduler event from its handle. - -#### {% linkable_title Synopsis %} - -```python -time, interval, kwargs = self.info_timer(handle) -``` - -#### {% linkable_title Returns %} - -time - datetime object representing the next time the callback will be fired - -interval - repeat interval if applicable, `0` otherwise. - -kwargs - the values supplied when the callback was initially created. - -#### {% linkable_title Parameters %} - -##### {% linkable_title handle %} - -The handle returned when the scheduler call was made. - -#### {% linkable_title Examples %} - -```python -time, interval, kwargs = self.info_timer(handle) -``` - -### {% linkable_title Scheduler Ransomization %} - -All of the scheduler calls above support 2 additional optional arguments, `random_start` and `random_end`. Using these arguments it is possible to randomize the firing of callbacks to the degree desired by setting the appropriate number of seconds with the parameters. - -- `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 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: - -```python -# Run a callback in 2 minutes minus a random number of seconds between 0 and 60, e.g., run between 60 and 120 seconds from now -self.handle = self.run_in(callback, 120, random_start = -60, **kwargs) -# Run a callback in 2 minutes plus a random number of seconds between 0 and 60, e.g., run between 120 and 180 seconds from now -self.handle = self.run_in(callback, 120, random_end = 60, **kwargs) -# Run a callback in 2 minutes plus or minus a random number of seconds between 0 and 60, e.g., run between 60 and 180 seconds from now -self.handle = self.run_in(callback, 120, random_start = -60, random_end = 60, **kwargs) -``` - -## {% linkable_title Sunrise and Sunset %} - -AppDaemon has a number of features to allow easy tracking of sunrise and sunset as well as a couple of scheduler functions. Note that the scheduler functions also support the randomization parameters described above, but they cannot be used in conjunction with the `offset` parameter`. - -### {% linkable_title run_at_sunrise() %} - -Run a callback at or around sunrise. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_at_sunrise(callback, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title offset = %} - -The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with `random_start` or `random_end` - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -import datetime -... -# Run 45 minutes before sunset -self.run_at_sunrise(self.sun, offset = datetime.timedelta(minutes = -45).total_seconds(), "Sunrise -45 mins") -# or you can just do the math yourself -self.run_at_sunrise(self.sun, offset = 30 * 60, "Sunrise +30 mins") -# Run at a random time +/- 60 minutes from sunrise -self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 60*60, "Sunrise, random +/- 60 mins") -# Run at a random time between 30 and 60 minutes before sunrise -self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 30*60, "Sunrise, random - 30 - 60 mins") -``` - -### {% linkable_title run_at_sunset() %} - -Run a callback at or around sunset. - -#### {% linkable_title Synopsis %} - -```python -self.handle = self.run_at_sunset(callback, offset, **kwargs) -``` - -#### {% linkable_title Returns %} - -A handle that can be used to cancel the timer. - -#### {% linkable_title Parameters %} - -##### {% linkable_title callback %} - -Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. - -##### {% linkable_title offset = %} - -The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with `random_start` or `random_end` - -##### {% linkable_title \*\*kwargs %} - -Arbitrary keyword parameters to be provided to the callback function when it is invoked. - -#### {% linkable_title Examples %} - -```python -# Example using timedelta -import datetime -... -self.run_at_sunset(self.sun, datetime.timedelta(minutes = -45).total_seconds(), "Sunset -45 mins") -# or you can just do the math yourself -self.run_at_sunset(self.sun, 30 * 60, "Sunset +30 mins") -# Run at a random time +/- 60 minutes from sunset -self.run_at_sunset(self.sun, random_start = -60*60, random_end = 60*60, "Sunset, random +/- 60 mins") -# Run at a random time between 30 and 60 minutes before sunset -self.run_at_sunset(self.sun, random_start = -60*60, random_end = 30*60, "Sunset, random - 30 - 60 mins") -``` -### {% linkable_title sunrise() %} - -Return the time that the next Sunrise will occur. - -#### {% linkable_title Synopsis %} - -```python -self.sunrise() -``` - -#### {% linkable_title Returns %} - -A Python datetime that represents the next time Sunrise will occur. - -#### {% linkable_title Examples %} - -```python -rise_time = self.sunrise() -``` -### {% linkable_title sunset() %} - -Return the time that the next Sunset will occur. - -#### {% linkable_title Synopsis %} - -```python -self.sunset() -``` - -#### {% linkable_title Returns %} - -A Python datetime that represents the next time Sunset will occur. - -#### {% linkable_title Examples %} - -```python -set_time = self.sunset() -``` -### {% linkable_title sun_up() %} - -A function that allows you to determine if the sun is currently up. - -#### {% linkable_title Synopsis %} - -```python -result = self.sun_up() -``` - -#### {% linkable_title Returns %} - -`True` if the sun is up, False otherwise. - -#### {% linkable_title Examples %} - -```python -if self.sun_up(): - do something -``` - -### {% linkable_title sun_down() %} - -A function that allows you to determine if the sun is currently down. - -#### {% linkable_title Synopsis %} - -```python -result = self.sun_down() -``` - -#### {% linkable_title Returns %} - -`True` if the sun is down, False otherwise. - -#### {% linkable_title Examples %} - -```python -if self.sun_down(): - do something -``` - -## {% linkable_title Calling Services %} - -### {% linkable_title About Services %} - -Services within Home Assistant are how changes are made to the system and its devices. Services can be used to turn lights on and off, set thermostats and a whole number of other things. Home Assistant supplies a single interface to all these disparate services that take arbitrary parameters. AppDaemon provides the `call_service()` function to call into Home Assistant and run a service. In addition, it also provides convenience functions for some of the more common services making calling them a little easier. - -### {% linkable_title call_service() %} - -Call service is the basic way of calling a service within AppDaemon. It can call any service and provide any required parameters. Available services can be found using the developer tools in the UI. For listed services, the part before the first period is the domain, and the part after is the service name. For instance, `light.turn_on` has a domain of `light` and a service name of `turn_on`. - -#### {% linkable_title Synopsis %} - -```python -self.call_service(self, service, **kwargs) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title service %} - -The service name, e.g., `light.turn_on`. - -##### {% linkable_title \*\*kwargs %} - -Each service has different parameter requirements. This argument allows you to specify a comma separated list of keyword value pairs, e.g., `entity_id = light.office_1`. These parameters will be different for every service and can be discovered using the developer tools. Most if not all service calls require an `entity_id` however, so use of the above example is very common with this call. - -#### {% linkable_title Examples %} - -```python -self.call_service("light/turn_on", entity_id = "light.office_lamp", color_name = "red") -self.call_service("notify/notify", title = "Hello", message = "Hello World") -``` -### {% linkable_title turn_on() %} - -This is a convenience function for the `homassistant.turn_on` function. It is able to turn on pretty much anything in Home Assistant that can be turned on or run: - -- Lights -- Switches -- Scenes -- Scripts - -And many more. - -#### {% linkable_title Synopsis %} - -```python -self.turn_on(entity_id, **kwargs) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -Fully qualified entity_id of the thing to be turned on, e.g., `light.office_lamp` or ```scene.downstairs_on``` - -##### {% linkable_title \*\*kwargs %} - -A comma separated list of key value pairs to allow specification of parameters over and above `entity_id`. - -#### {% linkable_title Examples %} - -```python -self.turn_on("switch.patio_lights") -self.turn_on("scene.bedrrom_on") -self.turn_on("light.office_1", color_name = "green") -``` - -### {% linkable_title turn_off() %} - -This is a convenience function for the `homassistant.turn_off` function. Like `homeassistant.turn_on`, it is able to turn off pretty much anything in Home Assistant that can be turned off. - -#### {% linkable_title Synopsis %} - -```python -self.turn_off(entity_id) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -Fully qualified entity_id of the thing to be turned off, e.g., `light.office_lamp` or `scene.downstairs_on`. - -#### {% linkable_title Examples %} - -```python -self.turn_off("switch.patio_lights") -self.turn_off("light.office_1") -``` - -### {% linkable_title toggle() %} - -This is a convenience function for the `homassistant.toggle` function. It is able to flip the state of pretty much anything in Home Assistant that can be turned on or off. - -#### {% linkable_title Synopsis %} - -```python -self.toggle(entity_id) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -Fully qualified entity_id of the thing to be toggled, e.g., `light.office_lamp` or `scene.downstairs_on`. - -#### {% linkable_title Examples %} - -```python -self.toggle("switch.patio_lights") -self.toggle("light.office_1", color_name = "green") -``` - -### {% linkable_title select_value() %} - -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 %} - -```python -self.select_value(entity_id, value) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -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 number to. - -#### {% linkable_title Examples %} - -```python -self.select_value("input_number.alarm_hour", 6) -``` - -### {% linkable_title select_option() %} - -This is a convenience function for the `input_select.select_option` function. It is able to set the value of an input_select in Home Assistant. - -#### {% linkable_title Synopsis %} - -```python -self.select_option(entity_id, option) -``` - -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -Fully qualified entity_id of the input_select to be changed, e.g., `input_select.mode`. - -##### {% linkable_title value %} - -The new value to set the input number to. - -#### {% linkable_title Examples %} - -```python -self.select_option("input_select.mode", "Day") -``` - -### {% linkable_title notify() %} - -This is a convenience function for the `notify.notify` service. It will send a notification to your default notification service. If you have more than one, use `call_service()` to call the specific notification service you require instead. - -#### {% linkable_title Synopsis %} - -```python -notify(message, title=None) -``` -#### {% linkable_title Returns %} - -None - -#### {% linkable_title Parameters %} - -##### {% linkable_title message %} - -Message to be sent to the notification service. - -##### {% linkable_title title %} - -Title of the notification - optional. - -#### {% linkable_title Examples %} - -```python -self.notify("", "Switching mode to Evening") -``` - -## {% linkable_title Events %} - -### {% linkable_title About Events %} - -Events are a fundamental part of how Home Assistant works under the covers. HA has an event bus that all components can read and write to, enabling components to inform other components when important events take place. We have already seen how state changes can be propagated to AppDaemon - a state change however is merely an example of an event within Home Assistant. There are several other event types, among them are: - -- `homeassistant_start` -- `homeassistant_stop` -- `state_changed` -- `service_registered` -- `call_service` -- `service_executed` -- `platform_discovered` -- `component_loaded` - -Using AppDaemon, it is possible to subscribe to specific events as well as fire off events. - -In addition to the Home Assistant supplied events, AppDaemon adds 2 more events. These are internal to AppDaemon and are not visible on the Home Assistant bus: - -- `appd_started` - fired once when AppDaemon is first started and after Apps are initialized -- `ha_started` - fired every time AppDaemon detects a Home Assistant restart - -### {% linkable_title About Event Callbacks %} - -As with State Change and Scheduler callbacks, Event Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: - -```python - def my_callback(self, event_name, data, kwargs): - -``` - -You can call the function whatever you like - you will reference it in the Scheduler call, and you can create as many callback functions as you need. - -The parameters have the following meanings: - -#### {% linkable_title self %} - -A standard Python object reference. - -#### {% linkable_title event_name %} - -Name of the event that was called, e.g., `call_service`. - -#### {% linkable_title data %} - -Any data that the system supplied with the event as a dict. - -#### {% linkable_title kwargs %} - -A dictionary containing Zero or more user keyword arguments to be supplied to the callback. - -### {% linkable_title listen_event() %} - -Listen event sets up a callback for a specific event, or any event. - -#### {% linkable_title Synopsis %} - -```python -handle = listen_event(function, event = None, **kwargs): -``` -#### {% linkable_title Returns %} - -A handle that can be used to cancel the callback. - -#### {% linkable_title Parameters %} - -##### {% linkable_title function %} - -The function to be called when the event is fired. - -##### {% linkable_title event %} - -Name of the event to subscribe to. Can be a standard Home Assistant event such as `service_registered` or an arbitrary custom event such as `"MODE_CHANGE"`. If no event is specified, `listen_event()` will subscribe to all events. - -##### {% linkable_title \*\*kwargs (optional) %} - -One or more keyword value pairs representing App specific parameters to supply to the callback. If the keywords match values within the event data, they will act as filters, meaning that if they don't match the values, the callback will not fire. - -As an example of this, a Minimote controller when activated will generate an event called `zwave.scene_activated`, along with 2 pieces of data that are specific to the event - `entity_id` and `scene`. If you include keyword values for either of those, the values supplied to the `listen_event()` call must match the values in the event or it will not fire. If the keywords do not match any of the data in the event they are simply ignored. - -Filtering will work with any event type, but it will be necessary to figure out the data associated with the event to understand what values can be filtered on. This can be achieved by examining Home Assistant's logfiles when the event fires. - -#### {% linkable_title Examples %} - -```python -self.listen_event(self.mode_event, "MODE_CHANGE") -# Listen for a minimote event activating scene 3: -self.listen_event(self.generic_event, "zwave.scene_activated", scene_id = 3) -# Listen for a minimote event activating scene 3 from a specific minimote: -self.listen_event(self.generic_event, "zwave.scene_activated", entity_id = "minimote_31", scene_id = 3) -``` - -### {% linkable_title cancel_listen_event() %} - -Cancels callbacks for a specific event. - -#### {% linkable_title Synopsis %} - -```python -cancel_listen_event(handle) -``` -#### {% linkable_title Returns %} - -None. - -#### {% linkable_title Parameters %} - -##### handle - -A handle returned from a previous call to `listen_event()`. - -#### {% linkable_title Examples %} - -```python -self.cancel_listen_event(handle) -``` - -### {% linkable_title info_listen_event() %} - -Get information on an event callback from its handle. - -#### {% linkable_title Synopsis %} - -```python -service, kwargs = self.info_listen_event(handle) -``` - -#### {% linkable_title Returns %} - -service, kwargs - the values supplied when the callback was initially created. - -#### {% linkable_title Parameters %} - -##### {% linkable_title handle %} - -The handle returned when the `listen_event()` call was made. - -#### {% linkable_title Examples %} - -```python -service, kwargs = self.info_listen_event(handle) -``` - - -### {% linkable_title fire_event() %} - -Fire an event on the HomeAssistant bus, for other components to hear. - -#### {% linkable_title Synopsis %} - -```python -fire_event(event, **kwargs) -``` - -#### {% linkable_title Returns %} - -None. - -#### {% linkable_title Parameters %} - -##### {% linkable_title event %} - -Name of the event. Can be a standard Home Assistant event such as `service_registered` or an arbitrary custom event such as `"MODE_CHANGE"`. - -##### {% linkable_title \*\*kwargs %} - -Zero or more keyword arguments that will be supplied as part of the event. - -#### {% linkable_title Examples %} - -```python -self.fire_event("MY_CUSTOM_EVENT", jam="true") -``` - -### {% linkable_title Event Callback Function Signature %} - -Functions called as an event callback will be supplied with 2 arguments: - -```python -def service(self, event_name, data): -``` - -#### {% linkable_title event_name %} - -The name of the event that caused the callback, e.g., `"MODE_CHANGE"` or `call_service`. - -#### {% linkable_title data %} - -A dictionary containing any additional information associated with the event. - -### {% linkable_title Use of Events for Signaling between Home Assistant and AppDaemon %} - -Home Assistant allows for the creation of custom events and existing components can send and receive them. This provides a useful mechanism for signaling back and forth between Home Assistant and AppDaemon. For instance, if you would like to create a UI Element to fire off some code in Home Assistant, all that is necessary is to create a script to fire a custom event, then subscribe to that event in AppDaemon. The script would look something like this: - -```yaml -alias: Day -sequence: -- event: MODE_CHANGE - event_data: - mode: Day -``` - -The custom event `MODE_CHANGE` would be subscribed to with: - -```python -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 its automation component. This can be used to signal from AppDaemon code back to Home Assistant. Here is a sample automation: - -```yaml -automation: - trigger: - platform: event - event_type: MODE_CHANGE - ... - ... -``` - -This can be triggered with a call to AppDaemon's fire_event() as follows: - -```python -self.fire_event("MODE_CHANGE", mode = "Day") -``` - -## {% linkable_title Presence %} - -Presence in Home Assistant is tracked using Device Trackers. The state of all device trackers can be found using the `get_state()` call, however AppDaemon provides several convenience functions to make this easier. - -### {% linkable_title get_trackers() %} - -Return a list of all device trackers. This is designed to be iterated over. - -#### {% linkable_title Synopsis %} - -```python -tracker_list = get_trackers() -``` -#### {% linkable_title Returns %} - -An iterable list of all device trackers. - -#### {% linkable_title Examples %} - -```python -trackers = self.get_trackers() -for tracker in trackers: - do something -``` - -### {% linkable_title get_tracker_state() %} - -Get the state of a tracker. The values returned depend in part on the configuration and type of device trackers in the system. Simpler tracker types like `Locative` or `NMAP` will return one of 2 states: - -- `home` -- `not_home` - -Some types of device tracker are in addition able to supply locations that have been configured as Geofences, in which case the name of that location can be returned. - -#### {% linkable_title Synopsis %} - -```python -location = self.get_tracker_state(tracker_id) -``` - -#### {% linkable_title Returns %} - -A string representing the location of the tracker. - -#### {% linkable_title Parameters %} - -##### {% linkable_title tracker_id %} - -Fully qualified entity_id of the device tracker to query, e.g., `device_tracker.andrew`. - -#### {% linkable_title Examples %} - -```python -trackers = self.get_trackers() -for tracker in trackers: - self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) -``` - -### {% linkable_title everyone_home() %} - -A convenience function to determine if everyone is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. - -#### {% linkable_title Synopsis %} - -```python -result = self.everyone_home() -``` -#### {% linkable_title Returns %} - -Returns `True` if everyone is at home, `False` otherwise. - -#### {% linkable_title Examples %} - -```python -if self.everyone_home(): - do something -``` -### {% linkable_title anyone_home() %} - -A convenience function to determine if one or more person is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. - -#### {% linkable_title Synopsis %} - -```python -result = self.anyone_home() -``` - -#### {% linkable_title Returns %} - -Returns `True` if anyone is at home, `False` otherwise. - -#### {% linkable_title Examples %} - -```python -if self.anyone_home(): - do something -``` -### {% linkable_title noone_home() %} - -A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers. - -#### {% linkable_title Synopsis %} - -```python -result = self.noone_home() -``` - -#### {% linkable_title Returns %} - -Returns `True` if no one is home, `False` otherwise. - -#### {% linkable_title Examples %} - -```python -if self.noone_home(): - do something -``` - -## {% linkable_title Miscellaneous Helper Functions %} - -### {% linkable_title time() %} - -Returns a python `time` object representing the current time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. - -#### {% linkable_title Synopsis %} - -```python -time() -``` - -#### {% linkable_title Returns %} - -A localized Python time object representing the current AppDaemon time. - -#### {% linkable_title Parameters %} - -None - -#### {% linkable_title Example %} - -```python -now = self.time() -``` - -### {% linkable_title date() %} - -Returns a python `date` object representing the current date. Use this in preference to the standard Python ways to discover the current date, especially when using the "Time Travel" feature for testing. - -#### {% linkable_title Synopsis %} - -```python -date() -``` - -#### {% linkable_title Returns %} - -A localized Python time object representing the current AppDaemon date. - -#### {% linkable_title Parameters %} - -None - -#### {% linkable_title Example %} - -```python -today = self.date() -``` - -### {% linkable_title datetime() %} - -Returns a python `datetime` object representing the current date and time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. - -#### {% linkable_title Synopsis %} - -```python -datetime() -``` - -#### {% linkable_title Returns %} - -A localized Python datetime object representing the current AppDaemon date and time. - -#### {% linkable_title Parameters %} - -None - -#### {% linkable_title Example %} - -```python -now = self.datetime() -``` - - -### {% linkable_title convert_utc() %} - -Home Assistant provides timestamps of several different sorts that may be used to gain additional insight into state changes. These timestamps are in UTC and are coded as ISO 8601 Combined date and time strings. `convert_utc()` will accept one of these strings and convert it to a localized Python datetime object representing the timestamp - -#### {% linkable_title Synopsis %} - -```python -convert_utc(utc_string) -``` - -#### {% linkable_title Returns %} - -`convert_utc(utc_string)` returns a localized Python datetime object representing the timestamp. - -#### {% linkable_title Parameters %} - -##### {% linkable_title utc_string %} - -An ISO 8601 encoded date and time string in the following format: `2016-07-13T14:24:02.040658-04:00` - -#### {% linkable_title Example %} - -###{% linkable_title parse_time() %} - -Takes a string representation of a time, or sunrise or sunset offset and converts it to a `datetime.time` object. - -#### {% linkable_title Synopsis %} - -```python -parse_time(time_string) -``` - -#### {% linkable_title Returns %} - -A `datetime.time` object, representing the time given in the `time_string` argument. - -#### {% linkable_title Parameters %} - -##### {% linkable_title time_string %} - -A representation of the time in a string format with one of the following formats: - -- HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. -- sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds - -#### {% linkable_title Example %} - -```python -time = self.parse_time("17:30:00") -time = self.parse_time("sunrise") -time = self.parse_time("sunset + 00:30:00") -time = self.parse_time("sunrise + 01:00:00") -``` - -### {% linkable_title now_is_between() %} - -Takes two string representations of a time, or sunrise or sunset offset and returns true if the current time is between those 2 times. `now_is_between()` can correctly handle transitions across midnight. - -#### {% linkable_title Synopsis %} - -```python -now_is_between(start_time_string, end_time_string) -``` - -#### {% linkable_title Returns %} - -`True` if the current time is within the specified start and end times, `False` otherwise. - -#### {% linkable_title Parameters %} - -##### {% linkable_title start_time_string, end_time_string %} - -A representation of the start and end time respectively in a string format with one of the following formats: - -- HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. -- sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds - -#### {% linkable_title Example %} - -```python -if self.now_is_between("17:30:00", "08:00:00"): - do something -if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"): - do something -``` - -### {% linkable_title friendly_name() %} - -`frindly_name()` will return the Friendly Name of an entity if it has one. - -#### {% linkable_title Synopsis %} - -```python -Name = self.friendly_name(entity_id) -``` - -#### {% linkable_title Returns %} - -The friendly name of the entity if it exists or the entity id if not. - -#### {% linkable_title Example %} - -```python -tracker = "device_tracker.andrew" -self.log("{} ({}) is {}".format(tracker, self.friendly_name(tracker), self.get_tracker_state(tracker))) -``` - -### {% linkable_title split_entity() %} - -`split_entity()` will take a fully qualified entity id of the form `light.hall_light` and split it into 2 values, the device and the entity, e.g., `light` and `hall_light`. - -#### {% linkable_title Synopsis %} - -```python -device, entity = self.split_entity(entity_id) -``` - -#### {% linkable_title Parameters %} - -##### {% linkable_title entity_id %} - -Fully qualified entity id to be split. - -#### {% linkable_title Returns %} - -A list with 2 entries, the device and entity respectively. - -#### {% linkable_title Example %} - -```python -device, entity = self.split_entity(entity_id) -if device == "scene": - do something specific to scenes -``` - - -### {% linkable_title get_app() %} - -`get_app()` will return the instantiated object of another app running within the system. This is useful for calling functions or accessing variables that reside in different apps without requiring duplication of code. - -#### {% linkable_title Synopsis %} - -```python -get_app(self, name) -``` -#### {% linkable_title Parameters %} - -##### {% linkable_title name %} - -Name of the app required. This is the name specified in header section of the config file, not the module or class. - -#### {% linkable_title Returns %} - -An object reference to the class. - -#### {% linkable_title Example %} -```python -MyApp = self.get_app("MotionLights") -MyApp.turn_light_on() -``` - -### {% linkable_title split_device_list() %} - -`split_device_list()` will take a comma separated list of device types (or anything else for that matter) and return them as an iterable list. This is intended to assist in use cases where the App takes a list of entities from an argument, e.g., a list of sensors to monitor. If only one entry is provided, an iterable list will still be returned to avoid the need for special processing. - -#### {% linkable_title Synopsis %} - -```python -devices = split_device_list(list) -``` - -#### {% linkable_title Returns %} - -A list of split devices with 1 or more entries. - -#### {% linkable_title Example %} - -```python -for sensor in self.split_device_list(self.args["sensors"]): - do something for each sensor, e.g., make a state subscription -``` - - -### {% linkable_title Writing to Logfiles %} - -AppDaemon uses 2 separate logs - the general log and the error log. An AppDaemon App can write to either of these using the supplied convenience methods `log()` and `error()`, which are provided as part of parent `AppDaemon` class, and the call will automatically pre-pend the name of the App making the call. The `-D` option of AppDaemon can be used to specify what level of logging is required and the logger objects will work as expected. - -### {% linkable_title log() %} - -#### {% linkable_title Synopsis %} - -```python -log(message, level = "INFO") -``` - -#### {% linkable_title Returns %} - -Nothing - -#### {% linkable_title Parameters %} - -##### {% linkable_title Message %} - -The message to log. - -##### {% linkable_title level %} - -The log level of the message - takes a string representing the standard logger levels. - -#### {% linkable_title Examples %} - -```python -self.log("Log Test: Parameter is {}".format(some_variable)) -self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") -``` - -### {% linkable_title error() %} - -#### {% linkable_title Synopsis %} - -```python -error(message, level = "WARNING") -``` -#### {% linkable_title Returns %} - -Nothing - -#### {% linkable_title Parameters %} - -##### {% linkable_title Message %} - -The message to log. - -##### {% linkable_title level %} - -The log level of the message - takes a string representing the standard logger levels. - -#### {% linkable_title Examples %} - -```python -self.error("Some Warning string") -self.error("Some Critical string", level = "CRITICAL") -``` - -## {% linkable_title Sharing information between Apps %} - -Sharing information between different Apps is very simple if required. Each app gets access to a global dictionary stored in a class attribute called `self.global_vars`. Any App can add or read any key as required. This operation is not however threadsafe so some car is needed. - -In addition, Apps have access to the entire configuration if required, meaning they can access AppDaemon configuration items as well as parameters from other Apps. To use this, there is a class attribute called `self.config`. It contains a `ConfigParser` object, which is similar in operation to a `Dictionary`. To access any apps parameters, simply reference the ConfigParser object using the Apps name (form the config file) as the first key, and the parameter required as the second, for instance: - -```python -other_apps_arg = self.config["some_app"]["some_parameter"]. -``` - -To get AppDaemon's config parameters, use the key "AppDaemon", e.g.: - -```python -app_timezone = self.config["AppDaemon"]["time_zone"] -``` - -And finally, it is also possible to use the AppDaemon as a global area for sharing parameters across Apps. Simply add the required parameters to the AppDaemon section of your config: - -```ini -[AppDaemon] -ha_url = -ha_key = -... -global_var = hello world -``` - -Then access it as follows: - -```python -my_global_var = conf.config["AppDaemon"]["global_var"] -``` - -## {% linkable_title Development Workflow %} - -Developing Apps is intended to be fairly simple but is an exercise in programming like any other kind of Python programming. As such, it is expected that apps will contain syntax errors and will generate exceptions during the development process. AppDaemon makes it very easy to iterate through the development process as it will automatically reload code that has changed and also will reload code if any of the parameters in the configuration file change as well. - -The recommended workflow for development is as follows: - -- Open a window and tail the `appdaemon.log` file -- Open a second window and tail the `error.log` file -- Open a third window or the editor of your choice for editing the App - -With this setup, you will see that every time you write the file, AppDaemon will log the fact and let you know it has reloaded the App in the `appdaemon.log` file. - -If there is an error in the compilation or a runtime error, this will be directed to the `error.log` file to enable you to see the error and correct it. When an error occurs, there will also be a warning message in `appdaemon.log` to tell you to check the error log. - -## {% linkable_title Time Travel %} - -OK, time travel sadly isn't really possible but it can be very useful when testing Apps. For instance, imagine you have an App that turns a light on every day at sunset. It might be nice to test it without waiting for Sunset - and with AppDaemon's "Time Travel" features you can. - -### {% linkable_title Choosing a Start Time %} - -Internally, AppDaemon keeps track of its own time relative to when it was started. This make is possible to start AppDaemon with a different start time and date to the current time. For instance to test that sunset App, start AppDaemon at a time just before sunset and see if it works as expected. To do this, simply use the "-s" argument on AppDaemon's command line. e,g,: - -```bash -$ appdaemon -s "2016-06-06 19:16:00" -2016-09-06 17:16:00 INFO AppDaemon Version 1.3.2 starting -2016-09-06 17:16:00 INFO Got initial state -2016-09-06 17:16:00 INFO Loading Module: /export/hass/appdaemon_test/conf/test_apps/sunset.py -... -``` - -Note the timestamps in the log - AppDaemon believes it is now just before sunset and will process any callbacks appropriately. - -### {% linkable_title Speeding things up %} - -Some Apps need to run for periods of a day or two for you to test all aspects. This can be time consuming, but Time Travel can also help here in two ways. The first is by speeding up time. To do this, simply use the `-t` option on the command line. This specifies the amount of time a second lasts while time traveling. The default of course is 1 second, but if you change it to `0.1` for instance, AppDaemon will work 10x faster. If you set it to `0`, AppDaemon will work as fast as possible and, depending in your hardware, may be able to get through an entire day in a matter of minutes. Bear in mind however, due to the threaded nature of AppDaemon, when you are running with `-t 0` you may see actual events firing a little later than expected as the rest of the system tries to keep up with the timer. To set the tick time, start AppDaemon as follows: - -```bash -$ appdaemon -t 0.1 -``` - -AppDaemon also has an interval flag - think of this as a second multiplier. If the flag is set to 3600 for instance, each tick of the scheduler will jump the time forward by an hour. This is good for covering vast amounts of time quickly but event firing accuracy will suffer as a result. For example: - -```bash -$ appdaemon -e 3600 -``` - -### Automatically stopping - -AppDaemon can be set to terminate automatically at a specific time. This can be useful if you want to repeatedly rerun a test, for example to test that random values are behaving as expected. Simply specify the end time with the `-e` flag as follows: - -```bash -$ appdaemon -e "2016-06-06 10:10:00" -2016-09-06 17:16:00 INFO AppDaemon Version 1.3.2 starting -2016-09-06 17:16:00 INFO Got initial state -2016-09-06 17:16:00 INFO Loading Module: /export/hass/appdaemon_test/conf/test_apps/sunset.py -... -``` - -The `-e` flag is most useful when used in conjuntion with the -s flag and optionally the `-t` flag. For example, to run from just before sunset, for an hour, as fast as possible: - -```bash -$ appdaemon -s "2016-06-06 19:16:00" -s "2016-06-06 20:16:00" -t 0 -``` - - -### {% linkable_title A Note on Times %} - -Some Apps you write may depend on checking times of events relative to the current time. If you are time traveling this will not work if you use standard python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied `time()`, `date()` and `datetime()` calls, documented earlier. These calls will consult with AppDaemon's internal time rather than the actual time and give you the correct values. diff --git a/source/_docs/ecosystem/appdaemon/configuration.markdown b/source/_docs/ecosystem/appdaemon/configuration.markdown deleted file mode 100644 index 1dca0e72bb..0000000000 --- a/source/_docs/ecosystem/appdaemon/configuration.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: page -title: "Configuration" -description: "AppDaemon Configuration" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/configuration/ ---- - -When you have appdaemon installed by either method, copy the `conf/appdaemon.cfg.example` file to `conf/appdaemon.cfg`, then edit the `[AppDaemon]` section to reflect your environment: - -``` -[AppDaemon] -ha_url = -ha_key = -logfile = STDOUT -errorfile = STDERR -app_dir = /conf/apps -threads = 10 -latitude = -longitude = -elevation = -cert_path = -# Apps -[hello_world] -module = hello -class = HelloWorld -``` - -- `ha_url` is a reference to your Home Assistant installation and must include the correct port number and scheme (`http://` or `https://` as appropriate) -- `ha_key` should be set to your key if you have one, otherwise it can be removed. -- `logfile` (optional) is the path to where you want `AppDaemon` to keep its main log. When run from the command line this is not used - log messages come out on the terminal. When running as a daemon this is where the log information will go. In the example above I created a directory specifically for AppDaemon to run from, although there is no reason you can't keep it in the `appdaemon` directory of the cloned repository. If `logfile = STDOUT`, output will be sent to stdout instead of stderr when running in the foreground, if not specified, output will be sent to STDOUT. -- `errorfile` (optional) is the name of the logfile for errors - this will usually be errors during compilation and execution of the apps. If `errorfile = STDERR` errors will be sent to stderr instead of a file, if not specified, output will be sent to STDERR. -- `app_dir` (optional) is the directory the apps are placed in. If not specified, AppDaemon will look first in `~/.homeassistant` then `/etc/appdaemon` for a subdirectory named `apps` -- `threads` - the number of dedicated worker threads to create for running the apps. Note, this will bear no resemblance to the number of apps you have, the threads are re-used and only active for as long as required to tun a particular callback or initialization, leave this set to 10 unless you experience thread starvation -- `latitude`, `longitude`, `elevation`, `timezone` - should all be copied from your Home Assistant configuration file -- `cert_path` (optional) - path to root CA cert directory - use only if you are using self signed certs. - -The `#Apps` section is the configuration for the Hello World program and should be left in place for initial testing but can be removed later if desired, as other Apps are added, App configuration is described in the [API doc](API.md). - -## {% linkable_title Docker %} - -For Docker Configuration you need to take a couple of extra things into consideration. - -Our Docker image is designed to load your configuration and apps from a volume at `/conf` so that you can manage them in your own git repository, or place them anywhere else on the system and map them using the Docker command line. - -For example, if you have a local repository in `/Users/foo/ha-config` containing the following files: - -```bash -$ git ls-files -configuration.yaml -customize.yaml -known_devices.yaml -appdaemon.cfg -apps -apps/magic.py -``` - -You will need to modify the `appdaemon.cfg` file to point to these apps in `/conf/apps`: - -``` -[AppDaemon] -ha_url = -ha_key = -logfile = STDOUT -errorfile = STDERR -app_dir = /conf/apps -threads = 10 -latitude = -longitude = -elevation = -``` - -You can run Docker and point the conf volume to that directory. diff --git a/source/_docs/ecosystem/appdaemon/example_apps.markdown b/source/_docs/ecosystem/appdaemon/example_apps.markdown deleted file mode 100644 index bf696f634c..0000000000 --- a/source/_docs/ecosystem/appdaemon/example_apps.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Example Apps" -description: "AppDaemon Example Apps" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/example_apps/ ---- - -There are a number of example apps under conf/examples, and the `conf/examples.cfg` file gives sample parameters for them. diff --git a/source/_docs/ecosystem/appdaemon/installation.markdown b/source/_docs/ecosystem/appdaemon/installation.markdown deleted file mode 100644 index 46acc734e8..0000000000 --- a/source/_docs/ecosystem/appdaemon/installation.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Installation" -description: "AppDaemon Installation" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/installation/ ---- - -Installation is either by `pip3` or Docker. - -Follow [these instructions](https://github.com/home-assistant/appdaemon/blob/dev/README.rst) for full details. diff --git a/source/_docs/ecosystem/appdaemon/operation.markdown b/source/_docs/ecosystem/appdaemon/operation.markdown deleted file mode 100644 index 536f474aee..0000000000 --- a/source/_docs/ecosystem/appdaemon/operation.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Operation" -description: "Operation" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/tutorial/ ---- - -Since `AppDaemon` under the covers uses the exact same APIs as the frontend UI, you typically see it react at about the same time to a given event. Calling back to Home Assistant is also pretty fast especially if they are running on the same machine. In action, observed latency above the built in automation component is usually sub-second. diff --git a/source/_docs/ecosystem/appdaemon/reboot.markdown b/source/_docs/ecosystem/appdaemon/reboot.markdown deleted file mode 100644 index 2eba9f75a6..0000000000 --- a/source/_docs/ecosystem/appdaemon/reboot.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Starting at Reboot" -description: "Starting at Reboot" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/reboot/ ---- - -To run `AppDaemon` at reboot, I have provided a sample init script in the `./scripts` directory. These have been tested on a Raspberry Pi - your mileage may vary on other systems. There is also a sample Systemd script. diff --git a/source/_docs/ecosystem/appdaemon/running.markdown b/source/_docs/ecosystem/appdaemon/running.markdown deleted file mode 100755 index d4006526d6..0000000000 --- a/source/_docs/ecosystem/appdaemon/running.markdown +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: page -title: "Running AppDaemon" -description: "Running AppDaemon" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/running/ ---- - -As configured, `AppDaemon` comes with a single HelloWorld App that will send a greeting to the logfile to show that everything is working correctly. - -## {% linkable_title Docker %} - -Assuming you have set the config up as described above for Docker, you can run it with the command: - -```bash -$ docker run -d -v /conf:/conf --name appdaemon appdaemon:latest -``` - -In the example above you would use: - -```bash -$ docker run -d -v /Users/foo/ha-config:/conf --name appdaemon appdaemon:latest -``` - -Where you place the `conf` and `conf/apps` directory is up to you - it can be in downloaded repostory, or anywhere else on the host, as long as you use the correct mapping in the `docker run` command. - -You can inspect the logs as follows: - -```bash -$ docker logs appdaemon -2016-08-22 10:08:16,575 INFO Got initial state -2016-08-22 10:08:16,576 INFO Loading Module: /export/hass/appdaemon_test/conf/apps/hello.py -2016-08-22 10:08:16,578 INFO Loading Object hello_world using class HelloWorld from module hello -2016-08-22 10:08:16,580 INFO Hello from AppDaemon -2016-08-22 10:08:16,584 INFO You are now ready to run Apps! -``` - -Note that for Docker, the error and regular logs are combined. - -## {% linkable_title `pip3` %} - -You can then run AppDaemon from the command line as follows: - -```bash -$ appdaemon -c conf/appdaemon.cfg -``` - -If all is well, you should see something like the following: - -``` -$ appdaemon -c conf/appdaemon.cfg -2016-08-22 10:08:16,575 INFO Got initial state -2016-08-22 10:08:16,576 INFO Loading Module: /export/hass/appdaemon_test/conf/apps/hello.py -2016-08-22 10:08:16,578 INFO Loading Object hello_world using class HelloWorld from module hello -2016-08-22 10:08:16,580 INFO Hello from AppDaemon -2016-08-22 10:08:16,584 INFO You are now ready to run Apps! -``` - -## {% linkable_title AppDaemon arguments %} - -``` -usage: appdaemon [-h] [-c CONFIG] [-p PIDFILE] [-t TICK] [-s STARTTIME] - [-e ENDTIME] [-i INTERVAL] - [-D {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-v] [-d] - -optional arguments: - -h, --help show this help message and exit - -c CONFIG, --config CONFIG - full path to config file - -p PIDFILE, --pidfile PIDFILE - full path to PID File - -t TICK, --tick TICK time in seconds that a tick in the schedular lasts - -s STARTTIME, --starttime STARTTIME - start time for scheduler - -e ENDTIME, --endtime ENDTIME - end time for scheduler - -i INTERVAL, --interval INTERVAL - multiplier for scheduler tick - -D {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --debug {DEBUG,INFO,WARNING,ERROR,CRITICAL} - debug level - -v, --version show program's version number and exit - -d, --daemon run as a background process -``` - --c is the path to the configuration file. If not specified, AppDaemon will look for a file named `appdaemon.cfg` first in `~/.homeassistant` then in `/etc/appdaemon`. If the file is not specified and it is not found in either location, AppDaemon will raise an exception. - --d and -p are used by the init file to start the process as a daemon and are not required if running from the command line. - --D can be used to increase the debug level for internal AppDaemon operations as well as apps using the logging function. - -The -s, -i, -t and -s options are for the Time Travel feature and should only be used for testing. They are described in more detail in the API documentation. diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown deleted file mode 100755 index 28f325dfa0..0000000000 --- a/source/_docs/ecosystem/appdaemon/tutorial.markdown +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: page -title: "AppDaemon Tutorial" -description: "AppDaemon Tutorial" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/tutorial/ ---- - -## {% linkable_title Another Take on Automation %} - -If you haven't yet read Paulus' excellent Blog entry on [Perfect Home Automation](/blog/2016/01/19/perfect-home-automation/) I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the "Automation" in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation in bring this all together in the vast and chaotic ecosystem that is the "Internet of Things". - -So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks: - -- Can the system respond to presence or absence of people? -- Can I turn a light on at Sunset +/- a certain amount of time? -- Can I arrive home in light or dark and have the lights figure out if they should be on or off? -- As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly? -- Is it open and expandable? -- Does it run locally without any reliance on the cloud? - -In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and its Restful API. - -So why `AppDaemon`? 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 5 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 with out 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, and 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 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 %} - -The best way to show what AppDaemon does is through a few simple examples. - -### {% linkable_title Sunrise/Sunset Lighting %} - -Lets start with a simple App to turn a light on every night fifteen -minutes (900 seconds) before 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 2 separate -callbacks. The named argument `offset` is the number of seconds offset -from sunrise or sunset and can be negative or positive (it defaults to -zero). For complex intervals it can be convenient to use Python's -`datetime.timedelta` class for calculations. In the example below, -when sunrise or just before sunset occurs, the appropriate callback -function, `sunrise_cb()` or `before_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.plugins.hass.hassapi as hass - - class OutsideLights(hass.Hass): - - def initialize(self): - self.run_at_sunrise(self.sunrise_cb) - self.run_at_sunset(self.before_sunset_cb, offset=-900) - - def sunrise_cb(self, kwargs): - self.turn_on(self.args["off_scene"]) - - def before_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 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 appdaemon.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 lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 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 10 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 logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. - -I have spent the last few weeks moving all of my (fairly complex) automations over to `APPDaemon` and so far it is working very reliably. - -Some people will maybe look at all of this and say "what use is this, I can already do all of this", and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations. - -If this has whet your appetite, feel free to give it a try. - -Happy Automating! - diff --git a/source/_docs/ecosystem/appdaemon/updating.markdown b/source/_docs/ecosystem/appdaemon/updating.markdown deleted file mode 100644 index 132b4dc5d2..0000000000 --- a/source/_docs/ecosystem/appdaemon/updating.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Updating AppDaemon" -description: "Updating AppDaemon" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/updating/ ---- - -To update AppDaemon after I have released new code, just run the following command to update your copy: - -```bash -$ sudo pip3 install --upgrade appdaemon -``` - -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 deleted file mode 100755 index 4d2e7daeaa..0000000000 --- a/source/_docs/ecosystem/appdaemon/windows.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Windows Support" -description: "Windows Support" -release_date: 2016-11-27 08:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/appdaemon/windows/ ---- - -AppDaemon runs under windows and has been tested with the official 3.5.2 release of Python. There are a couple of caveats however: - -- The `-d` or `--daemonize` option is not supported owing to limitations in the Windows implementation of Python. -- Some internal diagnostics are disabled. This is not user visible but may hamper troubleshooting of internal issues if any crop up - -AppDaemon can be installed exactly as per the instructions for every other version using pip3. - -## {% 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 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 deleted file mode 100644 index 6baa2cbc9a..0000000000 --- a/source/_docs/ecosystem/backup/backup_dropbox.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: page -title: "Configuration Backup to Dropbox" -description: "Instructions on how backup your Home Assistant configuration to Dropbox" -date: 2017-04-24 18:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /cookbook/dropboxbackup/ ---- - -Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) similar to [Github Backup](/docs/ecosystem/backup/backup_github/) - -### {% linkable_title Requirements %} - -You need two parts in order to get it working correctly. - -Become the user that run Home Assistant. - -- 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. - -In the Python script you can specify which files and directories should be excluded. This allows you to skip `secrets.yaml` or the `deps` folder. - -### {% linkable_title Step 1: Linking your Dropbox account %} - -```bash -$ chmod +x dropbox_uploader.sh -$ ./dropbox_uploader.sh -``` -Follow the instructions you see on your screen. - -### {% linkable_title Step 2: Running the Dropbox uploader %} - -Go to the folder you have placed `dropbox.py`. - -```bash -$ python dropbox.py -``` - -The first time can take a lot of time since it will upload all your files! -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 automatically. Since your database can change and so do other files over time. -Add it to your crontab, edit the **path/to** part. - -```bash -$ (crontab -l 2>/dev/null; echo "0 3 * * * python /path/to/dropbox.py") | crontab - -``` diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown deleted file mode 100644 index 278d3fc20c..0000000000 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ /dev/null @@ -1,198 +0,0 @@ ---- -layout: page -title: "Configuration Backup to GitHub" -description: "Instructions on how backup your Home Assistant configuration to GitHub" -date: 2017-01-05 18:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /cookbook/githubbackup/ ---- - -Backing up and regularly syncing your Home Assistant configuration to [GitHub](http://GitHub.com) has several benefits: - -- A remote copy of your Home Assistant YAML files in case you need to recover -- A documented history of your changes for troubleshooting purposes -- It will help the Home Assistant community learn from your configuration examples - -

    -This is not a comprehensive tutorial on using GitHub, more information can be found in the [GitHub Help](https://help.github.com/) pages. This guide assumes the user has an intermediate experience level and is comfortable with such concepts as: navigating the Home Assistant directory structure, logging in as the Home Assistant user, and working with the command line. -

    - -

    -This will not create a full backup of your Home Assistant files or your OS. In addition to backing up to Github, you should consider having regular backups of all your Home Assistant configuration files and images of your SD card if applicable. -

    - -### {% linkable_title Important Best Practices %} - -Some best practices to consider before putting your configuration on GitHub: - -- Extensive use of [secrets.yaml](/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 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 %} - -In order to put your configuration on GitHub, you must install the git package on your Home Assistant server (instructions below will work on Raspberry Pi, Ubunutu, or any Debian-based system) *note: this isn't required in Hass.io, it's included as default so proceed to step 2*: - -```bash -$ sudo apt-get update -$ sudo apt-get install git -``` - -### {% linkable_title Step 2: Creating %} `.gitignore` - -

    -Before creating and pushing your Home Assistant configuration to GitHub, please make sure to follow the `secrets.yaml` best practice mentioned above and scrub your configuration for any passwords or sensitive information. -

    - -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 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 -* -!*.yaml -!scenes -!.gitignore -secrets.yaml -known_devices.yaml -``` - -More information on the layout of the file can be found in the [.gitignore manual](https://git-scm.com/docs/gitignore). - -### {% linkable_title Step 3: Preparing your Home Assistant directory for GitHub %} - -In your Home Assistant directory, type the following commands as the Home Assistant user, replacing the email address and name with your information: - -```bash -$ git init -$ git config user.email "you@example.com" -$ git config user.name "Your Name" -$ git add . -$ git commit -``` - -After the `git commit` command, you will be asked to enter a message for the commit. This will add a comment beside each file on GitHub describing the purpose for the commit. In this case, you can enter something like "Initial commit of my Home Assistant configuration." - -### {% linkable_title Step 4: Creating Repository on GitHub %} - -- Connect to [GitHub](https://github.com) and login to your account (or create an account if you don't already have one). -- Click "[New Repository](https://github.com/new)" and give your repository a name/description (`Home-AssistantConfig` is used in the example below). You do NOT need to change any other options. -- Click "Create Repository" - -### {% linkable_title Step 5: Your initial commit to GitHub %} - -Once you are sure you are using `secrets.yaml` and `.gitignore` correctly, it is time to push your configuration to the GitHub Repository that you just created. - -In your Home Assistant directory, type the following commands as the Home Assistant user, replacing "username" in the URL with your GitHub username: - -```bash -$ git remote add origin https://github.com/username/Home-AssistantConfig -$ git push -u origin master -``` - -You will 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/)). - -Congratulations, you now have a copy of your current Home Assistant Configuration on GitHub! - -### {% linkable_title Step 6: Keeping your repository up to date %} - -You should update your repository on a regular basis; ideally after you make a major configuration change (new device, new component, etc.). The below script will update your repository with any changed configuration files and allow you to add a comment with the commit for tracking purposes: - -

    -You may need to adjust the paths in the script depending on your Home Assistant configuration. -

    - -`gitupdate.sh` - -```bash -#!/bin/bash - -cd /home/homeassistant/.homeassistant -source /srv/homeassistant/homeassistant_venv/bin/activate -hass --script check_config - -git add . -git status -echo -n "Enter the Description for the Change: " [Minor Update] -read CHANGE_MSG -git commit -m "${CHANGE_MSG}" -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 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 %} - -[Travis CI](https://travis-ci.org) is a continuous integration testing system that runs every time the code in your repository is updated and allows you to validate that your code works on a fresh install. - -- [Authorize Travis CI](https://travis-ci.org/auth) to have access to your github repos. -- Create the build script that travis will run to test your repo. -- Create a dummy secrets.yaml for Travis. - -Example .travis.yml -```yaml -language: python -python: - - "3.5" -before_install: - - mv travis_secrets.yaml secrets.yaml -install: - - pip3 install homeassistant -script: - - hass -c . --script check_config -``` - -Since the secrets.yaml should _not_ be stored in your repo for security reasons, you won't be able to access it at build time. Creating a dummy secrets.yaml is as simple as creating a new file that mimics your existing secrets.yaml with the required keys, but not their value. - -```yaml -#travis_secrets.yaml -http_api: 000000000000000000000000 -home_latitude: 00.00000 -home_longitude: 00.0000 -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 committed yet: - - -```bash -$ git ls-files -$ git status -``` -Examples: - -```bash -homeassistant@raspberrypi:~/.homeassistant $ git ls-files -.gitignore -README.md -automation.yaml -configuration.yaml -customize.yaml -device_tracker.yaml -group.yaml -script.yaml - -homeassistant@raspberrypi:~/.homeassistant $ git status -On branch master -Your branch is up-to-date with 'origin/master'. -Changes not staged for commit: - (use "git add ..." to update what will be committed) - (use "git checkout -- ..." to discard changes in working directory) - - modified: .gitignore - modified: automation.yaml - modified: customize.yaml - modified: group.yaml - -no changes added to commit (use "git add" and/or "git commit -a") -``` diff --git a/source/_docs/ecosystem/backup/backup_usb.markdown b/source/_docs/ecosystem/backup/backup_usb.markdown deleted file mode 100644 index cc07a0b079..0000000000 --- a/source/_docs/ecosystem/backup/backup_usb.markdown +++ /dev/null @@ -1,118 +0,0 @@ ---- -layout: page -title: "Configuration Backup to USB drive" -description: "Instructions on how backup your Home Assistant configuration to USB drive" -date: 2017-04-29 08:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -This will step you through the process of setting up a backup of your Home Assistant configuration to a USB device. This is a good method if you don't want to mask all of your passwords since the backup is kept locally at your home/residence. - -### {% linkable_title Requirements %} - -First, you need a USB drive. It should be formatted properly for your device and connected to your device before beginning. Any type of partition will work, but Linux filesystems are preferred so that you can set permissions. -Once connected you want to mount the drive. To find the path where it is located, you can use the `dmesg` command. - -```bash -# dmesg | grep sd -[ 0.909712] sdhci: Secure Digital Host Controller Interface driver -[ 0.916414] sdhci: Copyright(c) Pierre Ossman -[ 0.923366] sdhost: log_buf @ bac07000 (fac07000) -[ 0.989001] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1) -[ 1.049095] sdhci-pltfm: SDHCI platform and OF driver helper -[726257.743301] sd 0:0:0:0: Attached scsi generic sg0 type 0 -[726259.184810] sd 0:0:0:0: [sda] 124846080 512-byte logical blocks: (63.9 GB/59.5 GiB) -[726259.185603] sd 0:0:0:0: [sda] Write Protect is off -[726259.185613] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00 -[726259.186432] sd 0:0:0:0: [sda] No Caching mode page found -[726259.186445] sd 0:0:0:0: [sda] Assuming drive cache: write through -[726259.206085] sda: sda1 -[726259.209004] sd 0:0:0:0: [sda] Attached SCSI removable disk -``` - -The device here is `sda` and our partition is `sda1`. So our partition is located here `/dev/sda1`. - -Mount the drive (as root) to `/media` - -```bash -# sudo mount /dev/sda1 /media/ -``` - -### {% linkable_title Prepare the USB Device %} - -Change to the `/media` directory and create a folder called `hassbackup`. Change the ownership to the user that runs Home Assistant. In this example case, the user and group are both `homeassistant`. - -```bash -# cd /media/ -/media# mkdir hassbackup -/media# chown homeassistant:homeassistant hassbackup/ -/media# ls -al -total 28 -drwxr-xr-x 4 root root 4096 Apr 29 10:36 . -drwxr-xr-x 22 root root 4096 Mar 22 18:37 .. -drwxr-xr-x 2 homeassistant homeassistant 4096 Apr 29 10:36 hassbackup -drwx------ 2 root root 16384 Apr 29 10:18 lost+found -``` - -### {% linkable_title Install Dependency %} - -The script in the next section uses zip to preserve space on your drive. So we will install zip next. - -```bash -/media# apt-get install zip -Reading package lists... Done -Building dependency tree -[...] -Setting up zip (3.0-8) ... -``` - -### {% linkable_title Download and Run Script %} - -Become the `homeassistant` user (or whatever user runs Home Assistant). Change to whatever directory you would like the [script](https://gist.github.com/riemers/041c6a386a2eab95c55ba3ccaa10e7b0) placed into and run the following command. - -```bash -# wget https://gist.githubusercontent.com/riemers/041c6a386a2eab95c55ba3ccaa10e7b0/raw/86727d4e72e9757da4f68f1c9d784720e72d0e99/usb_backup.sh -``` - -Make the downloaded script executable. - -```bash -# chmod +x usb_backup.sh -``` - -Edit the script file using your preferred text editor (use nano if you are not advanced). Change the paths to reflect your configuration, then simply run `./usb_backup.sh`. - -```bash -$ .homeassistant/extraconfig/shell_code/usb_backup.sh -[i] Creating backup -[i] Backup complete: /media/hassbackup/hass-config_20170429_112728.zip -[i] Keeping all files no prunning set -``` - -### {% linkable_title Set Up Crontab %} - -To automatically backup your configuration on a schedule, you can add a crontab for it as the `homeassistant` user. -Change the path below to the directory where you placed the `usb_backup.sh` and run the following line. This will backup every night at 3 am. - -```bash -(crontab -l 2>/dev/null; echo "0 3 * * * /home/homeassistant/.homeassistant/extraconfig/shell_code/usb_backup.sh") | crontab - -``` - -### {% linkable_title Auto Mount the USB Device %} - -NOTE: This does not automatically mount your USB drive at boot. You will need to manually mount your drive after each boot or add a line to your `/etc/fstab` file. - -To manually mount a USB drive located at `/dev/sda1`, run the following line: - -```bash -# mount /dev/sda1 /media -``` - -Alternatively, auto-mount the drive by adding the following entry to your `/etc/fstab`: - -```text -/dev/sda1 /media ext4 defaults,noatime 0 1 -``` diff --git a/source/_docs/ecosystem/caddy.markdown b/source/_docs/ecosystem/caddy.markdown deleted file mode 100644 index 22879119d9..0000000000 --- a/source/_docs/ecosystem/caddy.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -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 deleted file mode 100644 index b678e77746..0000000000 --- a/source/_docs/ecosystem/certificates.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -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 deleted file mode 100644 index 1239eb550a..0000000000 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ /dev/null @@ -1,552 +0,0 @@ ---- -layout: page -title: "Remote Access with TLS/SSL via Let's Encrypt" -description: "A guide to remotely accessing Home Assistant and securing the connection with an SSL certificate from Let's Encrypt" -date: 2017-03-16 17:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -

    -If you are using Hass.io or Hassbian, do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) for Hass.io or the [DuckDNS suite](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/duckdns.md) for Hassbian 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](/docs/configuration/basic/) page. -

    - - -This guide was added by mf_social on 16/03/2017 and was valid at the time of writing. This guide makes the following assumptions: - - * You can access your Home Assistant instance across your local network, and access the device that it is on via SSH from your local network. - * You know the internal IP address of your router and can access your router's configuration pages. - * You have already set up a password for your Home Assistant instance, following the advice on this page: [http](/docs/configuration/basic/) - * You want to access your Home Assistant instance when you are away from home (ie, not connected to your local network) and secure it with a TLS/SSL certificate. - * You have a basic understanding of the phrases I have used so far. - * 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 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: - - - 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding - - 1 - Set your device to have a static IP address - - 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 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 - - 9 - Set up an alert to warn us if something went wrong - -### {% linkable_title 0 - Gain a basic level of understanding around IP addresses, port numbers and port forwarding %} - -An IP address is a bit like a phone number. When you access your Home Assistant instance you type something similar to 192.168.0.200:8123 in to your address bar of your browser. The bit before the colon is the IP address (in this case 192.168.0.200) and the bit after is the port number (in this case 8123). When you SSH in to the device running Home Assistant you will use the same IP address, and you will use port 22. You may not be aware that you are using port 22, but if you are using Putty look in the box next to where you type the IP address, you will see that it has already selected port 22 for you. - -So, if an IP address is like a phone number, a port number is like an extension number. An analogy would be if you phone your local doctors on 192-1680-200 and the receptionist answers, you ask to speak to Dr. Smith and she will put you through to extension 8123, which is the phone Dr. Smith is sitting at. The doctors surgery is the device your Home Assistant is running on, Dr. Smith is your Home Assistant. Thusly, your Home Assistant instance is 'waiting for your call' on port 8123, at the device IP 192.168.0.200 . - -Now, to speak to the outside world your connection goes through a router. Your router will have two IP addresses. One is the internal network number, most likely 192.168.0.1 in my example, and an external IP address that incoming traffic is sent to. In the example of calling the doctors, the external IP is your telephone number's area code. - -So, when we want to connect to our Home Assistant instance from outside our network we will need to call the correct extension number, at the correct phone number, in the correct area code. - -We will be looking for a system to run like this (in this example I will pretend our external IP is 12.12.12.12): - -```text -Outside world -> 12.12.12.12:8123 -> your router -> 192.168.0.200:8123 -``` -Sounds simple? It really is except for two small, but easy to overcome, complications: - - * IP addresses are often dynamically allocated, so they can change. - * Because of the way the internet works you cannot chain IP addresses together to get from where you are, to where you want to go. - -To get around the issue of changing IP addresses we must remember that there are two IP addresses affected. Your external one (which we will 'call' to get on to your network from the internet) and your internal one (192.168.0.200 in the example I am currently using). - -So, we can use a static IP to ensure that whenever our device running Home Assistant connects to our router it always uses the same address. This way our internal IP never changes. This is covered in step 1 below. - -We then have no control over our external IP, as our Service Provider will give us a new one at random intervals. To fix this we will use a service called DuckDNS which will give us a name for our connection (something like examplehome.duckdns.org) and behind the scenes will continue to update your external IP. So no matter how many times the IP address changes, typing examplehome.duckdns.org in to our browser will convert to the correct, up-to-date, IP address. This is covered in step 3 below. - -To get around the issue of not being able to chain the IP addresses together (I can't say I want to call 12:12:12:12 and be put through to 192.168.0.200, and then be put through to extension 8123) we use port forwarding. Port forwarding is the process of telling your router which device to allow the outside connection to speak to. In the doctors surgery example, port forwarding is the receptionist. This takes a call from outside, and forwards it to the correct extension number inside. It is important to note that port forwarding can forward an incoming request for one port to a different port on your internal network if you so choose, and we will be doing this later on. The end result being that when we have our TSL/SSL certificate our incoming call will be requesting port 443 (because that is the SSL port, like the SSH port is always 22), but our port forwarding rule will forward this to our HA instance on port 8123. When this guide is completed we will run something like this: - -```text -Outside world -> https://examplehome.duckdns.org -> 12.12.12.12:443 -> your router -> 192.168.0.200:8123 -``` -So, let's make it happen... - -### {% linkable_title 1 - Set your device to have a static IP address %} - -Whenever a device is connected to a network it has an IP address. This IP address is often dynamically assigned to the device on connection. This means there are occasions where the IP address you use to access Home Assistant, or SSH in to the device running Home Assistant, may change. Setting a static IP address means that the device will always be on the same address. - -SSH in to your system running Home Assistant and login. - -Type the following command to list your network interfaces: - -```bash -$ ifconfig -``` - -You will receive an output similar to the image below: - -

    - - Screenshot -

    - -Make a note of the interface name and the IP address you are currently on. In the picture it is the wireless connection that is highlighted, but with your setup it may be the wired one (eth0 or similar), make sure you get the correct information. - -Then type the following command to open the text file that controls your network connection: - -```bash -$ sudo nano /etc/dhcpcd.conf -``` - -At the bottom of the file add the following lines: - -```text -interface wlan0 <----- or the interface you just wrote down. - -static ip_address=192.168.0.200/24 <---- the IP address you just wrote down with a '/24' at the end -static routers=192.168.0.1 <---- Your router's IP address -static domain_name_servers=192.168.0.1 <---- Your router's IP address -``` - -It is important to note that the first three bytes of your static IP address and your router's IP address should be the same, eg: - -```text -Router: 192.168.0.1 - -Yes -HA IP: 192.168.0.200 - -No -HA IP: 192.175.96.200 -``` - -Press Ctrl + x to close the editor, pressing Y to save the changes when prompted. - -Reboot your device running HA: - -```bash -$ sudo reboot -``` - -When it comes back up check that you can SSH in to it again on the IP address you wrote down. - -Make sure Home Assistant is running and access it via the local network by typing the IP address and port number in to the browser: - -```text -http://192.168.0.200:8123. -``` - -All working? Hooray! You now have a static IP. This will now always be your internal IP address for your Home Assistant device. This will be known as YOUR-HA-IP for the rest of this guide. - -### {% linkable_title 2 - Set up port forwarding without TLS/SSL and test connection %} - -Log in to your router's configuration pages and find the port forwarding options. This bit is hard to write a guide for because each router has a different way of presenting these options. Searching google for "port forwarding" and the name of your router may help. When you find it you will likely have options similar to: - -Service name - Port Range - Local IP - Local Port - Protocol - -You may also have other options (like 'source IP'), these can usually be left blank or in their default state. - -Set the port forwarding to: - -```text -Service name - ha_test -Port Range - 8123 -Local IP - YOUR-HA-IP -Local Port - 8123 -Protocol - Both -``` - -Then save the change. On my router you have to fill these values in, then press an 'add' button to add the new rule to the list, then save the changes. All routers have a different interface, but you must ensure that these rules are saved at this point. If you are unsure, you can reboot the router and log back in, if the rule is present it was saved, if not, it wasn't! - -Once you have saved this rule, go to your browser, and go to: - -```text -https://whatismyipaddress.com/ -``` - -This will tell you your current external IP address - -Type the external IP address in to the URL bar with http:// in front and :8123 after like so (12.12.12.12 is my example!): - -```text -http://12.12.12.12:8123 -``` - -Can you see your Home Assistant instance? If not, your router may not support 'loopback' - try the next step anyway and if that works, and this one still doesn't, just remember that you cannot use loopback, so will have to use internal addresses when you're on your home network. More on this later on if it's relevant to you. - -Just to verify this isn't some kind of witchcraft that is actually using your internal network, pick up your phone, disconnect it from your wifi so that you are on your mobile data and not connected to the home network, put the same URL in the browser on your phone. - -Can you see it now, from a device that is definitely not connected to your local network? Excellent! You now have a remotely accesible Home Assistant instance. - -But what if your external IP changes? Plus, remembering all those numbers is pretty hard, isn't it? Read on to get yourself set up with a word-based URL at DuckDNS that will track any changes to your IP address so you don't have to stress anymore. - -### {% linkable_title 3 - Set up a DuckDNS account %} - -Open your browser and go to https://duckdns.org. - -Sign in and create an account using one of the id validation options in the top right corner. - -In the domains section pick a name for your subdomain, this can be anything you like, and click add domain. - -The URL you will be using later to access your Home Assistant instance from outside will be the subdomain you picked, followed by duckdns.org . For our example we will say our URL is examplehome.duckdns.org - -Set up Home Assistant to keep your DuckDNS URL and external IP address in sync. In your `configuration.yaml` file add the following: - -```yaml -duckdns: - domain: examplehome - access_token: abcdefgh-1234-abcd-1234-abcdefgh -``` - -The access token is available on your DuckDNS page. Restart Home Assistant after the change. - -What you have now done is set up DuckDNS so that whenever you type examplehome.duckdns.org in to your browser it will convert that to your router's external IP address. Your external IP address will always be up to date because Homeassistant will update DuckDNS every time it changes. - -Now type your new URL in to your address bar on your browser with port 8123 on the end: - -```text -http://examplehome.duckdns.org:8123 -``` - -What now happens behind the scenes is this: - -- DuckDNS receives the request and forwards the request to your router's external IP address (which has been kept up to date by your device running Home Assistant) -- Your router receives the request on port 8123 and checks the port forwarding rules -- It finds the rule you created in step 2 and forwards the request to your HA instance -- Your browser displays your Home Assistant instance frontend. - -Did it work? Super! - -You now have a remotely accesible Home Assistant instance that has a text-based URL and will not drop out if your service provider changes your IP. But, it is only as secure as the password you set, which can be snooped during your session by a malicious hacker with relative ease. So we need to set up some encryption with TLS/SSL, read on to find out how. - -### {% linkable_title 4 - Obtain a TLS/SSL certificate from Let's Encrypt %} - -First we need to set up another port forward like we did in step 2. Set your new rule to: - -```text -Service name - ha_letsencrypt -Port Range - 80 -Local IP - YOUR-HA-IP -Local Port - 80 -Protocol - Both -``` - -Remember to save the new rule. - -

    -In cases where your ISP blocks port 80 you will need to change the port forward options to forward port 443 from outside to port 443 on your Home Assistant device. Please note that this will limit your options for automatically renewing the certificate, but this is a limitation because of your ISP setup and there is not a lot we can do about it! -

    - -Now SSH in to the device your Home Assistant is running on. - -

    -If you're running the 'standard' setup on a Raspberry Pi the chances are you just logged in as the 'pi' user. If not, you may have logged in as the Home Assistant user. There are commands below that require the Home Assistant user to be on the `sudoers` list. If you are not using the 'standard' Pi setup it is presumed you will know how to get your Home Assistant user on the `sudoers` list before continuing. If you are running the 'standard' Pi setup, from your 'pi' user issue the following command (where `hass` is the Home Assistant user): - -``` -$ sudo adduser hass sudo -``` -

    - -If you did not already log in as the user that currently runs Home Assistant, change to that user (usually `hass` or `homeassistant` - you may have used a command similar to this in the past): - -```bash -$ sudo su -s /bin/bash hass -``` - -Make sure you are in the home directory for the Home Assistant user: - -```bash -$ cd -``` - -We will now make a directory for the certbot software, download it and give it the correct permissions: - -```text -$ mkdir certbot -$ cd certbot/ -$ wget https://dl.eff.org/certbot-auto -$ chmod a+x certbot-auto -``` - -You might need to stop Home Assistant before continuing with the next step. You can do this via the Web-UI or use the following command if you are running on Hassbian: - -```text -$ sudo systemctl stop home-assistant@homeassistant.service -``` - -You can restart Home Assistant after the next step using the same command and replacing `stop` with `start`. -Now we will run the certbot program to get our SSL certificate. You will need to include your email address and your DuckDNS URL in the appropriate places: - -```text -$ ./certbot-auto certonly --standalone --preferred-challenges http-01 --email your@email.address -d examplehome.duckdns.org -``` - -Once the program has run it will generate a certificate and other files and place them in a folder `/etc/letsencrypt/` . - -Confirm this file has been populated: - -```bash -$ ls /etc/letsencrypt/live/ -``` - -This should show a folder named exactly after your DuckDNS URL. - -Our Home Assistant user needs access to files within the letsencrypt folder, so issue the following commands to change the permissions. - -```bash -$ sudo chmod 755 /etc/letsencrypt/live/ -$ 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 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 our `homeassistant` folder: - -``` -$ cd ~/.homeassistant -``` - -If you use Samba shares to edit your files you can exit your SSH now. -

    - -If during step 4 you had to use port 443 instead of port 80 to generate your certificate, you should delete that rule now. - -Go to your router's configuration pages and set up a new port forwarding rule, thus: - -```text -Service name - ha_ssl -Port Range - 443 -Local IP - YOUR-HA-IP -Local Port - 8123 -Protocol - Both -``` - -Remember to save the rule changes. - -Now edit your configuration.yaml file to reflect the SSL entries and your base URL (changing the `examplehome` subdomain to yours in all three places): - -```yaml -http: - api_password: YOUR_PASSWORD - ssl_certificate: /etc/letsencrypt/live/examplehome.duckdns.org/fullchain.pem - ssl_key: /etc/letsencrypt/live/examplehome.duckdns.org/privkey.pem - base_url: examplehome.duckdns.org -``` - -You may wish to set up other options for the [http](/components/http/) component at this point, these extra options are beyond the scope of this guide. - -Save the changes to configuration.yaml. Restart Home Assistant. - -In step 3 we accessed our Home Assistant from the outside world with our DuckDNS URL and our port number. We are going to use a slightly different URL this time. - -```text -https://examplehome.duckdns.org -``` - -Note the **S** after http, and that no port number is added. This is because https will use port 443 automatically, and we have already set up our port forward to redirect this request to our Home Assistant instance on port 8123. - -You should now be able to see your Home Assistant instance via your DuckDNS URL, and importantly note that your browser shows the connection as secure. - -You will now NO LONGER be able to access your Home Assistant via your old internal IP address in the way you previously have. Your default way to access your Home Assistant instance, even from inside your house, is to use your DuckDNS URL. - -In cases where you need to access via the local network only (which should be few and far between) you can access it with the following URL (note the added **S** after http): - -```text -https://YOUR-HA-IP:8123 -``` - -...and accepting the browsers warning that you are connecting to an insecure site. This warning occurs because your certificate expects your incoming connection to come via your DuckDNS URL. It does not mean that your device has suddenly become insecure. - -Some cases such as this are where your router does not allow 'loopback' or where there is a problem with incoming connections due to technical failure. In these cases you can still use your internal connection and safely ignore the warnings. - -If you were previously using a webapp on your phone/tablet to access your Home Assistant you should delete the old one and create a new one with the new address. The old one will no longer work as it is not keyed to your new, secure URL. Instructions for creating your new webapp can be found [here](/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 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 necessary. - -Go to your router's configuration pages and delete the `ha_test` rule. - -You should now have two rules in relation to Home Assistant for your port forwards, named: - -`ha_ssl` and `ha_letsencrypt` - -If you have any more for Home Assistant you should delete them now. If you only have `ha_ssl` this is probably because during step 4 you had to use port 443 instead of port 80, so we deleted the rule during step 5. - -You are now part of one of two groups: - - * 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! - -Let's Encrypt certificates only last for 90 days. When they have less than 30 days left they can be renewed. Renewal is a simple process. - -Move on to step 7 to see how to monitor your certificates expiry date, and be ready to renew your certificate when the time comes. - -### {% linkable_title 7 - Set up a sensor to monitor the expiry date of the certificate %} - -Setting a sensor to read the number of days left on your TLS/SSL certificate before it expires is not required, but it has the following advantages: - - * You can physically see how long you have left, pleasing your inner control freak - * You can set automations based on the number of days left - * You can set alerts to notify you if your certificate has not been renewed and is coming close to expiry. - * If you cannot set up automatic renewals due to your ISP blocking port 80, you will have timely reminders to complete the process manually. - -If you do not wish to set up a sensor you can skip straight to step 8 to learn how to update your certificates. - -The sensor will rely on a command line program that needs to be installed on your device running Home Assistant. SSH in to the device and run the following commands: - -```bash -$ sudo apt-get update -$ 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 necessary and so on. -

    - -To set up a senor add the following to your `configuration.yaml` (remembering to correct the URL for your DuckDNS): - -```yaml -sensor: - - platform: command_line - name: SSL cert expiry - unit_of_measurement: days - scan_interval: 10800 - command: "ssl-cert-check -b -c /etc/letsencrypt/live/examplehome.duckdns.org/cert.pem | awk '{ print $NF }'" -``` - -Save the configuration.yaml. Restart Home Assistant. - -On your default_view you should now see a sensor badge containing your number of days until expiry. If you've been following this guide from the start and have not taken any breaks in between, this should be 89 or 90. The sensor will update every 3 hours. You can place this reading on a card using groups, or hide it using customize. These topics are outside of the scope of this guide, but information can be found on their respective components pages: [Group](/components/group/) and [Customize](/docs/configuration/customizing-devices/) - -Got your sensor up and running and where you want it? Top drawer! Nearly there, now move on to the final steps to ensure that you're never without a secure connection in the future. - -### {% linkable_title 8 - Set up an automatic renewal of the TLS/SSL certificate. %} - -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 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. - -If you are a TWO-RULE person (from step 6), you can automatically renew your certificate using a `http-01` challenge and port 80. - -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 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: - - * SSH in to your device running Home Assistant. - * Change to your Home Assistant user (command similar to): - -```bash -$ sudo su -s /bin/bash hass -``` - - * Open the crontab: - -```bash -$ crontab -e -``` - - * If you are a TWO-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 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 if you are a TWO-RULE person - -```yaml -shell_command: - renew_ssl: ~/certbot/certbot-auto renew --quiet --no-self-upgrade --standalone --preferred-challenges http-01 - -automation: - - alias: 'Auto Renew SSL Cert' - trigger: - platform: numeric_state - entity_id: sensor.ssl_cert_expiry - below: 29 - 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. - -To manually update: - - * SSH in to your device running Home Assistant. - * Change to your Home Assistant 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 -``` - -* 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 accessible Home Assistant 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. - -### {% linkable_title 9 - Set up an alert to warn us if something went wrong. %} - -We set up our automatic renewal of our certificates and whatever method we used the certificate should be renewed on or around 30 days before it expires. But what if a week later it still hasn't been? This alert will go off if the expiry time on the certificate gets down to 21 days. This will give you 3 weeks to fix the problem, get your new certificate installed and get another 90 days of secure Home Assistant connections in play. - -In your `configuration.yaml` add the following automation, adding your preferred notification platform where appropriate: - -```yaml -automation: - - alias: 'SSL expiry notification' - trigger: - platform: numeric_state - entity_id: sensor.ssl_cert_expiry - below: 21 - action: - service: notify.[your_notification_preference] - data: - message: 'Warning - SSL certificate expires in 21 days and has not been automatically renewed' -``` - -If you receive this warning notification, follow the steps for a manual update from step 8. Any error messages received at that point can be googled and resolved. If the manual update goes without a hitch there may be something wrong with your chosen method for automatic updates, and you can start troubleshooting from there. - -So, that's it. We've taken a Home Assistant instance that was only reachable on the local network, made it accessible from the internet, secured it, and set up a system to ensure that it always stays secure. Well done, go and treat yourself to a cookie! diff --git a/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown b/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown deleted file mode 100644 index 91198ddd4f..0000000000 --- a/source/_docs/ecosystem/certificates/tls_domain_certificate.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Certificate for SSL/TLS via domain ownership" -description: "Configure a certificate to use with Home Assistant" -date: 2017-02-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /cookbook/tls_domain_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. You can use [Self-sign certificate](/cookbook/tls_self_signed_certificate/) but your browser will present a warning and some https-only features might not work. - -### {% linkable_title Prerequirement for this guide %} - -* Your Home Assistant instance is not exposed to the internet. If it is - use [this guide]({{site_root}}/blog/2015/12/13/setup-encryption-using-lets-encrypt/) -* You control a public domain name. The domain doesn't have to point to a site. A domain controlled by a *trusted* friend will do. (A friend you trust not to MITM you) -* Your home router supports custom DNS entries. - -### {% linkable_title Run certbot %} - -```bash -$ mkdir certbot -$ cd certbot -$ wget https://dl.eff.org/certbot-auto -$ chmod a+x certbot-auto -$ sudo ./certbot-auto --manual certonly --preferred-challenges dns -d "mydomain.com" --email your@email.address -``` - -* Agree to Terms of Service -* Choose whether to share your email with Electronic Frontier Foundation. -* Agree to your IP being logged - -You will get the following text: - -```text -Please deploy a DNS TXT record under the name -_acme-challenge.mydomain.com with the following value: - -deadbeefdeadbeefdeadbeefdeadbeefdeadbeef - -Once this is deployed, -------------------------------------------------------------------------------- -Press Enter to Continue -``` - -* Deploy the value to TXT field using your domain registar. -* Go to a site that queries domain record. For example [this one](https://mxtoolbox.com/TXTLookup.aspx) and look if it sees your brand new TXT field (Don't forget to enter the full domain: `_acme-challenge.mydomain.com`) -* Press Enter at certbot prompt. - -### {% linkable_title Make mydomain.com point to your Home Assistant instance %} - -If your router uses DNSMasq (for example DDWRT) add the following line to DNSMasq options: - -```text -address=/mydomain.com/ -``` - -### {% linkable_title Edit your Home Assistant configuration to use your certificates %} - -The [`http`](/components/http/) section must contain the full path to the needed files. - -```yaml -http: - api_password: YOUR_SECRET_PASSWORD - base_url: https://mydomain.com:8123 - ssl_certificate: /etc/letsencrypt/live/mydomain.com/fullchain.pem - ssl_key: /etc/letsencrypt/live/mydomain.com/privkey.pem -``` - -Make sure the files are accessible by the user that runs Home Assistant, eg. `homeassistant` for a HASSbian setup. diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown deleted file mode 100644 index 2aab9deb6d..0000000000 --- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Self-signed certificate for SSL/TLS" -description: "Configure a self-signed certificate to use with Home Assistant" -date: 2016-10-06 08:00 -sidebar: true -comments: false -sharing: true -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/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) 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 complain about the security. If you have a CA then this will not be an issue. - -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. - -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 -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 `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/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 deleted file mode 100755 index 87c06d166d..0000000000 --- a/source/_docs/ecosystem/hadashboard.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: page -title: "HADashboard" -description: "HADashboard is a dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing." -release_date: 2016-11-13 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hadashboard/ ---- - -HADashboard is a modular, skinnable dashboard for [Home Assistant](/) that is intended to be wall mounted, and is optimized for distance viewing. - -

    - - Default Theme -

    - -

    - - 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/stable/DASHBOARD_INSTALL.html) diff --git a/source/_docs/ecosystem/hass-configurator.markdown b/source/_docs/ecosystem/hass-configurator.markdown deleted file mode 100644 index 3087d6b6b2..0000000000 --- a/source/_docs/ecosystem/hass-configurator.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: page -title: "HASS Configurator" -description: "Instructions on how to install and use the HASS Configurator" -release_date: 2017-03-10 00:50:00 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/hass-configurator/ ---- - -### {% linkable_title Configuration UI for Home Assistant %} - -Since there currently is no nice way to edit the yaml-files Home Assistant is using through the frontend, here is a small webapp that hopefully makes the configuration easier. It is a customized and embedded [Ace editor](https://ace.c9.io/), which has syntax highlighting for yaml, the format used for Home Assistants configuration files. There is an integrated file browser to select whatever file you want to edit. When you're done with editing the file, click the save-button and it will replace the original. -Essentially this is a browser-based alternative to modifying your configuration through SSH, Windows + SMB, Github etc.. - -

    - -Screenshot of the HASS Configurator. -

    - -### {% linkable_title Feature list %} - -- Web-Based editor to modify your files -- Upload and download files -- Git integration -- Lists of available triggers, events, entities, conditions and services. Selected element gets inserted into the editor at the last cursor position. -- Check valid configuration and restart Home Assistant directly with the click of a button -- SSL support -- Optional authentication and IP filtering for additional security -- Direct links to Home Assistant documentation and icons -- Execute shell commands -- Runs on pretty much any machine Home Assistant can run on - -

    -This tool allows you to browse your filesystem and modify files. So be careful which files you edit, or you might break critical parts of your system.
    -Consider running the configurator as a user with limited privileges to limit possible damage.

    - -### {% linkable_title Installation (Linux, OS X) %} -There are no dependencies on Python modules that are not part of the standard library. And all the fancy JavaScript libraries are loaded from CDN (which means this doesn't work when you're offline). -- Copy [configurator.py](https://github.com/danielperna84/hass-configurator/blob/master/configurator.py) to your Home Assistant configuration directory (e.g `/home/homeassistant/.homeassistant`): `wget https://raw.githubusercontent.com/danielperna84/hass-configurator/master/configurator.py` -- Make it executable: `sudo chmod 755 configurator.py` -- (Optional) Set the `GIT` variable in configurator.py to `True` if [GitPython](https://gitpython.readthedocs.io/) is installed on your system. This is required if you want to make use of the Git integration. -- Execute it: `sudo ./configurator.py` -- To terminate the process do the usual `CTRL+C`, maybe once or twice - -### {% 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) 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. -#### LISTENPORT (integer) -The port the service is listening on. By default it is using `3218`, but you can change this if you need to. -#### BASEPATH (string) -It is possible to place configurator.py somewhere else. Set the `BASEPATH` to something like `"/home/homeassistant/.homeassistant"`, and no matter where you are running the configurator from, it will start serving files from there. This is needed if you plan on running the configurator with systemd or some other way of daemonizing the configurator. -#### SSL_CERTIFICATE / SSL_KEY (string) -If you are using SSL, set the paths to your SSL files here. This is similar to the SSL setup you can do in Home Assistant. -#### HASS_API (string) -The configurator fetches some data from your running Home Assistant instance. If the API is not available through the default URL, modify this variable to fix this. -#### HASS_API_PASSWORD (string) -If you plan on using the restart button, you have to set your API password. Calling the restart service of Home Assistant is prohibited without authentication. -#### CREDENTIALS (string) -Set credentials in the form of `"username:password"` if authentication should be required for access to the configurator. -#### ALLOWED_NETWORKS (list) -Limit access to the configurator by adding allowed IP addresses / networks to the list, e.g `ALLOWED_NETWORKS = ["192.168.0.0/24", "172.16.47.23"]` -#### BANNED_IPS (list) -List of statically banned IP addresses, e.g., `BANNED_IPS = ["1.1.1.1", "2.2.2.2"]` -#### BANLIMIT (integer) -Ban IPs after `n` failed login attempts. Restart the service to reset banning. The default of `0` disables this feature. `CREDENTIALS` has to be set for this to work. -#### IGNORE_PATTERN (list) -Files and folders to ignore in the UI, e.g., `IGNORE_PATTERN = [".*", "*.log", "__pycache__"]`. -#### DIRSFIRST (bool) -If set to `True`, directories will be displayed at the top of the filebrowser. -#### GIT (bool) -Set this variable to `True` to enable Git integration. This feature requires [GitPython](https://gitpython.readthedocs.io) - to be installed on the system that is running the configurator. For technical reasons this feature can not be enabled with the static settings file. - -__Note regarding `ALLOWED_NETWORKS`, `BANNED_IPS` and `BANLIMIT`__: -The way this is implemented works in the following order: - -1. (Only if `CREDENTIALS` is set) Check credentials - - Failure: Retry `BANLIMIT` times, after that return error 420 (unless you try again without any authentication headers set, e.g., private tab of your browser) - - Success: Continue -2. Check if client IP address is in `BANNED_IPS` - - Yes: Return error 420 - - No: Continue -3. Check if client IP address is in `ALLOWED_NETWORKS` - - No: Return error 420 - - Yes: Continue and display UI of configurator - -### {% linkable_title Embedding into Home Assistant %} -Home Assistant has the [panel_iframe](/components/panel_iframe/) component. With this it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration through the Home Assistant frontend. -An example configuration would look like this: - -```yaml -panel_iframe: - configurator: - title: Configurator - icon: mdi:wrench - url: http://123.123.132.132:3218 -``` -

    -Be careful when setting up port forwarding to the configurator while embedding it 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!

    - -### {% linkable_title Daemonizing / Keeping the configurator running %} -Since the configurator script on its own is no service, you will have to take some extra steps to keep it running. Here are five options (for Linux), but there are more, depending on your usecase. - -1. Fork the process into the background with the command: -`nohup sudo ./configurator.py &` -2. If your system is using systemd (that's usually what you'll find on a Raspberry Pi), there's a [template file](https://github.com/danielperna84/hass-configurator/blob/master/hass-configurator.systemd) you can use and then apply the same process to integrate it as mentioned in the [Home Assistant documentation](/docs/autostart/systemd/). If you use this method you have to set the `BASEPATH` variable according to your environment. -3. If you have [supervisor](http://supervisord.org/) running on your system, [hass-poc-configurator.supervisor](https://github.com/danielperna84/hass-configurator/blob/master/hass-configurator.supervisor) would be an example configuration you could use to control the configurator. -4. A tool called [tmux](https://tmux.github.io/), which should be pre-installed with [HASSbian](/docs/hassbian/). -5. A tool called [screen](http://ss64.com/bash/screen.html) (alternative to tmux). If it's not already installed on your system, you can do `sudo apt-get install screen` or `sudo yum install screen` to get it. When it's installed, start a screen session by executing `screen`. Then navigate to your Home Assistant directory and start the configurator like described above. Put the screen session into the background by pressing `CTRL+A` and then `CTRL+D`. It is now safe to disconnect from your SSH session. -To resume the screen session, log in to your machine and execute `screen -r`. - -### {% linkable_title Troubleshooting, Issues etc. %} -If you encounter difficulties setting up the configurator or stumble upon a possible bug, head over to the [Issues](https://github.com/danielperna84/hass-configurator/issues) section of the configurator repository. Additionally there is a thread at the [Home Assistant Community](https://community.home-assistant.io/t/simplistic-configuration-ui/10175) where common problems may have been discussed already. And if not, there are always friendly people around to help finding solutions. diff --git a/source/_docs/ecosystem/ios.markdown b/source/_docs/ecosystem/ios.markdown deleted file mode 100644 index 027fe50323..0000000000 --- a/source/_docs/ecosystem/ios.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "iOS" -description: "Documentation about the Home Assistant iOS app." -release_date: 2016-10-24 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/ ---- - -The Home Assistant for iOS app offers a companion app for iOS which is deeply integrated into both Home Assistant and iOS. Its basic features include: - -* Advanced push notifications -* Location tracking -* Basic control of all Home Assistant entities -* Integration with third party apps - -The app is available on the iOS App Store in every country that Apple supports. - -

    - -## {% linkable_title Basic requirements %} - -* iOS device running at least iOS 9, but iOS 10 is greatly preferred. -* Home Assistant 0.42.4 or higher for push notification support. -* SSL is strongly recommended. Self-signed SSL certificates will not work due to Apple's limitations. - -The `ios` component is the companion component for the Home Assistant iOS app. While not required, adding the `ios` component to your setup will greatly enhance the iOS app with new notification, location and sensor functions not possible with a standalone app. - -Loading the `ios` component will also load the [`device_tracker`][device-tracker], [`zeroconf`][zeroconf] and [`notify`][notify] platforms. - -## {% linkable_title Setup %} - -### {% linkable_title Automated Setup %} - -The `ios` component will automatically be loaded under the following circumstances: - -1. The [`discovery`][discovery] component is enabled. -2. You have just installed the app and are at the getting started screen. - -Automated discovery and component loading only happens at first install of the app. You may need to wait a few minutes for the iOS component to load as the `discovery` component only scans the network every 5 minutes. - -After the first automated setup you need to add `ios:` to your configuration so that the component loads by default even after restarting Home Assistant. - -### {% linkable_title Manual Setup %} - -You may also manually load the `ios` component by adding the following to your configuration: - -```yaml -# Example configuration.yaml entry -ios: -``` - -Configuration variables: - -- **push** (*Optional*): Actionable push notifications configuration. See the [actionable notifications documentation][actionable-notifications] for more information. - -[discovery]: /components/discovery -[device-tracker]: /components/device_tracker -[zeroconf]: /components/zeroconf -[notify]: /components/notify -[actionable-notifications]: /docs/ecosystem/ios/notifications/actions/ diff --git a/source/_docs/ecosystem/ios/devices_file.markdown b/source/_docs/ecosystem/ios/devices_file.markdown deleted file mode 100644 index 4b27059456..0000000000 --- a/source/_docs/ecosystem/ios/devices_file.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "ios.conf" -description: "Describes the contents and purpose of ios.conf" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The `ios.conf` file contains the most recent state of all registered iOS devices. Deleting this file will not disable the devices and the file will be recreated the next time a new device is connected or an existing one reconnects. diff --git a/source/_docs/ecosystem/ios/integration.markdown b/source/_docs/ecosystem/ios/integration.markdown deleted file mode 100644 index b6c27dd437..0000000000 --- a/source/_docs/ecosystem/ios/integration.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: page -title: "Integration" -description: "Examples of how Home Assistant for iOS can be integrated with other apps" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/integration/ ---- - -Home Assistant for iOS supports opening from other apps via URL. - -Query parameters are passed as a dictionary in the call. - -## Call service -Example: `homeassistant://call_service/device_tracker.see?entity_id=device_tracker.entity` - -## Fire event -You can create an [event trigger](/docs/automation/trigger/#event-trigger) and fire the event. - -Example: `homeassistant://fire_event/custom_event?entity_id=MY_CUSTOM_EVENT` - -## Send one shot location -Example: `homeassistant://send_location/` diff --git a/source/_docs/ecosystem/ios/location.markdown b/source/_docs/ecosystem/ios/location.markdown deleted file mode 100644 index 596a4b93a4..0000000000 --- a/source/_docs/ecosystem/ios/location.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Location" -description: "Documentation about the location tracking abilities in Home Assistant for iOS" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -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 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: - -> The significant-change location service delivers updates only when there has been a significant change in the device’s location, such as 500 meters or more. - -They also say in the [Energy Efficiency Guide][apple-energy-guide]: - -> Significant-change location updates wake the system and your app once every 15 minutes, at minimum, even if no location changes have occurred. - -Finally, I think this answer from [Stack Overflow][stackoverflow] says it best: - -> The significant location change is the least accurate of all the location monitoring types. It only gets its updates when there is a cell tower transition or change. This can mean a varying level of accuracy and updates based on where the user is. City area, more updates with more towers. Out of town, interstate, fewer towers and changes. - -What's the real story on significant-change location updates? Who knows, because Apple keeps it private. - -## {% linkable_title Location tracking in Home Assistant zones %} - -At launch, Home Assistant for iOS sets up geofences for all zones in your Home Assistant configuration. Enter and exit notifications are sent to Home Assistant. - -### Configuration - -Add `track_ios: false` to your zone configurations to disable zone location tracking for all connected iOS apps. - -### iBeacons - -As of 1.0.3 the app has basic support for using iBeacons to trigger enter/exit updates. To configure them, add your iBeacon details to your zone like this: - -```yaml -zone.home: - beacon: - uuid: B9407F30-F5F8-466E-AFF9-25556B57FE6D - major: 60042 - minor: 43814 -``` - -Restart Home Assistant and then the iOS app. It will begin then begin using iBeacons _instead of your location_ for enter and exit triggers around your zones. To add an iBeacon to `zone.home` add the above under your `customize`. - -[apple-energy-guide]: https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/LocationBestPractices.html#//apple_ref/doc/uid/TP40015243-CH24-SW4 -[apple-location-programming-guide]: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html#//apple_ref/doc/uid/TP40009497-CH2-SW9 -[stackoverflow]: http://stackoverflow.com/a/13331625/486182 diff --git a/source/_docs/ecosystem/ios/notifications.markdown b/source/_docs/ecosystem/ios/notifications.markdown deleted file mode 100644 index c1eee576e3..0000000000 --- a/source/_docs/ecosystem/ios/notifications.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: page -title: "Notifications Introduction" -description: "Getting started with iOS notifications" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/ ---- - -The `ios` notify platform enables sending push notifications to the Home Assistant iOS app. - -The 'ios' component will automatically load the notify service. -The service component can be called using `service: notify.ios_`. -Your device ID can be found in the `ios.conf` file in your configuration folder. The file is compressed JSON. You can view it easier by copying the file contents and pasting them into [JSONLint](http://jsonlint.com). - -In this example, the device ID is `robbiet480_7plus`, so the notify service to use is `notify.ios_robbiet480_7plus`: -```json -{"devices":{"robbiet480_7plus":{"app":{"bundleIdentifer":"io.robbie.HomeAssistant","versionNumber":1,"buildNumber":53},"pushSounds":[],"permissions":["location"],"deviceId":"robbiet480_7plus","device":{"type":"iPhone 7 Plus","systemName":"iOS","systemVersion":"10.3","permanentID":"AB9F02FE-6AC6-47B8-ADEB-5DD87B489156","localizedModel":"iPhone","name":"Robbie's iPhone 7 Plus","model":"iPhone"},"battery":{"state":"Full","level":100},"pushToken":"SECRET","pushId":"SECRET"}}} -``` - -You can find more information in the [Basic Notifications](/docs/ecosystem/ios/notifications/basic/) documentation and the [Actionable Notifications](/docs/ecosystem/ios/notifications/actions/) documentation. diff --git a/source/_docs/ecosystem/ios/notifications/actions.markdown b/source/_docs/ecosystem/ios/notifications/actions.markdown deleted file mode 100644 index eb66feb66f..0000000000 --- a/source/_docs/ecosystem/ios/notifications/actions.markdown +++ /dev/null @@ -1,144 +0,0 @@ ---- -layout: page -title: "Actionable notifications" -description: "Making push notifications a two way system" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/actions/ ---- - -Actionable notifications allow you to attach 1-4 custom buttons to a notification. When one of the actions is selected Home Assistant will be notified which action was chosen. This allows you to build complex automations. - -Examples of actionable notifications: - -- A notification is sent whenever motion is detected in your home while you are away or asleep. You can add an action to Sound Alarm. When tapped, Home Assistant is notified that the `sound_alarm` action was selected. You can add an automation to sound the burglar alarm whenever this event is seen. -- Someone rings your front door bell. You can send an action to lock or unlock your front door. When tapped, a notification is sent back to Home Assistant upon which you can build automations. -- Send a notification whenever your garage door opens with actions to open and close the garage. - -

    - - Actionable notifications allow the user to send a command back to Home Assistant. -

    - -## {% linkable_title Overview of how actionable notifications work %} - -In advance of sending a notification: - -1. Define a notification category in your Home Assistant configuration which contain 1-4 actions. -2. At launch iOS app requests notification categories from Home Assistant (can also be done manually in notification settings). - -When sending a notification: - -1. Send a notification with `data.push.category` set to a pre-defined notification category identifier. -2. Push notification delivered to device -3. User opens notification. -3. Action tapped -4. Identifier of action sent back to HA as the `actionName` property of the event `ios.notification_action_fired`, along with other metadata such as the device and category name. - -

    - - How the iOS device and Home Assistant work together to enable actionable notifications. -

    - -## {% 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. -- 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 lowercase and have no special characters or spaces. -- **actions** (*Required*): A list of actions. - -## {% 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. -- **activationMode** (*Optional*): The mode in which to run the app when the action is performed. Setting this to `foreground` will make the app open after selecting. Default value is `background`. -- **authenticationRequired** (*Optional*): If a truthy value (`true`, `True`, `yes`, etc.) the user must unlock the device before the action is performed. -- **destructive** (*Optional*): When the value of this property is a truthy value, the system displays the corresponding button differently to indicate that the action is destructive (text color is red). -- **behavior** (*Optional*): When `textInput` the system provides a way for the user to enter a text response to be included with the notification. The entered text will be sent back to Home Assistant. Default value is `default`. -- **textInputButtonTitle** (*Optional*): The button label. *Required* if `behavior` is `textInput`. -- **textInputPlaceholder** (*Optional*): The placeholder text to show in the text input field. Only used if `behavior` is `textInput` and the device runs iOS 10. - -Here's a fully built example configuration: - -```yaml -ios: - push: - categories: - - name: Alarm - identifier: 'alarm' - actions: - - identifier: 'SOUND_ALARM' - title: 'Sound Alarm' - activationMode: 'background' - authenticationRequired: yes - destructive: yes - behavior: 'default' - - identifier: 'SILENCE_ALARM' - title: 'Silence Alarm' - activationMode: 'background' - authenticationRequired: yes - destructive: no - behavior: 'textInput' - textInputButtonTitle: 'Silencio!' - textInputPlaceholder: 'Placeholder' -``` - -## {% linkable_title Building automations for notification actions %} -Here is an example automation to send a notification with a category in the payload: - -```yaml -automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_robbies_iphone_7_plus - data: - message: "Something happened at home!" - data: - push: - badge: 5 - sound: - 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 -``` - -When an action is selected an event named `ios.notification_action_fired` will be emitted on the Home Assistant event bus. Below is an example payload. - -```json -{ - "sourceDeviceName": "Robbie's iPhone 7 Plus", - "sourceDeviceID": "robbies_iphone_7_plus", - "actionName": "SOUND_ALARM", - "sourceDevicePushId": "ab9f02fe-6ac6-47b8-adeb-5dd87b489156", - "textInput": "", - "actionData": {} -} -``` - -Here's an example automation for the given payload: -```yaml -automation: - - alias: Sound the alarm - trigger: - platform: event - event_type: ios.notification_action_fired - event_data: - actionName: SOUND_ALARM - action: - ... -``` - -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/architecture.markdown b/source/_docs/ecosystem/ios/notifications/architecture.markdown deleted file mode 100644 index b7dac74dfb..0000000000 --- a/source/_docs/ecosystem/ios/notifications/architecture.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Architecture" -description: "The push notification system layout" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/architecture/ ---- - -

    - - The push notification infrastructure layout -

    diff --git a/source/_docs/ecosystem/ios/notifications/attachments.markdown b/source/_docs/ecosystem/ios/notifications/attachments.markdown deleted file mode 100644 index 2138ae602d..0000000000 --- a/source/_docs/ecosystem/ios/notifications/attachments.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "Notification attachments" -description: "Adding attachments to iOS push notifications" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/attachments/ ---- - -iOS 10 adds _attachments_ to notifications. An attachment is an image, video, or audio file which is downloaded to the device when a notification is received and shown alongside the notification. A thumbnail is shown when the notification is not expanded. The full size attachment is shown when the notification is expanded. - -

    -To expand a notification on 3D Touch devices simply force touch any notification. On non-3D Touch devices swipe and tap the "View" button. -

    - -```yaml -- alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_robbies_iphone_7_plus - data: - message: "Something happened at home!"" - data: - attachment: - url: https://67.media.tumblr.com/ab04c028a5244377a0ab96e73915e584/tumblr_nfn3ztLjxk1tq4of6o1_400.gif - content-type: gif - hide-thumbnail: false -``` - -Notes: -* The thumbnail of the notification will be the media at the `url`. -* The notification content is the media at the `url`. -* Attachment can be used with custom push notification categories. - -## Example - -

    - - An unexpanded push notification with an attachment. -

    - -

    - - The same notification but expanded to show the full size attachment -

    - -## Supported media types - -If the attachment does not appear please ensure it is in one of the following formats: - -### Audio attachments - -Maximum file size: 5 MB - -Allowed Formats: AIFF, WAV, MP3, MPEG4 Audio - -### Image attachments - -Maximum file size: 10 MB - -Allowed Formats: JPEG, GIF, PNG - -### Video attachments - -Maximum file size: 50 MB - -Allowed Formats: MPEG, MPEG2, MPEG4, AVI - -## Configuration - -- **url** (*Required*): The URL of content to use as the attachment. This URL _must_ be accessible from the Internet, or the receiving device must be on the same network as the hosted content. -- **content-type** (*Optional*): By default, the extension of the URL will be checked to determine the filetype. If there is no extension/it can't be determined you can manually provide a file extension. -- **hide-thumbnail** (*Optional*): If set to `true` the thumbnail will not show on the notification. The content will only be viewable by expanding. diff --git a/source/_docs/ecosystem/ios/notifications/basic.markdown b/source/_docs/ecosystem/ios/notifications/basic.markdown deleted file mode 100644 index 7e0a5e9288..0000000000 --- a/source/_docs/ecosystem/ios/notifications/basic.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: page -title: "Basic Notifications" -description: "Basic notes about iOS notifications" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/basic/ ---- - -The iOS notify platform accepts the standard `title`, `message` and `target` parameters. The iOS notify platform supports targets as services. Assuming that you did not set a `name` when configuring the platform you should find all your registered and notification-enabled iOS devices available as notify targets as services with names prefixed "notify.ios_" and then the device name you entered at setup. - -Notes: - -* `title` only displays on Apple Watch and iOS 10 devices. - -* `target` can be used to specific a single device using its PushID, found in `ios.conf`. The preferred way of providing a target is through a target specific notify service. - -

    - - A push notification showing all of the basic options `title` and `message` as well as `subtitle` and [actions](/ecosystem/ios/notifications/actions/). -

    - -### {% linkable_title Enhancing basic notifications %} - -#### Badge -You can set the icon badge in the payload: - -```yaml -automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - title: "Smart Home Alerts" - message: "Something happened at home!" - data: - push: - badge: 5 -``` - -#### Subtitle -iOS 10 supports a subtitle in addition to the title: - -```yaml -automation - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - title: "Smart Home Alerts" - message: "Something happened at home!" - data: - subtitle: "Subtitle goes here" -``` - -### {% linkable_title Sending notifications to multiple phones %} -To send notifications to multiple phones, create a [notification group](/components/notify.group/): -```yaml -notify: - - name: NOTIFIER_NAME - platform: group - services: - - service: ios_iphone_one - - service: ios_iphone_two -``` -Now, you can send notifications to everyone in the group using: -```yaml - automation: - - alias: Notify iOS app - trigger: - ... - action: - service: notify.NOTIFIER_NAME - data: - message: "Something happened at home!" - data: - push: - badge: 5 -``` diff --git a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown b/source/_docs/ecosystem/ios/notifications/content_extensions.markdown deleted file mode 100644 index 721386de2e..0000000000 --- a/source/_docs/ecosystem/ios/notifications/content_extensions.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: page -title: "Dynamic content" -description: "Extend your notifications with dynamic content" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/content_extensions/ ---- - -With the new Content Extension feature found in iOS 10, dynamic content can now be displayed as part of a notification without opening an app. - -# Map -Will show a map with a red tipped pin at the coordinates given. -The map will be centered at the coordinates given. - -```yaml -service: notify.ios_ -data: - message: Something happened at home! - data: - push: - category: map - action_data: - latitude: "40.785091" - longitude: "-73.968285" -``` - -## Showing a second pin - -You can use the following properties under `action_data` to display a second pin. If used, the first pin will be red and the second green. - -- **second_latitude**: The latitude of the second pin. **Must be a string!** -- **second_longitude**: The longitude of the second pin. **Must be a string!** -- **shows_line_between_points**: A Boolean value indicating whether a line should be drawn between the first and second pin. - -## Extra configuration - -You can also pass the following properties under `action_data` to modify the map in various ways. All are expected to be boolean values unless otherwise noted: - -- **shows_compass**: A Boolean indicating whether the map displays a compass control. -- **shows_points_of_interest**: A Boolean indicating whether the map displays point-of-interest information. -- **shows_scale**: A Boolean indicating whether the map shows scale information. -- **shows_traffic**: A Boolean value indicating whether the map displays traffic information. -- **shows_user_location**: A Boolean value indicating whether the map should try to display the user’s location. - -

    - - An example of the map dynamic content. -

    - - -# Camera Stream - -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 to control the thumbnail. - -You can view an example [here](https://www.youtube.com/watch?v=LmYwpxPKW0g). - -```yaml -service: notify.ios_ -data: - message: Motion detected in the Living Room - data: - attachment: - content-type: jpeg - push: - category: camera - entity_id: camera.demo_camera -``` - -
    - -
    - -# Combining with actionable notifications - -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/privacy_security_rate_limits.markdown b/source/_docs/ecosystem/ios/notifications/privacy_security_rate_limits.markdown deleted file mode 100644 index f0a60e1af8..0000000000 --- a/source/_docs/ecosystem/ios/notifications/privacy_security_rate_limits.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "Privacy, rate limiting and security" -description: "Notes about important topics relating to push notifications" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/privacy_security_rate_limits/ ---- - -## {% linkable_title Privacy %} - -No notification content is stored on remote servers. Only the required push registration data and a simple counter of the total number of push notifications sent per day per device (for rate limiting purposes) is kept. - -## {% linkable_title Rate limiting %} - -Currently, you are allowed to send a maximum of 150 push notifications per day per device. This is to ensure that the service remains cheap to maintain. In the future we may add support for upgrading to allow more notifications. The rate limit resets at midnight UTC daily. When a notification is sent your current rate limits (including sent notifications and notifications remaining for the day) will be output to your Home Assistant logs. If an error occurs while sending a notification your rate limit will not be affected. - -## {% linkable_title Security %} - -All traffic between your Home Assistant instance, the push infrastructure, and Apple, is encrypted with SSL. diff --git a/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown b/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown deleted file mode 100644 index ad30c68b5a..0000000000 --- a/source/_docs/ecosystem/ios/notifications/requesting_location_updates.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Requesting location updates" -description: "Ask the device to send a location update remotely" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/requesting_location_updates/ ---- - -

    -**Do not rely on this functionality due to the time limits mentioned below.** -

    - -You can force a device to attempt to report its location by sending a special notification. - -```yaml -automation - - alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - message: "request_location_update" -``` - -Assuming the device receives the notification, it will attempt to get a location update within 5 seconds and report it to Home Assistant. This is a little bit hit or miss since Apple imposes a maximum time allowed for the app to work with the notification and location updates sometimes take longer than usual due to factors such as waiting for GPS acquisition. - diff --git a/source/_docs/ecosystem/ios/notifications/sounds.markdown b/source/_docs/ecosystem/ios/notifications/sounds.markdown deleted file mode 100644 index 7daa9e1b9a..0000000000 --- a/source/_docs/ecosystem/ios/notifications/sounds.markdown +++ /dev/null @@ -1,185 +0,0 @@ ---- -layout: page -title: "Notification Sounds" -description: "Adding sounds to notifications" -date: 2016-10-25 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/ios/notifications/sounds/ ---- - -Adding a custom sound to a notification allows you to easily identify the notification without even looking at your device. Home Assistant for iOS comes with some notification sounds pre-installed but you can also upload your own. - -Here is an example notification that uses one of the pre-installed sounds. - -```yaml -- alias: Notify iOS app - trigger: - ... - action: - service: notify.ios_ - data: - message: “Something happened at home!” - data: - push: - sound: "US-EN-Morgan-Freeman-Roommate-Is-Arriving.wav" -``` - -Notes: -* You must use the full filename in the payload (including extension). - -## {% linkable_title Custom push notification sounds %} -The app allows you to use your own custom sounds in push notifications. The sounds must be formatted following [Apple's requirements][sound-requirements]. You set the filename of the sound in the notification payload. To add sounds: - -1. Connect the device to a PC or Mac running the latest version of iTunes. -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 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. -9. On your iOS device, open the Home Assistant app. -10. Go to Settings -> Notification Settings. -11. Select "Import sounds from iTunes". - -Assuming that you correctly formatted the sounds they are now available to use in push notifications. - -Notes: -* **Please note that due to a bug in iOS 10 you may need to restart your entire device before notification sounds can be played. This should hopefully be fixed by Apple soon.** -* Uploading a file with the same name as an existing one will overwrite the original. -* You can view what sounds are installed on each device by inspecting the `ios.conf` file in your configuration directory. They are listed in the `pushSounds` array. - -### {% linkable_title Preinstalled notification sounds %} - -``` -US-EN-Alexa-Back-Door-Opened.wav -US-EN-Alexa-Back-Door-Unlocked.wav -US-EN-Alexa-Basement-Door-Opened.wav -US-EN-Alexa-Basement-Door-Unlocked.wav -US-EN-Alexa-Boyfriend-Is-Arriving.wav -US-EN-Alexa-Daughter-Is-Arriving.wav -US-EN-Alexa-Front-Door-Opened.wav -US-EN-Alexa-Front-Door-Unlocked.wav -US-EN-Alexa-Garage-Door-Opened.wav -US-EN-Alexa-Girlfriend-Is-Arriving.wav -US-EN-Alexa-Good-Morning.wav -US-EN-Alexa-Good-Night.wav -US-EN-Alexa-Husband-Is-Arriving.wav -US-EN-Alexa-Mail-Has-Arrived.wav -US-EN-Alexa-Motion-At-Back-Door.wav -US-EN-Alexa-Motion-At-Front-Door.wav -US-EN-Alexa-Motion-Detected-Generic.wav -US-EN-Alexa-Motion-In-Back-Yard.wav -US-EN-Alexa-Motion-In-Basement.wav -US-EN-Alexa-Motion-In-Front-Yard.wav -US-EN-Alexa-Motion-In-Garage.wav -US-EN-Alexa-Patio-Door-Opened.wav -US-EN-Alexa-Patio-Door-Unlocked.wav -US-EN-Alexa-Smoke-Detected-Generic.wav -US-EN-Alexa-Smoke-Detected-In-Basement.wav -US-EN-Alexa-Smoke-Detected-In-Garage.wav -US-EN-Alexa-Smoke-Detected-In-Kitchen.wav -US-EN-Alexa-Son-Is-Arriving.wav -US-EN-Alexa-Water-Detected-Generic.wav -US-EN-Alexa-Water-Detected-In-Basement.wav -US-EN-Alexa-Water-Detected-In-Garage.wav -US-EN-Alexa-Water-Detected-In-Kitchen.wav -US-EN-Alexa-Welcome-Home.wav -US-EN-Alexa-Wife-Is-Arriving.wav -US-EN-Daisy-Back-Door-Motion.wav -US-EN-Daisy-Back-Door-Open.wav -US-EN-Daisy-Front-Door-Motion.wav -US-EN-Daisy-Front-Door-Open.wav -US-EN-Daisy-Front-Window-Open.wav -US-EN-Daisy-Garage-Door-Open.wav -US-EN-Daisy-Guest-Bath-Leak.wav -US-EN-Daisy-Kitchen-Sink-Leak.wav -US-EN-Daisy-Kitchen-Window-Open.wav -US-EN-Daisy-Laundry-Room-Leak.wav -US-EN-Daisy-Master-Bath-Leak.wav -US-EN-Daisy-Master-Bedroom-Window-Open.wav -US-EN-Daisy-Office-Window-Open.wav -US-EN-Daisy-Refrigerator-Leak.wav -US-EN-Daisy-Water-Heater-Leak.wav -US-EN-Morgan-Freeman-Back-Door-Closed.wav -US-EN-Morgan-Freeman-Back-Door-Locked.wav -US-EN-Morgan-Freeman-Back-Door-Opened.wav -US-EN-Morgan-Freeman-Back-Door-Unlocked.wav -US-EN-Morgan-Freeman-Basement-Door-Closed.wav -US-EN-Morgan-Freeman-Basement-Door-Locked.wav -US-EN-Morgan-Freeman-Basement-Door-Opened.wav -US-EN-Morgan-Freeman-Basement-Door-Unlocked.wav -US-EN-Morgan-Freeman-Boss-Is-Arriving.wav -US-EN-Morgan-Freeman-Boyfriend-Is-Arriving.wav -US-EN-Morgan-Freeman-Cleaning-Supplies-Closet-Opened.wav -US-EN-Morgan-Freeman-Coworker-Is-Arriving.wav -US-EN-Morgan-Freeman-Daughter-Is-Arriving.wav -US-EN-Morgan-Freeman-Friend-Is-Arriving.wav -US-EN-Morgan-Freeman-Front-Door-Closed.wav -US-EN-Morgan-Freeman-Front-Door-Locked.wav -US-EN-Morgan-Freeman-Front-Door-Opened.wav -US-EN-Morgan-Freeman-Front-Door-Unlocked.wav -US-EN-Morgan-Freeman-Garage-Door-Closed.wav -US-EN-Morgan-Freeman-Garage-Door-Opened.wav -US-EN-Morgan-Freeman-Girlfriend-Is-Arriving.wav -US-EN-Morgan-Freeman-Good-Morning.wav -US-EN-Morgan-Freeman-Good-Night.wav -US-EN-Morgan-Freeman-Liquor-Cabinet-Opened.wav -US-EN-Morgan-Freeman-Motion-Detected.wav -US-EN-Morgan-Freeman-Motion-In-Basement.wav -US-EN-Morgan-Freeman-Motion-In-Bedroom.wav -US-EN-Morgan-Freeman-Motion-In-Game-Room.wav -US-EN-Morgan-Freeman-Motion-In-Garage.wav -US-EN-Morgan-Freeman-Motion-In-Kitchen.wav -US-EN-Morgan-Freeman-Motion-In-Living-Room.wav -US-EN-Morgan-Freeman-Motion-In-Theater.wav -US-EN-Morgan-Freeman-Motion-In-Wine-Cellar.wav -US-EN-Morgan-Freeman-Patio-Door-Closed.wav -US-EN-Morgan-Freeman-Patio-Door-Locked.wav -US-EN-Morgan-Freeman-Patio-Door-Opened.wav -US-EN-Morgan-Freeman-Patio-Door-Unlocked.wav -US-EN-Morgan-Freeman-Roommate-Is-Arriving.wav -US-EN-Morgan-Freeman-Searching-For-Car-Keys.wav -US-EN-Morgan-Freeman-Setting-The-Mood.wav -US-EN-Morgan-Freeman-Smartthings-Detected-A-Flood.wav -US-EN-Morgan-Freeman-Smartthings-Detected-Carbon-Monoxide.wav -US-EN-Morgan-Freeman-Smartthings-Detected-Smoke.wav -US-EN-Morgan-Freeman-Smoke-Detected-In-Basement.wav -US-EN-Morgan-Freeman-Smoke-Detected-In-Garage.wav -US-EN-Morgan-Freeman-Smoke-Detected-In-Kitchen.wav -US-EN-Morgan-Freeman-Someone-Is-Arriving.wav -US-EN-Morgan-Freeman-Son-Is-Arriving.wav -US-EN-Morgan-Freeman-Starting-Movie-Mode.wav -US-EN-Morgan-Freeman-Starting-Party-Mode.wav -US-EN-Morgan-Freeman-Starting-Romance-Mode.wav -US-EN-Morgan-Freeman-Turning-Off-All-The-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Air-Conditioner.wav -US-EN-Morgan-Freeman-Turning-Off-The-Bar-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Chandelier.wav -US-EN-Morgan-Freeman-Turning-Off-The-Family-Room-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Hallway-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Kitchen-Light.wav -US-EN-Morgan-Freeman-Turning-Off-The-Light.wav -US-EN-Morgan-Freeman-Turning-Off-The-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-Mood-Lights.wav -US-EN-Morgan-Freeman-Turning-Off-The-TV.wav -US-EN-Morgan-Freeman-Turning-On-The-Air-Conditioner.wav -US-EN-Morgan-Freeman-Turning-On-The-Bar-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Chandelier.wav -US-EN-Morgan-Freeman-Turning-On-The-Family-Room-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Hallway-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Kitchen-Light.wav -US-EN-Morgan-Freeman-Turning-On-The-Light.wav -US-EN-Morgan-Freeman-Turning-On-The-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-Mood-Lights.wav -US-EN-Morgan-Freeman-Turning-On-The-TV.wav -US-EN-Morgan-Freeman-Vacate-The-Premises.wav -US-EN-Morgan-Freeman-Water-Detected-In-Basement.wav -US-EN-Morgan-Freeman-Water-Detected-In-Garage.wav -US-EN-Morgan-Freeman-Water-Detected-In-Kitchen.wav -US-EN-Morgan-Freeman-Welcome-Home.wav -US-EN-Morgan-Freeman-Wife-Is-Arriving.wav -``` diff --git a/source/_docs/ecosystem/nginx.markdown b/source/_docs/ecosystem/nginx.markdown deleted file mode 100644 index 46ae6152d1..0000000000 --- a/source/_docs/ecosystem/nginx.markdown +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: page -title: "NGINX" -description: "Documentation about setting up Home Assistant with NGINX." -release_date: 2016-12-02 15:00:00 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/nginx/ ---- - -Using NGINX as a proxy for Home Assistant allows you to serve Home Assistant securely over standard ports. This configuration file and instructions will walk you through setting up Home Assistant over a secure connection. - -### {% linkable_title 1. Get a domain name forwarded to your IP %} - -Chances are, you have a dynamic IP address (your ISP changes your address periodically). If this is true, you can use a Dynamic DNS service to obtain a domain and set it up to update with you IP. If you purchase your own domain name, you will be able to easily get a trusted SSL certificate later. - - -### {% linkable_title 2 Install nginx on your server %} - -This will vary depending on your OS. Check out Google for this. After installing, ensure that NGINX is not running. - -

    -You will at least need nginx >= 1.3.13, as WebSocket support is required for the reverse proxy. -

    - -### {% linkable_title 3. Obtain an SSL certificate %} - -There are two ways of obtaining an SSL certificate. - -#### {% linkable_title Using Let's Encrypt %} -If you purchased your own domain, you can use https://letsencrypt.org/ to obtain a free, publicly trusted SSL certificate. This will allow you to work with services like IFTTT. Download and install per the instructions online and get a certificate using the following command. - -```bash -$ sudo ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com -``` - -Instead of example.com, use your domain. You will need to renew this certificate every 90 days. - -#### {% linkable_title Using openssl %} - -If you do not own your own domain, you may generate a self-signed certificate. This will not work with IFTTT, but it will encrypt all of your Home Assistant traffic. - -```bash -$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -$ openssl rsa -in key.pem -out key.pem -$ sudo cp key.pem cert.pem /etc/nginx/ssl -$ sudo chmod 600 /etc/nginx/ssl/key.pem /etc/nginx/ssl/cert.pem -$ sudo chown root:root /etc/nginx/ssl/key.pem /etc/nginx/ssl/cert.pem -``` - -### {% linkable_title 4. Create dhparams file %} - -As a fair warning, this file will take a while to generate. - -```bash -$ cd /etc/nginx/ssl -$ sudo openssl dhparam -out dhparams.pem 2048 -``` - -### {% linkable_title 5. Install configuration file in nginx. %} - -Create a new file `/etc/nginx/sites-available/hass` and copy the configuration file at the bottom of the page into it. - -

    -Some Linux distributions (including CentOS and Fedora) will not have the `/etc/nginx/sites-available/` directory. In this case, remove the default server {} block from the `/etc/nginx/nginx.conf` file and paste the contents from the bottom of the page in its place. If doing this, proceed to step 7. -

    - -### {% linkable_title 6. Enable the Home Assistant configuration. %} - -```bash -$ cd /etc/nginx/sites-enabled -$ sudo unlink default -$ sudo ln ../sites-available/hass default -``` - -### {% linkable_title 7. Start NGINX. %} - -Double check this configuration to ensure all settings are correct and start nginx. - -### {% linkable_title 8. Port forwarding. %} - -Forward ports 443 and 80 to your server on your router. Do not forward port 8123. - -### {% linkable_title NGINX Config %} - -```text -map $http_upgrade $connection_upgrade { - default upgrade; - '' close; -} - -server { - # Update this line to be your domain - server_name example.com; - - # These shouldn't need to be changed - listen [::]:80 default_server ipv6only=off; - return 301 https://$host$request_uri; -} - -server { - # Update this line to be your domain - server_name example.com; - - # Ensure these lines point to your SSL certificate and key - ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; - # Use these lines instead if you created a self-signed certificate - # ssl_certificate /etc/nginx/ssl/cert.pem; - # ssl_certificate_key /etc/nginx/ssl/key.pem; - - # Ensure this line points to your dhparams file - ssl_dhparam /etc/nginx/ssl/dhparams.pem; - - - # These shouldn't need to be changed - listen [::]:443 default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here - add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; - ssl on; - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; - ssl_prefer_server_ciphers on; - ssl_session_cache shared:SSL:10m; - - proxy_buffering off; - - location / { - proxy_pass http://localhost:8123; - proxy_set_header Host $host; - proxy_redirect http:// https://; - proxy_http_version 1.1; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - } -} -``` diff --git a/source/_docs/ecosystem/nginx_subdomain.markdown b/source/_docs/ecosystem/nginx_subdomain.markdown deleted file mode 100644 index 714be21f48..0000000000 --- a/source/_docs/ecosystem/nginx_subdomain.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: page -title: "NGINX Configuration" -description: "Configure Nginx to work with Home Assistant as a subdomain" -date: 2016-06-20 13:05 -sidebar: true -comments: false -sharing: true -footer: true ---- - -This example demonstrates how you can configure NGINX to act as a proxy for Home Assistant. - -This is useful if you want to have: - - * a subdomain redirecting to your Home Assistant instance - * several subdomain for several instance - * HTTPS redirection - -#### {% linkable_title Subdomain %} - -So you already have a working NGINX server available at example.org. Your Home Assistant is correctly working on this web server and available at http://localhost:8123 - -To be able to access to your Home Assistant instance by using https://home.example.org, create file `/etc/nginx/sites-enabled/homeassistant` (or symlink via `/etc/nginx/sites-available`) and add the following: - -```nginx -server { - listen 443 ssl; - server_name home.example.org; - - ssl on; - ssl_certificate /etc/nginx/ssl/home.example.org/home.example.org-bundle.crt; - ssl_certificate_key /etc/nginx/ssl/home.example.org/home.example.org.key; - ssl_prefer_server_ciphers on; - - 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 { - proxy_pass http://localhost:8123/api/websocket; - proxy_set_header Host $host; - - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - - } -} -``` - -If you don't want HTTPS, you can change `listen 443 ssl` to `listen 80` or better, consider redirecting all HTTP to HTTPS. See further down. - -#### {% linkable_title Multiple Instance %} - -You already have Home Assistant running on http://localhost:8123 and available at home.example.org as describe before. The configuration file for this Home Assistant is available in `/home/alice/.homeassistant/configuration.yaml`. - -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/` - -In both solution, change port number used by modifying `configuration.yaml` file. - -```yaml -http: - server_port: 8124 - ... -``` - -Start Home Assistant: Now, you have another instance running on http://localhost:8124 - -To access this instance by using https://countryside.example.org create the file `/etc/nginx/sites-enabled/countryside.example.org` (or symlink via `/etc/nginx/sites-available`) and add the following: - -```bash -server { - listen 443 ssl; - server_name countryside.example.org; - - ssl on; - ssl_certificate /etc/nginx/ssl/countryside.example.org/countryside.example.org-bundle.crt; - ssl_certificate_key /etc/nginx/ssl/countryside.example.org/countryside.example.org.key; - ssl_prefer_server_ciphers on; - - location / { - proxy_pass http://localhost:8124/; - proxy_set_header Host $host; - } - - location /api/websocket { - proxy_pass http://localhost:8124/api/websocket; - proxy_set_header Host $host; - - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - - } -} -``` - -#### {% linkable_title HTTP to HTTPS redirection %} - -Add to your `/etc/nginx/sites-enabled/default` - -```bash -server { - listen 80 default_server; - server_name example.tld; - - return 301 https://$host$request_uri; -} -``` - diff --git a/source/_docs/ecosystem/notebooks.markdown b/source/_docs/ecosystem/notebooks.markdown deleted file mode 100644 index 9cde967703..0000000000 --- a/source/_docs/ecosystem/notebooks.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "Jupyter Notebooks" -description: "Jupyter Notebooks to interact offline and online with Home Assistant." -release_date: 2016-11-13 15:00:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/notebooks/ ---- - -The [Jupyter Notebooks](http://jupyter.org/) allows you to create and share documents that contain live code, equations, visualizations, and explanatory text directly in your browser. The web application what is formerly known as the IPython Notebook supports over 40 programming languages. - -Visit [https://try.jupyter.org/](https://try.jupyter.org/) to get a preview before you install it locally. - -

    - -

    - -[nbviewer](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/tree/master/) is rendering our notebooks online. GitHub is creating a preview as well. diff --git a/source/_docs/ecosystem/notebooks/api.markdown b/source/_docs/ecosystem/notebooks/api.markdown deleted file mode 100644 index 11d01248a2..0000000000 --- a/source/_docs/ecosystem/notebooks/api.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Home Assistant Python API" -description: "Basic example how to work with the Home Assistant Python API in a Jupyter notebook." -date: 2016-07-23 09:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/notebooks/api/ ---- - -The [Python API](/developers/python_api/) allows one to create [interactive notebooks](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/home-assistant-python-api.ipynb). diff --git a/source/_docs/ecosystem/notebooks/database.markdown b/source/_docs/ecosystem/notebooks/database.markdown deleted file mode 100644 index afb900c56e..0000000000 --- a/source/_docs/ecosystem/notebooks/database.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Database" -description: "Basic example how to work with stored Home Assistant information in a Jupyter notebook." -date: 2016-07-23 09:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/notebooks/database/ ---- - -The [Database example](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-examples.ipynb) shows you the details about how you can work with stored values. diff --git a/source/_docs/ecosystem/notebooks/graph.markdown b/source/_docs/ecosystem/notebooks/graph.markdown deleted file mode 100644 index ca17727cd6..0000000000 --- a/source/_docs/ecosystem/notebooks/graph.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Graph" -description: "Basic example how to create a graph with a Jupyter notebook." -date: 2016-07-23 09:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/notebooks/graph/ ---- - -For graphing this [Jupyter notebook](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/graph-single-sensor.ipynb) should get you started. diff --git a/source/_docs/ecosystem/notebooks/installation.markdown b/source/_docs/ecosystem/notebooks/installation.markdown deleted file mode 100644 index 96997dd065..0000000000 --- a/source/_docs/ecosystem/notebooks/installation.markdown +++ /dev/null @@ -1,51 +0,0 @@ ---- -layout: page -title: "Installation" -description: "Setup and first steps for Jupyter Notebooks and Home Assistant." -date: 2016-07-23 09:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/notebooks/installation/ ---- - -To run Jupyter Notebooks locally, an installation of [Jupyter](http://jupyter.org/) is needed. Consider to run Jupyter in a [virtualenv](/getting-started/installation-virtualenv/). - -```bash -$ pip3 install jupyter matplotlib -``` - -

    -Certain notebooks hosted in the [Home Assistant notebooks repository](https://github.com/home-assistant/home-assistant-notebooks) require access to a running Home Assistant instance or parts of a Home Assistant installation. If you want to run those notebooks, install Home Assistant with `$ pip3 install homeassistant` as well. -

    - -Now you are able to start the application. - -```bash -$ jupyter notebook -[I 17:22:18.081 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret -[I 17:22:18.921 NotebookApp] Serving notebooks from local directory: /home/fabaff/home-assistant -[I 17:22:18.921 NotebookApp] 0 active kernels -[I 17:22:18.921 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/ -[I 17:22:18.922 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). -``` - -Open [http://localhost:8888/](http://localhost:8888/) in your browser. Press "New" -> "Python3" to open a new notebook. - -

    - -

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

    - -

    - -The downloadable version of this notebook is available in the [Home Assistant notebooks repository](https://github.com/home-assistant/home-assistant-notebooks/blob/master/first-notebook.ipynb). - - -As you can see is the workflow very similar to working directly with a Python shell. One advantage is that you can go back and forth as you please and save your work. - - diff --git a/source/_docs/ecosystem/notebooks/stats.markdown b/source/_docs/ecosystem/notebooks/stats.markdown deleted file mode 100644 index c94ccb583b..0000000000 --- a/source/_docs/ecosystem/notebooks/stats.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Statistics" -description: "Basic example how to create basic statistics with a Jupyter notebook." -date: 2016-10-03 09:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/notebooks/stats/ ---- - -The [Statistics notebook](http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-statistics.ipynb) gets you started if you want to create statistical analysis of your data. diff --git a/source/_docs/ecosystem/scenegen.markdown b/source/_docs/ecosystem/scenegen.markdown deleted file mode 100644 index 37d2534b08..0000000000 --- a/source/_docs/ecosystem/scenegen.markdown +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: page -title: "SceneGen" -description: "Scenegen is a scene generation tool for Home Assistant" -release_date: 2016-10-30 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/scenegen/ ---- - -Scenegen is a scene generation tool for [Home Assistant](/) home automation software. It creates scenes by example, by reading the current states of devices and outputting a corresponding scene. Scenegen is written in python using Home Assistant's RESTFul API so can be run from anywhere. It currently supports lights and switches only. - -## {% linkable_title Installation %} - -### {% linkable_title Clone the Repository %} -Clone the [**scenegen**](https://github.com/home-assistant/scenegen) repository to the current local directory on your machine. - -``` bash -$ git clone https://github.com/home-assistant/scenegen.git -``` - -Change your working directory to the repository root. Moving forward, we will be working from this directory. - -``` bash -$ cd scenegen -``` - -## {% linkable_title Install Prerequisites %} - -Before running `SceneGen` you will need to add some python prerequisites: - -```bash -$ sudo pip3 install configparser -``` - -You should now be ready to run `scenegen` - -## {% linkable_title Basic Operation %} - -``` -usage: scenegen [-h] [-k KEY] [-s SCENENAME] [-m MAPFILE] [-f FILTER] - [-c {xy_color,rgb_color,color_temp,color_name}] [-t TYPES] - url - -positional arguments: - url url for Home Assistant instance - -optional arguments: - -h, --help show this help message and exit - -k KEY, --key KEY API Key of Home Assistant instance - -s SCENENAME, --scenename SCENENAME - Name of scene to generate - -m MAPFILE, --mapfile MAPFILE - Name of mapfile to enable device filtering - -f FILTER, --filter FILTER - Comma separated list of device collections as defined - in mapfile - -c {xy_color,rgb_color,color_temp,color_name}, --colortype {xy_color,rgb_color,color_temp,color_name} - color type to use - -t TYPES, --types TYPES - list of device types to include - -``` - -For basic operation just supply the url and optionally the api key (using the --key option) on the command line and scenegen will output a list of all lights and switches with their attributes. Optionally use the `--scenename` flag to explicitly set the scenename. - -``` -$ ./scenegen.py https:// -k -name: My New Scene -entities: - light.bedroom: - state: on - brightness: 28 - light.kitchen: - state: off - light.living_room: - state: off - light.bedside: - state: on - brightness: 125 - color_temp: 412 - light.office_level_29: - state: on - brightness: 28 -``` - -This output can be cut and pasted into your configuration.yaml file as required (ensuring correct indentatation of course). - -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 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 %} - -For a more advanced way to use the output try the following. In configuration.yaml add the following line: - -``` -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: - -``` -$ ./scenegen.py https:// -k > scenes/my_new_scene.yaml -``` - -This will create a new scene called `my_new_scene` which will automatically be picked up by Home Assistant on the next restart. - -## {% linkable_title Colors %} - -Scenegen allows colors to be captured, and in fact Home Assistant light entities store up to 4 different ways of specifying the colors. This is redundant for creating scenes so Scenegen picks 1 and goes with it. The default is `color_temp` but you can change this with the `--colortype` flag, supported options are `xy_color`, `rgb_color`, `color_temp` and `color_name`. - -## {% linkable_title Types %} - -By default, Scenegen will list all lights and switches. To restrict the device type use the `--types` option and supply a comma separated list (no spaces) of types to output. e.g.: - -``` -./scenegen.py https:// -k --types light,switch -``` - -or: - -``` -./scenegen.py https:// -k --types light -``` - -This will make more sense as and when more types are added. - -## {% linkable_title Maps and Filters %} - -Maps allow you to specify and label various subsets of devices that you want to work on together. A mapfile is specified using the `--mapfile` option and is a `.ini` style file consisting of section headers and entries. The section headers specify a region or zone or otherwise organized selection of entities you want to filter on, and it is mandatory to have at least one. If you create a map file like this: - -``` -[entities] -light.living_room: -light.dining_room: -``` - -The trailing colons are necessary to prevent parsing errors for including just keys, as opposed to key=value so just go with it - it reminds us of YAML ;) - -If you run scenegen with the `--mapfile` argument pointing to that file you will only get output for the listed entities (the name of the section is irrelevant if not using the `--filter` option). A more complex mapfile might look like this: - -``` -[Outside] -light.porch: -switch.path_lights: -[Living Room] -light.living_room_front: -light.living_room_back: -[Bedroom] -light.bedside: -``` - -Again, if you run with that map file it will output all of the entities listed, however you now have the possibility of restricting output devices based on the sections they are in, using the `--filter` option and supplying a comma separated list of sections you want to include, for instance: - -``` -./scenegen.py https:// -k --mapfile map.cfg --filter "Outside,Living Room" -``` - -The intended use of the mapfile and filter is that you create a map of all your devices and organize them into zones that you are interested in creating scenes for and use the filter to limit output to that zone. For instance you might want to create 3 or 4 scenes for your living room, and once the map is set up you can easily do so without the addition of unwanted devices. - -## {% linkable_title Updating SceneGen %} -To update SceneGen after a new version is released, just run the following command to update your copy: - -```bash -$ git pull -``` - diff --git a/source/_docs/ecosystem/synology.markdown b/source/_docs/ecosystem/synology.markdown deleted file mode 100644 index c5c436da58..0000000000 --- a/source/_docs/ecosystem/synology.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: page -title: "Synology" -description: "Instructions on how to get Home Assistant up and running on Synology" -release_date: 2016-12-07 15:00:00 -0500 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /ecosystem/synology/ ---- - -Synology NAS are the perfect companion to running Home Assistant. - -### {% linkable_title HTTP Configuration %} - -Synology will require some extra configuration to get the Home Assistant frontend working. - -- Copy the Home Assistant specific Reverse Proxy settings from the existing `/etc/nginx/app.d/server.ReverseProxy.conf` to `/usr/local/etc/nginx/conf.d/http.HomeAssistant.conf` -- Include these lines in the location declaration: - -``` - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; -``` diff --git a/source/_docs/ecosystem/tor.markdown b/source/_docs/ecosystem/tor.markdown deleted file mode 100644 index 4c81451d57..0000000000 --- a/source/_docs/ecosystem/tor.markdown +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: page -title: "Tor Onion Service Configuration" -description: "Configure Tor to work with Home Assistant to provide secure remote access without opening your firewall" -date: 2016-07-06 13:05 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /cookbook/tor_configuration/ ---- - -This article guides your through the configuration of Tor to provide a secure access to your Home Assistant instance as an Onion site, through [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en) feature, from remote. With this enabled, you do not need to open your firewall ports or setup HTTPS to enable secure remote access. - -This is useful if you want to have: - - * Access your Home Assistant instance remotely without opening a firewall port or setting up a VPN. - * Don't want to or know how to get an SSL/TLS certificate and HTTPS configuration setup. - * Want to block attackers from even being able to access/scan your port and server at all. - * Want to block anyone from knowing your home IP address and seeing your traffic to your Home Assistant. - -## {% linkable_title Hidden Services and Onion Sites %} - -Tor allows clients and relays to offer hidden services. That is, you can offer a web server, SSH server, etc., without revealing your IP address to its users. In fact, because you don't use any public address, you can run a hidden service from behind your firewall. Learn more about Hidden Services on the [Tor Project website](https://www.torproject.org/docs/tor-hidden-service.html.en). - -Onion sites are websites that run on a Tor Hidden Service node. "dot onion" sites are an [IETF recognized special use domain name](https://datatracker.ietf.org/doc/rfc7686/). - -## {% linkable_title Setting up Tor on your Home Assistant %} - -First, install Tor. On a Debian-based system, you can install the package easily: - -```bash -$ sudo apt-get install tor -``` - -You can find more instructions for downloading and installing Tor on other platforms on the [Tor Project Download Page](https://www.torproject.org/download/download.html). - -Next, modify Tor's main configuration file `/etc/tor/torrc` to include the following lines: - -```bash -############### This section is just for location-hidden services ### - -## Once you have configured a hidden service, you can look at the -## contents of the file ".../hidden_service/hostname" for the address -## to tell people. -... -HiddenServiceDir /var/lib/tor/homeassistant/ -HiddenServicePort 80 127.0.0.1:8123 -HiddenServiceAuthorizeClient stealth haremote1 -... -``` - -The "stealth" entry above ensures traffic to and from your Home Assistant instance over Tor, is hidden even from other nodes on the Tor network. The `haremote1` value is a generic client name entry that you can modify as you please. - -Then, restart Tor: - -```bash -$ sudo systemctl restart tor -``` - -Then read the new generated authentication cookie from the Tor-generated hostname file: - -```bash -$ sudo more /var/lib/tor/homeassistant/hostname -``` - -The output of that command should look something like this, but with your own unique "dot onion" domain and authentication cookie: - -```bash -abcdef1234567890.onion ABCDEF1122334455667789 # client: haremote1 -``` - -You are now done with the Home Assistant Tor server configuration. Make sure your Home Assistant instance is running, and now you can move to client configuration. - -## {% linkable_title Tor Client Access Setup %} - -Using this setup, you can access your Home Assistant instance over Tor from your laptop or mobile device, using Tor Browser and other software. - -Add the authentication cookie to your `torrc` client configuration on your laptop or mobile device. Using the sample values from above, it would look like this: - -```bash -HidServAuth abcdef1234567890.onion ABCDEF1122334455667789 -``` - -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. - -For [Orbot: Tor on Android](https://guardianproject.info/apps/orbot), add it in **Orbot** -> **Menu** -> **Settings** to the "Torrc Custom Config" entry. Restart Orbot, and then use the [Orfox browser app](https://guardianproject.info/apps/orfox/), and browse to the "dot onion" site name to access your Home Assistant instance. You can also use Orbot's VPN mode, to enable Tor access from any application on your device, such as Tasker or Owntracks. - -On iOS, we have not fully tested this yet, but you should be able to add custom torrc entries on [Onion Browser](https://mike.tig.as/onionbrowser/), Red Onion or TOBY browsers, all available in the iTunes App Store. - -## {% linkable_title Some More Advanced Ideas %} - -With this configuration, only you can access your Home Assistant instance Onion site through Tor, and no one else. You can share the authentication cookie with multiple devices and users, or you can generate a unique one for each - up to you! If you have multiple, say for an industrial, business or corporate configuration, this would provide an easy way to revoke access to a specific user or device. - -If you always access your Home Assistant instance via Tor, you can easily run this on an isolated "IoT" network segment at your install site, keeping your internal home network traffic separate from any potentially compromised devices (like cheap "smart" lightbulbs with backdoors!). - -You could also use Tor as a means to connect your Home Assistant instance to a remote device, sensor or other service that you do not want to or connect provide a direct, open IP connection to. Again, Tor provides authenticated and confidential routing (aka "privacy and encryption") by default, without having to setup TLS/SSL or VPN. It is just important to secure IoT nodes within your network, as it is to secure remote access! - -As mentioned, with Orbot on Android, you can enable a "full device" VPN mode, that allows any app you have to tunnel through Tor, even if it is not Tor or proxy aware. This means you should be able to enter your "dot onion" Onion site address into any app you want to access to your Home Assistant instance, and it should work. - diff --git a/source/_docs/frontend.markdown b/source/_docs/frontend.markdown deleted file mode 100644 index 4c6d26dcab..0000000000 --- a/source/_docs/frontend.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "Frontend of Home Assistant" -description: "Frontend of Home Assistant." -date: 2017-02-13 12:50 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The frontend of Home Assistant is built with [Polymer](https://www.polymer-project.org/). - -

    - -

    - -The [User Interface section](/cookbook/#user-interface) can give you some starting points to expand the frontend. - -If you want to work on the frontend, please refer to the [Frontend Development documentation](/developers/frontend/). - diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown deleted file mode 100644 index 2454f5989a..0000000000 --- a/source/_docs/frontend/browsers.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -layout: page -title: "Browsers" -description: "Browser Compatibility List" -date: 2016-06-25 08:00 -sidebar: true -comments: false -sharing: true -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. 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 extension 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. - -## {% linkable_title Microsoft Windows %} - -| Browser | Release | State | Comments | -| :------------------------ |:---------------|:-----------|:-------------------------| -| Internet Explorer ([IE]) | 11 | Not supported | Does not support promises. | -| Microsoft [Edge] | deli. Win 10 | works | Streaming updates not working. | -| [Chrome] | 61.0.3163.100 | works | | -| [Firefox] | 57.0 | works | | -| [Iridium] | 48.2 | works | | -| [Opera] | 42.0.2393.351 | works | | - -## {% linkable_title macOS %} - -| Browser | Release | State | Comments | -| :-------------------- |:---------------|:-----------|:-------------------------| -| [Safari] | | works | Map is fixed since 0.51. | - -## {% linkable_title Linux %} - -| Browser | Release | State | Comments | -| :-------------------- |:---------------|:-----------|:-------------------------| -| [Firefox] | 59.0 | works | | -| [Midori] | 0.5.11 | works | | -| [Chromium] | 63.0.3239.108 | 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 | | -| [Lynx] | 2.12 | fails | loads empty page | -| [elinks] | | fails | page with manifest and import | -| [w3m] | 0.5.3 | fails | display the icon shown while loading HA | -| [Epiphany] | 3.18.5 | works | | -| [surf] | 0.7 | works | | - -## {% linkable_title Android %} - -| Browser | Release | State | Comments | -| :-------------------- |:---------------|:-----------|:-------------------------| -| [Chrome] | 50.0.2661.89 | works | Can also be added to desktop | -| [Firefox] | 46.0.1 | works | Can also be added to desktop | -| [Opera] | 42.0.2246.112628 | works | Can also be added to desktop | - -## {% linkable_title iOS %} - -| Browser | Release | State | Comments | -| :-------------------- |:---------------|:-----------|:-------------------------| -| [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. - -[Chrome]: https://www.google.com/chrome/ -[Chromium]: https://www.chromium.org/ -[Conkeror]: http://conkeror.org/ -[Edge]: https://www.microsoft.com/en-us/windows/microsoft-edge -[elinks]: http://elinks.or.cz/ -[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/frontend/mobile.markdown b/source/_docs/frontend/mobile.markdown deleted file mode 100644 index d7342115b7..0000000000 --- a/source/_docs/frontend/mobile.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Getting started on Mobile" -description: "Android/iOS instructions to add Home Assistant to your homescreen." -date: 2015-03-08 21:36 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/mobile/ ---- - -Home Assistant has [a companion app for iOS](/docs/ecosystem/ios/). - -On both Android and iOS, you can add the Home Assistant "web app" to your homescreen as if it was native (Home Assistant leverages the W3C [manifest.json](https://w3c.github.io/manifest/) support). - -### {% linkable_title Android %} - - 1. Open Chrome - 2. Navigate to your Home Assistant instance - 3. Tap on the Menu icon (three vertical bars) - 4. Tap on Add to Homescreen - 5. A dialog will popup; tap on Add - -

    - -

    - -### {% linkable_title iOS %} - - 1. Open Safari - 2. Navigate to your Home Assistant instance - 3. Tap on the Share icon in the middle of the bottom toolbar - 4. Tap on "Add to Home Screen" - 5. A dialog will popup; tap on Add diff --git a/source/_docs/frontend/webserver.markdown b/source/_docs/frontend/webserver.markdown deleted file mode 100644 index c2ff7f1f92..0000000000 --- a/source/_docs/frontend/webserver.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Web server fingerprint" -description: "Use nmap to scan your Home Assistant instance." -date: 2016-10-06 08:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /details/webserver/ ---- - -It was only a matter of time until the first queries for tools like [https://www.shodan.io](https://www.shodan.io/search?query=Home+Assistant) to search for Home Assistant instances showed up. - -To get an idea about how your Home Assistant instance looks to a network scanner, you can use `nmap`. The `nmap` tool is already available if you are using the [nmap device tracker](/components/device_tracker/). - -```bash -$ nmap -sV -p 8123 --script=http-title,http-headers 192.168.1.3 - -Starting Nmap 7.12 ( https://nmap.org ) at 2016-10-06 10:01 CEST -Nmap scan report for 192.168.1.3 (192.168.1.3) -Host is up (0.00011s latency). -PORT STATE SERVICE VERSION -8123/tcp open http CherryPy wsgiserver -| http-headers: -| Content-Type: text/html; charset=utf-8 -| Content-Length: 4309 -| Connection: close -| Date: Thu, 06 Oct 2016 08:01:31 GMT -| Server: Home Assistant -| -|_ (Request type: GET) -|_http-server-header: Home Assistant -|_http-title: Home Assistant - -Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . -Nmap done: 1 IP address (1 host up) scanned in 6.70 seconds -``` - diff --git a/source/_docs/glossary.markdown b/source/_docs/glossary.markdown deleted file mode 100644 index c5a76c534f..0000000000 --- a/source/_docs/glossary.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -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/installation.markdown b/source/_docs/installation.markdown deleted file mode 100644 index 16380e6837..0000000000 --- a/source/_docs/installation.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: page -title: "Installation of Home Assistant" -description: "Instructions on how to install Home Assistant to launch on start." -date: 2017-02-15 08:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation/ ---- - -

    -Beginners should check our [Getting started guide](/getting-started/) first. This is for users that require advanced installations. -

    - -Home Assistant provides multiple ways to be installed. A requirement is that you have [Python 3.5.3 or later](https://www.python.org/downloads/) installed. - - - -Once Home Assistant is installed, execute the following code in a console/terminal to check if the setup was successful: - -```bash -$ hass -``` - -The first start may take a minute or two because the needed packages will be downloaded and installed. The web interface will be served on [http://localhost:8123](http://localhost:8123). - -For more details about `hass`, please refer to the [tools section](/docs/tools/hass/). - -If you're running a Linux-based platform, we suggest you follow the [VirtualEnv instructions](/docs/installation/virtualenv/) to avoid using `root`. - -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 deleted file mode 100644 index 3e13bd2691..0000000000 --- a/source/_docs/installation/archlinux.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -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 -sharing: true -footer: true ---- - -[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. - -```bash -$ sudo pacman -S python -$ sudo pacman -S python-pip -``` - -and Home Assistant itself. - -```bash -$ pip3 install --user homeassistant -``` - -Home Assistant is part of the [AUR](https://aur.archlinux.org/packages/home-assistant/). This means that it can be installed with `pacaur`. This package is often broken or outdated: - -```bash -$ pacaur -S home-assistant -``` diff --git a/source/_docs/installation/armbian.markdown b/source/_docs/installation/armbian.markdown deleted file mode 100644 index 5f16fc5bc0..0000000000 --- a/source/_docs/installation/armbian.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Installation on a Armbian system" -description: "Instructions to install Home Assistant on an Armbian-powered systems." -date: 2017-02-23 11:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -[armbian](https://www.armbian.com) runs on a wide-variety of [ARM development boards](https://www.armbian.com/download/). Currently there are around 50 boards supported inclusive the OrangePi family, Cubieboard, Pine64, and Odroid. - -Python 3.5.3 or later is required. - -Setup Python and `pip` - -```bash -$ sudo apt-get update -$ sudo apt-get install python3-dev python3-pip -``` - -Now that you installed python, there are two ways to install Home Assistant: -1. It is recommended to install Home Assistant in a virtual environment to avoid using `root`, using the [VirtualEnv instructions](/docs/installation/virtualenv/) -2. Alternatively, you can install Home Assistant for the user you created when first booting Armbian: -```bash -$ sudo pip3 install homeassistant -$ hass --open-ui -``` -Running these commands will: - - - Install Home Assistant - - Launch Home Assistant and serve the web interface on [http://localhost:8123](http://localhost:8123) - - the configuration files will be created in /home/{user}/.homeassistant - - diff --git a/source/_docs/installation/centos.markdown b/source/_docs/installation/centos.markdown deleted file mode 100644 index aadd8dbf93..0000000000 --- a/source/_docs/installation/centos.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: page -title: "Installation on CentOS/RHEL" -description: "Installation of Home Assistant on your CentOS/RHEL computer." -date: 2017-03-01 07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -To run Python 3.x on [CentOS](https://www.centos.org/) or RHEL (Red Hat Enterprise Linux), [Software Collections](https://www.softwarecollections.org/en/scls/rhscl/rh-python36/) needs to be activated first. - -You must install Python 3.5.3 or later. Software Collections version of Python 3.5 is 3.5.1 so this guide uses Python 3.6. - -### {% linkable_title Using Software Collections %} - -First of all install the software collection repository as root. For example, on CentOS: - -```bash -$ yum install centos-release-scl -``` - -Then install the Python 3.6 package: - -```bash -$ yum install rh-python36 -``` - -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-python36 bash -$ python --version -Python 3.6.3 -``` - -You will be in a command shell set up with Python 3.6 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](/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 Home Assistant using systemd follow the main [instructions](/docs/autostart/systemd/) and adjust the template as follows: - -``` -[Unit] -Description=Home Assistant -After=network.target - -[Service] -Type=simple -User=homeassistant -# Make sure the virtualenv Python binary is used -Environment=VIRTUAL_ENV="/srv/homeassistant" -Environment=PATH="$VIRTUAL_ENV/bin:$PATH" -# ExecStart using software collection: -ExecStart=/usr/bin/scl enable rh-python36 -- /srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" - -[Install] -WantedBy=multi-user.target -``` diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown deleted file mode 100644 index 4245f1069c..0000000000 --- a/source/_docs/installation/docker.markdown +++ /dev/null @@ -1,210 +0,0 @@ ---- -layout: page -title: "Installation on Docker" -description: "Instructions to install Home Assistant on a Docker." -date: 2016-04-16 11:36 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-docker/ ---- - -Installation with Docker is straightforward. Adjust the following command so that `/path/to/your/config/` points at the folder where you want to store your configuration and run it: - -### {% linkable_title Linux %} - -```bash -$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant -``` - -### {% linkable_title Raspberry Pi 3 (Raspbian) %} - -```bash -$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/raspberrypi3-homeassistant:0.XX.x -``` - -The Docker container for Raspberry Pi 3 does not have a 'latest' tag so the version number must be specified explicitly, i.e. 0.68.0. This goes for both CLI and Docker Compose. - - -### {% linkable_title macOS %} - -When using `docker-ce` (or `boot2docker`) on macOS, you are unable to map the local timezone to your Docker container ([Docker issue](https://github.com/docker/for-mac/issues/44)). Instead of `-v /etc/localtime:/etc/localtime:ro`, just pass in the timezone environment variable when you launch the container, e.g, `-e "TZ=America/Los_Angeles"`. Replace "America/Los_Angeles" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -If you wish to browse directly to `http://localhost:8123` from your macOS host, meaning forward ports directly to the container, replace the `--net=host` switch with `-p 8123:8123`. More detail can be found in [the docker forums](https://forums.docker.com/t/should-docker-run-net-host-work/14215/10). - -```bash -$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -e "TZ=America/Los_Angeles" -p 8123:8123 homeassistant/home-assistant -``` - -Alternatively, `docker-compose` works with any recent release of `docker-ce` on macOS. Note that (further down this page) we provide an example `docker-compose.yml` however it differs from the `docker run` example above. To make the .yml directives match, you would need to make _two_ changes: first add the equivalent `ports:` directive, then _remove_ the `network_mode: host` section. This is because `Port mapping is incompatible with network_mode: host:`. More details can be found at [Docker networking docs](https://docs.docker.com/engine/userguide/networking/#default-networks). Note also the `/dev/tty*` device name used by your Arduino etc. devices will differ from the Linux example, so the compose `mount:` may require updates. - -### {% linkable_title Windows %} - -When running Home Assistant in Docker on Windows, you may have some difficulty getting ports to map for routing (since the `--net=host` switch actually applies to the hypervisor's network interface). To get around this, you will need to add port proxy ipv4 rules to your local Windows machine, like so (Replacing '192.168.1.10' with whatever your Windows IP is, and '10.0.50.2' with whatever your Docker container's IP is): -``` -netsh interface portproxy add v4tov4 listenaddress=192.168.1.10 listenport=8123 connectaddress=10.0.50.2 connectport=8123 -netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8123 connectaddress=10.0.50.2 connectport=8123 -``` - -This will let you access your Home Assistant portal from http://localhost:8123, and if you forward port 8123 on your router to your machine IP, the traffic will be forwarded on through to the docker container. - -### {% linkable_title Synology NAS %} - -As Synology within DSM now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see https://www.synology.com/en-us/dsm/app_packages/Docker - -The steps would be: -* Install "Docker" package on your Synology NAS -* Launch Docker-app and move to "Registry"-section -* Find "homeassistant/home-assistant" with registry and click on "Download" -* Wait for some time until your NAS has pulled the image -* Move to the "Image"-section of the Docker-app -* Click on "Launch" -* Choose a container-name you want (e.g., "homeassistant") -* Click on "Advanced Settings" -* Set "Enable auto-restart" if you like -* Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount point" has to be "/config", so that Home Assistant will use it for the configs and logs. -* Within "Network" select "Use same network as Docker Host" -* To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) -* Confirm the "Advanced Settings" -* Click on "Next" and then "Apply" -* Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Synology NAS IP address - for example `http://192.168.1.10:8123`) - -Remark: to update your Home Assistant on your Docker within Synology NAS, you just have to do the following: -* Go to the Docker-app and move to "Image"-section -* Download the "homeassistant/home-assistant" image - don't care, that it is already there -* wait until the system-message/-notification comes up, that the download is finished (there is no progress bar) -* Move to "Container"-section -* Stop your container if it's running -* Right-click on it and select "Action"->"Clear". You won't lose any data, as all files are stored in your config-directory -* Start the container again - it will then boot up with the new Home Assistant image - -Remark: to restart your Home Assistant within Synology NAS, you just have to do the following: -* Go to the Docker-app and move to "Container"-section -* Right-click on it and select "Action"->"Restart". - -

    -If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assistant on Synology Docker these instructions do not correctly configure the container to access the USB devices. To configure these devices on your Synology Docker Home Assistant you can follow the instructions provided [here](https://philhawthorne.com/installing-home-assistant-io-on-a-synology-diskstation-nas/) by Phil Hawthorne. -

    - -### {% linkable_title QNAP NAS %} - -As QNAP within QTS now supports Docker (with a neat UI), you can simply install Home Assistant using docker without the need for command-line. For details about the package (including compatibility-information, if your NAS is supported), see https://www.qnap.com/solution/container_station/en/index.php - -The steps would be: - - - Install "Container Station" package on your Qnap NAS - - Launch Container Station and move to "Create Container"-section - - Search image "homeassistant/home-assistant" with Docker hub and click on "Install" - - Choose "latest" version and click next - - Choose a container-name you want (e.g., "homeassistant") - - Click on "Advanced Settings" - - Within "Shared Folders" click on "Volume from host" > "Add" and choose either an existing folder or add a new folder. The "mount point has to be `/config`, so that Home Assistant will use it for the configuration and logs. - - Within "Network" and select Network Mode to "Host" - - To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) - - Click on "Create" - - Wait for some time until your NAS has created the container - - Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example `http://192.xxx.xxx.xxx:8123`) - -Remark: To update your Home Assistant on your Docker within Qnap NAS, you just remove container and image and do steps again (Don't remove "config" folder). - -If you want to use a USB Bluetooth adapter or Z-Wave USB stick with Home Assistant on Qnap Docker, follow those steps: - -#### {% linkable_title Z-Wave %} - - - Connect to your NAS over SSH - - Load cdc-acm kernel module(when nas restart need to run this command) - `insmod /usr/local/modules/cdc-acm.ko` - - Find USB devices attached. Type command: - `ls /dev/tty*` - The above command should show you any USB devices plugged into your NAS. If you have more than one, you may get multiple items returned. Like : `ttyACM0` - - - Run Docker command: - `docker run --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London --device /dev/ttyACM0 homeassistant/home-assistant` - - `-v` is your config path - `-e` is set timezone - - - Edit `configuration.yaml` - -```yaml -zwave: - usb_path: /dev/ttyACM0 -``` - -That will tell Home Assistant where to look for our Z-wave radio. - -#### {% linkable_title Bluetooth %} - - - Connect to your NAS over SSH - - Run Docker command: - `docker run --name home-assistant --net=host --privileged -itd -v /share/CACHEDEV1_DATA/Public/homeassistant/config:/config -e variable=TZ -e value=Europe/London -v /dev/bus/usb:/dev/bus/usb -v /var/run/dbus:/var/run/dbus homeassistant/home-assistant` - - First `-v` is your config path - `-e` is set timezone - - - Edit the `configuration.yaml` file - -```yaml -device_tracker: - - platform: bluetooth_tracker -``` - -### {% linkable_title Restart %} - -If you change the configuration you have to restart the server. To do that you have 2 options. - - 1. You can go to the service developer tool icon service developer tools, select the service `homeassistant/restart` and click "Call Service". - 2. Or you can restart it from a terminal by running `docker restart home-assistant` - -### {% linkable_title Docker Compose %} - -As the docker command becomes more complex, switching to `docker-compose` can be preferable and support automatically restarting on failure or system restart. Create a `docker-compose.yml` file: - -```yaml - version: '3' - services: - homeassistant: - container_name: home-assistant - image: homeassistant/home-assistant - volumes: - - /path/to/your/config:/config - - /etc/localtime:/etc/localtime:ro - restart: always - network_mode: host -``` - -Then start the container with: - -```bash -$ docker-compose up -d -``` - -### {% linkable_title Exposing Devices %} - -In order to use Z-Wave, ZigBbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: - -```bash -$ docker run -d --name="home-assistant" -v /path/to/your/config:/config \ - -v /etc/localtime:/etc/localtime:ro --device /dev/ttyUSB0:/dev/ttyUSB0 \ - --net=host homeassistant/home-assistant -``` - -or in a `docker-compose.yml` file: - -```yaml - version: '3' - services: - homeassistant: - container_name: home-assistant - image: homeassistant/home-assistant - volumes: - - /path/to/your/config:/config - - /etc/localtime:/etc/localtime:ro - devices: - - /dev/ttyUSB0:/dev/ttyUSB0 - - /dev/ttyUSB1:/dev/ttyUSB1 - - /dev/ttyACM0:/dev/ttyACM0 - restart: always - network_mode: host -``` diff --git a/source/_docs/installation/fedora.markdown b/source/_docs/installation/fedora.markdown deleted file mode 100644 index bbb74f3f00..0000000000 --- a/source/_docs/installation/fedora.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "Installation on Fedora" -description: "Installation of Home Assistant on your Fedora computer." -date: 2017-03-01 07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -[Fedora](https://fedoraproject.org) is an operating system based on the Linux kernel, developed by the community-supported Fedora Project. There are releases for x86 and x86_64 including ARM and other architectures. - -Install the development package of Python. - -```bash -$ sudo dnf -y install python3-devel redhat-rpm-config -``` - -and Home Assistant itself. - -```bash -$ pip3 install homeassistant -``` - -To isolate the Home Assistant installation a [venv](https://docs.python.org/3/library/venv.html) is handy. First create a new directory to store the installation and adjust the permissions. - -```bash -$ sudo mkdir -p /opt/homeassistant -$ sudo chown -R user:group /opt/homeassistant -``` -Now switch to the new directory, setup the venv, and activate it. - -```bash -$ cd /opt/homeassistant -$ python3.6 -m venv . -$ source bin/activate -``` - -Install Home Assistant itself. - -```bash -$ pip3 install homeassistant colorlog -``` - -Check the [autostart](/docs/autostart/systemd/) section in the documentation for further details and the [Firewall section](/docs/installation/troubleshooting/#no-access-to-the-frontend) if you want to access your Home Assistant installation. diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown deleted file mode 100644 index 6679275764..0000000000 --- a/source/_docs/installation/freenas.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Installation on FreeNAS 9.10" -description: "Installation of Home Assistant on your FreeNAS." -date: 2017-06-20 11:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -[Freenas](http://www.freenas.org) is a free and open-source network-attached storage (NAS) software based on FreeBSD and the OpenZFS file system. It is licensed under the terms of the BSD License and runs on commodity x86-64 hardware. - -This has been tested on the FreeNAS 9.10. These instructions assume you already have a running and accessible jail. For more information on creating a jail follow the official FreeNAS 9.10.x documentation [HERE](https://doc.freenas.org/9.10/jails.html#adding-jails). Once you have the jail follow the steps below. - -Install the necessary Python Packages. - -```bash -# pkg update -# pkg upgrade -# pkg install python35 -# pkg install py35-sqlite3 -# python3.5 -m ensurepip -``` - -Install Home Assistant itself. - -```bash -# pip3 install homeassistant -``` - -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 -# cd / && mkdir -p /home/.homeassistant -``` - -```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/installation/hassbian.markdown b/source/_docs/installation/hassbian.markdown deleted file mode 100644 index bc20ad6359..0000000000 --- a/source/_docs/installation/hassbian.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: page -title: "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/hassbian/ ---- - -Hassbian is our customized operating system for the Raspberry Pi Zero, 2,3 and 3B+. It is one of the easiest ways of installing Home Assistant. - - - [Install Hassbian][install] - - [Customize your installation][customize] - - [Pi specific integrations][integrations] - - [Learn how to perform common tasks][common] - -[install]: /docs/hassbian/installation/ -[customize]: /docs/hassbian/customization/ -[common]: /docs/hassbian/common-tasks/ -[integrations]: /docs/hassbian/integrations/ diff --git a/source/_docs/installation/hassbian/common-tasks.markdown b/source/_docs/installation/hassbian/common-tasks.markdown deleted file mode 100644 index edf92d8ace..0000000000 --- a/source/_docs/installation/hassbian/common-tasks.markdown +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: page -title: "Common tasks on Hassbian" -description: "Instructions on how to do common tasks on Hassbian." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true -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`. -Linux and Mac OS users execute the following command in a terminal. - -```bash -$ ssh pi@ip-address-of-pi -``` - -Windows users start [Putty][ssh-putty], enter the IP address of the Raspberry Pi in the *Host name* field and port 22 in the *Port* field. Then click *Open* and a terminal window will open. Enter the credentials. Default user name is `pi` and password is `raspberry`. - -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 and execute the following commands: - -```bash -$ sudo systemctl stop home-assistant@homeassistant.service -``` - -Replace `stop` with `start` or `restart` to get the desired functionality. -To get the current state of the `homeassistant.service` replace `stop` with `status`. - -### {% linkable_title Update Home Assistant %} - -

    -You can use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade homeassistant` -

    - -Log in as the `pi` account and execute the following commands: - -```bash -$ sudo systemctl stop home-assistant@homeassistant.service -$ sudo su -s /bin/bash homeassistant -$ source /srv/homeassistant/bin/activate -$ pip3 install --upgrade homeassistant -$ exit -$ sudo systemctl start home-assistant@homeassistant.service -``` - -This will in order do the following: - -- Stop the Home Assistant service running on Hassbian -- Open a shell as the `homeassistant` user running the Homeassistant service and that has ownership over the Home Assistant installation. -- Change into the virtual Python environment at `/srv/homeassistant/` containing the Home Assistant installation. -- Upgrade the Home Assistant installation to the latest release. -- Exit the shell and return to the `pi` user. -- Start the Home Assistant service. - -### {% linkable_title Manually launch Home Assistant %} -Log in as the `pi` account and execute the following commands: - -```bash -$ sudo su -s /bin/bash homeassistant -$ 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. 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: - -```bash -$ sudo su -s /bin/bash homeassistant -$ source /srv/homeassistant/bin/activate -$ hass --script check_config -``` - -This will output any errors in your configuration files to console. - -### {% linkable_title Read the Home Assistant log file %} -Log in as the `pi` account and execute the following commands: - -```bash -$ sudo su -s /bin/bash homeassistant -$ cd /home/homeassistant/.homeassistant -$ nano home-assistant.log -``` - -This will in order do the following: - -- Open a shell as the `homeassistant` user. -- Change directory to the Home Assistant configuration directory. -- Open the log file in the nano editor. - -Optionally, you can also view the log with `journalctl`. -Log in as the `pi` account and execute the following commands: - -```bash -$ sudo journalctl -fu home-assistant@homeassistant.service -``` - -### {% linkable_title Edit the Home Assistant configuration %} - -Log in as the `pi` account and execute the following commands: - -```bash -$ sudo su -s /bin/bash homeassistant -$ cd /home/homeassistant/.homeassistant -$ nano configuration.yaml -``` - -This will in order do the following: - -- Open a shell as the `homeassistant` user. -- Change directory to the Home Assistant configuration directory. -- Open the configuration file in the nano editor. - -It's generally recommended that you read the [Getting started][configuring-homeassistant] guide for how to configure Home Assistant. - -### {% linkable_title Change locale, timezone and keyboard layout %} - -```bash -$ sudo raspi-config -``` - -[configuring-homeassistant]: /getting-started/configuration/ -[ssh-putty]: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html -[stop-homeassistant]: /getting-started/installation-raspberry-pi-image/#startstoprestart-home-assistant-on-hassbian -[bash-windows]: https://msdn.microsoft.com/en-us/commandline/wsl/about diff --git a/source/_docs/installation/hassbian/customization.markdown b/source/_docs/installation/hassbian/customization.markdown deleted file mode 100644 index e1c968a0c4..0000000000 --- a/source/_docs/installation/hassbian/customization.markdown +++ /dev/null @@ -1,45 +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: /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 suites 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 suites run `hassbian-config show` or have a look at the [hassbian-scripts repository][hassbian-repo]. -These are some of the available suites: - - [AppDaemon](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/appdaemon.md) - - [Duck DNS](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/duckdns.md) _This can also be configured to generate Let's Encrypt SSL certificates_ - - [Homebridge](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/homebridge.md) - - [Mosquitto](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/mosquitto.md) - - [Samba](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/samba.md) - - [Webterminal](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/webterminal.md) - - Various database engines. - - [MariaDB](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/mariadb.md) - - [PostgreSQL](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/postgresql.md) - - [MS SQL](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/mssql.md) - - To install any of them simply run `sudo hassbian-config install SUITE`. - -### Upgrade scripts -To view the available suites run `hassbian-config show` or have a look at the [hassbian-scripts repository][hassbian-repo]. -These are some of the available suites: -- [AppDaemon](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/appdaemon.md) -- [Hassbian](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/hassbian.md) -- [Home Assistant](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/homeassistant.md) -- [hassbian-config (hassbian-sctipts)](https://github.com/home-assistant/hassbian-scripts/blob/master/docs/hassbian_config.md) - -To upgrade any of them simply run `sudo hassbian-config upgrade SUITE`. - -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 deleted file mode 100644 index c6e73879ef..0000000000 --- a/source/_docs/installation/hassbian/installation.markdown +++ /dev/null @@ -1,66 +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: /docs/hassbian/installation/ ---- - -One of the easiest ways to install Home Assistant on your Raspberry Pi Zero, 2 ,3 and 3B+ 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] - 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](#wireless-network) **before proceeding to step 4**. - 4. Insert SD card to Raspberry Pi and turn it on. Initial installation of Home Assistant will take about 10 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, this will download and install the newest version of [hassbian-config](https://github.com/home-assistant/hassbian-scripts) and Home-Assistant, this takes around 10 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 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-scripts). - -### {% 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/installation/hassbian/integrations.markdown b/source/_docs/installation/hassbian/integrations.markdown deleted file mode 100644 index d6f7a3fd0c..0000000000 --- a/source/_docs/installation/hassbian/integrations.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: "Raspberry Pi integrations" -description: "Home Assistant integrations specific to the Raspberry Pi." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true -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. - -### {% linkable_title Bluetooth Tracker %} - -The Bluetooth tracker will work on a Raspberry Pi 3 with the built-in Bluetooth module or with a USB Bluetooth device on any of the other Raspberry Pi's. - -Software needed for the tracker is pre-installed so just follow the [Bluetooth Tracker component](/components/device_tracker.bluetooth_tracker/) and [Device Tracker page](/components/device_tracker/) pages. - -### {% linkable_title Raspberry Pi GPIO %} - -Each of the following devices are connected to the GPIO pins on the Raspberry Pi. -For more details about the GPIO layout, visit the [documentation](https://www.raspberrypi.org/documentation/usage/gpio/) from the Raspberry Pi foundation. - -Permission have been given to the `homeassistant` user to use the GPIO pins and all of the following components should require no underlying changes to work. -Just follow the component pages for each on how to add them to your Home Assistant installation. - - - [DHT Sensor](/components/sensor.dht/) - - [Raspberry Pi Cover](/components/cover.rpi_gpio/) - - [Raspberry Pi GPIO Binary Sensor](/components/binary_sensor.rpi_gpio/) - - [Raspberry Pi GPIO Switch](/components/switch.rpi_gpio/) - - [Raspberry Pi RF Switch](/components/switch.rpi_rf/) - -### {% linkable_title Raspberry Pi Camera %} - -The Raspberry Pi Camera is a specific camera for the Raspberry Pi boards. For more information about the camera I suggest reading the [documentation](https://www.raspberrypi.org/documentation/usage/camera/) from the Raspberry Pi foundation. - -To use the camera it needs to be enabled with the `raspi-config` utility. - -```bash -$ sudo raspi-config -``` - -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. - -### {% linkable_title One wire Sensor %} - -The One wire sensor requires that support for it is enabled on the Raspberry Pi and that the One Wire device is connected to GPIO pin 4. -To enable One Wire support add the following line to the end of `/boot/config.txt` -```yaml -dtoverlay=w1-gpio -``` -After this follow the [One Wire Sensor component](/components/sensor.onewire/) page. diff --git a/source/_docs/installation/hassbian/upgrading.markdown b/source/_docs/installation/hassbian/upgrading.markdown deleted file mode 100644 index d7e094c16a..0000000000 --- a/source/_docs/installation/hassbian/upgrading.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Upgrading Hassbian" -description: "Instructions on how to upgrade Hassbian to the latest version." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true -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. -Log in as the `pi` account and execute the following commands: - -```bash -$ sudo apt-get update -$ sudo apt-get -y upgrade -``` - -#### {% linkable_title Updating Home Assistant %} -

    -You can use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade homeassistant` -

    - -To update the Home Assistant installation execute the following command as the `pi` user. - -```bash -$ sudo systemctl stop home-assistant@homeassistant.service -$ sudo su -s /bin/bash homeassistant -$ source /srv/homeassistant/bin/activate -$ pip3 install --upgrade homeassistant -$ exit -$ sudo systemctl start home-assistant@homeassistant.service -``` diff --git a/source/_docs/installation/macos.markdown b/source/_docs/installation/macos.markdown deleted file mode 100644 index 51292c43ab..0000000000 --- a/source/_docs/installation/macos.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Installation on macOS" -description: "Installation of Home Assistant on your macOS system." -date: 2017-03-01 07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -[macOS](http://www.apple.com/macos/) is available by default on Apple computer. If you run a different operating system, please refer to the other section of the documentation. - -To run Home Assistant on macOS you need to install Python first. Download Python 3.5.3 or later from https://www.python.org/downloads/mac-osx/ and follow the instructions of the installer. - -Open a terminal and install Home Assistant. - -```bash -$ pip3 install homeassistant -``` - -Check this [video](https://www.youtube.com/watch?v=hej6ipN86ls) for the installation on macOS. diff --git a/source/_docs/installation/python.markdown b/source/_docs/installation/python.markdown deleted file mode 100644 index a7dda882e2..0000000000 --- a/source/_docs/installation/python.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "Installation on your computer" -description: "Installation of Home Assistant on your computer." -date: 2014-12-18 22:57 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-python/ ---- - -Once Python is installed, execute the following code in a console: - -```bash -$ pip3 install homeassistant -$ hass --open-ui -``` - -Running these commands will: - - - Install Home Assistant - - Launch Home Assistant and serve the web interface on [http://localhost:8123](http://localhost:8123) - -If you're running a Linux-based platform, we suggest you follow the instructions for a [virtual environment](/docs/installation/virtualenv/) to avoid using `root`. - -Video tutorials of this process for various operating systems are available here: - - - [Windows 10](https://www.youtube.com/watch?v=X27eVvuqwnY) - - [macOS](https://www.youtube.com/watch?v=hej6ipN86ls) - - [Ubuntu 14.04](https://www.youtube.com/watch?v=SXaAG1lGNH0) - -Keep in mind that the used operating systems and the shown software releases may be outdated. diff --git a/source/_docs/installation/raspberry-pi-all-in-one.markdown b/source/_docs/installation/raspberry-pi-all-in-one.markdown deleted file mode 100644 index f983bb9d0b..0000000000 --- a/source/_docs/installation/raspberry-pi-all-in-one.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Raspberry Pi All-In-One Installer" -date: 2016-05-12 01:39 -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-raspberry-pi-all-in-one/ ---- - -

    - The All-In-One Installer is deprecated, you will have problems updating Home Assistant in 2018. Please move to another [installation method](/getting-started/). -

    diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown deleted file mode 100644 index c272e97dbf..0000000000 --- a/source/_docs/installation/raspberry-pi.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: page -title: "Manual installation on a Raspberry Pi" -description: "Instructions to install Home Assistant on a Raspberry Pi running Raspbian Lite." -date: 2016-09-05 16:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-raspberry-pi/ ---- - -This installation of Home Assistant requires the Raspberry Pi to run [Raspbian Lite](https://www.raspberrypi.org/downloads/raspbian/). The installation will be installed in a [Virtual Environment](/docs/installation/virtualenv) with minimal overhead. Instructions assume this is a new installation of Raspbian Lite. - -You must have Python 3.5.3 or later installed, which is the case for Raspbian Stretch. - -

    -Although these installation steps specifically mention a Raspberry Pi, you can go ahead and proceed on any Linux install as well. This guide is also referred to as the "Advanced Guide" for a virtual environment install. -

    - -

    -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. USB ports on your computer also will not supply enough power and must not be used. -

    - -Connect to the Raspberry Pi over SSH. Default password is `raspberry`. -You will need to enable SSH access. The Raspberry Pi website has instructions [here](https://www.raspberrypi.org/documentation/remote-access/ssh/). - -```bash -$ ssh pi@ipadress -``` - -Changing the default password is encouraged. - -```bash -$ passwd -``` - -Update the system. - -```bash -$ sudo apt-get update -$ sudo apt-get upgrade -y -``` - -Install the dependencies. - -```bash -$ sudo apt-get install python3 python3-venv python3-pip -``` - -Add an account for Home Assistant called `homeassistant`. -Since this account is only for running Home Assistant the extra arguments of `-rm` is added to create a system account and create a home directory. The arguments `-G dialout` adds the user to the `dialout` group. This is required for using Z-Wave and Zigbee controllers. - -```bash -$ sudo useradd -rm homeassistant -G dialout -``` - -Next we will create a directory for the installation of Home Assistant and change the owner to the `homeassistant` account. - -```bash -$ cd /srv -$ sudo mkdir homeassistant -$ sudo chown homeassistant:homeassistant homeassistant -``` - -Next up is to create and change to a virtual environment for Home Assistant. This will be done as the `homeassistant` account. - -```bash -$ sudo su -s /bin/bash homeassistant -$ cd /srv/homeassistant -$ python3 -m venv . -$ source bin/activate -``` -Once you have activated the virtual environment (notice the prompt change) you will need to run the following command to install a required python package. - -```bash -(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ python3 -m pip install wheel -``` - -Once you have installed the required python package it is now time to install Home Assistant! - -```bash -(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant -``` - -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 -``` -You can now reach your installation on your Raspberry Pi over the web interface on [http://ipaddress:8123](http://ipaddress:8123). - -

    -When you run the `hass` command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get "site cannot be reached" error when accessing the web interface. This will only happen for the first time, and subsequent restarts will be much faster. -

    - -If you want setup `hass` as a daemon and autostart it on boot please refer to [Autostart Home Assistant](/docs/autostart/). - -### {% linkable_title Updating %} - -To update to the latest version of Home Assistant follow these simple steps: - -```bash -$ sudo su -s /bin/bash homeassistant -$ source /srv/homeassistant/bin/activate -$ pip3 install --upgrade homeassistant -``` - -Once the last command executes restart the Home Assistant service to apply the latest updates. Please keep in mind that some updates may take longer to boot up than others. If Home Assistant fails to start make sure you check the **Breaking Changes** from the [Release Notes](https://github.com/home-assistant/home-assistant/releases). diff --git a/source/_docs/installation/synology.markdown b/source/_docs/installation/synology.markdown deleted file mode 100644 index 454dcd8858..0000000000 --- a/source/_docs/installation/synology.markdown +++ /dev/null @@ -1,242 +0,0 @@ ---- -layout: page -title: "Installation on a Synology NAS" -description: "Instructions to install Home Assistant on a Synology NAS." -date: 2016-04-16 11:36 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-synology/ ---- - -

    -Synology only provide Python 3.5.1, which is not compatible with Home Assistant 0.65.0 or later. Until Synology offer an updated version of Python, Home Assistant 0.64 is the most recent version that will be able to be installed. You can manually specify the version of Home Assistant to install, for example to install version 0.64.3 you would do `./python3 -m pip install homeassistant==0.64.3` -

    - -There are 2 alternatives, when using Home Assistant on Synology NAS: -1. using Docker -2. directly running on DSM - -Option 1 is described on the [Docker installation page](/docs/installation/docker/), whereas Option 2 is described below. - - -The following configuration has been tested on Synology 413j running DSM 6.0-7321 Update 1. - -Running these commands will: - - - Install Home Assistant - - Enable Home Assistant to be launched on [http://localhost:8123](http://localhost:8123) - -Using the Synology webadmin: - - - Install python3 using the Synology Package Center - - Create homeassistant user and add to the "users" group - -SSH onto your synology & login as admin or root - - - Log in with your own administrator account - - Switch to root using: - -```bash -$ sudo -i -``` - - -Check the path to python3 (assumed to be /volume1/@appstore/py3k/usr/local/bin) - -```bash -# cd /volume1/@appstore/py3k/usr/local/bin -``` - -Install PIP (Python's package management system) - -```bash -# ./python3 -m ensurepip -``` - -Use PIP to install Homeassistant package 0.64.3 - -```bash -# ./python3 -m pip install homeassistant==0.64.3 -``` - -Create homeassistant config directory & switch to it - -```bash -# mkdir /volume1/homeassistant -# chown homeassistant /volume1/homeassistant -# chmod 755 /volume1/homeassistant -# cd /volume1/homeassistant -``` -Hint: alternatively you can also create a "Shared Folder" via Synology WebUI (e.g., via "File Station") - this has the advantage that the folder is visible via "File Station". - -Create hass-daemon file using the following code (edit the variables in uppercase if necessary) - -```bash -#!/bin/sh - -# Package -PACKAGE="homeassistant" -DNAME="Home Assistant" - -# Others -USER="homeassistant" -PYTHON_DIR="/volume1/@appstore/py3k/usr/local/bin" -PYTHON="$PYTHON_DIR/python3" -HASS="$PYTHON_DIR/hass" -INSTALL_DIR="/volume1/homeassistant" -PID_FILE="$INSTALL_DIR/home-assistant.pid" -FLAGS="-v --config $INSTALL_DIR --pid-file $PID_FILE --daemon" -REDIRECT="> $INSTALL_DIR/home-assistant.log 2>&1" - -start_daemon () -{ - sudo -u ${USER} /bin/sh -c "$PYTHON $HASS $FLAGS $REDIRECT;" -} - -stop_daemon () -{ - kill `cat ${PID_FILE}` - wait_for_status 1 20 || kill -9 `cat ${PID_FILE}` - rm -f ${PID_FILE} -} - -daemon_status () -{ - if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then - return - fi - rm -f ${PID_FILE} - return 1 -} - -wait_for_status () -{ - counter=$2 - while [ ${counter} -gt 0 ]; do - daemon_status - [ $? -eq $1 ] && return - let counter=counter-1 - sleep 1 - done - return 1 -} - -case $1 in - start) - if daemon_status; then - echo ${DNAME} is already running - exit 0 - else - echo Starting ${DNAME} ... - start_daemon - exit $? - fi - ;; - stop) - if daemon_status; then - echo Stopping ${DNAME} ... - stop_daemon - exit $? - else - echo ${DNAME} is not running - exit 0 - fi - ;; - restart) - if daemon_status; then - echo Stopping ${DNAME} ... - stop_daemon - echo Starting ${DNAME} ... - start_daemon - exit $? - else - echo ${DNAME} is not running - echo Starting ${DNAME} ... - start_daemon - exit $? - fi - ;; - status) - if daemon_status; then - echo ${DNAME} is running - exit 0 - else - echo ${DNAME} is not running - exit 1 - fi - ;; - log) - echo ${LOG_FILE} - exit 0 - ;; - *) - exit 1 - ;; -esac - -``` - -Create links to python folders to make things easier in the future: - -```bash -# ln -s /volume1/@appstore/py3k/usr/local/bin/python3 python3 -# ln -s /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/homeassistant homeassistant -``` - -Set the owner and permissions on your config folder - -```bash -# chown -R homeassistant:users /volume1/homeassistant -# chmod -R 664 /volume1/homeassistant -``` - -Make the daemon file executable: - -```bash -# chmod 755 /volume1/homeassistant/hass-daemon -``` - -Update your firewall (if it is turned on the Synology device): - - - Go to your Synology control panel - - Go to security - - Go to firewall - - Go to Edit Rules - - Click Create - - Select Custom: Destination port "TCP" - - Type "8123" in port - - Click on OK - - Click on OK again - - -Copy your configuration.yaml file into the config folder -That's it... you're all set to go - -Here are some useful commands: - -- Start Home Assistant: - -```bash -$ sudo /volume1/homeassistant/hass-daemon start -``` - -- Stop Home Assistant: - -```bash -$ sudo /volume1/homeassistant/hass-daemon stop -``` - -- Restart Home Assistant: - -```bash -$ sudo /volume1/homeassistant/hass-daemon restart -``` - -- Upgrade Home Assistant:: - -```bash -$ /volume1/@appstore/py3k/usr/local/bin/python3 -m pip install --upgrade homeassistant -``` - diff --git a/source/_docs/installation/troubleshooting.markdown b/source/_docs/installation/troubleshooting.markdown deleted file mode 100644 index 29566bb36e..0000000000 --- a/source/_docs/installation/troubleshooting.markdown +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "Troubleshooting installation problems" -description: "Common installation problems and their solutions." -date: 2015-01-20 22:36 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/troubleshooting/ ---- - -It can happen that you run into trouble while installing Home Assistant. This page is here to help you solve the most common problems. - - -#### {% linkable_title pip3: command not found %} -This utility should have been installed as part of the Python installation. Check if Python is installed by running `python3 --version`. If it is not installed, [download it here](https://www.python.org/getit/). - -If you are able to successfully run `python3 --version` but not `pip3`, install Home Assistant by running the following command instead: - -```bash -$ python3 -m pip install homeassistant -``` - -On a Debian system, you can also install python3 by `sudo apt-get install python3`, and pip3 by `sudo apt-get install python3-pip`. - -#### {% linkable_title No module named pip %} -[Pip](https://pip.pypa.io/en/stable/) should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run `python3 -m pip --version` you can install `pip` by [downloading the installer](https://bootstrap.pypa.io/get-pip.py) and running it with Python 3: - -```bash -$ python3 get-pip.py -``` - -#### {% linkable_title libyaml is not found or a compiler error %} - -On a Debian system, install the Python 3 YAML library by `sudo apt-get install python3-yaml`. - -#### {% linkable_title distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both %} -This is a known issue if you're on a Mac using Homebrew to install Python. Please follow [these instructions](https://github.com/Homebrew/brew/blob/master/docs/Homebrew-and-Python.md#note-on-pip-install---user) to resolve it. - -#### {% linkable_title No access to the frontend %} -In newer Linux distributions (at least Fedora > 22/CentOS 7) the access to a host is very limited. This means that you can't access the Home Assistant frontend that is running on a host outside of the host machine. Windows and macOS machines may also have issues with this. - -To fix this you will need to open your machine's firewall for TCP traffic to port 8123. The method for doing this will vary depending on your operating system and the firewall you have installed. Below are some suggestions to try. Google is your friend here. - -- [Windows instructions](http://windows.microsoft.com/en-us/windows/open-port-windows-firewall#1TC=windows-7) -- [macOS instructions](https://support.apple.com/en-us/HT201642) - -For systems with **firewalld** (Fedora, CentOS/RHEL, etc.): - -```bash -$ sudo firewall-cmd --permanent --add-port=8123/tcp -$ sudo firewall-cmd --reload -``` - -For UFW systems (Ubuntu, Debian, Raspbian, etc.): - -```bash -$ sudo ufw allow 8123/tcp -``` - -For `iptables` systems (was the default for older distributions): - -```bash -$ iptables -I INPUT -p tcp --dport 8123 -j ACCEPT -$ iptables-save > /etc/network/iptables.rules # your rules may be saved elsewhere -``` - -#### {% linkable_title After upgrading, your browser login gets stuck at the "loading data" step %} -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" - -#### {% linkable_title Not initializing discovery because could not install dependency netdisco %} - -If you see `Not initializing discovery because could not install dependency netdisco==x.y.z` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of Home Assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system. diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown deleted file mode 100644 index a9884322b6..0000000000 --- a/source/_docs/installation/updating.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -layout: page -title: "Updating Home Assistant" -description: "Step to update Home Assistant." -date: 2016-05-04 10:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/updating/ ---- - -

    -The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [Hassbian](/docs/installation/hassbian/common-tasks/#update-home-assistant), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant). -

    - -Check what's new in the latest version and potentially impacts your system in [Home Assistant release notes](https://github.com/home-assistant/home-assistant/releases). It is good practice to review these release notes and pay close attention to the **Breaking Changes** that are listed there. If you haven't done an update for a while, you should also check previous release notes as they can also contain relevant **Breaking Changes**. **Breaking Changes** may require configuration updates for your components. If you missed this and Home Assistant refuses to start, check the log file in the [configuration](/docs/configuration/) directory, e.g., `.homeassistant/home-assistant.log`, for details about broken components. - -

    -To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/), [Hassbian](/docs/hassbian/installation/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv). -

    - -The default way to update Home Assistant to the latest release, when available, is: - -```bash -$ pip3 install --upgrade homeassistant -``` - -For a Docker container, simply pull the latest one: - -```bash -$ sudo docker pull homeassistant/home-assistant:latest -``` - -After updating, you must start/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. - -[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant. - -#### {% linkable_title Run a specific version %} - -In the event that a Home Assistant version doesn't play well with your hardware setup, you can downgrade to a previous release: - -```bash -$ pip3 install homeassistant==0.XX.X -``` - -#### {% linkable_title Run the development version %} - -If you want to stay on the bleeding-edge Home Assistant development branch, you can upgrade to `dev`. - -

    - The "dev" branch is likely to be unstable. Potential consequences include loss of data and instance corruption. -

    - -```bash -$ pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev -``` diff --git a/source/_docs/installation/vagrant.markdown b/source/_docs/installation/vagrant.markdown deleted file mode 100644 index 66b48d09cb..0000000000 --- a/source/_docs/installation/vagrant.markdown +++ /dev/null @@ -1,100 +0,0 @@ ---- -layout: page -title: "Installation on Vagrant" -description: "Instructions to run Home Assistant on a Vagrant VM." -date: 2016-05-28 10:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-vagrant/ ---- - -A `Vagrantfile` is available into `virtualization/vagrant` folder for quickly spinning up a Linux virtual machine running Home Assistant. This can be beneficial for those who want to experiment with Home Assistant and/or developers willing to easily test local changes and run test suite against them. In the same `virtualization/vagrant` folder there's also a `provision.sh` shell script which provides an easy way to interact with the Home Assistant instance running within the Vagrant VM. - -

    -Vagrant is intended for testing/development only. It is NOT recommended for permanent installations. -

    - -## {% linkable_title Install Vagrant %} - -You must have [Vagrant](https://www.vagrantup.com/downloads.html) and [Virtualbox](https://www.virtualbox.org/wiki/Downloads) installed on your workstation. Vagrant and Virtualbox support all the main platforms, including Windows, MacOS and Linux. - -## {% linkable_title Get Home Assistant source code %} - -Download the Home Assistant source code by either downloading the .zip file from [GitHub releases page](https://github.com/home-assistant/home-assistant/releases) or by using [Git](https://git-scm.com/) - -```bash -$ git clone https://github.com/home-assistant/home-assistant.git -$ cd home-assistant/virtualization/vagrant -``` - -

    -The following instructions will assume you changed your working directory to be `home-assistant/virtualization/vagrant`. This is mandatory because Vagrant will look for information about the running VM inside that folder and won't work otherwise -

    - -

    -When using Vagrant on Windows, change git's `auto.crlf` to input before cloning the Home Assistant repository. With input setting git won't automatically change line endings from Unix LF to Windows CRLF. Shell scripts executed during provision won't work with Windows line endings. -

    - -```bash -$ git config --global core.autocrlf input -``` - -## {% linkable_title Create the Vagrant VM and start Home Assistant %} - -```bash -$ ./provision.sh setup -``` - -This will download and start a virtual machine using Virtualbox, which will internally setup the development environment necessary to start Home Assistant. The whole process might take up to 30 minutes to complete, depending on Internet connection speed and workstation resources. After the VM has started successfully, the Home Assistant frontend will be accessible locally from your browser at [http://localhost:8123](http://localhost:8123) - -## {% linkable_title Stopping Vagrant %} - -To shutdown the Vagrant host: - -```bash -$ ./provision.sh stop -``` - -To start it again: - -```bash -$ ./provision.sh start -``` - -## {% linkable_title Restarting Home Assistant process to test changes %} - -The root `home-assistant` directory on your workstation will be mirrored with `/home-assistant` inside the VM. In `virtualization/vagrant` there's also a `config` folder that you can use to drop configuration files (Check the [Configuration section](/docs/configuration/) in the docmentation for more information about how to configure Home Assistant). - -Any changes made to the local directory on your workstation will be available from the Vagrant host, so to apply your changes to the Home Assistant process, just restart it using the provided `provision.sh` wrapper script: - -```bash -$ ./provision.sh restart -``` - -

    -This command will only restart the Home Assistant process inside the Vagrant VM, it will not reboot the virtual machine. If that's what you want, the right command is vagrant reload -

    - -## {% linkable_title Run test suite (Tox) %} - -To run tests against the local version of Home Assistant code: - -```bash -$ ./provision.sh tests -``` - -## {% linkable_title Cleanup %} - -To completely remove the VM - -```bash -$ ./provision.sh destroy -``` - -To completely remove the VM **and** setup a fresh new environment: - -```bash -$ ./provision.sh recreate -``` diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown deleted file mode 100644 index 7c56772af7..0000000000 --- a/source/_docs/installation/virtualenv.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Installation in Python virtual environment" -description: "How to install Home Assistant in a Python virtual environment." -date: 2016-4-16 16:40 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/installation-virtualenv/ ---- - -If you already have Python 3.5.3 or later installed, you can easily give Home Assistant a spin. - -It's recommended when installing Python packages that you use a [virtual environment](https://docs.python.org/3.5/library/venv.html#module-venv). This will make sure that your Python installation and Home Assistant installation won't impact one another. The following steps will work on most unix like systems. - -_(If you're on a Debian based system, you will need to install Python virtual environment support using `apt-get install python3-pip python3-venv`.)_ - -

    -It is recommended to use the [advanced guide](/docs/installation/raspberry-pi/) which allows for the installation to run as a `homeassistant` user. The steps below may be shorter but some users find difficulty when applying updates and may run into issues. -

    - -### {% linkable_title Install %} - - 1. Create a virtual environment in your current directory: - ``` - $ python3 -m venv homeassistant - ``` - 2. Open the virtual environment: - ``` - $ cd homeassistant - ``` - 3. Activate the virtual environment: - ``` - $ source bin/activate - ``` - 4. Install wheel: - ``` - $ python3 -m pip install wheel - ``` - 5. Install Home Assistant: - ``` - $ python3 -m pip install homeassistant - ``` - 6. Configure it to [autostart](/docs/autostart/) - 7. Or run Home Assistant manually: - ``` - $ hass --open-ui - ``` - -### {% linkable_title Upgrade %} - - 1. Stop Home Assistant - - 2. Open the directory where the virtual environment is located: - ``` - $ cd homeassistant - ``` - 3. Activate the virtual environment: - ``` - $ source bin/activate - ``` - 4. Upgrade Home Assistant: - ``` - $ python3 -m pip install --upgrade homeassistant - ``` - 5. Start Home Assistant - -### {% linkable_title Notes %} - -- In the future, if you want to start Home Assistant manually again, follow step 2, 3 and 5. -- It's recommended to run Home Assistant as a dedicated user. - -

    -Looking for more advanced guides? Check our [Rasbian guide](/docs/installation/raspberry-pi/) or the [other installation guides](/docs/installation/). -

    - -### {% linkable_title After upgrading Python %} - -If you've upgraded Python (for example, you were running 3.5.2 and now you've installed 3.5.4) then you'll need to build a new virtual environment. Simply rename your existing virtual environment directory: - -```bash -$ mv homeassistant homeassistant.old -``` -Then follow the [Install](/docs/installation/virtualenv/#install) steps again, being sure to use the newly installed version of Python. diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown deleted file mode 100644 index 1c9ced30b0..0000000000 --- a/source/_docs/installation/windows.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Installation on a Windows system" -description: "Instructions to install Home Assistant on a Microsoft Windows system." -date: 2017-02-23 11:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python (the latest version of Python 3.6 is recommended) for [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) and follow the instructions of the installer. - -

    -There may be alpha or beta releases of Python listed on that download page (marked by the letters `a` or `b` in the version number. Do not use these versions. -

    - -Start - -```bash -C:\...\> pip3 install homeassistant -C:\...\> py -m homeassistant --open-ui -``` - -For autostarting Home Assistant please refer to this [guide](https://community.home-assistant.io/t/autostart-on-windows/3504). - -Check this [video](https://www.youtube.com/watch?v=X27eVvuqwnY) for the installation on Windows 10. - -

    -The Microsoft Windows platform is not a primary target to install Home Assistant. Also, not all tools and third-party modules will work. -

    diff --git a/source/_docs/mqtt.markdown b/source/_docs/mqtt.markdown deleted file mode 100644 index 072561f991..0000000000 --- a/source/_docs/mqtt.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -title: "MQTT" -description: "Details about the MQTT support of Home Assistant." -date: 2017-02-15 08:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. - -To integrate MQTT into Home Assistant, add the following section to your `configuration.yaml` file. Keep in mind that the minimal setup will run with [an embedded MQTT broker](/docs/mqtt/broker#embedded-broker): - -```yaml -# Example configuration.yaml entry -mqtt: -``` - -For other setup methods, please refer to the [MQTT broker](/docs/mqtt/broker) documentation. - -## {% linkable_title Additional features %} - -- [Certificate](/docs/mqtt/certificate/) -- [Discovery](/docs/mqtt/discovery/) -- [Publish service](/docs/mqtt/service/) -- [Birth and last will messages](/docs/mqtt/birth_will/) -- [Testing your setup](/docs/mqtt/testing/) -- [Logging](/docs/mqtt/logging/) -- [Processing JSON](/docs/mqtt/processing_json/) - -See the [MQTT example component](/cookbook/python_component_mqtt_basic/) how to integrate your own component. diff --git a/source/_docs/mqtt/birth_will.markdown b/source/_docs/mqtt/birth_will.markdown deleted file mode 100644 index 8ba1aa593a..0000000000 --- a/source/_docs/mqtt/birth_will.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "MQTT Birth and Last will" -description: "Instructions on how to setup MQTT birth and last will messages within Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -MQTT supports so-called Birth and Last Will and Testament (LWT) messages. The former is used to send a message after the service has started, and the latter is used to notify other clients about an ungracefully disconnected client. - -To integrate MQTT Birth and Last Will messages into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mqtt: - birth_message: - topic: 'hass/status' - payload: 'online' - will_message: - topic: 'hass/status' - payload: 'offline' -``` - -Configuration variables: - -- **birth_message** (*Optional*): - - **topic** (*Required*): The MQTT topic to publish the message. - - **payload** (*Required*): The message content. - - **qos** (*Optional*): The maximum QoS level of the topic. Default is 0. - - **retain** (*Optional*): If the published message should have the retain flag on or not. Defaults to `True`. -- **will_message** (*Optional*): - - **topic** (*Required*): The MQTT topic to publish the message. - - **payload** (*Required*): The message content. - - **qos** (*Optional*): The maximum QoS level of the topic. Default is 0. - - **retain** (*Optional*): If the published message should have the retain flag on or not. Defaults to `True`. diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown deleted file mode 100644 index 87406a5873..0000000000 --- a/source/_docs/mqtt/broker.markdown +++ /dev/null @@ -1,168 +0,0 @@ ---- -layout: page -title: "MQTT Brokers" -description: "Instructions on how to setup MQTT brokers for Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -The MQTT component needs you to run an MQTT broker for Home Assistant to connect to. There are four options, each with various degrees of ease of setup and privacy. - -### {% linkable_title Embedded broker %} - -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 | - - -```yaml -# Example configuration.yaml entry -mqtt: -``` - -### {% 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. - -```yaml -# Example configuration.yaml entry -mqtt: - embedded: - # Your HBMQTT config here. Example at: - # http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration -``` - -### {% linkable_title Run your own %} - -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 -``` - -{% 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'`. Make sure to put quotes around the value. 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. - -If you get this error `AttributeError: module 'ssl' has no attribute 'PROTOCOL_TLS'` then you need to set `tls_version: '1.2'`. -

    - -

    -If you are running a Mosquitto instance on the same server as Home Assistant then you must ensure that the Mosquitto service starts before Home Assistant. For a Linux instance running Systemd (Raspberry Pi, Debian, Ubuntu and others) then you should edit the file /etc/systemd/system/home-assistant@homeassistant.service as root (e.g., sudo nano /etc/systemd/system/home-assistant@homeassistant.service) and add the mosquitto service: -``` -[Unit] -Description=Home Assistant -After=network.target mosquitto.service -``` -

    - -

    -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 %} - -The Mosquitto project runs a [public broker](http://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. - -```yaml -mqtt: - broker: test.mosquitto.org - port: 1883 or 8883 - - # Optional, replace port 1883 with following if you want encryption - # (doesn't really matter because broker is public) - port: 8883 - # Download certificate from http://test.mosquitto.org/ssl/mosquitto.org.crt - certificate: /home/paulus/downloads/mosquitto.org.crt -``` - -### {% linkable_title CloudMQTT %} - -[CloudMQTT](https://www.cloudmqtt.com) is a hosted private MQTT instance that is free for up to 10 connected devices. This is enough to get started with for example [OwnTracks](/components/device_tracker.owntracks/) and give you a taste of what is possible. - -

    -Home Assistant is not affiliated with CloudMQTT nor will receive any kickbacks. -

    - - 1. [Create an account](https://customer.cloudmqtt.com/login) (no payment details needed) - 2. [Create a new CloudMQTT instance](https://customer.cloudmqtt.com/subscription/create) - (Cute Cat is the free plan) - 3. From the control panel, click on the _Details_ button. - 4. Create unique users for Home Assistant and each phone to connect
    (CloudMQTT does not allow two connections from the same user) - 1. Under manage users, fill in username, password and click add - 2. Under ACLs, select user, topic `#`, check 'read access' and 'write access' - 5. Copy the instance info to your configuration.yaml: - -```yaml -mqtt: - broker: CLOUTMQTT_SERVER - port: CLOUDMQTT_PORT - username: CLOUDMQTT_USER - password: CLOUDMQTT_PASSWORD -``` - -

    -Home Assistant will automatically load the correct certificate if you connect to an encrypted channel of CloudMQTT (port range 20000-30000). -

    - diff --git a/source/_docs/mqtt/certificate.markdown b/source/_docs/mqtt/certificate.markdown deleted file mode 100644 index 252e0a5160..0000000000 --- a/source/_docs/mqtt/certificate.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "MQTT Certificate" -description: "Instructions on how to setup MQTT with a certificate in Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -Using certificates will give you an additional layer of security for your MQTT communication. - -To integrate MQTT with certificate into Home Assistant, add the following section to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mqtt: - certificate: /home/paulus/dev/addtrustexternalcaroot.crt -``` - -Configuration variables: - -- **certificate** (*Optional*): 'auto' or the certificate authority certificate file that is to be treated as trusted by this client. 'auto' uses the bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem` -- **client_key** (*Optional*): Client key, eg. `/home/user/owntracks/cookie.key`. -- **client_cert** (*Optional*): Client certificate, eg. `/home/user/owntracks/cookie.crt`. - diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown deleted file mode 100644 index 27b588f015..0000000000 --- a/source/_docs/mqtt/discovery.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: page -title: "MQTT Discovery" -description: "Instructions on how to setup MQTT Discovery within Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -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/) -- [Cameras](/components/camera.mqtt/) -- [Covers](/components/cover.mqtt/) -- [Fans](/components/fan.mqtt/) -- [Lights](/components/light.mqtt/) -- [Sensors](/components/sensor.mqtt/) -- [Switches](/components/switch.mqtt/) - - -To enable MQTT discovery, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mqtt: - discovery: true - discovery_prefix: homeassistant -``` -Configuration variables: - -- **discovery** (*Optional*): If the MQTT discovery should be enabled or not. Defaults to `False`. -- **discovery_prefix** (*Optional*): The prefix for the discovery topic. Defaults to `homeassistant`. - -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 is only to allow for separate topics for each device and is not used for the `entity_id`. -- `<>`: 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 Support by third-party tools %} - -The following firmware for ESP8266, ESP32 and Sonoff unit has built-in support for MQTT discovery: - -- [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) (starting with 5.11.1e) -- [esphomeyaml](https://esphomelib.com/esphomeyaml/index.html) -- [ESPurna](https://github.com/xoseperez/espurna) -- [Arilux AL-LC0X LED controllers](https://github.com/mertenats/Arilux_AL-LC0X) - -### {% 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. - -- Configuration topic: `homeassistant/binary_sensor/garden/config` -- State topic: `homeassistant/binary_sensor/garden/state` -- Payload: `{"name": "garden", "device_class": "motion"}` - -To create a new sensor manually. For more details please refer to the [MQTT testing section](/docs/mqtt/testing/). - -```bash -$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion"}' -``` -Update the state. - -```bash -$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON -``` - -Setting up a switch is similar but requires a `command_topic` as mentionend in the [MQTT switch documentation](/components/switch.mqtt/). - -- Configuration topic: `homeassistant/switch/irrigation/config` -- State topic: `homeassistant/switch/irrigation/state` -- Payload: `{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set"}` - -```bash -$ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \ - -m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set"}' -``` -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/mqtt/logging.markdown b/source/_docs/mqtt/logging.markdown deleted file mode 100644 index d4deaf4f48..0000000000 --- a/source/_docs/mqtt/logging.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "MQTT Logging" -description: "Instructions on how to setup MQTT Logging within Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -The [logger](/components/logger/) component allow the logging of received MQTT messages. - -```yaml -# Example configuration.yaml entry -logger: - default: warning - logs: - homeassistant.components.mqtt: debug -``` - diff --git a/source/_docs/mqtt/processing_json.markdown b/source/_docs/mqtt/processing_json.markdown deleted file mode 100644 index 8afb951f8e..0000000000 --- a/source/_docs/mqtt/processing_json.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Processing JSON" -description: "Instructions on how to process the MQTT payload." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -The MQTT [switch](/components/switch.mqtt/) and [sensor](/components/sensor.mqtt/) platforms support processing JSON over MQTT messages and parsing them using JSONPath. JSONPath allows you to specify where in the JSON the value resides that you want to use. The following examples will always return the value `100`. - -| JSONPath query | JSON | -| -------------- | ---- | -| `somekey` | `{ 'somekey': 100 }` -| `somekey[0]` | `{ 'somekey': [100] }` -| `somekey[0].value` | `{ 'somekey': [ { value: 100 } ] }` - -To use this, add the following key to your `configuration.yaml`: - -```yaml -switch: - platform: mqtt - state_format: 'json:somekey[0].value' -``` -It is also possible to extract JSON values by using a value template: - -```yaml -switch: - platform: mqtt - value_template: '{% raw %}{{ value_json.somekey[0].value }}{% endraw %}' -``` - -More information about the full JSONPath syntax can be found [in their documentation](https://github.com/kennknowles/python-jsonpath-rw#jsonpath-syntax). diff --git a/source/_docs/mqtt/service.markdown b/source/_docs/mqtt/service.markdown deleted file mode 100644 index 941d79e7b7..0000000000 --- a/source/_docs/mqtt/service.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: page -title: "MQTT Publish service" -description: "Instructions on how to setup the MQTT Publish service within Home Assistant." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -The MQTT component will register the service `publish` which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use `payload` to hard-code a payload or use `payload_template` to specify a [template](/topics/templating/) that will be rendered to generate the payload. - -```json -{ - "topic": "home-assistant/light/1/command", - "payload": "on" -} -``` - -```json -{ - "topic": "home-assistant/light/1/state", - "payload_template": "{% raw %}{{ states('device_tracker.paulus') }}{% endraw %}" -} -``` - diff --git a/source/_docs/mqtt/testing.markdown b/source/_docs/mqtt/testing.markdown deleted file mode 100644 index e6c87bdbfc..0000000000 --- a/source/_docs/mqtt/testing.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: page -title: "MQTT Testing" -description: "Instructions on how to test your MQTT setup." -date: 2015-08-07 18:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: mqtt.png ---- - -The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. As an alternative have a look at [hbmqtt_pub](http://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_pub.html) and [hbmqtt_sub](http://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_sub.html) which are provided by HBMQTT. For sending test messages to a broker running on localhost check the example below: - -```bash -$ mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" -``` - -If you are using the embedded MQTT broker, the command looks a little different because you need to add the MQTT protocol version. - -```bash -$ mosquitto_pub -V mqttv311 -t "hello" -m world -``` - -or if you are using a API password: - -```bash -$ mosquitto_pub -V mqttv311 -u homeassistant -P -t "hello" -m world -``` - -Another way to send MQTT messages by hand is to use the "Developer Tools" in the Frontend. Choose "Call Service" and then `mqtt/mqtt_send` under "Available Services". Enter something similar to the example below into the "Service Data" field. - -```json -{ - "topic":"home-assistant/switch/1/on", - "payload":"Switch is ON" -} -``` - -The message should appear on the bus: - -```bash -... [homeassistant] Bus:Handling -``` - -For reading all messages sent on the topic `home-assistant` to a broker running on localhost: - -```bash -$ mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#" -``` - -For the embedded MQTT broker the command looks like: - -```bash -$ mosquitto_sub -v -V mqttv311 -t "#" -``` - -Add the username `homeassistant` and your API password if needed. - diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown deleted file mode 100644 index ef490f4de2..0000000000 --- a/source/_docs/scripts.markdown +++ /dev/null @@ -1,185 +0,0 @@ ---- -layout: page -title: "Script Syntax" -description: "Documentation for the Home Assistant Script Syntax." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/scripts/ ---- - -Scripts are a sequence of actions that Home Assistant will execute. Scripts are available as an entity through the standalone [Script component] but can also be embedded in [automations] and [Alexa/Amazon Echo] configurations. - -The script syntax basic structure is a list of key/value maps that contain actions. If a script contains only 1 action, the wrapping list can be omitted. - -```yaml -# Example script component containing script syntax -script: - example_script: - sequence: - # This is written using the Script Syntax - - service: light.turn_on - data: - entity_id: light.ceiling - - service: notify.notify - data: - message: 'Turned on the ceiling light!' -``` - -### {% linkable_title Call a Service %} - -The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the [service calls page]. - -```yaml -- alias: Bedroom lights on - service: light.turn_on - data: - entity_id: group.bedroom - brightness: 100 -``` - -### {% linkable_title Test a Condition %} - -While executing a script you can add a condition to stop further execution. When a condition does not return `true`, the script will finish. There are many different conditions which are documented at the [conditions page]. - -```yaml -- condition: state - entity_id: device_tracker.paulus - state: 'home' -``` - -### {% linkable_title Delay %} - -Delays are useful for temporarily suspending your script and start it at a later moment. We support different syntaxes for a delay as shown below. - -```yaml -# Waits 1 hour -- delay: '01:00' -``` - -```yaml -# Waits 1 minute, 30 seconds -- delay: '00:01:30' -``` - -```yaml -# Waits 1 minute -- delay: - # supports milliseconds, seconds, minutes, hours, days - minutes: 1 -``` - -{% raw %} -```yaml -# Waits however many minutes input_number.minute_delay is set to -# Valid formats include HH:MM and HH:MM:SS -- delay: "00:{{ states('input_number.minute_delay')|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](/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`. - -{% raw %} -```yaml -# wait until media player have stop the playing -- wait_template: "{{ is_state('media_player.floor', 'stop') }}" -``` -{% endraw %} - -{% raw %} -```yaml -# wait until a valve is < 10 or abort after 1 minute. -- wait_template: "{{ states.climate.kitchen.attributes.valve|int < 10 }}" - timeout: '00:01:00' -``` -{% endraw %} - -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. - -```yaml -- event: LOGBOOK_ENTRY - event_data: - name: Paulus - message: is waking up - entity_id: device_tracker.paulus - domain: light -``` - -You can also use event_data_template to fire an event with custom data. This could be used to pass data to another script awaiting -an event trigger. - -{% raw %} -```yaml -- event: MY_EVENT - event_data_template: - name: myEvent - customData: "{{ myCustomVariable }}" -``` -{% endraw %} - -### {% linkable_title Raise and Consume Custom Events %} - -The following automation shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The action part could be inside a script or an automation. - -{% raw %} -```yaml -- alias: Fire Event - trigger: - - platform: state - entity_id: switch.kitchen - to: 'on' - action: - - event: event_light_state_changed - event_data: - state: 'on' -``` -{% endraw %} - -The following automation shows how to capture the custom event `event_light_state_changed`, and retrieve corresponding `entity_id` that was passed as the event data. - -{% raw %} -```yaml -- alias: Capture Event - trigger: - - platform: event - event_type: event_light_state_changed - action: - - service: notify.notify - data_template: - message: "kitchen light is turned {{ trigger.event.data.state }}" -``` -{% endraw %} - -[Script component]: /components/script/ -[automations]: /getting-started/automation-action/ -[Alexa/Amazon Echo]: /components/alexa/ -[service calls page]: /getting-started/scripts-service-calls/ -[conditions page]: /getting-started/scripts-conditions/ diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown deleted file mode 100644 index 5ca5b9c756..0000000000 --- a/source/_docs/scripts/conditions.markdown +++ /dev/null @@ -1,221 +0,0 @@ ---- -layout: page -title: "Conditions" -description: "Documentation about all available conditions." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/scripts-conditions/ ---- - -Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off. - -### {% linkable_title AND condition %} - -Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid. - -```yaml -condition: - condition: and - conditions: - - condition: state - entity_id: 'device_tracker.paulus' - state: 'home' - - condition: numeric_state - entity_id: 'sensor.temperature' - below: '20' -``` - -If you do not want to combine AND and OR conditions, you can also just list them sequentially, by default all conditions have to be true. -The following configuration works the same as the one listed above: - -```yaml -condition: - - condition: state - entity_id: 'device_tracker.paulus' - state: 'home' - - condition: numeric_state - entity_id: 'sensor.temperature' - below: '20' -``` - -Currently you need to format your conditions like this to be able to edit them using the [automations editor](/docs/automation/editor/). - -### {% linkable_title OR condition %} - -Test multiple conditions in 1 condition statement. Passes if any embedded condition is valid. - -```yaml -condition: - condition: or - conditions: - - condition: state - entity_id: 'device_tracker.paulus' - state: 'home' - - condition: numeric_state - entity_id: 'sensor.temperature' - below: '20' -``` - -### {% linkable_title MIXED AND and OR conditions %} - -Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid. -This allows you to mix several AND and OR conditions together. - -```yaml -condition: - condition: and - conditions: - - condition: state - entity_id: 'device_tracker.paulus' - state: 'home' - - condition: or - conditions: - - condition: state - entity_id: sensor.weather_precip - state: 'rain' - - condition: numeric_state - entity_id: 'sensor.temperature' - below: '20' -``` - -### {% linkable_title Numeric state condition %} - -This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches the thresholds. - -If both `below` and `above` are specified, both tests have to pass. - -You can optionally use a `value_template` to process the value of the state before testing it. - -```yaml -condition: - condition: numeric_state - entity_id: sensor.temperature - above: 17 - below: 25 - # If your sensor value needs to be adjusted - value_template: {% raw %}{{ float(state.state) + 2 }}{% endraw %} -``` - -### {% linkable_title State condition %} - -Tests if an entity is a specified state. - -```yaml -condition: - condition: state - entity_id: device_tracker.paulus - state: not_home - # optional: trigger only if state was this for last X time. - for: - hours: 1 - minutes: 10 - seconds: 5 -``` - -### {% linkable_title Sun condition %} - -The sun condition can test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger]. - -[sun_trigger]: /docs/automation/trigger/#sun-trigger - -```yaml -condition: - condition: sun - after: sunset - # Optional offset value - in this case it must from -1 hours relative to sunset, or after - after_offset: "-1:00:00" -``` - -```yaml -condition: - condition: or # 'when dark' condition: either after sunset or before sunrise - conditions: - - condition: sun - after: sunset - - condition: sun - before: sunrise -``` - -Here is a truth table to clarify the parameters with and without offset: - -| command | night | at sunrise | daytime | at sunset | -| ---------------------------------- | ------------ |:-----------:| ------- |:----------:| -| `after: sunset` | True | ⇒ | False | ⇒ | -| + `after_offset: "01:00:00"` | True | ⇒ | False | **+1h** | -| + `after_offset: "-01:00:00"` | True | ⇒ | False | **-1h** | -| `before: sunset` | False | ⇒ | True | ⇒ | -| + `before_offset: "01:00:00"` | False | ⇒ | True | **+1h** | -| + `before_offset: "-01:00:00"` | False | ⇒ | True | **-1h** | -| `after: sunrise` | False | ⇒ | True | ⇒ | -| + `after_offset: "01:00:00"` | False | **+1h** | True | ⇒ | -| + `after_offset: "-01:00:00"` | False | **-1h** | True | ⇒ | -| `before: sunrise` | True | ⇒ | False | ⇒ | -| + `before_offset: "01:00:00"` | True | **+1h** | False | ⇒ | -| + `before_offset: "-01:00:00"` | True | **-1h** | False | ⇒ | - -### {% linkable_title Template condition %} - -The template condition will test if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. - -```yaml -condition: - condition: template - value_template: '{% raw %}{{ states.device_tracker.iphone.attributes.battery > 50 }}{% endraw %}' -``` - -Within an automation, template conditions also have access to the `trigger` variable as [described here][automation-templating]. - -[template]: /topics/templating/ -[automation-templating]: /getting-started/automation-templating/ - -### {% linkable_title Time condition %} - -The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week - -```yaml -condition: - condition: time - # At least one of the following is required. - after: '15:00:00' - before: '02:00:00' - weekday: - - mon - - wed - - fri -``` - -Valid values for `weekday` are `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. -Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am. - -### {% linkable_title Zone condition %} - -Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/). - -```yaml -condition: - condition: zone - entity_id: device_tracker.paulus - zone: zone.home -``` - -### {% linkable_title Examples %} - -```yaml - condition: - - condition: numeric_state - entity_id: sun.sun - value_template: '{{ state.attributes.elevation }}' - below: 1 - - condition: state - entity_id: light.living_room - state: 'off' - - condition: time - before: '23:00:00' - after: '14:00:00' - - condition: state - entity_id: script.light_turned_off_5min - state: 'off' -``` diff --git a/source/_docs/scripts/editor.markdown b/source/_docs/scripts/editor.markdown deleted file mode 100644 index a69ae29692..0000000000 --- a/source/_docs/scripts/editor.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -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 deleted file mode 100644 index ab73aad529..0000000000 --- a/source/_docs/scripts/service-calls.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: page -title: "Service Calls" -description: "Instructions on how to call services in Home Assistant." -date: 2016-03-12 12:00 -0800 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/scripts-service-calls/ ---- - -Various components allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo. - -The configuration options to call a config are the same between all components and are described on this page. - -Examples on this page will be given as part of an automation component configuration but different approaches can be used for other components too. - -

    -Use the service developer tool in the frontend to discover available services. -

    - -### {% linkable_title The basics %} - -Call the service `homeassistant.turn_on` on the entity `group.living_room`. This will turn all members of `group.living_room` on. You can also omit `entity_id` and it will turn on all possible entities. - -```yaml -service: homeassistant.turn_on -entity_id: group.living_room -``` - -### {% linkable_title Passing data to the service call %} - -You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness. - -```yaml -service: light.turn_on -entity_id: group.living_room -data: - brightness: 120 - rgb_color: [255, 0, 0] -``` - -### {% linkable_title Use templates to decide which service to call %} - -You can use [templating] support to dynamically choose which service to call. For example, you can call a certain service based on if a light is on. - -```yaml -service_template: > - {% raw %}{% if states.sensor.temperature.state | float > 15 %} - switch.turn_on - {% else %} - switch.turn_off - {% endif %}{% endraw %} -entity_id: switch.ac -``` - -### {% linkable_title Using the Services Developer Tool %} - -You can use the Services Developer Tool to test data to pass in a service call. -For example, you may test turning on or off a 'group' (See [groups] for more info) - -To turn a group on or off, pass the following info: -Domain: `homeassistant` -Service: `turn_on` -Service Data: `{ "entity_id": "group.kitchen" }` - - -### {% linkable_title Use templates to determine the attributes %} - -Templates can also be used for the data that you pass to the service call. - -```yaml -service: thermostat.set_temperature -data_template: - entity_id: > - {% raw %}{% if is_state('device_tracker.paulus', 'home') %} - thermostat.upstairs - {% else %} - thermostat.downstairs - {% endif %}{% endraw %} - temperature: {% raw %}{{ 22 - distance(states.device_tracker.paulus) }}{% endraw %} -``` - -[templating]: /topics/templating/ diff --git a/source/_docs/tools.markdown b/source/_docs/tools.markdown deleted file mode 100644 index 5bdf3eb0dd..0000000000 --- a/source/_docs/tools.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Tools" -description: "Description of tools which helps when using Home Assistant." -release_date: 2016-11-13 15:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Home Assistant ships a couple of helpers for the command-line and the frontend which simplify common tasks, are helping with migrations, and ensure that Home Assistant runs properly. - diff --git a/source/_docs/tools/benchmark.markdown b/source/_docs/tools/benchmark.markdown deleted file mode 100644 index 04ac884068..0000000000 --- a/source/_docs/tools/benchmark.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "benchmark" -description: "Script to perform benchmarking of Home Assistant" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -For testing the performance of Home Assistant the Benchmark script runs until you exit using Control+C. - -Firing and handling of a million events. - -```bash -$ hass --script benchmark async_million_events -``` - diff --git a/source/_docs/tools/check_config.markdown b/source/_docs/tools/check_config.markdown deleted file mode 100644 index b09ea5b17c..0000000000 --- a/source/_docs/tools/check_config.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: page -title: "check_config" -description: "Script to perform a check of the current configuration" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Test any changes to your `configuration.yaml` file before launching Home Assistant. This script allows you to test changes without the need to restart Home Assistant. - -```bash -$ hass --script check_config -``` - -The script has further options like checking configuration files which are not located in the default directory or showing your secrets for debugging. - -```bash -$ hass --script check_config -h -usage: hass [-h] [--script {check_config}] [-c CONFIG] [-i [INFO]] [-f] [-s] - -Check Home Assistant configuration. - -optional arguments: - -h, --help show this help message and exit - --script {check_config} - -c CONFIG, --config CONFIG - Directory that contains the Home Assistant - configuration - -i [INFO], --info [INFO] - Show a portion of the config - -f, --files Show used configuration files - -s, --secrets Show secret information -``` - diff --git a/source/_docs/tools/credstash.markdown b/source/_docs/tools/credstash.markdown deleted file mode 100644 index 023ee23998..0000000000 --- a/source/_docs/tools/credstash.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: page -title: "credstash" -description: "Script to store credentials securely in AWS" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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/tools/db_migrator.markdown b/source/_docs/tools/db_migrator.markdown deleted file mode 100644 index 68127935ae..0000000000 --- a/source/_docs/tools/db_migrator.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: page -title: "db_migrator" -description: "Script to migrate data in an InfluxDB database" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -

    -This script was only use for 0.36 release cycle! -

    - -Starting with 0.36 the [InfluxDB](omponents/influxdb/) component has a new schema to store values in the InfluxDB databases. - -- There will no longer be any tags/fields named `time`. -- All numeric fields (int/float/bool) will be stored as float inside InfluxDB database. -- All string fields corresponding to state attributes will be renamed as `FIELDNAME_str`, where `FIELDNAME` is the state attribute, to avoid type conflicts. -- All string fields corresponding to a state will be renamed as `state` (former value). -- Fields named `value` will always be stored as float. -- Fields named `state` will always be stored as string. - -## {% linkable_title Migration script %} - -If you need to migrate your database, you may require to run the `influxdb_migrator` script. Run the script after upgrade to 0.36 but before the first regular start of `hass` version 0.36. - -These are the steps the script will perform: - -1. Create a new database (called `DBNAME__old`) to store old data. -2. Copy data from `DBNAME` database to `DBNAME__old` database. -3. Empty `DBNAME` database (using `drop` then `create`). `DBNAME` database is now considered as the new database. -4. For each measurement of `DBNAME__old` database: - 1. Read all points from the current measurement (in groups of 1000 points by default) and convert them. - 2. Send group of points to `DBNAME` database. -5. Delete the `DBNAME__old` database if needed. - -Example to run the script: - -```bash -$ hass --script influxdb_migrator \ - -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - -d INFLUXDB_DB_NAME -``` -Script arguments: - -``` -required arguments: - -d dbname, --dbname dbname InfluxDB database name - -optional arguments: - -h, --help show this help message and exit - -H host, --host host InfluxDB host address - -P port, --port port InfluxDB host port - -u username, --username username - InfluxDB username - -p password, --password password - InfluxDB password - -s step, --step step How many points to migrate at the same time - -o override_measurement, --override-measurement override_measurement - Store all your points in the same measurement - -D, --delete Delete old database -``` - -- If you run the script with only the `-h` option, you will get a help printout with a short explanation of the different options. -- The host option defaults to `'127.0.0.1'`. -- The port option defaults to `8086`. -- You should be able to omit username and password if InfluxDB authentication is disabled, which it is by default. -- The step option defaults to `1000`. - diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown deleted file mode 100644 index 99ce3e7cf7..0000000000 --- a/source/_docs/tools/dev-tools.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -layout: page -title: "Development Tools" -description: "Description of the Developer Tools." -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The frontend contains a section called "Developer Tools". - -

    - -Screenshot of Home Assistant's Developer Tools. -

    - -| Section | Icon | Description | -| ------- |------| ----- | -| Services | service developer tool icon | Calls services from components | -| States | service developer tool icon | Sets the representation of an entity | -| Events | service developer tool icon | Fires events | -| Templates | service developer tool icon | Renders templates | -| Info | service developer tool icon | Details about Home Assistant | - -## What can I do with Developer Tools? -The Developer Tools is meant for **all** (not just for the developers) to quickly try out things - like calling services, update states, raising events, and publish messages in mqtt…etc.). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the section in detail. - -{% linkable_title Services %} - -This section is used to call Services that are available in the ServiceRegistry. - -The list of services in the “Service” drop down are automatically populated based on the components that are found in the configuration, automation and script files. If a desired service does not exist, it means either the component is not configured properly or not defined in the configuration, automation or script files. - -When a Service is selected, and if that service requires an `entity_id` to be passed, the “Entity” drop down will automatically be populated with corresponding entities. - -A Service may also require additional input to be passed. It is commonly referred to as “service data”. The service data is only accepted in the JSON format, and it may be optional depending on the service. - -When an entity is selected from the Entity drop down, it automatically populates service data with the corresponding `entity_id`. The service data JSON can then be modified to pass additional \[optional\] parameters. The following is an illustration on how to call a `light.turn_on` service. - -To turn on a light bulb, use the following steps: -1. Select `light.turn_on` from the Service drop down -2. Select the entity (typically the light bulb) from the Entity drop down (if no entity_id is selected, it turns on ALL lights) -3. If an entity is selected, the service data is populated with basic JSON that will be passed to the service. An additional data can also be passed by updating the JSON as below. - -```json -{ - "entity_id": "light.bedroom", - "brightness": 255, - "rgb_color": [255, 0, 0] -} -``` -{% linkable_title States %} - -This section shows all the available entities, their corresponding state and the attribute values. The state and the attribute information is what Home Assistant sees at run time. To update the entity with a new state, or a new attribute value, click on the entity, scroll to the top, and modify the values, and click on “SET STATE” button. - -Note that this is the state representation of a device within Home Assistant. That means, it is what Home Assistant sees, and it does not communicate with the actual device in any manner. The updated information can still be used to trigger events, and state changes. To communicate with the actual device, it is recommended to call services in the services section above, instead of updating state. - -For ex: Changing the `light.bedroom` state from `off` to `on` does not turn on the light. If there is an automation that triggers on the `state` change of the `light.bedroom`, it will be triggered – even though the actual bulb has not turned on. Also, when the bulb state changes – the state information will be overridden. In other words, the changes that are made through the “States” section are temporary, and is recommended to use for testing purposes only. - -{% linkable_title Events %} - -This Events section is as basic as it can get. It does only one thing – fires events on the event bus. -To fire an event, simply type the name of the event, and pass the event data in JSON format. -For ex: To fire a custom event, enter the `event_type` as `event_light_state_changed` and the event data JSON as - -```json -{ "state":"on" } -``` - -If there is an automation that handles that event, it will be automatically triggered. See below: -```yaml -- alias: Capture Event - trigger: - platform: event - event_type: event_light_state_changed - action: - - service: notify.notify - data_template: - message: "Light is turned {{ trigger.event.data.state }}" -``` - -{% linkable_title Template Editor %} - -The Template Editor provides a way to test the template code quickly. When the Template Editor page is loaded, it comes with a sample template code that illustrates how the code can be written and tested. - -It has two sections, code goes on the left hand side, and the output is shown on the right hand side. The code can be removed and replaced, and when the page is loaded/refreshed, the default sample code will be loaded back. - -It is a good practice to test the template code in the template editor prior to putting it in automations and scripts. - -For more information about jinja2, visit [jinja2 documentation](http://jinja.pocoo.org/docs/dev/templates/), and also read templating document [here](/topics/templating/) - - -{% linkable_title mqtt %} - -This section is only visible if the MQTT component is configured. To configure MQTT, add `mqtt:` to the `configuration.yaml` file. For more information, refer to the [mqtt](/components/mqtt/) component. - -Even though MQTT in general provides deeper functionality, the developer tools section of MQTT is limited to publishing messages to a given topic. It supports templates for the payload. To publish a message, simply specify the topic name and the payload and click “PUBLISH” button. - -{% linkable_title Info %} - -The Information tab simply provides information about the current installed version, additional links and credits. The tab also contains a section that shows `syslog` information, and the contents of `home-assistant.log` with an option to clear and refresh the logs. diff --git a/source/_docs/tools/ensure_config.markdown b/source/_docs/tools/ensure_config.markdown deleted file mode 100644 index 596c44d571..0000000000 --- a/source/_docs/tools/ensure_config.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "ensure_config" -description: "Script to perform a check if the configuration file exists" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -This script checks if the `configuration.yaml` file exists. If the file is not available, one is created. - -```bash -$ hass --script ensure_config -``` - diff --git a/source/_docs/tools/hass.markdown b/source/_docs/tools/hass.markdown deleted file mode 100644 index 73e0bd68cd..0000000000 --- a/source/_docs/tools/hass.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: page -title: "hass" -description: "Description of hass." -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The command-line part of Home Assistant is `hass`. - - -```bash -$ hass -h -usage: hass [-h] [--version] [-c path_to_config_dir] [--demo-mode] [--debug] - [--open-ui] [--skip-pip] [-v] [--pid-file path_to_pid_file] - [--log-rotate-days LOG_ROTATE_DAYS] [--runner] [--script ...] - [--daemon] - -Home Assistant: Observe, Control, Automate. - -optional arguments: - -h, --help show this help message and exit - --version show program's version number and exit - -c path_to_config_dir, --config path_to_config_dir - Directory that contains the Home Assistant - configuration - --demo-mode Start Home Assistant in demo mode - --debug Start Home Assistant in debug mode - --open-ui Open the webinterface in a browser - --skip-pip Skips pip install of required packages on startup - -v, --verbose Enable verbose logging to file. - --pid-file path_to_pid_file - Path to PID file useful for running as daemon - --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 - --log-no-color Disable color logs - --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/influxdb_import.markdown b/source/_docs/tools/influxdb_import.markdown deleted file mode 100644 index 8ff3d85e7b..0000000000 --- a/source/_docs/tools/influxdb_import.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: page -title: "influxdb_import" -description: "Script to import data into an InfluxDB database" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -If you want to import all the recorded data from your recorder database you can use the data import script. It will read all your state_change events from the database and add them as data-points to the InfluxDB. You can specify the source database either by pointing the `--config` option to the config directory which includes the default SQLite database or by giving a sqlalchemy connection URI with `--uri`. - -The writing to InfluxDB is done in batches that can be changed with `--step`. - -You can control, which data is imported by using the command line options `--exclude_entities` and `--exclude_domains`. Both get a comma separated list of either entity-ids or domain names that are excluded from the import. - -To test what gets imported you can use the `--simulate` option, which disables the actual write to the InfluxDB instance. This only writes the statistics how much points would be imported from which entity. - -Example to run the script: - -```bash -$ hass --script influxdb_import --config CONFIG_DIR \ - -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - --dbname INFLUXDB_DB_NAME --exclude_domains automation,configurator -``` -Script arguments: - -``` -required arguments: - -d dbname, --dbname dbname - InfluxDB database name - -optional arguments: - -h, --help show this help message and exit - -c path_to_config_dir, --config path_to_config_dir - Directory that contains the Home Assistant - configuration - --uri URI Connect to URI and import (if other than default - sqlite) eg: mysql://localhost/homeassistant - - -H host, --host host InfluxDB host address - -P port, --port port InfluxDB host port - -u username, --username username - InfluxDB username - -p password, --password password - InfluxDB password - -s step, --step step How many points to import at the same time - -t tags, --tags tags Comma separated list of tags (key:value) for all - points - -D default_measurement, --default-measurement default_measurement - Store all your points in the same measurement - -o override_measurement, --override-measurement override_measurement - Store all your points in the same measurement - -e exclude_entities, --exclude_entities exclude_entities - Comma separated list of excluded entities - -E exclude_domains, --exclude_domains exclude_domains - Comma separated list of excluded domains - -S, --simulate Do not write points but simulate preprocessing - and print statistics -``` - - diff --git a/source/_docs/tools/influxdb_migrator.markdown b/source/_docs/tools/influxdb_migrator.markdown deleted file mode 100644 index df8e83e405..0000000000 --- a/source/_docs/tools/influxdb_migrator.markdown +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "influxdb_migrator" -description: "Script to convert an old-structure Influx database to a new one." -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Script to convert an old-structure Influx database to a new one. - -Example to run the script: - -```bash -$ hass --script influxdb_migrator -H IP_INFLUXDB_HOST \ - -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - --dbname INFLUXDB_DB_NAME -``` -Script arguments: - -``` -optional arguments: - -h, --help show this help message and exit - -d dbname, --dbname dbname - InfluxDB database name - -H host, --host host InfluxDB host address - -P port, --port port InfluxDB host port - -u username, --username username - InfluxDB username - -p password, --password password - InfluxDB password - -s step, --step step How many points to migrate at the same time - -o override_measurement, --override-measurement override_measurement - Store all your points in the same measurement - -D, --delete Delete old database -``` - diff --git a/source/_docs/tools/keyring.markdown b/source/_docs/tools/keyring.markdown deleted file mode 100644 index be4f2634a0..0000000000 --- a/source/_docs/tools/keyring.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "keyring" -description: "Script to store secrets in a keyring" -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Using [Keyring](https://github.com/jaraco/keyring) is an alternative way to `secrets.yaml`. The secrets can be managed from the command line via the `keyring` script. - -```bash -$ hass --script keyring --help -``` - -To store a password in keyring, 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 keyring. - -```bash -$ hass --script keyring set http_password -``` - -If you launch Home Assistant now, you will be prompted for the keyring password to unlock your keyring. - -```bash -$ hass -Config directory: /home/homeassistant/.homeassistant -Please enter password for encrypted keyring: -``` - -

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

    diff --git a/source/_docs/tools/scripts.markdown b/source/_docs/tools/scripts.markdown deleted file mode 100644 index 2b40ba28c5..0000000000 --- a/source/_docs/tools/scripts.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Tools" -description: "Description of tools which helps when using Home Assistant." -release_date: 2017-02-23 11:00:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /docs/tools/ ---- - - diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown deleted file mode 100644 index 6ee6a284fa..0000000000 --- a/source/_docs/z-wave.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Z-Wave" -description: "Using Z-Wave with Home Assistant." -date: 2017-09-21 10:59 -sidebar: true -comments: false -sharing: true -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](/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. - -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. - -## {% linkable_title What is Z-Wave %} - -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. - -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. There is also a limit of 4 hops for Z-Wave, so placing the controller as centrally as you can is important. - -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. - -## {% linkable_title What do you need to use Z-Wave %} - -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/). - -### {% linkable_title Regional differences %} - -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). - -## {% linkable_title Getting started %} - -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). - -You can get more information on the [available services](/docs/z-wave/services/) and [events](/docs/z-wave/events/), what the [query stages](/docs/z-wave/query-stage) of battery powered devices are, as well as details on configuring [specific devices](/docs/z-wave/device-specific/). - -## {% linkable_title Instant status updates %} - -When you toggle a switch or control a light locally you may find that it takes some time for that to be reflected in Home Assistant. That's because Lutron had patents on the status updates using the *Hail* command class, the traditional way of allowing devices to tell the controller that something happened locally. The same result can be achieved through the *Association* command class, or *Central Scene* command class (though, *Central Scene* isn't [fully supported](https://github.com/OpenZWave/open-zwave/pull/1125) in OpenZWave). - -If you search [the Z-Wave products database](http://products.z-wavealliance.org/) for your product and it lists one of those in the **Controlled** command classes (not the **Supported** command classes), then your device will be able to report state changes when they happen. If it doesn't then updates may either happen eventually, or you may need to (carefully) [enable polling](https://www.home-assistant.io/docs/z-wave/control-panel/#entities-of-this-node). diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown deleted file mode 100644 index b6fb1f7b3d..0000000000 --- a/source/_docs/z-wave/adding.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: page -title: "Z-Wave Devices - Adding and Removing" -description: "How to add and remove Z-Wave devices." -date: 2017-11-08 19:06 -sidebar: true -comments: false -sharing: true -footer: true ---- - -## {% linkable_title Adding Non-Secure Devices %} - -To add (include) a non-secure Z-Wave [device](/docs/z-wave/devices/) to your system: - -1. Go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend -2. Click the **Add Node** button in the *Z-Wave Network Management* card - this will place the controller in inclusion mode -3. Activate your device to be included by following the instructions provided with the device -4. With the device in its final location, run a *Heal Network* - -Don't use this for [secure devices](/docs/z-wave/adding/#adding-secure-devices), since this is likely to limit the features the device supports. - -

    -Don't use the OpenZWave control panel (OZWCP), **or the physical button on a controller**, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports. -

    - -When you add a device, it may initially appear without a specific entity ID (eg `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible. - -## {% linkable_title Network Key %} - -Security Z-Wave devices require a network key. Some devices only expose their full capabilities when included this way. You should always read the manual for your device to find out the recommended inclusion method. Note, secure devices that had been connected to another hub/network in the past may have a "theft protection" feature which requires to first exclude the device successfully from the previous hub using the previous hub/Software setup before it can be enrolled in a new hub/network. - -A valid network key will be a 16 byte value, defined in the zwave section of your configuration, such as the following example: - -``` -zwave: - usb_path: /dev/ttyACM0 - network_key: "0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10" -``` - -Each individual value in the defined key can be anywhere from 0x00 to 0xFF. Define your own key by making changes to the above example key or for additional security try one of the two scripts mentioned below. - -### {% linkable_title Network Key %} - -An easy script to generate a random key: -```bash -cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' -``` - -On macOS, this script will generate a random key: -```bash -cat /dev/urandom | LC_CTYPE=C tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' -``` - -

    -Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. -

    - -## {% linkable_title Adding Secure Devices %} - -After defining your network key, follow these steps to add (include) a secure Z-Wave device: - -1. Go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend -2. Click the **Add Node Secure** button in the *Z-Wave Network Management* card - this will place the controller in inclusion mode -3. Activate your device to be included by following the instructions provided with the device -4. With the device in its final location, run a *Heal Network* - -## {% linkable_title Removing Devices %} - -To remove (exclude) a Z-Wave device from your system: - -1. Go to the Z-Wave control panel in the Home Assistant frontend -2. Click the **Remove Node** button in the *Z-Wave Network Management* card - this will place the controller in exclusion mode -3. Activate your device to be excluded by following the instructions provided with the device -4. Run a *Heal Network* so all the other nodes learn about its removal diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown deleted file mode 100644 index ee08d772d8..0000000000 --- a/source/_docs/z-wave/control-panel.markdown +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: page -title: "Z-Wave Control Panel" -description: "How to use the Z-Wave control panel." -date: 2017-09-21 12:49 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/z-wave-panel/ ---- - -

    - If you don't see the **Configuration** menu on the menubar, where you'll find the Z-Wave menu, [see here](/components/config/). -

    - -## {% linkable_title Z-Wave Network Management %} - -Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices from your network. - -* **Add Node** puts the controller into inclusion mode, so you can include (add) a device to your Z-Wave network -* **Add Node Secure** puts the controller into secure inclusion mode (this requires that you've created a [security key](/docs/z-wave/adding#sdding-security-devices)) -* **Remove Node** puts the controller into exclusion mode, so you can exclude (remove) a device. Note that you can exclude a non-secure device that's been added to another network -* **Cancel Command** cancels any of the above - -* **Heal Network** tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. -* **Start Network** starts the Z-Wave network -* **Stop Network** stops the Z-Wave network -* **Soft Reset** tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command, and may cause the Z-Wave network to hang. -* **Test Network** tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead". -* **Save Config** Saves the current cache of the network to zwcfg_[home_id].xml - -## {% linkable_title Z-Wave Node Management %} - -

    -Since 0.63 and the new experimental [entity registry](/docs/configuration/entity-registry/) **Rename Node** no longer changes the entity id for anything other than the `zwave.` entity for the node (it does change the default *friendly_name* attribute for all the entities). See [this issue](https://github.com/home-assistant/home-assistant/issues/12430). -

    - -* **Refresh Node** refreshes the information on the node and its entities. If used on a battery powered device, the device will first need to wake for this to work. -* **Remove Failed Node** will remove a failed node from the network. The node needs to be on the controller's Failed Node List (marked as `is_failed: true`), otherwise this command will fail. -* **Replace Failed Node** will replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. -* **Print Node** prints all state of Z-Wave node to the console log - -* **Rename Node** sets the name of the `zwave` entity - this won't happen immediately, and requires you to restart Home Assistant (not reboot) to set the new name. Other entities of a device are renamed using the [entity registry](/docs/configuration/entity-registry/). - -* **Heal Node** starts healing of the node.(Update neighbor list and update return routes) - -* **Test Node** sends no_op test messages to the node. This could in theory bring back a dead node. - -

    -Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details. -

    - -#### {% linkable_title Entities of this node %} - -This is a dropdown where you can select all the entities of this node. Once selected you can then use: - -* **Refresh Entity** to refresh just that entity's values -* **Entity Attributes** to display the attributes of that entity (eg its friendly name, the ID of the node, etc) - -Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network. - -The **Polling intensity** says how many poll intervals does is this device polled on. For example, if you set 2 then it's polled on every second interval. - -You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it. - -### {% linkable_title Node Information %} - -This will display the Z-Wave related information about the node: - -* **averageRequestRTT** The average Round Trip Time (RTT) of requests sent to the node, in milliseconds. A value of 250, for example, is a quarter of a second. -* **averageResponseRTT** The average Round Trip Time of responses to requests -* **battery_level** *Battery powered devices only* - the battery level, which may be rounded to the nearest 10 -* **capabilities** A comma separated list of the capabilities of the device -* **friendly_name** The name you specified to be displayed -* **is_awake** Whether the device is awake or not -* **is_failed** Whether the device has been marked as failed. The controller won't try to contact failed devices. -* **is_info_received** True once the controller has received the node information from the node. -* **is_ready** When you start the network (or Home Assistant) it will take a short while before all devices are ready, this shows which aren't yet ready. -* **is_zwave_plus** True for any Z-Wave Plus devices (note that controllers always report *false*, regardless of whether they are Plus devices or not) -* **lastRequestRTT** The Round Trip Time of the last request -* **lastResponseRTT** The Round Trip Time of the response to the last request -* **manufacturer_name** The name of the manufacturer, as supplied by OpenZWave -* **max_baud_rate** The maximum bandwidth the device supports, most modern devices will support 40,000 or higher -* **node_id** The unique node ID of this node -* **node_name** The base name of this node, this is used to build the entity ID of all entities of this node -* **product_name** The product name of the device, as supplied by OpenZWave -* **query_stage** The query stage for this device (see [here](/docs/z-wave/query-stage/) for details) -* **receivedCnt** The number of messages received from the device -* **receivedDups** The number of duplicate messages received from the device -* **receivedTS** The date and time the last message was received from the devices -* **receivedUnsolicited** How many unsolicited messages were received -* **retries** How many retries have been made to send messages to this node -* **sentCnt** How many messages have been sent to the node -* **sentFailed** How many messages that were sent weren't acknowledged -* **sentTS** The date and time the last message was sent to the ndoe -* **wake_up_interval** *Battery powered devices only* - the wakeup interval of the device, in seconds - -### {% linkable_title Node Values %} - -Allows you to rename the entities of the node. For example, maybe for the sensor `front_door`, you want to rename the value `seismic_intensity` to `shake`. The `entity_id` for that sensor will then change from `sensor.front_door_seismic_intensity` to `sensor.front_door_shake`. - -### {% linkable_title Node group associations %} - -Where the device supports the *Association* command class, this will allow you to associate the device with another. OpenZWave will automatically associate the device with the controller, to provide instant updates when the device doesn't support the *Hail* command class. - -You can use this to enable one device to directly control another. This is primarily useful for remote controls that operate lights or switches, or where you want to have multiple devices operate as one. - -There may be multiple groups, that are used for different purposes. The manual of your device will explain what each group is for. - -#### {% linkable_title Broadcast group %} - -Some Z-Wave devices may associate themselves with the broadcast group (group 255). You'll be able to tell if this has happened if opening a door (or triggering a motion sensor) causes lights to come on, and closing the door (or the motion sensor going clear) causes lights to run off. There's no way to clear this from the control panel, but you can use the `zwave.change_association` service: - -```json -{"association": "remove", "node_id": 3, "group": 1, "target_node_id": 255} -``` - -That would remove the broadcast group from association group 1 of the device with node_id 3. - -### {% linkable_title Node config options %} - -You can set the *wakeup* interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered. - -Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. - -## {% linkable_title Node user codes %} - -If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Below the input you will see your actual code. For normal nodes this is as follows: -```yaml -\x30 = 0 -\x31 = 1 -\x32 = 2 -\x33 = 3 -\x34 = 4 -\x35 = 5 -\x36 = 6 -\x37 = 7 -\x38 = 8 -\x39 = 9 -``` -Some non compliant device like tag readers, have implemented to use raw hex code. -Please refer to a hex ascii table to set your code. Example: http://www.asciitable.com/ - -Here is a small Python program than will take numbers on the command line and print the correct sequence for compliant devices: - -```python -#! /usr/bin/python3 -import sys - -translations = {} - -for x in range(0, 10): - translations["%s" % x] = "\\x3%s" % x - -for c in sys.argv[1]: - print(translations[c], end='') -``` - -## {% linkable_title OZW Log %} - -If you want to only retrieve some lines at the end of the log, you can specify that with the selection field. Max is the last 1000 lines and minimum is 0 which equals the whole log. If this is not specified, you will retrieve the whole log. -Select **Refresh** to display the log if you need it to check activities. diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown deleted file mode 100644 index 7a0952abcc..0000000000 --- a/source/_docs/z-wave/controllers.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: page -title: "Z-Wave Controllers" -description: "Extended instructions how to setup Z-Wave." -date: 2016-03-24 08:49 -0700 -sidebar: true -comments: false -sharing: true -footer: true ---- - -## {% linkable_title Supported Z-Wave USB Sticks & Hardware Modules %} - -You need to have a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) installed. - -| Device | Works on Linux | Works on Windows | Works on OSX | -|-------------------------|----------------|------------------|--------------| -| Aeotec Z-Stick | ✓ | | | -| Aeotec Z-Stick Series 2 | ✓ | | | -| Aeotec Z-Stick Series 5 | ✓ | | ✓ | -| Pine64 Z-Wave Module | ✓ | | | -| Razberry GPIO Module | ✓ | | | -| Seluxit ViaSens 100 | | | | -| Sigma Designs UZB Stick | | | | -| Tricklestar | | | | -| Vision USB Stick | | | | -| ZWave.me UZB1 | ✓ | | | - -

    - If you're using Hass.io or running HASS in a Docker container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through. -

    - -## {% linkable_title Stick Alternatives %} - -The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support: - - - [Vera](/components/vera/) - - [Wink](/components/wink/) - -## {% linkable_title Controller Notes %} - -### {% linkable_title Aoetec Stick %} - -By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick) - -### {% linkable_title Razberry Board %} - -You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by following the instructions in the [device specific page](/docs/z-wave/device-specific/#razberry-board) diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown deleted file mode 100644 index 218268bac5..0000000000 --- a/source/_docs/z-wave/device-specific.markdown +++ /dev/null @@ -1,234 +0,0 @@ ---- -layout: page -title: "Z-Wave Device Specific Settings" -description: "Notes for specific Z-Wave devices." -date: 2016-03-24 08:49 -0700 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/z-wave-device-specific/ ---- - -## {% linkable_title Device Categories %} - -### {% linkable_title Motion or alarm sensors %} - -In order for Home Assistant to recognize the sensor properly, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report` or `Alarm report`. -These devices will either show as a binary sensor or a sensor called `Alarm xxxx` and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual. - -You can set the settings of the Z-Wave device through the Z-Wave control panel. - -### {% linkable_title Locks and other secure devices %} - -These devices require a network key to be set for the Z-Wave network before they are paired, using the **Add Node Secure** option. - -Home Assistant stores logs from Z-Wave in `OZW_log.txt` in the Home Assistant config directory, when you pair a secure device you should see communication from the node with lines starting with `info: NONCES` in `OZW_log.txt` when the device is paired successfully with a secure connection. - -### {% linkable_title Specific Devices %} - -### {% linkable_title Aeotec Z-Stick %} - -It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behavior it can be turned off. - -Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected. - -Turn off "Disco lights": - -```bash -$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00 -``` - -Turn on "Disco lights": - -```bash -$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00 -``` - -### {% linkable_title Razberry Board %} - -You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`: - -``` -dtoverlay=pi3-disable-bt -``` - -Then disable the Bluetooth modem service: - -```bash -$ sudo systemctl disable hciuart -``` - -Finally, reboot to make those changes active. It's been reported that this is also required on the Pi2. - -

    - If you've installed the Z-Way software, you'll need to ensure you disable it before you install Home Assistant or you won't be able to access the board. Do this with `sudo /etc/init.d/z-way-server stop; sudo update-rc.d z-way-server disable`. -

    - -### {% linkable_title Aeon Minimote %} - -Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`. - -```yaml - - id: mini_1_pressed - alias: 'Minimote Button 1 Pressed' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 1 - - id: mini_1_held - alias: 'Minimote Button 1 Held' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 2 - - id: mini_2_pressed - alias: 'Minimote Button 2 Pressed' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 3 - - id: mini_2_held - alias: 'Minimote Button 2 Held' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 4 - - id: mini_3_pressed - alias: 'Minimote Button 3 Pressed' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 5 - - id: mini_3_held - alias: 'Minimote Button 3 Held' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 6 - - id: mini_4_pressed - alias: 'Minimote Button 4 Pressed' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 7 - - id: mini_4_held - alias: 'Minimote Button 4 Held' - trigger: - - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.aeon_labs_minimote_1 - scene_id: 8 -``` - -### {% linkable_title Zooz Toggle Switches %} - -Some models of the Zooz Toggle switches ship with an instruction manual with incorrect instruction for Z-Wave inclusion/exclusion. The instructions say that the switch should be quickly switched on-off-on for inclusion and off-on-off for exclusion. However, the correct method is on-on-on for inclusion and off-off-off for exclusion. - -## {% linkable_title Central Scene configuration %} - -To provide Central Scene support you need to shut Home Assistant down and modify your `zwcfg_*.xml` file according to the following guides. - -### {% linkable_title HomeSeer Switches %} - -For the HomeSeer devices specifically, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following: - -```xml - - - - - - -``` - -Below is a table of the action/scenes for the HomeSeer devices (as a reference for other similar devices): - -**Action**|**scene\_id**|**scene\_data** -:-----:|:-----:|:-----: -Single tap on|1|0 -Single tap off|2|0 -Double tap on|1|3 -Double tap off|2|3 -Triple tap on|1|4 -Triple tap off|2|4 -Tap and hold on|1|2 -Tap and hold off|2|2 - -### {% linkable_title Fibaro Button FGPB-101-6 v3.2 %} - - - -For the Button, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following: - -```xml - - - - - -``` - -Below is a table of the action/scenes for the Button (as a reference for other similar devices): - -**Action**|**scene\_id**|**scene\_data** -:-----:|:-----:|:-----: -Single tap on|1|0 -Double tap on|1|3 -Triple tap on|1|4 - -Tap and hold wakes up the Button. - -### {% linkable_title Aeotec Wallmote %} - - - -For the Aeotec Wallmote, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following: - -```xml - - - - - - - - - -``` - -Below is a table of the action/scenes for the Wallmote (as a reference for other similar devices): - -**Action**|**scene\_id**|**scene\_data** -:-----:|:-----:|:-----: -Button one single tap|1|0 -Button one hold|1|2 -Button one release|1|1 -Button two single tap|2|0 -Button two hold|2|2 -Button two release|2|1 -Button three single tap|3|0 -Button three hold|3|2 -Button three release|3|1 -Button four single tap|4|0 -Button four hold|4|2 -Button four release|4|1 - -### {% linkable_title WallC-S Switch %} - -Use the same configuration as for the Aeotec Wallmote. diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown deleted file mode 100644 index 92d43f0094..0000000000 --- a/source/_docs/z-wave/devices.markdown +++ /dev/null @@ -1,74 +0,0 @@ ---- -layout: page -title: "Z-Wave Devices" -description: "What you need to know about Z-Wave devices." -date: 2017-09-21 11:49 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/z-wave-devices/ ---- - -## {% linkable_title Devices, Nodes, Entities, what? %} - -The *device* is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices: - -* [Controllers](/docs/z-wave/controllers) - all Z-Wave networks need to have one of these, though some may have two (a primary and a secondary) -* Sensors - devices that tell you about the environment, these could be flood sensors, motion sensors, temperature sensors and so on -* Actors or actuators - devices that change their environment, for example light switches, dimmers, thermostats (many of these will also have a sensor function) - -Many sensors and actors can directly control other devices through a capability called *association*, without the use of an automation, these are known as *routing slaves*. This will be a very simple control, such as turning a light on when a motion sensor is activated, and off when it stops detecting motion. - -The *node* is the presence of the device on the Z-Wave mesh. Once you've added a device to Home Assistant, the node is represented by an `entity_id` that starts with `zwave`. - -The *entity* is an individual component of the node. It may be a sensor that you read from, or a control that you operate. For any node, there will be at least one entity (for the node itself) and if it exposes any controls or sensors there will be at least one entity per control or sensor. The [entities](/docs/z-wave/entities) that are created depend on the Command Class the device supports. - -## {% linkable_title Z-Wave, Plus, Security 2 %} - -There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backwards compatible. - -### {% linkable_title Z-Wave Plus %} - -The key improvements are: - -* Improved battery life (50% increase) -* Improved range (50% increase) if all your devices are Z-Wave Plus -* Higher bandwidth and improved noise immunity if all your devices are Z-Wave Plus -* Improved self-healing and fault tolerance - -### {% linkable_title Z-Wave Security 2 %} - -From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (March 2018) OpenZWave does not support the S2 framework. - -## {% linkable_title Device power %} - -Your Z-Wave mesh network is built with the devices that are mains powered (whether directly, or via a USB adapter), these relay traffic for other nodes, building the network. These devices are always awake and you can query them, or send configuration changes, at any time. - -Battery powered devices spend most of their time asleep, unable to relay traffic, to be queried, or receive changes. Changes sent while a device is asleep will be queued and sent the next time the device wakes. Details of the default wake interval, and how to manually wake the device (if supported) will be detailed in the devices's manual. Some battery powered devices (primarily locks and thermostats) support beaming (the *Beam* command class) that allows them to be remotely woken. This does require that all devices in the network responsible for relaying the commands between the controller and the device also support beaming. - -

    -The Z-Wave capability *routing* doesn't mean the device routes traffic, it actually means that it's able to control other devices. You'll see this capability on most remotes and switches. -

    - -## {% linkable_title Instant Status %} - -Older designs of Z-Wave devices may not support *Instant Status* (the *Hail* command class), because of a patent that was held by Lutron Electronics. Some manufacturers paid to use it, others didn't and so those devices may not report on changes. That patent expired in 2016, so new designs should support this. - -As long as your device lists Hail or Association in its Controlled Command Classes, then you'll get instant status updates. Devices that list Central Scene in their Controlled Command Classes in theory will also work this way, once OpenZWave supports the Central Scene class. You can check your device on the [Z-Wave alliance](https://products.z-wavealliance.org/) site, looking at the **Command Classes** link, then at the **Controlled Command Classes** section. - -## {% linkable_title Polling %} - -Where a device doesn't send updates on status changes to the controller, you can work around this by using a thing called Polling. That causes the controller to ask the device to provide an update on all its sensors and states. This will cause a lot of traffic on the network, and if you poll too many devices too quickly, you can effectively break your Z-Wave network. Polling should only be used where there is no other choice, and you should use as large a polling interval as possible. Ideally you should replace the device. - -For example, with `polling_interval=60000` (which is the default) if you have 10 devices that are being polled, if a device can receive and acknowledge the poll within one second, then it will take 10 seconds to complete the polling list, which leaves 50 seconds left for normal traffic. The more devices you poll, and the shorter the interval, the less bandwidth that's available for normal traffic. - -## {% linkable_title Central Scene support %} - -The Central Scene command class isn't yet supported in OpenZWave (there is [work in progress](https://github.com/OpenZWave/open-zwave/pull/1125) to provide it it), though Home Assistant has introduced some support with [change 9178](https://github.com/home-assistant/home-assistant/pull/9178) which was part of 0.53 and [documented here](/docs/z-wave/device-specific/#homeseer-switches). - -## {% linkable_title Is my device supported %} - -You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave github](https://github.com/OpenZWave/open-zwave/tree/master/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months. - -Even if your device isn't listed there, it's likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how [you can add support](https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices) for your device if it isn't listed. diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown deleted file mode 100644 index d3c856d835..0000000000 --- a/source/_docs/z-wave/entities.markdown +++ /dev/null @@ -1,177 +0,0 @@ ---- -layout: page -title: "Z-Wave Entity Naming" -description: "A summary of common entity names." -date: 2017-09-21 10:59 -sidebar: true -comments: false -sharing: true -footer: true ---- - -

    -This is a work in progress, based upon reports in the forum, the author's own devices, and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here, or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the #zwave channel on [Discord](https://discord.gg/RkajcgS). -

    - -## {% linkable_title Binary Sensor %} - -Devices that support the Binary Sensor command class will create one (or more) entities starting with `binary_sensor`. For example, if the node is `door_sensor` then the binary sensor entity will be `binary_sensor.door_sensor`. - -These will normally be `on` when the sensor is active, otherwise they will be `off`. Some devices use `on` for closed, and some use `on` for open, and some devices allow you to change how they report. - -## {% linkable_title Alarm %} - -This is for a single purpose sensor, multi sensors are explained under Multi Sensor. - -Devices (usually sensors) that support the Alarm command class will create entities starting with `sensor`, and with some generic suffixes, and a suffix that relates to the supported alarm class. For example, the smoke detector `lounge` will have an entity `sensor.lounge_smoke`, and possibly also `sensor.lounge_alarm_type` and `sensor.lounge_alarm_level`. If the device creates a `binary_sensor` entity, it is recommended to use that rather then the `sensor` entity. - -### {% linkable_title Alarm Type Entity %} - -- **alarm_type**: Reports the type of the sensor - - **0**: General purpose - - **1**: Smoke sensor - - **2**: Carbon Monoxide (CO) sensor - - **3**: Carbon Dioxide (CO2) sensor - - **4**: Heat sensor - - **5**: Water leak sensor - - **6**: Access control - -### {% linkable_title Alarm Level Entity %} - -The meaning of the `alarm_level` entity depends on the nature of the alarm sensor - -#### {% linkable_title Smoke, CO, and CO2 %} - - - **1**: Detection - will include a Node Location Report - - **2**: Detection (unknown location) - - **254**: Unknown event - -#### {% linkable_title Heat %} - - - **1**: Overheat detected - will include a Node Location Report - - **2**: Overheat detected (unknown location) - - **3**: Rapid temperature rise - will include a Node Location Report - - **4**: Rapid temperature rise (unknown location) - - **5**: Underheat detection - will include a Node Location Report - - **6**: Underheat detection (unknown location) - - **254**: Unknown event - -#### {% linkable_title Water leak %} - - - **1**: Water leak detected - will include a Node Location Report - - **2**: Water leak detected (unknown location) - - **3**: Water level dropped - will include a Node Location Report - - **4**: Water level dropped (unknown location) - - **254**: Unknown event - -#### {% linkable_title Access control %} - - - **1**: Manual lock - - **2**: Manual unlock - - **3**: RF lock - - **4**: RF unlock - - **5**: Keypad lock - will include the User Identifier of the User Code Report - - **6**: Keypad unlock - will include the User Identifier of the User Code Report - - **254**: Unknown event - -#### {% linkable_title Burglar %} - - - **1**: Intrusion - will include a Node Location Report - - **2**: Intrusion (unknown location) - - **3**: Tampering (case opened) - - **4**: Tampering (invalid code) - - **5**: Glass break - will include a Node Location Report - - **6**: Glass break (invalid code) - - **254**: Unknown event - -#### {% linkable_title Power Management %} - - - **1**: Power applied - - **2**: AC disconnected - - **3**: AC re-connected - - **4**: Surge detection - - **5**: Voltage drop or drift - - **254**: Unknown event - -#### {% linkable_title System Alarm %} - - - **1**: System hardware failure - - **2**: System software failure - - **254**: Unknown event - -#### {% linkable_title Emergency Alarm %} - - - **1**: Contact Police - - **2**: Contact Fire Service - - **3**: Contact Medical Service - - **254**: Unknown event - -#### {% linkable_title Alarm Clock %} - - - **1**: Wake up - - **254**: Unknown event - -### {% linkable_title Access Control Entity %} - -- **access_control**: These *may* vary between brands - - **22**: Open - - **23**: Closed - - **254**: Deep sleep - - **255**: Case open - -If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one: - -``` -binary_sensor: - - platform: template - sensors: - YOUR_SENSOR: - friendly_name: "Friendly name here" - value_template: >- - {% raw %}{%- if is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') -%} - true - {%- else -%} - false - {%- endif -%}{% endraw %} -``` - -### {% linkable_title Burglar Entity %} - -- **burglar**: These *may* vary between brands - - **0**: Not active - - **2**: Smoke (?) - - **3**: Tamper - - **8**: Motion - - **22**: Open - - **23**: Closed - - **254**: Deep sleep - - **255**: Case open - -If your device has a `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one: - -``` -binary_sensor: - - platform: template - sensors: - YOUR_SENSOR: - friendly_name: "Friendly name here" - value_template: >- - {% raw %}{%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%} - true - {%- else -%} - false - {%- endif -%}{% endraw %} -``` - -### {% linkable_title Source Node ID Entity %} - -- **sourcenodeid**: Reports the sensor that generated the alarm - this is only valid for Zensor Net based devices - -## {% linkable_title Multisensor %} - -Multi sensor devices will create a number of entities, one for each sensor, potentially a `binary_sensor` entity, and probably also `alarm_type` and `alarm_level` entities. - -These are all generally self explanatory, however it's worth noting: - -- **ultraviolet** sensors will usually report zero indoors, as UVB is blocked by glass -- **luminance** sensors should report in [Lux](https://en.wikipedia.org/wiki/Lux) diff --git a/source/_docs/z-wave/events.markdown b/source/_docs/z-wave/events.markdown deleted file mode 100644 index c3b63a1282..0000000000 --- a/source/_docs/z-wave/events.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: page -title: "Z-Wave Events" -description: "Events generated by the Z-Wave component." -date: 2017-09-21 10:59 -sidebar: true -comments: false -sharing: true -footer: true ---- - -## {% linkable_title zwave.network_complete %} - -Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network. - -```yaml - - alias: Z-Wave network is complete - trigger: - platform: event - event_type: zwave.network_complete -``` - -## {% linkable_title zwave.network_ready %} - -Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake. - -```yaml - - alias: Z-Wave network is ready - trigger: - platform: event - event_type: zwave.network_ready -``` - -## {% linkable_title zwave.network_start %} - -Home Assistant will trigger an event when the Z-Wave network is set up to be started. - -```yaml - - alias: Z-Wave network is starting - trigger: - platform: event - event_type: zwave.network_start -``` - -## {% linkable_title zwave.network_stop %} - -Home Assistant will trigger an event when the Z-Wave network is stopping. - -```yaml - - alias: Z-Wave network is stopping - trigger: - platform: event - event_type: zwave.network_stop -``` - -## {% linkable_title zwave.node_event %} -Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations. - -Example: - -```yaml - - alias: Minimote Button Pressed - trigger: - platform: event - event_type: zwave.node_event - event_data: - entity_id: zwave.aeon_labs_minimote - basic_level: 255 -``` - -The *entity_id* and *basic_level* of all triggered events can be seen in the console output. - -## {% linkable_title zwave.scene_activated %} - -Some devices can also trigger scene activation events, which can be used in automation scripts (for example, the press of a button on a wall switch): - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: Turn on Desk light - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: zwave.zwaveme_zme_wallcs_secure_wall_controller - scene_id: 11 -``` - -Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button: - -```yaml -# Example configuration.yaml automation entry -automation - - alias: 'Dining room dimmer - double tap up' - trigger: - - event_type: zwave.scene_activated - platform: event - event_data: - entity_id: zwave.dining_room_cans - scene_id: 1 - scene_data: 3 -``` - -The *entity_id* and *scene_id* of all triggered events can be seen in the console output. - -For more information on HomeSeer devices and similar devices, please see the [device specific page](/docs/z-wave/device-specific/#homeseer-switches). diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown deleted file mode 100644 index b3fc38d817..0000000000 --- a/source/_docs/z-wave/installation.markdown +++ /dev/null @@ -1,249 +0,0 @@ ---- -layout: page -title: "Z-Wave" -description: "Installation of the Z-Wave component." -date: 2017-09-21 10:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/z-wave-installation/ ---- - -The first time you enable the Z-Wave component it will install the Z-Wave drivers (python-openzwave). This can take up to half an hour on slow machines like Raspberry Pi. - -Installing the drivers might require some extra packages to be installed. Check your platform below. - -## {% linkable_title Platform specific installation instructions %} - -### {% linkable_title Linux (except Hass.io) %} - -On Linux platforms (other than Hass.io) there is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): - -```bash -$ sudo apt-get install libudev-dev -``` - -On Python 3.6 you may also have to install libpython3.6-dev, and possibly python3.6-dev. - -### {% linkable_title macOS %} - -When installing on macOS you may have to also run the command below ahead of time, replace "x.x" with the version of Python (`$ python3 --version`) you have installed. - -```bash -$ sudo /Applications/Python\ x.x/Install\ Certificates.command -``` - -### {% linkable_title Raspberry Pi %} - -On Raspberry Pi you will need to enable the serial interface in the `raspi-config` tool before you can add Z-Wave to Home Assistant. - -## {% linkable_title Configuration %} - -```yaml -# Example configuration.yaml entry -zwave: - usb_path: /dev/ttyACM0 -``` - -{% configuration zwave %} -usb_path: - description: The port where your device is connected to your Home Assistant host. - required: false - type: string - default: /zwaveusbstick -network_key: - description: The 16-byte network key in the form `"0x01, 0x02..."` used in order to connect securely to compatible devices. It is recommended that a network key is configured as security enabled devices may not function correctly if they are not added securely. - required: false - type: string - default: None -config_path: - description: The path to the Python OpenZWave configuration files. - required: false - type: string - default: the 'config' that is installed by python-openzwave -autoheal: - description: Allows disabling auto Z-Wave heal at midnight. - required: false - type: boolean - default: True -polling_interval: - description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. - required: false - type: integer - default: 60000 -debug: - description: Print verbose z-wave info to log. - required: false - type: boolean - default: False -device_config / device_config_domain / device_config_glob: - description: This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format. - required: false - type: string, list - keys: - ignored: - description: Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it. - required: false - type: boolean - default: False - polling_intensity: - description: Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2=every other time, etc). If not specified then your device will not be polled. - required: false - type: integer - default: 0 - refresh_value: - description: Enable refreshing of the node value. Only the light component uses this. - required: false - type: boolean - default: False - delay: - description: Specify the delay for refreshing of node value. Only the light component uses this. - required: false - type: integer - default: 2 - invert_openclose_buttons: - description: Inverts function of the open and close buttons for the cover domain. - required: false - type: boolean - default: False -{% endconfiguration %} - -### {% linkable_title Finding the controller path on Linux %} - -

    -If you're using Hass.io please follow [these setup instructions](/hassio/zwave/) for finding the controller path. -

    - -To find the path of your Z-Wave USB stick or module, connect it to your system and run: - -```bash -$ ls -ltr /dev/tty*|tail -n 1 -``` - -That will give you a line that looks something like this: - -```bash -crw-rw---- 1 root dialout 204, 64 Sep 21 10:25 /dev/ttyUSB0 -``` - -Where the date and time displayed is approximately the time you connected the USB stick or module (it may also be something like `/dev/ttyAMA0` or `/dev/ttyACM0`). The number will be zero for the first device connected, and higher numbers for later devices. - -Or, if there is no result, try to find detailed USB connection info with: - -```bash -$ dmesg | grep USB -``` - -If Home Assistant (`hass`) runs with another user (e.g., *homeassistant* on Hassbian) give access to the stick with: - -```bash -$ sudo usermod -a -G dialout homeassistant -``` - -

    -The output from `ls -ltr` above contains the following information -The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`. -

    - -#### {% linkable_title Creating a Persistent Device Path %} - -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 Finding the controller path on macOS %} - -On macOS you can find the USB stick with: - -```bash -$ ls /dev/cu.usbmodem* -``` - -### {% linkable_title Hass.io %} - -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 -``` - -Depending on your Z-Wave device it may instead be `/dev/ttyAMA0` (eg Razberry board) or `/dev/ttyUSB0` (eg HUBUZB-1). - -### {% linkable_title RancherOS %} - -If you're using RancherOS for containers, you'll need to ensure you enable the kernel-extras service so that the `USB_ACM` module (also known as `cdc_acm`) is loaded: - -```bash -$ sudo ros service enable kernel-extras -$ sudo ros service up kernel-extras -``` - -### {% linkable_title Network Key %} - -Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. - -An easy script to generate a random key: -```bash -$ cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' -``` - -```yaml -# Example configuration.yaml entry for network_key -zwave: - network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c" -``` - -Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. - -## {% linkable_title First Run %} - -The (compilation and) installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspberry Pi. When you upgrade Home Assistant and python-openzwave is also upgraded, this will also result in a delay while the new version is compiled and installed. - -The first run after adding a device is when the `zwave` component will take time to initialize the entities, some entities may appear with incomplete names. Running a network heal may speed up this process. - -## {% linkable_title Troubleshooting %} - -### {% linkable_title Component could not be set up %} - -Sometimes the device may not be accessible and you'll get an error message upon startup about not being able to set up Z-Wave. Run the following command for your device path (here we're using `/dev/ttyAMA0` for our Razberry board): - -```bash -$ ls -l /dev/ttyAMA0 -``` - -You should then see something like this: - -``` -crw-rw---- 1 root dialout 204, 64 Apr 1 12:34 /dev/ttyAMA0 -``` - -The important pieces are the first piece `crw-rw----` and the group `dialout`. If those are different then, for your device path, run: - -```bash -$ sudo chgrp dialout /dev/ttyAMA0 -$ sudo chmod g+rw /dev/ttyAMA0 -``` - -Check too that the account you're running Home Assistant as is in the `dialout` group. For instance, if you're using `homeassistant`: - -```bash -$ groups homeassistant -``` - -That should include `dialout`, if it doesn't then: - -```bash -$ sudo usermod -G dialout homeassistant -``` - -### {% linkable_title Device path changes %} - -If your device path changes when you restart, see [this guide](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/) on fixing it. - -### {% linkable_title Unable to install Python Openzwave %} - -If you're getting errors like: - - openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory - -Then the problem is that you're missing `libudev-dev`, please [install it](/docs/z-wave/installation/#linux-except-hassio). diff --git a/source/_docs/z-wave/query-stage.markdown b/source/_docs/z-wave/query-stage.markdown deleted file mode 100644 index 7112cd055b..0000000000 --- a/source/_docs/z-wave/query-stage.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: "Z-Wave Query Stage" -description: "What are the Query Stages." -date: 2017-09-21 11:49 -sidebar: true -comments: false -sharing: true -footer: true ---- - -When the Z-Wave mesh is first started, the controller will go through all the following stages for every device on the mesh. This is a slow process, and to complete requires that the devices be awake. While devices that are mains or USB powered are always awake, battery-powered devices spend most of their time asleep. Because of this, you can expect that after startup your battery powered devices will spend time in `Initializing (CacheLoad)` - how long depends on the device. - -Your devices will still function normally while marked as `Initializing`. - -| Stage | Description | -|------------------------|--------------------------------------------------------------------| -| None | Query process hasn't started for this node | -| ProtocolInfo | Retrieve protocol information | -| Probe | Ping device to see if alive | -| WakeUp | Start wake up process if a sleeping node | -| ManufacturerSpecific1 | Retrieve manufacturer name and product ids if ProtocolInfo lets us | -| NodeInfo | Retrieve info about supported, controlled command classes | -| NodePlusInfo | Retrieve Z-Wave+ info and update device classes | -| SecurityReport | Retrieve a list of Command Classes that require Security | -| ManufacturerSpecific2 | Retrieve manufacturer name and product ids | -| Versions | Retrieve version information | -| Instances | Retrieve information about multiple command class instances | -| Static | Retrieve static information (doesn't change) | -| CacheLoad | Ping a device upon restarting with cached config for the device | -| Associations | Retrieve information about associations | -| Neighbors | Retrieve node neighbor list | -| Session | Retrieve session information (changes infrequently) | -| Dynamic | Retrieve dynamic information (changes frequently) | -| Configuration | Retrieve configurable parameter information (only done on request) | -| Complete | Query process is completed for this node | diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown deleted file mode 100644 index b6c420a91b..0000000000 --- a/source/_docs/z-wave/services.markdown +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: page -title: "Z-Wave Services" -description: "Services exposed by the Z-Wave component." -date: 2017-09-21 10:59 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The `zwave` component exposes multiple services to help maintain the network. All of these are available through the Z-Wave control panel. - -| Service | Description | -| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| add_node | Put the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network. | -| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. | -| cancel_command | Cancels a running Z-Wave command. If you have started an add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. | -| change_association | Add or remove an association in the Z-Wave network | -| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | -| heal_node | Tells the controller to "heal" a specific node on the network. Requires `node_id` field. You can also force return route update with `return_routes` field. -| print_config_parameter | Prints Z-Wave node's config parameter value to the (console) log. | -| print_node | Print all states of Z-Wave node. | -| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. | -| refresh_node | Refresh the Z-Wave node. | -| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. | -| rename_node | Sets a node's name. Requires a `node_id` and `name` field. | -| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. | -| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail. | -| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. | -| reset_node_meters | Reset a node's meter values. Only works if the node supports this. | -| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g., `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g., `"value": 1`). | -| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command. | -| start_network | Starts the Z-Wave network. | -| stop_network | Stops the Z-Wave network. | -| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead." | -| test_node | Tells the controller to send no-op command(s) to a specific node. Requires `node_id` field. You can specify amount of test_messages to send by specifying it with `messages` field. In theory, this could bring back nodes marked as "presumed dead" - -The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. If you're having issues with your Z-Wave network, try disabling this automation. - -

    -Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang. -

    - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: test at 2:30am - trigger: - platform: time - at: '2:30:00' - action: - service: zwave.test_network - - - alias: heal at 2:32am - trigger: - platform: time - at: '2:32:00' - action: - service: zwave.heal_network -``` diff --git a/source/_faq/after-upgrading.markdown b/source/_faq/after-upgrading.markdown deleted file mode 100644 index 0440745d0a..0000000000 --- a/source/_faq/after-upgrading.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "After upgrading, your browser login gets stuck" -description: "After upgrading, your browser login gets stuck" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Usage ---- - - -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" diff --git a/source/_faq/browser.markdown b/source/_faq/browser.markdown deleted file mode 100644 index ee2dd204f7..0000000000 --- a/source/_faq/browser.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Frontend is acting weird" -description: "Frontend is acting weird" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Usage ---- - - -Close the windows or tab and clear the cache. The frontend is aggressively caching and clearing the cache ensures that the frontend is reloaded when you access it the next time. diff --git a/source/_faq/component.markdown b/source/_faq/component.markdown deleted file mode 100644 index 0f46cf01cf..0000000000 --- a/source/_faq/component.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "My component does not show up" -description: "My component does not show up" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Configuration ---- - - -When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your component you are trying to set up. - -If you have incorrect entries in your configuration files you can use the `check_config` script to assist in identifying them: `hass --script check_config`. diff --git a/source/_faq/configuration-file.markdown b/source/_faq/configuration-file.markdown deleted file mode 100644 index 8f06e8247f..0000000000 --- a/source/_faq/configuration-file.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Why are you using YAML for the configuration file?" -description: "Why are you using YAML for the configuration file?" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Configuration ---- - - -And not JSON or XML for the [configuration file](/docs/configuration/)? Because [YAML](/docs/configuration/yaml/) can be written by hand, you don't have to care about commas or tag and it's a superset of JSON. diff --git a/source/_faq/connection-error.markdown b/source/_faq/connection-error.markdown deleted file mode 100644 index 3acb6edd3d..0000000000 --- a/source/_faq/connection-error.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Connection error" -description: "Connection error" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Usage ---- - - -It can happen that you get a traceback that notify you about connection issues while running Home Assistant. Eg. - -```bash -ConnectionRefusedError: [Errno 111] Connection refused -``` - -The chance is very high that this is not a bug but an issue with the service/daemon itself. Check your network (DNS, DHCP, uplink, etc.) first and make sure that Home Assistant and the service are poperly configured. Keep in mind that webservices can be down. diff --git a/source/_faq/dependencies.markdown b/source/_faq/dependencies.markdown deleted file mode 100644 index 3e8e5781f8..0000000000 --- a/source/_faq/dependencies.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "Dependencies" -description: "Dependencies" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Usage ---- - -The dependencies which are used by Home Assistant are stored in the folder `deps` of the [configuration folder](/docs/configuration/) directory. After an [upgrade](/docs/installation/updating/) the dependences will be upgraded as well. - diff --git a/source/_faq/distutils.markdown b/source/_faq/distutils.markdown deleted file mode 100644 index 75f9a72e61..0000000000 --- a/source/_faq/distutils.markdown +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: page -title: "distutils.errors.DistutilsOptionError" -description: "distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Installation ---- - -The problem which leads to `distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both` is a known issue if you're on a Mac using Homebrew to install Python. Please follow [these instructions](https://github.com/Homebrew/brew/blob/master/docs/Homebrew-and-Python.md#note-on-pip-install---user) to resolve it. diff --git a/source/_faq/documentation-tool.markdown b/source/_faq/documentation-tool.markdown deleted file mode 100644 index 15357cae46..0000000000 --- a/source/_faq/documentation-tool.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Documentation tools" -description: "Tools for creating the documentation" -date: 2017-06-18 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Documentation ---- - - -Why are you not using tools X for the documentation? Because the current solution works for us and we see no additional value in using a separate publishing platform. diff --git a/source/_faq/ha-vs-hassio.markdown b/source/_faq/ha-vs-hassio.markdown deleted file mode 100644 index 41e373cfee..0000000000 --- a/source/_faq/ha-vs-hassio.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Home Assistant vs. Hass.io" -description: "Home Assistant vs. Hass.io" -date: 2018-02-12 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Installation ---- - -Home Assistant is a Python program, in simple words. It can be run various operating system and provide the ability to track, control and automate your devices. When people talking about Home Assistant they usually refer to a standalone [installation method](/docs/installation/). - -[Hass.io](/hassio/) is a combination of Home Assistant and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first. Hass.io is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a standalone setup of Home Assistant. - -Be aware that add-ons are only available in Hass.io, due to the way Hass.io is installed. diff --git a/source/_faq/libyaml.markdown b/source/_faq/libyaml.markdown deleted file mode 100644 index 59b89bee0b..0000000000 --- a/source/_faq/libyaml.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: page -title: "libyaml is not found or a compiler error" -description: "libyaml is not found or a compiler error" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Installation ---- - - -On a Debian system, install the Python 3 YAML library by `sudo apt-get install python3-yaml`. diff --git a/source/_faq/missing-documentation.markdown b/source/_faq/missing-documentation.markdown deleted file mode 100644 index a37bde635d..0000000000 --- a/source/_faq/missing-documentation.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Missing Documentation" -description: "The docs are missing or outdated" -date: 2017-06-18 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Documentation ---- - - -Home Assistant is a FAST moving open source project. This means occasionally the official documentation will not be 100% current or complete. Since this is an open source volunteer project, we would encourage anyone who finds gaps in the documentation to click the `edit this page on Github` link in the top right and submit any corrections/enhancements they may find useful. - -In the absence of information, many users find it beneficial to look at other people's configurations to find examples of what they want to accomplish in their own configurations. The easiest way to find these configurations is through this [Github search](https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories). diff --git a/source/_faq/pip.markdown b/source/_faq/pip.markdown deleted file mode 100644 index 45b3d12731..0000000000 --- a/source/_faq/pip.markdown +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "No module named pip" -description: "No module named pip" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Installation ---- - - -[Pip](https://pip.pypa.io/en/stable/) should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run `python3 -m pip --version` you can install `pip` by [downloading the installer](https://bootstrap.pypa.io/get-pip.py) and running it with Python 3: - -```bash -$ python3 get-pip.py -``` diff --git a/source/_faq/pip3.markdown b/source/_faq/pip3.markdown deleted file mode 100644 index 9b4fe56e02..0000000000 --- a/source/_faq/pip3.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "pip3: command not found" -description: "pip3: command not found" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Installation ---- - - -This utility should have been installed as part of the Python 3 installation. Check if Python 3 is installed by running `python3 --version`. If it is not installed, [download it here](https://www.python.org/getit/). - -If you are able to successfully run `python3 --version` but not `pip3`, install Home Assistant by running the following command instead: - -```bash -$ python3 -m pip install homeassistant -``` - -On a Debian system, you can also install python3 by `sudo apt-get install python3`d and pip3 by `sudo apt-get install python3-pip`. diff --git a/source/_faq/problems-with-dependencies.markdown b/source/_faq/problems-with-dependencies.markdown deleted file mode 100644 index a2535ee794..0000000000 --- a/source/_faq/problems-with-dependencies.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Problems with dependencies" -description: "Problems with dependencies" -date: 2017-06-18 09:00 -comments: false -sharing: true -footer: true -ha_category: Usage ---- - -Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in `home-assistant.log`. - -The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you can't figure it out, please [report it](https://github.com/home-assistant/home-assistant/issues) so we can investigate what is going on. diff --git a/source/_faq/python.markdown b/source/_faq/python.markdown deleted file mode 100644 index 97cdacb34c..0000000000 --- a/source/_faq/python.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Python 2" -description: "Support for Python 2" -date: 2017-06-18 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Common ---- - - -There will be no support for Python 2.x. Python 2 will be EOL in [2020](https://www.python.org/dev/peps/pep-0373/#id2) and it doesn't make any sense to support a release which was planned to be retired in 2015. diff --git a/source/_faq/release.markdown b/source/_faq/release.markdown deleted file mode 100644 index f109e5468d..0000000000 --- a/source/_faq/release.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Releases" -description: "Releases" -date: 2017-06-18 09:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Common ---- - -The usual release cycle is two weeks. Every other weekend will a new release of Home Assistant be available. There is no fix day or time when the release will happen because that depends on the person who is finishing the release. It can already be Monday at your location. If there was no announcement made in the previous release notes or on another communication channel then the release will happen. - diff --git a/source/_includes/after_footer.html b/source/_includes/after_footer.html deleted file mode 100644 index 08b8e3400a..0000000000 --- a/source/_includes/after_footer.html +++ /dev/null @@ -1,5 +0,0 @@ -{% include disqus.html %} -{% include facebook_like.html %} -{% include google_plus_one.html %} -{% include twitter_sharing.html %} -{% include custom/after_footer.html %} diff --git a/source/_includes/archive_post.html b/source/_includes/archive_post.html deleted file mode 100644 index 210dbbbe73..0000000000 --- a/source/_includes/archive_post.html +++ /dev/null @@ -1,8 +0,0 @@ -{% capture category %}{{ post.categories | size }}{% endcapture %} -

    {% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

    - -{% if category != '0' %} -
    - posted in {{ post.categories | category_links }} -
    -{% endif %} diff --git a/source/_includes/article.html b/source/_includes/article.html deleted file mode 100644 index f88d16cc9c..0000000000 --- a/source/_includes/article.html +++ /dev/null @@ -1,35 +0,0 @@ -{% unless page.no_header %} -
    - {% if index %} -

    {% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}

    - {% else %} -

    {% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}

    - {% endif %} - {% unless page.meta == false %} -

    - {% include post/date.html %}{{ time }} - {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} - | Comments - {% endif %} -

    - {% endunless %} -
    -{% endunless %} -{% if index %} -
    - {% if post.excerpted %} - {{ post.excerpt }} - - {% else %} - {{ post.content }} - {% endif %} -
    - {% if post.excerpted %} - - {% endif %} -{% else %} -
    {{ content }}
    -{% endif %} diff --git a/source/_includes/aside.html b/source/_includes/aside.html deleted file mode 100644 index 94244aa052..0000000000 --- a/source/_includes/aside.html +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/source/_includes/asides/about.html b/source/_includes/asides/about.html deleted file mode 100644 index 5d672861ad..0000000000 --- a/source/_includes/asides/about.html +++ /dev/null @@ -1,15 +0,0 @@ -
    -

    About Home Assistant

    - -
    -
    - - diff --git a/source/_includes/asides/categories.html b/source/_includes/asides/categories.html deleted file mode 100644 index 8d600335bf..0000000000 --- a/source/_includes/asides/categories.html +++ /dev/null @@ -1,9 +0,0 @@ -
    -

    Categories

    - -
    diff --git a/source/_includes/asides/cloud_navigation.html b/source/_includes/asides/cloud_navigation.html deleted file mode 100644 index 93a7baf70e..0000000000 --- a/source/_includes/asides/cloud_navigation.html +++ /dev/null @@ -1,14 +0,0 @@ -
    -

    About Home Assistant

    -
      -
    • - The Home Assistant Cloud is a cloud-based service provided to supporters of the Home Assistant project. -
    • -
    • - {% active_link /cloud/ Introduction %} -
    • -
    • - {% active_link /cloud/ Amazon Alexa %} -
    • -
    - diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html deleted file mode 100644 index 56ba92ee77..0000000000 --- a/source/_includes/asides/component_navigation.html +++ /dev/null @@ -1,125 +0,0 @@ -{% assign components = site.components | sort: 'title' %} -{% assign github_main_repo = 'https://github.com/home-assistant/home-assistant/blob/master/homeassistant' %} -
    - {% include edit_github.html %} - -
    - {% if page.logo %} - - {% endif %} -
    - - {% assign file_parts = page.url | split: '/' | last | split: '.' %} - - {% if file_parts.size == 2 %} - {% assign is_platform = true %} - {% assign imp_name = file_parts[1] %} - {% assign parent_name = file_parts[0] %} - {% assign parent_url = parent_name | prepend: '/components/' | append: '/' %} - {% assign parent_component = components | where: 'url', parent_url | first %} - {% else %} - {% assign is_platform = false %} - {% assign imp_name = file_parts | first %} - {% endif %} - - {% if page.ha_iot_class %} -
    - IoT class: {{ page.ha_iot_class }} -
    - {% endif %} - - {% if page.ha_release %} -
    - Introduced in release: {{ page.ha_release }} -
    - {% endif %} - - {% if is_platform %} - - {% endif %} - - {% if is_platform and parent_name != 'sensor' %} -
    - This is a platform for - the {{parent_component.title}} component. -
    - - {% elsif is_platform == false and imp_name != 'ifttt' %} - - {% assign platforms_found = false %} - {% for component in components %} - {% if component.url != page.url %} - {% assign comp_imp_name = component.url | split: '/' | last | split: '.' | first %} - {% if comp_imp_name == imp_name %} - {% unless platforms_found %} - {% assign platforms_found = true %} -

    Platforms

    - - {% endif %} - - {% endif %} - - - {% assign related_found = false %} - {% for component in components %} - {% if component.url != page.url %} - {% assign comp_file_parts = component.url | split: '/' | last | split: '.' %} - {% if comp_file_parts.size == 2 %} - {% assign comp_imp_name = comp_file_parts | last %} - {% else %} - {% assign comp_imp_name = comp_file_parts | first %} - {% endif %} - - {% if comp_imp_name == imp_name %} - {% unless related_found %} - {% assign related_found = true %} -
    -

    Related components

    - -
    - {% endif %} - - - - {% if page.ha_category %} -
    -

    Category {{page.ha_category}}

    -
      - {% for component in components %} - {% if component.ha_category == page.ha_category %} -
    • - {% if component.url == page.url %} - {{component.title}} - {% else %} - {{component.title}} - {% endif %} -
    • - {% endif %} - {% endfor %} -
    -
    - {% endif %} -
    diff --git a/source/_includes/asides/cookbook_navigation.html b/source/_includes/asides/cookbook_navigation.html deleted file mode 100644 index 7b6287c056..0000000000 --- a/source/_includes/asides/cookbook_navigation.html +++ /dev/null @@ -1,27 +0,0 @@ -
    - {% include edit_github.html %} - {% assign cookbook = site.cookbook | sort: 'title' %} - - - -
    -

    {{page.ha_category}}

    -
      - {% for recipe in cookbook %} - {% if recipe.ha_category == page.ha_category %} -
    • - {% if recipe.url == page.url %} - {{recipe.title}} - {% elsif recipe.ha_external_link %} - {{recipe.title}} - {% else %} - {{recipe.title}} - {% endif %} -
    • - {% endif %} - {% endfor %} -
    -
    -
    diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html deleted file mode 100644 index b956865e7a..0000000000 --- a/source/_includes/asides/docs_navigation.html +++ /dev/null @@ -1,209 +0,0 @@ -
    -
    -

    Topics

    - -
    -
    diff --git a/source/_includes/asides/faq_navigation.html b/source/_includes/asides/faq_navigation.html deleted file mode 100644 index 68ccac63eb..0000000000 --- a/source/_includes/asides/faq_navigation.html +++ /dev/null @@ -1,22 +0,0 @@ -
    -
    -

    Entries

    - -
    -
    diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html deleted file mode 100644 index 9d41bb402b..0000000000 --- a/source/_includes/asides/getting_started_navigation.html +++ /dev/null @@ -1,15 +0,0 @@ -
    - {% include edit_github.html %} - -
    -

    Getting Started Guide

    - -
    -
    diff --git a/source/_includes/asides/hassio_navigation.html b/source/_includes/asides/hassio_navigation.html deleted file mode 100644 index d29e2ac608..0000000000 --- a/source/_includes/asides/hassio_navigation.html +++ /dev/null @@ -1,28 +0,0 @@ -
    -
    -

    Topics

    - - - -
    -
    diff --git a/source/_includes/asides/help_navigation.html b/source/_includes/asides/help_navigation.html deleted file mode 100644 index 458a6a9385..0000000000 --- a/source/_includes/asides/help_navigation.html +++ /dev/null @@ -1,33 +0,0 @@ -
    - {% include edit_github.html %} - -
    -

     

    - -
    -
    diff --git a/source/_includes/asides/recent_posts.html b/source/_includes/asides/recent_posts.html deleted file mode 100644 index 66628e6b92..0000000000 --- a/source/_includes/asides/recent_posts.html +++ /dev/null @@ -1,12 +0,0 @@ -
    -

    Recent Posts

    -
      - {% for post in site.posts limit: site.recent_posts %} - {% if post.url != page.url %} -
    • - {{ post.title }} -
    • - {% endif %} - {% endfor %} -
    -
    diff --git a/source/_includes/blog/archive_post.html b/source/_includes/blog/archive_post.html deleted file mode 100644 index 8846fb5f75..0000000000 --- a/source/_includes/blog/archive_post.html +++ /dev/null @@ -1,20 +0,0 @@ -{% capture category %}{{ post.categories | size }}{% endcapture %} - -
    - -
    - -
    -
    -

    {{post.title}}

    - {% if category != '0' %} -
    - {% include blog/post/tags.html %} -
    - {% endif %} -
    -
    - -
    \ No newline at end of file diff --git a/source/_includes/blog/post/article.html b/source/_includes/blog/post/article.html deleted file mode 100644 index ed23624766..0000000000 --- a/source/_includes/blog/post/article.html +++ /dev/null @@ -1,34 +0,0 @@ -
    - {% if index %} -

    - {{ post.title }} -

    - {% else %} -

    {{ page.title }}

    - {% endif %} - - {% unless post.meta == false %} -
    - {% include blog/post/date.html %}{{ time }} - {% include post/author.html %} - {% include post/time_to_read.html %} - {% include blog/post/tags.html %} - {% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %} - Comments - {% endif %} -
    - {% endunless %} -
    - -{% if index %} -
    - {{ post.excerpt }} - {% if post.content contains site.excerpt_separator %} - {{ site.excerpt_link }} - {% endif %} -
    -{% else %} - {{ post.content | replace: site.excerpt_separator, '' }} -{% endif %} diff --git a/source/_includes/blog/post/date.html b/source/_includes/blog/post/date.html deleted file mode 100644 index 247baa7526..0000000000 --- a/source/_includes/blog/post/date.html +++ /dev/null @@ -1,15 +0,0 @@ -{% capture date %}{{ page.date }}{{ post.date }}{% endcapture %} -{% capture date_formatted %}{{ post.date_formatted }}{% endcapture %} -{% capture has_date %}{{ date | size }}{% endcapture %} - -{% capture updated %}{{ page.updated }}{{ post.updated }}{% endcapture %} -{% capture updated_formatted %}{{ page.updated_formatted }}{{ post.updated_formatted }}{% endcapture %} -{% capture was_updated %}{{ updated | size }}{% endcapture %} - -{% if has_date != '0' %} - {% capture time %}{% endcapture %} -{% endif %} - -{% if was_updated != '0' %} - {% capture updated %}{% endcapture %} -{% else %}{% assign updated = false %}{% endif %} \ No newline at end of file diff --git a/source/_includes/blog/post/disqus_thread.html b/source/_includes/blog/post/disqus_thread.html deleted file mode 100644 index b1acd8cca8..0000000000 --- a/source/_includes/blog/post/disqus_thread.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/source/_includes/blog/post/tags.html b/source/_includes/blog/post/tags.html deleted file mode 100644 index 1c6cf175c1..0000000000 --- a/source/_includes/blog/post/tags.html +++ /dev/null @@ -1,17 +0,0 @@ -{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} -{% unless category == '0' %} - - -
      - {% if post %} - {% for item in post.categories %} -
    • {{ item | category_link }}
    • - {% endfor %} - {% else %} - {% for item in page.categories %} -
    • {{ item | category_link }}
    • - {% endfor %} - {% endif %} -
    -
    -{% endunless %} \ No newline at end of file diff --git a/source/_includes/custom/after_footer.html b/source/_includes/custom/after_footer.html deleted file mode 100644 index 5714d201d9..0000000000 --- a/source/_includes/custom/after_footer.html +++ /dev/null @@ -1,24 +0,0 @@ -{% comment %} - Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example) -{% endcomment %} - diff --git a/source/_includes/custom/asides/about.html b/source/_includes/custom/asides/about.html deleted file mode 100644 index 59d309e4d8..0000000000 --- a/source/_includes/custom/asides/about.html +++ /dev/null @@ -1,4 +0,0 @@ -
    -

    About Me

    -

    A little something about me.

    -
    diff --git a/source/_includes/custom/category_feed.xml b/source/_includes/custom/category_feed.xml deleted file mode 100644 index a1371375db..0000000000 --- a/source/_includes/custom/category_feed.xml +++ /dev/null @@ -1,26 +0,0 @@ ---- ---- - - - - <![CDATA[{{ page.title }} | {{ site.title }}]]> - - - {{ site.time | date_to_xmlschema }} - {{ site.url }}/ - - - {% if site.email %}{% endif %} - - Octopress - - {% for post in site.categories[page.category] limit: 5 %} - - <![CDATA[{{ post.title | cdata_escape }}]]> - - {{ post.date | date_to_xmlschema }} - {{ site.url }}{{ post.id }} - - - {% endfor %} - diff --git a/source/_includes/custom/footer.html b/source/_includes/custom/footer.html deleted file mode 100644 index 1a2e590320..0000000000 --- a/source/_includes/custom/footer.html +++ /dev/null @@ -1,27 +0,0 @@ - diff --git a/source/_includes/custom/grid_item_left.html b/source/_includes/custom/grid_item_left.html deleted file mode 100644 index 174c314dfa..0000000000 --- a/source/_includes/custom/grid_item_left.html +++ /dev/null @@ -1,50 +0,0 @@ -

    Observe

    -
    -

    Home Assistant will track the state of all the devices in your home, so you don't have to.

    - - -

    Browse all »

    - diff --git a/source/_includes/custom/grid_item_middle.html b/source/_includes/custom/grid_item_middle.html deleted file mode 100644 index 4f599cca1a..0000000000 --- a/source/_includes/custom/grid_item_middle.html +++ /dev/null @@ -1,6 +0,0 @@ -

    Control

    -
    -

    Control all your devices from a single, mobile-friendly, interface.

    -

    - Home Assistant allows you to control all your devices without storing any of your data in the cloud. We like to keep your privacy private. -

    \ No newline at end of file diff --git a/source/_includes/custom/grid_item_right.html b/source/_includes/custom/grid_item_right.html deleted file mode 100644 index a1b637ad6b..0000000000 --- a/source/_includes/custom/grid_item_right.html +++ /dev/null @@ -1,12 +0,0 @@ -

    Automate

    -
    -

    Set up advanced rules to control devices and bring your home alive.

    -

    Do you want to …

    -
      -
    • have the lights turn on when the sun sets and you are home?
    • -
    • have the lights turn on when anyone comes home and it is dark?
    • -
    • dim the lights when you start watching a movie on your Chromecast?
    • -
    • receive a message when the lights turn on while you are not at home?
    • -
    -

    We've got you covered.

    -

    View examples by the community.

    diff --git a/source/_includes/custom/header.html b/source/_includes/custom/header.html deleted file mode 100644 index d0b387b1c1..0000000000 --- a/source/_includes/custom/header.html +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - - - -
    diff --git a/source/_includes/custom/navigation.html b/source/_includes/custom/navigation.html deleted file mode 100644 index 6af93d4b49..0000000000 --- a/source/_includes/custom/navigation.html +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/source/_includes/custom/unused_head.html b/source/_includes/custom/unused_head.html deleted file mode 100644 index b861f92230..0000000000 --- a/source/_includes/custom/unused_head.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/source/_includes/custom/welcome.html b/source/_includes/custom/welcome.html deleted file mode 100644 index 407028a9e2..0000000000 --- a/source/_includes/custom/welcome.html +++ /dev/null @@ -1,10 +0,0 @@ -

    Awaken your home

    -

    -Home Assistant is an open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Perfect to run on a Raspberry Pi. -

    - -

    - Get started - View demo - Browse code on GitHub -

    diff --git a/source/_includes/disqus.html b/source/_includes/disqus.html deleted file mode 100644 index 49c6a29cdb..0000000000 --- a/source/_includes/disqus.html +++ /dev/null @@ -1,21 +0,0 @@ -{% comment %} Load script if disquss comments are enabled and `page.comments` is either empty (index) or set to true {% endcomment %} -{% if site.disqus_short_name and page.comments != false %} - -{% endif %} diff --git a/source/_includes/edit_github.html b/source/_includes/edit_github.html deleted file mode 100644 index b5fa2329b8..0000000000 --- a/source/_includes/edit_github.html +++ /dev/null @@ -1,4 +0,0 @@ -{% assign url_parts = page.url | split: '/' %} -{% if page.hide_github_edit != true %} - -{% endif %} diff --git a/source/_includes/facebook_like.html b/source/_includes/facebook_like.html deleted file mode 100644 index d263e6d294..0000000000 --- a/source/_includes/facebook_like.html +++ /dev/null @@ -1,10 +0,0 @@ -{% if site.facebook_like %} -
    - -{% endif %} diff --git a/source/_includes/footer.html b/source/_includes/footer.html deleted file mode 100644 index 3a8c768747..0000000000 --- a/source/_includes/footer.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/footer.html %} diff --git a/source/_includes/google_analytics.html b/source/_includes/google_analytics.html deleted file mode 100644 index 4d4d596906..0000000000 --- a/source/_includes/google_analytics.html +++ /dev/null @@ -1,13 +0,0 @@ -{% if site.google_analytics_tracking_id %} - -{% endif %} diff --git a/source/_includes/google_plus_one.html b/source/_includes/google_plus_one.html deleted file mode 100644 index b69ddaeb49..0000000000 --- a/source/_includes/google_plus_one.html +++ /dev/null @@ -1,9 +0,0 @@ -{% if site.google_plus_one %} - -{% endif %} diff --git a/source/_includes/header.html b/source/_includes/header.html deleted file mode 100644 index 524de6514b..0000000000 --- a/source/_includes/header.html +++ /dev/null @@ -1 +0,0 @@ -{% include custom/header.html %} diff --git a/source/_includes/javascripts/algolia.html b/source/_includes/javascripts/algolia.html deleted file mode 100644 index a8540981b1..0000000000 --- a/source/_includes/javascripts/algolia.html +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/source/_includes/javascripts/delicious.html b/source/_includes/javascripts/delicious.html deleted file mode 100644 index 34a4d5fec9..0000000000 --- a/source/_includes/javascripts/delicious.html +++ /dev/null @@ -1,16 +0,0 @@ -{% if site.delicious_user %} - -{% endif %} -{% if site.pinboard_user %} - -{% endif %} \ No newline at end of file diff --git a/source/_includes/javascripts/disqus.html b/source/_includes/javascripts/disqus.html deleted file mode 100644 index 9dc9e55e58..0000000000 --- a/source/_includes/javascripts/disqus.html +++ /dev/null @@ -1,20 +0,0 @@ -{% if site.disqus_short_name and page.comments != false %} - -{% endif %} \ No newline at end of file diff --git a/source/_includes/javascripts/github.html b/source/_includes/javascripts/github.html deleted file mode 100644 index 63d529d42f..0000000000 --- a/source/_includes/javascripts/github.html +++ /dev/null @@ -1,21 +0,0 @@ -{% if site.github_user %} - - -{% endif %} diff --git a/source/_includes/javascripts/google_analytics.html b/source/_includes/javascripts/google_analytics.html deleted file mode 100644 index f7a420ab26..0000000000 --- a/source/_includes/javascripts/google_analytics.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if site.google_analytics_tracking_id %} - -{% endif %} diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html deleted file mode 100644 index dcb2fc520a..0000000000 --- a/source/_includes/javascripts/scripts.html +++ /dev/null @@ -1,12 +0,0 @@ -{% comment %} - - -{% endcomment %} - -{% include javascripts/google_analytics.html %} -{% include javascripts/algolia.html %} - -{% if page.sidebar != false %} -{% include javascripts/github.html %} -{% include javascripts/delicious.html %} -{% endif %} diff --git a/source/_includes/navigation.html b/source/_includes/navigation.html deleted file mode 100644 index 051dd7211a..0000000000 --- a/source/_includes/navigation.html +++ /dev/null @@ -1,19 +0,0 @@ -
      - {% comment %} -
    • RSS
    • - {% endcomment %} - {% if site.subscribe_email %} -
    • Email
    • - {% endif %} -
    -{% comment %} - {% if site.simple_search %} -
    -
    - - -
    -
    - {% endif %} -{% endcomment %} -{% include custom/navigation.html %} diff --git a/source/_includes/post/author.html b/source/_includes/post/author.html deleted file mode 100644 index 96a10c510a..0000000000 --- a/source/_includes/post/author.html +++ /dev/null @@ -1,8 +0,0 @@ -{% if post.author %} - {% assign author = post.author %} -{% elsif page.author %} - {% assign author = page.author %} -{% else %} - {% assign author = site.author %} -{% endif %} -{% if author %}{% endif %} diff --git a/source/_includes/post/categories.html b/source/_includes/post/categories.html deleted file mode 100644 index 4a98b29d5d..0000000000 --- a/source/_includes/post/categories.html +++ /dev/null @@ -1,10 +0,0 @@ -{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %} -{% unless category == '0' %} - - {% if post %} - {{ post.categories | category_links }} - {% else %} - {{ page.categories | category_links }} - {% endif %} - -{% endunless %} diff --git a/source/_includes/post/date.html b/source/_includes/post/date.html deleted file mode 100644 index ecf1ad71cf..0000000000 --- a/source/_includes/post/date.html +++ /dev/null @@ -1,15 +0,0 @@ -{% capture date %}{{ page.date }}{{ post.date }}{% endcapture %} -{% capture date_formatted %}{{ page.date_formatted }}{{ post.date_formatted }}{% endcapture %} -{% capture has_date %}{{ date | size }}{% endcapture %} - -{% capture updated %}{{ page.updated }}{{ post.updated }}{% endcapture %} -{% capture updated_formatted %}{{ page.updated_formatted }}{{ post.updated_formatted }}{% endcapture %} -{% capture was_updated %}{{ updated | size }}{% endcapture %} - -{% if has_date != '0' %} - {% capture time %}{% endcapture %} -{% endif %} - -{% if was_updated != '0' %} - {% capture updated %}{% endcapture %} -{% else %}{% assign updated = false %}{% endif %} \ No newline at end of file diff --git a/source/_includes/post/disqus_thread.html b/source/_includes/post/disqus_thread.html deleted file mode 100644 index b1acd8cca8..0000000000 --- a/source/_includes/post/disqus_thread.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/source/_includes/post/sharing.html b/source/_includes/post/sharing.html deleted file mode 100644 index 3007da6c0d..0000000000 --- a/source/_includes/post/sharing.html +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/source/_includes/post/time_to_read.html b/source/_includes/post/time_to_read.html deleted file mode 100644 index bdd98c5981..0000000000 --- a/source/_includes/post/time_to_read.html +++ /dev/null @@ -1 +0,0 @@ - {{ post.content | reading_time_as_s }} reading time \ No newline at end of file diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html deleted file mode 100644 index bb8a410e89..0000000000 --- a/source/_includes/site/footer.html +++ /dev/null @@ -1,7 +0,0 @@ -
    -
    -
    - {% include custom/footer.html %} -
    -
    -
    diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html deleted file mode 100644 index e45b34cb78..0000000000 --- a/source/_includes/site/head.html +++ /dev/null @@ -1,39 +0,0 @@ -{% capture fb_description %}{% if page.description %}{{ page.description }}{% endif %}{% endcapture %} -{% capture description %}{% if page.description %}{{ page.description }}{% else site.description %}{{ site.description }}{% endif %}{% endcapture %} -{% capture social_image %}{% if page.og_image %}{{ page.og_image | prepend: site.url }}{% else %}https://www.home-assistant.io/images/default-social.png{% endif %}{% endcapture %} - - - - - - - - - - {% if page.title %}{{ page.title }} - {% endif %}{{ site.title }} - - - {% if page.keywords %}{% endif %} - - - - - - - - - - - {% comment %}{% if page.og_image %}summary_large_image{% else %}summary{% endif %}{% endcomment %} - - - {% if page.author_twitter %}{% endif %} - - - - - - - - - diff --git a/source/_includes/site/header.html b/source/_includes/site/header.html deleted file mode 100644 index b3aace5b8c..0000000000 --- a/source/_includes/site/header.html +++ /dev/null @@ -1,7 +0,0 @@ -
    -
    - - {% include custom/header.html %} - -
    -
    \ No newline at end of file diff --git a/source/_includes/site/hero_unit.html b/source/_includes/site/hero_unit.html deleted file mode 100644 index 0a0654d67a..0000000000 --- a/source/_includes/site/hero_unit.html +++ /dev/null @@ -1,14 +0,0 @@ -
    -
    -
    -
    - - Home Assistant screenshot - -
    -
    - {% include custom/welcome.html %} -
    -
    -
    -
    diff --git a/source/_includes/site/navigation.html b/source/_includes/site/navigation.html deleted file mode 100644 index eeb27f6a96..0000000000 --- a/source/_includes/site/navigation.html +++ /dev/null @@ -1,3 +0,0 @@ - - -{% include custom/navigation.html %} \ No newline at end of file diff --git a/source/_includes/site/sidebar.html b/source/_includes/site/sidebar.html deleted file mode 100644 index 6ee8aaf444..0000000000 --- a/source/_includes/site/sidebar.html +++ /dev/null @@ -1,29 +0,0 @@ -
    - {% assign url_parts = page.url | split: '/' %} - {% if url_parts[1] == 'components' %} - {% include asides/component_navigation.html | compact_newlines %} - {% elsif url_parts[1] == 'cookbook' %} - {% include asides/cookbook_navigation.html | compact_newlines %} - {% elsif url_parts[1] == 'developers' or url_parts[1] == 'help' %} - {% include asides/help_navigation.html | compact_newlines %} - {% elsif url_parts[1] == 'getting-started' %} - {% 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 %} - {% elsif url_parts[1] == 'cloud' %} - {% include asides/cloud_navigation.html | compact_newlines %} - {% else %} - {% include asides/about.html %} - - {% if page.blog_index %} - {% include asides/categories.html %} - {% else %} - {% include post/sharing.html %} - {% include asides/recent_posts.html %} - {% endif %} - {% endif %} -
    diff --git a/source/_includes/twitter_sharing.html b/source/_includes/twitter_sharing.html deleted file mode 100644 index 7cd5fbc288..0000000000 --- a/source/_includes/twitter_sharing.html +++ /dev/null @@ -1,11 +0,0 @@ -{% if site.twitter_follow_button or site.twitter_tweet_button %} - -{% endif %} diff --git a/source/_includes/unused_head.html b/source/_includes/unused_head.html deleted file mode 100644 index 98a5897b9e..0000000000 --- a/source/_includes/unused_head.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - {% if page.title %}{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} - {% endif %}{{ site.title }} - - - {% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %} - - {% if page.keywords %}{% endif %} - - - - - - - {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} - - - - - - - - {% include custom/head.html %} - {% include google_analytics.html %} - diff --git a/source/_layouts/category_index.html b/source/_layouts/category_index.html deleted file mode 100644 index 770900ba36..0000000000 --- a/source/_layouts/category_index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -layout: page -title: "Blog index" ---- - -
    - {% for post in site.categories[page.category] %} - {% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %} - {% unless year == this_year %} - {% assign year = this_year %} -

    {{ year }}

    - {% endunless %} -
    - {% include blog/archive_post.html %} -
    - {% endfor %} -
    diff --git a/source/_layouts/compress.html b/source/_layouts/compress.html deleted file mode 100644 index 8248010b4a..0000000000 --- a/source/_layouts/compress.html +++ /dev/null @@ -1,10 +0,0 @@ ---- -# Jekyll layout that compresses HTML -# v3.0.2 -# http://jch.penibelst.de/ -# © 2014–2015 Anatol Broder -# MIT License ---- - -{% capture _LINE_FEED %} -{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "" %}{% endif %}{% unless _pre_before contains "" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " ;; ;" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %}
    Step Bytes
    raw {{ content | size }}{% if _profile_endings %}
    endings {{ _profile_endings }}{% endif %}{% if _profile_startings %}
    startings {{ _profile_startings }}{% endif %}{% if _profile_comments %}
    comments {{ _profile_comments }}{% endif %}{% if _profile_collapse %}
    collapse {{ _profile_collapse }}{% endif %}{% if _profile_clippings %}
    clippings {{ _profile_clippings }}{% endif %}
    {% endif %}{% endif %} diff --git a/source/_layouts/default.html b/source/_layouts/default.html deleted file mode 100644 index ca7e0199c2..0000000000 --- a/source/_layouts/default.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: compress ---- - -{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %}{% include site/head.html %} - - - - - - {% if page.hero_unit %} - {% include site/hero_unit.html %} - {% endif %} - -
    -
    - {% if page.is_post and page.sidebar == false %} -
    - {% elsif page.is_homepage %} -
    - {% else %} -
    - {% endif %} - - {{ content | nofollow }} - -
    - - {% unless page.sidebar == false %} - - {% endunless %} -
    -
    - -
    - {% include site/footer.html %} -
    - - {% include javascripts/scripts.html %} - - diff --git a/source/_layouts/page.html b/source/_layouts/page.html deleted file mode 100644 index cc6ca95b78..0000000000 --- a/source/_layouts/page.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default ---- - -
    - {% assign url_parts = page.url | split: '/' %} - {% if url_parts[1] != 'components' and - url_parts[1] != 'cookbook' and - url_parts[1] != 'developers' and - url_parts[1] != 'help' and - url_parts[1] != 'getting-started' %} - {% include edit_github.html %} - {% endif %} - - {% if page.title and page.show_title != false %} -
    -

    - {% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} -

    -
    -
    - {% endif %} - - {{ content }} - -
    diff --git a/source/_layouts/post.html b/source/_layouts/post.html deleted file mode 100644 index 2717179001..0000000000 --- a/source/_layouts/post.html +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: default -is_post: true ---- - -
    - {% assign post = page %} - {% include blog/post/article.html %} -
    - -
    - -{% if site.disqus_short_name and post.date < site.disqus_end_date and page.comments == true %} -
    -

    Comments

    -
    {% include blog/post/disqus_thread.html %}
    -
    - -{% include javascripts/disqus.html %} -{% endif %} - -{% if page.comments == true and post.date > site.disqus_end_date %} -
    - - -{% endif %} \ No newline at end of file diff --git a/source/_posts/2014-12-18-website-launched.markdown b/source/_posts/2014-12-18-website-launched.markdown deleted file mode 100644 index ba5b72487c..0000000000 --- a/source/_posts/2014-12-18-website-launched.markdown +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: post -title: "Website launched!" -description: "Home Assistant website has launched!" -date: 2014-12-18 23:24:45 0000 -date_formatted: "December 18, 2014" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Website ---- - -I finally took the time to setup a simple website to help people getting started with Home Assistant. The process was super smooth thanks to the great tools [Jekyll](http://jekyllrb.com) and [Octopress](http://octopress.org) and the great services [GitHub Pages](https://pages.github.com) and [CloudFlare](https://cloudflare.com). 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 deleted file mode 100644 index 11021623c7..0000000000 --- a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: post -title: "Home Control, Automation & the Smart Home" -description: "Overview of how the internet of things relates to home control, home automation and the smart home." -date: 2014-12-26 10:23:13 -0800 -date_formatted: December 26, 2014 -author: Paulus Schoutsen -author_twitter: balloob -comments: true -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 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**. - -As a bare minimum a hub has to keep track of the state of each device and should be able to control them if possible. For example, it has to know which lights are on or off and offer a way to control the lights. For a sensor it only has to know the value. A hub with these capabilities offers **home control**. - -

    - - Hub dashboard example - - Example of a hub's dashboard. Showing the state of 2 persons, 4 lights and the sun. -

    - -A step up from home control is to have the user setup triggers to send commands based on information in the home control layer. For example, to turn on the lights when a person arrives home. A hub with these capabilities is capable of **home automation**. - -Most hubs on the market today offer this in various degrees of functionality and usability. Some IoT-capable devices offer this too, but only control themselves and are usually limited to location and time-based events. - -The last category, and this is still very much in the future, is the **smart home**. A self-learning and adopting system that will decide which events should impact other devices. - -An example of a smart home in action is that it observes that when person A comes home, the lights in the living room and the kitchen switch on. While if person B comes home, the lights in the living room and the study room are switched on. The next time person A or B comes home, the smart home will turn on its preferred lights without any configuration being set by the user. - -A glimpse today at how the future can look is the [Nest thermostat](https://nest.com/). A thermostat smart enough to learn your schedule and adjust its own temperature accordingly. - -All this results in the following overview of Home Automation. - -

    - - Home Automation landscape - - Overview of the home automation landscape. -

    - -### Challenges - -You are probably wondering, this all seems relatively simple, why don't I have my very own smart home yet? There are a couple of challenges today that keep us from stepping into the future. - -#### More Internet of Things-capable devices - -The majority of the IoT products out there are either lights, switches or presence detection. That's not enough for your home to be very smart about. We need televisions, fridges, ovens and more to join the party to increase the number of devices that we can control. - -#### More data - -Most first generation IoT devices are only exposing information that is needed for controlling it. We need to be able to track all interactions with each device for our smart home to learn how interaction with devices influence other things. For example, we need to be able to track how many cups of coffee were made or how often the fridge was open. This will increase the information flow and open up a whole bunch of new possibilities. For example, the smart home can order new coffee when you're running low. - -#### Easy to use, open software that we can trust - -To increase adoption we will need people to trust their smart home system. It will be very tough to convince people to upgrade all their devices and upload all interactions with each of them to the cloud. This data could reveal their whole life including all bad habits. That's why such a system should be simple and open-source so people can validate that their data generated at home stays home. - -Anoter important booster for adoption is that the software should be easy to set up and use by the average user. A lot of people are not burning their hands yet on Home Automation because they are scared of configurating it. - -Home Assistant is trying to be this software. It is not there yet but trying hard. Device discovery and a user interface for configuring home automation are problems we hope to tackle in 2015 while not sacrificing any modularity or usability. - -Happy new year! diff --git a/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown b/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown deleted file mode 100644 index b27e780456..0000000000 --- a/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown +++ /dev/null @@ -1,48 +0,0 @@ ---- -layout: post -title: "Hello PushBullet, nice talking to you" -description: "Introducing the new notify component and PushBullet platform" -date: 2015-01-04 13:29:07 -0800 -date_formatted: January 4, 2015 -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -One of the things that was missing in Home Assistant for a while was a way to communicate with users. Wouldn't it be nice to get a message when important events happen like the lights being turned on while no one is home? Since the Home Assistant frontend runs as a web application on the phone, we have no way to bring ourselves to the front. This is where the new notify component comes in, powered by PushBullet. - -The new notify component will take in messages and tells them to the user. For now this will be powered by the very awesome [PushBullet](https://www.pushbullet.com/) but any other messaging platform can be easily added. - -

    - - A message triggered by the simple_alarm component is shown by PushBullet on the Moto360. -

    - -Read on to learn how to enable the notify component and integrate it with other components. - - - -### Enabling the notify component - -To enable the new notify component, add the following to your `home-assistant.conf`: - -```conf -[notify] -platform=pushbullet -api_key=ABCDEFGHJKLMNOPQRSTUVXYZ -``` - -You can get your api key from [your account page on PushBullet.com](https://www.pushbullet.com/account). - -### Sending messages from your component - -To be able to send messages, the notify component has to be loaded and initialized successfully. - -```python -import homeassistant.loader as loader - -def setup(hass, config): - notify = loader.get_component('notify') - notify.send_message(hass, "Hello from my component!") -``` 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 deleted file mode 100644 index a5e7026dd9..0000000000 --- a/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post -title: "Bootstrapping your setup with Discovery" -description: "Home Assistant can now auto detect and setup certain devices in your network." -date: 2015-01-11 21:49:08 0000 -date_formatted: January 11, 2015 -author: Paulus Schoutsen -author_twitter: balloob -comments: true -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 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. - -To enable the discovery component, add the following to your `home-assistant.conf`: - -```conf -[discovery] -``` - -A new [discovery section]({{site_root}}/developers/add_new_platform/#discovery) has been added to the Adding a new platform page with instructions how to make your platform discoverable. diff --git a/source/_posts/2015-01-13-nest-in-da-house.markdown b/source/_posts/2015-01-13-nest-in-da-house.markdown deleted file mode 100644 index b1d4a4e4f0..0000000000 --- a/source/_posts/2015-01-13-nest-in-da-house.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: post -title: "Nest in the house!" -description: "Home Assistant has added Nest to its list of supported products." -date: 2015-01-13 08:29:04 -0800 -date_formatted: January 13, 2015 -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -For thet majority of its existence, Home Assistant primary focus was on presence detection, lights and switches. But not anymore as we're expanding the supported devices. Today, we're proud to introduce Nest Thermostat integration for Home Assistant contributed by [Stefano Fiorini](https://github.com/sfiorini)! - -

    - -

    - -The new integration exists out of two parts: a generic thermostat component and a Nest platform implementation. The initial version implements provides a read-only card and services to control it. The plan is in the future to add temperature and away mode controls from the thermostat card and more info dialog. Internally, we are using the Python package [python-nest by jkoelker](https://github.com/jkoelker/python-nest) to talk to the Nest. - -If you own a Nest thermostat, add the following lines to your `home-assistant.conf`: - -```conf -[thermostat] -platform=nest -username=YOUR_USERNAME -password=YOUR_PASSWORD -``` diff --git a/source/_posts/2015-01-24-release-notes.markdown b/source/_posts/2015-01-24-release-notes.markdown deleted file mode 100644 index 4379a21a9c..0000000000 --- a/source/_posts/2015-01-24-release-notes.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -title: "Release notes for January 24, 2015" -description: "The release notes for January 24, 2015" -date: 2015-01-24 18:36 0000 -date_formatted: "January 24, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -I have just merged the latest version of the development branch into master. Here are some of the highlights of this release: - -**Configuration via the frontend**
    -Phliips Hue will now be auto discovered and uses the new `configurator` component to interact with the user to finish the setup process. - -**Wink Hub support**
    -Thanks to the work done by John McLaughlin and Geoff Norton we now support the lights, switches and sensors that are connected to the Wink hub. - -**The getting started guide and component page have been reorganized**
    -The getting started instructions have been split into separate pages per component and a general overview page. The goal is to have a page per component that describes: - - * What it does - * How to set it up - * Which states it maintains - * Which services it provides - * Additional development tips - -**More reasonable errors**
    -Home Assistant should now throw better errors and offer solutions if you do not have the right version of Python 3, forgot to clone the git submodules or install the dependencies. - -**Streamlined first launch**
    -Home Assistant now supports `--open-ui` and `--demo-mode` command line properties to open the browser automatically and have something to show. Home Assistant now supports to be run without a password, allowing the interface to login automatically on launch. diff --git a/source/_posts/2015-02-07-looking-at-the-past.markdown b/source/_posts/2015-02-07-looking-at-the-past.markdown deleted file mode 100644 index bac7154ca7..0000000000 --- a/source/_posts/2015-02-07-looking-at-the-past.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: post -title: "Looking at the past" -description: "Introducing history tracking for Home Assistant." -date: 2015-02-08 9:01:23 -0800 -date_formatted: "February 8, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Ever since the launch of Home Assistant you have been able to track the state of your house. But the view has always been limited to what the current state is. Not what it was. Today we are going to change that by introducing two brand new components: - -* Recorder component that will record every event to a SQLite database -* History component that will query and aggregate the recorded events - -By adding this view into the past, we are adding an extra dimension into the state of your house. This brings great new possibilities for future features. The focus of today's release is on getting the recording component to you to start recording and getting some data. To show what is being recorded a view has been added that shows the last 24 hours of your house. Expect more extensive tools to explore your history in the future. - -Adding history to the UI was a challenge on itself because the old UI did not support easy navigation. So to add to the awesomeness of this release, Home Assistant also got a face lift. - -The history component will be enabled for new users by default. For current users, run `scripts/update` to upgrade to the latest version and add `[history]` to your `home-assistant.conf` file. - -

    - - - -

    - -

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

    - - - -Tracking history is an exciting next step for Home Assistant and will power the next generation of features. Here a list of some of the cool things that can now be build: - - - Time Machine: explore the state of your house at any point in the past - - Smart Home: analyze behavior and use it to automate your house - - Summarize usage of the different components of your house diff --git a/source/_posts/2015-02-24-streaming-updates.markdown b/source/_posts/2015-02-24-streaming-updates.markdown deleted file mode 100644 index 88589cc870..0000000000 --- a/source/_posts/2015-02-24-streaming-updates.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: post -title: "Streaming updates" -description: "The frontend will now get the latest changes pushed while open." -date: 2015-02-24 22:41:27 0000 -date_formatted: February 24, 2015 -author: Paulus Schoutsen -author_twitter: balloob -comments: true -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 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. - -

    - - - -Streaming updates has been implemented using the HTML5 `EventSource` tag. Implementation is pretty straight forward as all the reconnection logic will be handled by the event source tag. The [server-side code](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/api.py#L90) is 50 lines and the [client-side code](https://github.com/home-assistant/home-assistant-js/blob/master/src/actions/stream.js) is 80 lines of code. - -All events that happen on the server will now also be sent to the browser. This turns any browser running the UI into a fully functioning [slave instance](/developers/architecture/#multiple-connected-instances) of Home Assistant. This opens up new possibilities for Home Assistant components that live completely client-side. - -Implementing EventSource was not without challenges. Here are some of the issues that had to be solved: - -A connection can go stale in Chrome without any event handler being called. This happens when a device goes into standby. For computers this is rare but for phones this occurs quite often. This has been solved by sending a regular ping from the server. The frontend will assume the connection has gone stale when it hasn't heard any communication for a while. Sending a ping will also help the server detect broken connections and clean them up. - -Another issue that I encountered is that Safari and Firefox would not fire the `open` event when the connection has been opened but when the first message has been received. To work around this the server will now fire a ping when the connection gets opened. diff --git a/source/_posts/2015-02-28-home-assistant-migrating-to-yaml.markdown b/source/_posts/2015-02-28-home-assistant-migrating-to-yaml.markdown deleted file mode 100644 index 255f17db9e..0000000000 --- a/source/_posts/2015-02-28-home-assistant-migrating-to-yaml.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: post -title: "Home Assistant moving to YAML" -description: "Configuration will now be more flexible" -date: 2015-03-01 20:38:00 +0100 -date_formatted: March 1, 2015 -author: "Theodor Lindquist" -comments: true -categories: Release-Notes ---- - -Home Assistant is now using [YAML](http://yaml.org/) for it's configuration file. YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components. - -The new file is named configuration.yaml and if it can't be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf. - -The home-assistant.conf.example has been replaced with an updated [configuration.yaml.example](https://github.com/home-assistant/home-assistant/blob/dev/config/configuration.yaml.example). - -Users of Home Assistant should migrate as the old configuration format is deprecated. diff --git a/source/_posts/2015-03-08-new-logo.markdown b/source/_posts/2015-03-08-new-logo.markdown deleted file mode 100644 index 4280e6be47..0000000000 --- a/source/_posts/2015-03-08-new-logo.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: post -title: "New logo for Home Assistant" -description: "A new logo has arrived for Home Assistant" -date: 2015-03-08 22:16:10 0000 -date_formatted: March 8, 2015 -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Organization ---- - -It is well known that you are either a good programmer or a good designer. It's rare you'll meet someone that is both. That's why it wasn't surprising to anyone that the logo that I made was mediocre — at best. Luckily, [Jeremy Geltman](http://jeremygeltman.com/) has come to the rescue and contributed a brand new logo for Home Assistant. - -The new logo follows Googles material design spec. It uses the blue color that Home Assistant uses in the interface and it comes in two versions: a high detailed version (for homescreen icon etc) and a simple version (for favicon etc). - -

    - -The old logo, the new detailed logo and the new simple logo. -

    diff --git a/source/_posts/2015-03-11-release-notes.markdown b/source/_posts/2015-03-11-release-notes.markdown deleted file mode 100644 index 260890e6c1..0000000000 --- a/source/_posts/2015-03-11-release-notes.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: post -title: "Release notes for March 11, 2015" -description: "The release notes for March 11, 2015" -date: 2015-03-11 18:36 0000 -date_formatted: "March 11, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It has only been a little over a week since Theodor introduced YAML support for Home Assistant but so much has already happened that it is time for a summary of recent changes. Before mentioning the highlights I want to thank [andythigpen](https://github.com/andythigpen), [jamespcole](https://github.com/jamespcole) and [theolind](https://github.com/theolind) for numerous bug fixes, enhancements and new contributions. Thanks! - -__Monitor local resources.__
    -Theodor has contributed a new sensor platform to allow you to monitor disk usage, memory usage, CPU usage and running processes. This platform has superseded the process component which is now considered deprecated. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: systemmonitor - resources: - - type: disk_use_percent - arg: /home - - type: memory_free - - type: process - arg: kodi -``` - -__Experimental Z-Wave support__
    -There is now experimental support for connecting Z-Wave networks using a Z-Wave USB stick. Right now it only integrates Z-Wave sensors into Home Assistant. Our goal is to get this tested by more people before adding support for other Z-Wave devices. - -The new component is built on top of [python-openzwave](https://code.google.com/p/python-openzwave/). This package is currently not distributed on PyPi so we've added a script `scripts/build_python_openzwave` to install it on your machine. Alternatively you can use the Docker image which is ready to go. - -The development was done using an AEON Z-Wave USB stick and an AEON Z-Wave MultiSensor. - -```yaml -# Example configuration.yaml entry -zwave: - usb_path: /dev/ttyUSB0 -``` - -__Voice control__
    -An initial version of voice control for Home Assistant has landed. The current implementation consists of two parts. - -The first part is a component called `conversation` that exposes the service `conversation/process`. This service is capable of processing text and translating them into commands for devices. For now it will only support commands in the format of `Turn `. - -The second part is an upgrade to the frontend to use the speech-to-text in Chrome to allow users to speak commands. If you're using Chrome, you can test this out in [the demo](/demo/). - -```yaml -# Example configuration.yaml entry -conversation: -``` diff --git a/source/_posts/2015-03-22-release-notes.markdown b/source/_posts/2015-03-22-release-notes.markdown deleted file mode 100644 index 3092c6f4e7..0000000000 --- a/source/_posts/2015-03-22-release-notes.markdown +++ /dev/null @@ -1,87 +0,0 @@ ---- -layout: post -title: "Release notes for March 22, 2015" -description: "New support added for SabNZBD, Pushover, scenes and scripts." -date: 2015-03-22 0:21 -0800 -date_formatted: "March 22, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- -A new version of Home Assistant has just been pushed out. It contains bugfixes contributed by [jamespcole](https://github.com/jamespcole), [andythigpen](https://github.com/andythigpen), [trainman419](https://github.com/trainman419) and [me](https://github.com/balloob). It also adds a bunch of great new features: - -__Script__ -Andythigpen has contributed a script component. This allows users to create a sequence of service calls and delays. Scripts can be started using the service `script/turn_on` and interrupted using the service `script/turn_off`. A separate page has been added to the frontend to see the status of your scripts. - -```yaml -# Example configuration.yaml entry -script: - # Turns on the bedroom lights and then the living room lights 1 minute later - wakeup: - alias: Wake Up - sequence: - - alias: Bedroom lights on - execute_service: light.turn_on - service_data: - entity_id: group.bedroom - - delay: - # supports seconds, milliseconds, minutes, hours, etc. - minutes: 1 - - alias: Living room lights on - execute_service: light.turn_on - service_data: - entity_id: group.living_room -``` - - - -__Scene__ -I (Paulus) have contributed a scene component. A user can create scenes that capture the states you want certain entities to be. For example a scene can contain that light A should be turned on and light B should be bright red. Deactivating a scene will restore the previous state from before the scene was activated. Just like scripts, scenes have their own separate page to see which scenes are on. - -```yaml -# Example configuration.yaml entry -scene: - - name: Romantic - entities: - light.tv_back_light: on - light.ceiling: - state: on - color: [0.33, 0.66] - brightness: 200 -``` - - -__SABnzbd__ - James Cole has contributed support to integrate SABnzbd. This will allow you to monitor your downloads from within Home Assistant and setup automation based on the information. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: sabnzbd - name: SAB - api_key: YOUR_API_KEY - # Example: http://192.168.1.32:8124/ - base_url: YOUR_SABNZBD_BASE_URL - monitored_variables: - - type: 'current_status' - - type: 'speed' - - type: 'queue_size' - - type: 'queue_remaining' - - type: 'disk_size' - - type: 'disk_free' -``` - - -__PushOver__ - James Cole has also contributed support for the PushOver service as a platform for the notify component. This allows components to send messages to the user using PushOver. - -```yaml -# Example configuration.yaml entry -notify: - platform: pushover - # Get this by registering a new application on https://pushover.net - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - # Get this by logging into your account on https://pushover.net - user_key: ABCDEFGHJKLMNOPQRSTUVXYZ -``` diff --git a/source/_posts/2015-04-25-release-notes.markdown b/source/_posts/2015-04-25-release-notes.markdown deleted file mode 100644 index e737d072ad..0000000000 --- a/source/_posts/2015-04-25-release-notes.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: post -title: "Release notes for April 25, 2015" -description: "Introducing support for line charts, a logbook, ISY994 hub, Transmission and modbus." -date: 2015-04-25 6:57 -0700 -date_formatted: "April 25, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It's been a month since the latest update and a lot has happened again. Here a quick overview of the new things. - -__Line Charts__ -[James](https://github.com/jamespcole) has upgraded the history in the frontend to support line graphs. Line graphs will be shown for any entity that has a unit of measurement. The line graphs will also be shown in the more info card of an entity. [See the demo for a live example.](/demo/) - -

    - -

    - -__ISY994 hub support__ - [Ryan](https://github.com/rmkraus) has contributed support to integrate the ISY994 hub by Universal Devices. This allows you to integrate your X10/Insteon sensors, switches and lights. - -He has created an extensive getting started guide which can be found on [the ISY994 component page](/components/isy994/). - -```yaml -# Example configuration.yaml entry -isy994: -``` - -__Logbook__ - I (Paulus) have added a logbook component. The logbook component provides a different perspective on the history of your house by showing all the changes that happened to your house in chronological order. [See the demo for a live example.](/demo/) - - -```yaml -# Example configuration.yaml entry -logbook: -``` - - - -__Transmission support__ - James has also contributed support for integrating Transmission into Home Assistant. - -```yaml -# Example configuration.yaml entry -sensor: - platform: transmission - name: Transmission - host: 192.168.1.26 - port: 9091 - username: YOUR_USERNAME - password: YOUR_PASSWORD - monitored_variables: - - type: 'current_status' - - type: 'download_speed' - - type: 'upload_speed' -``` - -__Modbus support__ -[Kixam](https://github.com/kixam) has contributed support for modbus, a serial communication protocol to control PLCs. It currently supports sensors and switches which can be controlled over serial, TCP and UDP connections. - -```yaml -# Example configuration.yaml entry -modbus: - type: serial - method: rtu - port: /dev/ttyUSB0 - baudrate: 9600 - stopbits: 1 - bytesize: 8 - parity: N - -sensor: - platform: modbus - slave: 1 - registers: - 16: - name: My integer sensor - unit: C - 24: - bits: - 0: - name: My boolean sensor - 2: - name: My other boolean sensor - -switch: - platform: modbus - slave: 1 - registers: - 24: - bits: - 0: - name: My switch - 2: - name: My other switch -``` diff --git a/source/_posts/2015-05-09-utc-time-zone-awareness.markdown b/source/_posts/2015-05-09-utc-time-zone-awareness.markdown deleted file mode 100644 index f668fd693f..0000000000 --- a/source/_posts/2015-05-09-utc-time-zone-awareness.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -layout: post -title: "UTC & Time zone awareness" -description: "The Home Assistant core now uses UTC as the internal date time." -date: 2015-05-09 23:08 0000 -date_formatted: "May 9, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -I have recently merged code to refactor Home Assistant to use only UTC times internally. A much needed refactor. I've added some extra test coverage to time sensitive parts to ensure stability. The code has been live in the dev branch for the last 9 days and will be soon released to the master branch. - -From now on all internal communication will be done in UTC: time changed events, datetime attributes of states, etc. To get the current time in UTC you can call `homeassistant.util.dt.utcnow()`. This is a timezone aware UTC datetime object. [`homeassistant.util.dt`](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/util/dt.py) is a new util package with date helpers. - -There is also such a thing as local time. Local time is based on the time zone that you have setup in your `configuration.yaml`. Local times should only be used for user facing information: logs, frontend and automation settings in `configuration.yaml`. - -### Setting up your time zone -Setting up a time zone happens in `configuration.yaml`. If you have no time zone setup, it will be auto detected using the existing detection code using [freegeoip.net](https://freegeoip.net). You can find a list of compatible time zones on [Wikipedia](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - -```yaml -homeassistant: - time_zone: America/Los_Angeles -``` - -### Compatibility -The changes to the code are mostly backwards compatible. The old `hass.track_time_change` and `hass.track_point_in_time` use now internally two new methods: `hass.track_utc_time_change` and `hass.track_point_in_utc_time`. The usage of the old methods have not changed and should be backwards compatible. - -This refactor adds a new migration for the database adding a `utc_offset` column to events and states. This information is currently not used but can prove useful in the future when we start analyzing the historical data. - -### {% linkable_title Backwards incompatible stuff %} - -All built-in components have been upgraded. The following list is only for people that run custom components: - - * `hass.track_time_change` and `hass.track_point_in_time` will now return a time zone aware datetime object. Python does not allow comparing a naive with an aware datetime object. - * the sun attributes for rising and setting are now in UTC. The methods `sun.next_rising(hass)` and `sun.next_setting(hass)` are backwards compatible, just be careful if you used to read the raw attributes. - * the API sends all times in UTC. If you use anything else besides the frontend to talk to HA, make sure it handles it differently. diff --git a/source/_posts/2015-05-14-release-notes.markdown b/source/_posts/2015-05-14-release-notes.markdown deleted file mode 100644 index 1b16ae2fa7..0000000000 --- a/source/_posts/2015-05-14-release-notes.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: post -title: "Release notes for May 14, 2015" -description: "Introducing support for MySensors, InstaPush, Notify My Android, OpenWeatherMap and Jabber." -date: 2015-05-14 22:25 0000 -date_formatted: "May 14, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Almost three busy weeks have past since the last release. We used this time to finally make the overhaul to use UTC as the internal date time format. We added a bunch of test coverage in the process to make sure the transition went smoothly. Pleas see [the blog post about the UTC refactor](/blog/2015/05/09/utc-time-zone-awareness/#backwards-incompatible-stuff) for backwards incompatible changes. - -This release includes a significant startup boost for the frontend and a fix for Wemo discovery after their latest firmware upgrade. - -I would like to give a big shout out to our newest contributor [fabaff](https://github.com/fabaff) for taking the time to improve the documentation. - -

    -To update to the latest version, run scripts/update. Please report any issues on GitHub. -

    - - - -__Overwriting Entity Attributes__ -Before diving into the newly supported devices and services, I want to highlight an awesome configuration enhancement by [rmkraus](https://github.com/rmkraus): overwriting entity attributes. - -These new configuration settings allow you to overwrite entity state attributes. The main usage for this is being able to overwrite attributes that influence how an entity is shown in the interface. - -```yaml -# Example configuration.yaml entry -homeassistant: - customize: - light.bowl: - # hides this entity from the interface - hidden: true - light.ceiling: - # Replaces the state badge with given picture - entity_picture: http://graph.facebook.com/schoutsen/picture -``` - -__MySensors__ - [Andythigpen](https://github.com/andythigpen) and [Theolind](https://github.com/theolind) have added support for the [MySensors platform](http://www.mysensors.org) to Home Assistant. - -```yaml -# Example configuration.yaml entry -sensor: - platform: mysensors - port: /dev/ttyACM0 -``` - -__OpenWeatherMap__ - [Fabaff](https://github.com/fabaff) has contributed support for [OpenWeatherMap](http://openweathermap.org). This will allow you to integrate local meteorological data into Home Assistant. - -```yaml -# Example configuration.yaml entry -sensor: - platform: openweathermap - api_key: YOUR_API_KEY - monitored_variables: - - type: 'weather' - - type: 'temperature' - - type: 'wind_speed' - - type: 'humidity' - - type: 'pressure' - - type: 'clouds' - - type: 'rain' - - type: 'snow' -``` - -__InstaPush__ - [Fabaff](https://github.com/fabaff) has contributed support for [InstaPush](https://instapush.im). This will allow you send messages from Home Assistant to your iOS and Android devices. - -```yaml -# Example configuration.yaml entry -notify: - platform: instapush - # Get those by creating a new application, event, and tracker on https://instapush.im - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - app_secret: ABCDEFGHJKLMNOPQRSTUVXYZ - event: ABCDEFGHJKLMNOPQRSTUVXYZ - tracker: ABCDEFGHJKLMNOPQRSTUVXYZ -``` - -__XMPP__ - [Fabaff](https://github.com/fabaff) has contributed support for Jabber/XMPP. This will allow you send messages from Home Assistant to anyone on Jabber/XMPP. - -```yaml -# Example configuration.yaml entry -notify: - platform: xmpp - sender: YOUR_JID - password: YOUR_JABBER_ACCOUNT_PASSWORD - recipient: YOUR_RECIPIENT -``` - -__Notify My Android__ - [Fabaff](https://github.com/fabaff) has contributed support for [Notify My Android](http://www.notifymyandroid.com/). This will allow you to send messages from Home Assistant to your Android device. - -```yaml -# Example configuration.yaml entry -notify: - platform: nma - # Get this by registering a new application on http://www.notifymyandroid.com/ - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ -``` - -__Time & Date sensor__ -[Fabaff](https://github.com/fabaff) has contributed a time & date sensor. This will allow you to show the current time/date on the dashboard. - -```yaml -# Example configuration.yaml entry -sensor: - platform: time_date - monitored_variables: - - type: 'time' - - type: 'date' - - type: 'date_time' - - type: 'time_date' -``` diff --git a/source/_posts/2015-06-10-release-notes.markdown b/source/_posts/2015-06-10-release-notes.markdown deleted file mode 100644 index 551a199f48..0000000000 --- a/source/_posts/2015-06-10-release-notes.markdown +++ /dev/null @@ -1,175 +0,0 @@ ---- -layout: post -title: "Release notes for June 10, 2015" -description: "Polymer 1.0, reviving media player support and the command line switch." -date: 2015-06-10 18:54 0000 -date_formatted: "June 10, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Wow, almost a month has gone by since the last release and this release is *packed*. The biggest part of this release is probably one that you won't notice: the frontend has been upgraded from Polymer 0.5 to the brand new released Polymer 1.0. Polymer has been declared stable by the Google overlords which will allow us to expand functionality that was waiting for this moment to arrive. - -This release sets a record for the amount of people involved: 8! [Andythigpen](https://github.com/Andythigpen), [Jamespcole](https://github.com/Jamespcole), [Azelphur](https://github.com/Azelphur), [Fabaff](https://github.com/Fabaff), [Dutchy-](https://github.com/Dutchy-), [Fbradyirl](https://github.com/Fbradyirl), [wind-rider](https://github.com/wind-rider) and [ettisan](https://github.com/ettisan), thanks a lot for your contributions! - -A big improvement has been brought this release by wind-rider. He took the time to revive the Chromecast support and started improving the media player integration. This triggered other people to join in resulting in a revamped media player experience and support for the Music Player Daemon. - -

    - Example of the new media player cards -

    - -

    -To update to the latest version, run scripts/update. Please report any issues on GitHub. -

    - - - -Before jumping into the newly supported platforms, here are the other improvements that are landing this release: - - * Fronted upgraded to Polymer 1.0 by @balloob - * Include other YAML files using the `!include` keyword by @andythigpen - * Switch support and bug fixes for Vera platform by @jamespcole - * HTTP session support for the HTTP component by @jamespcole - * Device tracker bugfixes by @Dutchy- - * Bugfix for device tracker platform by @fbradyirl - * Fixing Chromecast support by @wind-rider - * Media player improvements by @balloob and @wind-rider - * Nest thermostat bugfixes by @balloob - * Fix the device tracker getting in a deadlock by @balloob - * Update documentation by @fabaff - -__Music Player Daemon__ - Fabaff has contributed MusicPlayerDaemon support. The mpd platform allows you to control a [Music Player Daemon](http://www.musicpd.org/) from Home Assistant. Right now, only playback is supported and not playlist manipulation. - -```yaml -# Example configuration.yaml entry -media_player: - platform: mpd - server: 127.0.0.1 - port: 6600 - location: bedroom -``` - -__Command line switch__ -A switch platform that issues specific commands when it is turned on and off. This might very well become our most popular platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts! - -```yaml -# Example configuration.yaml entry -switch: - platform: command_switch - switches: - - kitchen_light: - oncmd: switch_command on kitchen - offcmd: switch_command off kitchen -``` - -__LimitlessLED__ -This new platform can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight or iLight. - -```yaml -# Example configuration.yaml entry -light: - platform: limitlessled - host: 192.168.1.10 - group_1_name: Living Room - group_2_name: Bedroom - group_3_name: Office - group_4_name: Kitchen -``` - - -__Bitcoin sensor__ - The bitcoin platform displays various details about the [Bitcoin](https://bitcoin.org) network. If you have an online wallet from [Blockchain.info](https://blockchain.info/) the sensor is capable to show your current balance. - -```yaml -# Example configuration.yaml entry -sensor: - platform: bitcoin - wallet: 'YOUR WALLET_ID' - password: YOUR_ACCOUNT_PASSWORD - currency: YOUR CURRENCY - display_options: - - exchangerate - - trade_volume_btc - - miners_revenue_usd - - btc_mined - - trade_volume_usd - - difficulty - - minutes_between_blocks - - number_of_transactions - - hash_rate - - timestamp - - mined_blocks - - blocks_size - - total_fees_btc - - total_btc_sent - - estimated_btc_sent - - total_btc - - total_blocks - - next_retarget - - estimated_transaction_volume_usd - - miners_revenue_btc - - market_price_usd -``` - - -__SMTP notificatoin platform__ - The smtp platform allows you to deliver notifications from Home Assistant to an e-mail recipient. - -```yaml -# Example configuration.yaml entry -notify: - platform: mail - server: MAIL_SERVER - port: YOUR_SMTP_PORT - sender: SENDER_EMAIL_ADDRESS - starttls: 1 or 0 - username: YOUR_SMTP_USERNAME - password: YOUR_SMTP_PASSWORD - recipient: YOUR_RECIPIENT -``` - - -__Syslog notification platform__ -The syslog platform allows you to deliver notifications from Home Assistant to the local syslog. - -```yaml -# Example configuration.yaml entry -notify: - platform: syslog -``` - - -__Swiss Public transport sensor__ -The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland. See the [component page](/components/sensor.swiss_public_transport/) for more information how to set it up. - - -__Transmission turtle mode switch__ - The transmission platform allows you to control your [Transmission](http://www.transmissionbt.com/) client from within Home Assistant. The platform enables you switch to your 'Alternative Speed Limits' (aka 'Turtle mode') setting. - -```yaml -# Example configuration.yaml entry -switch: - platform: transmission - name: Transmission - host: 192.168.1.26 - port: 9091 - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` - - -__Hikvision camera motion detection support__ -This switch platform allows you to control your motion detection setting on your Hikvision camera. - -```yaml -# Example configuration.yaml entry -switch: - platform: hikvisioncam - name: Hikvision Cam 1 Motion Detection - host: 192.168.1.26 - username: YOUR_USERNAME - password: YOUR_PASSWORD -``` 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 deleted file mode 100644 index ce431a91da..0000000000 --- a/source/_posts/2015-07-11-ip-cameras-arduino-kodi-efergy-support.markdown +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: post -title: "IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported" -description: "New support for IP Cameras, Arduinos, Kodi and Efergy monitors" -date: 2015-07-11 01:37 -0700 -date_formatted: "July 11, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Another month has passed and some great new features have landed in Home Assistant. This month release has been made possible by [balloob](https://github.com/balloob), [ettisan](https://github.com/ettisan), [fabaff](https://github.com/fabaff), [gyran](https://github.com/gyran), [jamespcole](https://github.com/jamespcole), [michaelarnauts](https://github.com/michaelarnauts), [miniconfig](https://github.com/miniconfig) and [rmkraus](https://github.com/rmkraus). - -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. - -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. - -```yaml -# Example configuration.yaml entry -camera: - platform: generic - name: my sample camera - username: MY_USERNAME - password: MY_PASSWORD - still_image_url: http://194.218.96.92/jpg/image.jpg -``` - -

    -To update to the latest version, run scripts/update. Please report any issues on GitHub. -

    - - - -__Arduino__ - Fabian has contributed support for interfacing with Arduinos. This makes it possible to connect your Arduino via USB and expose pins as sensor data and write to pins via switches. Have a look at [the docs](/components/arduino/) for an extensive guide to get started. - -```yaml -# Example configuration.yaml entry -switch: - platform: arduino - pins: - 11: - name: Fan Office - type: digital - 12: - name: Light Desk - type: digital - -sensor: - platform: arduino - pins: - 1: - name: Door switch - type: analog - 0: - name: Brightness - type: analog -``` - -__Kodi (XBMC)__ - Ettisan has contributed a Kodi (XBMC) platform for the media player component. This allows you to track all the media that you are playing and allow you to control it. - -```yaml -# Example configuration.yaml entry -media_player: - platform: kodi - name: Kodi - url: http://192.168.0.123/jsonrpc - user: kodi - password: my_secure_password -``` - -__TP-Link__ - Michael has added TP-Link support to the device tracker. This allows you to now detect presence if you have a TP-Link router. - -```yaml -# Example configuration.yaml entry -device_tracker: - platform: tplink - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -__Efergy energy monitor__ - Miniconfig has contributed support for the [Efergy energy meters](https://efergy.com). To get an app token, log in to your efergy account, go to the Settings page, click on App tokens, and click "Add token". - -```yaml -# Example configuration.yaml entry -sensor: - platform: efergy - app_token: APP_TOKEN - utc_offset: UTC_OFFSET - monitored_variables: - - type: instant_readings - - type: budget - - type: cost - period: day - currency: $ -``` - -__Forecast.io__ -Fabian has added support for [Forecast.io](https://forecast.io/) to get weather forecasts for Home Assistant. You need an API key which is free but requires a [registration](https://developer.forecast.io/register). To add Forecast.io to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: forecast - api_key: YOUR_APP_KEY - monitored_conditions: - - summary - - precip_type - - precip_intensity - - temperature - - dew_point - - wind_speed - - wind_bearing - - cloud_cover - - humidity - - pressure - - visibility - - ozone -``` diff --git a/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown b/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown deleted file mode 100644 index 2707b3e7f0..0000000000 --- a/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -layout: post -title: "MQTT, Rasperry Pi, Logitech Squeezebox and ASUSWRT routers now supported" -description: "New support for MQTT, Rasperry Pi GPIO, Logitech Squeezebox and ASUSWRT routers" -date: 2015-08-09 18:01 0000 -date_formatted: "August 9, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It's time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to [@balloob](https://github.com/balloob). If you're a developer, make sure you read up on [the deprecation notices](https://github.com/home-assistant/home-assistant/pull/251). [@fabaff](https://github.com/fabaff) did another great round of documenting all the various components. - -__MQTT Support__ - The big new addition in this release is the support for the MQTT protocol by [@fabaff](https://github.com/fabaff) with some help from [@balloob](https://github.com/balloob). It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics ([see the example][mqtt-example]) and also support for the automation component [has been added][mqtt-automation]. For more information, see [the MQTT component page][mqtt-component]. - -[mqtt-example]: https://github.com/home-assistant/home-assistant/blob/dev/config/custom_components/mqtt_example.py -[mqtt-automation]: /getting-started/automation-trigger/#mqtt-trigger -[mqtt-component]: /components/mqtt/ - -```yaml -# Example configuration.yaml entry -mqtt: - broker: IP_ADDRESS_BROKER - # All the other options are optional: - port: 1883 - keepalive: 60 - qos: 0 - username: your_username - password: your_secret_password -``` - - - -__Raspberry Pi GPIO Support__ - [@gbarba](https://github.com/gbarba) has contributed support to use the general purpose input and output pins on a Raspberry Pi as switches inside Home Assistant. - -```yaml -# Example configuration.yaml entry -switch: - platform: rpi_gpio - ports: - 11: Fan Office - 12: Light Desk -``` - -__ASUSWRT based routers__ - [@persandstrom](https://github.com/persandstrom) has contributed support to do prescence detection using ASUSWRT based routers. - -```yaml -# Example configuration.yaml entry -device_tracker: - platform: asuswrt - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -__Logitech Squeezebox media player support__ - [@persandstrom](https://github.com/persandstrom) also contributed support for the Logitech Squeezebox media player. This allows you to control your Logitech Squeezebox from Home Assistant. - -```yaml -# Example configuration.yaml entry -media_player: - platform: squeezebox - host: 192.168.1.21 - port: 9090 - username: user - password: password -``` - -__Slack notification support__ - [@jamespcole](https://github.com/jamespcole) has contributed a Slack platform for the notification platform. This allows you to deliver messages to any channel. - -```yaml -# Example configuration.yaml entry -notify: - platform: slack - api_key: ABCDEFGHJKLMNOPQRSTUVXYZ - default_channel: '#general' -``` - -__Edimax Smart Switches support__ - [@rkabadi](https://github.com/rkabadi) has contributed support for integrating Edimax Smart Switches into Home Assistant. - -```yaml -# Example configuration.yaml entry -switch: - platform: edimax - host: 192.168.1.32 - username: YOUR_USERNAME - password: YOUR_PASSWORD - name: Edimax Smart Plug -``` - -__RFXtrx sensor support__ -[@danielhiversen](https://github.com/danielhiversen) has contributed support for RFXtrx sensors. It supports sensors that communicate in the frequency range of 433.92 MHz. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: rfxtrx - device: PATH_TO_DEVICE -``` - -The path to your device, e.g., `/dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0` - -__TEMPer temperature sensor support__ -Support for Temper temperature sensors has been contributed by [@rkabadi](https://github.com/rkabadi). - -```yaml -# Example configuration.yaml entry -sensor: - platform: temper -``` diff --git a/source/_posts/2015-08-17-verisure-and-modern-tp-link-router-support.markdown b/source/_posts/2015-08-17-verisure-and-modern-tp-link-router-support.markdown deleted file mode 100644 index 75133a157a..0000000000 --- a/source/_posts/2015-08-17-verisure-and-modern-tp-link-router-support.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -title: "Verisure devices and modern TP-Link routers now supported" -description: "New support for Verisure switches, sensors and hygrometers and modern TP-Link routers" -date: 2015-08-17 20:00 0000 -date_formatted: "August 17, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running `git pull` from the Home Assistant directory. - -This release is a major milestone in our test coverage as we've crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded. - -As we didn't want to just push out bug fixes, this release includes a few additions: - - - Support for modern TP-Link routers like the ArcherC9 line has been contributed by [@chrisvis](https://github.com/chrisvis). - - Improved support for MQTT topic subscriptions has been contributed by [@qrtn](https://github.com/qrtn) - -__Verisure Support__ - Home Assistant support to integrate your [Verisure](https://www.verisure.com/) alarms, hygrometers, sensors and thermometers has been contributed by [@persandstrom](https://github.com/persandstrom). - -```yaml -# Example configuration.yaml entry -verisure: - username: user@example.com - password: password - alarm: 1 - hygrometers: 0 - smartplugs: 1 - thermometers: 0 -``` diff --git a/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown b/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown deleted file mode 100644 index f063627b0f..0000000000 --- a/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown +++ /dev/null @@ -1,147 +0,0 @@ ---- -layout: post -title: "Laundry Automation: insight and notifications" -description: "Nolan describes how he gets notified when laundry is done." -date: 2015-08-26 08:12 -0700 -date_formatted: "August 26, 2015" -author: Nolan Gilley -comments: true -categories: User-Stories -og_image: /images/blog/2015-08-laundry-automation/moteino-and-sensors.jpg ---- - - -_This is a guest post by Home Assistant user and contributor [Nolan Gilley](https://github.com/nkgilley)._ - -In our house, laundry has been a struggle for quite some time. Our washer and dryer both lack a buzzer which leads to forgotten laundry, and stinky mess that needs to be rewashed. I decided to create a solution by monitoring the washer and dryer myself with some cheap electronics. - -As an avid user of Home Assistant, I decided it would be the perfect application to manage the UI and notification system. Now all I needed was a way to monitor the washer and dryer. I tried using sound sensors but found them unreliable. I ended up opting for an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect if the doors are open or closed. I connected the accelerometers and reed switches to a [Moteino](https://lowpowerlab.com/moteino/), an arduino clone with an RF transceiver. The Moteino can perform the logic to figure out which state the appliances are in and wirelessly communicate that data with another Moteino that is connected via serial to my Raspberry Pi. The Raspberry Pi reads the serial data and repeats it over MQTT for Home Assistant to use. This is great because I don't have to run Home Assistant on the Raspberry Pi. I can run it on a faster machine and point the [MQTT component](/components/mqtt/) to my Raspberry Pi. - -After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn't get tripped by the washer or vice versa. In the plot below you can see the acceleration in the x direction for the accelerometer connected to the washing machine. It's easy to see when the washing machine is in operation here. I used the same technique for the dryer's accelerometer. - -

    - - - - Graph showing the accelerometer data -

    - - - -Next it was just a matter of integrating everything with Home Assistant. I was able to use the [MQTT component](/components/mqtt/) to read the washer and dryer states from the Moteino and display it in Home Assistant. - -

    - - Status of the dryer and washer in Home Assistant -

    - -Next I wrote [scripts](/components/script/) that are run whenever the washer or dryer completes a load. This is triggered by the [automation component](/getting-started/automation/). When the laundry is complete I have the lights in the house turn red and [notify me via PushBullet](/components/notify.pushbullet/). Once the laundry is taken care of another script runs that sets the lights back to normal. So far it has been very helpful and very reliable. - -

    - - - - Top left: reed switch. Bottom left: moteino. Right: Accelerometer. -

    - -Materials used: - - - [Moteino](https://lowpowerlab.com/moteino/) - - [2 x Accelerometers](http://www.amazon.com/gp/product/B008BOPN40) - - [2 x Reed switch](http://www.amazon.com/gp/product/B004PARDRO) - - [Home Assistant](/) - -[Sketch for the Moteino is available here.](https://codebender.cc/sketch:144743) - -Home Assistant Configuration: - -

    -The automation and script syntax here is using a deprecated and no longer supported format. -

    - -```yaml -mqtt: - broker: 192.168.1.100 - port: 1883 - keepalive: 60 - qos: 0 - -sensor: - platform: mqtt - name: "Dryer Status" - state_topic: "sensor/dryer" - unit_of_measurement: "" - -sensor 2: - platform: mqtt - name: "Washer Status" - state_topic: "sensor/washer" - unit_of_measurement: "" - -automation: - alias: Dryer complete - - platform: state - state_entity_id: sensor.dryer_status - state_from: 'Running' - state_to: 'Complete' - - execute_service: script.turn_on - service_entity_id: script.dryer_complete - -automation 2: - alias: Dryer emptied - - platform: state - state_entity_id: sensor.dryer_status - state_from: 'Complete' - state_to: 'Empty' - - execute_service: script.turn_on - service_entity_id: script.dryer_cleared - -script: - dryer_complete: - alias: Dryer Complete Script - sequence: - - alias: Pushbullet Notification - execute_service: notify.notify - service_data: - message: "The dryer has finished its cycle, please empty it!" - - alias: Living Room Lights Red - execute_service: scene.turn_on - service_data: - entity_id: scene.red - - delay: - seconds: 1 - - alias: Living Room Lights Off - execute_service: light.turn_off - service_data: - entity_id: group.living_room - - delay: - seconds: 1 - - alias: Living Room Lights Red - execute_service: scene.turn_on - service_data: - entity_id: scene.red - - dryer_cleared: - alias: Dryer Cleared Script - sequence: - - alias: Living Room Lights Off - execute_service: light.turn_off - service_data: - entity_id: group.living_room - - delay: - seconds: 1 - - alias: Living Room Lights Normal - execute_service: scene.turn_on - service_data: - entity_id: scene.normal -``` - -Resources used: - - - [Inspiration and Help with Arduino code](http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi/step13/Washer-Dryer-Smartifier-Water-Leak-Sensor/) - - [Moteino Code](https://github.com/LowPowerLab/RFM69/) - diff --git a/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown b/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown deleted file mode 100644 index 37178a2d66..0000000000 --- a/source/_posts/2015-08-31-version-7-revamped-ui-and-improved-distribution.markdown +++ /dev/null @@ -1,117 +0,0 @@ ---- -layout: post -title: "0.7: Better UI and improved distribution" -description: "Home Assistant gains a version number and a face lift." -date: 2015-08-31 14:12 -0700 -date_formatted: "August 31, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/screenshots/ui2015.png ---- - -As Home Assistant is gaining more and more users we started to feel the pain from not having a proper release mechanism. We had no version numbering and required users to checkout the source using Git to get started. On top of that, as the number of devices that we support keeps raising, so did the number of dependencies that are used. That's why we decided to change the way we roll. From now on: - - - Each release will have a version number, starting with version 0.7. This was chosen because it shows that we have been around for some time but are not considering ourselves to be fully stable. - - Each release will be pushed to PyPi. This will be the only supported method of distribution. - - Home Assistant is available after installation as a command-line utility `hass`. - - The default configuration location has been moved from `config` in the current working directory to `~/.homeassistant` (`%APPDATA%/.homeassistant` on Windows). - - Requirements for components and platforms are no longer installed into the current Python environment (being virtual or not) but will be installed in `/lib`. - -A huge shout out to [Ryan Kraus](https://github.com/rmkraus) for making this all possible. Please make sure you read [the full blog post][self] for details on how to migrate your existing setup. - -[self]: /blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/#read-more - -And while Ryan was fixing distribution, I have been hard at work in giving Home Assistant a face lift. We already looked pretty good but lacked proper form of organization for users with many devices. The new UI moves away from a card per entity and has cards per group and domain instead. [The demo](/demo/) has been updated so give it a spin. - -

    - - - - Screenshots of the new UI -

    - - - -### {% linkable_title Migration to version 0.7 %} - -For this example, let's say we have an old Home Assistant installation in `/home/paulus/home-assistant`. - -If you want to migrate your existing configuration to be used as the default configuration: - -```bash -$ cp -r /home/paulus/home-assistant ~/.homeassistant -``` - -It If you want to have the configuration in a different location, for example `/home/paulus/home-assistant-config`, you will have to point Home Assistant at this configuration folder when launching: - -```bash -$ hass --config /home/paulus/home-assistant-config -``` - -### {% linkable_title New platforms %} - -And last, but not least: new platforms! - -__MQTT Sensors and Switches__ - [@sfam](https://github.com/sfam) has blessed us with two more MQTT platforms to extend our integration with MQTTT: [sensor][mqtt-sensor] and [switch][mqtt-switch]. Both platforms require the MQTT component to be connected to a broker. - -[mqtt-sensor]: /components/sensor.mqtt/ -[mqtt-switch]: /components/switch.mqtt/ - -```yaml -# Example configuration.yaml entry -sensor: - platform: mqtt - name: "MQTT Sensor" - state_topic: "home/bedroom/temperature" - unit_of_measurement: "°C" - -switch: - platform: mqtt - name: "Bedroom Switch" - state_topic: "home/bedroom/switch1" - command_topic: "home/bedroom/switch1/set" - payload_on: "ON" - payload_off: "OFF" - optimistic: false -``` - -__Actiontec MI424WR Verizon FIOS Wireless router__ - [Nolan](https://github.com/nkgilley) has contributed support for Actiontec wireless routers. - -```yaml -# Example configuration.yaml entry -device_tracker: - platform: actiontec - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -__DHT temperature and humidty sensors__ -[@MakeMeASandwich](https://github.com/makemeasandwich) has contributed support for DHT temperature and humidity sensors. It allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device. - -```yaml -# Example configuration.yaml entry -sensor: - platform: dht - sensor: DHT22 - pin: 23 - monitored_conditions: - - temperature - - humidity -``` - -__Aruba device tracker__ -[Michael Arnauts](https://github.com/michaelarnauts) has contributed support for Aruba wireless routers for presence detection. - -```yaml -# Example configuration.yaml entry -device_tracker: - platform: aruba - host: YOUR_ACCESS_POINT_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` diff --git a/source/_posts/2015-09-11-different-ways-to-use-mqtt-with-home-assistant.markdown b/source/_posts/2015-09-11-different-ways-to-use-mqtt-with-home-assistant.markdown deleted file mode 100644 index 77491b0d0a..0000000000 --- a/source/_posts/2015-09-11-different-ways-to-use-mqtt-with-home-assistant.markdown +++ /dev/null @@ -1,203 +0,0 @@ ---- -layout: post -title: "Using MQTT with Home Assistant" -description: "This post describes three different ways to use MQTT with Home Assistant." -date: 2015-09-11 11:19:38 +0200 -date_formatted: "September 11, 2015" -author: Fabian Affolter -comments: true -categories: How-To MQTT -og_image: /images/blog/2015-09-mqtt/arduino.png ---- - -{::options coderay_line_numbers="table" /} - - [MQTT](https://en.wikipedia.org/wiki/MQTT) support was added to Home Assistant recently. The [MQTT component](/components/mqtt/) will enable you to do all sort of things. Most likely you will use it to communicate with your devices. But Home Assistant doesn't care where the data is coming from or is limited to real hardware as long as there is MQTT support. This means that it doesn't matter if the data is coming from a human, a web service, or a device. - -A great example is shown in a [Laundry Automation](/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/) post in this blog. - -This post will give you a small overview of some other possibilities on how to use MQTT with Home Assistant. - - - -### {% linkable_title Manual usage %} - -The simplest but not the coolest way as a human to interact with a Home Assistant sensor is launching a command manually. Let's create a "Mood" sensor. For simplicity Home Assistant and the MQTT broker are both running on the same host. The needed configuration snipplets to add to the `configuration.yaml` file consists of two parts: one for the broker and one for the sensor. - -```yaml -mqtt: - broker: 127.0.0.1 - -sensor: - - platform: mqtt - name: "Fabian's Mood" - state_topic: "home-assistant/fabian/mood" -``` - -After a restart of Home Assistant the "Mood" sensor will show up in the frontend. For more details about the configuration of MQTT itself and the sensor, please refer to the [MQTT component](/components/mqtt/) or the [MQTT sensor](/components/sensor.mqtt/) documentation. - -Now we can set the mood. The commandline tool (`mosquitto_pub`) which is shipped with `mosquitto` is used to send an MQTT message. - -```bash -$ mosquitto_pub -h 127.0.0.1 -t "home-assistant/fabian/mood" -m "bad" -``` - -

    - - The Mood sensor -

    - -This is a really bad example. Don't do this in the real world because you won't be able to create diagrams of historical data. Better use a numerical value. - -### {% linkable_title Python MQTT bindings %} - -The last section was pretty boring, I know. Nobody wants to send MQTT messages by hand if there is a computer on the desk. If you are playing the lottery this section is for you. If not, read it anyway because the lottery is just an example :-). - -This example is using the [Paho MQTT Python binding](https://eclipse.org/paho/clients/python/) because those binding should be available on the host where Home Assistant is running. If you want to use this example on another machine, please make sure that the bindings are installed (`pip3 install paho-mqtt`). - -The first step is to add an additional MQTT sensor to the `configuration.yaml` file. The sensor will be called "Lottery" and the unit of measurement will be "No.". - -```yaml - - platform: mqtt - name: "Lottery" - state_topic: "home-assistant/lottery/number" - unit_of_measurement: "No." -``` - -Don't forget to restart Home Assistant to make the configuration active. - -To play, we need numbers from 1 to 49 which can be marked on the ticket. Those numbers should be random and displayed in the Home Assistant frontend. The Python script below is another simple example on how to send MQTT messages from the commandline; this time in a loop. For further information and examples please check the [Paho MQTT](https://eclipse.org/paho/clients/python/docs/) documentation. - -```python -#!/usr/bin/python3 -# -import time -import random -import paho.mqtt.client as mqtt -import paho.mqtt.publish as publish - -broker = '127.0.0.1' -state_topic = 'home-assistant/lottery/number' -delay = 5 - -# Send a single message to set the mood -publish.single('home-assistant/fabian/mood', 'good', hostname=broker) - -# Send messages in a loop -client = mqtt.Client("ha-client") -client.connect(broker) -client.loop_start() - -while True: - client.publish(state_topic, random.randrange(0, 50, 1)) - time.sleep(delay) -``` - -Every 5 seconds a message with a new number is sent to the broker and picked up by Home Assistant. By the way, my mood is much better now. - -

    - - The Lottery sensor -

    - -With only a few lines of Python and an MQTT broker you can create your own "smartdevice" or send information to Home Assistant which you haven't think of. Of course this is not limited to Python. If there is an MQTT library available, the device can be used with Home Assistant now. - -### {% linkable_title Arduino %} - -To get started with real hardware that is capable to send MQTT messages, the Arduino platform is an inexpensive way to do it. In this section an Arduino UNO with an Ethernet shield and a photo resistor is used. The photo resistor is connected to analog pin 0 (A0) and has an output from 0 to 1024. - -

    - - The Arduino UNO with Ethernet shield and photo resistor -

    - -The [MQTT client](http://knolleary.github.io/pubsubclient/) for the Arduino needs to be available in your Arduino IDE. Below you will find a sketch which could act as a starting point. Please modify the IP addresses, the MAC address, and the pin as needed and upload the sketch to your Arduino. - -```c -/* - This sketch is based on the basic MQTT example by - http://knolleary.github.io/pubsubclient/ -*/ - -#include -#include -#include - -#define DEBUG 1 // Debug output to serial console - -// Device settings -IPAddress deviceIp(192, 168, 0, 43); -byte deviceMac[] = { 0xAB, 0xCD, 0xFE, 0xFE, 0xFE, 0xFE }; -char* deviceId = "sensor01"; // Name of the sensor -char* stateTopic = "home-assistant/sensor01/brightness"; // MQTT topic where values are published -int sensorPin = A0; // Pin to which the sensor is connected to -char buf[4]; // Buffer to store the sensor value -int updateInterval = 1000; // Interval in milliseconds - -// MQTT server settings -IPAddress mqttServer(192, 168, 0, 12); -int mqttPort = 1883; - -EthernetClient ethClient; -PubSubClient client(ethClient); - -void reconnect() { - while (!client.connected()) { -#if DEBUG - Serial.print("Attempting MQTT connection..."); -#endif - if (client.connect(deviceId)) { -#if DEBUG - Serial.println("connected"); -#endif - } else { -#if DEBUG - Serial.print("failed, rc="); - Serial.print(client.state()); - Serial.println(" try again in 5 seconds"); -#endif - delay(5000); - } - } -} - -void setup() { - Serial.begin(57600); - client.setServer(mqttServer, mqttPort); - Ethernet.begin(deviceMac, deviceIp); - delay(1500); -} - -void loop() { - if (!client.connected()) { - reconnect(); - } - client.loop(); - - int sensorValue = analogRead(sensorPin); -#if DEBUG - Serial.print("Sensor value: "); - Serial.println(sensorValue); -#endif - client.publish(stateTopic, itoa(sensorValue, buf, 10)); - delay(updateInterval); -} -``` - -The Arduino will send the value of the sensor every second. To use the data in Home Assistant, add an additional MQTT sensor to the `configuration.yaml` file. - -```yaml - - platform: mqtt - name: "Brightness" - state_topic: "home-assistant/sensor01/brightness" - unit_of_measurement: "cd" -``` - -After a restart of Home Assistant the values of your Arduino will be available. - -

    - - The Brightness sensor -

    - -I hope that this post could give you some ideas about the usage Home Assistant and MQTT. If you are working on a cool project that includes Home Assistant, please let us now. diff --git a/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown b/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown deleted file mode 100644 index fb3ef97b20..0000000000 --- a/source/_posts/2015-09-13-home-assistant-meets-ifttt.markdown +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: post -title: "Home Assistant meets IFTTT" -description: "Announcing new integration with IFTTT and some samples to get started." -date: 2015-09-13 09:28 -0700 -date_formatted: "September 13, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: How-To Release-Notes -og_image: /images/blog/2015-09-ifttt/og_facebook.png ---- - -Today we announce the release of Home Assistant v0.7.2 which includes brand new support by [@sfam][github-sfam] to integrate with [IFTTT][ifttt]. IFTTT stands for If This, Then That and is a webservice that integrates with almost every possible webservice out there. Adding Home Assistant to this mix means Home Assistant can connect with all via IFTTT. - -It is now possible to disable your irregation system if it is going to be cloudy tomorrow or tweet if your smoke alarm goes off. - -[github-sfam]: https://github.com/sfam -[ifttt]: https://ifttt.com - -

    - -

    - -Head over to the [setup instructions](/components/ifttt/) to get started with IFTTT. Click the read more button for some example recipes. - - - -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 %} - -

    - -

    - -Maker channel setup: - -| Field | Value | -| ----- | ----- | -| URL | http://xxx.xxx.xxx.xxx:8123/api/services/switch/turn_off?api_password=xxxxxxxx -| METHOD | POST -| CONTENT TYPE | application/json -| BODY | { "entity_id": "switch.irrigation" } - -## {% linkable_title Tweet when important events happen %} - -

    - -

    - -This will tweet a message when an MQTT message is received that the smoke alarm has been triggered. Setup Maker channel with event name `HA_FIRE_ALARM` and Twitter channel to tweet the message in `value1`. - -```yaml -# Configuration.yaml entry -automation: -- alias: Post a tweet when fire alarm is triggered - trigger: - platform: mqtt - mqtt_topic: home/alarm/fire - mqtt_payload: 'on' - - action: - service: ifttt.trigger - data: {"event":"HA_FIRE_ALARM", "value1":"The fire alarm just triggered!"} -``` - -## {% linkable_title Turn on lights when I get home %} - -

    - -

    - -Maker channel setup: - -| Field | Value | -| ----- | ----- | -| URL | http://xxx.xxx.xxx.xxx:8123/api/services/light/turn_on?api_password=xxxxxxxx -| METHOD | POST -| CONTENT TYPE | application/json -| BODY | { "entity_id": "light.kitchen" } - -## {% linkable_title Flash lights when a new PR comes in for Home Assistant %} - -

    - -

    - -Maker channel setup: - -| Field | Value | -| ----- | ----- | -| URL | http://xxx.xxx.xxx.xxx:8123/api/services/light/turn_on?api_password=xxxxxxxx -| METHOD | POST -| CONTENT TYPE | application/json -| BODY | { "entity_id": "group.all_lights", "flash":"yes" } - -## {% linkable_title Fire events when pressing the DO button %} - -

    - -

    - -Maker channel setup: - -| Field | Value | -| ----- | ----- | -| URL | http://xxx.xxx.xxx.xxx:8123/api/events/do_button_pressed?api_password=xxxxxxxx -| METHOD | POST -| CONTENT TYPE | application/json diff --git a/source/_posts/2015-09-18-monitoring-with-glances-and-home-assistant.markdown b/source/_posts/2015-09-18-monitoring-with-glances-and-home-assistant.markdown deleted file mode 100644 index 9753a074ad..0000000000 --- a/source/_posts/2015-09-18-monitoring-with-glances-and-home-assistant.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: post -title: "Remote Monitoring with Glances" -description: "This post describes the setup for monitoring remote hosts with Home Assistant." -date: 2015-09-18 11:00:00 +0200 -date_formatted: "September 18, 2015" -author: Fabian Affolter -comments: true -categories: How-To -og_image: /images/supported_brands/glances.png ---- - - -Inspired by a [feature requests](https://github.com/home-assistant/home-assistant/issues/310) I started looking into the available options to do monitoring of remote hosts. The feature request is about displaying system information in a similar way than the [systemmonitor](/components/sensor.systemmonitor/) sensor does it for the local system. After a while I started to think that it would be a nice addition for a small home network where no full-blown system monitoring setup is present. - - - -The basic problem is to get the data from the remote host. Starting with [psutil](https://pypi.python.org/pypi/psutil) that is used by the systemmonitor sensor, a possible solution is only a click away and named [Glances](https://github.com/nicolargo/glances). Glances has a nice curses-based interface and a [RESTful API](https://github.com/nicolargo/glances/wiki/The-Glances-RESTFULL-JSON-API). - -The [Glances sensor](/components/sensor.glances/) sensor uses that API to get all needed data. - -In this post a default Fedora 22 Workstation installation is used on the host that should be monitored. In fact, it doesn't matter if the system is the local one or a remote one as long as Glances is available. With some adjustments it should work on your own systems too. The difference will be the package and the firewall management tools. - -First some extra packages are needed beside Glances, especially the [bottle](http://bottlepy.org/docs/dev/index.html) webserver. I guess that Glances is available for your distribution as well. Otherwise follow those [instructions](https://github.com/nicolargo/glances#installation). - -```bash -$ sudo dnf -y install glances python-bottle -``` - -On Fedora the Firewall settings are strict. Let's open port 61208 to allow other hosts to connect to that port. This is not needed if you just want to observe your local machine. - -```bash -$ sudo firewall-cmd --permanent --add-port=61208/tcp -$ sudo firewall-cmd --reload -``` - -Launch `glances` and keep an eye on the output. - -```bash -$ glances -w -Glances web server started on http://0.0.0.0:61208/ -``` - -Now browse to http://IP_ADRRESS:61208/. You should see the webified view of Glances. - -

    - - Glances web interface -

    - -Another check is to access the API located at http://IP_ADRRESS:61208/api/2/mem/used and to confirm that a detail about your memory usage is provided as a JSON response. If so, you are good to proceed. - -```bash -$ curl -X GET http://IP_ADDRESS:61208/api/2/mem/used -{"used": 203943936} -``` - -Add the [glances sensor](/components/sensor.glances/) entry to your `configuration.yaml` file and restart Home Assistant then. - -```yaml -# Example configuration.yaml entry - - platform: glances - name: NAS - host: IP_ADDRESS - resources: - - 'disk_use_percent' - - 'disk_use' - - 'disk_free' -``` - -If there are no error in the log file then you should see your new sensors. - -

    - - The Glances sensors -

    - -[Glances](https://github.com/nicolargo/glances) has a couple of optional dependencies which are extenting the range of provided information. This means that it would be possible to get details about the RAID system, HDD temperature, IP addresses, sensors, etc., please create a [Pull request](https://github.com/home-assistant/home-assistant/pulls) with your additions or a [Feature request](https://github.com/home-assistant/home-assistant/issues/new) if you want see more details in your Home Assistant frontend. 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 deleted file mode 100644 index 8c20fd7c4f..0000000000 --- a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown +++ /dev/null @@ -1,63 +0,0 @@ ---- -layout: post -title: "Alarms, Sonos and iTunes now supported" -description: "Home Assistant 0.7.3 has been released with support for Sonos, iTunes and improved ." -date: 2015-09-19 21:47:00 0000 -date_formatted: "September 19, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -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. - -_Migration note: the `scheduler` component has been removed in favor of the `automation` component._ - -__Sonos__ - Sonos support has been added by [@rhooper](https://github.com/rhooper) and [@SEJeff](https://github.com/SEJeff). Home Assistant is now able to automatically detect Sonos devices in your network and set them up for you. It will allow you to control music playing on your Sonos and change the volume. - -__iTunes and airplay speakers__ - [@maddox](https://github.com/maddox) has contributed support for controlling iTunes and airplay speakers. For this to work you will have to run [itunes-api](https://github.com/maddox/itunes-api) on your Mac as middleware. - -```yaml -# Example configuration.yaml entry -media_player: - platform: itunes - name: iTunes - host: http://192.168.1.50 - port: 8181 -``` - - - -__Automation__ -Automation has gotten a lot of love. It now supports conditions, multiple triggers and new types of triggers. The best to get started with it is to head over to the new [getting started with automation](/getting-started/automation/) page. - -```yaml -# Example of entry in configuration.yaml -automation: - alias: Light on in the evening - trigger: - - platform: sun - event: sunset - offset: "-01:00:00" - - platform: state - entity_id: group.all_devices - state: home - condition: - - platform: state - entity_id: group.all_devices - state: home - - platform: time - after: "16:00:00" - before: "23:00:00" - action: - service: homeassistant.turn_on - entity_id: group.living_room -``` - -__Verisure Alarms__ - We now support arming and disarming your verisure alarm from within Home Assistant thanks to added support by [@persandstrom](https://github.com/persandstrom). diff --git a/source/_posts/2015-10-05-home-assistant-goes-geo-with-owntracks.markdown b/source/_posts/2015-10-05-home-assistant-goes-geo-with-owntracks.markdown deleted file mode 100644 index 4c09548c77..0000000000 --- a/source/_posts/2015-10-05-home-assistant-goes-geo-with-owntracks.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: post -title: "Home Assistant goes geo with OwnTracks" -description: "Home Assistant 0.7.4 has been released with support for OwnTracks and geofencing." -date: 2015-10-05 21:49:00 0000 -date_formatted: "October 5, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/screenshots/map.png ---- - -A few weeks have past and it is time again for another release: version 0.7.4. This time we're very glad to be able to introduce brand new integration with OwnTracks to allow tracking of people on a map. The geo support consists of three different parts: - - - [OwnTracks platform for the device tracker][platform-owntracks] to get locations for devices - - Brand new [zone component][component-zone] to define zones to identify locations and [trigger automation][zone-automation] - - A map in the UI to see all this ([see it in action in the demo](/demo/)) - -We have added a new [getting started section][start-presence] to get up and running. - -[platform-owntracks]: /components/device_tracker.owntracks/ -[component-zone]: /components/zone/ -[zone-automation]: /getting-started/automation-trigger/#zone-trigger -[start-presence]: /getting-started/presence-detection/ - -

    - -Map in Home Assistant showing two people and three zones (home, school, work) -

    - -Ofcourse more things happened in the last three weeks. I'm moving away from my usual long post to a short summary of highlights: - - - - - - - Sensor: [rest platform](/components/sensor.rest/) added ([@fabaff](https://github.com/fabaff)) - - Alarm Control Panel: [MQTT platform](/components/alarm_control_panel.mqtt/) added ([@sfam](https://github.com/sfam)) - - Media Player: [Plex platform](/components/media_player.plex/) added ([@miniconfig](https://github.com/miniconfig, [@adrienbrault](https://github.com/adrienbrault)) - - Dev Tools: services can now show description of fields ([@balloob](https://github.com/balloob)) - - MQTT: Support for certificates and improved error reporting ([@balloob](https://github.com/balloob)) - - Light: [limitlessled platform](/components/light.limitlessled/) extended with white light support ([@auchter](https://github.com/auchter)) - - Fuzzy matching for scenes ([@pavoni](https://github.com/pavoni)) - - Scene support for media player ([@maddox](https://github.com/maddox)) 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 deleted file mode 100644 index dec8efef22..0000000000 --- a/source/_posts/2015-10-11-measure-temperature-with-esp8266-and-report-to-mqtt.markdown +++ /dev/null @@ -1,222 +0,0 @@ ---- -layout: post -title: "Report the temperature with ESP8266 to MQTT" -description: "Step by step tutorial to use ESP8266 and a HDC1008 to ." -date: 2015-10-11 12:10:00 -0700 -date_formatted: "October 11, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: How-To MQTT ESP8266 -og_image: /images/blog/2015-10-esp8266-temp/ha-sensor.png ---- - -{::options coderay_line_numbers="table" /} - -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 Assistant can pick it up. - -

    - -Picture of the final setup (+ 2 LED for decoration) -

    - -

    - -Home Assistant will keep track of historical values and allow you to integrate it into automation. -

    - - - -### {% linkable_title Components %} - -I've been using Adafruit for my shopping: - - - [Adafruit HUZZAH ESP8266 Breakout](http://www.adafruit.com/product/2471) ([assembly instructions](https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly)) - - [Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board](http://www.adafruit.com/product/2635) ([assembly instructions](https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly)) - - [MQTT server](/components/mqtt/#picking-a-broker) - -_Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires, soldering iron + wire, Serial USB cable._ - -### {% linkable_title Alternatives %} - -Since this article has been published the HDC1008 has been discontinued. Updated sketches are available for the following alternatives: - - - [DHT22 sensor](https://www.adafruit.com/product/385) and [updated sketch](https://gist.github.com/balloob/1176b6d87c2816bd07919ce6e29a19e9). - - [BME280 sensor](https://www.adafruit.com/product/2652) and [updated sketch](https://gist.github.com/mtl010957/9ee85fb404f65e15c440b08c659c0419). - -### {% linkable_title Connections %} - -On your breadboard, make the following connections from your ESP8266 to the HDC1008: - -| ESP8266 | HDC1008 | -| ------- | ------- | -| GND | GND -| 3V | Vin -| 14 | SCL -| #2 | SDA - -_I picked `#2` and `14` myself, you can configure them in the sketch._ - -### {% linkable_title Preparing your IDE %} - -Follow [these instructions](https://github.com/esp8266/Arduino#installing-with-boards-manager) on how to install and prepare the Arduino IDE for ESP8266 development. - -After you're done installing, open the Arduino IDE, in the menu click on `sketch` -> `include library` -> `manage libraries` and install the following libraries: - -- PubSubClient by Nick 'O Leary -- Adafruit HDC1000 - -### {% linkable_title Sketch %} - -If you have followed the previous steps, you're all set. - - - Open Arduino IDE and create a new sketch (`File` -> `New`) - - Copy and paste the below sketch to the Arduino IDE - - Adjust the values line 6 - 14 to match your setup - - Optional: If you want to connect to an MQTT server without a username or password, adjust line 62. - - To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode. - - Press the upload button in Arduino IDE - - Open the serial monitor (`Tools` -> `Serial Monitor`) to see the output from your device - -This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last reported value. Reports to the MQTT broker are sent with retain set to `True`. This means that anyone connecting to the MQTT topic will automatically be notified of the last reported value. - -```cpp -#include -#include -#include -#include - -#define wifi_ssid "YOUR WIFI SSID" -#define wifi_password "WIFI PASSWORD" - -#define mqtt_server "YOUR_MQTT_SERVER_HOST" -#define mqtt_user "your_username" -#define mqtt_password "your_password" - -#define humidity_topic "sensor/humidity" -#define temperature_topic "sensor/temperature" - -WiFiClient espClient; -PubSubClient client(espClient); -Adafruit_HDC1000 hdc = Adafruit_HDC1000(); - -void setup() { - Serial.begin(115200); - setup_wifi(); - client.setServer(mqtt_server, 1883); - - // Set SDA and SDL ports - Wire.begin(2, 14); - - // Start sensor - if (!hdc.begin()) { - Serial.println("Couldn't find sensor!"); - while (1); - } -} - -void setup_wifi() { - delay(10); - // We start by connecting to a WiFi network - Serial.println(); - Serial.print("Connecting to "); - Serial.println(wifi_ssid); - - WiFi.begin(wifi_ssid, wifi_password); - - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - - Serial.println(""); - Serial.println("WiFi connected"); - Serial.println("IP address: "); - Serial.println(WiFi.localIP()); -} - -void reconnect() { - // Loop until we're reconnected - while (!client.connected()) { - Serial.print("Attempting MQTT connection..."); - // Attempt to connect - // If you do not want to use a username and password, change next line to - // if (client.connect("ESP8266Client")) { - if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) { - Serial.println("connected"); - } else { - Serial.print("failed, rc="); - Serial.print(client.state()); - Serial.println(" try again in 5 seconds"); - // Wait 5 seconds before retrying - delay(5000); - } - } -} - -bool checkBound(float newValue, float prevValue, float maxDiff) { - return !isnan(newValue) && - (newValue < prevValue - maxDiff || newValue > prevValue + maxDiff); -} - -long lastMsg = 0; -float temp = 0.0; -float hum = 0.0; -float diff = 1.0; - -void loop() { - if (!client.connected()) { - reconnect(); - } - client.loop(); - - long now = millis(); - if (now - lastMsg > 1000) { - lastMsg = now; - - float newTemp = hdc.readTemperature(); - float newHum = hdc.readHumidity(); - - if (checkBound(newTemp, temp, diff)) { - temp = newTemp; - Serial.print("New temperature:"); - Serial.println(String(temp).c_str()); - client.publish(temperature_topic, String(temp).c_str(), true); - } - - if (checkBound(newHum, hum, diff)) { - hum = newHum; - Serial.print("New humidity:"); - Serial.println(String(hum).c_str()); - client.publish(humidity_topic, String(hum).c_str(), true); - } - } -} -``` - -### {% linkable_title Configuring Home Assistant %} - -The last step is to integrate the sensor values into Home Assistant. This can be done by setting up Home Assistant to connect to the MQTT broker and subscribe to the sensor topics. - -```yaml -mqtt: - broker: YOUR_MQTT_SERVER_HOST - username: your_username - password: your_password - -sensor: - platform: mqtt - name: "Temperature" - state_topic: "sensor/temperature" - qos: 0 - unit_of_measurement: "ºC" - -sensor 2: - platform: mqtt - name: "Humidity" - state_topic: "sensor/humidity" - qos: 0 - unit_of_measurement: "%" -``` 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 deleted file mode 100644 index f5faa530db..0000000000 --- a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: post -title: "0.7.5: Blinkstick, SNMP, Telegram" -description: "Home Assistant 0.7.5 has been released with support for RFXtrx, Blinkstick, SNMP and Telegram." -date: 2015-10-11 10:10:00 -0700 -date_formatted: "October 11, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -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. - -This release also includes some new platforms (because they keep coming!): - - - - - Light: [blinkstick platform](/components/light.blinksticklight/) added ([@alanbowman](https://github.com/alanbowman)) - - Device Tracker: [SNMP platform](/components/device_tracker.snmp/) added ([@tomduijf](https://github.com/tomduijf)) - - Light: [rfxtrx platform](/components/light.rfxtrx/) added ([@badele](https://github.com/badele)) - - Switch: [rfxtrx platform](/components/switch.rfxtrx/) added ([@badele](https://github.com/badele)) - - Notify: [telegram platform](/components/notify.telegram/) added ([@fabaff](https://github.com/fabaff)) - -Also, the media player was extended by [@maddox](https://github.com/maddox) to support the play media command. This has been implemented for the [iTunes platform](/components/media_player.itunes/). diff --git a/source/_posts/2015-10-26-firetv-and-radiotherm-now-supported.markdown b/source/_posts/2015-10-26-firetv-and-radiotherm-now-supported.markdown deleted file mode 100644 index 5fef5d532a..0000000000 --- a/source/_posts/2015-10-26-firetv-and-radiotherm-now-supported.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: post -title: "0.7.6: Amazon FireTV, Radiotherm thermostats" -description: "Home Assistant 0.7.6 has been released with lots of squashed bugs and support for Amazon FireTV and Radiotherm thermostats." -date: 2015-10-26 18:10:00 0000 -date_formatted: "October 26, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -After two weeks of hard work I'm proud to announce the release of Home Assistant v0.7.6. For this release the main focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been squashed, [test coverage increased to 85%](https://coveralls.io/builds/3946399) and thanks to the hard work by [@fabaff](https://github.com/fabaff) and myself the [component section](/components/) on the website has gotten a complete revamp. - -#### Changes - - - - - Device tracker: Newer [TP-Link routers](/components/device_tracker.tplink/) now supported ([@mKeRix](https://github.com/mKeRix)) - - Alarm Control Panel: [Manual alarm](/components/alarm_control_panel.manual/) added ([@sfam](https://github.com/sfam)) - - Thermostat: [Radiotherm](/components/thermostat.radiotherm/) now supported ([@toddeye](https://github.com/toddeye)) - - Media Player: [Amazon FireTV](/components/media_player.firetv/) now supported ([@happyleavesaoc](https://github.com/happyleavesaoc)) - - Device Tracker: [Geofancy](/components/device_tracker.locative/) now supported ([@wind-rider](https://github.com/wind-rider)) - - New component [Shell Command](/components/shell_command/) can expose shell commands as services ([@balloob](https://github.com/balloob)) - - [Scripts](/components/script/) can now be customized using `customize` key in `configuration.yaml` ([@balloob](https://github.com/balloob)) - - Light: [Hyperion](/components/light.hyperion/) now supported ([@MakeMeASandwich](https://github.com/MakeMeASandwich)) - - Sensor: [aRest](/components/sensor.arest/) can now also read out pins ([@balloob](https://github.com/balloob)) - - Sensor: [Forecast.io](/components/sensor.forecast/) now supports specifying units in `configuration.yaml` ([@balloob](https://github.com/balloob)) - - Thermostat: [Heat Control](/components/thermostat.heat_control/) has been completely rewritten ([@balloob](https://github.com/balloob)) - - Switch: [Rest](/components/switch.rest/) now supported ([@bachp](https://github.com/bachp)) - - Media Player: [Plex](/components/media_player.plex/) can now be auto discovered and configure itself ([@tomduijf](https://github.com/tomduijf)) - - [Downloader](/components/downloader/) will now treat relative paths based on config dir ([@tomduijf](https://github.com/tomduijf)) - - Line Charts will use interpolation for sensor data and show current and target temperature for thermostats ([@balloob](https://github.com/balloob)) - - Device Tracker: [OpenWRT via ubus](/components/device_tracker.ubus/) now supported ([@krzynio](https://github.com/krzynio)) - - - -#### Breaking changes - -As part of this release we did some cleanup which introduced backwards incompatible changes: - -**Heat Control thermostat no longer includes scheduling features.** -This feature has been removed completely. Use the [automation component](/getting-started/automation/) instead to control target temperature. - -**Config changed for calling a service from a script.** -`execute_service:` has been replaced with `service:`. See [component page](/components/script/) for example. The old method will continue working for some time. - -**Scenes can no longer be turned off.** -It is no longer possible to turn a scene off after it has been activated. The way it worked was unpredictable and causes a lot of confusion. - -**Downloader treats relative paths now relative to the config dir instead of the current working dir.** -This makes more sense as most people run Home Assistant as a daemon diff --git a/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown b/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown deleted file mode 100644 index 404bf3d442..0000000000 --- a/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: post -title: "0.8: Honeywell Thermostats, Orvibo switches and Z-Wave switches and lights " -description: "Home Assistant 0.8 can now interact with Honeywell thermostats, Orvibo switches and has improved Z-Wave support." -date: 2015-11-16 21:27:00 0000 -date_formatted: "November 16, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -We have all been hard at work to get this latest release ready. One of the big highlights in this release is the introduction of an extended iconset to be used in the frontend (credits to [@happyleavesaoc] for idea and prototype). To get started with customizing, pick any icon from [MaterialDesignIcons.com], prefix the name with `mdi:` and stick it into your `customize` section in `configuration.yaml`: - -```yaml -homeassistant: - customize: - switch.ac: - icon: 'mdi:air-conditioner' -``` - -#### Breaking changes - - - Any existing zone icon will have to be replaced with one from [MaterialDesignIcons.com]. - - LimitlessLED light services require colors to be specified in RGB instead of XY. - -#### Changes - - - - * Thermostat: [Honeywell](/components/thermostat.honeywell/) now supported ([@sander76]) - * Switch: [Orvibo](/components/switch.orvibo/) now supported ([@happyleavesaoc]) - * Camera: [mjpeg camera's](/components/camera.mjpeg/) now supported ([@ryanturner]) - * Notify: [Pushetta](/components/notify.pushetta/) now supported ([@fabaff]) - * Light: [MQTT](/components/light.mqtt/) now supported ([@hexxter]) - * Light: [Z-Wave](/components/zwave/) now supported ([@leoc]) - * Switch: [Z-Wave](/components/zwave/) now supported ([@leoc]) - * New component [logger](/components/logger/) allows filtering logged data ([@badele]) - * New component [updater](/components/updater/) will notify users if an update for Home Assistant is available ([@rmkraus]) - * Notify: [PushBullet](/components/notify.pushbullet/) now allows targeting contacts/channels/specific devices ([@tomduijf]) - * Light: Allow controlling color temperature ([@tomduijf]) - * Frontend: about page added ([@balloob]) - * Switch RGB as the color unit used in light component ([@balloob]) - * Re-install platform and component dependencies after a Home Assistant version upgrade ([@balloob]) - -[MaterialDesignIcons.com]: https://MaterialDesignIcons.com -[@sander76]: https://github.com/sander76 -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@ryanturner]: https://github.com/ryanturner -[@fabaff]: https://github.com/fabaff -[@hexxter]: https://github.com/hexxter -[@leoc]: https://github.com/leoc -[@badele]: https://github.com/badele -[@rmkraus]: https://github.com/rmkraus -[@tomduijf]: https://github.com/tomduijf -[@balloob]: https://github.com/balloob diff --git a/source/_posts/2015-11-22-survey-november-2015.markdown b/source/_posts/2015-11-22-survey-november-2015.markdown deleted file mode 100644 index 38a84c00a3..0000000000 --- a/source/_posts/2015-11-22-survey-november-2015.markdown +++ /dev/null @@ -1,91 +0,0 @@ ---- -layout: post -title: "Survey November 2015" -description: "Results from our survey about usage of various parts of Home Assistant." -date: 2015-11-22 15:51:18 +0100 -date_formatted: "November 22, 2015" -author: Fabian Affolter -comments: true -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 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. - - -Thanks to Python, users are running Home Assistant on the most popular Linux distributions and other operating systems including OS X and Microsoft Windows. One quarter of the operating systems are unknown which leads to the assumption that it is possible to run Home Assistant on most of the available operation systems today. We hope that *BSD users have fun too. The Hardware platform of choice seems to be x86_64 and ARM. - -Of course most users are running with the [automation](/getting-started/automation/) component otherwise it would make much sense to use Home Assistant. The [sun](/components/sun/) component is used a lot too. We hope that this is not because this component is enabled by default. - -The [Alarm control panels](/components/alarm_control_panel/) and the [camera component](/components/camera/) are both used by around one third of the participants of the survey. It's safe to say that they cover a niche, but they will gain momentum when people discover how they can build alarm systems with Home Assistant. - -[Philips Hue](/components/light.hue/) is the "winner" in the light category closely followed by [MQTT lights](components/light.mqtt/). [Google Cast](/components/media_player.cast/) and [ Plex](/components/media_player.plex/) are the top media player platforms. [Pushbullet](/components/notify.pushbullet/) is by far the most-used [notification platform](/components/notify/). If you followed the recent efforts to improve this platform it's comprehensible. - -It's interesting to see that most of the sensor, switch, and thermostat platforms are used. A lot of people seem to be interested in the weather data provided by the [Forecast sensor](/components/sensor.forecast/). The MQTT sensors and switches are deployed in almost 50% of all Home Assistant setups. - - -

    - - Home Assistant releases -

    - -

    - - Operating systems -

    - -

    - - Hardware platforms -

    - -

    - - Components -

    - -

    - - Alarm Control Panels and Cameras -

    - -

    - - Device trackers -

    - -

    - - Lights -

    - -

    - - Media players -

    - -

    - - Notifications -

    - -

    - - Sensors -

    - -

    - - Switches -

    - -

    - - Thermostats -

    - -The conclusion is that [MQTT](http://mqtt.org/) is popular in almost every section from Alarm Control Panel, presence detection with [owntracks](http://owntracks.org/), sensors and switches, and now even for lights. - -The interpretation of the data is up to you. Again, thanks for participating in this survey. diff --git a/source/_posts/2015-12-06-community-highlights.markdown b/source/_posts/2015-12-06-community-highlights.markdown deleted file mode 100644 index 9452008fc9..0000000000 --- a/source/_posts/2015-12-06-community-highlights.markdown +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: post -title: Community Highlights -description: Interesting links from the Home Assistant community. -date: 2015-12-05 23:39:00 0000 -date_formatted: "December 5, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community Video -og_image: /images/blog/2015-12-community/hass-alexa.png ---- - -From time to time we come along things that are worth sharing with fellow Home Assisters. Here a list of some cool stuff from last week: - -First is the public beta of [Let's Encrypt](https://letsencrypt.org/). Let's Encrypt is a new certificate authority that is free, automated and open. This means that it will now be very easy to secure your connection to Home Assistant while you are away from home. W1ll1am23 has written up [a guide how to get started](https://community.home-assistant.io/t/homeassistant-nginx-ssl-proxy-setup/53). - -The next thing is a show-off of some of the cool stuff people do with Home Assistant. This is miniconfig talking to Home Assistant using the Amazon Echo! - -
    - -
    - -And last but not least, Midwestern Mac did a [microSD card performance comparison](http://www.midwesternmac.com/blogs/jeff-geerling/raspberry-pi-microsd-card) for the Raspberry Pi. If you're using a Pi, make sure to check it out! diff --git a/source/_posts/2015-12-06-locks-rollershutters-binary-sensors-and-influxdb-support.markdown b/source/_posts/2015-12-06-locks-rollershutters-binary-sensors-and-influxdb-support.markdown deleted file mode 100644 index 14e1b5685e..0000000000 --- a/source/_posts/2015-12-06-locks-rollershutters-binary-sensors-and-influxdb-support.markdown +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: post -title: "0.9: Rollershutters, locks, binary sensors and InfluxDB" -description: Version 0.9 of Home Assistant has been released. -date: 2015-12-06 12:29:00 -0700 -date_formatted: "December 6, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2015-12-release-09/facebook-09.png ---- - -It's been a few weeks but we managed to polish a nice new release of Home Assistant for y'all! - - - - - New [lock component] including [Wink][lock.wink] support ([@miniconfig]) - - New [binary sensor component] including [aRest][binary_sensor.arest] and [MQTT][binary_sensor.mqtt] support ([@fabaff]) - - New [rollershutter component] including [MQTT][rollershutter.mqtt] support ([@sfam]) - - New [InfluxDB component] to store data in InfluxDB ([@fabaff]) - - Thermostat: [Ecobee] now supported ([@nkgilley]) - - Thermostat: [Homematic] now supported ([@goir]) - - Support for [parsing JSON values] received over MQTT ([@mcdeck]) - - Bunch of bug fixes and optimizations - -To update, run `pip3 install --upgrade homeassistant`. - -[lock component]: /components/lock/ -[lock.wink]: /components/lock.wink/ -[binary sensor component]: /components/binary_sensor/ -[binary_sensor.arest]: /components/binary_sensor.arest/ -[binary_sensor.mqtt]: /components/binary_sensor.mqtt/ -[rollershutter component]: /components/rollershutter/ -[rollershutter.mqtt]: /components/rollershutter.mqtt/ -[InfluxDB component]: /components/influxdb/ -[Ecobee]: /components/thermostat.ecobee/ -[Homematic]: /components/thermostat.homematic/ -[parsing JSON values]: /components/mqtt/#processing-json - -[@miniconfig]: https://github.com/miniconfig -[@fabaff]: https://github.com/fabaff -[@sfam]: https://github.com/sfam -[@fabaff]: https://github.com/fabaff -[@nkgilley]: https://github.com/nkgilley -[@mcdeck]: https://github.com/mcdeck -[@goir]: https://github.com/goir - -

    - -

    - diff --git a/source/_posts/2015-12-07-influxdb-and-grafana.markdown b/source/_posts/2015-12-07-influxdb-and-grafana.markdown deleted file mode 100644 index 64e51095bf..0000000000 --- a/source/_posts/2015-12-07-influxdb-and-grafana.markdown +++ /dev/null @@ -1,109 +0,0 @@ ---- -layout: post -title: "InfluxDB and Grafana" -date: 2015-12-07 15:15:13 +0100 -description: "A step by step guide to start recording data from Home Assistant in InfluxDB and visualizing it using Grafana." -comments: true -date_formatted: "December 07, 2015" -author: Fabian Affolter -comments: true -categories: How-To -og_image: /images/blog/2015-12-influxdb/grafana-graph.png ---- - - -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. - - - -The first step is to install the InfluxDB packages. If you are not running Fedora, check the [installation](https://influxdb.com/docs/v0.9/introduction/installation.html) section for further details. - -```bash -$ sudo dnf -y install http://influxdb.s3.amazonaws.com/influxdb-0.9.5.1-1.x86_64.rpm -``` - -Launch the InfluxDB service. - -```bash -$ sudo systemctl start influxdb -``` - -If everything went well, then the web interface of the database should be accessible at [http://localhost:8083/](http://localhost:8083/). Create a database `home_assistant` to use with Home Assistant either with the web interface or the commandline tool `influx`. - -

    - - InfluxDB web frontend -

    - -```bash -$ influx -Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring. -Connected to http://localhost:8086 version 0.9.5.1 -InfluxDB shell 0.9.5.1 -> CREATE DATABASE home_assistant -``` - -An optional step is to create a user. Keep in mind to adjust the configuration (add `username` and `password`) in the next step if you prefer to go this way. - -```bash -> CREATE USER "home-assistant" WITH PASSWORD 'password' -``` - -To use the `influxdb` component in your installation, add the following to your `configuration.yaml` file: - -```yaml -influxdb: - host: 127.0.0.1 -``` - -After you restart Home Assistant you should see that the InfluxDB database gets filled. The [language](https://influxdb.com/docs/v0.9/query_language/index.html) to query the database is similar to SQL. - -```bash -$ influx -[...] -> USE home_assistant -Using database home_assistant -> SELECT * FROM binary_sensor -name: binary_sensor -------------------- -time domain entity_id value -1449496577000000000 binary_sensor bathroom_door 0 -1449496577000000000 binary_sensor bathroom_window 0 -1449496577000000000 binary_sensor basement_door 0 -1449496577000000000 binary_sensor basement_window 0 -1449496684000000000 binary_sensor bathroom_window 1 -[...] -``` - -[Grafana](http://grafana.org/) is a dashboard that can create graphs from different sources including InfluxDB. The installation is simple, and there are detailed steps for many different configurations on the [Grafana installation](http://docs.grafana.org/installation/) page. For a recent system that is running Fedora: - -```bash -$ sudo dnf -y install https://grafanarel.s3.amazonaws.com/builds/grafana-2.5.0-1.x86_64.rpm -``` - -Start the grafana server. - -```bash -$ sudo systemctl daemon-reload -$ sudo systemctl start grafana-server -$ sudo systemctl status grafana-server -``` - -Login with the username `admin` and the password `admin` at [http://localhost:3000/login](http://localhost:3000/login). Now follow the [InfluxDB setup instructions](http://docs.grafana.org/datasources/influxdb/). - -Now you can start to create dashboards and graphs. You have various options to get the data from the graph. The next image just shows a screenshot of the setting for a temperature sensor. - -

    - - Grafana settings -

    - -If the graph is not showing up in the dashboard you need to adjust the time range in the right upper corner. The graph is created for all state changes recorded by Home Assistant. - -

    - - Grafana Temperature graph -

    - diff --git a/source/_posts/2015-12-10-activating-tasker-tasks-from-home-assistant-using-command-line-switches.markdown b/source/_posts/2015-12-10-activating-tasker-tasks-from-home-assistant-using-command-line-switches.markdown deleted file mode 100644 index 87e5e4b47d..0000000000 --- a/source/_posts/2015-12-10-activating-tasker-tasks-from-home-assistant-using-command-line-switches.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -layout: post -title: "Activating Tasker tasks from Home Assistant using command line switches" -description: "Step-by-step guide how to start using Tasker on your Android phone with Home Assistant" -date: 2015-12-10 10:39:41 +0000 -date_formatted: "December 10, 2015" -author: Rowan Hine -comments: true -categories: How-To -og_image: /images/blog/2015-12-tasker/screenshot-2.png ---- - - -In this tutorial I will explain how you can activate Tasker tasks from Home Assistant command line switches. We are going to set up a switch that when toggled will make your Android device say either "On" or "Off". - -You could also do this with the automation component instead so whenever you put your house to sleep mode for example your Android device will open up Google Play Books or the Kindle app ready for you to read as well as dimming your lights, but this tutorial is all about the switches. - - - -### AutoRemote URL - -First things first you should install [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm) and [AutoRemote](https://play.google.com/store/apps/details?id=com.joaomgcd.autoremote) onto your Android device and launch AutoRemote. You should see a URL above the QR code, visit it in your browser and it should bring up a page a bit like this. - -

    - -

    - -Now type in `SayOn` in the `Message` box and you should see a box appear on the right with a URL in it, this is what we will be using in the Python script later on so save that for later. Do the same thing again but this time replace `SayOn` with `SayOff`. Now just click the `Send message now!` button to test that your commands will get sent to your Android device, if they do you will see a toast message at the bottom of your screen like this one. - -

    - -

    - -### Tasker Setup - -Open up Tasker and make sure you're in the `PROFILES` tab, then select the plus icon to create a new profile. Select `Event` -> `Plugin` -> `AutoRemote` -> `AutoRemote` and then the pencil icon to configure the AutoRemote event. Select `Message Filter` and enter in `SayOn` then go back until it asks you for a task. Select `New task` then just leave the next field blank and select the tick icon. -This is where we'll configure our task, so select the plus icon to select an action. Select `Alert` -> `Say` to add a Say action. Enter `On` in the text field and go back to test your task, make sure your media volume is up then select the play icon, you should hear your device say "On". - -

    - -

    - -Now you can go back to the main Tasker screen and create another profile but this time replace `SayOn` with `SayOff` and `On` with `Off`. After you've done that go to the main screen again and select the menu button at the top then `Exit` and `Save first` to make sure everything is saved properly. - -### Python Script - -Now it's time to set it up the script, so create a new Python script and name it `On.py` then enter this code: - -```python -import requests -requests.get('[URL]') -``` - -Enter in your "On" URL then save it. Create another script but this time call it `Off.py` and enter your "off" URL instead. - -### Home Assistant Configuration - -Add a command line switch to your Home Assistant configuration: - -```yaml -switch: - platform: command_switch - switches: - tasker_say: - oncmd: python "[LocationOfOnScript]" - offcmd: python "[LocationOfOffScript]" -``` - -Now load up Home Assistant and whenever you toggle the switch you created your Android device will respond with either "On" or "Off". :-) diff --git a/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown b/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown deleted file mode 100644 index 7a744b6791..0000000000 --- a/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: post -title: "[Update: decision reversed!] Philips Hue blocks 3rd party lights" -description: "Philips has published a firmware update that blocks pairing of any 3rd party light." -date: 2015-12-12 10:44:00 -0800 -date_formatted: "December 12, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Public-Service-Announcement ---- -**Update Dec 16**: Great news! Philips has decided to [reverse their decision][philips-reverse] and is working on a software update to allow 3rd party light bulbs again. - -

    - -Philips Hue FAQ entries regarding reversing the decision. -

    - -*Original post:* - - -Philips Hue was one of the first to get smart lights accepted by the mainstream. Their Zigbee-based hub is rock solid, never crashes, great API and worked with other Zigbee light bulbs too. They are a bit expensive but the platform was worth every penny, till now. - -Yesterday a thread on [/r/homeautomation][reddit-hue] published that Philips Hue now blocks all but their own bulbs and those of "friends of Hue". I have been able to confirm this in the [Philips Hue FAQ][philips-hue-faq] (Update Dec 14: they have removed the entries - [mirror here][philips-hue-faq-mirror]): - -

    - -Philips Hue FAQ entries regarding 3rd party light bulbs. -

    - -This means that after you update your Hue bridge to the latest version: - - - As of now, you can still use your existing paired 3rd party light bulbs - - You cannot pair new 3rd party light bulbs - - You're out of luck if for some reason you have to pair existing 3rd party light bulbs again - - Resetting your hub will force pairing of all your bulbs again - -If you own a Philips Hue hub and are using 3rd party light bulbs, make sure you do not upgrade your hub if you want to be able to pair new 3rd party lightbulbs. But do realize that you are sitting on a ticking time bomb. - -I have read, but have been unable to confirm it, that resetting your hub will force a software upgrade. So beware of that too. - -I will no longer suggest people to buy into the Philips Hue ecosystem. - -[philips-reverse]: http://www.developers.meethue.com/documentation/friends-hue-update -[reddit-hue]: https://www.reddit.com/r/homeautomation/comments/3wet8h/fyi_the_hue_hub_is_now_blocking_third_party/ -[philips-hue-faq]: http://www2.meethue.com/en-us/support/search/?q=Another+brand -[philips-hue-faq-mirror]: /images/blog/2015-12-philips-hue-3rd-party/mirror.png 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 deleted file mode 100644 index a896c618ad..0000000000 --- a/source/_posts/2015-12-13-setup-encryption-using-lets-encrypt.markdown +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: post -title: "Set up encryption using Let's Encrypt" -description: "Tutorial how to encrypt your connection with Home Assistant." -date: 2015-12-13 10:05:00 -0800 -date_formatted: "December 13, 2015" -author: Paulus Schoutsen & Martin Hjelmare -author_twitter: balloob -comments: true -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]. - -

    - -

    - - - -**Updated 2016-06-18** - -### {% linkable_title Requirements %} - -The DuckDNS part of this tutorial has no requirements but there are a few requirements as of now to run the Let's Encrypt client. - - - Direct connection to the internet or admin access to your router to set up port forwarding. - - A machine running a Unix-ish OS that include Python 2.6 or 2.7 (Docker can be used). - - Root access, to write to default config, log and library directories and bind port 80. - - - -### {% linkable_title DuckDNS %} - -The first step is to set up [DuckDNS]. This is a free dynamic DNS service that you can use to get a DuckDNS.org subdomain to point at your house. A dynamic DNS service works by having your home computer tell DuckDNS.org every 5 minutes what its IP is so that DuckDNS can make sure your domain name is set up correctly. - -For this example we will assume our domain is hass-example.duckdns.org. - -First step is to acquire and set up our domain name. For this, go to [DuckDNS], log in with any of the supported login providers and add a domain. After this check out their [installation instructions][duckdns-install] to finish your installation of DuckDNS. If you're on a Raspberry Pi, see 'Pi' in the category 'Operating Systems'. - - - -### {% linkable_title Let's Encrypt %} - -[Let's Encrypt] is a free, automated, and open certificate authority (CA). We will use this to acquire a certificate that can be used to encrypted our connection with Home Assistant. - -Let's Encrypt will give you a free 90-day certificate if you pass their domain validation challenge. Domains are validated by having certain data be accessible on your domain for Let's Encrypt ([they describe it better themselves][letsencrypt-technology]). - -Assuming that your home is behind a router, the first thing to do is to set up port forwarding from your router to your computer that will run Let's Encrypt. For the Let's Encrypt set up we need to forward external port `80` to internal port `80` (http connections). This can be set up by accessing your router admin interface ([Site with port forwarding instructions per router][port-forward]). This port forward must be active whenever you want to request a new certificate from Let's Encrypt, typically every three months. If you normally don't use or have an app that listens to port `80`, it should be safe to leave the port open. This will make renewing certificates easier. - -Now you're ready to install and run the client that requests certificates from Let's Encrypt. The following example will use the platform independent script to install and run the [certbot][certbot] client from Let's Encrypt. If there is a certbot package for your OS, it's recommended to install the package instead of the platform independent script. Read the [docs][certbot] for more information. There are also other clients that might offer more customization and options. See the [client options page][letsencrypt-clients] at Let's Encrypt. - -```bash -$ mkdir certbot -$ cd certbot/ -$ wget https://dl.eff.org/certbot-auto -$ chmod a+x certbot-auto -$ ./certbot-auto certonly --standalone \ - --standalone-supported-challenges http-01 \ - --email your@email.address \ - -d hass-example.duckdns.org -``` - -If you're using Docker, run the following command to generate the required keys: - -```bash -sudo mkdir /etc/letsencrypt /var/lib/letsencrypt -sudo docker run -it --rm -p 80:80 --name certbot \ - -v "/etc/letsencrypt:/etc/letsencrypt" \ - -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \ - quay.io/letsencrypt/letsencrypt:latest certonly \ - --standalone --standalone-supported-challenges http-01 \ - --email your@email.address -d hass-example.duckdns.org -``` - -With either method your certificate will be generated and put in the directory `/etc/letsencrypt/live/hass-example.duckdns.org`. As the lifetime is only 90 days, you will have to repeat this every 90 days. There's a special command to simplify renewing certificates: - -```bash -./certbot-auto renew --quiet --no-self-upgrade --standalone \ - --standalone-supported-challenges http-01 -``` - - - -### {% linkable_title Home Assistant %} - -Before updating the Home Assistant configuration, we have to forward port `443` (https connections) to port `8123` on the computer that will run Home Assistant. Do this in your router configuration as previously done for port `80`. - -The final step is to point Home Assistant at the generated certificates. Before you do this, make sure that the user running Home Assistant has read access to the folder that holds the certificates. - -```yaml -http: - api_password: YOUR_SECRET_PASSWORD - ssl_certificate: /etc/letsencrypt/live/hass-example.duckdns.org/fullchain.pem - ssl_key: /etc/letsencrypt/live/hass-example.duckdns.org/privkey.pem -``` - -You can now navigate to https://hass-example.duckdns.org and enjoy encryption! - -_Big thanks to Fabian Affolter for his help and feedback on this article._ - -[DuckDNS]: https://duckdns.org -[duckdns-install]: https://www.duckdns.org/install.jsp -[Let's Encrypt]: https://letsencrypt.org -[letsencrypt-technology]: https://letsencrypt.org/how-it-works/ -[letsencrypt-clients]: https://letsencrypt.org/docs/client-options/ -[port-forward]: http://portforward.com -[certbot]: https://certbot.eff.org/ diff --git a/source/_posts/2015-12-20-amazon-echo-icloud-and-templates.markdown b/source/_posts/2015-12-20-amazon-echo-icloud-and-templates.markdown deleted file mode 100644 index fe534bc2ed..0000000000 --- a/source/_posts/2015-12-20-amazon-echo-icloud-and-templates.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: post -title: "0.10: Amazon Echo, iCloud, Dweet.io, Twitch and templating support!" -description: "Home Assistant 0.10 has been released with a bunch of added components and brand new templating support." -date: 2015-12-22 01:30:00 -0800 -date_formatted: "December 22, 2015" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2015-12-release-10/alexa-fb.png ---- - -Alrighty, it's time for Home Assistant 0.10. A lot amazing things have changed and sadly we also had to introduce a bunch of backwards incompatible changes. I would like to give a big shoutout to Philip Lundrigan ([@philipbl]) who put a lot in effort in helping the migration to move towards using templates for a wide variety of platforms. - -
    - -
    - - - - - Device tracker: [iCloud] platform added ([@xorso], [@kevinpanaro]) - - Frontend: Improved caching using service workers if served over SSL ([@balloob]) - - Sensor: [Twitch] platform added ([@happyleavesaoc]) - - [Template] support ([@balloob], [@philipbl], [@fabaff]) - - Thermostat: [Heatmiser] platform added ([@andylockran]) - - Sensor: [Dweet.io] platform added ([@fabaff]) - - [Alexa/Amazon echo] component added ([@balloob]) - - Device Tracker: [FritzBox] platform added ([@deisi], [@caiuspb]) - - Sensor: [Wink] now supports the Egg minders ([@w1ll1am23]) - - Sensor: [ELIQ Online] platform added ([@molobrakos]) - - Binary sensor: [REST] platform added ([@fabaff]) - - Sensor: [Torque (OBD2)] platform added ([@happyleavesaoc]) - -[iCloud]: /components/device_tracker.icloud/ -[Twitch]: /components/sensor.twitch/ -[Template]: /topics/templating/ -[Heatmiser]: /components/thermostat.heatmiser/ -[Dweet.io]: /components/sensor.dweet/ -[Alexa/Amazon echo]: /components/alexa/ -[FritzBox]: /components/device_tracker.fritz/ -[Wink]: /components/sensor.wink/ -[ELIQ Online]: /components/sensor.eliqonline/ -[REST]: /components/binary_sensor.rest/ -[Torque (OBD2)]: /components/sensor.torque/ -[@andylockran]: https://github.com/andylockran -[@balloob]: https://github.com/balloob -[@caiuspb]: https://github.com/caiuspb -[@deisi]: https://github.com/deisi -[@fabaff]: https://github.com/fabaff -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@kevinpanaro]: https://github.com/kevinpanaro -[@molobrakos]: https://github.com/molobrakos -[@philipbl]: https://github.com/philipbl -[@w1ll1am23]: https://github.com/w1ll1am23 -[@xorso]: https://github.com/xorso - - - -### Templates - -This release introduces templates. This will allow you to parse data before it gets processed or create messages for notifications on the fly based on data within Home Assistant. The notification component and the new Alexa/Amazon Echo component are both using the new template functionality to render responses. A template editor has been added to the developer tool section in the app so you can get instant feedback if your templates are working or not. - -```text -The temperature at home is {% raw %}{{ states('sensor.temperature') }}{% endraw %}. -``` - -More information and examples can be found in the [template documentation][Template]. - -### Breaking changes - -Templates will now be the only way to extract data from 'raw' sources like REST, CommandSensor or MQTT. This will replace any specific option that used to do this before. This means that `precision`, `factor`, `attribute` or `json_path` etc will no longer work. - -Affected components and platforms: - - - sensor: [arest][sensor.arest] - - sensor: [command_sensor][sensor.command] - - sensor: [rest][sensor.rest] - - sensor: [MQTT][sensor.mqtt] - - switch: [MQTT][switch.mqtt] - - rollershutter: [MQTT][rollershutter.mqtt] - - light: [MQTT][light.mqtt] - - binary_sensor: [MQTT][binary_sensor.mqtt] - - automation: [numeric_state][automation-numeric-state] - -[sensor.arest]: /components/sensor.arest/ -[sensor.command]: /components/sensor.command_sensor/ -[sensor.rest]: /components/sensor.rest/ -[sensor.mqtt]: /components/sensor.mqtt/ -[switch.mqtt]: /components/switch.mqtt/ -[rollershutter.mqtt]: /components/rollershutter.mqtt/ -[light.mqtt]: /components/light.mqtt/ -[binary_sensor.mqtt]: /components/binary_sensor.mqtt/ -[automation-numeric-state]: /getting-started/automation-trigger/#numeric-state-trigger diff --git a/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown b/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown deleted file mode 100644 index 9c2cba7e3f..0000000000 --- a/source/_posts/2016-01-17-extended-support-for-diy-solutions.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: post -title: "0.11: Extended support for DIY solutions" -description: "Home Assistant 0.11 has been released with extended support for making your own home automation components using a Raspberry Pi and MySensors." -date: 2016-01-17 15:20:00 -0800 -date_formatted: "January 17, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -First release of 2016 and we are on 🔥! The [main repository][github-ha] has passed 2500 ⭐ on GitHub (2596 ⭐ as of now). This release also has a [record number][release-pr] of 20 contributors all working on improving and extending Home Assistant. With the continued growth, I am very excited to see what 2016 will bring us 🤘. - -[github-ha]: https://github.com/home-assistant/home-assistant/ -[release-pr]: https://github.com/home-assistant/home-assistant/pull/883#partial-users-participants - - - - - [MySensors] revamped and switch support added ([@MartinHjelmare][@MartinHjelmare]) - - Full refactor of RPi GPIO. Now includes [binary sensor][rpi-bs] and [switch][rpi-s] ([@sfam]) - - Sensor: [YR] platform added ([@danielhiversen]) - - Device Tracker: Geofancy platform has been renamed to [Locative] ([@philipbl]) - - Automation: Add [sun condition] ([@philipbl]) - - Switch: [command_switch] can now poll for state ([@happyleavesaoc][@happyleavesaoc]) - - Switch: [wemo] now uses subscription to states instead of polling ([@pavoni][@pavoni]) - - [Telldus Live] support added ([@molobrakos]) - - [Vera] now uses subscription to states instead of polling ([@pavoni]) - - New [template helper method] `is_state_attr(entity_id, name, value)` added ([@andythigpen]) - - Device tracker: [OwnTracks] transition events now supported ([@xifle]) - - Light: [Philips Hue] platform now supports multiple hubs ([@rhooper]) - - Notify: [Free Mobile] platform added ([@HydrelioxGitHub]) - - New [MQTT Eventstream] component to connect two Home Assistant instances over MQTT ([@moonshot]) - - Media player: [Cast] huge stability improvements ([@rmkraus]) - - Media Player: [Universal media player] added to combine multiple media players ([@rmkraus]) - - Sensor: [Netatmo] platform added ([@HydrelioxGitHub]) - - Alarm Control Panel: [Alarm.com] platform added ([@Xorso]) - - Thermostat: [Proliphix] platform added ([@sdague]) - - New component [input_boolean] will allow for customizing automation ([@balloob]) - - Support calling services via [Amazon Echo] ([@balloob]) - -[MySensors]: /components/mysensors/ -[YR]: /components/sensor.yr/ -[Locative]: /components/device_tracker.locative/ -[sun condition]: /getting-started/automation-condition/#sun-condition -[command_switch]: /components/switch.command_switch/ -[wemo]: /components/switch.wemo/ -[Telldus Live]: /components/tellduslive/ -[Vera]: /components/vera/ -[template helper method]: /topics/templating/#home-assistant-template-extensions -[OwnTracks]: /components/device_tracker.owntracks/ -[Philips Hue]: /components/light.hue/ -[Free Mobile]: /components/notify.free_mobile/ -[MQTT Eventstream]: /components/mqtt_eventstream/ -[Cast]: /components/media_player.cast/ -[Universal media player]: /components/media_player.universal/ -[Netatmo]: /components/sensor.netatmo/ -[Alarm.com]: /components/alarm_control_panel.alarmdotcom/ -[Proliphix]: /components/thermostat.proliphix/ -[rpi-bs]: /components/binary_sensor.rpi_gpio/ -[rpi-s]: /components/switch.rpi_gpio/ -[input_boolean]: /components/input_boolean/ -[MySensors sensor platform]: /components/sensor.mysensors/ -[Amazon Echo]: /components/alexa/ - -### Backwards incompatible changes - - The [RPi.GPIO sensor platform][rpi-bs] has been moved to the `binary_sensor` component. - - [MySensors sensor platform] now requires the [MySensors] component to be configured. - - Geofancy platform has been renamed to [Locative]. - -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@danielhiversen]: https://github.com/danielhiversen -[@philipbl]: https://github.com/philipbl -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@pavoni]: https://github.com/pavoni -[@molobrakos]: https://github.com/molobrakos -[@andythigpen]: https://github.com/andythigpen -[@xifle]: https://github.com/xifle -[@rhooper]: https://github.com/rhooper -[@HydrelioxGitHub]: https://github.com/HydrelioxGitHub -[@moonshot]: https://github.com/moonshot -[@rmkraus]: https://github.com/rmkraus -[@Xorso]: https://github.com/Xorso -[@sdague]: https://github.com/sdague -[@balloob]: https://github.com/balloob -[@sfam]: https://github.com/sfam diff --git a/source/_posts/2016-01-19-perfect-home-automation.markdown b/source/_posts/2016-01-19-perfect-home-automation.markdown deleted file mode 100644 index 74fa832b03..0000000000 --- a/source/_posts/2016-01-19-perfect-home-automation.markdown +++ /dev/null @@ -1,54 +0,0 @@ ---- -layout: post -title: "Perfect Home Automation" -description: "A breakdown of what the perfect home automation should consist of." -date: 2016-01-19 00:20:00 -0800 -date_formatted: "January 19, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Internet-of-Things ---- - -People often ask me about my vision for Home Assistant. Before I can describe where I want to go with Home Assistant, I should first talk about how home automation would look in my ideal world. This will be the aim of this post. I’m not going to focus on protocols, networks or specific hubs. That's all implementation details. Instead, this post will focus on what is most important: the interaction between the users and their home. - -### {% linkable_title You should not have to adapt to technology. %} - -When people start using home automation, they always experience home control first: being able to control devices in new ways using a phone or computer. They believe the future is now and their app will be their remote for their lives. They only focus on what they are getting, not on what they are losing. You install some light bulbs and all of a sudden you are no longer able to use the light switches. You'll arrive at home at night and have to pull out your phone, open the app, let it connect and finally you'll be able to turn on the light. All while turning the light on could have been a switch away. - -Yes, you can solve this with presence detection. What if your phone runs out of battery? You’ll have to resort to the switch again. - -If you find that using your new home devices is cumbersome, the promise of home automation technology has failed you. Your lights should work with both a switch (or button) at the entrance of your room and via presence detection. Honestly, there are hardly any valid use cases for being able to control lights from your phone except for showing off. - - -### {% linkable_title You are not the only user of your home automation. %} - -People tend to forget that they are not the only ones in their home. As the developer of your house you're enthusiastic about the possibilities and are willing to overlook flaws. Chances are very high that the other people in your household have different hobbies and just want to mind their own business. - -This means that everything you automate has to work flawlessly. If you successfully manage to cause a response to some stimulus 90% of the time, you’re going to have a disproportionately poor experience 10% of the time. A common automation that fits this pattern is to fade the lights when you start watching a movie or series in the living room. It only works if everyone is watching. - -### {% linkable_title Limit the impact of false positives and negatives. %} - -With every automation, you always have to think: what will be the impact if it doesn’t work? Home automation is composed of many different systems by many different vendors that speak many different protocols: things will go wrong. It’s up to you to make sure that they have a limited impact when they fail. Ideally, devices should fall back to a pre-smart home experience. A Philips Hue bulb will act like a standard white light if turned on/off using a normal switch or when not connected to a hub. If things get worse when your system is out of order, your users will revolt. Take for example the Nest thermostat that [had a bug in the beginning of January][nest-bug] which caused it to stop heating the house, yikes! - -[nest-bug]: http://www.nytimes.com/2016/01/14/fashion/nest-thermostat-glitch-battery-dies-software-freeze.html - -### {% linkable_title The perfect app is no app. %} - -Home automation should blend with your current workflow, not replace it. For most devices, there is no faster way to control most devices than how you are already doing it today. Most of the time, the best app is no app. The only interface that can be more convenient, and is accessible for visitors of your home of all ages is a voice interface. The industry has realized this too and there are some major players focussing on voice interaction. Take Apple for example: the only way to control your HomeKit devices is with Siri. Amazon has taken it one step further with the Amazon Echo, providing an always-listening connected speaker/microphone for the living room. I expect a lot more companies to join this segment in 2016. - -Voice interfaces are not perfect either. The speed at which you can issue commands is low because you have to wait for a response. There are also issues with the discoverability of commands, recognition of accents and dependency on the cloud for processing your voice. I believe that all but the first one are problems that are going to be solved eventually. - -This however doesn’t mean there isn’t a place for apps, there definitely is. They are perfectly well-suited for checking in while you’re away, browsing the state changes of your house or making the lights go all funky when there are kids visiting. - -### {% linkable_title Your system should run at home, not in the cloud. %} - -The cloud is a magical thing. Somewhere in the world there are computers collecting the data that your house generates, testing them against your automation rules and sending commands back when needed. The cloud will receive updates and improve itself over time so it is able to serve you better. Until it’s not. There are many reasons why your home might lose its connection to the cloud. The internet can stop working, an update might have gone wrong or the servers running the cloud crash. - -When this happens, your house should be able to keep functioning. The cloud should be treated as an extension to your smart home instead of running it. That way you’ll avoid awkward situations like when Amazon AWS was down and the [Amazon Echo stopped working][echo-crash]. - -[echo-crash]: http://www.zdnet.com/article/the-night-alexa-lost-her-mind/ - -**Good home automation never annoys but is missed when it is not working.** - -*Thanks to Chris LaRose for this feedback and comments.* 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 deleted file mode 100644 index 22851a07e7..0000000000 --- a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown +++ /dev/null @@ -1,92 +0,0 @@ ---- -layout: post -title: "0.12: Insteon, LIFX, Twitter and ZigBee" -description: "Home Assistant 0.12 brings improved organizational tools and makes writing automation in Python easier." -date: 2016-01-30 00:22:00 -0800 -date_formatted: "January 30, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -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 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. - -

    - -Example of the new views in the frontend. Learn more. -

    - - - - - Binary sensor: [command sensor] added ([@Bart274]) - - [Nest] support extended to include sensors and binary sensors ([@joshughes]) - - Light: [LIFX] platform added ([@TangoAlpha]) - - Notify: [Twitter] platform added ([@HydrelioxGitHub]) - - Sensor: [Template] platform added ([@pavoni]) - - Switch: [Wink] platform now supports sirens ([@w1ll1am23]) - - [Insteon hub] support added ([@FreekingDean]) - - [Statsd] component added ([@michaelkuty]) - - Light: [Rfxtrx] platform now supports dimming ([@turbokongen]) - - Time scheduling (including [time automation]) now works with intervals (ie. `/5`) ([@kennedyshead]) - - Sensor: [onewire] support added ([@deisi]) - - [Zigbee] support added ([@flyte]) - - Device Tracker: [OwnTracks] can now track iBeacons ([@pavoni]) - - Notify: [Google Voice SMS] platform added ([@w1ll1am23]) - - Toggle service added to `homeassistant`, `switch`, `light` and `media_player` ([@rmkraus]) - - [Thermostat] services added to control fans ([@auchter]) - - Improved Python automation: Event helpers are now also available as decorators for custom components ([@rmkraus]) - - Frontend: support added for tabs to show [different views][group] of your house ([@balloob]) - - Bugfixes by [@molobrakos], [@MartinHjelmare], [@pavoni], [@trollkarlen], [@zmrow], [@maddox], [@persandstrom], [@happyleavesaoc], [@balloob], [@fabaff], [@stefan-jonasson], [@haraldnagel]. - -[the demo]: /demo/ -[command sensor]: /components/binary_sensor.command/ -[Google Voice SMS]: /components/notify.google_voice/ -[Insteon hub]: /components/insteon_hub/ -[LIFX]: /components/light.lifx/ -[Nest]: /components/nest/ -[onewire]: /components/sensor.onewire/ -[OwnTracks]: /components/device_tracker.owntracks/ -[Rfxtrx]: /components/light.rfxtrx/ -[Statsd]: /components/statsd/ -[Template]: /components/sensor.template/ -[Thermostat]: /components/thermostat/ -[time automation]: /getting-started/automation-trigger/#time-trigger -[Twitter]: /components/notify.twitter/ -[Wink]: /components/wink/ -[Zigbee]: /components/zigbee/ -[group]: /components/group/ -[@auchter]: https://github.com/auchter -[@balloob]: https://github.com/balloob -[@Bart274]: https://github.com/Bart274 -[@deisi]: https://github.com/deisi -[@fabaff]: https://github.com/fabaff -[@flyte]: https://github.com/flyte -[@FreekingDean]: https://github.com/FreekingDean -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@haraldnagel]: https://github.com/haraldnagel -[@HydrelioxGitHub]: https://github.com/HydrelioxGitHub -[@joshughes]: https://github.com/joshughes -[@kennedyshead]: https://github.com/kennedyshead -[@maddox]: https://github.com/maddox -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@michaelkuty]: https://github.com/michaelkuty -[@molobrakos]: https://github.com/molobrakos -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@rmkraus]: https://github.com/rmkraus -[@stefan-jonasson]: https://github.com/stefan-jonasson -[@TangoAlpha]: https://github.com/TangoAlpha -[@trollkarlen]: https://github.com/trollkarlen -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@zmrow]: https://github.com/zmrow - -### {% linkable_title Backwards incompatible changes %} - - Nest config has moved from thermostat to the [Nest component][Nest]. - - Entity IDs for Z-Wave devices are now generated in a deterministic way causing all IDs to change starting this release. This is a one time change. [(Changed again in 0.31)](/blog/2016/10/22/flash-briefing-updater-hacktoberfest/) 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 deleted file mode 100644 index a9deb4a4d1..0000000000 --- a/source/_posts/2016-02-09-Smarter-Smart-Things-with-MQTT-and-Home-Assistant.markdown +++ /dev/null @@ -1,219 +0,0 @@ ---- -layout: post -title: "Smarter SmartThings with MQTT and Home Assistant" -description: "Jer and St. John describe how they connected SmartThings with Home Assistant." -date: 2016-02-09 0:44 -0700 -date_formatted: "February 09, 2016" -author: Jeremiah Wuenschel and St. John Johnson -comments: true -categories: How-To MQTT -og_image: /images/blog/2016-02-smartthings/social.png ---- - - -_This is a guest post by Home Assistant users [Jeremiah Wuenschel](https://github.com/jer) and [St. John Johnson](https://github.com/stjohnjohnson)._ - -So you own a [SmartThings][smartthings] Hub. You probably bought it when you were looking to get into the whole Home Automation hobby because it worked with pretty much everything and offered you the ability to automate __anything.__ After a week of ownership, you realized that building dashboards and automating required writing way more Groovy then you expected. Then one day you were browsing [reddit][r/homeautomation] and discovered the amazingness that is Home Assistant! A solution that offered dashboards, graphs, working support for Nest, and REAL EASY automation! - -You spent your weekend getting everything set up, showing it off to your significant other, but in the end you got stumped when it came to integrating with all your existing SmartThings toys. What do I do now? Should I buy another hub? Should I just buy a Z-Wave stick? - -That's where we came in. We wanted a solution that can bridge the awesomeness of Home Assistant with the SmartThings hub that works with almost everything. - -

    - -

    - - - -## Glossary - -This is going to be a pretty detailed tutorial on setting up our SmartThings bridge. However, there are a couple key terms that _might_ be new to you: - - - [MQTT][mqtt]: A lightweight message protocol for listening and publishing events that happen. Many home automation platforms have built in support for this [(especially Home Assistant)][mqtt-ha]. - - [Docker][docker]: A tool for running applications that are self-contained. No need for installing any dependencies or worrying about conflicts. Installs easily on Linux and OSX. - -## Setting up the Bridge - -### MQTT - -Assuming that you already have Home Assistant and Smart Things running, you will first want to get an MQTT broker running. There are a handful of [MQTT][mosquitto] [brokers][emqttd] available in Open Source land. We chose [Mosca][mosca] for its simplicity. - -There is very little you need to do to get Mosca running. The easiest approach is to use [Docker][docker], and run a command like the following: - -```bash -$ docker run \ - -d \ - --name="mqtt" \ - -v /opt/mosca:/db \ - -p 1883:1883 \ - matteocollina/mosca -``` - -This will start Mosca up inside of a docker container, while keeping persistent storage for Mosca in `/opt/mosca`. The default configuration is the only thing we need to get things up and running. - -If you don't want to mess with Docker and can get node.js installed without trouble, the [standalone][mosca-standalone] instructions are all you need. - -### MQTT Bridge - -This is the small piece of magic that bridges the gap between MQTT and SmartThings. It is a node.js app, and like Mosca it is probably easiest to install with Docker: - -```bash -$ docker run \ - -d \ - --name="mqtt-bridge" \ - -v /opt/mqtt-bridge:/config \ - -p 8080:8080 \ - stjohnjohnson/smartthings-mqtt-bridge -``` - -The code for this bridge is [on Github][mqtt-bridge] if you want to start it up independently. - -The MQTT Bridge only needs to know where your MQTT broker lives. If you are using these docker commands as-is, edit `/opt/mqtt-bridge/config.yml` to look like this: - -```yaml ---- -mqtt: - host: -``` - -Restart the bridge, and you are ready to go: - -```bash -$ docker restart mqtt-bridge -``` - -### SmartThings Device - -The next step (and possibly the most confusing) is the device type. Go to the [Smart Things Device IDE][ide-dt] and `Create New Device Handler`. Choose `From Code` and paste in the [MQTT Bridge Device Code][devicetype]. Click `Save`, `Publish`, and then `For Me`. - -Now to install your new Device Handler. Go back to `My Devices` in the IDE, and click `New Device`. Enter a name, and pick any random set of characters for the Device Network Id (this will automatically update later). For Type, scroll to the bottom of the list and find your newly created `MQTT Bridge`. Fill in the other boxes however you like. - -Go back to `My Devices`, and click on your new device in the list. This will bring up a page that allows you to edit your device's Preferences. Click `edit` and fill in the 3 pieces of information it asks for. - - - MQTT Bridge IP Address: \ - - MQTT Bridge Port: \<8080 if you have changed nothing in the previous commands> - - MQTT Bridge MAC Address: \ - -This will create the link between SmartThings and the MQTT Bridge. - -### SmartThings App - -The last step is to setup the SmartApp. After this, any registered devices will start sending their events to MQTT. - -Go to the [Smart App IDE][ide-app]. Click `New SmartApp`, followed by `From Code`. Paste in the [MQTT Bridge SmartApp code][smartapp] and click `Save`. Click `Publish` and then `For Me`. In the SmartThings mobile app, add the new SmartApp and configure it with your devices and MQTT Bridge device. Clicking `done` will subscribe SmartThings to your MQTT broker and begin 2-way propagation of events. - -### Configure Home Assistant - -To add SmartThings devices to Home Assistant over MQTT, first enable MQTT in Home Assistant: - -```yaml -mqtt: - broker: localhost -``` - -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: - -| Topic | Description -| ----- | ----------- -| smartthings/Fireplace Lights/level | Brightness (0-99) -| smartthings/Fireplace Lights/switch | Switch State (on/off) - -Here is an example Home Assistant config: - -```yaml -switch: - platform: mqtt - name: "Fireplace Lights" - state_topic: "smartthings/Fireplace Lights/switch" - command_topic: "smartthings/Fireplace Lights/switch" - brightness_state_topic: "smartthings/Fireplace Lights/level" - brightness_command_topic: "smartthings/Fireplace Lights/level" - payload_on: "on" - payload_off: "off" - retain: true -``` - -We recommend `retain: true` for every MQTT device in order to keep states in sync when things become disconnected. - -Start digging through the [MQTT Components][mqtt-ha] in Home Assistant to find which components map to the new events being published to MQTT. - -### Configuring with Docker-Compose - -Our personal preference for starting the whole suite of software is to use a single Docker-Compose file. Just create a file called `docker-compose.yml` like this: - -```yaml -mqtt: - image: matteocollina/mosca - ports: - - 1883:1883 - -mqttbridge: - image: stjohnjohnson/smartthings-mqtt-bridge - volumes: - - ./mqtt-bridge:/config - ports: - - 8080:8080 - links: - - mqtt - -homeassistant: - image: homeassistant/home-assistant:latest - ports: - - 80:80 - volumes: - - ./home-assistant:/config - - /etc/localtime:/etc/localtime:ro - links: - - mqtt -``` - -This will start home-assistant, MQTT, and the Bridge, in dependency order. All config can reference the name of the docker container instead of using IP addresses (e.g., mqtt for the broker host in Home Assistant). - -### How it works - -**HTTP Endpoint**: There are really only 2 ways to communicate with the SmartThings hub that we could find. The easiest approach is to create a RESTful SmartApp authenticated with OAuth that provides state changes via HTTP directly. This approach is pretty straightforward to implement, but it requires communication with the SmartThings cloud service, and can't be done entirely on your LAN. We hoped to keep all communication internal, and came up with a second approach. - -**Custom Device Type:** SmartThings custom device types allow developers to define handlers for HTTP events received directly over the local network by the SmartThings hub. Messages received are authenticated by MAC address, and can contain arbitrary strings in their payload. Since a Device Type is only ever tied to a single device, we need to add a SmartApp to the mix in order to translate events between individual devices and our special Home Assistant Bridge device. Here is what we have so far: - -```text -Z-Wave Switch | -Zigbee motion sensor |<---> Bridge App <---> Bridge Device Type <---> -Z-Wave light bulb | -``` - -On the Home Assistant side, there is a powerful platform available based on the MQTT lightweight message bus protocol. Everything from lights to switches to temperature sensors can be defined in Home Assistant as an MQTT component, so it makes for a convenient integration point. This requires an MQTT broker for handling the message bus, and one last piece to translate between the HTTP that SmartThings supports and MQTT. - -Here is the final sequence of events: - -

    - - SmartThings Bridge Sequence - - SmartThings Bridge Sequence -

    - - -There are a lot of stops along the way for these events, but each piece is a simple translation layer to shuttle the events between systems. - -### Future Improvements -- **Raspberry Pi**: There is a lot of interest in getting this running on the Raspberry Pi. It only requires binaries compiled for ARM, so we plan to get ARM-compatible versions of the containers going at some point. -- **Authentication for MQTT**: At the moment, the MQTT bridge doesn't understand how to authenticate to MQTT, so only unauthenticated MQTT is supported. This is mitigated to some degree if you use our Docker Compose config, because MQTT's port is not actually shared publicly. -- **Authentication for MQTT Bridge**: Right now the bridge expects that anyone subscribing is the SmartThings hub. This could use proper authentication. - - -[mosquitto]: http://mosquitto.org/ -[emqttd]: https://github.com/emqtt/emqttd -[mosca]: http://www.mosca.io/ -[docker]: https://www.docker.com/ -[mosca-standalone]: https://github.com/mcollina/mosca#standalone -[mqtt-bridge]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge -[ide-dt]: https://graph.api.smartthings.com/ide/devices -[devicetype]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/devicetypes/stj/mqtt-bridge.src/mqtt-bridge.groovy -[ide-app]: https://graph.api.smartthings.com/ide/apps -[smartapp]: https://github.com/stjohnjohnson/smartthings-mqtt-bridge/blob/master/smartapps/stj/mqtt-bridge.src/mqtt-bridge.groovy -[mqtt-ha]: /components/mqtt/ -[smartthings]: http://smartthings.com -[r/homeautomation]: https://www.reddit.com/r/homeautomation -[mqtt]: https://en.wikipedia.org/wiki/MQTT 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 deleted file mode 100644 index 1cb7f6578b..0000000000 --- a/source/_posts/2016-02-11-classifying-the-internet-of-things.markdown +++ /dev/null @@ -1,167 +0,0 @@ ---- -layout: post -title: "Classifying the Internet of Things" -description: "" -date: 2016-02-12 22:31:00 UTC -date_formatted: "February 12, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Internet-of-Things -og_image: /images/blog/2016-02-classifying-internet-of-things/social.png ---- - -The core of home automation is knowing what’s going on. The faster we know about a state change, the better we can serve the user. If you want to have your lights to turn on when you arrive at home, it doesn’t help if it only knows about it after you’ve already opened the door and manually (!!) turned on the light. - -Each smart device consists of the ‘normal’ device and the piece that makes it ‘smart’: the connectivity. The connectivity part of a device can consists of either control, state or both. - -State describes what a device is up to right now. For example, a light can be on with a red color and a medium brightness. - -Control is about controlling the smart device by sending commands via an API. These commands can vary from configuring how a device works till mimicking how a user would interact with a device. A media player can allow skipping to the next track and a sensor could allow to configure its sensitivity or polling interval. - -The Home Assistant APIs are setup to be as convenient as possible. However, a network is always as weak as it’s weakest link. In our case these are the integrations. Take for example controlling a light that does not report state. The only state Home Assistant can report on after sending a command is the assumed state: what do we expect the state of the light to be if the command worked. - -We want our users to get the best home automation experience out there and this starts with making sure they have devices that work well with Home Assistant. That’s why we will start applying the following classifiers to our integrations: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassifierDescription
    Assumed State - We are unable to get the state of the device. Best we can do is to assume the state based on our last command. -
    Cloud Polling - Integration of this device happens via the cloud and requires an active internet connection. Polling the state means that an update might be noticed later. -
    Cloud Push - Integration of this device happens via the cloud and requires an active internet connection. Home Assistant will be notified as soon as a new state is available. -
    Local Polling - Offers direct communication with device. Polling the state means that an update might be noticed later. -
    Local Push - Offers direct communication with device. Home Assistant will be notified as soon as a new state is available. -
    - -The background to how we got to these classifiers can be read after the break. - - -## {% linkable_title State %} - -How state is communicated can be broken down into 5 categories. They are not mutually exclusive - a device state can be available both via the cloud and local connectivity. - -### {% linkable_title No state available %} -These are devices that do not have the capabilities to make their state available. They only allow to be controlled. For example, devices with infrared remote controls like TVs and ACs. You can press the turn on button on the remote but can only assume that your command was received and executed successfully. The device might not be powered or something is blocking the infrared receiver. - -Home automation will have to approach such devices based on the assumption that it’s commands are received correctly: using optimistic updates. This means that after sending a command it will update the state of the device as if the command was received successfully. - -Advantages: - - - None - -Disadvantages: - - - 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. - -Advantages: - - - Able to control devices while at home or away. - - Cloud has access to more computing power to mine the device data to suggest optimizations to the user. - -Disadvantages: - - - It doesn’t work if the internet is down or the company stops support. - - You are no longer in control about who has access to your data. - -### {% linkable_title Cloud pushing new state %} -All off the previous section applies to this one. On top of that the cloud will now notify the home automation when a new state has arrived. This means that as soon as the cloud knows, the home automation knows. - -Advantages: - - - New state known as soon as available in the cloud. - -### {% linkable_title Polling the local device %} -These devices will offer an API that is locally accessible. The home automation will have to frequently check if the state has been updated. - -Advantages: - - - Does not depend on the internet - -Disadvantages: - - - To be pollable, a device needs to be always online which requires the device to be connected to a power source. - -### {% linkable_title Local device pushing new state %} -The best of the best. These devices will send out a notice when they get to a new state. These devices usually use a home automation protocol to pass it’s message to a hub that will do the heavy lifting of managing and notifying subscribers - -Advantages: - - - Near instant delivery of new states. - - Able to get a long battery life by going into deep sleep between state updates. - -Disadvantages: - - - If it does not also support polling, home automation will not be made aware of the state after booting up until it changes. - - If using deep sleep and wifi, will suffer a delay when waking up because connecting to WiFi and receiving an IP takes time. - - -## {% linkable_title Control %} - -Controlling a device can, just like state, be done through cloud and/or local connectivity. But the more important part of control is knowing if your command was a success and the new state of the device. - -### {% linkable_title No control available %} -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 successful. - -Advantages: - - - The state will be known right after the command was issued. - -Disadvantages: - - - It can take time before the state gets updated. How often do we poll and how long do we wait till we consider the command failed? Also, a state may change because of other factors. Difficult to determine if the updated state is because of our command. - -### {% linkable_title Device pushes state update %} -These devices will not return a new state as a result of the command but instead will push a new state right away. The downside of this approach is that we have to assume that a state update coming in within a certain period of time after a command is related to the command. - -### {% linkable_title Command returns new state %} -The very best. These devices will answer the command with the new state after executing the command. - -## {% linkable_title Classifying Home Assistant %} -Home Assistant tries to offer the best experience possible via its APIs. There are different ways of interacting with Home Assistant but all are local. - - - State polling is available via the REST API - - There is a stream API that will push new states as soon as they arrive to subscribers. This is how the frontend is able to always stay in sync. - - Calling a service on Home Assistant will return all states that changed while the service was executing. This sadly does not always include the new state of devices that push their new state, as they might arrive after the service has finished. 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 deleted file mode 100644 index de5e7e7760..0000000000 --- a/source/_posts/2016-02-13-speedtest-bloomsky-splunk-and-garage-doors.markdown +++ /dev/null @@ -1,116 +0,0 @@ ---- -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-13 22:15:00 UTC -date_formatted: "February 13, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2016-02-release-13/social-img.png ---- - -The focus of 0.13 was on test coverage, big cheers to [@rmkraus] for his hard work on this. I'm proud to announce that we've hit the 90% test coverage of the core + important components. A big milestone for the project. - -

    - - Examples of the new [input_select] and [weblink] components. -

    - -Not only did we gain a lot of test coverage, we also attracted a lot of new developers that contributed a variety of components and platforms: - - - - - Core: Add service to restart Home Assistant ([@rmkraus]) - - Core: Allow device to report as unavailable ([@MartinHjelmare]) - - Core: Allow overriding polling interval in platforms and [via config][polling-config] ([@balloob]) - - Frontend: support for a [default view] have been added to replace the show all view ([@balloob]) - - Component: Added [apcupsd] component ([@flyte]) - - Component: Added component to log values to [Splunk] ([@miniconfig]) - - Component: Added [garage door] component including [Wink] support ([@xrolfex]) - - Component: Added [input_select] component ([@balloob]) - - Component: Added [proximity] component to track people closest to a location ([@nickwaring], [@Bart274] ) - - Component: Added support for [Bloomsky Weather Station] ([@haraldnagel]) - - Component: Added support for pushing stats to [graphite] ([@kk7ds]) - - Component: Added support for [SCSGate] devices ([@flavio]) - - Component: Added [weblink] component to link to other pages ([@MagnusKnutas]) - - Component: Support for Ubiquiti mFI [sensors][mfi.sensor] and [switchable devices][mfi.switch] added ([@kk7ds]) - - Alarm control panel: Added [Caddx/GE/Interlogix NetworX][nx584] support ([@kk7ds]) - - Camera: [MJPEG] camera's will now show real stream instead of a 2fps stream ([@stjohnjohnson]) - - Camera: Added [Unifi video cameras][unifi] support ([@kk7ds]) - - Device Tracker: [Aruba] platform now uses SSH instead of telnet ([@carlosmgr]) - - History: Show correct graphs for thermostats ([@sdague]) - - Light: Added [MySensors] support ([@MartinHjelmare]) - - Lock: Added [Verisure] support ([@turbokongen]) - - Media Player: Added [Samsung TV] support ([@stefan-jonasson]) - - Media Player: Added [Snapcast] support ([@happyleavesaoc]) - - MQTT: Allow using templates in [publish service][mqtt-publish] ([@flyte]) - - Notify: Added [REST] support ([@Theb-1]) - - Sensor: Added [Speedtest.net] support ([@nkgilley]) - - Switch: Added [template] platform ([@pavoni]) - - Thermostat: Support for [Honeywell] in the US added ([@kk7ds]) - - Z-Wave: Allow [configuring polling][zwave-polling] and [support scenes][zwave-scene] ([@lukas-hetzenecker]) - - Bug fixes and improvements by [@persandstrom], [@fabaff], [@balloob], [@pavoni], [@philipbl], [@MartinHjelmare], [@rmkraus], [@molobrakos], [@lukas-hetzenecker], [@TangoAlpha], [@deisi], [@Danielhiversen], [@roqeer], [@jaharkes] - -[@rmkraus]: https://github.com/rmkraus/ -[@MartinHjelmare]: https://github.com/MartinHjelmare/ -[@balloob]: https://github.com/balloob/ -[@flyte]: https://github.com/flyte/ -[@miniconfig]: https://github.com/miniconfig/ -[@xrolfex]: https://github.com/xrolfex/ -[@nickwaring]: https://github.com/nickwaring/ -[@Bart274]: https://github.com/Bart274/ -[@haraldnagel]: https://github.com/haraldnagel/ -[@kk7ds]: https://github.com/kk7ds/ -[@flavio]: https://github.com/flavio/ -[@MagnusKnutas]: https://github.com/MagnusKnutas/ -[@stjohnjohnson]: https://github.com/stjohnjohnson/ -[@carlosmgr]: https://github.com/carlosmgr/ -[@sdague]: https://github.com/sdague/ -[@turbokongen]: https://github.com/turbokongen/ -[@stefan-jonasson]: https://github.com/stefan-jonasson/ -[@happyleavesaoc]: https://github.com/happyleavesaoc/ -[@Theb-1]: https://github.com/Theb-1/ -[@nkgilley]: https://github.com/nkgilley/ -[@pavoni]: https://github.com/pavoni/ -[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker/ -[@persandstrom]: https://github.com/persandstrom/ -[@fabaff]: https://github.com/fabaff/ -[@philipbl]: https://github.com/philipbl/ -[@molobrakos]: https://github.com/molobrakos/ -[@TangoAlpha]: https://github.com/TangoAlpha/ -[@deisi]: https://github.com/deisi/ -[@Danielhiversen]: https://github.com/Danielhiversen/ -[@roqeer]: https://github.com/roqeer/ -[@jaharkes]: https://github.com/jaharkes/ -[polling-config]: /cookbook/customize_polling_interval/ -[default view]: /components/group/ -[apcupsd]: /components/apcupsd/ -[Splunk]: /components/splunk/ -[garage door]: /components/garage_door/ -[Wink]: /components/garage_door.wink/ -[input_select]: /components/input_select/ -[proximity]: /components/proximity/ -[Bloomsky Weather Station]: /components/bloomsky/ -[graphite]: /components/graphite/ -[SCSGate]: /components/scsgate/ -[weblink]: /components/weblink/ -[mfi.switch]: /components/switch.mfi/ -[mfi.sensor]: /components/sensor.mfi/ -[nx584]: /components/alarm_control_panel.nx584/ -[MJPEG]: /components/camera.mjpeg/ -[unifi]: /components/camera.uvc/ -[Aruba]: /components/device_tracker.aruba/ -[History]: /components/history/ -[MySensors]: /components/light.mysensors/ -[Verisure]: /components/lock.verisure/ -[Speedtest.net]: /components/sensor.speedtest/ -[Samsung TV]: /components/media_player.samsungtv/ -[Snapcast]: /components/media_player.snapcast/ -[mqtt-publish]: /components/mqtt/#publish-service -[REST]: /components/notify.rest/ -[template]: /components/switch.template/ -[Honeywell]: /components/thermostat.honeywell/ -[zwave-polling]: /components/zwave/#configuration -[zwave-scene]: /components/zwave/#events diff --git a/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown b/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown deleted file mode 100644 index 382d895ad9..0000000000 --- a/source/_posts/2016-02-18-multi-room-audio-with-snapcast.markdown +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: post -title: "Multi-room audio with Snapcast, Mopidy, and Home Assistant" -date: 2016-02-18 00:10:56 -0500 -author: happyleavesaoc -comments: true -categories: How-To -date_formatted: "February 18, 2016" -og_image: /images/blog/2016-02-snapcast/diagram.png ---- - -Would you like to listen to music in every room in your home, controlled from one source? Then multi-room audio is for you. - -Multi-room audio can be achieved by having a computer attached to speakers in every room. On each computer, services run to play and/or control the audio. With this DIY approach, the kind of computer and speakers is very much up to you. It could be your desktop computer with attached powered speakers, your HTPC hooked up to your TV and receiver, a Raspberry Pi with Amp or DAC, or even an Android device. - -You'll need two key software packages, besides Home Assistant. The first is [Mopidy](https://www.mopidy.com/), a music server that can play local files, or connect to streaming music services like Spotify. The second is [Snapcast](https://github.com/badaix/snapcast/), which enables synchronized audio streaming across your network. Both can be integrated into Home Assistant. Each room audio device will run an instance of the Snapcast client, and optionally a Mopidy instance. Your server will run a special instance of Mopidy and the Snapcast server. - -Finally, you also need a player to control Mopidy. Any MPD-compatible player will work, and there are several [Mopidy-only web-based options](https://docs.mopidy.com/en/latest/ext/web/#ext-web) available. On Android, [Remotedy](https://play.google.com/store/apps/details?id=se.anil.remotedy) is particularly nice since you can access multiple Mopidy instances in one place. - -Home Assistant will provide device status, and volume control for each room. If you want to play music in all your rooms (on all your clients), access the server instance of Mopidy. If you want to play music only in a specific room, access that specific Mopidy instance. If you're using a web UI for Mopidy, you can add links to each instance in Home Assistant with the [weblink] component. - -

    - -

    - - - -## Staging - -- [Install](https://www.mopidy.com/) Mopidy (2.0.0 or greater) -- [Download](https://github.com/badaix/snapcast/releases/) and [Install](https://github.com/badaix/snapcast/tree/v0.5.0-beta-1#installation) Snapcast (0.5.0 or greater) - -## Configure Mopidy - -Mopidy can be run with multiple configuration files, each extending the previous file. This is helpful when we're running multiple instances with varying functionality. - - -### core.conf -The core configuration is shared between all instances: - -```conf -[mpd] -hostname = :: - -[http] -hostname = :: - -[audio] -output = alsasink - -[spotify] -username = -password = -``` - -### local.conf -Add the local configuration on computers that have local media files: - -```conf -[local] -media_dir = -``` - -### snapcast.conf -Finally, the Mopidy instance that connects with Snapcast needs special configuration. Run on a different port to avoid conflicts if you have a second Mopidy instance running on your computer. The audio output is sent to a named pipe - Snapcast will read from there. Note that you may have to adjust the audio output attribute depending on your system and audio sources. - -```conf -[mpd] -hostname = :: -port = 6601 - -[http] -hostname = :: -port = 6681 - -[audio] -output = audioresample ! audio/x-raw,rate=48000,channels=2,format=S16LE ! audioconvert ! wavenc ! filesink location=/tmp/snapfifo -``` - -## Run Mopidy - -To run a room-specific instance: - -```bash -$ mopidy --config $CONF_DIR/core.conf -``` - -To run a room-specific instance with local media: - -```bash -$ mopidy --config $CONF_DIR/core.conf:$CONF_DIR/local.conf -``` - -To run the special Snapcast-connected instance (with local media): - -```bash -$ mopidy --config $CONF_DIR/core.conf:$CONF_DIR/local.conf:$CONF_DIR/snapcast.conf -``` - -## Run Snapcast - -Start the `snapserver` on the same server running Mopidy with the snapcast configuration. - -```bash -$ snapserver # or use systemd -``` - -Start the `snapclient` on computers that will be playing audio. - -```bash -$ snapclient # or use systemd, add -h if necessary -``` - -## Configure Snapcast - -There are a number of snapcast configuration options, but the one relevant to Home Assistant is the client names. You can set them in the snapserver configuration file, by default located at `~/.config/Snapcast/settings.json`. Only edit this file while the `snapserver` is not running. Modify the `name` JSON value to your liking - this is how the client will be named in Home Assistant. - -## Configure Home Assistant - -Use the [mpd] and [snapcast] components. Optionally, use [weblink] to provide easy access to a Mopidy web UI. - -```yaml -media_player: -- platform: snapcast - host: xxxxx -- platform: mpd - server: xxxx - location: Multi-Room Controller -- platform: mpd - server: xxx - location: Room 1 - -weblink: - entities: - - name: Multi-Room Player - url: xxxx -``` - -[weblink]: /components/weblink/ -[snapcast]: /components/media_player.snapcast/ -[mpd]: /components/media_player.mpd/ diff --git a/source/_posts/2016-02-20-community-highlights.markdown b/source/_posts/2016-02-20-community-highlights.markdown deleted file mode 100644 index f60b86f6ba..0000000000 --- a/source/_posts/2016-02-20-community-highlights.markdown +++ /dev/null @@ -1,60 +0,0 @@ ---- -layout: post -title: Community Highlights -description: Another round-up of the amazing things from our community including Alexa Lightning skill and HomeKit integration. -date: 2016-02-20 01:06:00 -0800 -date_formatted: "February 20, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community Video -og_image: /images/blog/2016-02-community-highlights/part-of-the-thing.png ---- - -Home Assistant land has been busy and a lot of people have been creating awesome stuff. We've added [a cookbook section](/cookbook/) to the website full of examples how you can automate different things. Make sure you take a look and share your own recipes too! - -### {% linkable_title Home automation demo by Part of the Thing %} - -
    - -
    - -### {% linkable_title Haaska - Alexa Skill Adapter for Home Assistant %} - -Haaska allows you to control lights, switches, and scenes exposed by your Home Assistant instance using an Amazon Echo. This is different from our own [Alexa](/components/alexa/) component because it will teach the Amazon Echo directly about the devices instead of teaching it to talk to Home Assistant. It will not allow you to use custom sentences but it will allow you to skip the 'Ask Home Assistant' part when giving commands: - - - "Alexa, set kitchen to twenty percent" - - "Alexa, turn on evening scene" - - "Alexa, turn off bedroom light" - -[Haaska on GitHub](https://github.com/auchter/haaska) - -### {% linkable_title Integrating Home Assistant with HomeKit %} - -Contributor Maddox has created a plugin for HomeBridge, an open-source HomeKit bridge. This will allow you to control your home using Siri on your Apple devices. HomeBridge has recently restructured so you'll have to install the plugin separately with the homebridge-homeassistant npm package. - -Example config.json entry to load Home Assistant: - -```json -"platforms": [ - { - "platform": "HomeAssistant", - "name": "HomeAssistant", - "host": "http://192.168.1.50:8123", - "password": "xxx", - "supported_types": ["light", "switch", "media_player", "scene"] - } -] -``` - -[HomeBridge on GitHub](https://github.com/nfarina/homebridge) -[HomeBridge Home Assistant Plugin](https://github.com/maddox/homebridge-homeassistant) - -### {% linkable_title Custom alarm system with Home Assistant %} - -User thaijames [describes in the Home Assistant forums](https://community.home-assistant.io/t/controlling-house-alarm-from-ha/67) how he has created his own NFC-based alarm system using Home Assistant, DIY components and Garfield dolls. - -

    - -Hold your NFC tag against the belly of Garfield to unlock the alarm. -

    diff --git a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown deleted file mode 100644 index 3822349f8b..0000000000 --- a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown +++ /dev/null @@ -1,95 +0,0 @@ ---- -layout: post -title: "0.14: Steam, D-Link smart plugs and Neurio Energy Sensors" -description: "Home Assistant 0.14 has arrived." -date: 2016-02-27 14:15:00 -0800 -date_formatted: "February 28, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2016-02-release-14/social.png ---- - -It's been another two weeks which means it's time for release: 0.14! - - - - - Notify: [Command line platform][notify.command_line] added ([@stefan-jonasson]) - - Sensor: [Verisure] mousedetectors now supported ([@turbokongen]) - - Core: Entities can now expose if they assume their state representation is correct ([@balloob]) - - Sensor: [TCP][sensor.tcp] platform added ([@flyte]) - - Binary Sensor: [TCP][binary_sensor.tcp] platform added ([@flyte]) - - Sensor: [Neurio energy sensor] now supported ([@infamy]) - - Binary Sensor: [nx584] support added ([@kk7ds]) - - Improve and clarify CI testing ([@sdague]) - - Automation: State [triggers] and [conditions] now takes optional `for` config parameter to only trigger when a state hasn't changed for a certain period of time ([@pavoni], [@stefan-jonasson]) - - Sensor: [Nest] weather data added ([@w1ll1am23]) - - Device Tracker: [Ubiquiti Unifi] now supported ([@kk7ds]) - - Binary Sensor: [MySensors] now supported ([@MartinHjelmare]) - - Binary Sensor: [Bloomsky] now supported ([@balloob]) - - Binary Sensor: [Z-Wave] now supported ([@tpatja]) - - Switch: [D-Link smart plugs] now supported ([@LinuxChristian]) - - Script: Toggle support added ([@Andythigpen]) - - Light: [Wemo] now supported ([@jaharkes]) - - Rollershutter: [Command line platform][rollershutter.command_line] added ([@t30]) - - Sensor: [Steam] now supported ([@GreenTurtwig]) - - Binary Sensor: [Wink] now supported ([@w1ll1am23]) - - Demo has been updated ([@kfgoode]) - - Frontend: new UI for camera's ([@balloob]) - -

    - - Camera feeds are now directly embedded in the frontend. -

    - -### Backwards incompatible changes - - Component: Simple Alarm has been removed. Still available in [the cookbook]. - - Script: Turning on a [script] that is already on is now a no-op instead of skipping current delay. - - Wemo switches now have to be set up via the main [Wemo component] - - Command line platforms for [switch][switch.cmd], [sensor][sensor.cmd] and [binary_sensor][binary_sensor.cmd] have been renamed to `command_line`. - - The rfxtrx sensors entity ids will incur a one time change to move to a stable format. See [the docs][sensor.rfxtrx] for more details. - -[sensor.rfxtrx]: /components/sensor.rfxtrx/ -[notify.command_line]: /components/notify.command_line/ -[Verisure]: /components/sensor.verisure/ -[binary_sensor.tcp]: /components/binary_sensor.tcp/ -[sensor.tcp]: /components/sensor.tcp/ -[Neurio energy sensor]: /components/sensor.neurio_energy/ -[nx584]: /components/binary_sensor.nx584/ -[triggers]: /getting-started/automation-trigger/#state-trigger -[conditions]: /getting-started/automation-condition/#state-condition -[Nest]: /components/sensor.nest/ -[Ubiquiti Unifi]: /components/device_tracker.unifi/ -[MySensors]: /components/binary_sensor.mysensors/ -[Bloomsky]: /components/binary_sensor.bloomsky/ -[Z-Wave]: /components/binary_sensor.zwave/ -[D-Link smart plugs]: /components/switch.dlink/ -[Wemo]: /components/light.wemo/ -[rollershutter.command_line]: /components/rollershutter.command_line/ -[Steam]: /components/sensor.steam_online/ -[Wink]: /components/binary_sensor.wink/ -[the cookbook]: /cookbook/python_component_simple_alarm/ -[script]: /components/script/ -[Wemo component]: /components/wemo/ -[switch.cmd]: /components/switch.command_line/ -[sensor.cmd]: /components/sensor.command_line/ -[binary_sensor.cmd]: /components/binary_sensor.command_line/ - -[@stefan-jonasson]: https://github.com/stefan-jonasson -[@turbokongen]: https://github.com/turbokongen -[@balloob]: https://github.com/balloob -[@flyte]: https://github.com/flyte -[@infamy]: https://github.com/infamy -[@kk7ds]: https://github.com/kk7ds -[@sdague]: https://github.com/sdague -[@pavoni]: https://github.com/pavoni -[@w1ll1am23]: https://github.com/w1ll1am23 -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@tpatja]: https://github.com/tpatja -[@LinuxChristian]: https://github.com/LinuxChristian -[@Andythigpen]: https://github.com/Andythigpen -[@jaharkes]: https://github.com/jaharkes -[@t30]: https://github.com/t30 -[@GreenTurtwig]: https://github.com/GreenTurtwig -[@kfgoode]: https://github.com/kfgoode diff --git a/source/_posts/2016-03-12-z-wave-pep257-templated-service-calls.markdown b/source/_posts/2016-03-12-z-wave-pep257-templated-service-calls.markdown deleted file mode 100644 index 233ed00230..0000000000 --- a/source/_posts/2016-03-12-z-wave-pep257-templated-service-calls.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: post -title: "0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance." -description: "Home Assistant 0.15 has arrived." -date: 2016-03-12 10:55:00 -0800 -date_formatted: "March 12, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Two weeks has past so here is 0.15! We have been focussing a lot on quality. Making sure the system is more stable and reliable. I usually try to highlight one cool thing in the release notes but this release has 4 exciting announcements! - - - [@fabaff] has upgraded the codebase to follow the PEP257 documentation standard. - - [@partofthething] has migrated us to use the main Python Open Z-Wave library instead of our forked version. - - To make our automations more powerful, [@persandstrom] added the option to use templates to dynamically create service calls. This works for automation, Alexa, universal media player, template switch. [Learn more.][services] - - [@MartinHjelmare] has upgraded our scene support to now support all built-in services and components. - -Besides bug fixes, this release also brings: - - - - - Scene: Converted to a platform based component ([@sander76]) - - Scene: [Hunter Douglas Powerview] now supported ([@sander76]) - - Lock: [MQTT] platform added ([@fabaff]) - - Device Tracker: [OwnTracks] will allow filtering inaccurate GPS locations ([@HydrelioxGitHub]) - - Binary Sensor: Wemo Motion now supported ([@pavoni], [@ryanlaux]) - -```yaml -# Example using templates for service and data in service call. -# Works for automation, Alexa, universal media player, template switch. -automation: - - trigger: - - platform: state - entity_id: switch.bathroom - action: - service_template: > - {% raw %}{% if is_state('switch.bathroom', 'on') %} - switch.turn_on - {% else %} - switch.turn_off - {% endif %}{% endraw %} - data_template: - entity_id: switch.{% raw %}{{ states('input_select.is') }}{% endraw %} -``` - -### Breaking Changes - - - Media Player: Attributes to call service play_media has been renamed to -`media_content_type` and `media_content_id`, to match the corresponding media -player state attributes. This change affects automations, scripts and scenes. - -[services]: /topics/service_calls/#use-templates-to-decide-which-service-to-call -[Hunter Douglas Powerview]: /components/scene.hunterdouglas_powerview/ -[MQTT]: /components/lock.mqtt/ -[OwnTracks]: /components/device_tracker.owntracks/ -[Wemo Motion]: /components/binary_sensor.wemo/ -[@fabaff]: https://github.com/fabaff -[@partofthething]: https://github.com/partofthething -[@persandstrom]: https://github.com/persandstrom -[@fabaff]: https://github.com/fabaff -[@persandstrom]: https://github.com/persandstrom -[@PartOfTheThing]: https://github.com/PartOfTheThing -[@sander76]: https://github.com/sander76 -[@sander76]: https://github.com/sander76 -[@fabaff]: https://github.com/fabaff -[@HydrelioxGitHub]: https://github.com/HydrelioxGitHub -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@pavoni]: https://github.com/pavoni -[@ryanlaux]: https://github.com/ryanlaux diff --git a/source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown b/source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown deleted file mode 100644 index 1a325f9a24..0000000000 --- a/source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -layout: post -title: "0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl" -description: "Home Assistant 0.16 has arrived." -date: 2016-03-26 0:10:00 -0700 -date_formatted: "March 26, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Party people, 0.16 is here! The big thing with this release is that we have completely removed the barrier to get started by MQTT by being able to launch an embedded MQTT server: [hbMQTT]. Just add `mqtt:` to your config and a broker is launched and connected with Home Assistant. See the [documentation][embedded server] for more info. - -Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see breaking changes section at bottom for this!). - -Rock on. - - - - - Device Tracker - [OwnTracks]: Allow entry into passive zones using iBeacons ([@pavoni]) - - Tellstick: rewrite to [component][Tellstick] to address concurrency issues ([@stefan-jonasson]) - - Z-Wave: add [services][Z-Wave] to heal and soft reset network ([@srcLurker]) - - New component [input_slider] added ([@persandstrom]) - - Light - [Hue]: Option added to ignore unreachable property ([@maddox]) - - Notify: [MessageBird] support added ([@florianholzapfel]) - - HTTP: Failed login attempts are now logged ([@fabaff]) - - Vera: rewrite to [component][Vera] to simplify code and organize for reusability ([@pavoni]) - - Discovery: support for Squeezebox (Logitech media) server added ([@jaharkes]) - - Discovery: fix uPNP discovery crashing some routers ([@jaharkes]) - - Switch: [Wake on LAN] platform added ([@joopert]) - - Services for thermostats, notify and media player will now validate passed in parameters ([@MartinHjelmare]) - - Switch - [Arduino]: support for default state and negate port functionality ([@tilutza]) - - Switch: [PulseAudio loopback] now supported ([@Cinntax]) - - Sensor: [Uber] now supported ([@robbiet480]) - - Notify: [Growl (GNTP)] now supported ([@robbiet480]) - - Media Player: [Yamaha receivers] now supported ([@aoakeson]) - -[hbMQTT]: https://github.com/beerfactory/hbmqtt -[@aoakeson]: https://github.com/aoakeson -[@balloob]: https://github.com/balloob -[@Cinntax]: https://github.com/Cinntax -[@fabaff]: https://github.com/fabaff -[@florianholzapfel]: https://github.com/florianholzapfel -[@jaharkes]: https://github.com/jaharkes -[@joopert]: https://github.com/joopert -[@maddox]: https://github.com/maddox -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@robbiet480]: https://github.com/robbiet480 -[@srcLurker]: https://github.com/srcLurker -[@stefan-jonasson]: https://github.com/stefan-jonasson -[@tilutza]: https://github.com/tilutza -[embedded server]: /components/mqtt/#use-the-embedded-broker -[Arduino]: /components/switch.arduino/ -[Discovery]: /components/discovery/ -[Growl (GNTP)]: /components/notify.gntp/ -[Hue]: /components/light.hue/ -[input_slider]: /components/input_slider/ -[MessageBird]: /components/notify.message_bird/ -[OwnTracks]: /components/device_tracker.owntracks/ -[PulseAudio loopback]: /components/switch.pulseaudio_loopback/ -[Tellstick]: /components/tellstick/ -[Uber]: /components/sensor.uber/ -[Vera]: /components/vera/ -[Wake on LAN]: /components/switch.wake_on_lan/ -[Z-Wave]: /components/zwave/#services -[Yamaha receivers]: /components/media_player.yamaha/ - -### Breaking changes - - Automation: support for old deprecated config has been removed - - - Tellstick configuration has changed - -```yaml -tellstick: - signal_repetitions: X -``` - -- Vera configuration has changed - -```yaml -vera: - vera_controller_url: http://192.168.1.161:3480/ - # Optional to exclude devices - this is a list of vera device ids - exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99] - # Optional to import switches as lights - this is a list of vera device ids - lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87] -``` 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 deleted file mode 100644 index d56e8b0d3c..0000000000 --- a/source/_posts/2016-04-04-your-hub-should-be-local-and-open.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -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-05 21:11:00 UTC -date_formatted: "April 5, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Internet-of-Things ---- - -Today the news spread that Google will be [shutting down the Revolv hubs][medium-revolv]. And shutting down here doesn't mean they stop selling or supporting them - no, they are sending an update to each hub to turn your perfectly fine home automation hub into a useless piece of plastic. The fact that this seemed like a good idea by Google astonishes me. If anything, they should have gone the same route as [ninjasphere]: open it all up and let people decide on the fate of their _own_ hub. - -I've said it [before][perfect-cloud] but I'll repeat it again: - -
    -The cloud should be treated as an extension to your smart home instead of running it. -
    - -Your hub should not be affected when your internet breaks down or the company that sold you your hub goes out of business. It should work locally so that it can continue to work even long after the vendor goes out of business or decides to kill it. Preferably, your hub should also be open so that the community can take over development after the vendor stops caring. - -Unless you can afford losing a product here and there, be cautious when buying IoT products that depend on the cloud from companies that are not well established. The chances are high that they go bankrupt or get acquired and closed. This however is easier said than done as [Gartner] predicts that by 2017, 50 percent of IoT solutions will originate in startups that are less than three years old. - -[medium-revolv]: https://medium.com/@arlogilbert/the-time-that-tony-fadell-sold-me-a-container-of-hummus-cb0941c762c1#.rmppks86a -[ninjasphere]: https://discuss.ninjablocks.com/t/ninja-blocks-whats-been-happening-whats-happening-next/3608 -[perfect-cloud]: /blog/2016/01/19/perfect-home-automation/#your-system-should-run-at-home-not-in-the-cloud -[Gartner]: http://www.gartner.com/newsroom/id/2869521 diff --git a/source/_posts/2016-04-07-static-website.markdown b/source/_posts/2016-04-07-static-website.markdown deleted file mode 100644 index e7bb788ce9..0000000000 --- a/source/_posts/2016-04-07-static-website.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: post -title: "Static website" -description: "Serving a static website with Home Assistant." -date: 2016-04-07 06:28:00 -date_formatted: "April 7, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To -og_image: /images/blog/2016-04-display/ha-display.png ---- - -The frontend of Home Assistant is served with the help of a local web server. If you have [customized](/getting-started/devices/#customizing-devices-and-services) your installation you already use this functionality. The content of your folder `www` in your Home Assistant configuration directory (`.homeassistant`) is available under `/local` (eg. [http://localhost:8123/local](https://localhost:8123/local/index.html) for an `index.html` file). - -But there is more you can do! You can not only host images for customization there but HTML files or even web applications including CSS and Javascript. - -

    - -

    - - - -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). - -The [HBMQTT](https://pypi.python.org/pypi/hbmqtt) broker provides websockets support for MQTT and mqttws31.js included in web page gives you access to the MQTT messages. It's a matter of minutes. OK, it took a little longer because I'm not a Javascript guy to create the software part that will show details about your environment. The source is available at [https://github.com/fabaff/home-assistant-display](https://github.com/fabaff/home-assistant-display) and the screenshot above shows the result. I guess that every person who is familiar with Javascript would be able to reduce the amount of code and to make it more flexible. Well, it's only a prototype and showcase to include an image in this blog post. - -I hope that this little article could give you an idea of extending Home Assistant in an unconventional way. - 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 deleted file mode 100644 index d2067b9be8..0000000000 --- a/source/_posts/2016-04-09-onkyo-panasonic-gtfs-and-config-validation.markdown +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: post -title: "0.17: Onkyo, Panasonic, GTFS and config validation" -description: "Home Assistant 0.17 has arrived." -date: 2016-04-09 23:10:00 UTC -date_formatted: "April 9, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we've been hard at work to introduce config validation! Especially huge thanks to [@jaharkes] for his hard work on this. Config validation is still in its early stages. More common platforms and components have been added but we didn't do everything yet. - -When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We're looking into options to make it more clear - it is a work in progress. - -Another big thing is the addition of GTFS support. You probably don't know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend. - - - - - Config validation ([@balloob], [@jaharkes]) - - Sensor: [GTFS] support (public transit open standard) ([@robbiet480]) - - Camera: [Raspberry PI] support added ([@LucaSoldi]) - - Z-Wave: improved startup reliability ([@srcLurker]) - - Media Player: [Onkyo receiver] now supported ([@danieljkemp]) - - Sensor: [Loop Energy] now supported ([@pavoni]) - - Thermostat: [Z-Wave] now supported ([@coteyr], [@turbokongen], [@luxus]) - - Sensor: [NZBGet] now supported ([@justyns]) - - Media Player: [Panasonic Viera TV] now supported ([@florianholzapfel]) - - Thermostats: Use whole degrees if user uses Fahrenheit ([@JshWright]) - - Frontend: more material love ([@balloob]) - -[@balloob]: https://github.com/balloob/ -[@coteyr]: https://github.com/coteyr/ -[@danieljkemp]: https://github.com/danieljkemp/ -[@florianholzapfel]: https://github.com/florianholzapfel/ -[@jaharkes]: https://github.com/jaharkes/ -[@JshWright]: https://github.com/JshWright/ -[@justyns]: https://github.com/justyns/ -[@LucaSoldi]: https://github.com/LucaSoldi/ -[@luxus]: https://github.com/luxus/ -[@pavoni]: https://github.com/pavoni/ -[@robbiet480]: https://github.com/robbiet480/ -[@srcLurker]: https://github.com/srcLurker/ -[@turbokongen]: https://github.com/turbokongen/ -[GTFS]: /components/sensor.gtfs/ -[Loop Energy]: /components/sensor.loop_energy/ -[NZBGet]: /components/sensor.nzbget/ -[Onkyo receiver]: /components/media_player.onkyo/ -[Panasonic Viera TV]: /components/media_player.panasonic_viera/ -[Raspberry PI]: /components/camera.rpi_camera/ -[Z-Wave]: /components/thermostat.zwave/ - -### Breaking changes - -As of now we are not aware of any breaking changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to `execute_service` in their script configs. This should be `service`. diff --git a/source/_posts/2016-04-17-updated-documentation.markdown b/source/_posts/2016-04-17-updated-documentation.markdown deleted file mode 100644 index ae1c4371f2..0000000000 --- a/source/_posts/2016-04-17-updated-documentation.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post -title: "Updated documentation" -description: "We have reorganized our documentation which should make it easier to get started and develop for Home Assistant." -date: 2016-04-17 23:09:00 UTC -date_formatted: "April 17, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Website ---- - -One of the main complaints that we receive is something along the lines "I read that X is possible yet I am unable to find it on the website.". This post is to announce that we have taken the first steps to improve it by revamping the [getting started] and [developers] sections. It's still a work in progress but we now have a solid foundation to build on for the future 👍. - -Our documentation has been going through various phases. Initially it was just the README in our GitHub repository. I discovered Jekyll and GitHub pages in December 2014 and created home-assistant.io. I more or less broke the README in 5 pages and [called it a website]. Back then we had a whopping [11 components](https://github.com/home-assistant/home-assistant.io/blob/86bb2df430ce267ab2123d51592d3f068ae509b5/source/components/index.markdown). - -As Home Assistant grew, so did our documentation. [Fabian Affolter](https://github.com/fabaff) does an amazing job in making sure there is at least a documentation stub for each new feature that lands. And that's quite a feat given our [frequent releases](/blog/categories/release-notes/)! But despite all the efforts, the documentation outgrew our existing documentation organization. - -Today it has been almost 1.5 years since we started the website. We now have [264 components and platforms] under our belt and have been honored with 1.5 million page views ✨. And hopefully we now also have documentation that our community deserves. - -[getting started]: /getting-started/ -[developers]: /developers/ -[called it a website]: /blog/2014/12/18/website-launched/ -[264 components and platforms]: /components/ - -Finally, if you see some content that could use more clarifcation or is outdated, don't hesitate to use the 'Edit in GitHub' link that is present on each page. diff --git a/source/_posts/2016-04-19-to-infinity-and-beyond.markdown b/source/_posts/2016-04-19-to-infinity-and-beyond.markdown deleted file mode 100644 index 5ee06d15e8..0000000000 --- a/source/_posts/2016-04-19-to-infinity-and-beyond.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: post -title: "To Infinity and Beyond 🚀" -description: "The state of Home Assistant: past, present, future." -date: 2016-04-19 22:44:00 UTC -date_formatted: "April 19, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Organization ---- - -After 2.5 years I think we can proudly say: Home Assistant is a success. I write _we_ because Home Assistant is no longer a one-person side project. It has become the side project of many people who spend countless hours on making Home Assistant the best home automation software out there. To acknowledge this we migrated the repositories from being under my name to be under our own [organization on GitHub][gh-ha]. - -On our journey we've reached many noteworthy milestones: - - - #1 on HackerNews - - Featured on ProductHunt - - Trending repository on GitHub - - 3000 stars on GitHub - - 1.5 million page views on our website - - Speaker at OpenIoT Summit 2016 - -All these accomplishments are a nice pat on the back but our journey is far from over. There are a lot of challenges ahead if we want to become the go to solution for home automation _for everyone_. - -Until now the focus has been on making a platform that developers love to use. A platform that is simple but customizable. A platform that is both powerful and reliable. But most important: a platform that is local and open. Home Assistant does a great job at all these things. - -There will be some major challenges ahead of us to target groups other than developers. Easy installation and easy configuration being the #1. I'm sure that we'll be able to eventually achieve these goals. I can't say yet how or when. As with everything Home Assistant, we'll take tiny steps, gathering feedback along the way to make sure we're solving the right problems. - -I am confident that we will get there because we are set up for success: we have a robust architecture, high test coverage and an active community of world class developers and users. On top of that, we use Python which allows us to move fast and tackle complex problems in elegant ways. It is so easy to learn that it allows any programmer, experienced or not, to contribute support for devices and services. It's as simple as [filling in the blanks]. - -I would like to put out a big thank you to all our contributors who make Home Assistant what it is today. It doesn't matter if it is form of code, documentation or giving support in our [chat room] or [forums]. You. all. rock. - -Cheers to the future! - -Paulus - -[gh-ha]: https://github.com/home-assistant/ -[filling in the blanks]: /developers/platform_example_sensor/#code -[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 deleted file mode 100644 index af96dc1778..0000000000 --- a/source/_posts/2016-04-21-bluetooth-lg-webos-tvs-and-roombas.markdown +++ /dev/null @@ -1,85 +0,0 @@ ---- -layout: post -title: "0.18: Bluetooth, LG WebOS TVs and Roombas." -description: "Home Assistant 0.18 has arrived." -date: 2016-04-20 23:10:00 UTC -date_formatted: "April 20, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2016-04-release-18/social.png ---- - -It's time for 0.18. This release cycle is 2 days shorter than usual as I'll be traveling to Europe. This also means that it can take some more time before you get feedback on PRs. - -Since the last release we have moved all Home Assistant source code etc into its own [organization on GitHub](https://github.com/home-assistant). We're growing up! This sadly did cause us to have to move all Docker images. Check the breaking changes section for more info. - -
    - - - -- Media Player: redesign in the UI! ([@DesignFirst], [@balloob]) -- New component: [Zeroconf] for Home Assistant discovery ([@robbiet480]) -- Garage door: [MQTT] now supported ([@joelash]) -- Thermostat: [Homematic platform] now supports Max! devices ([@bimbar]) -- New component Thinkingcleaner ([switch][switch.thinkingcleaner]/[sensor][sensor.thinkingcleaner]) to integrate your Roomba into Home Assistant ([@TheRealLink]) -- New component: [upnp] to automatically open a upnp port on your router for Home Assistant ([@robbiet480]) -- Thermostat: [EQ3 Bluetooth Smart Thermostats] now supported ([@bimbar]) -- New component [Feedreader] will track RSS feeds ([@shaftoe]) -- Device Tracker: [Bluetooth tracking platform] added ([@vmulpuru]) -- Media Player: [LG WebOS TVs][media_player.lg] now supported ([@TheRealLink]) -- Notify: [LG WebOS TVs][notify.lg] now supported ([@TheRealLink]) -- HTTP: Use constant time comparison for auth ([@JshWright]) -- Config and service validations ([@jaharkes], [@Danielhiversen]) -- MySensors: Entity IDs will more clearly differentiate between node ID and child ID ([@oeysteinhansen]) -- MySensors: Add support for [ethernet gateway][mysensors] ([@MartinHjelmare]) -- Media player: [Plex] will now monitor the server and add clients as they pop up ([@infamy]) -- Core: We now use iso8601 for datetimes ([@balloob]). -- Media Player: [MPD] now supports service to play playlists ([@Cinntax]) -- Z-Wave should be a little bit more stable ([@Turbokongen]) -- Media Player: [Sonos] will now only add visible devices ([@jpmossin]) -- Light: [Wink] will now allow controlling the colors ([@bradsk88]) - -[@balloob]: https://github.com/balloob/ -[@bimbar]: https://github.com/bimbar/ -[@bradsk88]: https://github.com/bradsk88/ -[@Cinntax]: https://github.com/Cinntax/ -[@Danielhiversen]: https://github.com/Danielhiversen/ -[@DesignFirst]: https://github.com/DesignFirst/ -[@infamy]: https://github.com/infamy/ -[@jaharkes]: https://github.com/jaharkes/ -[@joelash]: https://github.com/joelash/ -[@jpmossin]: https://github.com/jpmossin/ -[@JshWright]: https://github.com/JshWright/ -[@MartinHjelmare]: https://github.com/MartinHjelmare/ -[@oeysteinhansen]: https://github.com/oeysteinhansen/ -[@robbiet480]: https://github.com/robbiet480/ -[@shaftoe]: https://github.com/shaftoe/ -[@TheRealLink]: https://github.com/TheRealLink/ -[@Turbokongen]: https://github.com/Turbokongen/ -[@vmulpuru]: https://github.com/vmulpuru/ -[Bluetooth tracking platform]: /components/device_tracker.bluetooth_tracker/ -[EQ3 Bluetooth Smart Thermostats]: /components/thermostat.eq3btsmart/ -[mysensors]: /components/mysensors/ -[Feedreader]: /components/feedreader/ -[Homematic platform]: /components/thermostat.homematic/ -[media_player.lg]: /components/media_player.webostv/ -[notify.lg]: /components/notify.webostv/ -[MPD]: /components/media_player.mpd/ -[MQTT]: /components/garage_door.mqtt/ -[Plex]: /components/media_player.plex/ -[Sonos]: /components/media_player.sonos/ -[sensor.Thinkingcleaner]: /components/sensor.thinkingcleaner/ -[switch.Thinkingcleaner]: /components/switch.thinkingcleaner/ -[upnp]: /components/upnp/ -[Wink]: /components/light.wink/ -[Zeroconf]: /components/zeroconf/ - -### Breaking changes -- We have migrated our datetime format to be iso8601. This will only impact you if you are consuming the date times from the API directly. You can ignore this if you are just using Home Assistant via configuration and the frontend. -- The constant `TEMP_CELCIUS` is now correctly called `TEMP_CELSIUS`. Old one is deprecated and will eventually be removed. -- The location of the Docker image has changed. There was no possibility for us to keep maintaining the old image (as it was bound to the GitHub repo under my name) or to make a redirect. So if you are using the Home Assistant Docker image, change it to run `homeassistant/home-assistant:latest` for the latest release and `homeassistant/home-assistant:dev` for the latest dev version. -- MySensors received two big changes that will cause you to update your configs. See [component page][mysensors] for new example config. - 1. All MySensors entity IDs are different! There was an error in the naming that caused MySensors to append node ID and child ID instead of separating them with an underscore. This has been fixed but will cause all your MySensors entity IDs to change. This is a one time breaking change. - 2. The second change is that we now support the TCP ethernet gateway. This is causing a slight change to the config format: you have to change `port:` under `gateways` to `device:`. diff --git a/source/_posts/2016-04-30-ibeacons-part-1-making-presence-detection-work-better.markdown b/source/_posts/2016-04-30-ibeacons-part-1-making-presence-detection-work-better.markdown deleted file mode 100644 index 8a1a8dae12..0000000000 --- a/source/_posts/2016-04-30-ibeacons-part-1-making-presence-detection-work-better.markdown +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: "iBeacons: Making presence detection work better (part I)" -description: A step by step guide how to vastly improve your presence detection by integrating iBeacons. -date: 2016-04-30 07:50:09 +0100 -date_formatted: "April 30, 2016" -author: Greg Dowling -author_twitter: pavoni240 -comments: true -categories: iBeacons Presence-Detection OwnTracks ---- - -_This post is by Home Assistant contributor [Greg Dowling](https://github.com/pavoni)._ - -In 2013 Apple introduced iBeacons: a class of Bluetooth low energy (LE) devices that broadcast their identifier to nearby devices, including most smartphones. At first glance it’s hard to imagine why they might be useful. In this two part blog I’ll try and explain why they are useful and how you can use them with Home Assistant. - -The reason I started using iBeacons was to improve presence detection (and I think that’s the case with most people) so that's what I’ll discuss in _part 1_. In _part 2_ I’ll talk about using iBeacons to track devices that can’t track themselves. - -### {% linkable_title Using beacons to improve OwnTracks location data %} - -When you use OwnTracks in standard _major move_ mode (which is kind to your phone battery) it sometimes fails to update when you’d like it to. In my case I found that it would often send a location update as I was on my way home, but then not update when I got home. The result would be that Home Assistant would think I was 500M away from home, and take quite a while to notice I was home. It would also mean that the automation that should turn on my lights when I got home didn’t work very well! There were a few times when my phone location updated at 2am and turned the lights on for me. Fortunately my wife is very patient! - -Luckily, OwnTracks supports iBeacons so I could use them to make presence detection more reliable. When OwnTracks sees a beacon it recognizes, it will send an update. This means that if you put a beacon at your front door - OwnTracks will see it within a few seconds of you arriving home - and send an update saying it has seen this iBeacon. - - - -### {% linkable_title Getting Started %} - -To do this you first need to set up [MQTT] and [OwnTracks] in Home Assistant - and make sure that HA can track your phone. - -[MQTT]: /components/mqtt/#picking-a-broker -[OwnTracks]: /components/device_tracker.owntracks/ - -You then have to (A) tell Home Assistant where the beacon is located and (B) tell OwnTracks to recognize the beacon. - -#### {% linkable_title A. Tell Home Assistant where your beacon is located %} - -You tell HomeAssistant about fixed locations by creating a Zone with the longitude and latitude of your beacon. You should also give the zone a name which you will also use when you set up OwnTracks. An an example this zone specifies the location of my drive way. - -**Example `configuration.yaml` entry** - -````yaml - -zone: - - name: 'Drive' - latitude: XXX - longitude: YYY - radius: 100 -```` - -The radius isn’t used by the beacon code, but it is used by the GPS location sensing code. I’ll come back to this a little later. For now just use 50 or 100. - -Once you’ve created the zone - you need to restart HA. The next step is:- - -#### {% linkable_title B. Tell OwnTracks to track your beacon %} - -1. Go to the OwnTracks app on your phone -2. Touch the `Regions` menu at the bottom of the screen -3. Touch the `+` symbol at the top right of the screen -4. Give the beacon a name e.g., `-drive` ’(start the name with a `-` see below for the reason) -5. Turn Share to `On` -6. Skip the `Circular Region` section -7. Enter the `UUID` of your beacon - this may be written on your beacon - or you can copy it from the management app that came with your iBeacon device. It’s a long number – so it’s easier to copy if you can! -8. Enter the `Minor` and `Major` numbers for your iBeacon - or leave them at 0 which will match all beacons with that `UUID` - -

    - -

    - -Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. - -

    - -

    - -When OwnTracks sees the beacon (and turns the region red), it also sends an MQTT packet to HA to say that you have entered that region. - -The result of the configuration above would be to set the location of device.phone to `Drive` , (and the GPS location to XXX,YYY) when your phone sees the beacon. - -So with the steps above you should be able to improve the reliability of tracking your phone - and send timely updates to HA. I did this for my home - and the lights now turn on before I reach the house on foot. If I arrive by car they turn on within a few seconds of arriving, before I can get to the front door. - -I’m also pleased to say I no longer get an _arrive home_ event at 2am that turns the lights on. I hope I’ve convinced you that iBeacons are worth trying! - -### {% linkable_title Mixing Beacons and GPS locations %} - -You will probably use beacons to make entry into your existing GPS zones more reliable. By default either a beacon or a GPS location can cause you to enter a zone - and HA has some logic that should make them two work well together (it ignores GPS updates when you’re in an iBeacon Zone). - -However you can also use beacons for situations where GPS doesn’t work well. - -This might be because the zones are too close together - or even on top of each other! -For example, my wife works next door - and I couldn’t detect whether she’s at home or in the office via GPS because the accuracy wasn’t high enough. However I can do this by using two beacons. - -To make this type of presence detection work you need to turn GPS off for a zone in Home Assistant by making them `passive`. This is important because otherwise HA will try to decide between two close together zones without enough data. This doesn’t work well. - -A passive zone can only be entered via an iBeacon, so a GPS location update will always pick the other zone. - -I set up my Home zone to be a standard region, and my office zone to be passive, so the home zone can be entered in the normal way via either GPS or a Beacon. - -**Example `configuration.yaml` entry** - -````yaml - -zone: - - name: 'Office' - latitude: XXX - longitude: YYY - radius: 3 - passive: true -```` - -You could use this technique to try to detect which room someone is in. This might allow you to notice whether someone is in the living room or the bedroom - even though one is above the other (although beacon packets do pass through walls and floors). - -To get this to work you’ll probably need to experiment with the beacon signal strength to try to match the beacon reception area to the location you want to track. Let me know if you get this to work (it doesn’t make sense in my open plan house) - -### {% linkable_title Conclusion %} - -Presence tracking sounds easy - and it's an important part of Home Automation. Trying it shows how difficult it is to get presence detection right. I've found that iBeacons have improved the reliability and timeliness of knowing where I am, and I hope I encouraged you to try them too. - -### {% linkable_title Tips %} - -You can find out more about configuring the OwnTracks application and beacons [here](http://owntracks.org/booklet/features/beacons/) - -There is information about configuring Homeassistant to use beacons [here](/components/device_tracker.owntracks/) - -#### {% linkable_title Connections and disconnecting %} - -Owntracks treats a region name with a leading `-` as a hint that it shouldn't disconnect after a single missed packet. This improves the ability to keep a connection to a beacon. - -However, even when using this feature I’ve noticed that you can still lose connections (although it seems to vary by beacon manufacturer and type - I’ll talk more about this in _part 2_). This means that it's best to take into account that you may see false enter/leave events in HA. You may be able to improve this by changing how often the beacons send packets - and by increasing the signal strength (both will drain your beacon batteries more quickly). You can usually change these parameters in the app supplied by the iBeacon maker. You can also find some high power beacons (which have worked well for me). - -In automations you can use a `for:` to avoid triggering during a brief disconnect, or use a script with a delay. Stay tuned for _part 2_ for an example of this. - -#### {% linkable_title Using Multiple beacons for the same Zone %} -iBeacons have a `UUID` (usually set to the same value for beacons from the same manufacturer), as well as a `minor` and `major` number. If you set two beacons to have exactly same details then OwnTracks will think multiple beacons are at the same location. - -This means you can have more than one beacon around your home - and a connection to any of them will count as `home` to OwnTracks and HA. This reduces disconnections. - -You can achieve the same effect by using the same the same `UUID` but different `major` / `minor` numbers - and tell OwnTracks not to worry about the `minor` / `major` numbers for a particular region by setting them to 0). - -_Make sure to also check out [part II](/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/) where I talk about how to use iBeacons to track any object._ diff --git a/source/_posts/2016-05-06-open-iot-summit-talk.markdown b/source/_posts/2016-05-06-open-iot-summit-talk.markdown deleted file mode 100644 index a6071b8c2f..0000000000 --- a/source/_posts/2016-05-06-open-iot-summit-talk.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: post -title: "Talk: Automating your home with Home Assistant (OpenIoT Summit)" -description: "The video of Paulus giving a talk at the OpenIoT Summit at the beginning of April about how to automate your home with Home Assistant." -date: 2016-05-06 07:09:00 -0700 -date_formatted: "May 6, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Talks Video -og_image: /images/blog/2016-05-openiot/preview-video.png ---- - -At the beginning of April I gave a talk about Home Assistant at the OpenIoT summit in San Diego. I talk about the Home Assistant architecture and explain how to get started integrating your devices. Big thanks to my employer AppFolio ([we're hiring!]) for letting me attend. [Slides.] - -
    - -
    - - -[Slides.]: https://docs.google.com/presentation/d/1P2WsmwGSSni4gAriY5IA0-m-FUGO1kno3gIkRYz20Kw/edit#slide=id.p -[we're hiring!]: http://www.appfolioinc.com/jobs-openings diff --git a/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown b/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown deleted file mode 100644 index b4a1d8896f..0000000000 --- a/source/_posts/2016-05-07-empowering-scripts-and-alexa.markdown +++ /dev/null @@ -1,156 +0,0 @@ ---- -layout: post -title: "0.19: Empowering scripts and Alexa" -description: "The new release of Home Assistant includes a lot of upgrades to how we handle scripts and make them available in a wide range of new components including automation and alexa." -date: 2016-05-07 11:06:00 -0700 -date_formatted: "May 7, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic. - -**Scripts** are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including `from_state` !). Passing data to script entities is available by passing the data to the script services. - -```yaml -automation: - trigger: - platform: mqtt - topic: some/notify/topic - action: - service: notify.notify - data_template: - message: {{ trigger.payload }} - -automation 2: - trigger: - platform: state - entity_id: light.hue - action: - service: notify.notify - data_template: - message: {{ trigger.to_state.name }} is now {{ trigger.to_state.state }} -``` - -**Entity Namespaces** allow you to influence the entity ids for a specific platform. For example you can turn `light.living_room` into `light.holiday_home_living_room` with the following config: - -```yaml -light: - platform: hue - entity_namespace: holiday_home -``` - - - Automation: allow [script syntax] for action ([@balloob]) - - Automation: expose [`trigger` variable][trigger-variable] to script templates ([@balloob]) - - Script: allow passing variables for script templates in the [script service calls] ([@balloob]) - - Alexa/Amazon Echo: allow [script syntax] for action ([@balloob]) - - Alexa/Amazon Echo: [expose intent variables] to script templates ([@balloob]) - - Script syntax: [conditions now supported] to interrupt execution ([@balloob]) - - Automation: use [new condition syntax] ([@balloob]) - - Script syntax: two new conditions [`and`][con-and] and [`or`][con-or] to combine conditions ([@balloob]) - - Any platform: Allow setting [entity namespace] to prefix entity_ids. ([@balloob]) - - Switch: [Raspberry Pi generic 433 Mhz GPIO adapters][rpi-rf] now supported ([@milaq]) - - Z-Wave: use more sane defaults ([@danieljkemp]) - - Media Player: [Snapcast] now supports picking a source ([@happyleavesaoc]) - - MySensors: major cleanup ([@MartinHjelmare]) - - Binary Sensor: [Command line sensor] now supports classes ([@fabaff]) - - MQTT: [allow client key authentication] ([@timharton]) - - Sensor: [Forecast.io] now supports minutely, hourly and daily summaries ([@aceat64]) - - Media Player: [Pioneer AVR] now supported ([@kylehendricks]) - - Switch: [Acer Projectors] now supported ([@deisi]) - - New [HVAC component] added with Z-Wave support ([@turbokongen]) - - Support added for [OctoPrint] ([@w1ll1am23]) - - Configuration.yaml can now refer to environment variables using `!env_var` ([@bah2830]) - - Lock: [Z-Wave][lock.zwave] now supported ([@devdelay]) - - New [Dweet component] to export data ([@fabaff]) - - Media Player now supports stop command + initial kodi support ([@hmronline]) - - Zigbee: push updates now supported ([@flyte]) - - Wink devices with battery level will now show these ([@w1ll1am23]) - - Templates: new [`as_timestamp`] method now available ([@srcLurker]) - - API: Add [`/api/discovery_info`] with basic instance info ([@robbiet480]) - - Sensor: [Google Maps travel time] added ([@Danielhiversen]) - - HTTP: Allow adding [CORS headers] ([@robbiet480]) - - Sensor: [Fitbit] support added ([@robbiet480]) - - Bug fixes and tweaks by [@turbokongen], [@danieljkemp], [@Danielhiversen], [@TheRealLink], [@persandstrom], [@sander76], [@fabaff], [@ishults], [@Bart274], [@robbiet480], [@Cinntax], [@blackdog70], [@gwendalg], [@JshWright], [@kylehendricks], [@bradsk88], [@shaftoe], [@molobrakos], [@bah2830], [@nkgilley] - -[script syntax]: /getting-started/scripts/ -[trigger-variable]: /getting-started/automation-templating/#available-trigger-data -[script service calls]: /components/script/#passing-parameters-in-service-calls -[expose intent variables]: /components/alexa/#configuring-home-assistant -[conditions now supported]: /getting-started/scripts-conditions/ -[new condition syntax]: /getting-started/scripts-conditions/ -[con-and]: /getting-started/scripts-conditions/#and-condition -[con-or]: /getting-started/scripts-conditions/#or-condition -[entity namespace]: /topics/platform_options/#entity-namespace -[rpi-rf]: /components/switch.rpi_rf/ -[Forecast.io]: /components/sensor.forecast/ -[Snapcast]: /components/media_player.snapcast/ -[Command line sensor]: /components/sensor.command_line/ -[allow client key authentication]: /components/mqtt/ -[Pioneer AVR]: /components/media_player.pioneer/ -[Acer Projectors]: /components/switch.acer_projector/ -[HVAC component]: /components/hvac/ -[OctoPrint]: /components/octoprint/ -[Z-Wave]: /components/zwave/ -[lock]: /components/lock/ -[lock.zwave]: /components/lock.zwave/ -[Dweet component]: /components/dweet/ -[`as_timestamp`]: /topics/templating/#home-assistant-template-extensions -[Google Maps travel time]: /components/sensor.google_travel_time/ -[CORS headers]: /components/http/ -[Fitbit]: /components/sensor.fitbit/ -[@balloob]: https://github.com/balloob/ -[@milaq]: https://github.com/milaq/ -[@danieljkemp]: https://github.com/danieljkemp/ -[@happyleavesaoc]: https://github.com/happyleavesaoc/ -[@MartinHjelmare]: https://github.com/MartinHjelmare/ -[@fabaff]: https://github.com/fabaff/ -[@timharton]: https://github.com/timharton/ -[@aceat64]: https://github.com/aceat64/ -[@kylehendricks]: https://github.com/kylehendricks/ -[@deisi]: https://github.com/deisi/ -[@turbokongen]: https://github.com/turbokongen/ -[@w1ll1am23]: https://github.com/w1ll1am23/ -[@bah2830]: https://github.com/bah2830/ -[@devdelay]: https://github.com/devdelay/ -[@hmronline]: https://github.com/hmronline/ -[@flyte]: https://github.com/flyte/ -[@srcLurker]: https://github.com/srcLurker/ -[@robbiet480]: https://github.com/robbiet480/ -[@Danielhiversen]: https://github.com/Danielhiversen/ -[@TheRealLink]: https://github.com/TheRealLink/ -[@persandstrom]: https://github.com/persandstrom/ -[@sander76]: https://github.com/sander76/ -[@ishults]: https://github.com/ishults/ -[@Bart274]: https://github.com/Bart274/ -[@Cinntax]: https://github.com/Cinntax/ -[@blackdog70]: https://github.com/blackdog70/ -[@gwendalg]: https://github.com/gwendalg/ -[@JshWright]: https://github.com/JshWright/ -[@bradsk88]: https://github.com/bradsk88/ -[@shaftoe]: https://github.com/shaftoe/ -[@molobrakos]: https://github.com/molobrakos/ -[@nkgilley]: https://github.com/nkgilley/ - -### Deprecations - - Conditions in automations should now specify which condition to use with `condition:` instead of `platform:`. For example `condition: state`. - - RFXtrx has a new config format. - -Old RFXtrx config format: - -```yaml - devices: - 123efab1: - name: My DI.0 light device - packetid: 1b2200000890efab1213f60 -``` - -New RFXtrx config format: - -```yaml - devices: - 1b2200000890efab1213f60: - name: My DI.0 light device -``` diff --git a/source/_posts/2016-05-12-video-configuring-home-assistant.markdown b/source/_posts/2016-05-12-video-configuring-home-assistant.markdown deleted file mode 100644 index 05f19feee2..0000000000 --- a/source/_posts/2016-05-12-video-configuring-home-assistant.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: post -title: "Video: How To Configure Home Assistant" -description: "BRUH Automation has made an excellent video to get started with configuring Home Assistant." -date: 2016-05-12 00:09:00 +0000 -date_formatted: "May 12, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Video -og_image: /images/blog/2016-05-video-configuring-home-assistant/preview-video.png ---- - -Ben from [BRUH Automation](http://www.bruhautomation.com) authors a lot of great video's about how he is using Home Assistant and how you can get started with it too. The video below will walk you through how to configure Home Assistant. Enjoy! - -Make sure to subscribe to [his YouTube channel](https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w) for more Home Assistant video's. - -
    - -
    diff --git a/source/_posts/2016-05-18-why-we-use-polymer.markdown b/source/_posts/2016-05-18-why-we-use-polymer.markdown deleted file mode 100644 index 68ff5f74c3..0000000000 --- a/source/_posts/2016-05-18-why-we-use-polymer.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post -title: "Why we use web components and Polymer" -description: "In this blog post I talk about the reasoning to use web components and Polymer." -date: 2016-05-18 00:09:00 +0000 -date_formatted: "May 18, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Technology ---- - -I've been planning to write this post for a while now as we get questions like this a lot: _"Why does Home Assistant use Polymer? Why not React, Redux and what not?"_ - -It's understandable, Polymer is quite the underdog in the world of web frameworks. A corporate backer does not guarantee popularity or an active community and this shows in the number of projects using Polymer. - -Still, [we use Polymer and it's awesome][demo]. To explain why, I'll be referencing the React workflow quite a bit, as they do a lot of things right, and show how it is done in Polymer. - -Polymer gives us components for the web, just like React, but based on web standards: [web components], [CSS variables]. These standards don't have wide browser support yet but it's being implemented by every major browser: It's the future. For now they are being polyfilled and that works just fine but in the future the Home Assistant web app will be able to run native in the browsers == fast. - - - -Polymer does not have the nice developer experience that one can have with React and the [React Dev Tools] but that's a matter of time. The developer tools in every browser have seen a lot of improvements recently and each improvement helps support for web components. - -Another major benefit of Polymer for Home Assistant is that we get [material design for free]. The material design components that come with Polymer have a very high quality. Google is using these components themselves and make sure that performance and accessibility using screen readers/keyboards are great. As an open source project, the more we can outsource, the better - so our contributors can focus on the core product: home automation. - -What about Flux, data management and interaction between components? It's actually pretty similar to React or any other component based framework. Flux-like architectures work with Polymer just like with React: whenever data changes it will update the attributes of a component which will propagate to the children. For Home Assistant we use [NuclearJS] with our [own Polymer bindings]. For data moving from child to parent the Polymer pattern is using DOM events instead of callbacks but the end result is the same. It is so similar in fact, that it took me only two hours to make a [React Native frontend for on top of our core][ha-rn]. - -So what about Babel and ES2015? Also this is covered. Each web component exists of a HTML template and a JavaScript class to back it. Think of the HTML template as the render method in React. In Home Assistant we have the HTML templates import one another and have a separate chain for the JavaScript classes backing each component. This allows us to use Babel and NPM modules for the JavaScript part ([more info here][tools-js]). This does however come with the downside of other JS based frameworks: the browser blocks any painting while the JavaScript is being parsed instead of upgrading the website incrementally. This, however, is something we take for granted right now and hope that module bundlers will be able to solve this for us eventually. Tree shaking is a very promising improvement in this space. - -Most of this blog post has been comparing Polymer to React. In many ways Polymer is similar to React but it is not as far evolved yet. I like React but I do not see it as a technology that will be around forever. Given the trend of previous popular JS frameworks, React will probably get replaced by another framework that works even better. Web components however will be here forever as they are part of the HTML standard. And this gives us peace of mind at the virtual Home Assistant headquarters: we do not have to be afraid of having to rewrite our frontend just to stay relevant or because people don't want to include another dependency just to run this legacy piece. - -So there it is, the reason why we use Polymer. - -[web components]: https://www.w3.org/standards/techs/components#w3c_all -[CSS variables]: https://www.w3.org/TR/css-variables/ -[React Dev Tools]: https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en -[NuclearJS]: https://optimizely.github.io/nuclear-js/ -[own Polymer bindings]: http://paulusschoutsen.nl/blog/2015/07/using-polymer-with-flux-and-a-global-app-state/ -[ha-rn]: https://github.com/balloob/home-assistant-react-native-ios -[tools-js]: https://github.com/home-assistant/home-assistant-polymer#building-the-app -[material design for free]: https://elements.polymer-project.org/browse?package=paper-elements -[demo]: /demo - diff --git a/source/_posts/2016-05-21-release-020.markdown b/source/_posts/2016-05-21-release-020.markdown deleted file mode 100644 index 7c595a01ef..0000000000 --- a/source/_posts/2016-05-21-release-020.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: post -title: "0.20: Roku, Last.fm, AWS, Twilio" -description: "New release of Home Assistant is bringing a lot of great goodies for everyone. New media players, template optoins and a lot more." -date: 2016-05-21 11:06:00 -0700 -date_formatted: "May 21, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - - - -Tons of new supported things in 0.20. - -- Restarting now supported without forking ([@jaharkes]) -- Add [purge days option] to recorder component ([@justyns], [@infamy]) -- Generic load_platform mechanism for entity components ([@kellerza]) -- Template: new [`relative_time`] function to render ie. `7 seconds ago` ([@robbiet480]) -- Sensor: [supervisord] now supported ([@happyleavesaoc]) -- Docker: we should no longer get SSL errors with requests ([@lwis]) -- Media Player: [Google Play Music Desktop Player] now supported ([@GreenTurtwig]) -- Notify: [Twilio SMS] platform added ([@robbiet480]) -- Device Tracker: [Asus WRT] will now default to SSH (but telnet is still an option) ([@froz]) -- Support [Nest Protect] smoke alarms ([@khabi]) -- Configurator: allow supplying a link to the user ([@mnestor]) -- Media Player: [Roku] now supported ([@bah2830]) -- Sensor: [Last.fm] now supported ([@darookee], [@GreenTurtwig]) -- Notify: Amazon [Lambda], [SNS], [SQS] now supported ([@robbiet480]) -- Light: allow human readable colors in turn_on command ([@robbiet480]) -- YAML: new include dir options [`!include_dir_merge_list`] and [`!include_dir_merge_named`] ([@happyleavesaoc]) -- Media Player: [LG Netcast TVs] now supported ([@wokar]) -- Media Player: Allow enqueuing media on Sonos ([@shaftoe]) -- Notify: [Ecobee thermostats] now supported ([@nkgilley]) -- Sensor: [Mold indicator] added ([@xifle]) -- Export to [Logentries] support added ([@omgapuppy]) -- Group more info dialog allows control of group domain if available ([@fignuts]) - -### {% linkable_title Breaking changes %} - -- Asus WRT will now default to SSH with Telnet being an option - -```yaml -device_tracker: - platform: asuswrt - protocol: telnet -``` - -[@bah2830]: https://github.com/bah2830 -[@darookee]: https://github.com/darookee -[@fignuts]: https://github.com/fignuts -[@froz]: https://github.com/froz -[@GreenTurtwig]: https://github.com/GreenTurtwig -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@infamy]: https://github.com/infamy -[@jaharkes]: https://github.com/jaharkes -[@justyns]: https://github.com/justyns -[@kellerza]: https://github.com/kellerza -[@khabi]: https://github.com/khabi -[@lwis]: https://github.com/lwis -[@mnestor]: https://github.com/mnestor -[@nkgilley]: https://github.com/nkgilley -[@omgapuppy]: https://github.com/omgapuppy -[@robbiet480]: https://github.com/robbiet480 -[@shaftoe]: https://github.com/shaftoe -[@wokar]: https://github.com/wokar -[@xifle]: https://github.com/xifle -[`!include_dir_merge_list`]: /topics/splitting_configuration/#advanced-usage -[`!include_dir_merge_named`]: /topics/splitting_configuration/#advanced-usage -[`relative_time`]: /topics/templating/#home-assistant-template-extensions -[Asus WRT]: /components/device_tracker.asuswrt/ -[Ecobee thermostats]: /components/notify.ecobee/ -[Google Play Music Desktop Player]: /components/media_player.gpmdp/ -[Lambda]: /components/notify.aws_lambda/ -[LG Netcast TVs]: /components/media_player.lg_netcast/ -[Logentries]: /components/logentries/ -[mold indicator]: /components/sensor.moldindicator/ -[Nest Protect]: /components/sensor.nest/ -[purge days option]: /components/recorder/ -[Roku]: /components/media_player.roku/ -[SNS]: /components/notify.aws_sns/ -[SQS]: /components/notify.aws_sqs/ -[supervisord]: /components/sensor.supervisord/ -[Twilio SMS]: /components/notify.twilio_sms/ -[Last.fm]: /components/sensor.lastfm/ diff --git a/source/_posts/2016-05-22-get-started-with-all-in-one-installer.markdown b/source/_posts/2016-05-22-get-started-with-all-in-one-installer.markdown deleted file mode 100644 index dca8e21fdd..0000000000 --- a/source/_posts/2016-05-22-get-started-with-all-in-one-installer.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: post -title: "Raspberry Pi all-in-one installer" -description: "Installing Home Assistant on a Raspberry Pi has never been easier with the new all-in-one installer." -date: 2016-05-22 09:06:00 -0700 -date_formatted: "May 22, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Video -og_image: /images/blog/2016-05-video-all-in-one-installer/preview-video.jpg ---- - -We are always hard at work at the virtual Home Assistant headquarters to make it easier for you to get started with Home Assistant. That's why [@jbags81] recently introduced the [all-in-one installer]. It allows you to get up and running with a complete Home Assistant setup by entering one line of code into your Raspberry Pi running Raspbian Jessie: - -```bash -wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh; -``` - -This feature wouldn't be complete if it wasn't accompanied by a new video by Ben from [BRUH Automation](http://www.bruhautomation.com). The video shows how to install Raspbian Jessie on your Raspberry Pi and use the new installation script to get a full Home Assistant system up and running. - -
    - -
    - -[@jbags81]: https://github.com/jbags81 -[all-in-one installer]: /getting-started/installation-raspberry-pi-all-in-one/ diff --git a/source/_posts/2016-05-26-ibeacons-how-to-track-things-that-cant-track-themselves-part-ii.markdown b/source/_posts/2016-05-26-ibeacons-how-to-track-things-that-cant-track-themselves-part-ii.markdown deleted file mode 100644 index 89a0a442cc..0000000000 --- a/source/_posts/2016-05-26-ibeacons-how-to-track-things-that-cant-track-themselves-part-ii.markdown +++ /dev/null @@ -1,160 +0,0 @@ ---- -layout: post -title: "iBeacons: How to track things that can’t track themselves (part II)" -description: A step by step guide how to tracking dumb devices by using iBeacons. -date: 2016-05-26 12:06:12 +0100 -date_formatted: "May 26, 2016" -author: Greg Dowling -author_twitter: pavoni240 -comments: true -categories: iBeacons Device-Tracking OwnTracks -og_image: /images/blog/2016-05-ibeacons/keys_device.png ---- - -_This post is by Home Assistant contributor [Greg Dowling](https://github.com/pavoni)._ - - -In [Part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better) I talked about using iBeacons to improve presence tracking. In part 2 I’ll talk about how to track things like keys that can’t track themselves by using iBeacons. - -### {% linkable_title Tracking things using iBeacons %} -In the first part I mentioned that iBeacons just send out *I’m here* packets, and we used this to trigger an update when your phone came close to a fixed beacon. - -But beacons don’t have to be fixed. - -Your phone knows roughly where it is located (based on mobile phone masts, Wi-Fi networks or GPS). If your phone sees an *I’m here* message then it knows the beacon is close. - -If your phone can remember (or tell a server) where it was when it last saw the iBeacon - then it knows where the beacon was. So the result of this is that you can track where an iBeacon was - even though the iBeacon doesn't have any tracking technology itself. - -So if you put an iBeacon on your keys or in your car - then you can track them. - -

    - - Here are my keys - with a Estimote Nearable iBeacon stuck to them. Ugly but effective! -

    - - - -It’s easier to set up OwnTracks and HA to track a mobile beacon than the fixed beacon I discussed in Part 1, because you only need to tell OwnTracks about your iBeacon. You don’t need to configure HA at all. - -

    OwnTracks currently only supports mobile beacons on iOS.

    - -You set up the beacon the same way as we discussed in part 1. The only difference is that instead of calling the region the name of a location (eg -drive) you call it the name of the device you want to track (eg -keys). Remember the leading ‘-’ that makes the connection more reliable. - -

    - -

    - -Once you’ve added the iBeacon - you should be able to see it on the OwnTracks region screen. If your phone can see the packets from that beacon, OwnTracks will turn the relevant Region red. - -Because you turned *Share* on for the region, when OwnTracks sees the beacon it will send HA a message. HA will use this message to add the beacon as a tracked device if it hasn’t seen it before. So you should see a new device appear in HA called device_tracker.beacon_[name] - and its location will be where your phone thought it was when it last saw the beacon. - -

    - -

    - -If your phone moves and sends HA a new location while it is still in range of the beacon - HA will update the location of the beacon. So if go for a drive in your car - you will see both your phone and the *device_tracker.beacon_car* move together. - -If you park your car and go shopping - *device_tracker.beacon_car* will stop moving. - -With the basic tracking working - you can use automation to do things like open your gates if your car comes home - -```yaml -automation: - - alias: 'Open gate' - trigger: - - platform: state - entity_id: device_tracker.beacon_car - from: 'not_home' - to: 'home' - condition: - - condition: state - entity_id: switch.gate - state: 'off' - action: - service: switch.turn_on - entity_id: switch.gate -``` - -Or warn you if you leave your keys behind - -```yaml -automation: - - alias: 'Forgotten keys' - trigger: - platform: template - value_template: '{% raw %}{{ states.device_tracker.greg_gregphone.state != states.device_tracker.beacon_keys.state}}{% endraw %}' - condition: - condition: template - value_template: '{% raw %}{{ states.device_tracker.greg_gregphone.state != "home" }}{% endraw %}' - action: - service: script.turn_on - entity_id: script.send_key_alert - - - alias: 'Forgotten keys - cancel' - trigger: - platform: template - value_template: '{% raw %}{{ states.device_tracker.greg_gregphone.state == states.device_tracker.beacon_keys.state }}{% endraw %}' - condition: - - condition: state - entity_id: script.send_key_alert - state: 'on' - action: - service: script.turn_off - entity_id: script.send_key_alert -``` - -```yaml -script: - send_key_alert: - sequence: - - delay: - minutes: 2 - - service: notify.notify - data: - message: 'You forgot your keys' - target: 'device/gregs_iphone' -``` - - -(The delay is needed for two reasons: - -1. HA updates the beacon and phone locations at slightly different times - so you don’t want the automation to trigger in the gap between the updates -2. I’ve found that beacons (especially the low power Estimote Nearables) can get disconnected for a few seconds so it’s best to wait a minute or so before deciding that you’ve left your keys behind) - - -### {% linkable_title Using both types of iBeacons at the same time %} -Of course you can use both fixed and mobile beacons at the same time. I want my gates to open when I arrive home in the car - so I use an iBeacon in the car so that I can track the car, and an iBeacon on my drive so that a location update is triggered when I arrive. I've been experimenting with a high power beacon in a waterproof box on my drive which seems to work well to notice when I get home. - -

    - -

    -Long range / High power beacon - -

    - -

    -Waterproof beacon - - -### {% linkable_title Buying Beacons %} -This isn’t a buyer's guide, but I just wanted to mention the iBeacons I’ve been using. I think you should be able to use any iBeacon with HA and OwnTracks. You generally can’t buy beacons in your local electronics shop - so I just wanted to briefly mention the two suppliers I’ve used so far. - -I’ve bought quite a few iBeacons from a company called [Blue Sense Networks](http://bluesensenetworks.com/). I work in the tech startup sector in the UK so I partly chose them because they are a local start-up who seemed worth supporting. The products, support and software all seem good. I use a number of their beacons - from a simple USB dongle, to a long range beacon. All their products have batteries that can be changed (or no batteries in the case of the externally powered USB device) - and you can configure all the parameters you’d want to using their software. I had one software issue, support got back to me at a weekend(!) - and the issue was resolved with a software release two days later. - -All the beacons seem fine - and the long range unit does work over a longer range than my other beacons. - -I bought some other beacons from a US/Polish startup called [Estimote](http://estimote.com/), who I think are better known. I bought a developer pack of 10 of their *nearables* which as well as being iBeacons also send out other data (orientation and motion) using their own protocol. This is interesting if you’re developing your own application, but for OwnTracks and HA they are just regular beacons. They are small and self adhesive - so you can stick them to things (like your keys). You can’t change all the parameters on these devices (UUID/Major/Minor are fixed) - and the batteries can’t be replaced. I also killed one of the estimote beacons (I assume the battery died) after I carried it around for a few months and dropped it many times! On the other hand they are well priced, small and waterproof! - -I’ve mainly used these as *devices to track* rather that *location* beacons. Estimote also sell some slightly larger iBeacons with replaceable batteries. Estimote support responded quickly and were helpful when I couldn’t work out how to edit their beacon’s parameters (although the answer was *you can’t yet*). - -The larger Blue Sense Network beacons seem to be better at maintaining a connection that the Estimotes - although that might be because I’m reluctant to turn the power to maximum and reduce the gap between sending packets on the Estimotes where I can’t replace the batteries! - -### {% linkable_title Conclusion %} -As I said in [part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better), I’ve found iBeacons to be a good way of improving presence detection. I also used them to track devices like my car and my keys that can’t track themselves. - -I'm still experimenting, so I hope I can do more with iBeacons. I hope I've encouraged you do so the same. If you do please share your experiences. - -### {% linkable_title Notes %} - -Please see the [notes at the end of Part 1](/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/#tips) for documentation information. - - diff --git a/source/_posts/2016-06-01-community-highlights.markdown b/source/_posts/2016-06-01-community-highlights.markdown deleted file mode 100644 index 730e4e3591..0000000000 --- a/source/_posts/2016-06-01-community-highlights.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: post -title: "Community Highlights" -description: Showcasing some of the cool projects and videos our community has come up with. -date: 2016-06-01 11:34:00 -0700 -date_formatted: "June 1, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community Video -og_image: /images/blog/2016-06-community-highlights/video_preview.png ---- - -Our community is amazingly helpful and creative. If you haven't been there yet, make sure to stop by our [chat room] and come hang out with us. In this blog post I want to highlight a few recent awesome projects and videos from the community. - -### {% linkable_title SceneGen - cli for making scenes %} - -[SceneGen] is a new command line utility developed by [Andrew Cockburn] that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states. - -### {% linkable_title Videos %} - -[Nick Touran] has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up [a blog post] and has put out a video showing the new integration, very cool! - -
    - -
    - -Ben from [BRUH Automation] has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks. - -
    - -
    - -Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS. - -
    - -
    - -[chat room]: https://discord.gg/c5DvZ4e -[SceneGen]: https://github.com/acockburn/scenegen -[Andrew Cockburn]: https://github.com/acockburn -[BRUH Automation]: http://www.bruhautomation.com/ -[Nick Touran]: https://partofthething.com -[a blog post]: https://partofthething.com/thoughts/?p=1010 diff --git a/source/_posts/2016-06-08-super-fast-web-enocean-lirc.markdown b/source/_posts/2016-06-08-super-fast-web-enocean-lirc.markdown deleted file mode 100644 index 332cc9822d..0000000000 --- a/source/_posts/2016-06-08-super-fast-web-enocean-lirc.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: post -title: "0.21: Improved Web and support for EnOcean, LIRC and Osram Lightify" -description: "This new release of Home Assistant is lightning fast with the new web stack and progressive web application. On top of that a handful of new components and platforms for EnOcean, LIRC and Osram Lightify support." -date: 2016-06-08 01:06:00 +0000 -date_formatted: "June 8, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It's time for release 0.21 and it contains massive core improvements: replacement of our home grown HTTP stack with a standardized WSGI stack. This will improve performance, speed, security and make future development of advanced HTTP features a breeze. - -This work was driven by the amazing Josh Wright. His knowledge, high standards and drive for security has helped improve Home Assistant a lot ever since he started helping out. Hip hip hurray for Josh! - -Alright, time for the changes: - - - - - New HTTP stack based on WSGI ([@JshWright], [@balloob]) - - Frontend: lots of performance improvements ([@balloob]) - - Initial support for EnOcean [lights][en-lights], [sensors][en-sensors] and [switches][en-switches] added ([@rubund]) - - Light: [Osram Lightify] is now supported ([@olimpiurob]) - - Light: [Insteon Hub] now supports brightness ([@wkonkel]) - - Add support for adding HA as Windows 10 tile ([@fabaff]) - - Condition: [time condition] can now cross midnight ([@jaharkes]) - - Template based sensors should now throw less warnings ([@Bart274]) - - New [LIRC component] allows receiving IR commands ([@partofthething]) - - The [Feedreader] component will now persist data to disk to prevent duplicate events ([@shaftoe]) - - Sun: azimuth attribute added ([@fabaff]) - - New [Flux like switch platform] to change light intensity in the evening ([@nkgilley]) - - We no longer crash if you live in a part of the world where the sun never sets ([@balloob]) - - Rollershutter: [RFXTRX] now supported ([@jacobtomlinson]) - - Switch: [Template switches] can now execute scripts ([@kellerza]) - - Z-Wave: automatically heal the network at midnight ([@infamy]) - - Sensor: [DTE Energy Bridge] now supported ([@kylehendricks]) - - Media Player: [Kodi] now supports different turn off commands ([@armills]) - -### Breaking Changes - - - Our work in the WSGI stack is not fully done yet. We still have a minor issues where retrieving the error log in the about screen can raise an encoding error - - The API used to incorrectly accept a JSON body with form-url-encoded headers. Our cURL examples on the website used to be wrong and have [been updated]. - - Make sure your configuration.yaml file contains `frontend:` to serve the frontend - -### Hotfixes 0.21.1 and 0.21.2 - -We released two hotfixes to address some issues that couldn't wait till the next release. - -##### 0.21.1 - June 12 - - - Add eventlet to base requirements to resolve some installation issues ([@balloob]) - - GTFS will filter out routes in the wrong direction ([@imrehg]) - - Recover from rare error condition from LIRC ([@partofthething]) - - Z-Wave autoheal will no longer raise exception ([@balloob]) - - Alexa will now execute the script before making reply ([@balloob]) - - Fix MJPEG camera streaming ([@stjohnjohnson]) - - Fix frontend in older browsers ([@balloob]) - - Fix history in more info dialog being cut off ([@balloob]) - -##### 0.21.2 - June 15 - - - Fix input_select calling the set_option service again when changed ([@persandstrom]) - - Fix more info dialog not being able to open on Safari ([@balloob]) - - Add support for OPTIONS HTTP command to get CORS working ([@JshWright]) - -[@stjohnjohnson]: https://github.com/stjohnjohnson -[@imrehg]: https://github.com/imrehg -[@persandstrom]: https://github.com/persandstrom -[@armills]: https://github.com/armills -[@balloob]: https://github.com/balloob -[@Bart274]: https://github.com/Bart274 -[@fabaff]: https://github.com/fabaff -[@infamy]: https://github.com/infamy -[@jacobtomlinson]: https://github.com/jacobtomlinson -[@jaharkes]: https://github.com/jaharkes -[@JshWright]: https://github.com/JshWright -[@kellerza]: https://github.com/kellerza -[@kylehendricks]: https://github.com/kylehendricks -[@nkgilley]: https://github.com/nkgilley -[@olimpiurob]: https://github.com/olimpiurob -[@partofthething]: https://github.com/partofthething -[@rubund]: https://github.com/rubund -[@shaftoe]: https://github.com/shaftoe -[@wkonkel]: https://github.com/wkonkel -[DTE Energy Bridge]: /components/sensor.dte_energy_bridge/ -[en-lights]: /components/light.enocean/ -[en-sensors]: /components/sensor.enocean/ -[en-switches]: /components/switch.enocean/ -[Feedreader]: /components/feedreader/ -[Flux like switch platform]: /components/switch.flux/ -[Insteon Hub]: /components/insteon_hub/ -[Kodi]: /components/media_player.kodi/ -[LIRC component]: /components/lirc/ -[Osram Lightify]: /components/light.osramlightify/ -[RFXTRX]: /components/rfxtrx/ -[Template switches]: /components/switch.template/ -[time condition]: /getting-started/scripts-conditions/#time-condition -[been updated]: /developers/rest_api/ diff --git a/source/_posts/2016-06-13-home-assistant-at-pycon-2016.markdown b/source/_posts/2016-06-13-home-assistant-at-pycon-2016.markdown deleted file mode 100644 index 18de1b3c25..0000000000 --- a/source/_posts/2016-06-13-home-assistant-at-pycon-2016.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: post -title: "Home Assistant at PyCon 2016" -description: "A wrap up of what our developers were up to during PyCon 2016." -date: 2016-06-13 01:06:00 +0000 -date_formatted: "June 13, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Video -og_image: /images/blog/2016-06-pycon/crew.jpg ---- - -It's been already almost two weeks ago that a few of the Home Assistant developers headed towards Portland for [PyCon 2016] - the conference about everything Python. We were there to learn all the nifty tricks to make our code better but most of all, to talk Home Automation. - -

    - Home Assistant developers - Couple of Home Assistant devs. Left to right: [Paulus (@balloob)], [Alex (@infamy)], [Ryan (@rmkraus)]. -

    - -On Monday I (Paulus) gave a presentation about Home Assistant to an audience of over 400 people! It was a bit scary at first but after a couple of minutes it went all great including some great questions afterwards. Slides can be found [here][slides] and the talk is embedded right below: - -
    - -
    - -One of the things that really impressed me was the amount of people that approached us to tell how they love Home Assistant, how it has replaced their previous solution, how they enjoyed contributing to Home Assistant and how helpful our community is. It makes me proud of Home Assistant and especially our community. - - -PyCon has a few great concepts that I haven't seen at other conferences: open spaces and sprints. Open spaces give anyone the opportunity to get a room and host a session for an hour to talk about any topic. Sprints happen after the conference part of PyCon is over. For four days there are rooms available for participants to get together and hack on their favorite open source projects. - -My talk had limited time for Q&A so open spaces offered a great opportunity to get all pending questions answered and connect with the commmunity. There was more interest after the first day so we ended up hosting another open space on the second day. - - - -We've had such positive reception on our open spaces that [Jonathan Baginski][@jbags81] decided to repeat it online. We will be hosting a free online webinar [Home Assistant Support 101 - Getting around in Home Assistant][webinar] later this month. Make sure to RSVP. - -After the conference part of PyCon was over we spent one extra day to host a Home Assistant sprint. This allowed us to help people get started with hacking on Home Assistant which lead to some great contributions. - -

    - Home Assistant sprint group photo - Home Assistant sprint group photo. -

    - -I've had a really great time at PyCon. It was awesome to meet everyone in person and I hope to see many of you next year! - -[PyCon 2016]: https://us.pycon.org/2016/ -[Paulus (@balloob)]: https://github.com/balloob/ -[Alex (@infamy)]: https://github.com/infamy/ -[Ryan (@rmkraus)]: https://github.com/rmkraus/ -[@jbags81]: https://github.com/jbags81/ -[slides]: https://docs.google.com/presentation/d/1F1pGOoSf0dD79Dl5dgys0ll7xiuIA4XiQeNeJ-xlqMg/edit -[webinar]: https://www.eventbrite.com/e/home-assistant-support-101-getting-around-in-home-assistant-tickets-25943868810 diff --git a/source/_posts/2016-06-18-pandora-bt-home-hub-5-and-local-file-camera.markdown b/source/_posts/2016-06-18-pandora-bt-home-hub-5-and-local-file-camera.markdown deleted file mode 100644 index fb37c9ed1a..0000000000 --- a/source/_posts/2016-06-18-pandora-bt-home-hub-5-and-local-file-camera.markdown +++ /dev/null @@ -1,94 +0,0 @@ ---- -layout: post -title: "0.22: Pandora, BT Home Hub 5 and local file camera." -description: "This new release of Home Assistant has been mainly about stabilizing our last release which included a lot of core improvements. We're all stable now and set for a bright future." -date: 2016-06-18 18:06:00 +0000 -date_formatted: "June 18, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It's time for the 0.22 release. This was a pretty rough release cycle and we had to issue two hot fixes for our core improvements. But it seems now that all is good and a lot of people have reported that their installs are faster than ever and the occasional quirks no longer occur. - -We are aware that our new web stack has caused issues installing Home Assistant on ARM-based platforms. This sadly includes the Raspberry Pi and Synology NAS systems. We're working on getting to a better solution. For Raspberry Pi, the [All-in-One installer] will take care of everything for you. We're working on updating our [standalone Raspberry Pi installation guide]. - -There are two cool things that I want to highlight in this release. The first is Pandora support. This is based on the CLI player called pianobar. This means that your machine running Home Assistant can be connected to the speakers and provide your house with tunes. - -

    - -

    - -Another cool addition is the local file camera. This seems very basic at first but will allow you to generate a graph with your favorite 3rd party graphing tool and display it on your Home Assistant dashboard. We're looking forward to see what you can do with this! - - - -- Media Player: [Pandora] media player now supported ([@partofthething]) -- Device Tracker: [BT Home Hub 5] now supported ([@lwis]) -- Camera: New [local file] platform shows any image as camera ([@Landrash]) -- Add [Sonos] snapshot and restore services ([@dansullivan86]) -- Device Tracker: [AsusWRT] in Access Point mode now supported ([@linjef]) -- Device Tracker: [AsusWRT] login using public key now supported ([@mtreinish]) -- Device Tracker: [AsusWRT] protocol to use is now auto detected ([@persandstrom]) -- Camera: [Netatmo] now supported ([@jabesq]) -- API documentation added in [Swagger.yaml format] ([@wind-rider]) -- Media Player: [Cast] devices can now be stopped ([@michaelarnauts]) -- MySensors: [IR switch device] and service now supported ([@MartinHjelmare]) -- Bloomsky: [Voltage sensor] now supported ([@arsaboo]) -- Sensor: New [Plex sensor] monitors friends streaming from your Plex server ([@nkgilley]) -- Component [shell command] can now use templates to render arguments ([@partofthething]) -- Rollershutter: [Wink] is now supported ([@philk]) -- Alexa: Updated [documentation][alexa] to show how to call scripts and scenes (@acockburn) -- Sensor: [SNMP] is now supported ([@fabaff]) -- Sensor: Support for Swiss hydrological data ([@fabaff]) - -### {% linkable_title Breaking change %} - -- The new Netatmo support caused us to change how Netatmo are configured. It's now done via it's own component. - -```yaml -netatmo: - api_key: API_KEY - secret_key: SECRET_KEY - username: username - password: password -``` - -### {% linkable_title Hotfix 0.22.1 - June 20 %} - -- Insteon Hub lights will load again - -[@acockburn]: https://github.com/acockburn/ -[@arsaboo]: https://github.com/arsaboo/ -[@dansullivan86]: https://github.com/dansullivan86/ -[@jabesq]: https://github.com/jabesq/ -[@Landrash]: https://github.com/Landrash/ -[@linjef]: https://github.com/linjef/ -[@lwis]: https://github.com/lwis/ -[@MartinHjelmare]: https://github.com/MartinHjelmare/ -[@michaelarnauts]: https://github.com/michaelarnauts/ -[@mtreinish]: https://github.com/mtreinish/ -[@nkgilley]: https://github.com/nkgilley/ -[@partofthething]: https://github.com/partofthething/ -[@persandstrom]: https://github.com/persandstrom/ -[@philk]: https://github.com/philk/ -[@wind-rider]: https://github.com/wind/ -[@fabaff]: https://github.com/fabaff/ -[AsusWRT]: /components/device_tracker.asuswrt/ -[BT Home Hub 5]: /components/device_tracker.bt_home_hub_5/ -[Cast]: /components/media_player.cast/ -[IR switch device]: /components/mysensors/ -[local file]: /components/camera.local_file/ -[Netatmo]: /components/netatmo/ -[Pandora]: /components/media_player.pandora/ -[shell command]: /components/shell_command/ -[Sonos]: /components/media_player.sonos/ -[Wink]: /components/rollershutter.wink/ -[alexa]: /components/alexa/#working-with-scenes -[Plex sensor]: /components/sensor.plex/ -[Swagger.yaml format]: https://github.com/home-assistant/home-assistant/blob/dev/docs/swagger.yaml -[All-in-One installer]: /getting-started/installation-raspberry-pi-all-in-one/ -[standalone Raspberry Pi installation guide]: /getting-started/installation-raspberry-pi/ -[Voltage sensor]: /components/sensor.bloomsky/ -[SNMP]: /components/sensor.snmp/ diff --git a/source/_posts/2016-06-23-usb-webcams-and-home-assistant.markdown b/source/_posts/2016-06-23-usb-webcams-and-home-assistant.markdown deleted file mode 100644 index f5bc3669e6..0000000000 --- a/source/_posts/2016-06-23-usb-webcams-and-home-assistant.markdown +++ /dev/null @@ -1,122 +0,0 @@ ---- -layout: post -title: "Using USB webcams with Home Assistant" -description: "A how-to how to repurpose your old USB webcams and integrate them into Home Assistant." -date: 2016-06-23 06:00:00 +0000 -date_formatted: "June 23, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To -og_image: /images/blog/2016-06-cranberry/social.png ---- - - -In the past month I was thinking about ways to integrate USB webcams into Home Assistant again. The main reason was that this would give those devices a second life and enable one to benefit from low-cost video surveillance. There are a couple of options available like [pygame](http://www.pygame.org/hifi.html) or [SimpleCV](http://www.simplecv.org/) but I never finished something. With the [Local File camera platform](/components/camera.local_file/) by [Landrash](https://github.com/Landrash) and [motion](http://lavrsen.dk/foswiki/bin/view/Motion/WebHome) you could integrate a local USB webcam with a few very easy steps. - -In this blog post I am using a Fedora 24 (will most likely work on other distributions too) installation with Home Assistant 0.22.1 on a Foxconn nT-330i with an old [Logitech QuickCam Orbit AF](http://support.logitech.com/en_us/product/quickcam-sphere-af) and a [Logitech HD Webcam C270](http://support.logitech.com/en_us/product/hd-webcam-c270). As a start only the Quickcam is used. No multi-camera setup for now. - - - -Check first if the your operating system lists your cameras. - -```bash -$ lsusb -[...] -Bus 002 Device 016: ID 046d:08cc Logitech, Inc. Mic (PTZ) -[...] -``` - -The camera we are going to use is available at `/dev/video1`. The C270 is the one on `/dev/video0`. - -```bash -$ ls -al /dev/video* -crw-rw----+ 1 root video 81, 0 Jun 23 08:05 /dev/video0 -crw-rw----+ 1 root video 81, 1 Jun 23 08:36 /dev/video1 -``` - -We need an additional software part to handle the cameras. [motion](http://lavrsen.dk/foswiki/bin/view/Motion/WebHome) is capable of monitoring the video signal from USB and network cameras, do motion detection, and other nifty stuff like saving images, add text, or basic image manipulations. Make sure that you have the [RPM Fusion repository](http://rpmfusion.org/) enabled. - -```bash -$ sudo dnf -y install motion -``` - -For our setup we need to modify the file `/etc/motion/motion.conf`. For now the most important parameters are `videodevice`, `snapshot_interval`, and `target_dir`. The other settings can be left to their defaults. We are going to use the device `/dev/video1`, use a 30 seconds interval, and set the path to `/tmp`. - -```bash -[...] -########################################################### -# Capture device options -############################################################ - -# Videodevice to be used for capturing (default /dev/video0) -# for FreeBSD default is /dev/bktr0 -videodevice /dev/video1 - -[..] -############################################################ -# Snapshots (Traditional Periodic Webcam File Output) -############################################################ - -# Make automated snapshot every N seconds (default: 0 = disabled) -snapshot_interval 30 - -[...] -############################################################ -# Target Directories and filenames For Images And Films -# For the options snapshot_, picture_, movie_ and timelapse_filename -# you can use conversion specifiers -# %Y = year, %m = month, %d = date, -# %H = hour, %M = minute, %S = second, -# %v = event, %q = frame number, %t = thread (camera) number, -# %D = changed pixels, %N = noise level, -# %i and %J = width and height of motion area, -# %K and %L = X and Y coordinates of motion center -# %C = value defined by text_event -# Quotation marks round string are allowed. -############################################################ - -# Target base directory for pictures and films -# Recommended to use absolute path. (Default: current working directory) -target_dir /tmp - -[...] -``` - -It's suggested that you adjust at least `width` and `height` to get a bigger image from your camera. If you are done, fire up `motion`. - -```bash -$ sudo motion -[0] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf -[0] [ALR] [ALL] conf_cmdparse: Unknown config option "sdl_threadnr" -[0] [NTC] [ALL] motion_startup: Motion 3.3.0 Started -[0] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion.log) -``` - -Your `target_dir` will start filling up with images from your camera. `motion` will create a symlink called `lastsnap.jpg` which always point to the latest snapshot. We will setup the [Local File camera platform](/components/camera.local_file/) to use this file. - -```yaml -camera: - - platform: local_file - name: Cranberry cam - file_path: /tmp/lastsnap.jpg -``` - -

    - - The "Cranberry cam" in action -

    - -The machine with the attached USB camera will become a webcam server as well because `motion`'s built-in HTTP server is enabled by default. This means that you could connect your USB webcams to a different machine in your network, run `motion` there, adjust your firewall rules, and use Home Assistant to display the videos. Just check http://[IP of your webcam host]:8081/ to see the stream. This required more powerful hardware than using snapshots, of course. - -In a scenario like this needs a [Generic MJPEG IP Camera ](/components/camera.mjpeg/) in your `configuration.yaml` file. - -```yaml -camera: - - platform: mjpeg - mjpeg_url: http://[IP of your webcam host]:8081 - name: Cranberry Live cam -``` - -[motion](http://lavrsen.dk/foswiki/bin/view/Motion/WebHome) is a powerful tool and this blog post only showed two very simple use cases. Take a look at the [documentation](http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionGuide) of `motion` to unleash its potential. - 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 deleted file mode 100644 index 2fa8b44326..0000000000 --- a/source/_posts/2016-07-01-envisalink-homematic-hdmi-cec-and-sony-bravia-tv.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -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. 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 -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It's time for Home Assistant 0.23 and it's full of goodies. It's also the release that bumps us over a 1000 tests and to 94% test coverage! Also our install issues on the Raspberry Pi and Synology have been resolved. - -This release brings support for two new ecosystems: [Envisalink] and [Homematic]. We can now also control your TV via HDMI using [HDMI-CEC] (which works on the Pi!) and another cool feature is the [persistent notifications] which allow you to add a notification to the frontend till dismissed. - -[Wink] support has been dramatically improved by migrating to the PubNub API. This allows Wink to push changes from their system to Home Assistant. This change came just in time as somehow our Wink integration was causing a lot of requests to their servers. Thanks to Wink for letting us know so we could solve it instead of blocking us. - -On the config side, you can now [store your passwords][secrets] in your OS keyring or just in a standalone file. We also got a new service to reload the core config so no reboots needed anymore after changing customize settings! - - - -- Support for [Envisalink] added ([alarm control panel][envi-alarm], [binary sensor][envi-binary-sensor], [sensor][envi-sensor]) ([@cinntax]) -- Support for [Homematic] added ([binary sensor][hm-binary-sensor], [light][hm-light], [rollershutter][hm-rollershutter], [sensor][hm-sensor], [switch][hm-switch]) ([@pvizeli], [@danielperna84]) -- New [HDMI-CEC] component ([@happyleavesaoc], [@lukas-hetzenecker]) -- Major rewrite of [Wink] which now pushes changes to Home Assistant ([@w1ll1am23]) -- Core: new add [reload core config service] ([@balloob]) -- Support for [persistent notifications] added ([@fabaff], [@balloob]) -- Garage door: [Z-Wave][zwave-garage-door] support added ([@turbokongen]) -- Rollershutter: [Z-Wave][zwave-rollershutter] support added ([@turbokongen]) -- Media Player: [Sony Bravia TV] now supported ([@aparraga]) -- 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]) -- 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]) -- Core: add option to not filter out duplicate states per entity ([@philipbl]) -- HTTP: Follow Mozilla SSL recommendations ([@danieljkemp], [@AlucardZero]) -- Light: [Z-Wave colorbulb][zwave-light] support added ([@armills]) -- Core: new elevation config option added ([@balloob]) -- Sensor: [OneWire] support extended with support for DS18S20, DS1822, DS1825 and DS28EA00 temperature sensors + support for bus masters which use fuse to mount device tree. ([@Ardetus]) -- Lock: [Vera] now supported ([@rhooper]) -- HTTP: Migrate to CherryPy WSGI server to fix install and runtime problems ([@balloob]) - -### {% linkable_title Breaking changes %} - -- Homematic thermostat configuration has changed and now depends on the new [Homematic] component. - -### {% linkable_title Hotfix 0.23.1 - July 2 %} - -- Bump PyVera to 0.2.13 to fix traceback and pyvera thread dying related to bug ([@rhooper]) -- HTTP - SSL: Check for OP_NO_COMPRESSION support before trying to use it ([@AlucardZero]) -- Wink: Downgraded pubnub to work around pycryptodome conflicts ([@w1ll1am23]) - -### {% linkable_title FAQ %} - -- `elevation: ` was introduced to the configuration for weather/sunrise data. For existing [configurations][elevation] add the value shown in the warning `[homeassistant.config] Incomplete core config. Auto detected elevation: 665` to your `configuration.yaml` file. - -[@AlucardZero]: https://github.com/AlucardZero/ -[@aparraga]: https://github.com/aparraga/ -[@Ardetus]: https://github.com/Ardetus/ -[@armills]: https://github.com/armills/ -[@arsaboo]: https://github.com/arsaboo/ -[@balloob]: https://github.com/balloob/ -[@cinntax]: https://github.com/cinntax/ -[@dale3h]: https://github.com/dale3h/ -[@danieljkemp]: https://github.com/danieljkemp/ -[@danielperna84]: https://github.com/danielperna84/ -[@fabaff]: https://github.com/fabaff/ -[@happyleavesaoc]: https://github.com/happyleavesaoc/ -[@Jypy]: https://github.com/Jypy/ -[@kellerza]: https://github.com/kellerza/ -[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker/ -[@philipbl]: https://github.com/philipbl/ -[@pvizeli]: https://github.com/pvizeli/ -[@rhooper]: https://github.com/rhooper/ -[@turbokongen]: https://github.com/turbokongen/ -[@w1ll1am23]: https://github.com/w1ll1am23/ -[envi-alarm]: /components/alarm_control_panel.envisalink/ -[envi-binary-sensor]: /components/binary_sensor.envisalink/ -[envi-sensor]: /components/sensor.envisalink/ -[Envisalink]: /components/envisalink/ -[HDMI-CEC]: /components/hdmi_cec/ -[hm-binary-sensor]: /components/binary_sensor.homematic/ -[hm-light]: /components/light.homematic/ -[hm-rollershutter]: /components/rollershutter.homematic/ -[hm-sensor]: /components/sensor.homematic/ -[hm-switch]: /components/switch.homematic/ -[Homematic]: /components/homematic/ -[Netatmo]: /components/sensor.netatmo/ -[OneWire]: /components/sensor.onewire/ -[OpenExchangeRates]: /components/sensor.openexchangerates/ -[Pushover]: /components/notify.pushover/ -[secrets]: /topics/secrets/ -[Vera]: /components/lock.vera/ -[Wink]: /components/wink/ -[zwave-garage-door]: /components/garage_door.zwave/ -[zwave-light]: /components/light.zwave/ -[zwave-rollershutter]: /components/rollershutter.zwave/ -[Fixer.io]: /components/sensor.fixer/ -[persistent notifications]: /components/persistent_notification/ -[reload core config service]: /getting-started/customizing-devices/#reloading-customize -[Sony Bravia TV]: /components/media_player.braviatv/ -[Raspberry Pi GPIO pins]: /components/garage_door.rpi_gpio/ -[elevation]: /getting-started/basic/ diff --git a/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown b/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown deleted file mode 100644 index 266dcda25d..0000000000 --- a/source/_posts/2016-07-06-pocketchip-running-home-assistant.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: post -title: "PocketCHIP running Home Assistant" -description: "Taking Home Assistant for a spin on a PocketCHIP." -date: 2016-07-06 05:00:00 +0000 -date_formatted: "July 06, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To -og_image: /images/blog/2016-07-pocketchip/social.png ---- - - -Over a year ago I participated in the [kickstarter campaign](https://www.kickstarter.com/projects/1598272670/chip-the-worlds-first-9-computer/description) for "CHIP - The World's First Nine Dollar Computer" by [Next Thing Co.](https://www.nextthing.co/). I went for the PocketCHIP because of the idea. Display, built-in storage (thus no need for SD cards), battery-powered, and a keyboard are pretty nice features. Last week a package arrives... - - - -Thanks to [Next Thing Co.](https://www.nextthing.co/) and their CHIP which is actually 9 USD the space requirement for a single board computer has decreased. No Ethernet and HDMI output helped with that. But I guess that the next development cycle will allow us to put those boards in a matchbox including wired networking and a SATA interface. - -

    - - Size comparison of a Cubieboard, OrangePi One, and CHIP. -

    - -If you start using a PocketCHIP you will definitely look like a Blackberry or a GameBoy user. Typing is done with your thumbs :-) - -First a couple of tweaks like setting up `sudo`, upgrading the existing installation, change passwords, enabling ssh, and removal of the annoying stuff then installation of Home Assistant. There is not much to tell...it's straight-forward. For the sake of completeness below the notes about what I did. - -A Debian installation is available by default. This means that some dependencies for Home Assistant are missing. I haven't checked if a new build for the PocketCHIP would include them. So, after a `$ sudo apt-get update` installing those dependencies take a minute or two. - -```bash -$ sudo apt-get install python3-dev python3-pip python3-venv -``` - -As usual I run Python applications in a [venv](https://docs.python.org/3/library/venv.html). - -```bash -$ pvenv ha -``` - -Let's activate the created environment. - -```bash -$ cd ha -$ source bin/activate -``` - -If you haven't seen the next two commands already then you should visit our [frontsite](/). - -```bash -$ pip3 install homeassistant -$ hass --open-ui -``` - -With `surf` the browsing experience on the low-resolution display is not that great. Most smartphones, even very cheap ones, have touchscreens with higher resolutions. Nevermind, [`midori`](https://twitter.com/fabaff/status/748852317047418880) is not better. - -

    - - PocketCHIP with Home Assistant frontend -

    - -Well, with PocketCHIP and Home Assistant you could run your home automation on a 49 USD device with a touchscreen, an integrated USP, and a keyboard. With the GPIO available on top of the display you could even connect your PocketCHIP directly to sensors and actuators. - diff --git a/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown b/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown deleted file mode 100644 index 5739266899..0000000000 --- a/source/_posts/2016-07-16-sqlalchemy-knx-join-simplisafe.markdown +++ /dev/null @@ -1,99 +0,0 @@ ---- -layout: post -title: "0.24: SQLAlchemy, KNX, Join by Joaoapps, and SimpliSafe." -description: "This new release of Home Assistant contains support for KNX, Join by Joaoapps, and SimpliSafe. As of now our new database backend is SQLAlchemy which gives you more flexibility for storing your data." -date: 2016-07-16 12:00:00 +0000 -date_formatted: "July 16, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes ---- - -It's time for Home Assistant 0.24 and it's full of new integration for your Home. It contains some structural changes to our history which requires action from your end, so please keep reading. - -[MapQuest] discontinued their free and direct tile access by Monday, July 11, 2016. With [CARTO] we found a very cool and suitable solution. They allow us to use their tile for the map. Thank you, [CARTO]. - -[Roy Hooper][@rhooper] did an amazing job migrating the history support from being tied to SQLite to use the ORM SQLAlchemy instead. This means that you can now use **any** SQL backend for the history. So besides SQLite you can now databases like MySQL or PostgreSQL. However, this does require that you install [SQLAlchemy] and run a command to migrate your existing history over. We tried to make the process as seamless as possible by introducing a new command line script: - -```bash -$ pip3 install SQLAlchemy -$ hass --script db_migrator --config /path/to/config -``` - -You can omit the `--config` option if you use the default configuration directory. Run the script with `--help` to get more options. - - - -- Config: Improved support for storing [secrets][secrets] ([@kellerza]) -- Sensor: Support for [Yahoo! Weather][yahoo-weather] ([@pvizeli]) -- Add scripts to command line to expose advanced options ([@balloob]) -- Alarm: [SimpliSafe][simplisafe] is now supported ([@w1ll1am23]) -- Core: Switch to SQLAlchemy for the Recorder component ([@rhooper]) -- Support for [Join by Joaoapps][join-joaoapps] added incl. [Join Notify][join-notify] ([@nkgilley]) -- Media Player: [Plex] will no longer spam the logs if server goes offline ([@dale3h]) -- Sensor: [APCUPSd Sensor][apcupsd-sensor] now supports names, icons and units ([@dale3h]) -- Lock: [Verisure] entities will now use name instead of serial number for entity id ([@turbokongen]) -- [StatsD] can now also export attributes ([@bah2830]) -- Support for [KNX] added ([@usul27]) -- Switch: [TPLink] HS100/HS110 now supported ([@GadgetReactor]) -- Stability fixes for [RFXtrx] ([@Danielhiversen]) -- Tweaks to [Z-Wave] ([@turbokongen]) -- Light: [Brightness] now clamped to 0-255 ([@keatontaylor]) -- Thermostat: [Radiotherm] HVAC mode now supported ([@danieljkemp]) -- Sensor: [Google Travel] times can now use dynamic locations for start/end ([@bah2830]) -- Notify: Allow sending photos to [Telegram] ([@pvizeli]) -- Frontend: Improve loading times ([@balloob]) -- Frontend: Fix stream not reconnecting after standby ([@balloob]) -- Frontend: Wait up to two seconds for new state before resetting toggle after toggling state ([@balloob]) - -### {% linkable_title Hotfix 0.24.1 - July 21 %} - -Quick hot fix after we found a bug in the migrator where it wouldn't work with a database in a non-standard location. Thanks to [@n8henrie] and [@AlucardZero]. - -### {% linkable_title Breaking changes %} - -- Migrating existing databases (see above). -- The [APCUPSd Sensor][apcupsd-sensor] was updated. This will need that you modify your `configuration.yaml` file. -- Entity IDs of Verisure locks will change. This is a one time change but should improve readability. - -[@bah2830]: https://github.com/bah2830/ -[@balloob]: https://github.com/balloob/ -[@dale3h]: https://github.com/dale3h/ -[@danieljkemp]: https://github.com/danieljkemp -[@GadgetReactor]: https://github.com/GadgetReactor -[@keatontaylor]: https://github.com/keatontaylor -[@kellerza]: https://github.com/kellerza/ -[@nkgilley]: https://github.com/nkgilley -[@pvizeli]: https://github.com/pvizeli/ -[@rhooper]: https://github.com/rhooper/ -[@turbokongen]: https://github.com/turbokongen/ -[@usul27]: https://github.com/usul27 -[@w1ll1am23]: https://github.com/w1ll1am23/ -[@n8henrie]: https://github.com/n8henrie/ -[@AlucardZero]: https://github.com/AlucardZero/ -[@Danielhiversen]: https://github.com/danielhiversen - - -[apcupsd-sensor]: /components/sensor.apcupsd/ -[Brightness]: /components/light/ -[CARTO]: https://carto.com/ -[Google Travel]: /components/sensor.google_travel_time/ -[imap-sensor]: /component/sensor.imap/ -[join-joaoapps]: /components/joaoapps_join/ -[join-notify]: /components/notify.joaoapps_join/ -[KNX]: /components/knx/ -[MapQuest]: https://www.mapquest.com/ -[Plex]: /components/media_player.plex/ -[Radiotherm]: /components/thermostat.radiotherm/ -[recorder]: /components/recorder/ -[secrets]: /topics/secrets/ -[simplisafe]: /components/alarm_control_panel.simplisafe/ -[SQLAlchemy]: http://www.sqlalchemy.org/ -[StatsD]: /components/statsd/ -[Telegram]: /components/notify.telegram/ -[TPLink]: /components/switch.tplink/ -[Verisure]: /components/lock.verisure/ -[yahoo-weather]: /components/sensor.yweather/ -[Z-Wave]: /components/zwave/ -[RFXtrx]: //components/rfxtrx/ diff --git a/source/_posts/2016-07-19-visualizing-your-iot-data.markdown b/source/_posts/2016-07-19-visualizing-your-iot-data.markdown deleted file mode 100644 index ca2f337a3d..0000000000 --- a/source/_posts/2016-07-19-visualizing-your-iot-data.markdown +++ /dev/null @@ -1,114 +0,0 @@ ---- -layout: post -title: "Visualize your IoT data" -description: "Export, process, and visualize your Home Assistant data." -date: 2016-07-19 16:00:00 +0000 -date_formatted: "July 19, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To IoT-Data -og_image: /images/blog/2016-07-reporting/libreoffice-graph.png ---- - - - -The [history component](/components/history/) is tracking everything that is going on within Home Assistant. This means that you have access to all stored information about your home. Our history is not a full-fledged graphical processing and visualization component as you may know from systems and network monitoring tools. The current limitation is that you only can select a day for a visual output of your information and not a period. Also, there is no possibility to drill down on a specific entity. - -This blog post will show you ways to export data for reporting, visualization, or further analysis of automation rules. - - - -In this blog post I use the temperature of the [Aare](https://en.wikipedia.org/wiki/Aare) river close to where I live as a show case. The temperatures were recorded with the [Swiss Hydrological Data sensor](/components/sensor.swiss_hydrological_data/) and the name of the sensor is `sensor.aare`. - -The database is stored at `/.homeassistant/home-assistant_v2.db` as [SQLite database](https://www.sqlite.org/). In all examples we are going to use the path: `/home/ha/.homeassistant/home-assistant_v2.db` - -If you are just curious what's stored in your database then you can use the `sqlite3` command-line tool or a graphical one like [DB Browser for SQLite](http://sqlitebrowser.org/). - -The table that is holding the states is called `states`. The `events` tables is responsible for storing the events which occurred. So, we will first check how many entries there are in the `states` table. `sqlite3` needs to know where the databases is located. To work with your database make sure that Home Assistant is not running or create a copy of the existing database. It's recommended to work with a copy. - -```bash -$ sqlite3 /home/ha/.homeassistant/home-assistant_v2.db -SQLite version 3.11.0 2016-02-15 17:29:24 -sqlite> SELECT count(*) FROM states; -24659 -``` - -Let's have a look at a sample [SQL](https://en.wikipedia.org/wiki/SQL) query. This query will show all states in a period for the sensor `sensor.aare`. - -```sql -SELECT state, last_changed FROM states - WHERE - entity_id = 'sensor.aare' - AND - last_changed BETWEEN - '2016-07-05 00:00:00.000000' AND '2016-07-07 00:00:00.000000'; -``` - -The SQL statement can be formed that it fits exactly what you need. This means that you can process the data in any way you want for further use. Often it makes sense to eliminate certain entries like `Unknown` or peaks. - -If the above query is executed in DB Browser for SQLite you would be able to save the sensor's graph as png. - -

    - - Visualization with DB Browser for SQLite -

    - -You may ask: Why not do this with LibreOffice Calc or another spreadsheet application? As most spreadsheet applications are not able to work directly with SQLite database we are going to export the data from the database to [CSV](https://en.wikipedia.org/wiki/Comma-separated_values). - -```bash -$ sqlite3 -header -csv /home/ha/.homeassistant/home-assistant_v2.db "SELECT last_changed, state FROM states WHERE entity_id = 'sensor.aare' AND last_changed BETWEEN '2016-07-05 00:00:00.000000' AND '2016-07-07 00:00:00.000000';" > sensor.csv -``` - -The ordering for the `SELECT` was changed to get the time stamps first and then the state. Now we can import the CSV file into the application of your choice, here it's LibreOffice Calc. - -

    - - Import of the CSV file -

    - -After the import a graph can be created over the existing data. - -

    - - Graph in LibreOffice -

    - -You can also use [matplotlib](http://matplotlib.org/) to generate graphs as an alternative to a spreadsheet application. This is a powerful Python 2D plotting library. With the built-in support for SQLite in Python it will only take a couple lines of code to visualize your data. - -```python -import sqlite3 -from matplotlib import dates -import matplotlib.pyplot as plt - -import homeassistant.util.dt as dt - -values = [] -timestamps = [] - -conn = sqlite3.connect('/home/ha/.homeassistant/home-assistant_v2.db') -data = conn.execute("SELECT state, last_changed FROM states WHERE " - "entity_id = 'sensor.aare' AND last_changed BETWEEN " - "'2016-07-05 00:00:00.000000' AND " - "'2016-07-07 00:00:00.000000'") - -for x in data: - timestamps.append(dates.date2num(dt.parse_datetime(x[1]))) - values.append(float(x[0])) - -plt.plot_date(x=timestamps, y=values, fmt="r-") -plt.ylabel('Temperature') -plt.xlabel('Time line') - -plt.savefig('sensor.png') -``` - -Creating a connection to the database and executing a query is similar to the ways already seen. The return values from the query are split into two lists. The time stamps must be converted in an value which is accepted by matplotlib and then the graph is generated and saved as image. - -

    - - Sensor graph generated by matplotlib -

    - -Most of the graphs are pretty ugly. So, further beautification will be needed. If you have created a nice report including some amazing graphs then the Home Assistant community would be grateful for sharing them in our [forum](https://community.home-assistant.io/). - diff --git a/source/_posts/2016-07-23-internet-of-things-data-exploration-with-jupyter-notebooks.markdown b/source/_posts/2016-07-23-internet-of-things-data-exploration-with-jupyter-notebooks.markdown deleted file mode 100644 index 2a7b6c8eef..0000000000 --- a/source/_posts/2016-07-23-internet-of-things-data-exploration-with-jupyter-notebooks.markdown +++ /dev/null @@ -1,80 +0,0 @@ ---- -layout: post -title: "IoT Data Exploration with Jupyter Notebooks" -description: "Tutorial how to get started exploring your data using Jupyter Notebooks, Pandas and Matplotlib." -date: 2016-07-23 18:00:00 +0000 -date_formatted: "July 23, 2016" -author: Anton Kireyeu -comments: true -categories: How-To IoT-Data -og_image: /images/blog/2016-07-data-exploration/graph.png ---- - -_This is the first blog post by Anton Kireyeu. A new contributor to Home Assistant who will focus on exploring and visualizing Home Assistant data._ - -As we learned in the recent [blog post by Fabian], all operational data of your Home Assistant application is stored locally and is available for exploration. Our first steps were querying data with the [DB Browser for SQLite], exporting the data extract as a CSV file and graphing in LibreOffice. But what else can be done with this data and what tools are there available? - -This post will help you get set up using a few popular data scientist tools to allow you to locally process your data: - - -  [Pandas]: an open source tool for data analysis for Python - -  [matplotlib]: a Python plotting library - -  [Jupyter notebook]: application for creation and sharing of documents containing live code, visualizations and explanatory text - -

    - -One of the graphs created with this tutorial. -

    - -_TL; DR: Use [this Jupyter Notebook][nb-prev] to visualize of your data_ - -[blog post by Fabian]: /blog/2016/07/19/visualizing-your-iot-data/ -[DB Browser for SQLite]: http://sqlitebrowser.org/ -[Pandas]: http://pandas.pydata.org/ -[matplotlib]: http://matplotlib.org/ -[Jupyter notebook]: https://jupyter.org/ -[nb-prev]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-1/DataExploration-1.ipynb - - - -### {% linkable_title Dependencies %} - -In order to run the provided Jupyter notebook, please make sure you have the following applications/libraries installed on your computer: - -- Pandas -- NumPy -- Matplotlib -- SQLAlchemy -- Jupyter - -As a Windows user myself, I find the easiest, quickest and most hassle-free way of installing all of these dependencies is to use [WinPython]. This free open-source portable distribution includes all of the dependencies required for this notebook, as well as a few other essential Python libraries you may require for data exploration in the future. - -[WinPython]: https://winpython.github.io/ - -#### {% linkable_title Why Jupyter? %} - -While all Home Assistant implementations can have varying setup, components and scripts, the underlying data structure is standardized and well-defined. This allows us to write Python code that is environmentally agnostic. Wrapping it in a Jupyter notebook ensures the code, visualizations and directions/explanations are kept digestible and neatly-packaged. One of the amazing features of Jupyter is the ability to change code as you go along, customizing all outputs and visualizations on the fly! - -#### {% linkable_title Where do I start? %} - -This tutorial is based around a heavily commented Jupyter Notebook that we created. So to get started, you will have to open that: - - - [download the tutorial Jupyter Notebook][nb-prev] (leads to preview page, from there click download top-right) - - launch the Jupyter Notebook App - - Click the 'upload' button to add the downloaded notebook to Jupyter - - Adjust the `DB_URL` at the beginning of the notebook to point at your Home Assistant database - - Select in top menu: Cell -> Run All - -That’s it! The included code will walk you through importing the required libraries, show running raw SQL against your local database, plotting basic data from the states table, and in the end output a few plots of changes for every entity in your system as well as the mean daily value for the past 20 days. - -After just those few steps, you will be greeted with beautiful formatted data like this: - -

    - -One of the graphs created with this tutorial. -

    - -#### {% linkable_title What’s next? %} - -Thanks to the magic of Jupyter, all of the code is customizable: want to selectively display your data, only covering a specific entity? Sure thing! Want to change the properties of the plots? No problem! - -While you learn and explore your IoT data, we will be working on providing more ready-to-use Jupyter Notebooks. Feel free to ask questions or provide suggestions. Would you like to see a specific visualization? Is there a particular facet of data you’re interested in? Let’s talk about it, let’s dive into the world of data together! diff --git a/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown b/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown deleted file mode 100644 index ea3e537b46..0000000000 --- a/source/_posts/2016-07-28-esp8266-and-micropython-part1.markdown +++ /dev/null @@ -1,163 +0,0 @@ ---- -layout: post -title: "ESP8266 and MicroPython - Part 1" -description: "Using MicroPython on ESP8266 based devices and Home Assistant." -date: 2016-07-28 06:00:00 +0200 -date_formatted: "July 28, 2016" -author: Fabian Affolter -comments: true -categories: How-To ESP8266 Micropython -og_image: /images/blog/2016-07-micropython/social.png ---- - - -The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The [documentation](http://docs.micropython.org/en/latest/esp8266/esp8266_contents.html) covers a lot of ground. This post is providing only a little summary which should get you started. - -Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for [download](https://micropython.org/download/#esp8266). - - - -The easiest way is to use [esptool.py](https://github.com/themadinventor/esptool) for firmware handling tasks. First erase the flash: - -```bash -$ sudo python esptool.py --port /dev/ttyUSB0 erase_flash -esptool.py v1.0.2-dev -Connecting... -Erasing flash (this may take a while)... -``` - -and then load the firmware. You may adjust the file name of the firmware binary. - -```bash -$ sudo python esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=8m 0 esp8266-2016-07-10-v1.8.2.bin -esptool.py v1.2-dev -Connecting... -Running Cesanta flasher stub... -Flash params set to 0x0020 -Writing 540672 @ 0x0... 540672 (100 %) -Wrote 540672 bytes at 0x0 in 13.1 seconds (330.8 kbit/s)... -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 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 -#4 ets_task(4020e374, 29, 3fff70e8, 10) -WebREPL daemon started on ws://192.168.4.1:8266 -Started webrepl in setup mode -could not open file 'main.py' for reading - -#5 ets_task(4010035c, 3, 3fff6360, 4) -MicroPython v1.8.2-9-g805c2b9 on 2016-07-10; ESP module with ESP8266 -Type "help()" for more information. ->>> -``` - -

    -The public build of the firmware may be different than the firmware distributed to the backers of the Kickstarter campaign. Especially in regard of the [available modules](http://docs.micropython.org/en/latest/esp8266/py-modindex.html), turned on debug messages, and alike. Also, the WebREPL may not be started by default. -

    - -Connect a LED to pin 5 (or another pin of your choosing) to check if the ESP8266 is working as expected. - -```python ->>> import machine ->>> pin = machine.Pin(5, machine.Pin.OUT) ->>> pin.high() -``` - -You can toogle the LED by changing its state with `pin.high()` and `pin.low()`. - -Various ESP8266 development board are shipped with an onboard photocell or a light dependent resistors (LDR) connected to the analog pin of your ESP8266 check if you are able to obtain a value. - -```python ->>> import machine ->>> brightness = machine.ADC(0) ->>> brightness.read() -``` - -Make sure that you are familiar with REPL and WebREPL because this will be needed soon. Keep in mind the password for the WebREPL access. - -Read the [instructions](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html) about how to setup your wireless connection. Basically you need to upload a `boot.py` file to the microcontroller and this file is taking care of the connection setup. Below you find a sample which is more or less the same as shown in the [documentation](http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html#configuration-of-the-wifi). - -```python -def do_connect(): - import network - - SSID = 'SSID' - PASSWORD = 'PASSWORD' - - sta_if = network.WLAN(network.STA_IF) - ap_if = network.WLAN(network.AP_IF) - if ap_if.active(): - ap_if.active(False) - if not sta_if.isconnected(): - print('connecting to network...') - sta_if.active(True) - sta_if.connect(SSID, PASSWORD) - while not sta_if.isconnected(): - pass - print('Network configuration:', sta_if.ifconfig()) -``` - -Upload this file with `webrepl_cli.py` or the WebREPL: - -```bash -$ python webrepl_cli.py boot.py 192.168.4.1:/boot.py -``` - -If you reboot, you should see your current IP address in the terminal. - -```bash ->>> Network configuration: ('192.168.0.10', '255.255.255.0', '192.168.0.1', '192.168.0.1') -``` - -First let's create a little consumer for Home Assistant sensor's state. The code to place in `main.py` is a mixture of code from above and the [RESTful API](/developers/rest_api/) of Home Assistant. If the temperature in the kitchen is higher than 20 °C then the LED connected to pin 5 is switched on. - -

    -If a module is missing then you need to download it from the [MicroPython Library overview](https://github.com/micropython/micropython-lib) and upload it to the ESP8266 with `webrepl_cli.py` manually. -

    - -```python -# Sample code to request the state of a Home Assistant entity. - -API_PASSWORD = 'YOUR_PASSWORD' -URL = 'http://192.168.0.5:8123/api/states/' -ENTITY = 'sensor.kitchen_temperature' -TIMEOUT = 30 -PIN = 5 - -def get_data(): - import urequests - url = '{}{}'.format(URL, ENTITY) - headers = {'x-ha-access': API_PASSWORD, - 'content-type': 'application/json'} - resp = urequests.get(URL, headers=headers) - return resp.json()['state'] - -def main(): - import machine - import time - - pin = machine.Pin(PIN, machine.Pin.OUT) - while True: - try: - if int(get_data()) >= 20: - pin.high() - else: - pin.low() - except TypeError: - pass - time.sleep(TIMEOUT) - -if __name__ == '__main__': - print('Get the state of {}'.format(ENTITY)) - main() -``` - -Upload `main.py` the same way as `boot.py`. After a reboot (`>>> import machine` and `>>> machine.reboot()`) or power-cycling your physical notifier is ready. - -If you run into trouble, press "Ctrl+c" in the REPL to stop the execution of the code, enter `>>> import webrepl` and `>>> webrepl.start()`, and upload your fixed file. - diff --git a/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown b/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown deleted file mode 100644 index 93bec4b215..0000000000 --- a/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown +++ /dev/null @@ -1,130 +0,0 @@ ---- -layout: post -title: "0.25: Custom frontend panels, Jupyter notebooks, DirecTV." -description: "Frontend became blazing fast and extensible. DirecTV support added." -date: 2016-07-30 12:00:00 +0000 -date_formatted: "July 30, 2016" -author: Fabian Affolter & Paulus Schoutsen -author_twitter: fabaff -comments: true -categories: Release-Notes ---- - -When Home Assistant started the focus has always been on making a great developer experience. Allowing anyone to add support for their favorite devices to Home Assistant easily. This focus has been a great success since we now have 339 components and platforms! - -Starting with this release, we are extending our extensibility to the frontend. Starting this release, any component can [add its own page to the frontend][custom-panels]. Examples of this today are the map, logbook and history. We are looking forward to all the crazy panels you'll come up with! - -We have also seen an exciting trend of people starting to visualize their Internet of Things data using [Jupyter] Notebooks, which are a great way to create and share documents that contain code, visualizations, and explanatory text. In case you missed it, the [blog] post by [@kireyeu] shows an advanced usecase while our [Notebooks][jupyter-notebooks] in the [Home Assistant Notebooks repository][jupyter-repo] cover the basics. - -This release also includes a bunch of new integrations, among others three new media player platforms. This means that today Home Assistant can talk to 26 different media players! - -The brand-new [iFrame panel component][iframe_panel] allows you to add other websites as pages in the Home Assistant frontend. They will show up in the sidebar and can be used the same way as you open the frontend in your browser but all within one view. - -I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] data ([PEP484]) to the Home Assistant core. This will help us identify issues before they are released. - - - -- Frontend: Support for [iFrame panels][iframe_panel] to adding other sites to sidebar ([@balloob]) -- Allow components to register [custom frontend panels][custom-panels] ([@balloob]) -- Add example custom_component [react_panel][react-panel] showing custom panels ([@balloob]) -- Light: [MagicLight/Flux WiFi Color LED Light][flux] support ([@Danielhiversen]) -- Script: Specify a delay [using templates][script] ([@Teagan42]) -- Media player: [Russound RNET][Russound] integration ([@laf]) -- Remote: Option specifying custom timeout when calling Home Assistant API ([@n8henrie]) -- Thermostat: Integration of [KNX] thermostats ([@open-homeautomation]) -- Thermostat: Support for HVAC mode of [Nest] devices ([@vladonemo]) -- InfluxDB: Option to specify additional [tags] ([@open-homeautomation]) -- Input slider: Support for float value ([@ngraziano]) -- Template: New [filters] (`timestamp_local` and `timestamp_utc`) ([@fabaff]) -- Binary sensor - Wink: Water leak sensor support added ([@w1ll1am23]) -- Sensor - Tellduslive: Support for luminance of Fibaro Motion Sensor ([@PetitCircuitLab]) -- Switch - RPi GPIO: Fix when inverted logic ([@zeroDenial]) -- Z-Wave: Rollershutter update ([@turbokongen]) -- RFXtrx: Fire events when receiving signals from sensors and tests added ([@Danielhiversen]) -- Core: Add [type][typing] checking using mypy to the core ([@fabianhjr]) -- Remote: Support for getting the [Configuration] through the Python API ([@fabaff]) -- Media player: Support for [DirecTV] ([@cbulock]) -- Use browser timezone for frontend logbook and history dates ([@armills]) -- Light: New support for [X10] lights ([@fotoetienne]) -- Sensor: Support for observing [IMAP] accounts ([@danieljkemp]) -- Media Player: Integration for [MPC-HC] (Media Player Classic - Home Cinema) mediaplayer ([@abcminiuser]) -- Notify: `location` extension for [Telegram] and photo bug fixed ([@keatontaylor] and [@pvizeli]) -- Groups: Lock states will now be properly grouped ([@jwl17330536]) -- Media Player: Added tests for Sonos to improve code quality ([@americanwookie]) -- Device Tracker: iCloud stability fixes ([@kellerza]) -- Sensor: Speedtest with improved error handling and state restoring ([@nkgilley]) -- Recorder: Stability fixes ([@kellerza]) -- Qwikswitch: Stability fixes ([@kellerza]) -- Light: [Hyperion] keeps now track of active color ([@schneefux]) - -### {% linkable_title Hotfix 0.25.1 - August 1 %} - -- Light - Z-Wave: Bring back delayed value update behavior ([@jnewland]) -- Recorder: Properly close session after execute ([@kellerza]) -- Media Player - Kodi: No longer block startup if connecting to wrong port ([@shoekstra]) -- Downgrade voluptuous to 0.8.9 as it blocked the upgrade for some ([@balloob]) - -### {% linkable_title Hotfix 0.25.2 - August 2 %} - -- Hotfix to make sure Z-Wave locks work again. Thanks to @tobiebooth for the quick fix. - -### {% linkable_title Breaking changes %} - -- Google Voice SMS notification support was removed. - -[@nkgilley]: https://github.com/nkgilley -[@abcminiuser]: https://github.com/abcminiuser -[@americanwookie]: https://github.com/americanwookie -[@armills]: https://github.com/armills -[@balloob]: https://github.com/balloob -[@cbulock]: https://github.com/cbulock -[@Danielhiversen]: https://github.com/Danielhiversen -[@danieljkemp]: https://github.com/danieljkemp -[@fabaff]: https://github.com/fabaff -[@fabianhjr]: https://github.com/fabianhjr -[@fotoetienne]: https://github.com/fotoetienne -[@jwl17330536]: https://github.com/jwl17330536 -[@keatontaylor]: https://github.com/keatontaylor -[@kellerza]: https://github.com/kellerza -[@kireyeu]: https://github.com/kireyeu -[@laf]: https://github.com/laf -[@n8henrie]: https://github.com/n8henrie -[@ngraziano]: https://github.com/ngraziano -[@open-homeautomation]: https://github.com/open-homeautomation -[@PetitCircuitLab]: https://github.com/PetitCircuitLab -[@pvizeli]: https://github.com/pvizeli -[@schneefux]: https://github.com/schneefux -[@Teagan42]: https://github.com/Teagan42 -[@turbokongen]: https://github.com/turbokongen -[@usul27]: https://github.com/usul27 -[@vladonemo]: https://github.com/vladonemo -[@w1ll1am23]: https://github.com/w1ll1am23 -[@zeroDenial]: https://github.com/zeroDenial -[@jnewland]: https://github.com/jnewland -[@shoekstra]: https://github.com/shoekstra - -[custom-panels]: /developers/frontend_creating_custom_panels/ -[iframe_panel]: /components/panel_iframe/ -[custom]: /cookbook/custom_panel_using_react/ -[flux]: /components/light.flux_led/ -[script]: /getting-started/scripts/#delay -[Russound]: /components/media_player.russound_rnet/ -[tags]: /components/influxdb/ -[filter]: /topics/templating/ -[jupyter-notebooks]: /cookbook/#jupyter-notebooks -[jupyter-repo]: https://github.com/home-assistant/home-assistant-notebooks -[Jupyter]: http://jupyter.org/ -[blog]: /blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/ -[DirecTV]: /components/media_player.directv/ -[Configuration]: /developers/python_api/#get-configuration -[X10]: /components/light.x10/ -[IMAP]: /components/sensor.imap/ -[typing]: https://docs.python.org/3/library/typing.html -[PEP484]: https://www.python.org/dev/peps/pep-0484/ -[MPC-HC]: /components/media_player.mpchc/ -[Telegram]: /components/notify.telegram/ -[react-panel]: /cookbook/custom_panel_using_react/ -[KNX]: /components/thermostat.knx/ -[Nest]: /components/thermostat.nest/ -[filters]: /topics/templating/#home-assistant-template-extensions -[Hyperion]: /components/light.hyperion/ diff --git a/source/_posts/2016-08-03-laundry-automation-update.markdown b/source/_posts/2016-08-03-laundry-automation-update.markdown deleted file mode 100644 index 041659c80d..0000000000 --- a/source/_posts/2016-08-03-laundry-automation-update.markdown +++ /dev/null @@ -1,115 +0,0 @@ ---- -layout: post -title: "Laundry Sensors with NodeMCU and Home Assistant" -description: "Nolan describes how he gets notified when laundry is done." -date: 2016-08-03 10:22 -0700 -date_formatted: "August 2, 2016" -author: Nolan Gilley -comments: true -categories: User-Stories -og_image: /images/blog/2016-07-laundry-automation/protoboard.jpg ---- - -_This is a guest post by Home Assistant user and contributor [Nolan Gilley](https://github.com/nkgilley)._ - -Today I'll show you how I used Home Assistant, a NodeMCU (ESP8266), and a couple of accelerometers to automate our laundry room. This is a rewrite of an [old post](/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/) where I did the same thing using a Moteino & Raspberry Pi. This version only requires a NodeMCU. - -We have an older washer and dryer which doesn't have any form of notification when cycles complete. Home Assistant was the obvious solution, I just needed to create sensors for the washer and dryer. I tried using sound sensors but found them unreliable. I ended up using an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect whether they're open or closed. I connected the accelerometers and reed switches to an NodeMCU which will relay the data to my MQTT broker. - -

    - - Block diagram of schematic -

    - - - -After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn't get tripped by the washer or vice versa. In the plot below you can see the acceleration in each direction for the accelerometer connected to the dryer. It's easy to see when the dryer is in operation here. I used the same technique for the washer's accelerometer. - -

    - - Graph showing the accelerometer data -

    - -Next it was just a matter of integrating everything with Home Assistant. I was able to use the [MQTT component](/components/mqtt/) to read the washer and dryer states from the Moteino and display it in Home Assistant. - -

    - - Status of the dryer and washer in Home Assistant -

    - -Next I wrote [scripts](/components/script/) that are run whenever the washer or dryer completes a load. This is triggered by the [automation component](/getting-started/automation/). When the laundry is complete I have the lights in the house turn red and [notify me via Join](/components/notify.joaoapps_join/). Once the door is opened and laundry emptied another script runs that sets the lights back to normal. So far it has been very helpful and very reliable. - -

    - - - - NodeMCU connected to MPU-6050 accelerometer. -

    - -Materials used: - - - [NodeMCU](https://www.amazon.com/gp/product/B010O1G1ES) - - [2 x Accelerometers](http://www.amazon.com/gp/product/B008BOPN40) - - [2 x Reed switch](http://www.amazon.com/gp/product/B004PARDRO) - -[Sketch for the NodeMCU is available here.](https://github.com/nkgilley/nodemcu-laundry/blob/master/nodemcu-laundry.ino) - -Home Assistant Configuration: - -```yaml -mqtt: - broker: 192.168.1.100 - port: 1883 - keepalive: 60 - qos: 0 - -sensor: - - platform: mqtt - name: "Dryer Status" - state_topic: "sensor/dryer" - unit_of_measurement: "" - - - platform: mqtt - name: "Washer Status" - state_topic: "sensor/washer" - unit_of_measurement: "" - -automation: - - alias: Washer complete - trigger: - platform: state - entity_id: sensor.washer_status - from: 'Running' - to: 'Complete' - action: - service: script.turn_on - entity_id: script.washer_complete - - - alias: Washer emptied - trigger: - platform: state - entity_id: sensor.washer_status - from: 'Complete' - to: 'Empty' - action: - service: scene.turn_on - entity_id: scene.normal - -script: - washer_complete: - alias: Washer Complete - sequence: - - alias: Join Notification - service: notify.join - data: - message: "The washing machine has finished its cycle, please empty it!" - - alias: Living Room Lights Blue - service: scene.turn_on - data: - entity_id: scene.blue -``` - -Resources used: - - - [Inspiration and Help with Arduino code](http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi/step13/Washer-Dryer-Smartifier-Water-Leak-Sensor/) - diff --git a/source/_posts/2016-08-07-optimizing-the-home-assistant-mobile-web-app.markdown b/source/_posts/2016-08-07-optimizing-the-home-assistant-mobile-web-app.markdown deleted file mode 100644 index fcb1d762a1..0000000000 --- a/source/_posts/2016-08-07-optimizing-the-home-assistant-mobile-web-app.markdown +++ /dev/null @@ -1,180 +0,0 @@ ---- -layout: post -title: "Optimizing the Home Assistant mobile web app" -description: "A comprehensive list of optimizations done to improve our mobile web application." -date: 2016-08-07 12:36 -0700 -date_formatted: "August 7, 2016" -author: Paulus Schoutsen -comments: true -categories: Technology -og_image: /images/blog/2016-08-optimizing-web-app/performance-diagram.png ---- - -_This blog post will go into detail about the recent performance optimizations that went into the Home Assistant front end. For people not familiar with the app, check out [the demo][demo] and [the source][hap]._ - -TL; DR: Don’t hack the framework, separate responsibilities, ship less, use service workers, use (future) web standards. - -This year at Google I/O I saw Monica from the Polymer team talk about web components and performance. In her talk [she mentions a mantra][mantra] that they use in the Polymer team to make things fast: **Do less and be lazy**. - -Do less and be lazy. It sounds so obvious and it took a while before it started to dawn on me. I think most of the code I write is pretty fast, but I don't often stop to take a harder look at how and when it runs in practice. When do we need the result, can it be postponed? - -And thus started my journey to take a critical look at how the Home Assistant app was working and how to make things faster. Below is the list of the different things that I did to make it fast. - -I hope this list can be useful to other people, as a guide for optimizing their own apps or for avoiding pitfalls when building a new one. - -The first thing to do is to measure. The Home Assistant front end is a mobile web app, so we shouldn’t measure this on a machine with 8 cores and gigabytes of ram but instead measure on devices you expect a mobile web app to run: phones. Below are two timelines recorded with Home Assistant 0.18.2 (pre-optimizations) and Google Chrome 53. **On my Mac the app starts in 1400 milliseconds and on my Nexus 5x in ~6500 milliseconds (~4.5 times slower!).** - -

    - Timeline of loading the front end in Home Assistant 0.18.2 -

    - -Although the app takes 6500 milliseconds to load on my phone, it would perform well afterwards. Still, that initial load is unacceptable. You expect to open an app on your phone and be able to use it, quickly. After I applied all the changes described below, I managed to reduce startup time to 900 milliseconds (-35%) on my Mac and 2400 milliseconds (-63%) on my Nexus 5x. [Check out the demo here.][demo] - -

    - diagram showing old and new loading times next to one another - Timeline of loading the front end in Home Assistant 0.26 -

    - - - -## {% linkable_title Technology %} - -The Home Assistant front end consists of two parts. There is [Home Assistant JS][hajs], which controls all data and interaction between JavaScript and the server. It is a Flux architecture using [NuclearJS] and [ImmutableJS]. The UI is implemented by [Home Assistant Polymer][hap] using [Polymer] and web components. - -# {% linkable_title Don’t hack the framework %} - -I thought to be smart. I split out the JavaScript part of all web components and bundled them separately using Webpack so that I could use ES2015 via BabelJS ([architecture][es2015-arch]). This is not how Polymer components are written and it meant that I was unable to use any of the tooling that is available in the community or easily split up the bundle (more on this later). - -So I went ahead and backported all my web components back from shiny beautiful ES6 to ES5. And you know what? It’s not that bad. Yes, not being able to use the concise object notation and arrow functions make your code more verbose. But in the end it is the same code that is running in browsers. - -Another benefit of having each web component contain their own script tag is that the browser will process them one by one, allowing the browser to render our loading spinner animation in between. - -As you can see in the timelines, we were able to get rid of most of the blocking component loading. - -

    - Timeline of loading the front end before and after the optimization -

    - -# {% linkable_title Separate responsibilities %} - -Whenever you learn a new technology, you feel like you’ve learned a new superpower. Wow, I can do all this with only 2 lines?! I had the same with bundling. - -I was initially very focused on shipping just a single file with everything that my app needed. The entry point would be my main component which would require all of its Flux and UI dependencies. Then, just before it all would be rendered, it would check if there is authentication and start the data fetching. - -This is a very bad pattern. This means that you will not start any data fetching until your UI is ready to render. Instead, you want your data to be fetched as soon as possible, and while the request is out to the server you want the page to load all your UI components. - -To accomplish this I extracted the application core out of the main bundle. In the current optimized version it’s 31.1kb gzip’d. It is loaded before any other scripts so that it can start fetching data as soon as possible. - -

    - Timeline of loading the front end before and after the optimization -

    - -When the data does come back before the UI is done loading, we can process it before we start rendering the UI because of all the web components being processed individually. This means that we don't have to show a loading screen the first time our components render – we can just render the components with the data they require. - -# {% linkable_title Ship less %} - -The theory behind this one is simple: if we manage to ship less code, the browser has to process less code and it will start faster. - -## {% linkable_title Only include the components for the page that you will show %} - -The Home Assistant mobile web application has 10 different panels (pages). Besides that, it also has a dialog for each type of device to show more info. That’s a lot of components and screens of which only a very small set is needed at the start. That means that we are shipping a lot of unnecessary data that the browser has to process before our initial render! - -I broke up each panel of the app into a separate bundle that will be loaded on demand. This saved 250 kilobytes (pre-gzip) on just the embedded map alone! This change, however, required some significant changes to our build process. - -Breaking up an app in JavaScript is complex because each module explicitly imports their dependencies. This has to continue to work in your browser after breaking it up in multiple files. Web components do not have this problem as it’s part of the platform and thus your browser is the registry! An unregistered web component will be rendered as an empty span element until the element gets registered. Loading order is not important. - -```javascript -// Example of the flexibility of web components. -var spinner = document.createElement('paper-spinner'); -spinner.active = true; -document.body.appendChild(spinner); -``` - -Because the browser tracks your web components, creating standalone bundles for parts of the app is easy: - - - Find all dependencies included in the main bundle (using [hydrolysis]) - - Create individual bundles of each panel (page) but filter out the dependencies included in main bundle. - -The [build script][build-html] that bundles and minifies the main bundle and panel bundles is <100 lines. - -## {% linkable_title Change the JavaScript bundler to Rollup %} - -Core.js is still pure JavaScript and requires bundling. In my journey to get a smaller bundle, I went from [Webpack] to Webpack 2 to [Rollup]. At each step the bundle got smaller. Rollup is the big winner here because it doesn’t wrap all your modules in function calls but instead concatenates all files with minimal changes to make it work. This not only reduces the file size but also the loading speed. This is because the JavaScript engine will no longer have to invoke a function to resolve each import, it’s doing less work. This might not mean much for a computer but on a phone, everything counts. - -## {% linkable_title Scrutinize dependencies %} - -If the goal is to ship less, it’s time to take a good look at dependencies. It’s so often that we decide to fall back to yet another NPM package that makes our life a little easier but comes at the cost of size – size usually taken up by functionality that you might never need. - -### {% linkable_title Remove Lodash %} -I realized that I only used a few methods of lodash. Lodash (and previously underscore) used to be one of the dependencies that would always be one of the first things that I would add to any project I start. But I could no longer justify it in the case of Home Assistant. Even with dead tree shaking it was not worth including it. Yes, they support a lot of edge cases but those were not relevant to my use case. And standalone lodash packages are [still huge][lodash.range]. The only thing that I couldn’t replace with a few lines of my own code was debounce. However I found [a 40 line replacement][debounce]. - -### {% linkable_title Replace moment.js with Fecha %} - -Moment.js is one of those power libraries. It is able to handle any date problem that you can throw at it. But this obviously comes at the cost of size. [Fecha] is a date formatting library at ~8% the size of moment.js (only 4.7kb pre-gzip). The only thing that it does not contain is date manipulation, which was something that was not being used. - -# {% linkable_title Use Service worker to instantly load the app %} - -Using a service worker we’re able to store all app components and core javascript in the browser. This means that after their first visit, the browser will only have to go to the network to fetch the latest data from the server. - -Creating a service worker is easy using [sw-precache], a service worker generation tool. - -When a browser does not support service workers, Home Assistant will serve fingerprinted assets that are aggressively cached. Only when the content changes will the client redownload the asset. - -Using fingerprinting with sw-precache required jumping through a few hoops. [The final build script can be found here.][build-sw] - -# {% linkable_title Make it feel fast %} - -This one is more psychological: no one likes staring at a white screen because white screens are ambiguous: are we loading something, is there a crappy connection or maybe even a script error? That’s why it is very important to render something on the screen to show that the rest is being loaded, and as quickly as possible. - -The Home Assistant landing page contains just enough CSS and HTML to render the loading screen minus the animations. - -Now that the app is fast enough, I might swap out moving from a lite loading screen to drawing an empty toolbar. This makes it look like the UI is almost there. - -# {% linkable_title Using a framework build on web standards %} - -_I left this to the end of the list, mainly because I had no influence on this. Polymer just happened to ship an update while I was optimizing the application which gave a big boost to the loading time._ - -By using Polymer we have the ability to use tomorrow’s web standards today. This is powered by polyfills. A polyfill will use JavaScript to simulate the behavior that the web standard would have taken care of. As browsers progress, more work can move from the polyfills back to the browsers. This is great because browsers will be able to optimize the work better and thus be faster. - -Polymer 1.6 was introduced at the end of June and allowed the app to take advantage of native [CSS variables][css-vars] in Chrome and Firefox. It also introduced lazy registration. Both greatly sped up our loading times. - -# {% linkable_title Future optimizations %} - -A lot of optimizations have been applied but this journey will never be over. There are still a lot of opportunities to make things even faster. Some ideas that are on my list to explore: - -- Use shadow DOM instead of shady DOM polyfill. -- Use [closure compiler][closure] to optimize the JavaScript. -- Reduce the number of icons that are loaded. -- Embed initial API response in served page if not using a service worker. -- Reduce size of initial bundle by moving out all things that are not visible for initial paint. For example the dialogs that show more info about entities. -- Prefetch the other pages using `` - -[demo]: /demo -[hap]: https://github.com/home-assistant/home-assistant-polymer -[mantra]: https://www.youtube.com/watch?v=zfQoleQEa4w&feature=youtu.be&t=1380 -[sw-precache]: https://github.com/GoogleChrome/sw-precache -[hydrolysis]: https://github.com/Polymer/hydrolysis -[hajs]: https://github.com/home-assistant/home-assistant-js -[es2015-arch]: https://github.com/home-assistant/home-assistant-polymer/wiki/Using-Polymer-with-ES2015,-Babel-and-NPM -[NuclearJS]: https://optimizely.github.io/nuclear-js/ -[ImmutableJS]: https://facebook.github.io/immutable-js/ -[Polymer]: https://www.polymer-project.org/ -[build-html]: https://github.com/home-assistant/home-assistant-polymer/blob/master/script/vulcanize.js -[Webpack]: https://webpack.github.io/ -[Rollup]: http://rollupjs.org/ -[lodash.range]: https://github.com/lodash/lodash/blob/3.1.7-npm-packages/lodash.range/index.js -[debounce]: https://github.com/component/debounce -[Fecha]: https://github.com/taylorhakes/fecha -[build-sw]: https://github.com/home-assistant/home-assistant-polymer/blob/master/script/sw-precache.js -[css-vars]: https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables -[closure]: https://developers.google.com/closure/compiler/ \ No newline at end of file diff --git a/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown b/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown deleted file mode 100644 index d06a7d2948..0000000000 --- a/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: post -title: "0.26: Foursquare, Fast.com, FFMPEG and GPSD" -description: "Automate based on check ins, slow internet speed or just stream a camera using FFMPEG." -date: 2016-08-13 12:00:00 -0700 -date_formatted: "August 13, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -It's time for 0.26 and it's again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It's been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch. - -This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you'll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to [@Teagan42] for her hard work on this! - - - -- Core: Introduce notion of unit system (deprecates temperature unit option) ([@Teagan42]) -- Front end: Speed improvements ([@balloob]) -- Front end: Improve layout of state dev tool ([@balloob]) -- [Proximity]\: Allow definition of unit of measurement ([@Teagan42]) -- [Flux]\: Add mired and kelvin mode ([@HBDK]) -- Thermostat - [Proliphix]: Support for cooling ([@sdague]) -- Media Player - [LG Netcast TV]: Show screenshot of what is currently playing ([@shmuelzon]) -- Z-Wave improvements ([@jnewland], [@turbokongen]) -- Thermostat - [heat control]: now also able to control an AC ([@mtreinish]) -- Thermostat - [heat control]: allow specifying a minimum duration before switching ([@mtreinish]) -- [InfluxDB]\: Whitelist entities option added ([@tchellomello]) -- Sensor: Serial [particulate matters][particulate] sensors now supported ([@open-homeautomation]) -- Sensor - [Fitbit]: Fix unit system ([@tchellomello]) -- Light - [Flux LED]: Add support for [color and brightness][color] ([@Danielhiversen]) -- Media Player - [Plex]: Now able to report on music ([@abcminiuser]) -- Alarm Control Panel - [Verisure]: Now able to see who changed the alarm ([@persandtrom]) -- Thermostat - [Honeywell]: Add option to read and control HVAC mode ([@Teagan42]) -- [Foursquare] component to receive instant notifications of checkins ([@robbiet480]) -- Camera: New [FFMPEG] platform allows to stream anything through front end ([@pvizeli]) -- Manage [secrets] with new command line script ([@kellerza]) -- Notify - [SMTP]: Allow embedding of images ([@partofthething]) -- Sensor: [OhmConnect] is now supported ([@robbiet480]) -- [panel_custom] component allows the registering of new panels ([@balloob]) -- Light: New [mqtt_json] platform for working with JSON payload ([@corbanmailloux]) -- Sensor: New [Fast.com] platform to measure network bandwidth performance ([@nkgilley]) -- New [pilight] component to control 433 Mz devices ([@DavidLP]) -- Sensor: [GPSD] now supported ([@fabaff]) - -### {% linkable_title Hotfix 0.26.1 - August 14 %} - -- Fix serial_pm config validation ([@open-homeautomation]) -- Check for existence of system mode on Honeywell thermostats ([@mKeRix]) -- Fix unknown unit of measurement for hvac and thermostat component ([@turbokongen]) - -### {% linkable_title Hotfix 0.26.2 - August 15 %} - -- Fix Wemo: have PyWemo play nicely with the latest Requests ([@pavoni]) - -### {% linkable_title Hotfix 0.26.3 - August 19 %} - -- Media Player cover art would not work when an API password was set. Thanks to [@maddox] for reporting it and [@balloob] for the fix. - -### {% linkable_title Breaking changes %} - - - A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon: - -```yaml -# Configuration.yaml example -homeassistant: - # 'metric' for the metric system, 'imperial' for the imperial system - unit_system: metric -``` - -[@maddox]: https://github.com/maddox -[@pavoni]: https://github.com/pavoni -[@mKeRix]: https://github.com/mKeRix -[@abcminiuser]: https://github.com/abcminiuser -[@balloob]: https://github.com/balloob -[@corbanmailloux]: https://github.com/corbanmailloux -[@Danielhiversen]: https://github.com/Danielhiversen -[@DavidLP]: https://github.com/DavidLP -[@fabaff]: https://github.com/fabaff -[@HBDK]: https://github.com/HBDK -[@jnewland]: https://github.com/jnewland -[@kellerza]: https://github.com/kellerza -[@mtreinish]: https://github.com/mtreinish -[@nkgilley]: https://github.com/nkgilley -[@open-homeautomation]: https://github.com/open-homeautomation -[@partofthething]: https://github.com/partofthething -[@persandtrom]: https://github.com/persandtrom -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@sdague]: https://github.com/sdague -[@shmuelzon]: https://github.com/shmuelzon -[@tchellomello]: https://github.com/tchellomello -[@Teagan42]: https://github.com/Teagan42 -[@turbokongen]: https://github.com/turbokongen -[@fabaff]: https://github.com/fabaff - -[Foursquare]: /components/foursquare/ -[OhmConnect]: /components/sensor.ohmconnect/ -[FFMPEG]: /components/camera.ffmpeg/ -[SMTP]: /components/notify.smtp/ -[panel_custom]: /components/panel_custom/ -[Verisure]: /components/alarm_control_panel.verisure/ -[Flux LED]: /components/light.flux_led/ -[InfluxDB]: /components/influxdb/ -[particulate]: /components/sensor.serial_pm/ -[LG Netcast TV]: /components/media_player.lg_netcast/ -[mqtt_json]: /components/light.mqtt_json/ -[Fast.com]: /components/sensor.fastdotcom/ -[pilight]: /components/pilight/ -[GPSD]: /components/sensor.gpsd/ -[heat control]: /components/thermostat.heat_control/ -[Proximity]: /components/proximity/ -[Flux]: /components/switch.flux/ -[Proliphix]: /components/thermostat.proliphix/ -[Fitbit]: /components/sensor.fitbit/ -[Plex]: /components/media_player.plex/ -[Honeywell]: /components/thermostat.honeywell/ -[Secrets]: /topics/secrets/ diff --git a/source/_posts/2016-08-16-we-have-apps-now.markdown b/source/_posts/2016-08-16-we-have-apps-now.markdown deleted file mode 100644 index 00ee02e460..0000000000 --- a/source/_posts/2016-08-16-we-have-apps-now.markdown +++ /dev/null @@ -1,129 +0,0 @@ ---- -layout: post -title: "We Have Apps Now" -description: "A new subsystem that allows automations to be coded using Python" -date: 2016-08-16 06:00:00 -0400 -date_formatted: "August 16, 2016" -author: Andrew Cockburn -comments: true -categories: How-To ---- - -I have been working on a new subsystem to complement Home Assistant's Automation and Scripting components. `AppDaemon` is a python daemon that consumes events from Home Assistant and feeds them to snippets of python code called "Apps". An App is a Python class that is instantiated possibly multiple times from `AppDaemon` and registers callbacks for various system events. It is also able to inspect and set state and call services. The API provides a rich environment suited to home automation tasks that can also leverage all the power of Python. - - - -## {% linkable_title Another Take on Automation %} - -If you haven't yet read Paulus' excellent Blog entry on [Perfect Home Automation](/blog/2016/01/19/perfect-home-automation/) I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the "Automation" in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation to bring this all together in the vast and chaotic ecosystem that is the "Internet of Things". - -So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks: - -- Can the system respond to presence or absence of people? -- Can I turn a light on at Sunset +/- a certain amount of time? -- Can I arrive home in light or dark and have the lights figure out if they should be on or off? -- As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly? -- Is it open and expandable? -- Does it run locally without any reliance on the cloud? - -In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and its Restful API. - -So why `AppDaemon`? `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 5 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, and 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 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 %} - -The best way to show what `AppDaemon` does is through a few simple examples. - -### {% linkable_title Sunrise/Sunset Lighting %} - -Lets 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 2 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 appapi - -class OutsideLights(appapi.AppDaemon): - - def initialize(self): - self.run_at_sunrise(self.sunrise_cb, 0) - self.run_at_sunset(self.sunset_cb, 0) - - def sunrise_cb(self, args, kwargs): - self.turn_on(self.args["off_scene"]) - - def sunset_cb(self, args, 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. - -### {% linkable_title 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 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 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.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 lets extend this with a somewhat artificial example to show something that is simple in `AppDaemon` but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 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 10 iterations. - -```python -import 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.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 provided 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 logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. - -I have spent the last few weeks moving all of my (fairly complex) automations over to `APPDaemon` and so far it is working very reliably. - -Some people will maybe look at all of this and say "what use is this, I can already do all of this", and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations. - -If this has whet your appetite, feel free to give it a try. You can find it, [here](https://github.com/acockburn/appdaemon), including full installation instructions, an API reference, and a number of fully fleshed out examples. - -Happy Automating! diff --git a/source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown b/source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown deleted file mode 100644 index b62133e82d..0000000000 --- a/source/_posts/2016-08-19-github-style-calendar-heatmap-of-device-data.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post -title: "Github-style calendar heatmap of device data" -description: "Generating a Github-style calendar heatmap from your device data." -date: 2016-08-19 06:00:00 +0000 -date_formatted: "August 19, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To IoT-Data -og_image: /images/blog/2016-08-data-exploration/heatmap.png ---- - - -Thanks to [Anton Kireyeu](https://github.com/kireyeu) we are able to present another awesome [Jupyter notebook]. I guess that you all know the graph which Github is using to visualize your commits per day over a time-line. It's a so-called [heatmap]. If there are more commits, it's getting hotter. The latest [notebook][nb-prev] is capable to do the same thing for your devices. To be more precise, for the hours your devices are home. - -

    - -Heatmap -

    - -[heatmap]: https://en.wikipedia.org/wiki/Heat_map -[Jupyter notebook]: https://jupyter.org/ -[nb-prev]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-2/DataExploration-2.ipynb - diff --git a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown deleted file mode 100644 index de09817dbd..0000000000 --- a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown +++ /dev/null @@ -1,272 +0,0 @@ ---- -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-28 20:30:25 UTC -date_formatted: "August 28, 2016" -author: Robbie Trencheny -author_twitter: Robbie -comments: true -categories: Release-Notes ---- - -This week's blog post could only be possibly described by exactly one hashtag: - -# #Amazing - -or maybe#supersized - -Keep reading to see what **#Amazing** things we have in store for you this week 😄! And make sure you read all the way to the end, because I left a present down there for those committed few among you :) - -But first... - -## {% linkable_title Some general housekeeping %} - -Paulus ([@balloob]) is on vacation in Europe this week, so you will all have to deal with me, Robbie ([@robbiet480]) for this release blog post. Don't worry, Paulus will be back to tearing apart your pull requests in no time 😈. - -Special thanks to my awesome helpers for this week's release who are looking over my shoulder to make sure I'm crossing my t's and dotting my i's: [@Teagan42], [@infamy] and [@fabaff]. - -For my next trick, let's hand out some... - -## {% linkable_title Trophies %} - -I felt that I had to 1-up Paulus ([@balloob]) somehow with his 500,000 pageviews stat he shared in the [0.26 blog post](/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/), so I pushed myself and our development community as a whole super hard the last two weeks to put a lot of love into Home Assistant to bring you not just one, but six **#Amazing** stats for this release. As of 0.27, we have now surpassed the following milestones: - -* [10,000](https://travis-ci.org/home-assistant/home-assistant/builds/154660811) builds on Travis (congrats to [@BluGeni]) -* [3,000](https://github.com/home-assistant/home-assistant/pull/3000) issues and pull requests (thanks [@kellerza]!) -* [2,000](https://github.com/home-assistant/home-assistant/pull/2991) pull requests alone (awesome [@fabaff]!!) -* 900 forks on Github! - -In addition, - -* We are very close to 4,000 stars on Github! -* [I'm now #5 contributor by most commits!!!](https://github.com/home-assistant/home-assistant/graphs/contributors) Hey wait, how'd this get in here 😳... - -Now that we have that great news out of the way, onto this week's release which is going to keep the **#Amazing** gravy train rolling right along and get to the stuff you all _really_ are here for. - -## {% linkable_title 0.27 %} - -While this release is **#Amazing**, we had to break a few eggs (now you understand the title reference!) to make a beautiful omelette (using home automation obviously) so some platforms and components have needed to introduce breaking changes. Please make sure to read the [Breaking Changes](#breaking-changes) section below. - -### {% linkable_title Hue Bridge Emulation %} -Thanks to [@mgbowen] we now have the functionality previously provided by [@blocke]'s [ha-local-echo](https://github.com/blocke/ha-local-echo) [built right into Home Assistant](/components/emulated_hue/)! This means that for those of you with devices that either lack or have a subpar integration with Home Assistant (looking at you Amazon Echo) you can now have a better experience by having your Home Assistant pretend to be a Hue Bridge. Personally, I have used [@auchter]'s [Haaska](https://github.com/auchter/haaska) previously but found that it was slow to respond and sometimes failed entirely. With the new [`emulated_hue`](/components/emulated_hue/) component, you can have local control of entities through Amazon Echo. - -### {% linkable_title Notification improvements %} -We have some excellent upgrades to the notification system coming to you in 0.27, courtesy of me, [@robbiet480]. - -#### {% linkable_title HTML5 Push Notifications %} -This release adds support for [HTML5] push notifications on Chrome/Firefox/Opera on both desktop and Android devices. This means that you can send a notification to your phone even when your Home Assistant is not open in your mobile browser. When using Chrome you can even include 2 action buttons so that you can control your Home Assistant from your phone's lock screen, allowing you to do things like sound alarms or unlock your front door, all without leaving the notification. Thanks again to me ([@robbiet480]) and Paulus ([@balloob]) for all the hard work on this! - -

    - -

    - -#### {% linkable_title Notification Groups %} -Using the new notify `group` platform allows you to cut down a lot of duplicate automation logic by combining multiple notification platforms and `target`s into a single notify service. Check out the [docs](/components/notify.group/) for more info. - -#### {% linkable_title `target` is no longer needed! %} -For platforms that support it, starting with the new HTML5 platform, any `target`s that are available will be exposed as individual services, so no more having to remember which `target`s to use. Please note that the existing services also still exist so you can keep using `target` if you wish. - -### {% linkable_title Validate configuration before restarting Home Assistant %} -Ever restarted Home Assistant to test a configuration change just to find out there is a validation error? Well, not anymore! [@kellerza] has added a command line script that will validate your configuration as if you started Home Assistant. - -```bash -$ hass --script check_config -``` - -### {% linkable_title Configuration validation %} -This release includes a big push on making sure all platforms contain proper configuration validation. This should help in getting your configuration right. Thanks to [@fabaff], [@pavoni], [@pvizeli], [@nkgilley] for all the hard work on this, you all rock! - -

    - -

    - -### {% linkable_title FFMpeg motion/noise sensing %} -It's now possible to use [FFMpeg] to monitor a video stream and detect motion thanks to a new binary sensor platform by [@pvizeli]. - -### {% linkable_title Component clean up - Thermostat & HVAC -> Climate. Rollershutter & Garage Door -> Cover. %} -Due to our wild growth we ended up with a few components that had a lot of overlapping functionality. [@turbokongen] took on the hard job on merging them. Thermostat and HVAC platforms are now combined under the new Climate component. Rollershutter and Garage Door platforms are now combined under the new Cover component. You can easily upgrade by just swapping out the name. For example replace `thermostat` with `climate`. The old components have been deprecated and will be removed in the near future. - -### {% linkable_title A new `fan` component %} -Along with the new `climate` component, [@Teagan42] and I ([@robbiet480]) decided we needed something simpler to just control a fan. Currently it has support for controlling Insteon fans. MQTT support will appear in 0.28.0. I tried to get it implemented before 0.27.0 but spent too long writing this blog post 😢. - -### {% linkable_title All changes %} - - - -- Merge thermostat and HVAC components into new [climate] component ([@turbokongen]) -- Merge rollershutter and garage door components into new [cover] component ([@turbokongen]) -- Alarm Control Panel - Manual: Allow returning to previous state after [trigger] ([@tobiebooth]) -- Sensor - DHT: Allow range [checking] ([@open-homeautomation]) -- Light entities will now [expose] their features ([@shmuelzon]) -- Sensor: Monitor HP ILO sensors on [HP] servers ([@Juggels]) -- Sensor: Monitor [Fritzbox] Calls ([@DavidMStraub]) -- Notify: LlamaLab [Automate] is now supported ([@danielperna84]) -- Sensor: Serial [CO2] sensors now supported ([@open-homeautomation]) -- Sensor: MQTT room [presence] detection ([@mKerix]) -- Notify: New group platform allows [grouping] notify targets across platforms ([@robbiet480]) -- [HTML5] push notifications ([@robbiet480], [@balloob]) -- Weather: [Wunderground] now supported ([@arsaboo], [@Teagan42]) -- New check config script to test validity before restarting HA ([@kellerza]) -- Binary Sensor: Allow [monitoring] a camera feed using FFMpeg ([@pvizeli]) -- Cover: Z-Wave platform now supports [positions] ([@nunofgs]) -- Device tracker: allow using [Gravatar] for entity picture ([@robbiet480]) -- Notify: platforms with known targets will expose them as standalone services ([@robbiet480]) -- Camera: [MJPEG] and [Generic] camera's can now authenticate using digest auth ([@meatz]) -- Weather: Forecast.io now can show daily temp/precip [forecast] values ([@DavidMStraub]) -- Media Player: WebOS TV now allows [customizing][webos] the sources ([@roidayan]) -- Device tracker: Allow tracking devices using [Bluetooth] Low-Energy ([@open-homeautomation]) -- Notify: Ensure [Slack] messages appear as correct user ([@technicalpickles]) -- YAML: [Secrets] will look for values in all parents folders up to the config root folder ([@Teagan42]) -- Camera: Generic camera now supports [template] support ([@balloob]) -- Slack: Allow sending [attachments] ([@technicalpickles]) -- Device Tracking: TP-Link Archer C7 5 GHz devices will now also be [found] ([@dpford]) -- Z-Wave: New rename [node] service added ([@jnewland]) -- Wink: [Bug] fixes ([@w1ll1am23]) -- Homematic: new device and controller variable [support] ([@danielperna84], [@pvizeli], [@mcdeck]) -- Allow emulating a [Hue] bridge to control entities ([@mgbowen]) -- New [Fan][fan] component ([@Teagan42], [@robbiet480]) - -### {% linkable_title Breaking changes %} -- Ecobee3 occupancy sensors have moved from sensor platform to binary sensor platform. -- Forecast.io entity IDs are now like `sensor.forecastio_temperature`. Previously they were like `sensor.weather_temperature`. Apologies for this change, but we needed to make Forecast.io more generic now that we have many weather platforms. -- The [Loop Energy][Loop] sensor configuration format changed slightly, please reformat based on the revised documentation. -- The configuration for the [SABnzbd] sensor has slightly changed. The prefix `type:` is no longer required for monitored variables. -- The [IMAP] sensor now uses `username` instead of `user`. -- The [NZBGet] sensor has had so many changes I can't list them all. Please refer to the documentation for more info. - -### {% linkable_title Deprecations %} -- Using the `thermostat` and `hvac` components has been deprecated. Please migrate to the new `climate` component. (just change the component name, the configurations are compatible) -- Using the `rollershutter` and `garage_door` components have also been deprecated. Please migrate to the new `cover` component. (just change the component name, the configurations are compatible) - -## {% linkable_title Finishing up %} - -Thanks all for sticking with me to the end. I'll be taking over a lot of Paulus's ([@balloob]) work while he is gone, but as I said, don't worry because he'll be back well before 0.28.0 comes out. Hopefully you didn't find this jovial blog post too jarring from our standard style, I just wrote a lot of this at 2am after being awake for almost 20 hours, so I'm a little loopy hahaha 😴. - -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 [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 Discord and in your pull request comments! - --- Robbie - -(p.s. To those of you that scrolled directly to the bottom to get your present, just know that you didn't earn it like the others did. 😄) - -## {% linkable_title Hotfix 0.27.1 - August 30 %} - -- Migrate APCUPSd to voluptuous ([@fabaff]) -- Ecobee operation mode fix ([@turbokongen]) -- update ha-ffmpeg version to 0.9 ([@pvizeli]) -- Device tracker component & platform validation. No more home_range. ([@kellerza]) -- Added option to use effect:random for Flux Led light bulbs ([@tchellomello]) -- Use voluptuous for smtp ([@pvizeli]) -- Upgrade sendgrid to 3.2.10 ([@fabaff]) -- Upgrade TwitterAPI to 2.4.2 ([@fabaff]) -- Fix bug in wemo discovery caused by voluptuous addition. ([@pavoni]) -- Bug fix for asuswrt device_tracker. ([@Danielhiversen]) -- Remove units for humidity in Wundeground sensor ([@arsaboo]) -- Fix media_player descriptions and select_source ([@MartinHjelmare]) -- Allow user to configure server id to perform speed test against ([@Teagan42]) -- Bug fix for asuswrt device_tracker. ([@Danielhiversen]) -- More Ecobee operation mode fixes ([@turbokongen]) -- Map Modes to setpoint indexes ([@turbokongen]) -- fix voluptuous and cover autodiscovery ([@pvizeli]) -- Fixes wrong statevalue and problem with zwave setpoint ([@turbokongen]) - -## {% linkable_title Hotfix 0.27.2 - September 3 %} -### home-assistant - -- Ble fix ([#3019](https://github.com/home-assistant/home-assistant/pull/3019)) - ([@open-homeautomation](https://github.com/open-homeautomation)) -- Reset insteon hub ([#3062](https://github.com/home-assistant/home-assistant/pull/3062)) - ([@Teagan42](https://github.com/Teagan42)) -- Host should be optional for apcupsd component ([#3072](https://github.com/home-assistant/home-assistant/pull/3072)) - ([@Danielhiversen](https://github.com/Danielhiversen)) -- Zwave climate Bugfix: if some setpoints have different units, we should fetch the o… ([#3078](https://github.com/home-assistant/home-assistant/pull/3078)) - ([@turbokongen](https://github.com/turbokongen)) -- Bugfix unit fix ([#3083](https://github.com/home-assistant/home-assistant/pull/3083)) - ([@turbokongen](https://github.com/turbokongen)) -- Ecobee humidity slider ([#3088](https://github.com/home-assistant/home-assistant/pull/3088)) - ([@turbokongen](https://github.com/turbokongen)) -- Zwave Climate Bugfix: If device was off target temp was null. Default to Heating setpoint ([#3091](https://github.com/home-assistant/home-assistant/pull/3091)) - ([@turbokongen](https://github.com/turbokongen)) -- Climate and cover bugfix ([#3097](https://github.com/home-assistant/home-assistant/pull/3097)) - ([@turbokongen](https://github.com/turbokongen)) -- Add missing docstrings (fix PEP257 issues) ([#3098](https://github.com/home-assistant/home-assistant/pull/3098)) - ([@fabaff](https://github.com/fabaff)) -- Allow None MAC to be loaded from known_devices ([#3102](https://github.com/home-assistant/home-assistant/pull/3102)) - ([@kellerza](https://github.com/kellerza)) -- fix homematic climate implementation ([#3114](https://github.com/home-assistant/home-assistant/pull/3114)) - ([@pvizeli](https://github.com/pvizeli)) -- Fixed Homematic cover ([#3116](https://github.com/home-assistant/home-assistant/pull/3116)) - ([@danielperna84](https://github.com/danielperna84)) -- Bugfix. climate and covermqt ([#3130](https://github.com/home-assistant/home-assistant/pull/3130)) - ([@turbokongen](https://github.com/turbokongen)) - -### home-assistant-polymer - -- Fix missing attributes on the climate and HVAC more info cards ([7e455e2](https://github.com/home-assistant/home-assistant-polymer/commit/7e455e2be1cb7cc4f55628b063019bea548a3182)) - ([@robbiet480](https://github.com/robbiet480)) -- Add a default icon for the fan component ([#101](https://github.com/home-assistant/home-assistant-polymer/pull/101)) - ([@robbiet480](https://github.com/robbiet480)) - -[@arsaboo]: https://github.com/arsaboo -[@auchter]: https://github.com/auchter -[@balloob]: https://github.com/balloob -[@blocke]: https://github.com/blocke -[@BluGeni]: https://github.com/BluGeni -[@Danielhiversen]: https://github.com/Danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@DavidMStraub]: https://github.com/DavidMStraub -[@dpford]: https://github.com/dpford -[@fabaff]: https://github.com/fabaff -[@infamy]: https://github.com/infamy -[@jnewland]: https://github.com/jnewland -[@Juggels]: https://github.com/Juggels -[@kellerza]: https://github.com/kellerza -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@mcdeck]: https://github.com/mcdeck -[@meatz]: https://github.com/meatz -[@mgbowen]: https://github.com/mgbowen -[@mKerix]: https://github.com/mKerix -[@nkgilley]: https://github.com/nkgilley -[@nunofgs]: https://github.com/nunofgs -[@open-homeautomation]: https://github.com/open-homeautomation -[@pavoni]: https://github.com/pavoni -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@roidayan]: https://github.com/roidayan -[@roidayan]: ttps://github.com/roidayan -[@shmuelzon]: https://github.com/shmuelzon -[@tchellomello]: https://github.com/tchellomello -[@Teagan42]: https://github.com/Teagan42 -[@technicalpickles]: https://github.com/technicalpickles -[@tobiebooth]: https://github.com/tobiebooth -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 - -[checking]: /components/sensor.dht/ -[FFMpeg]: /components/binary_sensor.ffmpeg/ -[Climate]: /components/climate/ -[NZBGet]: /components/sensor.nzbget/ -[SABnzbd]: /components/sensor.sabnzbd/ -[HP]: /components/sensor.hp_ilo/ -[Fritzbox]: /components/sensor.fritzbox_callmonitor/ -[webos]: /components/media_player.webostv/ -[HTML5]: /components/notify.html5/ -[Gravatar]: /components/device_tracker/ -[Loop]: /components/sensor.loop_energy/ -[cover]: /components/cover/ -[climate]: /components/climate/ -[expose]: /components/light/ -[Automate]: /components/notify.llamalab_automate/ -[Secrets]: /topics/secrets/ -[trigger]: /components/alarm_control_panel.manual/ -[CO2]: /components/sensor.mhz19/ -[presence]: /components/sensor.mqtt_room -[grouping]: /components/notify.group/ -[Wunderground]: /components/sensor.wunderground/ -[monitoring]: /components/binary_sensor.ffmpeg/ -[MJPEG]: /components/camera.mjpeg/ -[Generic]: /components/camera.generic/ -[positions]: /components/cover.zwave/ -[forecast]: /components/sensor.forecast/ -[Bluetooth]: /components/device_tracker.bluetooth_le_tracker/ -[Slack]: /components/notify.slack/ -[template]: /components/camera.generic/ -[Bug]: /components/wink/ -[support]: /components/homematic/ -[node]: /components/zwave/ -[found]: /components/device_tracker.tplink/ -[attachments]: /components/notify.slack/ -[Hue]: /components/emulated_hue/ -[fan]: /components/fan/ -[IMAP]: /components/sensor.imap/ diff --git a/source/_posts/2016-08-31-esp8266-and-micropython-part2.markdown b/source/_posts/2016-08-31-esp8266-and-micropython-part2.markdown deleted file mode 100644 index bf465dc669..0000000000 --- a/source/_posts/2016-08-31-esp8266-and-micropython-part2.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: post -title: "ESP8266 and MicroPython - Part 2" -description: "Using MicroPython and MQTT on ESP8266 based devices and Home Assistant." -date: 2016-08-31 06:17:25 +0200 -date_formatted: "August 31, 2016" -author: Fabian Affolter -comments: true -categories: How-To MQTT ESP8266 Micropython -og_image: /images/blog/2016-07-micropython/social.png ---- - - -So, part 1 of [ESP8266 and MicroPython](/blog/2016/07/28/esp8266-and-micropython-part1/) was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance. - - - -Beside [HTTP POST](https://en.wikipedia.org/wiki/POST_(HTTP)) requests, MQTT is the quickest way (from the author's point of view) to publish information with DIY devices. - -You have to make a decision: Do you want to pull or to [poll](https://en.wikipedia.org/wiki/Polling_(computer_science)) the information for the sensor? For slowly changing values like temperature it's perfectly fine to wait a couple of seconds to retrieve the value. If it's a motion detector the state change should be available instantly in Home Assistant or it could be missed. This means the sensor must take initiative and send the data to Home Assistant. - -An example for pulling is [aREST](/components/sensor.arest/). This is a great way to work with the ESP8266 based units and the Ardunio IDE. - -### {% linkable_title MQTT %} - -You can find a simple examples for publishing and subscribing with MQTT in the [MicroPython](https://github.com/micropython/micropython-lib) library overview in the section for [umqtt](https://github.com/micropython/micropython-lib/tree/master/umqtt.simple). - -The example below is adopted from the work of [@davea](https://github.com/davea) as we don't want to re-invent the wheel. The configuration feature is crafty and simplyfies the code with the usage of a file called `/config.json` which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds. - - -```python -import machine -import time -import ubinascii -import webrepl - -from umqtt.simple import MQTTClient - -# These defaults are overwritten with the contents of /config.json by load_config() -CONFIG = { - "broker": "192.168.1.19", - "sensor_pin": 0, - "client_id": b"esp8266_" + ubinascii.hexlify(machine.unique_id()), - "topic": b"home", -} - -client = None -sensor_pin = None - -def setup_pins(): - global sensor_pin - sensor_pin = machine.ADC(CONFIG['sensor_pin']) - -def load_config(): - import ujson as json - try: - with open("/config.json") as f: - config = json.loads(f.read()) - except (OSError, ValueError): - print("Couldn't load /config.json") - save_config() - else: - CONFIG.update(config) - print("Loaded config from /config.json") - -def save_config(): - import ujson as json - try: - with open("/config.json", "w") as f: - f.write(json.dumps(CONFIG)) - except OSError: - print("Couldn't save /config.json") - -def main(): - client = MQTTClient(CONFIG['client_id'], CONFIG['broker']) - client.connect() - print("Connected to {}".format(CONFIG['broker'])) - while True: - data = sensor_pin.read() - client.publish('{}/{}'.format(CONFIG['topic'], - CONFIG['client_id']), - bytes(str(data), 'utf-8')) - print('Sensor state: {}'.format(data)) - time.sleep(5) - -if __name__ == '__main__': - load_config() - setup_pins() - main() -``` - -Subscribe to the topic `home/#` or create a [MQTT sensor](/components/sensor.mqtt/) to check if the sensor values are published. - -```bash -$ mosquitto_sub -h 192.168.1.19 -v -t "home/#" -``` - -```yaml -sensor: - - platform: mqtt - state_topic: "home/esp8266_[last part of the MAC address]" - name: "MicroPython" -``` - -[@davea](https://github.com/davea) created [sonoff-mqtt](https://github.com/davea/sonoff-mqtt). This code will work on ESP8622 based devices too and shows how to use a button to control a relay. - 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 deleted file mode 100644 index 805131a325..0000000000 --- a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown +++ /dev/null @@ -1,160 +0,0 @@ ---- -layout: post -title: "0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats" -description: "No Home Assistant restart for reloading automations and groups, Automatic car tracking, Pi-Hole and battery details, and bugfixes for climate and cover" -date: 2016-09-10 08:00:00 +0200 -date_formatted: "September 10, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes ---- - -It's already time for 0.28 thanks to our super short release cycles. Now, it' official...we hit 4000 stars on Github. That's amazing. Sorry, not as amazing as all the stuff that was going on for 0.27 but still pretty awesome. - -### {% linkable_title Reload automation rules %} - -This release brings you a huge improvement of the [automation] and [group] handling. Both can be reloaded without a Home Assistant restart by calling their new reload services. The automations can be controlled directly from the frontend. - -

    - -

    - -### {% linkable_title Raspberry Pi installation guide %} -Singleboard computers are very popular to run Home Assistant. To support this fact, the [installation documentation][rpi] for the Raspberry Pi devices was re-written to get users started as quickly as possible. [@Landrash] took the lead with on this tasks with help from [@kellerza] and [@MartinHjelmare]. - -### {% linkable_title Climate and cover %} -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 existing 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. Approximately 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! - -### {% linkable_title All changes %} - - - -- Light: Added bitfield to Flux LED since we are supporting effects ([@tchellomello]) -- Device tracker: [Owntracks] waypoint import ([@pavoni]) -- Climate: A lot of bugfix ([@turbokongen], [@pvizeli], [@djbanks]) -- Notify: Improvement of the title handling ([@lwis]) -- RFXtrx: Sensor cleanup ([@turbokongen]) -- Device tracker: Fix for BLE device tracker ([@open-homeautomation]) -- Device tracker: Allow 'None' MAC addresses to be loaded from `known_devices` file ([@kellerza]) -- Cover: Bugfixes ([@turbokongen], [@danielperna84]) -- Sensor: Support for displaying details about [crypto currencies][Coinmarketcap] ([@fabaff]) -- Device tracker: Support for [automatic] to track your vehicles ([@Teagan42]) -- Devie tracker: Add exclude option to [Nmap] device tracker ([@danieljkemp]) -- Device tracker: Improved login errors for Asus device tracker ([@kellerza]) -- Sensor: Support for displaying the status of [Xbox] Live accounts ([@mKerix]) -- Notify: Adding `link_names` for sending Slack message ([@salt-lick]) -- Binary sensor: Add the occupancy sensor class ([@robbiet480]) -- Fan: Add supoort for [MQTT fans][mqtt-fan] ([@robbiet480]) -- Docs: Add Sphinx API doc generation ([@bbangert]) -- Core: Allow reloading automation without restart ([@balloob]) -- Sensor: Added scale and offset to the [Temper] sensor ([@mKerix]) -- Sensor: New support for [Trend] sensor ([@pavoni]) -- Device tracker: Keep looking for new BLE devices ([@Bart274]) -- Switch: Added device state attributes and support for legacy firmware for D-Link switches ([@LinuxChristian]) -- Sensor: Improve 1-Wire device family detection ([@Ardetus]) -- Modbus: Update to be thread safe ([@persandstrom]) -- Camera: FFMpeg is abale to get the images ([@pvizeli]) -- Core: Reload groups without restart ([@balloob]) -- Core: Fix remove listener ([@balloob]) -- Sensor: Support for monitoring your [battery] on a Linux host ([@fabaff]) -- Core: Add support for complex template structures to `data_template` ([@pvizeli]) -- `check_config`: Improve yaml fault tolerance and handle border cases ([@kellerza]) -- Core: Add additional [template] for custom date formats ([@lwis]) -- Sensor: Support for getting stats from Pi-Hole systems ([@fabaff]) -- Modbus: New `write_registers` [Modbus] service ([@persandstrom]) -- Device tracker: Fix TP-Link Archer C7 long passwords ([@snikch]) - -### {% linkable_title Hotfix 0.28.1 - September 12 %} - -- Fix: Simplisafe alarm control panels accept any string for code ([@tchellomello]) -- Fix: Z-Wave would sometimes not detect all thermostats ([@turbokongen]) -- Fix: Automatic device tracker when 2 or more cars are tracked ([@teagan42]) -- Fix: Group ordering is now based on config again ([@balloob], [@kellerza]) - -### {% linkable_title Hotfix 0.28.2 - September 13 %} - -- Light - pilight: Fix send RF code ([@DavidLP]) -- Recorder: Fix specifying SQLite ([@pvizeli]) -- Wink: Fix garage door detection ([@turbokongen]) -- Climate - Ecobee: Fix inverted high and low temperatures ([@turbokongen]) -- Allow changing covers using scenes ([@nvella]) -- Device tracker - Automatic: Fix polling ([@teagan42]) - -### {% linkable_title Breaking changes %} - -- [OpenweatherMap] entity IDs are now like `sensor.owm_temperature`. Previously they were like `sensor.weather_temperature`. Apologies for this change, but we needed to make OpenWeatherMap more generic now that we have many weather platforms. -- Updates of configuration variables due to configuration check or alignment with other platforms. Please update your configuration entries according to the documentation: - - [OctoPrint] component - - mFi platform ([switch][mfi-switch] and [sensor][mfi-sensor]) - - NX584 Alarm Control Panel - - Mediaplayer platforms [FireTV], [Kodi] and [MPD] - - [switch][command-line-switch] and the [cover][command-line-cover] `command_line` platforms -- 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://discord.gg/c5DvZ4e). - - -[@DavidLP]: https://github.com/DavidLP -[@nvella]: https://github.com/nvella -[@Ardetus]: https://github.com/Ardetus -[@arsaboo]: https://github.com/arsaboo -[@auchter]: https://github.com/auchter -[@balloob]: https://github.com/balloob -[@Bart274]: https://github.com/Bart274 -[@bbangert]: https://github.com/bbangert -[@danieljkemp]: https://github.com/danieljkemp -[@danielperna84]: https://github.com/danielperna84 -[@djbanks]: https://github.com/djbanks -[@fabaff]: https://github.com/fabaff -[@infamy]: https://github.com/infamy -[@jnewland]: https://github.com/jnewland -[@kellerza]: https://github.com/kellerza -[@Landrash]: https://github.com/Landrash -[@LinuxChristian]: https://github.com/LinuxChristian -[@lwis]: https://github.com/lwis -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@mKerix]: https://github.com/mKerix -[@nkgilley]: https://github.com/nkgilley -[@open-homeautomation]: https://github.com/open-homeautomation -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@salt-lick]: https://github.com/salt-lick -[@tchellomello]: https://github.com/tchellomello -[@Teagan42]: https://github.com/Teagan42 -[@technicalpickles]: https://github.com/technicalpickles -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@snikch]: https://github.com/snikch - -[modbus]: /components/modbus/ -[rpi]: /getting-started/installation-raspberry-pi/ -[MPD]: /components/media_player.mpd/ -[Coinmarketcap]: /components/sensor.coinmarketcap -[template]: /topics/templating/ -[battery]: /components/sensor.linux_battery -[group]: /components/group/ -[automation]: /components/automation/ -[Temper]: /components/sensor.temper/ -[mqtt-fan]: /components/fan.mqtt/ -[Xbox]: /components/sensor.xbox_live/ -[Nmap]: /components/device_tracker.nmap_tracker/ -[automatic]: /components/device_tracker.automatic/ -[Owntracks]: /components/device_tracker.owntracks/ -[OpenweatherMap]: /components/sensor.openweathermap/ -[OctoPrint]: /components/octoprint/ -[mfi-switch]: /components/switch.mfi/ -[mfi-sensor]: /components/sensor.mfi/ -[FireTV]: /components/media_player.firetv/ -[Kodi]: /components/media_player.kodi/ -[command-line-switch]: /components/switch.command_line/ -[command-line-cover]: /components/cover.command_line/ diff --git a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown b/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown deleted file mode 100644 index 2533a175c9..0000000000 --- a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown +++ /dev/null @@ -1,190 +0,0 @@ ---- -layout: post -title: "0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants" -description: "Move to asynchronous, Support for SleepIQ, OpenALPR, and EmonCMS, and other goodies." -date: 2016-09-29 03:04:05 +0000 -date_formatted: "September 29, 2016" -author: Paulus Schoutsen & Fabian Affolter -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of **50** different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum! - -This is a big release as we've completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware. - -This all changed when [@bbangert] came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases. - -### {% linkable_title SleepIQ and OpenALPR %} - -There now is support for two new super cool things: Beds and license plates. [@technicalpickles] created a [SleepIQ] component that let you monitor the sensor data of your bed. [@pvizeli] has added license plate recognition based on [OpenALPR]! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to [@pvizeli] for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!). - -### {% linkable_title Configuration validation %} - -On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues. - -### {% linkable_title Delayed Release %} - -As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: [@bbangert], [@turbokongen], [@lwis], [@kellerza], [@technicalpickles], [@pvizeli], [@persandstrom] and [@joyrider3774]. I am grateful to have all of you as part of the Home Assistant community. - -### {% linkable_title Hide automation rules %} - -Since 0.28 [automation rules](/blog/2016/09/10/notify-group-reload-api-pihole/#reload-automation-rules) can be reloaded directly from the frontend. By default all automation rules are shown. If you want to [hide an automation rule](/getting-started/automation-create-first/), use `hide_entity: True`. - -### {% linkable_title All changes %} - - - -- Convert core from thread-based to be async-based ([@bbangert], [@balloob]) -- New [SleepIQ] support ([@technicalpickles]) -- Cover: [Vera] is now supported ([@pavoni]) -- Climate: Vera [climate] devices are now supported ([@robjohnson189]) -- Climate: [MySensors] is now supported ([@kaustubhphatak]) -- Control Home Assistant with [keyboard shortcuts][keyboard_remote] ([@deisi]) -- More voluptuous config validations ([@fabaff], [@kellerza], [@balloob]) -- New [Nuimo] controller support added ([@gross1989]) -- Sensor: [BOM] Weather component ([@tinglis1]) -- Automation: Option added to hide entity ([@milaq]) -- Sensor: [Emoncms] feeds now supported ([@joyrider]) -- Sensor: Mi Flora [plant] sensor now supported ([@open-homeautomation]) -- Logbook: Allow [filtering] entities and hide hidden entities ([@wokar]) -- Notify: [Kodi] support added ([@chrom3]) -- Notify: Support for [Simplepush] added ([@fabaff]) -- Sensor: [KNX] sensors now supported ([@daBONDi]) -- [Wink] improvements ([@w1ll1am23]) -- [ISY] improvements ([@Teagan42]) -- Link to relevant docs in config validation error messages ([@fabaff]) -- Greatly improve the performance of templates ([@balloob], [@pvizeli]) -- Notify - [Slack]: Support for username/icon ([@Khabi]) -- MQTT room detection: Away [timeout] now supported ([@mKeRix]) -- Climate: [Nest] can now control the fan ([@jawilson]) -- Modbus: Major cleanup for [Modbus] switches and sensors ([@persandstrom]) -- HTTP: Allow [passwordless] logins from whitelisted IP addresses ([@Danielhiversen]) -- Sensor: Yahoo! Finance [stocks] now supported ([@tchellomello]) -- Sensor: Set value based on incoming [email] ([@sam-io]) -- Light: White value now supported ([@mxtra], [@MartinHjelmare]) -- [InfluxDB] now allows attaching extra data ([@lwis]) -- [OpenALPR] support ([@pvizeli]) -- Minor features and bug fixes by [@fabaff], [@w1ll1am23], [@turbokongen], [@clach04], [@mKeRix], [@pvizeli], [@DavidLP], [@nvella], [@Teagan42], [@ericwclymer], [@wokar], [@kellerza], [@nkgilley], [@jawilson], [@Danielhiversen], [@ej81], [@danieljkemp], [@balloob], [@philhawthorne], [@LinuxChristian], [@milas], [@simonszu], [@Cinntax], [@irvingwa], [@sytone], [@kk7ds], [@robbiet480]. - -### {% linkable_title Hotfix 0.29.1 - September 29 %} - -- Fix typo in Nest climate platform. [We are still experiencing issues with Nest.][nest-issues] ([@tchellomello]) - -### {% linkable_title Hotfix 0.29.2 - September 29 %} - - - InfluxDB config fix ([@fabaff], reported by [@lwis]) - - Netatmo config fix ([@jabesq]) - -### {% linkable_title Hotfix 0.29.3 - September 29 %} - - - Hue config fix ([@pvizeli]) - -### {% linkable_title Hotfix 0.29.4 - September 30 %} - - - Alexa config fix ([@balloob], reported by [@lwis]) - - Envisalink discovery fix ([@cinntax]) - - Acer Projector config fix ([@pvizeli]) - -### {% linkable_title Hotfix 0.29.5 - September 30 %} - - - Fix Climate Nest platform ([@tchellomello], [@jawilson]) - -### {% linkable_title Hotfix 0.29.6 - October 1 %} - - - Fix segmentation fault ([@bbangert]) 🎉 - - Fix nested templates in `data_template` would incorrectly get cached ([@balloob]) - -### {% linkable_title Hotfix 0.29.7 - October 5 %} - - - Fix handling SIGTERM and SIGHUP signals (fixes Systemd restart issues) ([@pvizeli]) - -### {% linkable_title Breaking changes %} - - - The template methods `now` and `utcnow` have been changed from variables to methods. To get the current time replace `now` with `now()`. - - `yahooweather` default name is now `yweather`. Also min and max temperature are now correctly called `Temperature Min` and `Temperature Max`. - - `ffmpeg` is now a component for manage some things central. All `ffmpeg_bin` options have moved to this compoment from platforms. - - Config has changed for [X10] lights. - - For Wink, make sure your config only contains the access token as in the [docs][Wink]. - - 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://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 -[@joyrider3774]: https://github.com/joyrider3774 -[@balloob]: https://github.com/balloob -[@bbangert]: https://github.com/bbangert -[@chrom3]: https://github.com/chrom3 -[@Cinntax]: https://github.com/Cinntax -[@clach04]: https://github.com/clach04 -[@daBONDi]: https://github.com/daBONDi -[@Danielhiversen]: https://github.com/Danielhiversen -[@danieljkemp]: https://github.com/danieljkemp -[@DavidLP]: https://github.com/DavidLP -[@deisi]: https://github.com/deisi -[@ej81]: https://github.com/ej81 -[@ericwclymer]: https://github.com/ericwclymer -[@fabaff]: https://github.com/fabaff -[@gross1989]: https://github.com/gross1989 -[@irvingwa]: https://github.com/irvingwa -[@jawilson]: https://github.com/jawilson -[@joyrider]: https://github.com/joyrider -[@kaustubhphatak]: https://github.com/kaustubhphatak -[@kellerza]: https://github.com/kellerza -[@Khabi]: https://github.com/Khabi -[@kk7ds]: https://github.com/kk7ds -[@LinuxChristian]: https://github.com/LinuxChristian -[@lwis]: https://github.com/lwis -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@milaq]: https://github.com/milaq -[@milas]: https://github.com/milas -[@mKerix]: https://github.com/mKerix -[@mxtra]: https://github.com/mxtra -[@nkgilley]: https://github.com/nkgilley -[@nvella]: https://github.com/nvella -[@open-homeautomation]: https://github.com/open-homeautomation -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@philhawthorne]: https://github.com/philhawthorne -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@robjohnson189]: https://github.com/robjohnson189 -[@sam-io]: https://github.com/sam-io -[@simonszu]: https://github.com/simonszu -[@sytone]: https://github.com/sytone -[@tchellomello]: https://github.com/tchellomello -[@Teagan42]: https://github.com/Teagan42 -[@technicalpickles]: https://github.com/technicalpickles -[@tinglis1]: https://github.com/tinglis1 -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wokar]: https://github.com/wokar - -[BOM]: /components/sensor.bom/ -[climate]: /components/climate.vera/ -[email]: /components/sensor.imap_email_content/ -[Emoncms]: /components/sensor.emoncms/ -[filtering]: /components/logbook/ -[InfluxDB]: /components/influxdb/ -[ISY]: /components/isy994/ -[KNX]: /components/sensor.knx/ -[Kodi]: /components/notify.kodi/ -[Modbus]: /components/modbus/ -[Nest]: /components/fan.nest/ -[Nuimo]: /components/nuimo_controller/ -[OpenALPR]: /components/openalpr/ -[passwordless]: /components/http/ -[Simplepush]: /components/notify.simplepush/ -[Slack]: /components/notify.slack/ -[SleepIQ]: /components/sleepiq/ -[stocks]: /components/sensor.yahoo_finance/ -[timeout]: /components/sensor.mqtt_room/ -[Vera]: /components/cover.vera/ -[Wink]: /components/wink/ -[plant]: /components/sensor.miflora/ -[MySensors]: /components/climate.mysensors/ -[keyboard_remote]: /components/keyboard_remote -[X10]: /components/light.x10/ diff --git a/source/_posts/2016-10-01-we-have-raspberry-image-now.markdown b/source/_posts/2016-10-01-we-have-raspberry-image-now.markdown deleted file mode 100644 index 463acc78f3..0000000000 --- a/source/_posts/2016-10-01-we-have-raspberry-image-now.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -title: "We have a Raspberry Pi image now" -description: "Release of the Raspberry Pi Image for Home Assistant" -date: 2016-10-01 01:00:00 -0400 -date_formatted: "October 1, 2016" -author: Fredrik Lindqvist -comments: true -categories: Technology -og_image: /images/blog/2016-10-hassbian/social.png ---- - -Today we're happy to announce our brand new Raspberry Pi image! It is based on Raspbian Lite combined with HASS so we decided to call it Hassbian. - -This image comes pre-installed with everything you need to get started with Home Assistant right away. - -To get started, check out the installation instructions in [the getting started section][gs-image] or watch the latest video by [BRUHAutomation]: - -
    - -
    - -### {% linkable_title Under the hood %} - -It's based on Raspbian Lite and generated with a fork of the same [script](https://github.com/home-assistant/pi-gen) that builds the [official Raspbian images](https://raspberrypi.org/downloads/raspbian/). For installation of HASS it follows the same install instructions as the [Manual installation](/getting-started/installation-raspberry-pi/). Please note that this project has no association with the Raspberry Pi foundation or their projects. - -On first boot the latest release of Home Assistant will be installed and can be reached after 3~5 minutes. Pre-installed on this image is the MQTT broker [Mosquitto](https://mosquitto.org/), Bluetooth support and settings for the `homeassistant` account to use the GPIO pins of the Raspberry Pi. Mosquitto is not activated by default. - -As it is today there is no pre-compiled Z-Wave support but it can be installed by following the [Getting started instructions for Z-Wave](/getting-started/z-wave/). - -Happy Automating! - -[gs-image]: /getting-started/installation-raspberry-pi-image/ -[BRUHAutomation]: https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w diff --git a/source/_posts/2016-10-02-hacktoberfest.markdown b/source/_posts/2016-10-02-hacktoberfest.markdown deleted file mode 100644 index b701b45ef3..0000000000 --- a/source/_posts/2016-10-02-hacktoberfest.markdown +++ /dev/null @@ -1,42 +0,0 @@ ---- -layout: post -title: "Participating in Hacktoberfest" -description: "Home Assistant will be participating in Hacktoberfest to help people to get started with open-source." -date: 2016-10-02 00:04:05 +0000 -date_formatted: "October 2, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community -og_image: /images/blog/2016-10-hacktoberfest/social.png ---- - -Home Assistant will join this year for [Hacktoberfest], 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 fix them. If you submit four pull-requests during the month of October you will have earned yourself a limited edition Hacktoberfest T-shirt! - -Why contribute to Home Assistant: - - - Written in Python3 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]. - -[![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 diff --git a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown deleted file mode 100644 index 1c4f4ea6a6..0000000000 --- a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown +++ /dev/null @@ -1,184 +0,0 @@ ---- -layout: post -title: "0.30: More Async, HASSbian, Digital Ocean, statistics, REST" -description: "More asynchronous, HASSbian image, Support for Digital Ocean, statistics, Västtrafik public transport, and Hacktoberfest." -date: 2016-10-08 03:04:05 +0000 -date_formatted: "October 08, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -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 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. - -To reduce the run-time of your tests, [@balloob] did a lot of tweaking. For now the RFXtrx tests are excluded which cut the needed time for running on your Pull Request in half. - -### {% linkable_title Documentation %} - -All configuration sample entries are now minimized. This should help to avoid problem for starters and newbies as they only get what's needed and not a full sample with all optional entries. If there is an issue with an entry in your `configuration.yaml` file the error message will provide you an URL that point to the documentation. - -

    - -

    - -As soon as the [Hacktoberfest] started there were a lot of incoming Pull Requests for the documentation. A huge "Thank you" to all participants. Especially, we would like to give a cookie to [@hillaryfraley]. She created around a dozen Pull Requests so far and didn't only fix typos but complete sections. The [Hacktoberfest] is still on-going and we are looking forward to get more Pull Requests. - -### {% linkable_title Statistics %} - -With the [statistics sensor][stats-sensor] we would like to introduce a new sensor that is similar to the [template sensor][template-sensor] or the [trend sensor][trend-sensor]. This sensor is consuming values from another sensor and is doing some statistical analysis of the data. Over a group of samples is the average/mean, the min/max, the total, the standard deviation, and the variance calculated which can be used in your automation rules. If the source is a binary sensor then the state changes are counted. - -

    - -

    - -As the results are processed on-the-fly you still need to use the data from your database for an in-depth analysis of your stored information. Check the latest [notebook] for doing statistics with your Home Assistant database. - -### {% linkable_title REST! We don't... %} - -There was a lot of work done on our implementation which are working with RESTful APIs. [@w1ll1am23] extended the [aREST] platforms to display if an aREST unit is available or not. The aREST implementations are now covered by the configuration check as well. Please check the Breaking changes section for more details. - -The [REST sensor][rest-sensor] supports now HTTP authentication (basic and digest) and custom headers. This will allow you to access resources which are protected. This sample sensor will access GitHub and retrieve the latest release number while by-passing the rate limit for non-authenticated requests. - -```yaml -sensor - - platform: rest - resource: https://api.github.com/repos/home-assistant/home-assistant/releases/latest - username: YOUR_GITHUB_USERNAME - password: YOUR_GITHUB_ACCESS_TOKEN - authentication: basic - value_template: '{% raw %}{{ value_json.tag_name }}{% endraw %}' - headers: - Accept: application/vnd.github.v3+json - Content-Type: application/json - User-Agent: Home Assistant REST sensor -``` - -### {% linkable_title Misc %} - -- GitHub released with a recent update a review feature. This will give you more control over your comments while you review an open Pull Request. -- Thanks to [@robbiet480] we are now running [mention-bot]. It will help you when you create a new Pull Request to identify potential reviewers. -- The [Home Assistant Community Forum][forum] has now an additional section called "Installation". - -### {% linkable_title All changes %} - - - -- Core: A lot of stuff is now async ([@balloob]) -- Nest: Support for operation modes ([@jawilson]) -- Z-Wave: Massive update for command classes and device classes ([@turbokongen]) -- Digital Ocean: New [switch][do-switch] to control and [binary sensor][do-bin-sensor] to monitor droplets ([@fabaff]) -- Cover: Support for [MySensors cover][mysensors-cover] ([@OttoWinter]) -- Wink: Support for oAuth2 and relay sensors ([@w1ll1am23]) -- Sensor: [Forecast][darksky] update interval is now configurable ([@KlaasH]) -- Core: Failed login attempts are reported as persistent notifications ([@fabaff]) -- Climate: Temperature convert now available in the Climate object ([@pvizeli]) -- Notify: Update to accept a list ([@robbiet480]) -- Device tracker: Support for tracking of your [Volvo] ([@molobrakos]) -- Switch: Flux improvements ([@jawilson]) -- InfluxDB: Time-out for connections ([@simonszu]) -- Sensor: New MySensors types available ([@MartinHjelmare]) -- Switch: [ANEL PwrCtrl][pwrctrl-switch] devices are now supported ([@mweinelt]) -- Frontend: Path of the configuration file now visible on the frontend ([@justweb1]) -- Homematic: Extended device support (RF, IP and wired devices) ([@pvizeli], [@danielperna84]) -- Sensor: New sensor for [statistical analysis][stats-sensor] ([@fabaff]) -- Sensor: Support for headers and HTTP authentication for [REST sensors][rest-sensor] ([@fabaff]) -- Device tracker: Support for encrypted Owntracks payload ([@molobrakos]) -- Tests: Improvement of the HTML5 notify tests ([@capellini]) -- Wink: Support for Wink Smoke and CO detectors ([@w1ll1am23]) -- Sensor: [TED5000][ted5000] sensor was included ([@gwendalg]) -- Sensor: Support for [Västtrafik][vasttrafik] public transport ([@persandstrom]) -- Notify: [Pushetta][pushetta] no longer sends message on start up ([@Danielhiversen]) -- Sensor: [Forecast.io][forecast] sensor was replaced by [Dark Sky][darksky] ([@fabaff]) -- Device Tracker: The `known_device.yaml` file is now validated ([@kellerza]) -- Minor features and bug fixes by [@tchellomello], [@pavoni], [@fabaff], [@pvizeli], [@lwis], [@turbokongen], [@Danielhiversen], [@persandstrom], [@balloob], [@robbiet480], [@sam-io], [@bbangert], and you if you are missing here. - -### {% linkable_title Release 0.30.1 - October 8 %} - - - Device Tracker `known_devices.yaml` validation is now more accepting ([@kellerza]) - - Handle X10 light numbers greater than 9 ([@mtl010957]) - - Fix command line covers without a template ([@roidayan]) - -### {% linkable_title Release 0.30.2 - October 12 %} - -- Handle Volvo's with dashes in their name ([@molobrakos]) -- Fix some html5 push notification configuration options were discarded after first use ([@T3m3z]) -- Fix Homematic device name with autodiscovery ([@pvizeli]) -- Make 'pin' optional for zigbee device config ([@flyte]) -- Fix when sending a notification to a service with target attached (i.e. `notify.html5_unnamed_device_2`) the target was not submitted to the platform as a list causing iteration over every character in the string. ([@robbiet480]) -- Fix for Slack targets ([@fabaff]) -- Fix for Pushover targets ([@Nixon506E]) - -### {% linkable_title Breaking changes %} - -- All deprecated condition options from `automation` have been removed (deprecated since May and have printed warnings to your console): - - `use_trigger_values` is gone. You have to copy your triggers to conditions and adjust for the correct config. - - `condition_type` is gone. Use `condition: or` instead. - - To specify the type of a condition, use `condition:` instead of `platform:`. -- The [Forecast.io][forecast] was renamed to [Dark Sky][darksky]. Replace your `- platform: forecast` with `- platform: darksky`. -- 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://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 -[@capellini]: https://github.com/capellini -[@Danielhiversen]: https://github.com/Danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@fabaff]: https://github.com/fabaff -[@gwendalg]: https://github.com/gwendalg -[@hillaryfraley]: https://github.com/hillaryfraley -[@jawilson]: https://github.com/jawilson -[@justweb1]: https://github.com/justweb1 -[@kellerza]: https://github.com/kellerza -[@KlaasH]: https://github.com/KlaasH -[@Landrash]: https://github.com/Landrash -[@lwis]: https://github.com/lwis -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@molobrakos]: https://github.com/molobrakos -[@mweinelt]: https://github.com/mweinelt -[@OttoWinter]: https://github.com/OttoWinter -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@sam-io]: https://github.com/sam-io -[@simonszu]: https://github.com/simonszu -[@tchellomello]: https://github.com/tchellomello -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@mtl010957]: https://github.com/mtl010957 -[@roidayan]: https://github.com/roidayan -[@T3m3z]: https://github.com/T3m3z -[@flyte]: https://github.com/flyte -[@Nixon506E]: https://github.com/Nixon506E - -[arest]: https://arest.io/ -[arest-sensor]: /components/sensor.arest/ -[arest-switch]: /components/switch.arest/ -[darksky]: /components/sensor.darksky/ -[do-bin-sensor]: /components/binary_sensor.digital_ocean/ -[do-switch]: /components/switch.digital_ocean/ -[forecast]: /components/sensor.forecast/ -[forum]: https://community.home-assistant.io/ -[Hacktoberfest]: /blog/2016/10/02/hacktoberfest/ -[hassbian-forum]: https://community.home-assistant.io/c/installation/hassbian -[mention-bot]: https://github.com/mention-bot -[mysensors-cover]: /components/cover.mysensors/ -[notebook]: http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-statistics.ipynb -[pi-image]: /blog/2016/10/01/we-have-raspberry-image-now/ -[pushetta]: /components/notify.pushetta/ -[pwrctrl-switch]: /components/switch.anel_pwrctrl/ -[rest-sensor]: /components/sensor.rest/ -[stats-sensor]: /components/sensor.statistics/ -[ted5000]: /components/sensor.ted5000/ -[template-sensor]: /components/sensor.template/ -[trend-sensor]: /components/binary_sensor.trend/ -[vasttrafik]: /components/sensor.vasttrafik/ -[Volvo]: /components/device_tracker.volvooncall/ - diff --git a/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown b/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown deleted file mode 100644 index b1c417b1a3..0000000000 --- a/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown +++ /dev/null @@ -1,306 +0,0 @@ ---- -layout: post -title: "0.31: Reading you the news, some serious business, spooky hackery and a breaking Z-Wave change" -description: "Alexa Flash Briefing API support, Markdown in persistent notifications, a new updater component, Hacktoberfest and breaking Z-Wave changes." -date: 2016-10-22 13:00:00 -0700 -date_formatted: "October 22, 2016" -release_date: 2016-10-23 21:57:00 -0700 -author: Robbie Trencheny -author_twitter: robbie -comments: true -categories: Release-Notes ---- - -Hello again friend, - -How are you? Having a good day? We sure are. If you aren't having a good day, this might cheer you up... - -Every other weekend around here gets a little hectic leading to a big sigh of relief as we release a new version of Home Assistant to the world. And this time is no different. Our developer community has once again built us a beautiful new release with lots of new features and improvements. We hope you like it. - -One last thing before we get going though, I should warn you... [@balloob] got a bit lazy this week and let me ([@robbiet480]) step up to the plate again to write the blog post and do the release. I guess I didn't do such a bad job in [0.27][zero-two-seven-release]. You'll never know what surprises I have in store. Now that i've got all that stuff out of the way, let's get started... - -## {% linkable_title Stats Update %} -Sadly, no big amazing stats to update you with this time, but we did recently pass 7,000 commits! This release featured submissions from 45 contributors. Hopefully with the new updater component we will be able to give you some really good stats in the 0.32 blog post. - -## {% linkable_title Hacktoberfest %} - -![Hacktoberfest logo][logo] - -October means Hacktoberfest time and our community has really come through with some excellent improvements and additions. As of this writing, we have 194 merged and 41 open pull requests to the [home-assistant repository][hacktoberfest-ha-prs] and 209 merged/28 open pull requests submitted to the [home-assistant.github.io repository][hacktoberfest-site-prs]. If you want to get in on the fun check out our [Hacktoberfest][hacktoberfest-blog] blog post or the [Hacktoberfest website][hacktoberfest-website]. You get an awesome t-shirt for free if you have 4 pull requests merged in the month of October! We even have tasks that a non-developer can easily accomplish with a tiny bit of work. Better hurry up though, only 9 days left and most of the easy tasks are gone! - -## {% linkable_title ⚠️ A greatly improved updater component (Please read this!) ⚠️ %} - -This release includes an update to our [updater] component. The responsibility of the updater component is to check if a new version is available and notify the user if this is the case. - -It used to be that this component would check with [PyPi] (the Python package manager) to see if a new update was available. This had a couple of problems: - - 1. We are unable to do a slow rollout - 2. We are unable to show the user extra information (like a link to a changelog or the release date) - 3. We are unable to warn users for critical security updates - -So to work around these problems, we decided to start hosting the version check service ourselves. Since we had to get some infrastructure spun up anyway, we figured we would take it a step further. Which leads me to this bit of the update (the most important part): - -### {% linkable_title What you need to know (the important bit!) %} - -Remember how I mentioned that up there in the title that there is some serious business in this release? Well, we also added some basic analytics to the updater component which get sent to the server and stored so that we get a better idea of our user base. - -Each Home Assistant instance running the updater component will generate a [unique ID][UUID] (based on UUIDv4) that will be used for the updater to be able to differentiate between instances. This UUID will be stored in your config directory in a file called `.uuid`. - -#### Opting out - -There are two ways to opt-out. The first way is by using the new `opt_out` option for the updater. This way the updater will continue to check for updates, but no information about your system will be shared with us. - -```yaml -updater: - reporting: no -``` - -You can also disable the updater component entirely by removing `updater:` from your `configuration.yaml` although **we would not suggest you do this** as you would miss any critical updates. - -Finally, you can also reset your unique identifier by deleting the `.uuid` file and restarting Home Assistant. - -#### Data stored on the Home Assistant update server - -Here is what my production Home Assistant instance looks like from the server side: - -| Name | Description | Example | -|-----------------------|--------------------------------------------|------------------------------------| -| `arch` | CPU Architecture | `x86_64` | -| `distribution` | Linux Distribution name (only Linux) | `Ubuntu` | -| `docker` | True if running inside Docker | `false` | -| `os_name` | Operating system name | `Darwin` | -| `os_version` | Operating system version | `10.12` | -| `python_version` | Python version | `3.5.2` | -| `timezone` | Timezone | `America/Los_Angeles` | -| `user_agent` | User agent used to submit analytics | `python-requests/2.11.1` | -| `uuid` | Unique identifier | `10321ee6094d4a2ebb5ed55c675d5f5e` | -| `version` | Home Assistant version | `0.31.0` | -| `virtualenv` | True if running inside virtualenv | `true` | - -In addition to the above collected data, the server will also use your IP address to do a geographic IP address lookup to determine the city that you are from. To be extremely, extremely clear about this bit: __The Home Assistant updater does not: store your IP address in a database and also does not submit the location information from your `configuration.yaml`.__ - -

    - - Geo-lookup on my IP resolves to Oakland with latitude/longitude pointing at the geographical center of the city. -

    - -The server also adds two timestamps to the data: the original date your instance UUID was first seen and the timestamp of the last time we have seen your instance. This gives us the following extra data: - -| Name | Description | Example | -|-----------------------|--------------------------------------------|------------------------------------| -| `first_seen_datetime` | First time instance ID was submitted | `2016-10-22T19:56:03.542Z` | -| `geo_city` | GeoIP determined city | `Oakland` | -| `geo_country_code` | GeoIP determined country code | `US` | -| `geo_country_name` | GeoIP determined country name | `United States` | -| `geo_latitude` | GeoIP determined latitude (of the city) | `37.8047` | -| `geo_longitude` | GeoIP determined longitude (of the city) | `-122.2124` | -| `geo_metro_code` | GeoIP determined metro code | `807` | -| `geo_region_code` | GeoIP determined region code | `CA` | -| `geo_region_name` | GeoIP determined region name | `California` | -| `geo_time_zone` | GeoIP determined time zone | `America/Los_Angeles` | -| `geo_zip_code` | GeoIP determined zip code | `94602` | -| `last_seen_datetime` | Most recent time instance ID was submitted | `2016-10-22T19:56:03.542Z` | - -This data is held in the highest security. The update system runs in a secured Amazon Web Services account owned by me ([@robbiet480]). I personally have 5 years of experience with complex AWS deployments and have an extensive security background. I have audited the entire system and made sure to take every step to protect the data, including limiting who has access (just [@balloob] and myself). While not directly personally identifiable we absolutely understand some users hesistance to giving this information out. Please understand that we are only collecting this information to better understand our user base to provide better long term support and feature development then is currently possible. - -We currently have 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 thank you for understanding why we are collecting this data and hope that you leave the feature enabled but fully understand if you feel uncomfortable with this. - -_This section was updated on October 24 to be more clear about geo-lookups being on the city level. [See original version.][blog-orig]_ - -Now, back to the fun stuff... - -## {% linkable_title Good evening. I'm Ron Burgundy and here's what happening in your world tonight. %} - -Home Assistant got a crazy idea recently that it couldn't do enough already and wanted to challenge itself even more. I really don't understand how it came up with this kooky idea, but it now thinks that its newest hobby should be a minor career in journalism. - -0.31 adds support for the brand spanking new [Alexa Flash Briefing API](https://developer.amazon.com/alexa-skills-kit/flash-briefing), allowing you to get updates from Home Assistant anytime you ask Alexa to read your flash briefing. What's the use case you ask? Well, now when I wake up in the morning and get my flash briefing, Home Assistant adds this to the end of it for me: - -> Drive time with traffic is 35 minutes. There is an UberPOOL that will cost $11.52, estimated to be 2 minutes away, for a total of 37 minutes. BART is currently estimated to take 29 minutes. You should take BART, as it is estimated to be faster by 8 minutes. - -Now I know how to best get to [my real job][runway] (no, Home Assistant is _not_ my real job, it does seem like it sometimes though) every morning. Obviously not the best home automation example, but I think you get the idea. I could see this being used to tell you any major events that happened in your home overnight or reading you your hyperlocal weather report. Thanks to the audio support you could even replace all of the default Alexa Flash Briefing sources with your own news feeds. Home Assistant supports both text and audio content as well as displaying data in the Alexa app. I also want to point out that unlike the existing Skill integration, the Flash Briefing API does _not_ require HTTPS (_but you should still be using HTTPS if possible_). For more information, check out the new [docs][flash-briefing-docs]. - -

    - - You stay classy, San Diego. (It's funny, because balloob lives in San Diego)) -

    - -## {% linkable_title Major breaking Z-Wave changes ahead %} - -A rather nasty Z-Wave [issue][z-wave-issue] was discovered recently by [@lukas-hetzenecker]. There was a somewhat large chance that if you had multiple of the same model Z-Wave device they may both try to use the same entity IDs. To fix the issue the internal Z-Wave index is now appended to the end of all Z-Wave entity IDs. - -What this means for all you Z-Wave users is that you will need to update your configurations to reflect the change. I personally have quite a few (17) Z-Wave devices and went through the process this week. Here's what I had to do: - -- Update customizations -- Update groups -- Update my `zwave.customize` section -- Update my Alexa skills that used old entity IDs -- Because I use `emulated_hue` with Alexa and `emulated_hue` uses the entity ID as a unique identifier I also had to remove all Z-Wave devices from Alexa and re-add them. - -Your todo list may be a little different from mine, I just wanted to outline the steps I took to give you an idea of what you need to think about. It's not a very hard process, especially when using global find and replace in Sublime Text but did take me about 20 minutes to complete. - -This is super annoying, I know, especially since we had said in [0.12][zero-one-two-release] that Z-Wave IDs should hopefully never change again, but we are now forced to eat those words. I will state again that Z-Wave IDs shouldn't change in the future but obviously we see how that went. To sum up on this section... sorry but it had to happen. - -## {% linkable_title All changes %} - -- [Updater] component ([@infamy], [@robbiet480], [@kellerza]) -- Continue to setup other platforms when 1 platform config is invalid ([@kellerza]) -- Create [persistent notifications][pers-notify] when a platform contains invalid config ([@kellerza]) -- Logbook: Allow [filtering] domains and entities to be shown ([@wokar]) -- HTTP: Change `approved_ips` from string to CIDR validation ([@mweinelt]) -- Persistent Notifications: Allow using [markdown][pers-notify] ([@justweb1]) -- Netatmo: Add [discovery][netatmo-discovery] support ([@jabesq]) -- Netatmo Welcome camera: Add [binary sensor][netatmo-bin] ([@jabesq]) -- Support added for [HaveIBeenPwned] ([@joyrider3774]) -- Device tracker: `known_devices.yaml` reading and writing tweaks and fixes ([@kellerza]) -- Fix climate platforms showing the wrong temperature unit ([@rcloran]) -- Lots of voluptuous love ([@fabaff]) -- Ensure proper attribution for weather platforms ([@fabaff]) -- Fix Telegram in Docker ([@jeanregisser]) -- Support recursive config inclusions in YAML ([@lwis]) -- Camera: [Synology] SS cameras now supported ([@jgriff2]) -- History: Allow filtering domains and entities to be shown ([@wokar]) -- Media Player - Squeezebox: Now able to show artist and album ([@ih8gates]) -- Alexa: Flash Briefing skill support added ([@robbiet480]) -- Device Tracker: Add support for Bbox Modem Router ([@HydrelioxGithub]) -- Sensor: Add support for Bbox Modem Router ([@HydrelioxGithub]) -- Input select: Services added to pick next and prev option ([@persandstrom]) -- Sensor: [ARWN] now supported ([@sdague]) -- Pushbullet: Push an URL note if an url is provided inside data ([@jabesq]) -- Z-Wave: Allow certain devices to be not added to Home Assistant ([@lukas-hetzenecker]) -- New support for [Zoneminder] added ([@Khabi]) -- 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 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]) -- New `fail` filter added to templates to raise on UndefinedError ([@jaharkes]) -- Support added for [Emoncms history][emoncms] ([@joyrider3774]) -- Support for [Apple Push Notifications Service][APNS] ([@sam-io]) -- Thermostat: Netatmo now supported ([@gieljnssns]) -- Alarm control panel: [Concord232] now supported ([@JasonCarter80]) -- Notify: [Matrix] support added ([@mweinelt]) -- Device tracker - nmap: Allow specifying multiple inputs for [nmap] ([@hcooper]) -- Device Tracker - snmp: SNMPv3 now supported ([@T3m3z]) -- Notify: [Telstra] SMS now supported ([@nvella]) -- Camera: [Verisure] now supported ([@turbokongen]) -- Support added for [Neato] Connected Robot ([@jabesq]) -- Media player: More options for [Yamaha] AVR ([@ehagan]) -- Sensor: Support for [Pilight] sensor ([@DavidLP]) -- iOS support ([@robbiet480]) -- Minor features and bug fixes by [@mtl010957], [@molobrakos], [@flyte], [@fabaff], [@phardy], [@sander76], [@T3m3z], [@c-w], [@balloob], [@robbiet480], [@StaticCube], [@vittoriom], [@hartmms], [@kirichkov], [@mezz64], [@ishults], [@Danielhiversen] and [@tchellomello]. - -### {% linkable_title Release 0.31.1 - October 24 %} - - - Identify special character encoding error in YAML files ([@kellerza], [@lwis]) - - iOS app component bug fixes ([@robbiet480]) - - Fix a spelling problem on user-facing error ([@robbiet480]) - - YAML includes will ignore dirs/files prefixed with . ([@lwis]) - -## {% linkable_title Breaking changes %} - - - The [HTTP] component now takes a different format for authenticating IPs - - Configuration format has changed for [Proximity] - - The [Arduino] platform are now covered by the configuration check. Please check the documentation to see how. - - 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://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 %} - -Thanks for reading all of the above, especially since this week was a pretty long post. We should be back with a new post around November 5th announcing the arrival of 0.32. - --- Robbie - -[@balloob]: https://github.com/balloob -[@capellini]: https://github.com/capellini -[@c-w]: https://github.com/c-w -[@Danielhiversen]: https://github.com/Danielhiversen -[@DavidLP]: https://github.com/DavidLP -[@ehagan]: https://github.com/ehagan -[@fabaff]: https://github.com/fabaff -[@flyte]: https://github.com/flyte -[@gieljnssns]: https://github.com/gieljnssns -[@hartmms]: https://github.com/hartmms -[@hcooper]: https://github.com/hcooper -[@HydrelioxGithub]: https://github.com/HydrelioxGithub -[@ih8gates]: https://github.com/ih8gates -[@infamy]: https://github.com/infamy -[@ishults]: https://github.com/ishults -[@jabesq]: https://github.com/jabesq -[@jaharkes]: https://github.com/jaharkes -[@JasonCarter80]: https://github.com/JasonCarter80 -[@jeanregisser]: https://github.com/jeanregisser -[@jgriff2]: https://github.com/jgriff2 -[@joyrider3774]: https://github.com/joyrider3774 -[@justweb1]: https://github.com/justweb1 -[@kellerza]: https://github.com/kellerza -[@Khabi]: https://github.com/Khabi -[@kirichkov]: https://github.com/kirichkov -[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker -[@lwis]: https://github.com/lwis -[@mezz64]: https://github.com/mezz64 -[@molobrakos]: https://github.com/molobrakos -[@mtl010957]: https://github.com/mtl010957 -[@mweinelt]: https://github.com/mweinelt -[@Nixon506E]: https://github.com/Nixon506E -[@nvella]: https://github.com/nvella -[@persandstrom]: https://github.com/persandstrom -[@phardy]: https://github.com/phardy -[@pvizeli]: https://github.com/pvizeli -[@rcloran]: https://github.com/rcloran -[@robbiet480]: https://github.com/robbiet480 -[@sam-io]: https://github.com/sam-io -[@sander76]: https://github.com/sander76 -[@sdague]: https://github.com/sdague -[@StaticCube]: https://github.com/StaticCube -[@T3m3z]: https://github.com/T3m3z -[@tchellomello]: https://github.com/tchellomello -[@turbokongen]: https://github.com/turbokongen -[@vittoriom]: https://github.com/vittoriom -[@wokar]: https://github.com/wokar - -[Arduino]: /components/arduino/ -[APNS]: /components/notify.apns/ -[ARWN]: /components/sensor.arwn/ -[Concord232]: /components/alarm_control_panel.concord232/ -[HTTP]: /components/http/ -[HaveIBeenPwned]: /components/sensor.haveibeenpwned/ -[Matrix]: //components/notify.matrix/ -[Neato]: /components/switch.neato/ -[Pilight]: /components/sensor.pilight/ -[Proximity]: /components/proximity/ -[PyPi]: https://pypi.python.org/pypi -[Synology]: /components/camera.synology/ -[Telstra]: /components/notify.telstra/ -[UUID]: https://en.wikipedia.org/wiki/Universally_unique_identifier -[Verisure]: /components/camera.verisure/ -[WUnderground]: /components/sensor.wunderground/ -[Yamaha]: /components/media_player.yamaha/ -[Zoneminder]: /components/zoneminder/ -[emoncms]: //components/emoncms_history/ -[filtering]: /components/logbook/ -[flash-briefing-docs]: /components/alexa/ -[hacktoberfest-blog]: /blog/2016/10/02/hacktoberfest/ -[hacktoberfest-ha-prs]: https://github.com/home-assistant/home-assistant/labels/Hacktoberfest -[hacktoberfest-site-prs]: https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest -[hacktoberfest-website]: https://hacktoberfest.digitalocean.com/ -[logo]: /images/blog/2016-10-hacktoberfest/hacktoberfest.png -[min]: /components/sensor.min_max/ -[netatmo-bin]: /components/binary_sensor.netatmo/ -[netatmo-discovery]: /components/netatmo/ -[nmap]: /components/device_tracker.nmap_tracker/ -[pers-notify]: /components/persistent_notification/ -[runway]: http://runway.is -[scrape]: /components/sensor.scrape/ -[updater]: /components/updater/ -[z-wave-issue]: https://github.com/home-assistant/home-assistant/pull/3759 -[zero-one-two-release]: /blog/2016/01/30/insteon-lifx-twitter-and-zigbee/#backwards-incompatible-changes -[zero-two-seven-release]: /blog/2016/08/28/notifications-hue-fake-unification/ -[twitter]: https://twitter.com/home_assistant -[robbie-twitter]: https://twitter.com/robbie -[blog-orig]: https://github.com/home-assistant/home-assistant.github.io/blob/c937242d154e509d2d84d10c51f654e20556fa21/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown diff --git a/source/_posts/2016-10-24-explaining-the-updater.markdown b/source/_posts/2016-10-24-explaining-the-updater.markdown deleted file mode 100644 index 3d07f1ce52..0000000000 --- a/source/_posts/2016-10-24-explaining-the-updater.markdown +++ /dev/null @@ -1,58 +0,0 @@ ---- -layout: post -title: "Explaining the Updater" -description: "An update to the recent updater component changes" -date: 2016-10-25 21:30:00 UTC -date_formatted: "October 25, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Organization ---- - -On Saturday, we released [Home Assistant 0.31][0.31] which includes an improved updater component that checks for new versions using the Home Assistant servers. We wanted to update the community on its rollout and answer some questions that have come up. As part of the update check anonymous information about your operating system and Python version is submitted to Home Assistant servers unless you have opted out. - - -## {% linkable_title Why we changed the updater %} -This change was driven by two important factors. - -### {% linkable_title Improving the security of the users. %} - -As a user, you will be able to be notified if you are running a Home Assistant version that includes components that have known security flaws. - -Although we hope to not have to use this feature often, it is important for us to be able to reach out to impacted users. We had the need for such a feature once in the past. Due to a bug the forecast.io sensor was making a huge amount of API requests causing some of our users to get charged because they went over the free quota. - -Please note that this functionality is not done yet but will be available in a future release. - -### {% linkable_title Focusing our resources where it matters %} - -As developers of Home Assistant, we will be able to see in what kind of environments Home Assistant is running. Here’s a few data points we didn’t have until now: - -* Total number of instances -* Which operating systems versions and flavors are in use -* Python version -* What option is more popular: Docker, Virtualenv or bare metal installs? -* How popular is our new [Raspberry Pi image][rpi-image]? - - -## {% linkable_title Why we look up your IP address with GeoIP %} -We store the city so that we can see where our users are from. This information will be used to give us a better insight in where our users are from. This will help us gather data to see if we should for example prioritize internationalization. In addition, we previously had a nasty bug with the `sun` component in which users above a certain latitude were having crashes multiple times a day. Had the updater component been in place we could have targeted a special priority update notification only to them. - -As stated in the release blog post, the location information is _not_ provided by your local Home Assistant installation but is instead gathered by comparing your IP address against the [GeoLite2 data created by MaxMind][geolite]. From their documentation: - -> IP geolocation is inherently imprecise. Locations are often near the center of the population. Any location provided by a GeoIP database should not be used to identify a particular address or household. - -## {% linkable_title Why is it enabled by default %} -We decided to have it enabled by default because we consider the information that is gathered not harmful. We understand that not everyone will agree with us and so we have provided [multiple ways to opt out][opt-out]. - -It is in our short-term planning to add an option to control this to our frontend. - -## {% linkable_title Source Code %} -The source code of our updater AWS Lambda function is now available [here][source]. - - -[0.31]: /blog/2016/10/22/flash-briefing-updater-hacktoberfest/#comment-2965607849 -[geolite]: https://dev.maxmind.com/geoip/geoip2/geolite2/ -[opt-out]: /components/updater/ -[rpi-image]: /blog/2016/10/01/we-have-raspberry-image-now/ -[source]: https://github.com/home-assistant/Analytics-Receiver diff --git a/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown b/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown deleted file mode 100644 index 4cc4f06944..0000000000 --- a/source/_posts/2016-11-05-hacktoberfest-influxdb-weather.markdown +++ /dev/null @@ -1,191 +0,0 @@ ---- -layout: post -title: "0.32: Hacktoberfest, InfluxDB sensor, Error reporting, and Weather" -description: "Hacktoberfest is over, new InfluxDB sensor, CUPS sensor, and ThingSpeak." -date: 2016-11-05 03:04:05 +0000 -date_formatted: "November 05, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes ---- - - -Another two weeks have passed and we are pleased to present Home Assistant 0.32. - -### {% linkable_title Hacktoberfest %} -The [Hacktoberfest] is over now. Home Assistant made the 2nd and the 3rd place out of almost 30'000 participating repositories with a total of 528 pull requests closed - that's an average of 17 pull requests a day! Thanks to all the contributors but also to the team of reviewers. This wouldn't been possible without you 👏 . - -### {% linkable_title Improved error reporting %} -This release has improved the reporting when a config validation error occurs. Thanks to [@kellerza] you will now get a persistent notification added to your UI when this happens. - -### {% linkable_title Asynchronous %} -This release contains the first asynchronous sensor and camera platforms. [@pvizeli] and [@fabaff] ported most of the "internal" sensors to async programming. We hope that you will enjoy the new speed. - -[@balloob] and [@pvizeli] worked a lot on the improvement of the core itself. - -### {% linkable_title Weather component %} - -For a long time we have had a bunch of [weather sensors][weather-sensors] but it's getting better: There is now a [Weather component][weather-component]. Sorry, not much more to tell right now. The plans are to create a weather UI element and to improve the initial implementation. - -### {% linkable_title All changes %} - - - -- Cover: New [garadget] platform ([@JasonCarter80]) -- Media player: New support for [Emby][emby-media] ([@mezz64]) -- [LiteJet][litejet] switches and lights support ([@joncar]) -- Light: [Yeelight][yeelight] Wifi bulbs are now supported ([@HydrelioxGitHub]) -- Media player: [Philips TVs][philips_player] with jointSPACE API re now supported ([@danielperna84]) -- Sensor: Support for [Synology DSM][synologydsm] ([@StaticCube]) -- Sensor: Monitoring support for [Dovado routers][dovado-sensor] ([@molobrakos]) -- Sensor: Support for monitoring [printers][cups-sensor] ([@fabaff]) -- Add mochad component ([@mtreinish]) -- Notify: Added support for [Android TV/FireTV](/components/notify.nfandroidtv/) - Sensor: New finance platform [CurrencyLayer][currencylayer] ([@arsaboo]) -- Sensor: Support for [InfluxDB sensors][influx-sensor] ([@bestlibre]) -- Sensor: New support [HDDTemp sensors][hddtemp-sensor] ([@fabaff]) -([@danielperna84]) -- Media player: [Sonos] improvements incl. timer setting functionality ([@bjarniivarsson], [@americanwookie]) -- Media player: Discovery support for [Yamaha] ([@sdague]) -- Config: Exclude dirs/files prefixed with . ([@lwis]) -- HTTP: Migrate WSGI to asyncio ([@balloob]) -- Configurator: Support for `entity_picture` ([@armills]) -- Core: Configuration validation error prints line numbers ([@persandstrom]) -- Zoneminder: SSL/TLS support ([@Khabi]) -- Camera: Improvements to [RPi camera][rpi-camera] ([@postlund]) -- [ThingSpeak][thingspeak] component ([@simonszu]) -- Core: New property `hass.data` to store internal data ([@balloob]) -- Switch: Templating and configurable timeout for [REST][rest-switch] ([@aa755]) -- Sensor: New [random number][random-sensor] sensor ([@fabaff]) -- Pilight: `send_delay` feature ([@janLo]) -- Config: Improvements for `known_devices` ([@kellerza]) -- Device tracker: New discovered event ([@lwis]) -- Device tracker: Improvements and new features for the Volvo on Call platform ([@molobrakos]) -- Climate: Use unit of measurement from a Vera device ([@pavoni]) -- Device tracker: [iCloud][icloud] improvements ([@Bart274]) -- Minor features and bug fixes by [@fabaff], [@kellerza], [@robbiet480], [@balloob], [@DavidLP], [@Bart274], [@sdague], [@mtreinish], [@Khabi], [@bbesset], [@bestlibre], [@pvizeli], [@turbokongen], [@devdelay], [@molobrakos], [@postlund], [@wokar], [@armills], [@arsaboo], [@hartmms], [@nsideras], [@tbeckha], and [@kirichkov]. - -### {% linkable_title Release 0.32.1 - November 6 %} - -We've added a warning to 0.32 to catch platforms accidentally slowing down Home Assistant. Our aim is to fix these quickly when reported, so here is 0.32.1 with all reported platforms fixed. - - - Fix Sonos doing I/O inside the event loop ([@pvizeli]) - - Fix Radiotherm doing I/O inside the event loop ([@balloob]) - - Fix camera MJPEG streams when using HTTP 1.0 ([@balloob]) - -### {% linkable_title Release 0.32.2 - November 7 %} - - - Move Honeywell I/O out of the event loop ([@balloob]) - - Use sequential updates for non-async entities to prevent race conditions ([@pvizeli]) - - Fix setting temperature in Celsius on Radiotherm CT50 thermostats ([@andyat]) - - Fix PiLight config validation ([@DavidLP]) - -### {% linkable_title Release 0.32.3 - November 11 %} - - - Fix OpenWeather weather platform doing I/O in event loop ([@lwis]) - - Fix Alarm.com doing I/O in event loop ([@jnewland]) - - Fix Tellstick doing I/O in event loop ([@balloob]) - - Fix KNX doing I/O in event loop ([@balloob]) - - Increase warning threshold for catching platforms that do I/O ([@balloob]) - - Change pilight systemcode validation ([@janLo]) - - Fix Yamaha discovering already configured receivers ([@sdague]) - - Fix Sonos from installing dependency each time HA was started ([@pvizeli]) - - Fix Synology camera SSL and error handling ([@pvizeli]) - - Fix Panasonic Viera doing I/O in event loop ([@balloob]) - - Improve generic camera error handling ([@kellerza]) - - Light - Flux Led Lights: allow specifying mode if light does not support white mode ([@DanielHiversen]) - - Fix Rest switch default template ([@pvizeli]) - -### {% linkable_title Release 0.32.4 - November 15 %} - - - Fix device tracker from crashing HASS when a new device was discovered ([@balloob]) - - HTTP: Fix X-Forwarded-For feature ([@mweinelt]) - -### {% linkable_title Misc %} - -Our website has now an additional category called "Ecosystem". This will become the place where tools, apps, and other helper for the Home Assistant ecosystem can store their documentation or guides. - -- [iOS](/ecosystem/ios/) -- [SceneGen](/ecosystem/scenegen/) - -### {% linkable_title Breaking changes %} - -- The [Yahoo Finance][yahoo] platform supports now multiple stock. Please adjust your configuration. -- Deprecated components `garage_door`, `rollershutter`, `thermostat`, and `hvac` have been removed. -- The minimum Python version on Windows has been bumped to Python 3.5. -- The Insteon Hub integration has been disabled due to a [request from Insteon][req-insteon]. - -### {% 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://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 -[@americanwookie]: https://github.com/americanwookie -[@armills]: https://github.com/armills -[@andyat]: https://github.com/andyat -[@arsaboo]: https://github.com/arsaboo -[@balloob]: https://github.com/balloob -[@Bart274]: https://github.com/Bart274 -[@bbesset]: https://github.com/bbesset -[@bestlibre]: https://github.com/bestlibre -[@bjarniivarsson]: https://github.com/bjarniivarsson -[@danielperna84]: https://github.com/danielperna84 -[@DavidLP]: https://github.com/DavidLP -[@devdelay]: https://github.com/devdelay -[@fabaff]: https://github.com/fabaff -[@hartmms]: https://github.com/hartmms -[@HydrelioxGitHub]: https://github.com/HydrelioxGitHub -[@janLo]: https://github.com/janLo -[@JasonCarter80]: https://github.com/JasonCarter80 -[@joncar]: https://github.com/joncar -[@kellerza]: https://github.com/kellerza -[@Khabi]: https://github.com/Khabi -[@kirichkov]: https://github.com/kirichkov -[@lwis]: https://github.com/lwis -[@mezz64]: https://github.com/mezz64 -[@molobrakos]: https://github.com/molobrakos -[@mtreinish]: https://github.com/mtreinish -[@nsideras]: https://github.com/nsideras -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@postlund]: https://github.com/postlund -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@sdague]: https://github.com/sdague -[@simonszu]: https://github.com/simonszu -[@StaticCube]: https://github.com/StaticCube -[@tbeckha]: https://github.com/tbeckha -[@tchellomello]: https://github.com/tchellomello -[@turbokongen]: https://github.com/turbokongen -[@wokar]: https://github.com/wokar -[@jnewland]: https://github.com/jnewland -[@DanielHiversen]: https://github.com/DanielHiversen - -[currencylayer]: /components/sensor.currencylayer/ -[yahoo]: /components/sensor.yahoo_finance/ -[mochat]: /components/mochat/ -[firetv]: /components/notify.firetv/ -[Yamaha]: /components/media_player.yamaha/ -[hddtemp-sensor]: /components/sensor.hddtemp/ -[Sonos]: /components/media_player.sonos/ -[weather-sensors]: /components/#weather -[rpi-camera]: /components/camera.rpi_camera/ -[rest-switch]: /components/switch.rest/ -[emby-media]: /components/media_player.emby/ -[random-sensor]: /components/sensor.random/ -[yeelight]: /components/light.yeelight/ -[influx-sensor]: /components/sensor.influxdb/ -[weather-component]: /components/weather/ -[cups-sensor]: /components/sensor.cups/ -[litejet]: /components/litejet/ -[garadget]: /components/garadget/ -[philips_player]: /components/media_player.philips_js/ -[icloud]: /components/device_tracker.icloud/ -[synologydsm]: /components/sensor.synologydsm/ -[dovado-sensor]: /components/sensor.dovado/ -[ios]: /ecosystem/ios/ -[Hacktoberfest]: https://hacktoberfest.digitalocean.com/ -[req-insteon]: https://github.com/home-assistant/home-assistant/issues/3811 -[updater]: /blog/2016/10/25/explaining-the-updater/ -[thingspeak]: /components/thingspeak/ diff --git a/source/_posts/2016-11-20-calendar--wink-thermostats--cisco-ios.markdown b/source/_posts/2016-11-20-calendar--wink-thermostats--cisco-ios.markdown deleted file mode 100644 index 9c04a9d477..0000000000 --- a/source/_posts/2016-11-20-calendar--wink-thermostats--cisco-ios.markdown +++ /dev/null @@ -1,119 +0,0 @@ ---- -layout: post -title: "0.33: New Calendar component, Wink thermostats and Cisco IOS" -description: "Continued our upgrade to Async, fixed tons of bugs and added a few new things." -date: 2016-11-20 00:04:05 +0000 -date_formatted: "November 20, 2016" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2016-11-0.33/social.png ---- - -For this release we put a lot of focus on finishing our async upgrade and fix a bunch of bugs in the process. - -But a new release wouldn't be awesome if it didn't had some new goodies and this release is no different. This release includes a new calendar component by [@mnestor]. It comes now with Google Calendar support, which should allow you to automate things based on your calendar events! - -### {% linkable_title Changes %} - -- New [calendar component][google] including Google support ([@mnestor]) -- Final core upgrade for async ([@pvizeli]) -- [Neato] refactor + sensor support ([@turbokongen]) -- Device Tracker: [Swisscom Internet-Box][swisscom] now supported ([@betrisey]) -- Device Tracker - Locative: [Map support][locative] added ([@danijelst]) -- [Emulated Hue] will now sent request info as variables to scripts that get called ([@bah2830]) -- Wink: [Thermostats][wink-climate] are now supported ([@w1ll1am23]) -- Light: New [MQTT template][mqtt-template] platform for custom communication ([@Diaoul]) -- [Wake on Lan switch] can now configure a custom OFF script ([@Chris-V]) -- Device Tracker: [Cisco IOS][cisco] now supported ([@fbradyirl]) -- Sensor: Support for [PVOutput][pvoutput] snesor ([@fabaff]) -- Sensor: Show count of connected clients to the [API stream][api-stream] ([@balloob]) -- Fix platforms from doing I/O in the event loop ([@balloob], [@pvizeli], [@lwis], [@kellerza]) -- Switch - [TP Link]: Add daily consumption ([@gonzalezcalleja]) -- Templates: Add new `strptime` [template function] for parsing times ([@lwis]) -- [HTTP] component: Fix X-Forwarded-For parsing ([@mweinelt]) -- Switch - [Command Line]: Use configured object_id for entity IDs ([@n8henrie]) -- [MQTT] now supports birth and last will messages ([@bestlibre]) -- Better handling of accented characters in slugify ([@magicus]) -- Alarm Control Panel - [Envisalink]: Add new keypress service ([@jnimmo]) -- Light - [Hue]: Add service to activate scenes defined in Hue app ([@sdague]) - -### {% linkable_title Release 0.33.1 - November 20 %} - - - Fix Z-Wave lights ([@turbokongen]) - -### {% linkable_title Release 0.33.2 - November 22 %} - - - Fix Device Tracker init ([@pvizeli]) - - Fix Discovery init ([@pvizeli]) - - Fix TP-Link switch ([@mweinelt]) - - Fix Zwave light naming & configurable refresh ([@jchapple]) - - Neato fixes ([@turbokongen]) - - Fix 'Unknown' status for Nest Protect devices ([@Khabi]) - -### {% linkable_title Release 0.33.3 - November 23 %} - - - Update Yr.no entities every hour ([@kellerza]) - - Bump Netdisco to 0.7.7 (fixes discovery on Synology) - - Fix discovery race condition (most obvious in Wemo) ([@balloob]) - -### {% linkable_title Release 0.33.4 - November 24 %} - - - Set executor pool size to 10 (as intended) ([@pvizeli]) - -This should fix occasional performance problems that some people have reported. - -### {% linkable_title Breaking changes %} - - - We have included a fix that impacts how we generate entity ids. This only impacts devices with accented characters. Instead of being stripped out, they are now replaced with the non-accented version. So now `Tèst Mörê` will become `test_more` instead of `tst_mr`. - - Command line switches will now use the specified object ID for their entity ID instead of basing it off the name. - -### {% linkable_title Reporting issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker]. Make sure to fill in all fields of the issue template. - -[issue tracker]: https://github.com/home-assistant/home-assistant/issues -[@bah2830]: https://github.com/bah2830 -[@balloob]: https://github.com/balloob -[@bestlibre]: https://github.com/bestlibre -[@betrisey]: https://github.com/betrisey -[@Chris-V]: https://github.com/Chris-V -[@danijelst]: https://github.com/danijelst -[@Diaoul]: https://github.com/Diaoul -[@fabaff]: https://github.com/fabaff -[@fbradyirl]: https://github.com/fbradyirl -[@gonzalezcalleja]: https://github.com/ -[@jnimmo]: https://github.com/jnimmo -[@kellerza]: https://github.com/kellerza -[@lwis]: https://github.com/lwis -[@magicus]: https://github.com/magicus -[@mnestor]: https://github.com/mnestor -[@mweinelt]: https://github.com/mweinelt -[@n8henrie]: https://github.com/n8henrie -[@pvizeli]: https://github.com/pvizeli -[@sdague]: https://github.com/sdague -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@jchapple]: https://github.com/jchapple -[@Khabi]: https://github.com/Khabi - -[api-stream]: /components/sensor.api_stream/ -[cisco]: /components/device_tracker.cisco_ios/ -[Command Line]: /components/switch.command_line/ -[Envisalink]: /components/envisalink/ -[google]: /components/calendar.google/ -[Hue]: /components/light.hue/ -[locative]: /components/device_tracker.locative/ -[mqtt-template]: /components/light.mqtt_template/ -[mqtt-will]: /components/mqtt/ -[pvoutput]: /components/sensor.pvoutput/ -[swisscom]: /components/device_tracker.swisscom/ -[TP Link]: /components/switch.tplink/ -[wink-climate]: /components/climate.wink/ -[neato]: /components/neato/ -[Emulated Hue]: /components/emulated_hue/ -[Wake on Lan switch]: /components/switch.wake_on_lan/ -[template function]: /topics/templating/#home-assistant-template-extensions -[HTTP]: /components/http/ -[MQTT]: /components/mqtt/ diff --git a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown deleted file mode 100644 index 1c9ca273f8..0000000000 --- a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown +++ /dev/null @@ -1,231 +0,0 @@ ---- -layout: post -title: "0.34: New Remote component, Websockets, Sonarr, GPSLogger" -description: "Major improvements of HomeMatic, Tellstick, the HTTP component, and more." -date: 2016-12-03 08:04:05 +0000 -date_formatted: "December 3, 2016" -author: Fabian Affolter et al. -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2016-12-0.34/social.png ---- - -Here we go... 0.34. Let's call it the "Santa Claus" release. Rudolph was faster than expected and there's lot's of goodies on the sleigh. Of course, more work on async programming done by [@pvizeli] and [@balloob], new components, new platforms, major improvements, and much more. - -### {% linkable_title GPSLogger %} - -The work of [@dainok] let's you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the [GPSLogger](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) app. GPSLogger can use multiple sources: the passive one just get the latest Android known location, without activating GPS sensors or scanning for WiFi networks. - -### {% linkable_title Remote component %} - -The brand new [`remote`][remote] component made by [@iandday] will simplify the integration of all kinds of remote control units. The first platform for [Harmony][harmony] is included in this release. - -### {% linkable_title HomeMatic %} - -The [HomeMatic][homematic] component has received some updates worth mentioning: - -* Additional services - * `reconnect`: Reconnect to your CCU/Homegear without restarting Home Assistant. - * `set_dev_value`: Manually control a device, even if it's not supported by Home Assistant yet. -* Support for multiple HomeMatic hosts -* Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices) -* Various improvements and fixes, especially for HM-Sec-Key (KeyMatic) - -The support for multiple hosts is a result of allowing mixed configurations with wireless, wired, and IP devices. This has the drawback of making the update a breaking change (along with the renamed `set_value` service). However, the benefits and possibilities gained will be worth it. - -### {% linkable_title Websocket API %} - -This release includes a new [websockets][websockets] based API by [@balloob] to power the next generation of Home Assistant frontends. The current frontend has been partly migrated to use it and will be further migrated in the future. - -## {% linkable_title All changes %} - -- New services and improved device support for [HomeMatic][homematic] ([@pvizeli], [@danielperna84]) -- Device tracker: New support for [GPSLogger][gpslogger] ([@dainok]) -- Sensor: Support for [Sonarr][sonarr] ([@hborawski]) -- Sensor: [World Air Quality Index][waqi] sensor ([@valentinalexeev], [@fabaff]) -- Sensor: Support for [Dutch Smart Meter Requirements][dsmr] ([@aequitas]) -- Switch: [Hook][hook] support by hooksmarthome.com ([@dasos]) -- Camera: Integration for [Nest cameras][nest-cam] ([@technicalpickles]) -- Light: Support for light effects ([@Diaoul]) -- Sensor: New [Threshold][threshold] sensor ([@fabaff]) -- Media player: New [DuneHD][dunehd] integration([@valentinalexeev]) -- Media player: Controlling support for [Philips TVs][philips] ([@aequitas]) -- Camera: Support for [Amcrest][amcrest] cameras ([@tchellomello]) -- Sensor: Monitoring support for [Network UPS Tools (NUT)][nut] ([@mezz64]) - -- Mediap player - Denon: Source selection support ([@Gilles95]) -- Sensor - MinMax: Precision now configurable ([@exxamalte]) -- Tellstick: Massive [improvement][tellstick] ([@magicus]) -- Light - Osram: New requirement ([@tfriedel]) -- Sensor - Systemmonitor: Support for removable network adapters ([@mnoorenberghe]) -- LiteJet: New trigger option ([@joncar]) -- Media player - Bose: Add Bose SoundTouch device support ([@CharlesBlonde]) -- HTTP: Re-organisation and [websockets] support ([@balloob]) -- HTTP: Advanced [IP filtering][filtering] ([@vkorn]) -- Sensor - KNX: Fix unit of mesaurement ([@cyberjunky]) -- Climate: New precision properties ([@sdague]) -- Sensor - TEMPer: Reset [devices][temper] on address change ([@vemek]) -- Core: Color names now follow w3.org recommandations ([@srcLurker]) -- Updater: Robustness improvements ([@balloob]]) -- Media player - MPD: Reconnect to daemon ([@janLo]) -- Device tracker: Fall-back for MAC address lookup ([@aequitas]) -- Sensor - Efergy: Get the amount of [energy consumed][efergy] ([@gonzalezcalleja]) -- Zeroconf: Fix for IPv6 support ([@rcloran]) -- Minor and not so minor features and bug fixes by [@turbokongen], [@sdague], [@pvizeli], [@fabaff], [@chapple], [@mweinelt], [@Khabi], [@balloob], [@mnestor], [@kellerza], [@Morrisai], -[@michaelarnauts], [@tchellomello], [@lwis], [@bjarniivarsson], [@danielperna84], [@LinuxChristian], [@MartinHjelmare], [@dethpickle], [@jnewland], [@lichtteil], [@brandonweeks], [@partofthething], [@mnoorenberghe], [@bah2830], and [@albertoarias]. - -### {% linkable_title Release 0.34.1 - December 4 %} - -This release has a bunch of bug fixes including a big one: emulated_hue will now work with Google Home! We usually reserve patch releases for small bug fixes but we considered this more impactful bug fix so important that we're including it now instead of having people wait two weeks. - -To make the fix backwards compatible (it is a patch release after all) you will have to add two new configuration option to emulated_hue to have it work with Google Home: - -```yaml -emulated_hue: - type: google_home - # This is important. Sadly, Google Home will not work with other ports. - listen_port: 80 -``` - -We are working on a better solution for 0.35. - -- Fix emulated_hue with Google Home ([@balloob]) -- Fix Sonos invalid config error ([@pvizeli]) -- Fix Synology DSM doing I/O inside event loop ([@balloob]) -- Fix Nest camera issues ([@technicalpickles]) -- Fix occasional hangs in Homematic ([@pvizeli]) -- Revert TP-Link upgrade to fix issues ([@mweinelt]) -- Fix CORS ([@balloob]) - -### {% linkable_title Release 0.34.2 - December 5 %} - -- Fix Nest interpreting Celsius as Fahrenheit and converting it ([@balloob]) -- Fix Nest sensor platforms throwing errors ([@technicalpickles]) -- Frontend will now always show persistent_notification and configurator entities even if not part of the active view ([@balloob]) -- Fixed media player cards taking up unnecessary space ([@balloob]) - -### {% linkable_title Release 0.34.3 - December 6 %} - - - Fix Hook connections ([@dasos]) - - Fix random websocket connections ([@balloob]) - - Fix Google Home sometimes not finding our emulated_hue ([@jawilson]) - - Fix EnOcean config validation ([@rubund]) - -### {% linkable_title Release 0.34.4 - December 7 %} - - - 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 between turning on multiple entities ([@balloob]) - - Fix Nest Climate temperature issues ([@technicalpickles]) - -### {% linkable_title Release 0.34.5 - December 12 %} - - - Fix Nest sensors doing I/O inside event loop ([@balloob]) - - Fix Nest version bump not triggering re-install ([@R1chardTM]) - - Fix Nest cameras without activity zones ([@technicalpickles]) - - Fix Plex doing I/O inside event loop ([@balloob]) - -### {% linkable_title Breaking changes %} - -- The [HomeMatic][homematic] component now uses a different syntax for hosts and the `set_value` service has been renamed. -- All [RFXtrx][rfxtrx] sensors will get a new entity ID. -- The frontend now uses websockets. If you run a server in front of Home Assistant, you will have to update your config (example [nginx][nginx]) -- [Nest][nest] contains changes which will require your attention. - -### {% 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://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use these 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. - -[@R1chardTM]: https://github.com/R1chardTM -[@armills]: https://github.com/armills -[@jawilson]: https://github.com/jawilson -[@rubund]: https://github.com/rubund -[@aequitas]: https://github.com/aequitas -[@albertoarias]: https://github.com/albertoarias -[@bah2830]: https://github.com/bah2830 -[@balloob]: https://github.com/balloob -[@bjarniivarsson]: https://github.com/bjarniivarsson -[@brandonweeks]: https://github.com/brandonweeks -[@cawilliamson]: https://github.com/cawilliamson -[@chapple]: https://github.com/chapple -[@CharlesBlonde]: https://github.com/CharlesBlonde -[@cyberjunky]: https://github.com/cyberjunky -[@dainok]: https://github.com/dainok -[@danielperna84]: https://github.com/danielperna84 -[@dasos]: https://github.com/dasos -[@dethpickle]: https://github.com/dethpickle -[@Diaoul]: https://github.com/Diaoul -[@exxamalte]: https://github.com/exxamalte -[@fabaff]: https://github.com/fabaff -[@Gilles95]: https://github.com/Gilles95 -[@gonzalezcalleja]: https://github.com/gonzalezcalleja -[@hartmms]: https://github.com/hartmms -[@hborawski]: https://github.com/hborawski -[@iandday]: https://github.com/iandday -[@janLo]: https://github.com/janLo -[@jnewland]: https://github.com/jnewland -[@joncar]: https://github.com/joncar -[@kellerza]: https://github.com/kellerza -[@Khabi]: https://github.com/Khabi -[@lichtteil]: https://github.com/lichtteil -[@LinuxChristian]: https://github.com/LinuxChristian -[@lwis]: https://github.com/lwis -[@magicus]: https://github.com/magicus -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@mezz64]: https://github.com/mezz64 -[@mezz64]: https://github.com/mezz64 -[@michaelarnauts]: https://github.com/michaelarnauts -[@mnestor]: https://github.com/mnestor -[@mnoorenberghe]: https://github.com/mnoorenberghe -[@molobrakos]: https://github.com/molobrakos -[@Morrisai]: https://github.com/Morrisai -[@mtreinish]: https://github.com/mtreinish -[@mweinelt]: https://github.com/mweinelt -[@nsideras]: https://github.com/nsideras -[@partofthething]: https://github.com/partofthething -[@pavoni]: https://github.com/pavoni -[@persandstrom]: https://github.com/persandstrom -[@postlund]: https://github.com/postlund -[@pvizeli]: https://github.com/pvizeli -[@rcloran]: https://github.com/rcloran -[@sdague]: https://github.com/sdague -[@skyval]: https://github.com/skyval -[@srcLurker]: https://github.com/srcLurker -[@tchellomello]: https://github.com/tchellomello -[@technicalpickles]: https://github.com/technicalpickles -[@tfriedel]: https://github.com/tfriedel -[@turbokongen]: https://github.com/turbokongen -[@valentinalexeev]: https://github.com/valentinalexeev -[@vemek]: https://github.com/vemek -[@vkorn]: https://github.com/vkorn - -[amcrest]: /components/camera.amcrest/ -[boradlink]: /components/sensor.broadlink/ -[dsmr]: /components/sensor.dsmr/ -[dunehd]: /components/media_player.dunehd/ -[efergy]: /components/sensor.efergy/ -[filtering]: /components/http/ -[gpslogger]: /components/device_tracker.gpslogger/ -[harmony]: /components/remote.harmony/ -[homematic]: /components/homematic/ -[hook]: /components/switch.hook/ -[nest-cam]: /components/camera.nest/ -[nest]: /components/nest/ -[nginx]: /ecosystem/nginx/ -[nut]: /components/sensor.nut/ -[philips]: /components/media_player.philips_js/ -[remote]: /components/remote/ -[rfxtrx]: /components/rfxtrx/ -[sonarr]: /components/sensor.sonarr/ -[tellstick]: /components/tellstick/ -[temper]: /components/sensor.temper/ -[threshold]: /components/binary_sensor.threshold/ -[websockets]: /developers/websocket_api/ -[waqi]: /components/sensor.waqi/ - 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 deleted file mode 100644 index 8122118124..0000000000 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ /dev/null @@ -1,156 +0,0 @@ ---- -layout: post -title: "0.35: Text-to-speech, VLC, Flic, netdata" -description: "Home Assistant learned to speak, VLC and AquosTV mediaplayer, Netdata, ZMAG, Flic, and Broadlink" -date: 2016-12-17 08:04:05 +0000 -date_formatted: "December 17, 2016" -author: Fabian Affolter et al. -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2016-12-0.35/social.png ---- - -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! - -## {% linkable_title Text to Speech %} -With the addition of a [text-to-speech][tts] component by [@pvizeli] we have been able to bring Home Assistant to a whole new level. The text-to-speech component will take in any text and will play it on a media player that supports to play media. We have tested this on Sonos, Chromecast, and Google Home. - -[https://www.youtube.com/watch?v=Ke0QuoJ4tRM](https://www.youtube.com/watch?v=Ke0QuoJ4tRM) - -## {% 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 [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. - -This Broadlink [switch][bl-switch] platform allow to you control Broadlink RM2 Pro and RM mini IR+RF devices. This Broadlink [sensor][bl-sensor] platform adds support for Broadlink RM2 and A1 Devices. - -The [GPSLogger](/components/device_tracker.gpslogger/) now also supports attributes as the speed, direction, altitude, provider, and activity. - -## {% linkable_title All changes %} -- Media player: Support for Sharp [AquaosTV][aquostv] ([@titilambert]) -- Media player: [VLC][vlc-media] support ([@Danielhiversen]) -- Switch: Digital Loggers relay([@dethpickle]) -- Sensor: Support for [Netdata][netdata] ([@fabaff], [@ezar]) -- Sensor: Support weather conditions from Austrian [ZAMG][zamg] ([@mjl]) -- Verisure: Add Verisure smartcam capture service ([@turbokongen]) -- Binary sensor: [Flic][flic] button support added ([@soldag]) -- Sensor: Support for [Sense HAT][sensehat] ([@farminf]) -- Binary sensor: [Hikvision][hikvision] binary sensor support ([@mezz64]) -- [Text-to-speech][tts] support ([@pvizeli]) -- Sensor: Support for Broadlink [sensors][bl-sensor] ([@Danielhiversen]) -- Switch: Broadlink [switches][bl-switch] supported now ([@Danielhiversen]) - -- Media player: Add `source_list` to universal media player ([@danieljkemp]) -- Binary Sensor: Support improvement for Wink ([@w1ll1am23]) -- Sensor: More features for DSMR ([@aequitas]) -- Automation: Parse payload as JSON ([@balloob]) -- Mediap player - Cast: New progress indicator ([@balloob]) -- Device tracker: New attributes ([@balloob], [@Danielhiversen]) -- Binary sensor - netatmo: Add support for tags ([@jabesq]) -- Climate: Add `away_mode` for RadioThermostat ([@trisk]) -- Device tracker - nmap: Make scan option configurable ([@Danielhiversen]) -- Climate - Ecobee: Add SmartAway option ([@devdelay]) -- Light - Hue: Add support for Hue LightGroups ([@michaelarnauts]) -- Media player - Emby: New support for trailer and media position ([@mezz64]) -- Camera - Amcrest: Support for resolution ([@tchellomello]) -- Media player - Kodi: Authentification fixed and fan art ([@balloob], [@joopert]) -- Minor and not so minor features and bug fixes by [@pvizeli], [@jminn], [@magicus], [@teodoc], [@fabaff], [@technicalpickles], [@balloob], [@lukas-hetzenecker], [@rubund], [@dasos], [@trisk], [@armills], [@auduny], [@lwis], [@nkgilley], [@janLo], [@keatontaylor], [@stefan-jonasson], [@Jypy], [@jawilson], [@DavidLP], [@molobrakos], [@jabesq], [@joerocklin], [@kellerza], [@kirichkov], [@r-jordan] and [@danielperna84]. - -### {% 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: - -```yaml -http: - base_url: example.duckdns.org -``` - - - Fix exit hanging on OS X with async logging ([@balloob]) - - Fix Text to speech clearing cache ([@pvizeli]) - - Allow setting a base API url in HTTP component ([@balloob]) - - Fix occasional errors in automation ([@pvizeli]) - -### {% linkable_title Release 0.35.2 - December 19 %} - - - When base url specified, do not combine it with `server_port` ([@balloob]) - -### {% linkable_title Release 0.35.3 - December 23 %} - - - Fix issue with voicerrs and post api ([@pvizeli]) - - Fix async component update on service calls ([@pvizeli]) - - Fix async log handle do not close ([@pvizeli]) - - 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][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. - - -[@r-jordan]: https://github.com/r-jordan -[@aequitas]: https://github.com/aequitas -[@armills]: https://github.com/armills -[@auduny]: https://github.com/auduny -[@balloob]: https://github.com/balloob -[@Danielhiversen]: https://github.com/Danielhiversen -[@danieljkemp]: https://github.com/danieljkemp -[@danielperna84]: https://github.com/danielperna84 -[@dasos]: https://github.com/dasos -[@DavidLP]: https://github.com/DavidLP -[@dethpickle]: https://github.com/dethpickle -[@devdelay]: https://github.com/devdelay -[@ezar]: https://github.com/ezar -[@fabaff]: https://github.com/fabaff -[@farminf]: https://github.com/farminf -[@jabesq]: https://github.com/jabesq -[@janLo]: https://github.com/janLo -[@jawilson]: https://github.com/jawilson -[@jminn]: https://github.com/jminn -[@joerocklin]: https://github.com/joerocklin -[@joopert]: https://github.com/joopert -[@Jypy]: https://github.com/Jypy -[@keatontaylor]: https://github.com/keatontaylor -[@kellerza]: https://github.com/kellerza -[@kirichkov]: https://github.com/kirichkov -[@Landrash]: https://github.com/Landrash -[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker -[@lwis]: https://github.com/lwis -[@magicus]: https://github.com/magicus -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@mezz64]: https://github.com/mezz64 -[@michaelarnauts]: https://github.com/michaelarnauts -[@mjl]: https://github.com/mjl -[@molobrakos]: https://github.com/molobrakos -[@nkgilley]: https://github.com/nkgilley -[@pvizeli]: https://github.com/pvizeli -[@rubund]: https://github.com/rubund -[@soldag]: https://github.com/soldag -[@stefan-jonasson]: https://github.com/stefan-jonasson -[@tchellomello]: https://github.com/tchellomello -[@technicalpickles]: https://github.com/technicalpickles -[@teodoc]: https://github.com/teodoc -[@titilambert]: https://github.com/titilambert -[@trisk]: https://github.com/trisk -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 - -[vlc-media]: /components/media_player.vlc/ -[aquostv]: /components/media_player.aquostv/ -[digitalloggers]: /components/switch.digitalloggers/ -[netdata]: /components/sensor.netdata/ -[bl-sensor]: /components/sensor.broadlink/ -[bl-switch]: /components/switch.broadlink/ -[hikvision]: /components/binary_sensor.hikvision/ -[zamg]: /components/sensor.zamg/ -[flic]: /components/binary_sensor.flic/ -[sensehat]: /components/sensor.sensehat/ -[tts]: /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 deleted file mode 100644 index cbdc2a6d45..0000000000 --- a/source/_posts/2016-12-19-thank-you.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: post -title: "Thank You" -description: "Thanks to all our contributors, dependencies and companies that help make Home Assistant awesome." -date: 2016-12-19 21:04:05 UTC -date_formatted: "December 19, 2016" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community -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. 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. - -However, being on a two week release cycle also means that the community has to rally each two weeks to make sure everything is ready to go. A lot of people are involved in making sure that all pieces are in place, to all of those: thank you! Thank you for all the time and effort you put in to make Home Assistant the best home automation software out there. - -Another big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. Making quality software is not a small feat and all of you can be proud of yourself. - -Also a big thanks for the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thanks [GitHub], [TravisCI], [CloudFlare] and [Discourse]! - -And finally thank you community for being so helpful and awesome 🙇. - -We're taking a well deserved break and we will be back again in 2017 with more awesomeness. Happy holidays! - -– Paulus - -[0.10]: /blog/2015/12/22/amazon-echo-icloud-and-templates/ -[AppFolio]: http://www.appfolioinc.com/ -[GitHub]: https://GitHub.com -[TravisCI]: https://Travis-ci.org -[CloudFlare]: https://CloudFlare.com -[Discourse]: https://Discourse.com 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 deleted file mode 100644 index 2e16607648..0000000000 --- a/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: post -title: "Control My Christmas Tree Stats" -description: "I used Home Assistant for a publicly controllable Christmas tree and it worked great!" -date: 2017-01-03 18:00:00 +0000 -date_formatted: "January 3, 2017" -author: Ben -author_twitter: bruhautomation -comments: true -categories: Community -og_image: /images/blog/2017-01-bruh-christmas/christmas-tree.gif ---- - -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 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! - -

    - - The Christmas tree in action. -

    - - -During the time by tree was set up, I had 7,366 visitors from 88 countries connect to my Home Assistant instance. This generated an estimated 100,000 clicks on the switches in my Home Assistant instance - thanks in part to some folks who posted up with macros for 6-8 hour stretches. - -

    - - View counts of the video. -

    - -I'm very excited to report that Home Assistant didn't crash a single time. In fact, it didn't even bog down or need to be restarted. The Wemo Insight and Sonoff relays were incredibly resilient, as well. I only had one Sonoff failure and two Wemo Insight failures both of which were resolved by power cycling them. The digital LED strips also fared pretty well, hanging up only twice, aside from a loose connector. - -I would like to send a big thank you to the Home Assistant developers who have worked so hard on making Home Assistant run so well. This project is a testament to your hard work on making Home Assistant one of the best home automation platforms out there. Thank you! - -I’m looking forward to continuing my home automation adventures with Home Assistant and I can't wait for next Christmas with an even bigger and badder tree. :) - -Wishing everyone the best in 2017! - -Cheers! -Ben - -[bruh]: https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w diff --git a/source/_posts/2017-01-14-iss-usps-images-packages.markdown b/source/_posts/2017-01-14-iss-usps-images-packages.markdown deleted file mode 100644 index 3b6623e680..0000000000 --- a/source/_posts/2017-01-14-iss-usps-images-packages.markdown +++ /dev/null @@ -1,195 +0,0 @@ ---- -layout: post -title: "0.36: ISS, USPS, Image processing, Insteon" -description: "Track packages, space stations, TrackR devices, Xiaomi, and UPC connect boxes" -date: 2017-01-14 08:04:05 +0000 -date_formatted: "January 15, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2016-01-0.36/social.png ---- - -Welcome to 2017 and 0.36. We are proud to announce the first release for this year. While we are still migrating parts to async but 0.36 is focusing on new features and a lot of bug fixes. - -### {% linkable_title Packages %} -[Packages][packages] are providing a new way to organize different component's configuration parts together. With packages we offer the option to include different components or parts of configuration using any of the `!include` directives. - -### {% linkable_title InfluxDB export %} -The [InfluxDB][influx] component was causing problems in a wide variety of use cases. [@titilambert] improved our InfluxDB exporter feature. It might be that you need to run the [migration script](/components/influxdb/#migration-script) to update your InfluxDB database. - -```bash -$ hass --script influxdb_migrator \ - -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - -d INFLUXDB_DB_NAME -``` - -### {% linkable_title International Space Station (ISS) %} -No, unfortunately we are not going to space. The `iss` sensor is tracking the position of the International Space Station and gives you some details. - -### {% linkable_title Insteon local %} -The support for Insteon was removed due to issues a while ago. With the `insteon_local` component support for [Insteon][insteon] is back and let one work locally with an Insteon setup. - -### {% linkable_title Image processing %} -The new [image processing component][image] currently works with [number plates][plates]. But this could level the way to integrate feature like facial recognition, motion detection, or gestures control. - -## {% linkable_title All changes %} - -- Sensor: Support for [HydroQuebec][quebec] ([@titilambert]) -- Sensor: Tracking the [ISS][iss] ([@HydrelioxGitHub]) -- Sensor: [USPS][usps] deliveries tracking ([@happyleavesaoc]) -- Device tracker: New [ping-based][ping] tracker ([@michaelarnauts]) -- TTS: Support for [Pico][pico] ([@doudz]) -- Switch: [BeagleBone Black][beaglebone] GPIO are supported now ([@MatoKafkac]) -- Light: New support for [Tikteck][tik] Bluetooth bulbs ([@mjg59]) -- Switch: Support for customised [Kankun SP3 Wifi][kankun] switches ([@webworxshop]) -- Insteon local: Local [insteon][insteon] support([@wardcraigj]) -- `rest_command`: Support for using [REST][rest] ([@pvizeli]) -- Sensor: Show details of the [Dublin RTPI][dublin] information ([@ttroy50]) -- Light: [Zengge Bluetooth][zengge] bulbs ([@mjg59]) -- Fan: Wink support for [fans][wink-fan] ([@w1ll1am23]) -- Device tracker: New [TrackR][trackr] device tracker support ([@w1ll1am23]) -- Device tracker: Support for [Xiaomi router][xiaomi] ([@RiRomain]) -- Sensor: New [SMA Solar Webconnect][sma] sensor ([@kellerza]) -- Notify: [Lannouncer][lannouncer] TTS support ([@michaelarnauts]) -- Image processing: Support for [Image processing][image] ([@pvizeli]) -- Device tracker: [UPC][upc] Connect box platform support ([@pvizeli]) -- Weather: [Australian BOM][bom] (Bureau of Meteorology) support ([@Zac-HD]) -- Notify: Support for [MySensors][mysensors] notifications ([@MartinHjelmare]) -- TTS: New [Yandex SpeechKit TTS][yandex] integration ([@lupin-de-mid]) -- Notify: [Facebook Messenger][facebook] support ([@gopalkildoliya]) - -- Sensor - sonarr: Add `urlbase` to [Sonarr][] ([@quadportnick]) -- Switch - broadlink: Support for [SP][bl-switch] devices ([@Danielhiversen]) -- Homematic: Support for HMIP-PSM or HMWIOSwitch ([@danielperna84], [@pvizeli]) -- Light - flux: Ledenet protocol support by Flux LED ([@bah2830]) -- Device tracker: Support for longer intervals ([@partofthething]) -- ISY994: Weather sensors added ([@rmkraus]) -- InfluxDB: Improvements to avoid issues with storing details ([@titilambert]) -- Light - Yeelight: Auto discovery support and color temperature feature for [Yeelight][yeelight] ([@jjensn]) -- Media player - SqueezeBox: Switch to JSON-RPC ([@dasos]) -- Scripts: Support for `last_triggered` ([@Danielhiversen]) -- Media player: Support for `SUPPORT_PLAY` flag ([@armills]) -- Docker: `ffmpeg` is now included by default ([@colinodell]) -- Minor and not so minor features and bug fixes by [@balloob], [@pvizeli], [@fabaff], [@mezz64], [@andrey-git], [@aequitas], [@abmantis], [@turbokongen], [@jabesq], [@michaelarnauts], [@kellerza], [@titilambert], [@btorresgil], [@henworth], [@armills], [@mjg59], [@Giannie], [@n8henrie], [@magicus], [@florianholzapfel], [@MrMep], [@bah2830], [@happyleavesaoc], [@lwis], [@glance-], [@markferry], and [@nikdoof]. - -### {% linkable_title Release 0.36.1 - January 17 %} - - - Fix load_yaml default value ([@balloob]) - - Fix discovery of flux_led ([@Danielhiversen]) - - Fix Python Nest dependency re-installation ([@Danielhiversen]) - - Make USPS to use absolute path to save cookie ([@tchellomello]) - - Fix UPC_connect cookies ([@pvizeli]) - - Fix Eq3bt import issues ([@rytilahti]) - - Fix Bluetooth and Volvo trackers ([@pvizeli]) - - Fix lannouncer notify platform ([@mKeRix]) - -### {% linkable_title Breaking changes %} - -- [APNS][apns] service was moved to the `notify` domain. Use `notify.apns_NOTIFIER_NAME` instead of `apns.NOTIFIER_NAME`. -- [InfluxDB][influx] component has a new [schema](/components/influxdb/#data-migration) to store values in the InfluxDB database. You may require to run the [`influxdb_migrator`](/components/influxdb/#migration-script) script. - You have to note: - - There will not be any tags/fields named time anymore. - - All numeric fields (int/float/bool) will be stored as float inside influx db. - - All string fields corresponding to state attributes will be renamed as FIELDNAME_str, where FIELDNAME is the state attribute, to avoid type conflicts. - - All string fields corresponding to a state will be renamed as state (former value). - - Fields named value will always be stored as float. - - Fields named state will always be stored as string. -- 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://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. - -[@tchellomello]: https://github.com/tchellomello -[@rytilahti]: https://github.com/rytilahti -[@mKeRix]: https://github.com/mKeRix -[@abmantis]: https://github.com/abmantis -[@aequitas]: https://github.com/aequitas -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@bah2830]: https://github.com/bah2830 -[@balloob]: https://github.com/balloob -[@brandonweeks]: https://github.com/brandonweeks -[@btorresgil]: https://github.com/btorresgil -[@colinodell]: https://github.com/colinodell -[@Danielhiversen]: https://github.com/Danielhiversen -[@danieljkemp]: https://github.com/danieljkemp -[@danielperna84]: https://github.com/danielperna84 -[@dasos]: https://github.com/dasos -[@DavidLP]: https://github.com/DavidLP -[@doudz]: https://github.com/doudz -[@eieste]: https://github.com/eieste -[@fabaff]: https://github.com/fabaff -[@florianholzapfel]: https://github.com/florianholzapfel -[@Giannie]: https://github.com/Giannie -[@glance-]: https://github.com/glance- -[@gopalkildoliya]: https://github.com/gopalkildoliya -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@henworth]: https://github.com/henworth -[@HydrelioxGitHub]: https://github.com/HydrelioxGitHub -[@jabesq]: https://github.com/jabesq -[@jjensn]: https://github.com/jjensn -[@kellerza]: https://github.com/kellerza -[@kk7ds]: https://github.com/kk7ds -[@lupin-de-mid]: https://github.com/lupin-de-mid -[@lwis]: https://github.com/lwis -[@magicus]: https://github.com/magicus -[@markferry]: https://github.com/markferry -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@MatoKafkac]: https://github.com/MatoKafkac -[@mezz64]: https://github.com/mezz64 -[@michaelarnauts]: https://github.com/michaelarnauts -[@mjg59]: https://github.com/mjg59 -[@MrMep]: https://github.com/MrMep -[@n8henrie]: https://github.com/n8henrie -[@nikdoof]: https://github.com/nikdoof -[@partofthething]: https://github.com/partofthething -[@pvizeli]: https://github.com/pvizeli -[@quadportnick]: https://github.com/quadportnick -[@RiRomain]: https://github.com/RiRomain -[@rmkraus]: https://github.com/rmkraus -[@scmmmh]: https://github.com/scmmmh -[@technicalpickles]: https://github.com/technicalpickles -[@titilambert]: https://github.com/titilambert -[@ttroy50]: https://github.com/ttroy50 -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[@webworxshop]: https://github.com/webworxshop -[@Zac-HD]: https://github.com/Zac-HD - -[apns]: /components/notify.apns/ -[beaglebone]: /components/bbb_gpio/ -[bl-switch]: /components/switch.broadlink/ -[bom]: /components/weather.bom/ -[dublin]: /components/sensor.dublin_public_transport/ -[facebook]: /components/notify.facebook/ -[image]: /components/image_processing/ -[influx]: /components/influxdb/ -[insteon]: /components/insteon_local/ -[iss]: /components/sensor.iss/ -[kankun]: /components/switch.kankun/ -[lannouncer]: /components/notify.lannouncer/ -[mysensors]: /components/notify.mysensors/ -[packages]: /topics/packages/ -[pico]: /components/tts.picotts/ -[ping]: /components/device_tracker.ping/ -[plates]: /components/openalpr/ -[quebec]: /components/sensor.hydroquebec/ -[rest]: /components/rest_command/ -[sma]: /components/sensor.sma/ -[sonarr]: /components/sensor.sonarr/ -[tik]: /components/light.tikteck/ -[trackr]: /components/device_tracker.trackr/ -[upc]: /components/device_tracker.upc_connect/ -[usps]: /components/sensor.usps/ -[wink-fan]: /components/fan.wink/ -[xiaomi]: /components/device_tracker.xiaomi/ -[yandex]: /components/tts.yandextts/ -[yeelight]: /components/light.yeelight/ -[zengge]: /components/light.zengge/ - diff --git a/source/_posts/2017-01-18-numbers.markdown b/source/_posts/2017-01-18-numbers.markdown deleted file mode 100644 index 8cbdf4f8a1..0000000000 --- a/source/_posts/2017-01-18-numbers.markdown +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: post -title: "Numbers" -description: "Numbers, lists, etc." -date: 2017-01-18 08:04:05 +0000 -date_formatted: "January 18, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Community ---- - -It's week 3 of 2017 and great things did already happen. This is just a little recap. - -- In the [OSS Metrics leaderboard](https://ossmetrics.com/leaderboard) we are on place 30. Within three months we moved from our starting place which was 66 in September 2016 up to the current one. -- We were listed on [Github Trending](https://github.com/trending/python). Also, was [@balloob](https://github.com/balloob) mentioned as trending developer. -- [@balloob](https://github.com/balloob)'s talk at the OpenIoT Summit 2016 was rated as one of the [Top 5 videos](http://technewsdir.com/top-5-videos-from-embedded-linux-conference-and-openiot-summit-2016) of the conference. -- We now ship over [500](/components/#all) components and platforms. -- We processed over 3500 Pull requests on the [main repository](https://github.com/home-assistant/home-assistant) so far. - -You may ask yourself why this is amazing. It's amazing because we are a community-only project driven by volunteers there is no financial support, no company in the background, and no paid developers who are working on Home Assistant. Here is another "Thank you" because you are the driving force behind Home Assistant. - -What more numbers? Checkout the [Trivia page](/help/trivia/#numbers)... - --- Fabian diff --git a/source/_posts/2017-01-21-home-assistant-governance.markdown b/source/_posts/2017-01-21-home-assistant-governance.markdown deleted file mode 100644 index c3d1f86fe4..0000000000 --- a/source/_posts/2017-01-21-home-assistant-governance.markdown +++ /dev/null @@ -1,105 +0,0 @@ ---- -layout: post -title: "Home Assistant Governance [updated]" -description: "Protecting Home Assistant for all, now and into the future" -date: 2017-01-21 15:05:00 -0800 -date_formatted: "January 21, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Organization ---- - -### {% linkable_title UPDATE JAN 28, 2017 %} - -After feedback from the community we have updated [the CLA][cla] and the license that Home Assistant is distributed under. For the CLA, instead of enforcing requirements on the grants and code, we now require contributions to be licensed under the Apache 2.0 license. Special thanks to [Matthew Garrett][mjg59] for his feedback and advice. - -Starting with release 0.37, Home Assistant will re-license the current code under [the Apache 2.0 license][license]. This is the license that will be used moving forward for all projects under our organization. - ---- - -The Home Assistant project and community has seen enormous growth in the last three years. Many volunteers work tirelessly everyday to give you all the awesomeness that you see today. Much more work is involved than many people realize. Beyond simply coding Home Assistant, volunteers continually maintain related projects, update documentation, post examples, author blog posts, and moderate the forums and chat. This is something that we want to keep safe and functional, even as we grow. - -Starting today we are announcing a few initiatives to help protect our users, contributors and community members. - - -## {% linkable_title Code of Conduct %} - -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 organization. - -[Read the Code of Conduct][coc] - -[coc]: /developers/code_of_conduct/ - -## {% linkable_title Contributor License Agreement %} - -Moving forward we will also require that all contributors to any project have electronically signed our [contributor license agreement (CLA)][cla]. ~~We have adopted the CLA that GitHub uses for their projects~~ (see update at the top). Currently we have no plans to retroactively require a CLA for previous contributions, only those going forward. - -Until a signed CLA is on file your pull request will not be reviewed or accepted. When you open a new pull request, if you do not have a CLA on file, our helpful bot will walk you through the steps to complete the process. - -**We intend to require an electronically signed contributor licensing agreement for all contributors beginning with our next release (0.37), currently scheduled for release on Saturday, January 28th, 2017 (one week from today).** The CLA is being added to all repositories today. - -A CLA is difficult to describe but GitHub did an excellent job so this next section is taken from [https://cla.github.com][gh-cla]: - -### {% linkable_title What is a Contributor License Agreement? %} - -A Contributor License Agreement, known as a CLA, asks contributors to confirm that: - -1. Anyone can use your contributions anywhere, for free, forever. -2. Your contributions do not infringe on anyone else's rights. - -The GitHub CLA helps ensure the smooth operation and usability of the open source projects that we maintain. - -### {% linkable_title Why is a CLA necessary? %} - -It depends on the jurisdiction, but in the United States, contributions are owned by the author or their employer. When the contribution is accepted, the project becomes a bundle of derivative works. The agreement of all contributors are necessary to maintain distribution of the complete project and to any licensing agreement. - -### {% linkable_title Isn’t that the purpose of an open source license? %} - -Most open source licenses deal with use of the original code, and don’t refer to contributions, or derivatives of the original. - -### {% linkable_title How does a CLA protect a project? %} - -If the owner of a contribution decides that they don’t want the contribution to be part of the project or in any given distribution, the law is on their side. The project, contributors, and users may be subject to legal action. This may require payment of damages and could prevent further usage or contributions until the matter is resolved. - -Even when there is no legal pursuit, too much ambiguity can jeopardize or doom a project by preventing those that can’t risk legal action from getting involved. - -### {% linkable_title Why does it seem like only "corporate" projects have a CLA? %} - -There are many projects without corporate ownership that use a CLA or even a copyright assignment: jQuery and Eclipse, for example. However, it is true that projects with financial backing tend to be at a higher risk of becoming a target, so they may have a lower tolerance for legal ambiguity. - -## {% linkable_title Security requirements %} - -With more collaborators involved with Home Assistant we are also exposing ourselves to more risk as more people have write access. As such we taking the following steps. - - 1. As of November 3rd, 2016, all collaborators have been required to have 2 factor authentication (2FA) enabled on their GitHub account. - 2. Going forward, we will do an audit from time to time and strip collaborators from write access if they haven't contributed for a while. This is in no sense meant to boot people, and you are absolutely eligible to get it back in the future when you wish start contributing again. - -## {% linkable_title Licensing %} - -We will now ensure that a `LICENSE.md` file exists in all projects under the Home Assistant organization and is an [OSI approved open source license](https://opensource.org/licenses) or a [Creative Commons](https://creativecommons.org) license. - -### {% linkable_title Code License %} - -The chosen license for all code projects under the Home Assistant organization is [the Apache 2.0 license][license]. - -### {% linkable_title Documentation License %} - -All content on home-assistant.io and all other documentation/asset projects under the Home Assistant organization will be licensed under the Creative Commons License, specifically the [Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/) license. - -## {% linkable_title Crediting contributors %} - -We have now mostly automated updating the [Credits](/developers/credits/) page so that contributors get their attribution more quickly. - -## {% 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][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 deleted file mode 100644 index 4a4f572ebf..0000000000 --- a/source/_posts/2017-01-28-face-coffee-wink.markdown +++ /dev/null @@ -1,263 +0,0 @@ ---- -layout: post -title: "0.37: Face detection, Coffee, Wink" -description: "Governance, Face recognition, improved camera security, and a coffee maker" -date: 2017-01-28 08:04:05 +0000 -date_formatted: "January 28, 2017" -author: Fabian Affolter et al. -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2017-01-0.37/social.png ---- - - -No stats, no numbers, and alike this time. Ok, just one number: 0.37. We are back on track with our bi-weekly release cycle. Beside some organizational changes is this release shipping again cool features and new integrations. Please keep an eye on the "Breaking changes" section because there are also massive improvements for some platforms and components. - -### {% linkable_title Governance %} -As announced, the new [Governance][gov] requires for developers to sign the CLA. [Code of Conduct][coc], [Contributor License Agreement][cla], and proper [Licensing][license] will to protect all involved parties in the Home Assistant eco-system from users and community members to contributors. - -### {% linkable_title Face recognition using the Microsoft Face API %} -[@pvizeli] has been on a roll with the image processing integrations. This time it's the [Microsoft Face API][face]. This means that now it will be possible to train the API with the people you want to recognize and send images from your camera to the API as another source of automation. - -Want to play a personalized tune when someone enters the house? It is now possible 😎 - -### {% linkable_title Improved camera security %} - -After a security audit by Stephen O'Conner, he found that our source for randomly generated access tokens for camera feeds were reasonable predictable and could be brute force attacked in 2.5 weeks. A fix has been included in this release that uses the system provided random number generator for maximum randomness and rotates the keys every 10 minutes to reduce the window in which a brute force attack can happen. - -Although the old method is not insecure, the new method is a lot more secure. Upgrading to the latest version is encouraged. - -### {% linkable_title New customization options %} -[@Andrey-git] has added some great new options to the customize functionality. It is now possible to specify customizations as a wildcard for entities or for a specific domain. - -### {% linkable_title Major Wink and HDMI CEC improvements %} -[@w1ll1am23] did an amazing job fixing a ton of bugs and issues with the Wink integration. Biggest improvement is that it now is able to automatically refresh the authentication tokens. This means that if you have your email address and password in your `configuration.yaml` file, no `client_id` and `client_secret` are needed, and token which was generated with the generator located in the [Wink][wink] documentation. - -The new Wink support will cause renaming of all the binary sensors and will also create new sensors for devices that weren't previously detected or supported in the older version. - -Thanks to [@konikvranik] the [HDMI CEC][cec] integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI CEC and give you more control. - -### {% linkable_title First Coffee Maker supported %} -[@stu-gott] has added support for the first coffee maker in Home Assistant: [Mr. Coffee Smart Optimal Brew][coffee]. Happy brewing! - -### {% linkable_title All changes %} -#### {% linkable_title New platforms/components %} - -- Netatmo: [Netatmo][netatmo] Presence support ([@gieljnssns]) -- Sensor: [Amcrest][amcrest] camera sensors ([@tchellomello]) -- Notify: New [Discord][discord] notification component ([@Deinara]) -- Device tracker: [Tado][tado] device tracker support ([@jmvermeulen]) -- Sensor: Add [Skybeacon][skybeacon] BLE temperature/humidity sensor ([@anpetrov]) -- New [Zabbix][zabbix] component ([@Whytey]) -- Media player: New platform [Anthemav][anthem] Media player ([@nugget]) -- Light: Add support for [Avion][avion] Bluetooth dimmer switches ([@mjg59]) -- Binary sensor: [Beaglebone Black][bb-bin] binary sensor ([@MatoKafkac]) -- Light: [Piglow][piglow] support ([@xarnze]) -- [Face][face] recognition for automation ([@pvizeli]) -- Sensor: New [Washington State DOT][wsdot] sensor ([@partofthething]) -- Support for Wemo CoffeeMaker devices ([@stu-gott]) -- Device tracker: [Sky hub][sky] support ([@alexmogavero]) -- Support for [Lutron][lutron] RadioRA 2 ([@thecynic]) -- TTS: Amazon [Polly TTS][polly] platform ([@robbiet480]) -- Device tracker: Support for [Linksys][linksys] Access Points ([@lukas-hetzenecker]) -- Notify: Make calls with [Twilio][twilio] ([@fakezeta]) - -#### {% linkable_title Improvements %} - -- Script: Fix script release ([@balloob]) -- Camera - Amcrest: Add support for direct MJPEG streams from Amcrest cameras ([@colinodell]) -- Sensor - Miflora: Removing throttle decorator ([@freol35241]) -- Notify - Lannouncer: Fix `get_service` method ([@mKeRix]) -- Sensor - WAQI: Add station parameter to waqi sensor ([@whhsw]) -- Sensor - USPS: Absolute path to save cookie used by USPS sensor ([@tchellomello]) -- Nest: Fix python-nest release number ([@Danielhiversen]) -- Keyboard remote: Improve support ([@MrMep]) -- Device tracker - VolvoOnCall: Fix timedelta ([@pvizeli]) -- Climate - eq3btsmart: Expose away attribute ([@rytilahti]) -- Remote: Reserve a test port for broken API to fix race ([@armills]) -- Climate - Ecobee: Made target temperature sensitive to auto mode ([@Duoxilian]) -- Configuration: Fix load_yaml default value ([@balloob]) -- Notify - Facebook: Fix encoding error ([@Danielhiversen]) -- Emulated_hue: Add `upnp_bind_multicast` option, default type to Google, and persist emulated hue IDs ([@hoopty], [@balloob]) -- Docker: Install phantomjs in Docker container ([@jnewland]) -- Media player - MPD: Add listing and selection of available MPD playlists ([@partofthething]) -- Media player - Denon AVR: Denon improvements ([@glance-]) -- Light - x10.py: Improved x10 state monitoring ([@martst]) -- Sensor - DSMR: TCP, reconnecting and V4 CRC support ([@aequitas]) -- Media player - Yamaha.py: Fix Yamaha doing I/O in event loop ([@balloob]) -- Device tracker UPC: Make upc more robust ([@pvizeli]) -- Climate - Generic thermostat: Update ([@MrMep]) -- Device tracker - Xiaomi.py: Xiaomi Mi Router token refresh ([@RiRomain]) -- Camera - MJPEG: Support still image for thumbmail ([@pvizeli]) -- Sensor - ZAMG: Updated valid station id list ([@HerrHofrat]) -- Light - ISY994: Not overwrite `state_attributes` ([@rmkraus])[emul-hue] -- Light - Zwave: Use only supported features for devices ([@turbokongen]) -- Media player - Kodi: Support for volume stepping ([@armills]) -- Media player- roku: Use `is_screensaver`, update IDLE state, and use device name ([@robbiet480], [@xhostplus]) -- Switch - HDMI CEC: Support for devices and commands ([@konikvranik]) -- Lock - Zwave: Improvements to Zwave lock platform ([@turbokongen]) -- TTS: Invalidate broken file cache entries ([@stu-gott]) -- Light - Hue: Improvements ([@robbiet480]) -- TTS - YandexTTS: Added speed and emotion to Yandex TTS ([@lupin-de-mid]) -- 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: 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]) -- Media player - Kodi: Add SSL configuration option ([@ecksun]) -- Sensor - WAQI: Add missing particle value ([@fabaff]) -- Wink: Support for python-wink 1.0.0 ([@w1ll1am23]) -- Binary sensor - RPi GPIO: Add a small sleep before reading the sensor ([@snagytx]) -- Sensor - USPS: Add name to configuration ([@happyleavesaoc]) -- Sensor - Miflora: Remove throttle decorator from miflora platform ([@freol35241]) -- Device tracker - asuswrt.py: Add IPv6 support when parsing neighbors ([@leppa]) -- iOS: Discover notify.ios when iOS component loads ([@robbiet480]) -- Homematic: Add MAX shutter contact class ([@jannau]) -- Sensor - Darksky: Added forecast support ([@nordlead2005]) -- Switch - Pilight: Implement echo config option ([@janLo]) -- Core: Support customize in packages ([@kellerza]) -- Switch - Flux: Allow disabling setting the brightness ([@rytilahti]) -- Media player - Sonos: Add `is_coordinator`, set coordinator after join/unjoin, and no empty image ([@pvizeli], [@andrey-git], [@robbiet480]) -- Climate: Hold mode ([@Duoxilian]) -- Switch - TPlink: No longer doing I/O in event bus ([@balloob]) -- Light - Insteon local: Improve Insteon configuration ([@wardcraigj]) -- Emulated Hue: Emulated Hue "host-ip" fails to bind when running in docker without `--net=host` ([@jeremydk]) -- Climate - EQ3 BT smart: Add reporting for availability ([@rytilahti]) - -Bugfix: [@balloob], [@fabaff], [@freol35241], [@pvizeli], [@Danielhiversen], [@tdickman], [@armills], [@rytilahti], [@R1chardTM], [@asbach], [@happyleavesaoc], [@robbiet480], [@colinodell], [@joopert], [@dale3h], [@pavoni], [@jaharkes], [@MartinHjelmare], [@mezz64], [@jabesq], and you if you are missing in this list. - -### {% linkable_title Release 0.37.1 - February 2 %} - -- Do not reject alphanumeric IDs for PiLight ([@DavidLP]) -- Fix broken Hue discovery ([@DanielHiversen]) -- Fix Amcrest ([@tchellomello]) -- 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]) -- 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]) -- Prevent infinite loop in crossconfigured mqtt event streams ([@aequitas]) -- Fix Hue lightgroups failing on startup ([@tboyce1]) - -### {% linkable_title Breaking changes %} -- A **major** breaking change in the [`emulated_hue`][emul-hue] component means that unless you set `type: alexa` before starting up the newer Home Assistant version you will lose all devices that Alexa has discovered and will need to re-add them as well as create new groups. -- The platform of the [ISS][iss] integration was change to `binary_sensor`. Please check the platform documentation. -- The [Roku][roku] media uses now a new format for the entity IDs. -- [OpenALPR][openalpr] is no longer a component. It's now a platform for [Image processing][image]. -- Due to massive improvements of the [Wink][wink] integration, the names of your binary sensors will change and new devices can show up. -- The [MySensors][mysensors] component now requires all persistence file paths to be set if any is set by the user. This is to avoid name conflicts for the paths. If no path is set Home Assistant will set all paths for you. -- The [Sonos][sonos] service `sonos_group_players` was removed. Use now `sonos_join` for this function. -- TTS cache have change for the last time. Files use now also an 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://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. - -[@DavidLP]: https://github.com/DavidLP -[@molobrakos]: https://github.com/molobrakos -[@tboyce1]: https://github.com/tboyce1 -[@MrMep]: https://github.com/MrMep -[@joopert]: https://github.com/joopert -[@armills]: https://github.com/armills -[@janLo]: https://github.com/janLo -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@danielperna84]: https://github.com/danielperna84 -[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker -[@robbiet480]: https://github.com/robbiet480 -[@mjg59]: https://github.com/mjg59 -[@turbokongen]: https://github.com/turbokongen -[@whhsw]: https://github.com/whhsw -[@jabesq]: https://github.com/jabesq -[@asbach]: https://github.com/asbach -[@stefan-jonasson]: https://github.com/stefan-jonasson -[@fabaff]: https://github.com/fabaff -[@RiRomain]: https://github.com/RiRomain -[@freol35241]: https://github.com/freol35241 -[@jmvermeulen]: https://github.com/jmvermeulen -[@thecynic]: https://github.com/thecynic -[@aequitas]: https://github.com/aequitas -[@balloob]: https://github.com/balloob -[@konikvranik]: https://github.com/konikvranik -[@jeremydk]: https://github.com/jeremydk -[@alexmogavero]: https://github.com/alexmogavero -[@Duoxilian]: https://github.com/Duoxilian -[@nugget]: https://github.com/nugget -[@mezz64]: https://github.com/mezz64 -[@pavoni]: https://github.com/pavoni -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@R1chardTM]: https://github.com/R1chardTM -[@andrey-git]: https://github.com/andrey-git -[@kellerza]: https://github.com/kellerza -[@dale3h]: https://github.com/dale3h -[@Deinara]: https://github.com/Deinara -[@jaharkes]: https://github.com/jaharkes -[@tchellomello]: https://github.com/tchellomello -[@jannau]: https://github.com/jannau -[@glance-]: https://github.com/glance- -[@w1ll1am23]: https://github.com/w1ll1am23 -[@ecksun]: https://github.com/ecksun -[@nordlead2005]: https://github.com/nordlead2005 -[@rytilahti]: https://github.com/rytilahti -[@rmkraus]: https://github.com/rmkraus -[@pvizeli]: https://github.com/pvizeli -[@anpetrov]: https://github.com/anpetrov -[@partofthething]: https://github.com/partofthething -[@wardcraigj]: https://github.com/wardcraigj -[@Danielhiversen]: https://github.com/Danielhiversen -[@colinodell]: https://github.com/colinodell -[@hoopty]: https://github.com/hoopty -[@martst]: https://github.com/martst -[@Whytey]: https://github.com/Whytey -[@MatoKafkac]: https://github.com/MatoKafkac -[@stu-gott]: https://github.com/stu-gott -[@jnewland]: https://github.com/jnewland -[@tdickman]: https://github.com/tdickman -[@xarnze]: https://github.com/xarnze -[@snagytx]: https://github.com/snagytx -[@gieljnssns]: https://github.com/gieljnssns -[@leppa]: https://github.com/leppa -[@lupin-de-mid]: https://github.com/lupin-de-mid -[@HerrHofrat]: https://github.com/HerrHofrat -[@xhostplus]: https://github.com/xhostplus -[@mKeRix]: https://github.com/mKeRix -[@fakezeta]: https://github.com/fakezeta - -[amcrest]: /components/binary_sensor.amcrest/ -[discord]: /components/notify.discord/ -[tado]: /components/device_tracker.tado/ -[sky]: /components/device_tracker.sky_hub/ -[zabbix]: /components/zabbix/ -[avion]: /components/light.avion/ -[anthem]: /components/media_player.anthemav/ -[bb-bin]: /components/binary_sensor.bbb_gpio/ -[piglow]: /components/light.piglow/ -[wsdot]: /components/sensor.wsdot/ -[skybeacon]: /components/sensor.skybeacon/ -[lutron]: /components/lutron/ -[polly]: /components/tts.amazon_polly/ -[linksys]: /components/device_tracker.linksys_ap/ -[emul-hue]: /components/emulated_hue/ -[netatmo]: /components/netatmo/ -[face]: /components/microsoft_face/ -[iss]: /components/binary_sensor.iss/ -[roku]: /components/media_player.roku/ -[openalpr]: /components/#image-processing -[image]: /components/image_processing/ -[emul_hue]: https://github.com/home-assistant/home-assistant/pull/5549 -[coc]: /developers/code_of_conduct/ -[cla]: /developers/cla/ -[gov]: /blog/2017/01/21/home-assistant-governance/ -[license]: /developers/license/ -[wink]: /components/wink/ -[coffee]: /components/switch.wemo/ -[cec]: /components/hdmi_cec/ -[mysensors]: /components/mysensors/ -[sonos]: /components/media_player.sonos/ -[twilio]: /components/notify.twilio_call/ diff --git a/source/_posts/2017-02-03-hassbian-toybox.markdown b/source/_posts/2017-02-03-hassbian-toybox.markdown deleted file mode 100644 index 5bba2d5d5e..0000000000 --- a/source/_posts/2017-02-03-hassbian-toybox.markdown +++ /dev/null @@ -1,62 +0,0 @@ ---- -layout: post -title: "HASSbian 1.1 - The Toy-box" -description: "New release of the HASSbian Raspberry Pi Image for Home Assistant" -date: 2017-02-04 05:00:00 -0400 -date_formatted: "February 4, 2017" -author: Fredrik Lindqvist -comments: true -categories: Technology ---- - -Tonight I'm happy to announce a new release of the our Raspberry Pi image, **HASSbian 1.1 - The Toy-box.** -Why Toy-box you wonder? Because it encompass the changes pretty well. - -Changes from previous image are big and small but lets start with the interesting things. - -### {% linkable_title Hassbian-scripts %} -A set of script written to add extra functionality to your Raspberry Pi installation. -This scripts are run as the `pi` user and installs a set of tools or packages. -Currently includes: - - Install Libcec. Adds local [HDMI CEC support][cec]. - - Install Mossquitto. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. - - Install OpenZWave. Installs OpenZWave and prepares for using a USB or GPIO ZWave controller. - - Install Samba. Installs the Samba packages and shares your configuration over smb to be available to edit on any computer without the need for separate file transfer software. This share is unsecured and it's usage is not recommended if your installation is publicly available. - -All of these scripts are available in the directory `/home/pi/hassbian-scripts/`. This directory is actually a cloned git repository that's cloned on first boot and can be updated to the latest release with ease after. -To update the hassbian-scripts directory execute the following command as the `pi` user. -```bash -$ cd hassbian-scripts -$ git pull -``` -To use any of the hassbian-scripts, execute the following command as the `pi` user. Here we use the libcec script as an example. -```bash -$ sudo ./hassbian-scripts/install_libcec.sh -``` - -For more information about these scripts have a look a the [hassbian-scripts repository][hassbian-repo]. - -### {% linkable_title Spring cleaning %} -With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image. - - Update pi-gen. Our build script has been upgraded to follow the Raspbian image closer. This image is basically a Raspbian lite image with Home Assistant, dependencies and a small set of changes to the base system. - - Removed Mosquitto. Not as bad as it sounds since it's installation has been move to one of our new hassbian-scripts. - - Added rng-tools. Let's your HASSbian installation use the hardware support in the Raspberry Pi for entropy generation. - - Added avahi-daemon package. Your Raspberry Pi should now be available at [hassbian.local][hassbian-avahi]. - - Added htop. User friendly interactive process monitor. - - Added tmux. A great terminal multiplexer that makes working with the command line over ssh easier. - - Added the `homeassistant` user to the `dialout` group. Simplifies use of hardware such as ZWave USB controllers that requires this permission. - -### {% linkable_title On the horizon %} -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 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 -[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 deleted file mode 100644 index 9da9d97c45..0000000000 --- a/source/_posts/2017-02-04-babyphone.markdown +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: post -title: "Smart Baby Monitor" -description: "How to build your own smart baby monitor" -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 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. - - - -### {% linkable_title Setup %} - -We need an IP camera that can capture sound in the baby's room. It is also possible to use a Raspberry Pi with a microphone and send the audio to Home Assistant with `ffmpeg -f alsa -i hw:1,0 -vn -f rtp rtp://236.0.0.1:2000` over multicast. We can set the `input` option on the Home Assistant side to `rtp://236.0.0.1:2000` in the same network. - -Next, we attach a `ffmpeg_noise` binary sensor to our IP camera. The sensor has an output `option` that allows us to send the output to an [icecast2](http://icecast.org/) server for playing over speakers integrated with Home Assistant. We can use the binary sensor in our automation. You can ignore the icecast2 setup if you don't want to play the audio after the noise sensor trigger. - -

    -We change the platform name for binary sensor in 0.38 from `ffmpeg` to `ffmpeg_noise`. Also all service going to component and was rename from `binary_sensor.ffmpeg_xy` to `ffmpeg.xy`. -

    - -On Raspbian Jessie, you can setup [FFmpeg](/components/ffmpeg) and install an [icecast2](http://icecast.org/) server using: - -```bash -$ sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list -$ sudo apt-get update -$ sudo apt-get -t jessie-backports install ffmpeg -$ sudo apt-get install icecast2 -``` - -We setup an icecast mount point for our babyphone and update `/etc/icecast2/icecast.xml`: - -``` - - /babyphone.mp3 - Babyphone - - stream_user - stream_pw - -``` - -Now we can add the noise sensor to Home Assistant. We lower the sensitivity of the sensor (so that you are not inundated with notifications for every cough of the baby) to 2 seconds using the `duration` option. The sensor should wait 60 seconds before restoring and it prevent us that a wine break will triggering a new alarm. - -We can optimize the audio stream for human voice by using a highpass filter with 300 Hz and a lowpass filter with 2500 Hz. This filters out all non-human sounds such as background noise. We can even add a volume amplifier if the microphone volume is too low (you can remove it from `extra_arguments`). For icecast2 we convert the audio stream to mp3 with samplerate of 16000 (which is the minimum for Sonos speakers). We use `peak` to set the threshold for noise detection, where 0 dB is very loud and -100 dB is low. - -```yaml -binary_sensor: - - platform: ffmpeg_noise - input: rtsp://user:pw@my_input/video - extra_arguments: -filter:a highpass=f=300,lowpass=f=2500,volume=volume=2 -codec:a libmp3lame -ar 16000 - output: -f mp3 icecast://stream_user:stream_pw@127.0.0.1:8000/babyphone.mp3 - initial_state: false - duration: 2 - reset: 60 - peak: -32 -``` - -We use the option `initial_state` to prevent the FFmpeg process from starting with Home Assistant and only start it when needed. We use an `input_boolean` to control the state of FFmpeg services using the following automation. - -```yaml -input_boolean: - babyphone: - name: babyphone - initial: off - -automation: - - alias: 'Babyphone on' - trigger: - platform: state - entity_id: input_boolean.babyphone - from: 'off' - to: 'on' - action: - service: ffmpeg.start - entity_id: binary_sensor.ffmpeg_noise - - - alias: 'Babyphone off' - trigger: - platform: state - entity_id: input_boolean.babyphone - from: 'on' - to: 'off' - action: - service: ffmpeg.stop - entity_id: binary_sensor.ffmpeg_noise -``` - -### {% linkable_title Trigger an alarm %} - -Now we can make a lot stuff. Here is a simple example of an automation what should be possible with Sonos speakers. - -```yaml -automation: - - alias: 'Babyphone alarm on' - trigger: - platform: state - entity_id: binary_sensor.ffmpeg_noise - from: 'off' - to: 'on' - action: - - service: media_player.sonos_snapshot - entity_id: media_player.bedroom - - service: media_player.sonos_unjoin - entity_id: media_player.bedroom - - service: media_player.volume_set - entity_id: media_player.bedroom - data: - volume_level: 0.4 - - service: media_player.play_media - entity_id: media_player.bedroom - data: - media_content_type: 'music' - media_content_id: http://my_ip_icecast:8000/babyphone.mp3 - - service: light.turn_on: - entity_id: - - light.floor - - light.bedroom - data: - brightness: 150 - - - alias: 'Babyphone alarm off' - trigger: - platform: state - entity_id: binary_sensor.ffmpeg_noise - from: 'on' - to: 'off' - action: - - service: media_player.sonos_restore - entity_id: media_player.bedroom - - service: light.turn_off: - entity_id: - - light.floor - - light.bedroom -``` - -### {% linkable_title Thanks %} - -Special thanks to [arsaboo](https://github.com/arsaboo) for assistance in writing this blogpost. diff --git a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown deleted file mode 100644 index 1c71005ad4..0000000000 --- a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown +++ /dev/null @@ -1,231 +0,0 @@ ---- -layout: post -title: "0.38: Alert, AppleTV, MQTT discovery, and Yeelight" -description: "Faster and more configurable frontend, configuration check, and complete move to async for core" -date: 2017-02-11 08:04:05 +0000 -date_formatted: "February 11, 2017" -author: Robbie Trencheny, Fabian Affolter -author_twitter: robbie -comments: true -categories: Release-Notes -og_image: /images/blog/2017-02-0.38/social.png ---- - -Another Saturday, another release! - -### {% linkable_title Core updates %} -- Thanks to [@pvizeli], all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code! - -- Now when you restart Home Assistant using the `homeassistant.restart` service, your configuration is checked. If it appears to be invalid the restart will fail. - -### {% linkable_title Rewritten frontend %} -The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new [WebSockets API][websocket-api] instead of the [EventStream API][event-stream-api]. - -### {% linkable_title Custom state card UI %} -A nice new feature is the possibility to create [custom state cards][custom-ui] in the frontend. Go ahead and write your own state card for [lights][light], sensors, locks, etc. - -### {% linkable_title MQTT discovery %} -MQTT now has [discovery][mqtt-discovery] support which is different than our [`discovery`][discovery] component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant. - -### {% linkable_title Alert component %} -If you left your front door open, then the new [`alert`][alert] component can be used to remind you of this by sending you repeating notifications at a given interval. - -### {% linkable_title Yeelight %} -The [`yeelight`][yeelight] component has been ported to use a more stable and feature-complete [python-yeelight][python-yeelight] backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our [issue tracker][issue]. - -### {% linkable_title Apple TV %} -[Apple TV][apple-tv] is now a supported [`media_player`][media-player]! It has support for just about every media player function, including a realtime display of playback status and artwork. - -### {% linkable_title All changes %} -#### {% linkable_title New platforms/components %} - -- Sensor: Support for monitoring [OpenEVSE][openevse] chargers ([@miniconfig]) -- Voice command [API.AI][apiai] ([@adrianlzt]) -- [Alert][alert] Component ([@rmkraus]) -- [Rflink][rflink] 433Mhz gateway platform and components ([@aequitas]) -- Lock: Support for [Nuki.io][nuki] smart locks ([@pschmitt]) -- Sensor: [QNAP][qnap] Sensor ([@colinodell]) -- Switch: Add support for [FRITZ!DECT][fritz] wireless switches based on fritzhome ([@BastianPoe]) -- Sensor: Add [moon][moon] sensor ([@fabaff]) -- Media player: Support for the [Orange Livebox Play TV][orange] appliance ([@pschmitt]) -- Media player: [Apple TV][apple-tv] support ([@postlund]) -- MQTT: [MQTT discovery][mqtt-discovery] support ([@balloob], [@fabaff]) -- Notify: [Mailgun][mailgun] notify service ([@pschmitt]) -- Image Processing: Support [Microsoft Face detection][face-detect] ([@pvizeli]) - -#### {% linkable_title Improvements %} - -- Switch - Pilight: Validation no longer rejects alphanumeric IDs ([@DavidLP]) -- Device tracker - ASUSWrt: Fixes `ip neigh` regex to handle the possible IPv6 "router" flag ([@kylehendricks]) -- Light - MySensors: Fix mysensors RGB and W light turn on ([@MartinHjelmare]) -- Light - Yeelight: new yeelight backend lib, new features ([@rytilahti]) -- Climate - Eq3btsmart: Cleanup modes & available, bump version requirement ([@rytilahti]) -- Sensor - SMA: Handle units correctly ([@kellerza]) -- MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams ([@aequitas]) -- Light - [Hue][hue]: Fix lightgroups not syncing state ([@tboyce1]) -- Dvice tracker - Owntracks: Fix OwnTracks state names ([@tboyce1]) -- Wink: Wink AC and additional sensor support ([@w1ll1am23]) -- Modbus: Modbus write_register accept list ([@benvm]) -- Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS ([@michaelarnauts]) -- Climate - Ecobee: Cleanup climate and ecobee ([@Duoxilian]) -- Sensor - Miflora: Allow specification of bluetooth adapter ([@Danielhiversen]) -- Sensor - [Systemmonitor][systemmonitor]: Add average load to systemmonitor ([@eagleamon]) -- Sensor - [Openweathermap][owm]: Add wind bearing ([@fabaff]) -- Notify - Facebook: Allow to use data for enhanced messages ([@adrianlzt]) -- Light - Hyperion: Change CONF_DEFAULT_COLOR CV type ([@Joeboyc2]) -- Mysensors: Fix validation of serial port on windows ([@MartinHjelmare]) -- Notify - Webostv: Store the key file in the configuration directory ([@pschmitt]) -- TTS: TTS ID3 support ([@robbiet480]) -- Switch - Broadlink: Add send packet service ([@Yannic-HAW]) -- Wink: Add support for position on Wink cover ([@albertoarias]) -- Light - Flux: Make brightness display work for RGB devices. ([@aequitas]) -- Media player - Roku: Fix attribute error for media_player/roku ([@tchellomello]) -- Light - MQTT template: Fix brightness slider for MQTT template lights ([@ray0711]) -- Template: Add `min` and `max` Jinja2 [filters][filters] ([@sbidoul]) -- Device tracker - Skyhub: Improve Sky Hub error handling ([@alexmogavero]) -- Notify - SMTP: Add error checking to the MIMEImage encoding ([@stratosmacker]) -- Light - MQTT: Check for command topics when determining the capabilities of an MQTT light ([@herm]) -- Core: Check config before restarting ([@andrey-git]) -- Light - [Hue][hue]: Fix groups with same names ([@tboyce1]) -- Template: Add icon_template to template sensor ([@tboyce1]) -- Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions ([@kellerza]) -- Light - Flux: Add support for fluxled discovery. ([@aequitas]) -- Media player - AppleTV: Add discovery support to Apple TV ([@postlund]) -- Sensor - Template: Improve warning message in template rendering ([@Danielhiversen]) -- Light - Demo: Add available property and typing hints ([@rytilahti]) -- Sensor - ARWN: Enhancements to [ARWN][arwn] platform ([@sdague]) -- Fan - ISY994: Change medium state for filtering ([@Teagan42]) -- Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. ([@Duoxilian]) -- Tellduslive: Don't throw exception if connection to server is lost ([@molobrakos]) -- Zoneminder: Refactoring and JSON decode error handling ([@pschmitt]) -- Image processing: Cleanup Base face class add support for microsoft face detect ([@pvizeli]) - -Bugfixes: [@balloob], [@fabaff], [@pvizeli], [@mnoorenberghe] [@Danielhiversen], [@armills], [@tchellomello], [@aequitas], [@mathewpeterson], [@molobrakos], [@michaelarnauts], [@jabesq], [@turbokongen], [@JshWright], [@andriej], [@jawilson], [@andrey-git], [@nodinosaur], [@konikvranik], and you if you are missing here. - -### {% linkable_title Release 0.38.1 - February 12 %} - -- Fix logbook ordering ([@balloob]) -- Fix AppleTV conflicting dependency breaking websockets ([@balloob]) - -### {% linkable_title Release 0.38.2 - February 12 %} - -- Validate config will now respect custom config location ([@balloob]) -- Fix Nuki lock on Python 3.4 ([@pschmitt]) -- Fix login issues for myusps ([@happyleavesaoc]) -- Fix hdmi_cec with new customize ([@andrey-git]) -- Fix MQTT discovery ([@fabaff]) -- Fix Z-Wave thermostat units ([@turbokongen]) - -### {% linkable_title Release 0.38.3 - February 15 %} - -- Sonos: fix losing favorite sources on disconnect ([@pvizeli]) -- Google Calendar: fix timeMin losing events ([@happyleavesaoc]) -- Fix Wink PubNub subscription ([@w1ll1am23]) -- Z-Wave: getter not to ignore label ([@andrey-git]) -- Moon: remove unit of measurement ([@fabaff]) -- MySensors: add version requirement to notify and device tracker ([@MartinHjelmare]) - -### {% linkable_title Release 0.38.4 - February 21 %} - - - Discovery: flux_led discovery led to problems on systems and has been removed ([@bazwilliams]) - - Hidden devices are no longer visible on views ([@balloob]) - - -### {% linkable_title Breaking changes %} -- The support for [LG webOS Smart TVs][webostv] was improved. This requires you to move `$HOME/.pylgtv` to `$HASS_CONFIG_DIR/webostv.conf` or Home Assistant will need to be paired with the TV again. -- Image processing events have been renamed: `identify_face` has become `image_processing.detect_face`, `found_plate` has become `image_processing.found_plate` -- The [FFmpeg binary sensor][ffmpeg-bin] change the platform name from `ffmpeg` to `ffmpeg_noise` and `ffmpeg_motion`. Also all FFmpeg-related services are moved from a platform implementation to a the [FFmpeg components][ffmpeg] and were rename from `binary_sensor.ffmpeg_xy` to `ffmpeg.xy`. -- 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][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. - -[@bazwilliams]: https://github.com/bazwilliams -[@acambitsis]: https://github.com/acambitsis -[@adrianlzt]: https://github.com/adrianlzt -[@aequitas]: https://github.com/aequitas -[@albertoarias]: https://github.com/albertoarias -[@alexmogavero]: https://github.com/alexmogavero -[@andrey-git]: https://github.com/andrey-git -[@andriej]: https://github.com/andriej -[@armills]: https://github.com/armills -[@balloob]: https://github.com/balloob -[@BastianPoe]: https://github.com/BastianPoe -[@benvm]: https://github.com/benvm -[@colinodell]: https://github.com/colinodell -[@Danielhiversen]: https://github.com/Danielhiversen -[@DavidLP]: https://github.com/DavidLP -[@Duoxilian]: https://github.com/Duoxilian -[@eagleamon]: https://github.com/eagleamon -[@fabaff]: https://github.com/fabaff -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@herm]: https://github.com/herm -[@jabesq]: https://github.com/jabesq -[@jawilson]: https://github.com/jawilson -[@Joeboyc2]: https://github.com/Joeboyc2 -[@JshWright]: https://github.com/JshWright -[@kellerza]: https://github.com/kellerza -[@konikvranik]: https://github.com/konikvranik -[@kylehendricks]: https://github.com/kylehendricks -[@LinuxChristian]: https://github.com/LinuxChristian -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@mathewpeterson]: https://github.com/mathewpeterson -[@michaelarnauts]: https://github.com/michaelarnauts -[@miniconfig]: https://github.com/miniconfig -[@mnoorenberghe]: https://github.com/mnoorenberghe -[@molobrakos]: https://github.com/molobrakos -[@nodinosaur]: https://github.com/nodinosaur -[@postlund]: https://github.com/postlund -[@pschmitt]: https://github.com/pschmitt -[@pvizeli]: https://github.com/pvizeli -[@ray0711]: https://github.com/ray0711 -[@rmkraus]: https://github.com/rmkraus -[@robbiet480]: https://github.com/robbiet480 -[@rytilahti]: https://github.com/rytilahti -[@sbidoul]: https://github.com/sbidoul -[@sdague]: https://github.com/sdague -[@stratosmacker]: https://github.com/stratosmacker -[@tboyce1]: https://github.com/tboyce1 -[@tchellomello]: https://github.com/tchellomello -[@Teagan42]: https://github.com/Teagan42 -[@turbokongen]: https://github.com/turbokongen -[@valentinalexeev]: https://github.com/valentinalexeev -[@w1ll1am23]: https://github.com/w1ll1am23 -[@Yannic-HAW]: https://github.com/Yannic-HAW - -[alert]: /components/alert/ -[apiai]: /components/apiai/ -[apple-tv]: /components/media_player.apple_tv/ -[arwn]: /components/sensor.arwn/ -[custom-ui]: /developers/frontend_creating_custom_ui/ -[discovery]: /components/discovery/ -[face-detect]: /components/image_processing.microsoft_face_detect/ -[ffmpeg-bin]: /components/binary_sensor.ffmpeg/ -[ffmpeg]: /components/ffmpeg/ -[filters]: /topics/templating/#home-assistant-template-extensions -[fritz]: /components/switch.fritzdect/ -[hue]: /components/light.hue/ -[light]: /cookbook/custom_ui_by_andrey-git -[mailgun]: /components/notify.mailgun/ -[media-player]: /components/media_player/ -[moon]: /components/sensor.moon/ -[mqtt-discovery]: /components/mqtt/#discovery -[nuki]: /components/lock.nuki/ -[openevse]: /components/sensor.openevse/ -[orange]: /components/media_player.liveboxplaytv/ -[owm]: /components/sensor.openweathermap/ -[python-yeelight]: https://gitlab.com/stavros/python-yeelight -[qnap]: /components/sensor.qnap/ -[rflink]: /components/rflink/ -[systemmonitor]: /components/sensor.systemmonitor/ -[webostv]: /components/media_player.webostv/ -[yeelight]: /components/light.yeelight/ - -[event-stream-api]: /developers/server_sent_events/ -[forum]: https://community.home-assistant.io/ -[issue]: https://github.com/home-assistant/home-assistant/issues -[websocket-api]: /developers/websocket_api/ -[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-02-14-clt-workshop.markdown b/source/_posts/2017-02-14-clt-workshop.markdown deleted file mode 100644 index 3a9530b889..0000000000 --- a/source/_posts/2017-02-14-clt-workshop.markdown +++ /dev/null @@ -1,28 +0,0 @@ ---- -layout: post -title: "Workshop at CLT 2017" -description: "Home Assistant Workshop at the Chemnitzer Linux-Tage 2017" -date: 2017-02-14 08:04:05 +0000 -date_formatted: "February 14, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Community -og_image: /images/blog/2017-02-workshop/social.png ---- - -There will be a Home Assistant Workshop at the [Chemnitzer Linux-Tage 2017][clt]. First I will cover the installation, the setup, and the configuration process. The second part will be all about automation. Last but not least, we will talk about the integration of a new platform/component. - -Check the Workshop [overview][overview] to get the details. - -[Reqistration][anmeldung] is required as the places in the room are limited. The deadline for the registration is March, 8th 2017. - -- Location: Technische Universität Chemnitz, Reichenhainer Straße 90, 09126 Chemnitz, Germany -- Date: March, 12th 2017 -- Time: 10:00, Room W2 -- Language: German - -[clt]: https://chemnitzer.linux-tage.de/2017/ -[overview]: https://chemnitzer.linux-tage.de/2017/en/programm/beitrag/356 -[anmeldung]: https://chemnitzer.linux-tage.de/2017/en/programm/anmeldung/workshop/356 - diff --git a/source/_posts/2017-02-22-home-assistant-tshirts-have-arrived.markdown b/source/_posts/2017-02-22-home-assistant-tshirts-have-arrived.markdown deleted file mode 100644 index 2227a71e2a..0000000000 --- a/source/_posts/2017-02-22-home-assistant-tshirts-have-arrived.markdown +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: post -title: "Home Assistant t-shirts have arrived!" -description: "You asked and asked and we finally caved: Home Assistant t-shirts are here!" -date: 2017-02-22 00:04:05 +0000 -date_formatted: "February 22, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Merchandise -og_image: /images/blog/2017-02-shirts/social.png ---- - -

    - - Cool dude with beard and tattoo wearing [the new blue Home Assistant shirt][blue-us]. -

    - -What time is it? Yep, t-shirt time. Today we're launching the first two Home Assistant designs. We have a blue t-shirt ([🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us]) as pictured above and a design for on black/gray shirts ([🇪🇺 EU][black-eu] – [🇺🇸 US][black-us]) as pictured below. - - - [Visit the 🇺🇸 US store][store-us] - - [Visit the 🇪🇺 EU store][store-eu] - - - -And because we love the internet and all the things that it has brought us, **we will start with having 100% of the profit from the sales be donated to the [Electronic Frontier Foundation][eff]**. If you buy a shirt you will hit two birds with one stone (figuratively): you get to wear a kick-ass Home Assistant t-shirt and you help fund defending civil liberties in the digital world. - -The EFF is a nonprofit organization that aims to protect the rights of technology users. You might however be more familiar with one of their projects: [Let's Encrypt][le]. [Read more about what the EFF does.][eff-issues] - -So, what are you waiting for? Get yourself a shirt! [🇪🇺 EU store][store-eu] – [🇺🇸 US store][store-us] - -

    - - Family of 4 on a bench wearing the new black Home Assistant shirt. [🇪🇺 EU][black-eu] – [🇺🇸 US][black-us] -

    - -We are using [Teespring.com][ts] to manage all the sales, production and distribution of the shirts and they will also donate our profits to the EFF. It's also how we got all these amazing stockphotos. Some extra things to note about our teespring shop: - - - Teespring shows that there is a number of days left until the end of the campaign for the shirts. Don't worry about that, it should automatically relaunch. - -More photos after the click. - - -

    - - Moment suprême of a solo pull-my-finger joke while wearing the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] -

    -

    - - Two men carrying two women and the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] -

    -

    - - Cute girl with gigantic lollipop rocking the new black Home Assistant shirt. – [🇪🇺 EU][black-eu] – [🇺🇸 US][black-us] -

    -

    - - Frustrated user wearing the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] -

    -

    - - Cool kid listening to music + sidekick. Both wearing the new blue Home Assistant shirt. – [🇪🇺 EU][blue-eu] – [🇺🇸 US][blue-us] -

    - -[eff]: https://www.eff.org -[le]: https://letsencrypt.org -[ts]: https://teespring.com -[ts-eu]: https://teespring.com/teespring-europe -[store-us]: https://teespring.com/stores/home-assistant-us-store -[store-eu]: https://teespring.com/stores/home-assistant-eu-store -[eff-issues]: https://www.eff.org/issues -[blue-us]: https://teespring.com/home-assistant-shirt -[black-us]: https://teespring.com/hass-shirt-black -[blue-eu]: https://teespring.com/hass-blue-shirt-eu-2 -[black-eu]: https://teespring.com/hass-shirt-black-eu-2 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 deleted file mode 100644 index 846bc1ac4e..0000000000 --- a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown +++ /dev/null @@ -1,317 +0,0 @@ ---- -layout: post -title: "0.39: Configuration panel, state restoration and improved docs" -description: "0.39 is by far our best release yet." -date: 2017-02-25 08:04:05 +0000 -date_formatted: "February 25, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2017-02-0.39/social.png ---- - -It's time for 0.39 and this release has some amazing new features! - - - -## T-Shirts - -First off, in case you haven't seen it yet: [we have t-shirts][t-shirt] now and they are beautiful. All proceeds from the shirts will be donated to the Electronic Frontier Foundation. The first three days all of you have already raised $400! Still waiting for Teespring to get back to me so stay tuned for the EU store. - -## Configuration panel - -Yep, you read that right. We have a configuration panel. It's just the first of many small steps. Putting in a foundation is important and gives us something to iterate on. - -To start, we have three simple configuration panels: - - - Core: allows you to validate config, reload core/group/automation config and restart/stop Home Assistant - - Group: allows you to rename groups, change type between group/view and reorder entities. - - Z-Wave: allows you to set device specific configuration settings - -

    - - Screenshot of our new configuration panel. -

    - -As a security measure, the configuration panel will need to be activated in the config file to be activated. This can be done by adding the following to your `configuration.yaml`: - -```yaml -config: -``` - -Using our configuration panels will require you to structure your groups and Z-Wave device config according to how the configuration panel expects it. This is on purpose as it we will not be aiming to build a system that supports both our extended set of configuration extend hooks and our configuration panels. It's one or the other. - -To activate them in your config, create empty files `groups.yaml` and `zwave_device_config.yaml` in your config dir and add the following entries to your config: - -```yaml -group: !include groups.yaml - -zwave: - device_config: !include zwave_device_config.yaml -``` - -_Note that this is the first release. Things will be missing, things might be broken._ - -## Reorganized documentation - -Thanks to [Fabian][@fabaff] we have a great re-organized documentation. Is it perfect yet? No. But we are getting close. We put a lot of focus on making sure the Raspberry Pi is the main focus of our getting started. The other instructions are still available, just not as part of the main getting started. - -## 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 `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" - -A couple of releases ago we introduced a new way of doing `customize`. It became a list that allowed different ways of matching the config to the entity. - -We realized that this was leading into a rabbit hole that we had to get out off. Besides making it unnecessarily complicated it also blocked the road to config panels. And who doesn't like config panels? - -So starting this release, we had to make some breaking changes to right the wrong. We will be releasing an online tool to help you convert your config to the new format later today. - -[**Update: the online tool can be found here.**](https://jsfiddle.net/balloob/d2e56q6f/74/) - -#### Customize has been reverted to its original config - -The old customize is back. The options to match by domain or using glob have been moved to its own options. It will now look like this: - -```yaml -homeassistant: - customize: - light.kitchen: - hidden: true - customize_domain: - light: - icon: mdi:home - customize_glob: - "light.kitchen_*": - icon: mid:description -``` - -#### Z-Wave customize is now device config - -Ever wondered why the Z-Wave customize was called customize? Yeah, so did we. So when migrating this to the new config format, we decided to upgrade the name too: - -```yaml -zwave: - device_config: - light.kitchen: - ignored: true - device_config_domain: - light: - polling_intensity: 2 - device_config_glob: - "light.kitchen_*": - polling_intensity: 0 -``` - -## Speed improvements - -And a final shout out to [Pascal][@pvizeli]. He keeps improving the performance of components and platforms all over Home Assistant. - - - -## All changes - -#### New platforms/components - -- [Telegram] webhooks ([@scipioni]) -- Added [Openhome][openhome] support ([@bazwilliams]) -- [UPS][ups] sensor ([@happyleavesaoc]) -- [FEDex][fedex] sensor ([@happyleavesaoc]) -- [Gstreamer][gstreamer] media player ([@happyleavesaoc]) -- [iTach Remote][itach] Platform ([@alanfischer]) -- [myq] cover component ([@arraylabs]) -- Support for the [Open Energy Monitor Thermostat][oemt] ([@Cadair]) -- Added Fritzbox [Netmonitor][netmonitor] ([@PetePriority]) -- Add platform for [Yeelight Sunflower lights][sunflowers] ([@lindsaymarkward]) -- Support for [Pocket Casts][pocket] ([@molobrakos]) -- [VolvoOnCall][volvo] component with support for sensors, heater and lock ([@molobrakos]) -- Add [pushsafer.com][pushsafer] notification service ([@appzer]) -- [Websocket push][kodi] notifications for Kodi ([@armills]) -- New component 'insteon_plm' and related platforms ([@nugget]) -- Add [aurora][aurora] sensor ([@walkerdb]) -- Add [Ebox][ebox] sensor platform ([@titilambert]) -- Mediaplayer [clementine][clementine] remote ([@jjmontesl]) -- Add [Fido][fido] sensor ([@titilambert]) -- Add [History Statistics][history_stats] sensor platform ([@bokub]) - -#### Improvements - -- Tellduslive: Don't throw exception if connection to server is lost ([@molobrakos]) -- Core: Convert config.components to a set ([@balloob]) -- Media Player - Apple TV: Handle connection errors when connecting to Apple TVs, re-use aiohttp session , add fake support for turn on/off ([@postlund]) -- Zoneminder: Refactoring and JSON decode error handling ([@pschmitt]) -- Recorder: Add tests for full schema migration, limit to session scope ([@armills]) -- Device tracker - Tado: Add support for multiple devices to Tado device tracker ([@markoudev]) -- Z-Wave: Fix zwave helper getter not to fail on some None results. ([@andrey-git]) -- Core: `sensor_class` migrate to `device_class` ([@armills]) -- Sensor - Amcrest: Avoid traceback for Amcrest cameras/firmware that does not have the software_information API call ([@tchellomello]) -- Media Player - MPD: Adds play URL support to mpd ([@jjmontesl]) -- Logbook: Component set add using OR ([@kellerza]) -- Config: Add config component and hassbian example panel ([@balloob]) -- Proximity: Fixed proximity zone incorrectly using name instead of zone setting ([@jjmontesl]) -- Z-Wave: Add device_class support to cover component ([@armills]) -- Config: Add check_config API ([@balloob]) -- Media player: Add media_image to media_player component ([@postlund]) -- Sensor- Vasttrafik.py: vasttrafik: update token on read error ([@persandstrom]) -- Z-Wave.py: force_update zwave sensors ([@andrey-git]) -- Core: Two stage shutdown ([@pvizeli]) -- Z-Wave: Rename customize to device_config ([@balloob]) -- Thingspeak: Use the correct API key ([@fabaff]) -- Lock - Nuki: Reduce battery drain on Nuki Lock ([@pschmitt]) -- Notify - Webostv: Only try to pair notify.webostv when not paired ([@andersonshatch]) -- KNX: Fix slow status updates from the knx bus ([@keerts]) -- HDMI CEC: HDMI_CEC customization [Breaking change] ([@balloob], [@andrey-git]) -- Sensor - Moon: Remove unit of measurement ([@fabaff]) -- Z-Wave: Add initial Z-Wave config panel ([@balloob]) -- History: Allow printing the number of states returned by history and time it took to extract and add day ([@andrey-git]) -- MQTT: Enable sensor for discovery ([@fabaff]) -- Light - Limitlessled: Added limitlessled support for bridge v6 and RGBWW bulbs. ([@soldag]) -- Config - Hassbian: Update hassbian component with real output ([@balloob]) -- Media Player -Sonos: Bugfix sonos favorite_source after lost connection ([@pvizeli]) -- Sensor - SenseHAT: Add flag to declare if SenseHAT is attached ([@nodinosaur]) -- RFLink: Reconnect robustness, expose connection state. ([@aequitas]) -- Media player - CMUS: Remove IO from properties ([@armills]) -- Light - Litejet: Lights should have the option to dim in the UI. ([@joncar]) -- Light - Hue: Add effect_list to hue light ([@armills]) -- Meida player - Liveboxplaytv: Update liveboxplaytv and catch connection errors ([@pschmitt]) -- Llight - Lifx: Fix colortemp conversion for lifx lights ([@kitcorey]) -- Light - Flux_LED: Update FLUX_LED by adding Effects ([@dramamoose]) -- Alarm control panel - Simplisafe: SimpliSafe updates ([@w1ll1am23]) -- Cover Add supported_features to cover component ([@armills]) -- Wink: Added tamper detection to Wink devices. ([@w1ll1am23]) -- Sensor - onewire: Add support for aliased owfs sensors ([@normakm]) -- Weather: Forecast ([@Tommatheussen]) -- Device tracker - ASUSwrt: Added support for alternate SSH ports in AsusWRT ([@swbradshaw]) -- Zoneminder: Add camera mjpeg stream support ([@mnoorenberghe]) -- Restore: Restore_state helper to restore entity states from the DB on startup ([@kellerza]) -- Sensor - Darksky: Add 'entity_picture' to Darksky component ([@aronsky]) -- Media Player - Samsungtv: Add support for waking up Samsung TVs over the network ([@justin8]) -- MQTT: Convert MQTT platforms to async ([@pvizeli]) -- tests/components/device_tracker/test_init.py: Restore for device_tracker ([@kellerza]) -- Discovery: Make it possible to ignore platforms in discovery ([@postlund]) -- Image processing: Add `device_class` ([@pvizeli]) - -### {% linkable_title Release 0.39.1 - February 27 %} - - - Add workaround for Paho out of memory issues ([@pvizeli]) - - When an error occurs while storing group config, fail instead of wiping config. ([@balloob]) - -### {% linkable_title Release 0.39.2 - March 1 %} - - - Move Zigbee from eventbus to dispatcher ([@pvizeli]) - - Fix discovery taking up all memory and cpu ([@balloob] + [@tomusher]) - -### {% linkable_title Release 0.39.3 - March 4 %} - - - Prevent discovered services and devices to be handled twice (@colinodell) - -#### Breaking changes - - - VolvoOnCall has been extended with more features and had to be converted to a component - - Limitlessled support for Bridge v6 and RGBWW bulbs require users to specify `version` and `port - - hdmi_cec config now requires users to set the types in the hdmi_cec config instead of using `customize`: - -```yaml -hdmi_cec: - types: - hdmi_cec.hdmi_5: media_player -``` - -#### Bugfixes: - -[@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][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. - -[@tomusher]: https://github.com/tomusher -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@nugget]: https://github.com/nugget -[@PetePriority]: https://github.com/PetePriority -[@dramamoose]: https://github.com/dramamoose -[@fabaff]: https://github.com/fabaff -[@joncar]: https://github.com/joncar -[@alanfischer]: https://github.com/alanfischer -[@LinuxChristian]: https://github.com/LinuxChristian -[@justin8]: https://github.com/justin8 -[@jjmontesl]: https://github.com/jjmontesl -[@tdickman]: https://github.com/tdickman -[@Danielhiversen]: https://github.com/Danielhiversen -[@pavoni]: https://github.com/pavoni -[@Tommatheussen]: https://github.com/Tommatheussen -[@pvizeli]: https://github.com/pvizeli -[@keerts]: https://github.com/keerts -[@arraylabs]: https://github.com/arraylabs -[@soldag]: https://github.com/soldag -[@walkerdb]: https://github.com/walkerdb -[@kellerza]: https://github.com/kellerza -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@bazwilliams]: https://github.com/bazwilliams -[@appzer]: https://github.com/appzer -[@tchellomello]: https://github.com/tchellomello -[@aronsky]: https://github.com/aronsky -[@swbradshaw]: https://github.com/swbradshaw -[@colinodell]: https://github.com/colinodell -[@nodinosaur]: https://github.com/nodinosaur -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@bokub]: https://github.com/bokub -[@markoudev]: https://github.com/markoudev -[@titilambert]: https://github.com/titilambert -[@aequitas]: https://github.com/aequitas -[@mnoorenberghe]: https://github.com/mnoorenberghe -[@Cadair]: https://github.com/Cadair -[@postlund]: https://github.com/postlund -[@konikvranik]: https://github.com/konikvranik -[@scipioni]: https://github.com/scipioni -[@andrey-git]: https://github.com/andrey-git -[@persandstrom]: https://github.com/persandstrom -[@lwis]: https://github.com/lwis -[@balloob]: https://github.com/balloob -[@bachp]: https://github.com/bachp -[@robbiet480]: https://github.com/robbiet480 -[@lindsaymarkward]: https://github.com/lindsaymarkward -[@valentinalexeev]: https://github.com/valentinalexeev -[@armills]: https://github.com/armills -[@molobrakos]: https://github.com/molobrakos -[@normakm]: https://github.com/normakm -[@rytilahti]: https://github.com/rytilahti -[@pschmitt]: https://github.com/pschmitt -[@kitcorey]: https://github.com/kitcorey -[@andersonshatch]: https://github.com/andersonshatch - -[telegram]: /componet/telegram_webhooks/ -[pushsafer]: /components/notify.pushsafer/ -[openhome]: /components/media_player.openhome/ -[ups]: /components/sensor.ups/ -[fedex]: /components/sensor.fedex/ -[fido]: /components/sensor.fido/ -[gstreamer]: /components/media_player.gstreamer/ -[clementine]: /components/media_player.clementine/ -[ebox]: /components/sensor.ebox/ -[aurora]: /components/binary_sensor.aurora/ -[netmonitor]: /components/sensor.fritzbox_netmonitor/ -[itach]: /components/remote.itach/ -[sunflowers]: /components/light.yeelightsunflower/ -[kodi]: /components/media_player.kodi/ -[myq]: /components/cover.myq/ -[oemt]: /components/climate.oem/ -[volvo]: /components/volvooncall/ -[pocket]: /components/sensor.pocketcasts/ -[config]: /components/config/ -[history_stats]: /components/sensor.history_stats/ - - -[docs]: /docs/ -[getting-started]: /getting-started/ -[docs-issue]: https://github.com/home-assistant/home-assistant.github.io/issues/1603 - -[forum]: https://community.home-assistant.io/ -[issue]: https://github.com/home-assistant/home-assistant/issues -[t-shirt]: /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 deleted file mode 100644 index d633146e60..0000000000 --- a/source/_posts/2017-03-11-repurpose-any-android-phone-as-ip-camera.markdown +++ /dev/null @@ -1,331 +0,0 @@ ---- -layout: post -title: "Home Assistant 0.40: Turn any Android phone into an IP Webcam" -description: "Big startup performance increase and tons of bug fixes for MQTT, Z-Wave." -date: 2017-03-11 08:04:05 +0000 -date_formatted: "March 11, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2017-03-0.40/social.png ---- - - - -It's time for version 0.40 already! For this version, the main focus was on performance and bug fixes. Big thanks to [@pvizeli] for driving this effort. Startup is now super fast. We have also continued with adding warnings for components and platforms that are slowing down Home Assistant. - -Some people have interpreted our recent added warnings as if 0.39 introduced the issues that caused the warning. This is not the case, the platforms and components have been misbehaving for a while but now we are adding warnings so we are able to track down the culprits. - -Before we continue talking about all the improvements in this release I want to take a moment to thank a few people from the Home Assistant community that are fundamental to the success of Home Assistant. Big thanks to [@dale3h], [@CCOSTAN], [@skalavala], [@rrubin0], [@brahmafear], [@bassclarinetl2], and [@torn8o]! These are all people that hang out in our [main chat channel] and help new users get started and help existing users when running into trouble. Home Assistant would not be there without all the effort you put in! 🙇 - -And that our community kicks ass is also shown in the numbers. We have already raised together over $700 for the [EFF] via the sale of [our t-shirts][hass-shirt]! All of you rock! Another number worth mentioning is that this release brings us passed 600 integrations for Home Assistant. All of you rock, again! - -## Z-Wave is now threadsafe - -[@andrey-git] has spend a lot of time to make Z-Wave perform better. It should no longer cause Home Assistant to run slower or raise warnings about the timer getting out of sync. - -## Update on the MQTT Out of Memory errors in 0.39 - -MQTT started causing "Out of Memory" errors for some people on a Raspberry Pi. We have been able to track this down to Raspberry Pis that are using an older firmware. If you are experiencing this issue, please [upgrade your firmware using `rpi-update`](https://github.com/Hexxeh/rpi-update#installing). - -## Turn any Android phone into an IP Camera - -With the new support for [IP Webcam](/components/android_ip_webcam/) added by [@robbiet480] and [@pvizeli] you are now able to re-purpose any Android phone to become a multifunctional IP webcam. Some of the cool things that you can do: - - - Integrate the Android device camera - - Binary sensor when motion is detected - - Sensors to expose the device sensors, including pressure, sound, battery, light - - Control device features like the GPS, night vision and camera flash - -

    - -Screenshot of all the different functionality the IP webcam integration offers. -

    - -## Other Highlights - - - Support added for Austrian weather using Zamg weather data ([@Zac-HD]) - - Ring.com video doorbell integration added ([@tchellomello]) - - Blink Home Security Camera support added ([@fronzbot]) - - AppleTV has been converted to push data to Home Assistant instead of us having to poll ([@postlund]) - -## Breaking changes - -- Vera entity ids have changed. This is a one time change to migrate to a model that will prevent future conflicts. -- The Twilio notify platforms now have to be configured via the twilio component. - -```yaml -twilio: - account_sid: "abc" - auth_token: "xyz" -``` - -- 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][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. - -### {% linkable_title Release 0.40.1 - March 16 %} - -- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532]) -- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552]) -- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577]) -- Fix hydroquebec ([@titilambert] - [#6574]) -- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593]) -- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602]) -- since knx_2_float can't handle 0, bypass converting 0 value from knx to float ([@goofz] - [#6626]) -- Fix Osram Lightify colors ([@deisi] - [#6598]) -- Bugfix RFLINK remove group ([@pvizeli] - [#6580]) - -### {% linkable_title Release 0.40.2 - March 22 %} - -Hot fix release to fix dependency issues. More detailed information about the issue in [this blog post](/blog/2017/03/22/broken-dependencies/). - -- Prevent dependencies that are installed on demand from installing different versions of core dependencies ([@balloob] - [#6738]) -- Upgrade PyChromecast to silent some benign errors ([@balloob] - [#6702]) - - - -## All changes - -- Cleanup run_callback_threadsafe ([@pvizeli]) -- Use H2 headers to split up the different sections ([@colinodell]) -- Refactory of envisalink ([@pvizeli]) -- Create zwave devices on OZW thread and only add them during discovery ([@andrey-git]) -- Bugfix restore startup state ([@kellerza]) -- Random test fixes ([@balloob]) -- Remove automatically reloading group config ([@balloob]) -- Default config to setup group editor ([@balloob]) -- minor broadlink fix ([@danielhiversen]) -- Update Yeelight Sunflower light platform to 0.0.6 ([@lindsaymarkwawrd]) -- Some zwave cleanup ([@andrey-git]) -- sensor.speedtest: provide a default icon ([@molobrakos]) -- Test the temperature returned by RM2 ([@aronsky]) -- Zamg weather ([@Zac-HD]) -- Fix reporting on bad login ([@balloob]) -- Move mqtt from eventbus to dispatcher / add unsub for dispatcher ([@pvizeli]) -- Update flake8 and pylint to latest ([@andrey-git]) -- Fix link ([@fabaff]) -- Make glob preserve order ([@andrey-git]) -- Update regex ([@fabaff]) -- Fix recorder async ([@balloob]) -- Fix livebox-play interactions for Python < 3.6 ([@pschmitt]) -- Ensure we properly close HASS instances. ([@balloob]) -- Add service to change log levels ([@postlund]) -- Move ffmpeg to dispatcher from hass.data entity store. ([@pvizeli]) -- Feature/reorg recorder ([@balloob]) -- Bugfix mqtt socket error ([@pvizeli]) -- Notify ciscospark ([@shenning00]) -- Config fix ([@balloob]) -- Bugfix mqtt paho client to speend time ([@pvizeli]) -- Properly report features for each hue bulb type ([@jawilson]) -- Local file camera now supports yet inexisting files. ([@jjmontestl]) -- light.transition now supports float instead of int in order to be able to perform faster transitions ([@BillyNate]) -- Fix for OSRAM lights connected to hue bridge ([@groth-its]) -- Add support for MAX!Cube thermostats and window shutter sensors ([@BastianPoe]) -- Analog modem callerid support ([@vroomfonde1]) -- [sensor.dnsip] New Sensor: DNS IP ([@danielperna84]) -- Update library version for Yeelight Sunflower lights platform (fix for packaging problem with 0.0.7) ([@lindsaymarkwawrd]) -- Prevent duplicate names on Vera devices by appending the device id ([@arjenfvellinga]) -- Add temperature support for MH-Z19 CO2 sensor. ([@andrey-git]) -- improve history_stats accuracy ([@bokub]) -- Updated pyitachip2ir ([@alanfischer]) -- Influx fix ([@open-homeautomation]) -- Fix toggle and media_play_pause post async ([@armills]) -- Migrate calendar setup to async. ([@pvizeli]) -- Frontier silicon ([@zhelev]) -- Bootstrap / Component setup async ([@pvizeli]) -- Convert kpH and mpH to kph and mph ([@ericgingras]) -- Rollback netdisco to 0.8.2 to resolve #6165 ([@jumpkick]) -- Log errors when loading yaml ([@kellerza]) -- Bootstrap tweaks tests ([@balloob]) -- Telegram webhooks new text event ([@scipioni]) -- Cleanup component track_point_in_utc_time usage ([@pvizeli]) -- Discovery fix ([@balloob]) -- Test against 3.6-dev ([@balloob]) -- Bugfix ZigBee / Move from eventbus to dispatcher ([@pvizeli]) -- Bump netdisco to 0.9.1 ([@balloob]) -- sensor.dovado: compute state in update ([@molobrakos]) -- Fix mysensors callback race ([@MartinHjelmare]) -- Upgrade TwitterAPI to 2.4.5 ([@fabaff]) -- Upgrade py-cpuinfo to 0.2.6 ([@fabaff]) -- Template sensor change flow / add restore ([@pvizeli]) -- Zwave optimize value_added ([@andrey-git]) -- Update Vagrant provision.sh ([@shaftoe]) -- Update Adafruit_Python_DHT to support new raspberry kernel ([@masarliev]) -- Add fallback for name if userdevicename isn't set using old serialnumber logic ([@reedriley]) -- Improve Honeywell US climate component ([@titilambert]) -- Template binary_sensor change flow / add restore ([@pvizeli]) -- Additional support for ecobee hold mode ([@Duoxilian]) -- Update Formulas in Convert XY to RGB ([@dramamoose]) -- Use dynamic ports for test instances ([@armills]) -- Added support for multiple codes executed in a row ([@martinfrancois]) -- Use push updates in Apple TV ([@postlund]) -- Fix command sudo not found error in dev Dockerfile ([@jawilson]) -- Fix calendar authentication text, and handle calendar events without summaries. ([@alanfischer]) -- Move dispatcher out of init. ([@pvizeli]) -- Zwave: Add remove/replace failed node services. ([@andrey-git]) -- Template switch change flow / add restore ([@pvizeli]) -- Bump limitlessled dependency to 1.0.5. ([@janLo]) -- snmp: upgrade pysnmp to 4.3.4 ([@milaq]) -- Bugfix new async_add_devices function ([@pvizeli]) -- Restore for input_slider ([@pvizeli]) -- Added IPv4 data collector ([@open-homeautomation]) -- Return None instead of raising ValueException from as_timestamp template function. ([@jjmontestl]) -- [recorder] Catch more startup errors #6179 ([@kellerza]) -- twilio component ([@happyleavesaoc]) -- Add Z-Wave battery level as a sensor. ([@andrey-git]) -- OwnTrack Async ([@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]) -- Update Hikvision Binary Sensors to latest library, remove pyDispatcher ([@mezz64]) -- Don't initialize components which have already been discovered ([@colinodell]) -- Comed Hourly Pricing sensor ([@joe248]) -- Add multi contracts support for Hydroquebec ([@titilambert]) -- Add Zwave refresh services ([@andrey-git]) -- Add keep-alive feature to the generic thermostat ([@aronsky]) -- Fix wake_on_lan for German version of Windows 10 (#6397) ([@siebert]) -- flux led lib ([@danielhiversen]) -- Cleanup async handling ([@pvizeli]) -- Restore for automation entities ([@kellerza]) -- Fix tests no internet ([@balloob]) -- Prevent more I/O in apns ([@balloob]) -- Restore flow on device_tracker platform ([@pvizeli]) -- switch.tplink: catch exceptions coming from pyHS100 to avoid flooding the logs when the plug is not available ([@rytilahti]) -- Added sensors to support Ring.com devices ([@tchellomello]) -- Split bootstrap into bs + setup ([@balloob]) -- Tweak recorder/restore_state ([@balloob]) -- 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]) -- 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]) -- Revert "Use dynamic port allocation for tests" ([@armills]) -- Tado device_tracker exception when mobile device has geofencing enabled but location is currently unknown. ([@jmvermeulen]) -- Add a Z-wave workaround to do full refresh on update ([@andrey-git]) -- Use bundled certificates if port matches mqtts ([@dennisdegreef]) -- Bugfix samsungtv discovery ([@pvizeli]) -- Added unittest for Ring sensor ([@tchellomello]) -- Shorten recorder connection init ([@balloob]) -- KWB Easyfire support ([@bimbar]) -- Bumped version number for supporting lib ([@bazwilliams]) -- Send a logo with webostv notifications ([@andersonshatch]) -- Upgrade netdisco to 0.9.2 ([@balloob]) -- Allow testing against uvloop ([@balloob]) -- fix issue ([@appzer]) -- Remove connection status state. ([@aequitas]) -- Support for Blink Camera System ([@fronzbot]) -- Add warning for slow platforms/components ([@balloob]) -- Fix wake_on_lan ping for Linux. ([@siebert]) -- Add support for remove services / Reload script support ([@pvizeli]) -- Expand MQTT lights ([@robbiet480]) -- Allow configurable conditions for Pi-Hole sensor ([@colinodell]) -- Improved iCloud 2FA support. ([@reedriley]) -- Update pymyq requirement ([@arraylabs]) -- 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]) -- Bugfix android camera autodiscovery settings ([@pvizeli]) -- Update to Pyunifi2.0 ([@finish06]) -- Insteon lib ([@wardcraigj]) -- Bugfix rpi_rf cleanup ([@pvizeli]) -- Android webcam better error handling / pump library 0.4 ([@pvizeli]) - -[@BastianPoe]: https://github.com/BastianPoe -[@BillyNate]: https://github.com/BillyNate -[@Duoxilian]: https://github.com/Duoxilian -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@Zac-HD]: https://github.com/Zac-HD -[@aequitas]: https://github.com/aequitas -[@alanfischer]: https://github.com/alanfischer -[@amelchio]: https://github.com/amelchio -[@andersonshatch]: https://github.com/andersonshatch -[@andrey-git]: https://github.com/andrey-git -[@appzer]: https://github.com/appzer -[@arjenfvellinga]: https://github.com/arjenfvellinga -[@armills]: https://github.com/armills -[@aronsky]: https://github.com/aronsky -[@arraylabs]: https://github.com/arraylabs -[@balloob]: https://github.com/balloob -[@bazwilliams]: https://github.com/bazwilliams -[@bimbar]: https://github.com/bimbar -[@bokub]: https://github.com/bokub -[@colinodell]: https://github.com/colinodell -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@dennisdegreef]: https://github.com/dennisdegreef -[@dramamoose]: https://github.com/dramamoose -[@ericgingras]: https://github.com/ericgingras -[@fabaff]: https://github.com/fabaff -[@finish06]: https://github.com/finish06 -[@fronzbot]: https://github.com/fronzbot -[@groth-its]: https://github.com/groth-its -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@ishults]: https://github.com/ishults -[@janLo]: https://github.com/janLo -[@jawilson]: https://github.com/jawilson -[@jjmontestl]: https://github.com/jjmontestl -[@jmvermeulen]: https://github.com/jmvermeulen -[@joe248]: https://github.com/joe248 -[@jumpkick]: https://github.com/jumpkick -[@kellerza]: https://github.com/kellerza -[@lindsaymarkwawrd]: https://github.com/lindsaymarkwawrd -[@martinfrancois]: https://github.com/martinfrancois -[@masarliev]: https://github.com/masarliev -[@mezz64]: https://github.com/mezz64 -[@milaq]: https://github.com/milaq -[@molobrakos]: https://github.com/molobrakos -[@open-homeautomation]: https://github.com/open-homeautomation -[@postlund]: https://github.com/postlund -[@pschmitt]: https://github.com/pschmitt -[@pvizeli]: https://github.com/pvizeli -[@reedriley]: https://github.com/reedriley -[@robbiet480]: https://github.com/robbiet480 -[@rytilahti]: https://github.com/rytilahti -[@scipioni]: https://github.com/scipioni -[@shaftoe]: https://github.com/shaftoe -[@shenning00]: https://github.com/shenning00 -[@siebert]: https://github.com/siebert -[@tchellomello]: https://github.com/tchellomello -[@titilambert]: https://github.com/titilambert -[@valentinalexeev]: https://github.com/valentinalexeev -[@vroomfonde1]: https://github.com/vroomfonde1 -[@wardcraigj]: https://github.com/wardcraigj -[@zhelev]: https://github.com/zhelev -[main chat channel]: https://discord.gg/c5DvZ4e -[@dale3h]: https://github.com/dale3h -[@CCOSTAN]: https://github.com/CCOSTAN -[@skalavala]: https://github.com/skalavala -[@rrubin0]: https://github.com/rrubin0 -[@brahmafear]: https://github.com/brahmafear -[@bassclarinetl2]: https://github.com/bassclarinetl2 -[@torn8o]: https://github.com/torn8o -[forum]: https://community.home-assistant.io/ -[issue]: https://github.com/home-assistant/home-assistant/issues -[EFF]: https://www.eff.org -[hass-shirt]: /blog/2017/02/22/home-assistant-tshirts-have-arrived/ -[#6532]: https://github.com/home-assistant/home-assistant/pull/6532 -[#6552]: https://github.com/home-assistant/home-assistant/pull/6552 -[#6574]: https://github.com/home-assistant/home-assistant/pull/6574 -[#6577]: https://github.com/home-assistant/home-assistant/pull/6577 -[#6580]: https://github.com/home-assistant/home-assistant/pull/6580 -[#6593]: https://github.com/home-assistant/home-assistant/pull/6593 -[#6598]: https://github.com/home-assistant/home-assistant/pull/6598 -[#6602]: https://github.com/home-assistant/home-assistant/pull/6602 -[#6626]: https://github.com/home-assistant/home-assistant/pull/6626 -[@deisi]: https://github.com/deisi -[@goofz]: https://github.com/goofz -[@iamtpage]: https://github.com/iamtpage -[@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-22-broken-dependencies.markdown b/source/_posts/2017-03-22-broken-dependencies.markdown deleted file mode 100644 index 3d8a94b6b4..0000000000 --- a/source/_posts/2017-03-22-broken-dependencies.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post -title: "0.40.2 and broken dependencies" -description: "Due to a bug in our dependency installation, some older versions can get into a broken state." -date: 2017-03-22 08:04:05 +0000 -date_formatted: "March 22, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes ---- - -TL; DR: We have just released version 0.40.2 that includes a fix related to the installation of dependencies. - -Some users in the last few days have been reporting that their Home Assistant installation fails to start with an error in the http component: - -``` -ImportError: No module named 'aiohttp.file_sender' -``` - -The problem is that Home Assistant did not handle the case where a dependency would want to install a core dependency of Home Assistant that is newer than what Home Assistant works with. For now, we have identified the following two components that can cause this issue: - - - AppleTV (0.38+) - - Android IP Webcam (0.40+) - -This issue has been resolved by 0.40.2. If you are on an impacted version and cannot upgrade to the latest version just yet, a temporary workaround will be to remove the `/deps` directory and stop using the above mentioned integrations. In the case of AppleTV, you will also have to disable the discovery component to prevent it from being auto-detected. \ No newline at end of file diff --git a/source/_posts/2017-03-23-opensourcecraft-interview-with-founder-paulus-schoutsen.markdown b/source/_posts/2017-03-23-opensourcecraft-interview-with-founder-paulus-schoutsen.markdown deleted file mode 100644 index a3c2c77215..0000000000 --- a/source/_posts/2017-03-23-opensourcecraft-interview-with-founder-paulus-schoutsen.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: post -title: "OpenSourceCraft interviews our founder Paulus Schoutsen" -description: "Gregg Pollack from OpenSourceCraft sat down with our founder Paulus Schoutsen to talk about community building." -date: 2017-03-23 08:04:05 +0000 -date_formatted: "March 23, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Media -og_image: /images/blog/2017-03-opensourcecraft/social.jpg ---- - -Last month Gregg Pollack from [OpenSourceCraft] visited me in San Diego to talk about Home Assistant. We talked about the community and how all these awesome people make Home Assistant possible. The main interview is embedded below but make sure to check out the [full article including extra video material][article]. - -
    - -
    - -[OpenSourceCraft]: http://codepop.com/open-sourcecraft -[article]: http://codepop.com/open-sourcecraft/episodes/paulus-schoutsen/ diff --git a/source/_posts/2017-03-25-todo-volumio-workday.markdown b/source/_posts/2017-03-25-todo-volumio-workday.markdown deleted file mode 100644 index c0ebd7f9e6..0000000000 --- a/source/_posts/2017-03-25-todo-volumio-workday.markdown +++ /dev/null @@ -1,357 +0,0 @@ ---- -layout: post -title: "Home Assistant 0.41: Tado, Volumio, Workday, improved Plex" -description: "Improved Pley media player, filtering components overview, Tado and Volumio platform" -date: 2017-03-25 08:04:05 +0000 -date_formatted: "March 25, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2017-03-0.41/social.png ---- - -Welcome to 0.41. There was a lot going on in the last two weeks. Not only from the code side but also from the social one of Home Assistant. [Paulus][@balloob] did an [interview] with [OpenSourceCraft], [Fabian][@fabaff] did a [workshop] at the [Chemnitzer Linux Tage][clt], and we are now an award-winning Open source project (I will cover that in a separate blog post). - -## Plex -[@JesseWebDotCom] made massive changes to the [Plex][plex] media player platform. From better metadata support over new configuration options to improved controls and non-controllable clients. - -## Component overview -The [Components][components] overview is now powered by search/filtering feature. This will make it faster to get the component/platform you are looking for more quickly. Thanks again, [@bdurrer] for this. - -## Changelog -The new format of the changelog which was introduced with 0.40 will provide a link to the related pull request. We are not covering everything in our release notes but we think that this addition will make it easier to find details about the change. - -## New platforms/components - -- Support for [Tado][tado] climate devices ([@wmalgadey]) -- [Volumio][volumio] media player added ([@jslove]) -- [Workday][workday] sensor ([@BastianPoe]) - -## Breaking changes - -- The [Kodi notifier][kodi] platform was migrated to async and the configuration synced with the Kodi media player platform ([#6497]). -- For the [Music Player Daemon][mpd] (MPD) platform was `location` replaced with `name` ([#6553]). -- Event decorators were removed ([#6634]). -- The [Emby mediaplayer][emby] platform was changed to avoid name clashes ([#6664]). -- In a lot of places were the power and energy units update. This change mostly affects the `switch` platforms ([#6212]). -- If set to `auto` then the [MQTT][mqtt] implementation will use the bundled certificates automatically ([#6707]). -- Autodiscovery of [Android IP Webcam][android] was removed ([#6528]). -- 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][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. - - -## All changes - -- Bugfix android camera autodiscovery settings ([@pvizeli] - [#6510]) -- Insteon lib ([@wardcraigj] - [#6505]) -- Update to Pyunifi2.0 ([@finish06] - [#6490]) -- Insteon lib ([@wardcraigj] - [#6505]) -- Don't allow sending to invalid iOS targets ([@robbiet480] - [#6115]) -- Bugfix rpi_rf cleanup ([@pvizeli] - [#6513]) -- Include LICENSE.md in tarball ([@bachp] - [#6514]) -- Android webcam better error handling / pump library 0.4 ([@pvizeli] - [#6518]) -- Fix mysensors gateway windows setup ([@MartinHjelmare] - [#6500]) -- Update frontend ([@balloob]) -- Remove mint finance sensor ([@balloob] - [#6522]) -- Append vera device id to entity id - but not name. ([@pavoni] - [#6523]) -- Force update support for MQTT sensor ([@vrnagy] - [#6492]) -- Wink scene(shortcut) support ([@w1ll1am23] - [#6147]) -- Add type configuration in history_stats ([@bokub] - [#6430]) -- Discovery is a dict rather than an array. ([@pavoni] - [#6525]) -- Fix colortemp conversion for osramlightify ([@amelchio] - [#6516]) -- Update Kodi notifier to async ([@armills] - [#6497]) (Breaking Change) -- Fix mysensors gateway windows setup ([@MartinHjelmare] - [#6500]) -- Fix colortemp conversion for osramlightify ([@amelchio] - [#6516]) -- Remove mint finance sensor ([@balloob] - [#6522]) -- Append vera device id to entity id - but not name. ([@pavoni] - [#6523]) -- Discovery is a dict rather than an array. ([@pavoni] - [#6525]) -- Version bump to 0.41.0.dev0 ([@lwis]) -- Simplify Android IP webcam discovery ([@balloob] - [#6528]) -- Fix gen_requirements_all.py script for Windows. ([@siebert] - [#6547]) -- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532]) -- Be able to select mqtt:tls_version for Python ([@dennisdegreef] - [#6442]) -- ZWave binary sensor tests ([@armills] - [#6555]) -- Refactor zwave discovery to entity schema ([@armills] - [#6445]) -- Revert "Refactor zwave discovery to entity schema (#6445)" ([@balloob] - [#6564]) -- Upgraded blinkpy version, increased Throttle time for camera ([@fronzbot] - [#6561]) -- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552]) -- Bump voc version (fixes heater bug) ([@molobrakos]) -- Remove dispatcher camera ([@pvizeli] - [#6579]) -- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577]) -- Fix hydroquebec ([@titilambert] - [#6574]) -- Upgrade async_timeout to 1.2.0 ([@fabaff] - [#6590]) -- Upgrade pyasn1 to 0.2.3 ([@fabaff] - [#6588]) -- Upgrade sqlalchemy to 1.1.6 ([@fabaff] - [#6591]) -- Upgrade psutil to 5.2.0 ([@fabaff] - [#6585]) -- Upgrade Sphinx to 1.5.3 ([@fabaff] - [#6587]) -- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593]) -- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602]) -- Fix link ([@fabaff] - [#6612]) -- Upgrade py-cpuinfo to 0.2.7 ([@fabaff] - [#6610]) -- Upgrade googlemaps to 2.4.6 ([@fabaff] - [#6611]) -- Error handling when connection refused ([@molobrakos] - [#6614]) -- Prevent entities running multiple updates simultaneously ([@pvizeli] - [#6511]) -- Add configurable timeout option to notify/smtp ([@hawk259] - [#6609]) -- Define db for SHOW DIAGNOSTICS query since some users will not have a… ([@tflack] - [#6566]) -- Cover myq fix update pymyq ([@arraylabs] - [#6595]) -- Update mpd.py ([@yeralin] - [#6553]) (Breaking Change) -- Upgrade to dsmr_parser 0.8, supporting protocol 3 and 5. ([@aequitas] - [#6600]) -- Add "Refactor zwave discovery to entity schema" ([@balloob] - [#6565]) -- Tests for ZWave climate ([@armills] - [#6629]) -- Correctly flag Kodi media types ([@armills] - [#6628]) -- Use sqlite's WAL mode to avoid `database is locked` errors ([@n8henrie] - [#6519]) -- Remove event decorators ([@balloob] - [#6634]) (Breaking Change) -- Deprecate event forwarding ([@balloob]) -- Upgrade aiohttp to 1.3.4 ([@pvizeli] - [#6643]) -- Kodi extra attributes for tvshow and music media ([@mvillarejo] - [#6622]) -- Add ZWave cover tests ([@armills] - [#6648]) -- Kodi: Fix episode media type classification ([@armills] - [#6645]) -- Move LIFX to aiolifx for driving the bulbs ([@amelchio] - [#6584]) -- Fix #6534 ([@deisi] - [#6598]) -- self.loop.create_task -> self.add_job ([@balloob] - [#6632]) -- Bugfix RFLINK remove group ([@pvizeli] - [#6580]) -- Version bump to 0.40.1 ([@balloob]) -- Fix wake_on_lan ping with None as host ([@iamtpage] - [#6532]) -- Don't start the push updater if the Apple TV is 'off' ([@jnewland] - [#6552]) -- Fix for the case of zwave value used in several devices. ([@andrey-git] - [#6577]) -- Fix hydroquebec ([@titilambert] - [#6574]) -- Update pyecobee version to 0.0.7 ([@dale3h] - [#6593]) -- Update SMA solar sensor to work with the new add_devices callback ([@kellerza] - [#6602]) -- Since knx_2_float can't handle 0, bypass converting 0 value from knx to float ([@goofz] - [#6626]) -- Bugfix RFLINK remove group ([@pvizeli] - [#6580]) -- Added workday sensor ([@BastianPoe] - [#6599]) -- Add test for Z-wave switch ([@turbokongen] - [#6619]) -- Upgrade python-digitalocean to 1.11 ([@fabaff] - [#6653]) -- Add Zwave sensors test ([@turbokongen] - [#6640]) -- round output values ([@joe248] - [#6657]) -- Support for non-clients, NVidia shield, dynamic grouping, extra metad ([@JesseWebDotCom] - [#6054]) -- Upgrade astral to 1.4 ([@fabaff] - [#6332]) -- Upgrade aiohttp to 1.3.5 ([@fabaff] - [#6660]) -- Check if droplet exists ([@fabaff] - [#6663]) -- Corrected help text for refresh_node ([@sebk-666] - [#6659]) -- Add configurable timeout option to camera.synology ([@hawk259] - [#6655]) -- Pump Android ip webcam to 0.6 ([@pvizeli] - [#6665]) -- add latitude and longitude configuration to darksky sensor ([@RickyTaterSalad] - [#6191]) -- Refactor Neurio to add Daily Power Sensor ([@mezz64] - [#6662]) -- Added support for multiple efergy sensors in the same household. ([@miniconfig] - [#6630]) -- Add new media_player platform: Volumio Media Player ([@jslove] - [#6556]) -- Phone book lookup support for Fritz!Box call monitor ([@DavidMStraub] - [#6474]) -- Update Emby component to async ([@mezz64] - [#6664]) -- Fix hass script execution on Windows (#4977). ([@matrixx567] - [#6601]) -- Fixed Show All Controls feature ([@JesseWebDotCom]) -- Update Torque component to match recent API. ([@tylercrumpton] - [#6671]) -- Rflink: added support for lights with toggle type ([@martinfrancois] - [#6521]) -- Upgrade distro to 1.0.3 ([@fabaff] - [#6693]) -- Fix longitude ([@mezz64] - [#6697]) -- Bump PyChromecast to 0.8.1 ([@balloob] - [#6702]) -- Kodi use websocket loop task created by library ([@armills] - [#6703]) -- Fix Kodi when websocket is disabled ([@armills] - [#6706]) -- Revise power and energy units and property names. ([@pavoni] - [#6212]) (Breaking Change) -- automatically use bundled certificate it set to auto ([@printzlau] - [#6707]) (Breaking Change) -- Update frontend ([@balloob]) -- Add zwave light tests ([@armills] - [#6710]) -- restore_state: do not crash if domain not defined ([@balloob] - [#6714]) -- Fix for issue: luci returns 403 invalid token when rebooted #6715 ([@fbradyirl] - [#6717]) -- Don't warn if octoprint completion is null ([@jawilson] - [#6719]) -- ZWave Sensor tests ([@armills] - [#6721]) -- ZWave switch tests ([@armills] - [#6722]) -- Update frontend ([@balloob]) -- Fix LIFX unregister races ([@amelchio] - [#6723]) -- Do not log warning on rest_command if no error ([@balloob] - [#6713]) -- camera.zoneminder: Show recording state ([@mnoorenberghe] - [#6686]) -- ZWave Lock Tests ([@armills] - [#6730]) -- Tado climate device ([@wmalgadey] - [#6572]) -- Version bump to 0.40.2 ([@balloob]) -- Bump PyChromecast to 0.8.1 ([@balloob] - [#6702]) -- Constrain core dependencies to core versions ([@balloob] - [#6738]) -- Update constraints ([@balloob]) -- Adds Support for Lutron Caseta devices. ([@gurumitts] - [#6631]) -- Add sensor for Lyft time and price (based on Uber sensor) ([@drkp] - [#6711]) -- Add zwave per-node entity. ([@andrey-git] - [#6690]) -- Version bump to 0.41 ([@balloob]) - -[#6054]: https://github.com/home-assistant/home-assistant/pull/6054 -[#6115]: https://github.com/home-assistant/home-assistant/pull/6115 -[#6147]: https://github.com/home-assistant/home-assistant/pull/6147 -[#6191]: https://github.com/home-assistant/home-assistant/pull/6191 -[#6212]: https://github.com/home-assistant/home-assistant/pull/6212 -[#6332]: https://github.com/home-assistant/home-assistant/pull/6332 -[#6430]: https://github.com/home-assistant/home-assistant/pull/6430 -[#6442]: https://github.com/home-assistant/home-assistant/pull/6442 -[#6445]: https://github.com/home-assistant/home-assistant/pull/6445 -[#6474]: https://github.com/home-assistant/home-assistant/pull/6474 -[#6490]: https://github.com/home-assistant/home-assistant/pull/6490 -[#6492]: https://github.com/home-assistant/home-assistant/pull/6492 -[#6497]: https://github.com/home-assistant/home-assistant/pull/6497 -[#6500]: https://github.com/home-assistant/home-assistant/pull/6500 -[#6505]: https://github.com/home-assistant/home-assistant/pull/6505 -[#6510]: https://github.com/home-assistant/home-assistant/pull/6510 -[#6511]: https://github.com/home-assistant/home-assistant/pull/6511 -[#6513]: https://github.com/home-assistant/home-assistant/pull/6513 -[#6514]: https://github.com/home-assistant/home-assistant/pull/6514 -[#6516]: https://github.com/home-assistant/home-assistant/pull/6516 -[#6518]: https://github.com/home-assistant/home-assistant/pull/6518 -[#6519]: https://github.com/home-assistant/home-assistant/pull/6519 -[#6521]: https://github.com/home-assistant/home-assistant/pull/6521 -[#6522]: https://github.com/home-assistant/home-assistant/pull/6522 -[#6523]: https://github.com/home-assistant/home-assistant/pull/6523 -[#6525]: https://github.com/home-assistant/home-assistant/pull/6525 -[#6528]: https://github.com/home-assistant/home-assistant/pull/6528 -[#6532]: https://github.com/home-assistant/home-assistant/pull/6532 -[#6547]: https://github.com/home-assistant/home-assistant/pull/6547 -[#6552]: https://github.com/home-assistant/home-assistant/pull/6552 -[#6553]: https://github.com/home-assistant/home-assistant/pull/6553 -[#6555]: https://github.com/home-assistant/home-assistant/pull/6555 -[#6556]: https://github.com/home-assistant/home-assistant/pull/6556 -[#6561]: https://github.com/home-assistant/home-assistant/pull/6561 -[#6564]: https://github.com/home-assistant/home-assistant/pull/6564 -[#6565]: https://github.com/home-assistant/home-assistant/pull/6565 -[#6566]: https://github.com/home-assistant/home-assistant/pull/6566 -[#6572]: https://github.com/home-assistant/home-assistant/pull/6572 -[#6574]: https://github.com/home-assistant/home-assistant/pull/6574 -[#6577]: https://github.com/home-assistant/home-assistant/pull/6577 -[#6579]: https://github.com/home-assistant/home-assistant/pull/6579 -[#6580]: https://github.com/home-assistant/home-assistant/pull/6580 -[#6584]: https://github.com/home-assistant/home-assistant/pull/6584 -[#6585]: https://github.com/home-assistant/home-assistant/pull/6585 -[#6587]: https://github.com/home-assistant/home-assistant/pull/6587 -[#6588]: https://github.com/home-assistant/home-assistant/pull/6588 -[#6590]: https://github.com/home-assistant/home-assistant/pull/6590 -[#6591]: https://github.com/home-assistant/home-assistant/pull/6591 -[#6593]: https://github.com/home-assistant/home-assistant/pull/6593 -[#6595]: https://github.com/home-assistant/home-assistant/pull/6595 -[#6598]: https://github.com/home-assistant/home-assistant/pull/6598 -[#6599]: https://github.com/home-assistant/home-assistant/pull/6599 -[#6600]: https://github.com/home-assistant/home-assistant/pull/6600 -[#6601]: https://github.com/home-assistant/home-assistant/pull/6601 -[#6602]: https://github.com/home-assistant/home-assistant/pull/6602 -[#6609]: https://github.com/home-assistant/home-assistant/pull/6609 -[#6610]: https://github.com/home-assistant/home-assistant/pull/6610 -[#6611]: https://github.com/home-assistant/home-assistant/pull/6611 -[#6612]: https://github.com/home-assistant/home-assistant/pull/6612 -[#6614]: https://github.com/home-assistant/home-assistant/pull/6614 -[#6619]: https://github.com/home-assistant/home-assistant/pull/6619 -[#6622]: https://github.com/home-assistant/home-assistant/pull/6622 -[#6626]: https://github.com/home-assistant/home-assistant/pull/6626 -[#6628]: https://github.com/home-assistant/home-assistant/pull/6628 -[#6629]: https://github.com/home-assistant/home-assistant/pull/6629 -[#6630]: https://github.com/home-assistant/home-assistant/pull/6630 -[#6631]: https://github.com/home-assistant/home-assistant/pull/6631 -[#6632]: https://github.com/home-assistant/home-assistant/pull/6632 -[#6634]: https://github.com/home-assistant/home-assistant/pull/6634 -[#6640]: https://github.com/home-assistant/home-assistant/pull/6640 -[#6643]: https://github.com/home-assistant/home-assistant/pull/6643 -[#6645]: https://github.com/home-assistant/home-assistant/pull/6645 -[#6648]: https://github.com/home-assistant/home-assistant/pull/6648 -[#6653]: https://github.com/home-assistant/home-assistant/pull/6653 -[#6655]: https://github.com/home-assistant/home-assistant/pull/6655 -[#6657]: https://github.com/home-assistant/home-assistant/pull/6657 -[#6659]: https://github.com/home-assistant/home-assistant/pull/6659 -[#6660]: https://github.com/home-assistant/home-assistant/pull/6660 -[#6662]: https://github.com/home-assistant/home-assistant/pull/6662 -[#6663]: https://github.com/home-assistant/home-assistant/pull/6663 -[#6664]: https://github.com/home-assistant/home-assistant/pull/6664 -[#6665]: https://github.com/home-assistant/home-assistant/pull/6665 -[#6671]: https://github.com/home-assistant/home-assistant/pull/6671 -[#6686]: https://github.com/home-assistant/home-assistant/pull/6686 -[#6690]: https://github.com/home-assistant/home-assistant/pull/6690 -[#6693]: https://github.com/home-assistant/home-assistant/pull/6693 -[#6697]: https://github.com/home-assistant/home-assistant/pull/6697 -[#6702]: https://github.com/home-assistant/home-assistant/pull/6702 -[#6703]: https://github.com/home-assistant/home-assistant/pull/6703 -[#6706]: https://github.com/home-assistant/home-assistant/pull/6706 -[#6707]: https://github.com/home-assistant/home-assistant/pull/6707 -[#6710]: https://github.com/home-assistant/home-assistant/pull/6710 -[#6711]: https://github.com/home-assistant/home-assistant/pull/6711 -[#6713]: https://github.com/home-assistant/home-assistant/pull/6713 -[#6714]: https://github.com/home-assistant/home-assistant/pull/6714 -[#6717]: https://github.com/home-assistant/home-assistant/pull/6717 -[#6719]: https://github.com/home-assistant/home-assistant/pull/6719 -[#6721]: https://github.com/home-assistant/home-assistant/pull/6721 -[#6722]: https://github.com/home-assistant/home-assistant/pull/6722 -[#6723]: https://github.com/home-assistant/home-assistant/pull/6723 -[#6730]: https://github.com/home-assistant/home-assistant/pull/6730 -[#6738]: https://github.com/home-assistant/home-assistant/pull/6738 -[#6664]: https://github.com/home-assistant/home-assistant/pull/6664 -[@BastianPoe]: https://github.com/BastianPoe -[@DavidMStraub]: https://github.com/DavidMStraub -[@JesseWebDotCom]: https://github.com/JesseWebDotCom -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@RickyTaterSalad]: https://github.com/RickyTaterSalad -[@aequitas]: https://github.com/aequitas -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@arraylabs]: https://github.com/arraylabs -[@bachp]: https://github.com/bachp -[@balloob]: https://github.com/balloob -[@bokub]: https://github.com/bokub -[@dale3h]: https://github.com/dale3h -[@deisi]: https://github.com/deisi -[@dennisdegreef]: https://github.com/dennisdegreef -[@drkp]: https://github.com/drkp -[@fabaff]: https://github.com/fabaff -[@fbradyirl]: https://github.com/fbradyirl -[@finish06]: https://github.com/finish06 -[@fronzbot]: https://github.com/fronzbot -[@goofz]: https://github.com/goofz -[@gurumitts]: https://github.com/gurumitts -[@hawk259]: https://github.com/hawk259 -[@iamtpage]: https://github.com/iamtpage -[@jawilson]: https://github.com/jawilson -[@jnewland]: https://github.com/jnewland -[@joe248]: https://github.com/joe248 -[@jslove]: https://github.com/jslove -[@kellerza]: https://github.com/kellerza -[@lwis]: https://github.com/lwis -[@martinfrancois]: https://github.com/martinfrancois -[@matrixx567]: https://github.com/matrixx567 -[@mezz64]: https://github.com/mezz64 -[@miniconfig]: https://github.com/miniconfig -[@mnoorenberghe]: https://github.com/mnoorenberghe -[@molobrakos]: https://github.com/molobrakos -[@mvillarejo]: https://github.com/mvillarejo -[@n8henrie]: https://github.com/n8henrie -[@pavoni]: https://github.com/pavoni -[@printzlau]: https://github.com/printzlau -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@sebk-666]: https://github.com/sebk-666 -[@siebert]: https://github.com/siebert -[@tflack]: https://github.com/tflack -[@titilambert]: https://github.com/titilambert -[@turbokongen]: https://github.com/turbokongen -[@tylercrumpton]: https://github.com/tylercrumpton -[@vrnagy]: https://github.com/vrnagy -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[@wmalgadey]: https://github.com/wmalgadey -[@yeralin]: https://github.com/yeralin - -[components]: /components/ -[kodi]: /components/notify.kodi/ -[mpd]: /components/media_player.mpd/ -[emby]: /components/media_player.emby/ -[mqtt]: /docs/mqtt/ -[plex]: /components/media_player.plex/ -[tado]: /components/climate.tado/ -[volumio]: //components/media_player.volumio/ -[workday]: /components/binary_sensor.workday/ -[android]: /components/android_ip_webcam/ -[shadow]: https://www.w3.org/TR/shadow-dom/ - -[forum]: https://community.home-assistant.io/ -[issue]: https://github.com/home-assistant/home-assistant/issues -[discord]: https://discord.gg/c5DvZ4e - -[@bdurrer]: https://github.com/bdurrer -[interview]: /blog/2017/03/23/opensourcecraft-interview-with-founder-paulus-schoutsen/ -[OpenSourceCraft]: http://codepop.com/open-sourcecraft -[clt]: https://chemnitzer.linux-tage.de/2017/en/ -[workshop]: https://github.com/home-assistant/home-assistant-assets/tree/master/german/2017-clt-workshop diff --git a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown deleted file mode 100644 index 07cc25a196..0000000000 --- a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown +++ /dev/null @@ -1,70 +0,0 @@ ---- -layout: post -title: "HTTP to MQTT bridge" -description: "How to integrate IFTTT with HA using MQTT" -date: 2017-03-28 06:00:00 +0000 -date_formatted: "March 28, 2017" -author: petkov -comments: true -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 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. - - - -The app could be hosted on any Node.js hosting. I prefer [Heroku: Cloud Application Platform](https://www.heroku.com/home) for its simplicity. - -### {% linkable_title Bringing pieces together %} - -1. Configure the Home Assistant [MQTT trigger](/docs/automation/trigger/#mqtt-trigger). -1. Configure [CloudMQTT](https://www.cloudmqtt.com/). Check this [video tutorial](https://www.youtube.com/watch?v=VaWdvVVYU3A) for details. -1. [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/petkov/http_to_mqtt) HTTP to MQTT bridge app. -1. Add the [Configuration Variables](https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application) to your Heroku app mentioned here. - * AUTH_KEY: Can be any string, eg. `912ec803b2ce49e4a541068d495ab570`. - * MQTT_HOST: The host of your MQTT broker, eg. mqtts://k99.cloudmqtt.com:21234. - * MQTT_USER: MQTT username - * MQTT_PASS: MQTT password -1. Create an IFTTT applet the same way as described in [BRUH Automation](https://youtu.be/087tQ7Ly7f4?t=265) video. -1. Configure [Maker Webhooks](https://ifttt.com/maker_webhooks) service with below parameters. - * URL: `https://.herokuapp.com/post/` - * Method: `POST` - * Content Type: `application/json` - * Body: `{"topic":"","message":"","key":""}` - -### {% linkable_title Subscribe to latest version %} - -Additionally you can make Heroku to update the HTTP to MQTT bridge app to the latest available version from the GitHub repository automatically. To do this follow the instruction on the [Heroku help page](https://devcenter.heroku.com/articles/github-integration#automatic-deploys). - -### {% linkable_title Improve response time %} - -After 30 minutes of inactivity Heroku will put your app into sleep mode. This will result in ~10 seconds response time. To prevent Heroku from putting your app into sleep mode, ping it every 10 minutes. You can do that by sending regular HTTP GET request to http://your_app/keep_alive/. But be careful. Heroku free quota is 550 hours per month. Without sleeping your app will be allowed to run only 22 days a month. Additionally the `keep_alive` method will send a simple MQTT message to prevent the broker from sleeping as well. The topic and message can be configured using Heroku environment variables `KEEP_ALIVE_TOPIC` and `KEEP_ALIVE_MESSAGE` and both are set to "keep_alive" by default. - -You can even configure Home Assistant to ping HTTP to MQTT bridge every 10 minutes during daytime. Below is an example of how to do that: - -```yaml -rest_command: - http_to_mqtt_keep_alive: - url: https:///keep_alive/ - method: get - -automation: - alias: HTTP to MQTT keep alive - trigger: - platform: time - minutes: '/10' - seconds: 00 - condition: - condition: time - after: '7:30:00' - before: '23:59:59' - action: - service: rest_command.http_to_mqtt_keep_alive -``` - -### {% linkable_title Thanks %} - -Special thanks to Ben from [BRUH Automation](https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w/featured) for awesome tutorials which inspired me to do this project. diff --git a/source/_posts/2017-04-01-thomas-krenn-award.markdown b/source/_posts/2017-04-01-thomas-krenn-award.markdown deleted file mode 100644 index df003b8ec4..0000000000 --- a/source/_posts/2017-04-01-thomas-krenn-award.markdown +++ /dev/null @@ -1,40 +0,0 @@ ---- -layout: post -title: "Thomas Krenn award 2017" -description: "Thomas Krenn award 2017" -date: 2017-04-01 06:00:00 +0000 -date_formatted: "April 01, 2017" -author: Fabian Affolter -comments: true -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 achievement for an independent community project. - -I would like to thanks all contributors. Your endless effort made this possible. - - - -The prize beside the very nice trophy contains hardware and we want to give that hardware partically away. We won four [Low Energy Server v2 (LES)][LES] units with an Intel Celeron N2930, 8 GB of RAM, and a mSATA of 128 GB (one unit with 64 GB). We were thinking about to keep one of those units in Europe and one in North America for testing and to use during workshops and events. But the other two will go to interested parties. - -As a raffle would be to easy, we make a contest out of it. This means that we are looking for your application. Of course, we would like to see those systems goes to active or future developers who can justify their need for one of the systems to run CI, UI tests, public accessible Home Assistant demo instances, etc. At the other hand we would like to keep it open, to see with what people are coming up. Please participate as well if you are planning to automate the public school of your kids with 1000 switches or light, need a server to run it, and want to provide regular feedback about the user experience. - -Create an entry in our [Forum][forum]. Be creative and use your imagination. - - -### {% linkable_title The details %} - -- Jury: The Home Assistant community -- Dead line: April, 23 2017 - 23.59 UTC -- Voting period: April, 24th till April, 30 2017 - 23.59 UTC - -The decision of the jury will be final. If there will be a dispute then the Top-5 committer of the Home Assistant organization on Github will decide. Also, we reserve us the right to ban applications if we suspect cheating or unfair methods. Updates will be available in the [Forum][forum] and on [Twitter][twitter]. - -Keep in mind that you may have to pay the fee for customs handling and the import duty by yourself. The plan is to ship the hardware from Germany. If you are located in a country with import/export regulations, we may not be able to ship the hardware to you. - -[LES]: https://www.thomas-krenn.com/en/products/low-energy-systems/les-v2.html -[award]: https://www.thomas-krenn.com/de/tkmag/allgemein/zammad-home-assistant-und-freifunk-das-sind-die-gewinner-des-thomas-krenn-awards-2017/ -[forum]: https://community.home-assistant.io/c/contest-2017 -[twitter]: https://twitter.com/home_assistant - 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 deleted file mode 100644 index 1dc27422ec..0000000000 --- a/source/_posts/2017-04-08-eddystone-beacons--lockitron-locks--total-connect.markdown +++ /dev/null @@ -1,407 +0,0 @@ ---- -layout: post -title: "Home Assistant 0.42: Eddystone Beacons, Lockitron locks and Total Connect alarm systems" -description: "Tons of bug fixes, performance increasements and some cool new integrations." -date: 2017-04-08 08:04:05 +0000 -date_formatted: "April 8, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2017-04-0.42/social.png ---- - - - -It's time for Home Assistant 0.42. This release has been focused on refining the system and fixing a lot of bugs. We have also upgraded to the latest version of our HTTP library which should give us a significant boost serving files and API. - -On our social media front, we have crossed the 1000 likes on [our Facebook page][hass-fb]! Also on the social media front, the YouTube channel diyAutomate has been putting out a lot of great getting started videos about Home Assistant, [go check them out!][diyAutomate] - -Also want to take a moment to thank Austin Andrews aka [Templarian] for his [Material Design Icons][mli]. He is part of what makes Home Assistant so beautiful 🤗. - -[hass-fb]: https://www.facebook.com/homeassistantio -[diyAutomate]: https://www.youtube.com/c/diyautomate -[mli]: https://materialdesignicons.com/ -[Templarian]: https://github.com/templarian - -## New integrations - -- Lockitron locks ([@aarya123] - [#6805]) -- Met Office weather and sensor components ([@jacobtomlinson] - [#6742]) -- Total Connect alarm systems ([@wardcraigj] - [#6887]) -- Eddystone Beacon Temperature Sensor ([@citruz] - [#6789]) -- CrimeReports.com integration shows crimes around a location in the US ([@happyleavesaoc] - [#6966]) -- The Ring doorbell has been integrated further with the inclusion of binary sensors ([@tchellomello] - [#6520]) - - -## Breaking changes - -- We were incorrectly treating groups named `default_view` as default views. Make sure you set `view: true` in the config for these groups. [#251 (frontend)](https://github.com/home-assistant/home-assistant-polymer/pull/251) -- The last release introduced a revamped LIFX platform. We only realized after deploy that this version does not work on Windows. We have added the old LIFX implementation back as `lifx_legacy`. -- We added indexes to the database to speed up the history view. Initial boot can take a couple of minutes. Do not shut down while migration is occurring. [#6688] -- Z-Wave cover workaround has been removed. Use device config instead. [#6832] - -```yaml -zwave: - device_config: - cover.my_cover: - invert_openclose_buttons: true -``` - -- If you set an initial state for an automation, input_boolean, input_slider or input_select it will overrule over the previous state. [#6911] [#6924] -- Z-Wave rename node service parameter `entity_id` has been replaced with `node_id` to align parameters [#6938] -- Automations are now initialized when Home Assistant finishes starting up. This means that it is deprecated to listen for event `homeassistant_start`. Instead, use the new `homeassistant` automation platform. [#6936] - -```yaml -automation: - trigger: - platform: homeassistant - event: start - action: - service: light.turn_on -``` - -- The Ring component has moved the authentication to a dedicated ring component. [#6520] - -```yaml -ring: - username: !secret ring_username - password: !secret ring_password - -binary_sensor: - - platform: ring - monitored_conditions: - - ding - - motion - -sensor: - - platform: ring - monitored_conditions: - - battery - - last_activity - - last_ding - - last_motion - - volume -``` - -## 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. - -## 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 Release 0.42.1 - April 9 %} - -- Upgrade aiohttp to 2.0.6 -- Make discovery not cause startup warning - -## {% linkable_title Release 0.42.1 - April 9 %} - - - Revert upgrade to aiothttp 2.0.6 - -## {% linkable_title Release 0.42.3 - April 11 %} - -- Fix Synology camera content type ([@balloob] - [#7010]) -- Fix two more instances of JSON parsing synology ([@balloob] - [#7014]) -- Bump pyalarmdotcom to support new version of aiohttp ([@Xorso] - [#7021]) -- Fix US states check (fixes #7015) ([@fabaff] - [#7017]) -- Plug file leak on LIFX unregister ([@amelchio] - [#7031]) -- Bugfix wait on start event ([@pvizeli] - [#7013]) - -## {% linkable_title Release 0.42.4 - April 17 %} - -- Version bump to 0.42.4 ([@balloob]) -- Fix mysensors callback ([@MartinHjelmare] - [#7057]) -- Upgrade aiohttp to 2.0.7 ([@fabaff] - [#7106]) -- Make version number optional and a string to fix identify issue introduced in iOS 1.0.1 ([@robbiet480] - [#7141]) -- Fix for zwave RGB setting ([@armills] - [#7137]) - -## All changes - -- Flux led update lib ([@danielhiversen] - [#6763]) -- Adding expire_after to mqtt sensor to expire outdated values ([@micw] - [#6708]) -- New indexes for states and recording_runs tables ([@m00dawg] - [#6688]) (breaking change) -- Fix flaky template test ([@armills] - [#6768]) -- Repair zwave sensor coverage ([@armills] - [#6764]) -- Version bump to 0.42.0.dev0 ([@balloob]) -- current temp could be none ([@turbokongen] - [#6759]) -- Typing error and update test ([@turbokongen] - [#6757]) -- Wink Aros Fixes ([@geekofweek] - [#6726]) -- Upgrade pydroid-ipcam to 0.7 ([@fabaff] - [#6772]) -- Upgrade psutil to 5.2.1 ([@fabaff] - [#6771]) -- Upgrade sleekxmpp to 1.3.2 ([@fabaff] - [#6773]) -- Tests for zwave workaround detection ([@armills] - [#6761]) -- Bugfix automation fire on bootstrap ([@pvizeli] - [#6770]) -- Homematic Fixes ([@danielperna84] - [#6769]) -- Fix wink siren ([@w1ll1am23] - [#6775]) -- Fix bridge-led support in limitlessled.py ([@quadportnick] - [#6776]) -- Wrong info in discovery schema ([@turbokongen] - [#6779]) -- switch.tplink: upgrade to the newest upstream release which adds support for plugs using the newer communication protocol ([@rytilahti] - [#6790]) -- Add switch to MQTT discovery ([@fabaff] - [#6733]) -- Update docstrings ([@fabaff] - [#6795]) -- Add optional unit of measurement ([@fabaff] - [#6796]) -- Upgrade zeroconf to 0.19.0 ([@fabaff] - [#6792]) -- Upgrade pysnmp to 4.3.5 ([@fabaff] - [#6793]) -- Platform for Munich public transport departure times ([@DavidMStraub] - [#6704]) -- Use string formatting and remove already global disabled pylint issue ([@fabaff] - [#6801]) -- Fix typo and update name ([@fabaff] - [#6809]) -- Upgrade matrix-client to 0.0.6 ([@fabaff] - [#6808]) -- Make get_snmp_data more robust ([@tantecky] - [#6798]) -- Add NVR support to Hikvision Binary Sensors ([@mezz64] - [#6807]) -- Update Insight parameters using the subscription data. ([@pavoni] - [#6782]) -- fix WOL in docker/jail ([@goto100] - [#6810]) -- Allow to monitor Windows hosts ([@fabaff] - [#6803]) -- lights/hue: use device class for on/off devices like the osram lightify plug ([@jannau] - [#6817]) -- [switch.wemo] Fix mW to kW conversion. ([@lwis] - [#6826]) -- yeelight: adjust supported features on update() ([@rytilahti] - [#6799]) -- Updated pubnubsub-handler version ([@w1ll1am23] - [#6829]) -- Remove zwave cover invert workaround. Use config instead. ([@andrey-git] - [#6832]) (breaking change) -- history_stats: Fix schema, as `state` can be arbitrary string ([@leppa] - [#6753]) -- Rflink group commands ([@aequitas] - [#5969]) -- Updating Alarm.com Component for async and no Selenium ([@Xorso] - [#6752]) -- Add voluptuous config validation to scenes ([@MartinHjelmare] - [#6830]) -- Integration with lockitron ([@aarya123] - [#6805]) (new-platform) -- [switch.wemo] Fix today_energy_kwh calculation. ([@lwis] - [#6846]) -- Locative tests to use aiohttp test utils ([@balloob] - [#6838]) -- Convert Alexa tests to use aiohttp test utils ([@balloob] - [#6839]) -- Handle initial event after entity is instantiated. ([@aequitas] - [#6760]) -- Lifx legacy ([@amelchio] - [#6847]) (new-platform) -- aiohttp 2 ([@balloob] - [#6835]) -- Fix configuration setup ([@bdurrer] - [#6853]) -- Add option to disable automatic add for lights and sensors. ([@aequitas] - [#6852]) -- Update aioHTTP to 2.0.5 ([@pvizeli] - [#6856]) -- use change light level to avoid variable ramp speeds ([@wardcraigj] - [#6860]) -- Handle aiohttp task cancellation better ([@balloob] - [#6862]) -- Introduced Ring binary sensors and refactored Ring component ([@tchellomello] - [#6520]) (breaking change) (new-platform) -- Upgrade sendgrid to 3.6.5 ([@fabaff] - [#6866]) -- Upgrade sphinx-autodoc-typehints to 1.2.0 ([@fabaff] - [#6865]) -- Added Met Office weather and sensor components ([@jacobtomlinson] - [#6742]) (new-platform) -- Upgrade speedtest-cli to 1.0.3 ([@fabaff] - [#6867]) -- Bumped amcrest module to 1.1.5 ([@tchellomello] - [#6872]) -- Upgrade pytz to 2017.02 ([@fabaff] - [#6875]) -- Upgrade aiohttp_cors to 0.5.2 ([@fabaff] - [#6874]) -- Upgrade sqlalchemy to 1.1.8 ([@fabaff] - [#6873]) -- added support for Fibaro FGR-222 (similar to FGRM-222) ([@ChristianKuehnel] - [#6890]) -- Fluxled ([@danielhiversen] - [#6892]) -- Fix Tado climate set off mode ([@wmalgadey] - [#6848]) -- Fox UMP volume set ([@danieljkemp] - [#6904]) -- Move examples out ([@balloob] - [#6908]) -- Update README.rst ([@balloob]) -- Makes amcrest.sensor to handle properly the scan_interval option. ([@tchellomello] - [#6885]) -- Make sensor.ring to handle scan_interval option as expected. ([@tchellomello] - [#6886]) -- Eliminate needless async_add_job invocation of async_add_devices ([@nugget] - [#6864]) -- Onkyo update ([@danieljkemp] - [#6906]) -- Fix for #6691 Neato Connection error handling ([@turbokongen] - [#6731]) -- Adds support for the PlugInDimmer hardware ([@gurumitts] - [#6915]) -- Support for zwave light transitions ([@armills] - [#6868]) -- Bump pyHik library version to support more cameras ([@mezz64] - [#6921]) -- Update vera cover refresh logic ([@pavoni] - [#6897]) -- Update frontend ([@balloob]) -- Automation: initial state > restore state ([@balloob] - [#6911]) (breaking change) -- Upgrade flux_led to 0.17 ([@danielhiversen] - [#6929]) -- Upgrade paho-mqtt to 1.2.1 ([@fabaff] - [#6928]) -- Upgrade distro to 1.0.4 ([@fabaff] - [#6926]) -- Upgrade Sphinx to 1.5.4 ([@fabaff] - [#6927]) -- Allow token authentication for 'hook' switch component ([@KlaasH] - [#6922]) -- WIP - Fix bug in state handling in Vera Switch and Light ([@pavoni] - [#6931]) -- total connect alarm support ([@wardcraigj] - [#6887]) (new-platform) -- Initial state over restore state ([@balloob] - [#6924]) (breaking change) -- Eddystone Beacon Temperature Sensor ([@citruz] - [#6789]) (new-platform) -- Add android ip webcam support for aiohttp2 ([@pvizeli] - [#6940]) -- Bump pywemo version. Fixes Osram/Sylvania Lightify tunable white bulbs. ([@pavoni] - [#6946]) -- Clean artifacts after running Ring tests. ([@tchellomello] - [#6944]) -- Rename zwave nodes by node ID instead of entity ID ([@armills] - [#6938]) (breaking change) -- Report proper features in mqtt_json light ([@jawilson] - [#6941]) -- Add multi phone numbers support ([@titilambert] - [#6605]) -- Upgrade Sphinx to 1.5.5 ([@fabaff] - [#6947]) -- Upgrade py-cpuinfo to 3.0.0 ([@fabaff] - [#6948]) -- Fix automations listening to HOMEASSISTANT_START ([@balloob] - [#6936]) (breaking change) -- Fix startup of sonos / snapshot handling / error handling ([@pvizeli] - [#6945]) -- Upgrade mysensors dep and callbacks ([@MartinHjelmare] - [#6950]) -- Added average temperature for the day before and the current period ([@diogos88] - [#6883]) -- Upgrade sqlalchemy to 1.1.9 ([@fabaff] - [#6955]) -- Update for 0.42 ([@fabaff]) -- Initial import for HassIO ([@pvizeli] - [#6935]) (new-platform) -- 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]) -- Crime Reports sensor ([@happyleavesaoc] - [#6966]) (new-platform) -- Update kodi for aiohttp2 ([@armills] - [#6967]) -- Bugfix time and task coro ([@pvizeli] - [#6968]) -- Fix control+c quitting HASS ([@balloob] - [#6974]) -- Update Emby for aiohttp v2 ([@mezz64] - [#6981]) -- switch.tplink: bump pyhs100 version requirement ([@rytilahti] - [#6986]) -- Warn if start takes a long time. ([@balloob] - [#6975]) -- Bump Amcrest module to 1.1.8 ([@tchellomello] - [#6990]) - -[#5969]: https://github.com/home-assistant/home-assistant/pull/5969 -[#6520]: https://github.com/home-assistant/home-assistant/pull/6520 -[#6605]: https://github.com/home-assistant/home-assistant/pull/6605 -[#6688]: https://github.com/home-assistant/home-assistant/pull/6688 -[#6704]: https://github.com/home-assistant/home-assistant/pull/6704 -[#6708]: https://github.com/home-assistant/home-assistant/pull/6708 -[#6726]: https://github.com/home-assistant/home-assistant/pull/6726 -[#6731]: https://github.com/home-assistant/home-assistant/pull/6731 -[#6733]: https://github.com/home-assistant/home-assistant/pull/6733 -[#6742]: https://github.com/home-assistant/home-assistant/pull/6742 -[#6752]: https://github.com/home-assistant/home-assistant/pull/6752 -[#6753]: https://github.com/home-assistant/home-assistant/pull/6753 -[#6757]: https://github.com/home-assistant/home-assistant/pull/6757 -[#6759]: https://github.com/home-assistant/home-assistant/pull/6759 -[#6760]: https://github.com/home-assistant/home-assistant/pull/6760 -[#6761]: https://github.com/home-assistant/home-assistant/pull/6761 -[#6763]: https://github.com/home-assistant/home-assistant/pull/6763 -[#6764]: https://github.com/home-assistant/home-assistant/pull/6764 -[#6768]: https://github.com/home-assistant/home-assistant/pull/6768 -[#6769]: https://github.com/home-assistant/home-assistant/pull/6769 -[#6770]: https://github.com/home-assistant/home-assistant/pull/6770 -[#6771]: https://github.com/home-assistant/home-assistant/pull/6771 -[#6772]: https://github.com/home-assistant/home-assistant/pull/6772 -[#6773]: https://github.com/home-assistant/home-assistant/pull/6773 -[#6775]: https://github.com/home-assistant/home-assistant/pull/6775 -[#6776]: https://github.com/home-assistant/home-assistant/pull/6776 -[#6779]: https://github.com/home-assistant/home-assistant/pull/6779 -[#6782]: https://github.com/home-assistant/home-assistant/pull/6782 -[#6789]: https://github.com/home-assistant/home-assistant/pull/6789 -[#6790]: https://github.com/home-assistant/home-assistant/pull/6790 -[#6792]: https://github.com/home-assistant/home-assistant/pull/6792 -[#6793]: https://github.com/home-assistant/home-assistant/pull/6793 -[#6795]: https://github.com/home-assistant/home-assistant/pull/6795 -[#6796]: https://github.com/home-assistant/home-assistant/pull/6796 -[#6798]: https://github.com/home-assistant/home-assistant/pull/6798 -[#6799]: https://github.com/home-assistant/home-assistant/pull/6799 -[#6801]: https://github.com/home-assistant/home-assistant/pull/6801 -[#6803]: https://github.com/home-assistant/home-assistant/pull/6803 -[#6805]: https://github.com/home-assistant/home-assistant/pull/6805 -[#6807]: https://github.com/home-assistant/home-assistant/pull/6807 -[#6808]: https://github.com/home-assistant/home-assistant/pull/6808 -[#6809]: https://github.com/home-assistant/home-assistant/pull/6809 -[#6810]: https://github.com/home-assistant/home-assistant/pull/6810 -[#6817]: https://github.com/home-assistant/home-assistant/pull/6817 -[#6826]: https://github.com/home-assistant/home-assistant/pull/6826 -[#6829]: https://github.com/home-assistant/home-assistant/pull/6829 -[#6830]: https://github.com/home-assistant/home-assistant/pull/6830 -[#6832]: https://github.com/home-assistant/home-assistant/pull/6832 -[#6835]: https://github.com/home-assistant/home-assistant/pull/6835 -[#6838]: https://github.com/home-assistant/home-assistant/pull/6838 -[#6839]: https://github.com/home-assistant/home-assistant/pull/6839 -[#6846]: https://github.com/home-assistant/home-assistant/pull/6846 -[#6847]: https://github.com/home-assistant/home-assistant/pull/6847 -[#6848]: https://github.com/home-assistant/home-assistant/pull/6848 -[#6852]: https://github.com/home-assistant/home-assistant/pull/6852 -[#6853]: https://github.com/home-assistant/home-assistant/pull/6853 -[#6856]: https://github.com/home-assistant/home-assistant/pull/6856 -[#6860]: https://github.com/home-assistant/home-assistant/pull/6860 -[#6862]: https://github.com/home-assistant/home-assistant/pull/6862 -[#6864]: https://github.com/home-assistant/home-assistant/pull/6864 -[#6865]: https://github.com/home-assistant/home-assistant/pull/6865 -[#6866]: https://github.com/home-assistant/home-assistant/pull/6866 -[#6867]: https://github.com/home-assistant/home-assistant/pull/6867 -[#6868]: https://github.com/home-assistant/home-assistant/pull/6868 -[#6872]: https://github.com/home-assistant/home-assistant/pull/6872 -[#6873]: https://github.com/home-assistant/home-assistant/pull/6873 -[#6874]: https://github.com/home-assistant/home-assistant/pull/6874 -[#6875]: https://github.com/home-assistant/home-assistant/pull/6875 -[#6883]: https://github.com/home-assistant/home-assistant/pull/6883 -[#6885]: https://github.com/home-assistant/home-assistant/pull/6885 -[#6886]: https://github.com/home-assistant/home-assistant/pull/6886 -[#6887]: https://github.com/home-assistant/home-assistant/pull/6887 -[#6890]: https://github.com/home-assistant/home-assistant/pull/6890 -[#6892]: https://github.com/home-assistant/home-assistant/pull/6892 -[#6897]: https://github.com/home-assistant/home-assistant/pull/6897 -[#6904]: https://github.com/home-assistant/home-assistant/pull/6904 -[#6906]: https://github.com/home-assistant/home-assistant/pull/6906 -[#6908]: https://github.com/home-assistant/home-assistant/pull/6908 -[#6911]: https://github.com/home-assistant/home-assistant/pull/6911 -[#6915]: https://github.com/home-assistant/home-assistant/pull/6915 -[#6921]: https://github.com/home-assistant/home-assistant/pull/6921 -[#6922]: https://github.com/home-assistant/home-assistant/pull/6922 -[#6924]: https://github.com/home-assistant/home-assistant/pull/6924 -[#6926]: https://github.com/home-assistant/home-assistant/pull/6926 -[#6927]: https://github.com/home-assistant/home-assistant/pull/6927 -[#6928]: https://github.com/home-assistant/home-assistant/pull/6928 -[#6929]: https://github.com/home-assistant/home-assistant/pull/6929 -[#6931]: https://github.com/home-assistant/home-assistant/pull/6931 -[#6935]: https://github.com/home-assistant/home-assistant/pull/6935 -[#6936]: https://github.com/home-assistant/home-assistant/pull/6936 -[#6938]: https://github.com/home-assistant/home-assistant/pull/6938 -[#6940]: https://github.com/home-assistant/home-assistant/pull/6940 -[#6941]: https://github.com/home-assistant/home-assistant/pull/6941 -[#6944]: https://github.com/home-assistant/home-assistant/pull/6944 -[#6945]: https://github.com/home-assistant/home-assistant/pull/6945 -[#6946]: https://github.com/home-assistant/home-assistant/pull/6946 -[#6947]: https://github.com/home-assistant/home-assistant/pull/6947 -[#6948]: https://github.com/home-assistant/home-assistant/pull/6948 -[#6950]: https://github.com/home-assistant/home-assistant/pull/6950 -[#6952]: https://github.com/home-assistant/home-assistant/pull/6952 -[#6955]: https://github.com/home-assistant/home-assistant/pull/6955 -[#6960]: https://github.com/home-assistant/home-assistant/pull/6960 -[#6963]: https://github.com/home-assistant/home-assistant/pull/6963 -[#6964]: https://github.com/home-assistant/home-assistant/pull/6964 -[#6966]: https://github.com/home-assistant/home-assistant/pull/6966 -[#6967]: https://github.com/home-assistant/home-assistant/pull/6967 -[#6968]: https://github.com/home-assistant/home-assistant/pull/6968 -[#6974]: https://github.com/home-assistant/home-assistant/pull/6974 -[#6975]: https://github.com/home-assistant/home-assistant/pull/6975 -[#6981]: https://github.com/home-assistant/home-assistant/pull/6981 -[#6986]: https://github.com/home-assistant/home-assistant/pull/6986 -[#6990]: https://github.com/home-assistant/home-assistant/pull/6990 -[#7010]: https://github.com/home-assistant/home-assistant/pull/7010 -[#7013]: https://github.com/home-assistant/home-assistant/pull/7013 -[#7014]: https://github.com/home-assistant/home-assistant/pull/7014 -[#7017]: https://github.com/home-assistant/home-assistant/pull/7017 -[#7021]: https://github.com/home-assistant/home-assistant/pull/7021 -[#7031]: https://github.com/home-assistant/home-assistant/pull/7031 -[@Xorso]: https://github.com/Xorso -[@amelchio]: https://github.com/amelchio -[@balloob]: https://github.com/balloob -[@fabaff]: https://github.com/fabaff -[@pvizeli]: https://github.com/pvizeli -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@DavidMStraub]: https://github.com/DavidMStraub -[@KlaasH]: https://github.com/KlaasH -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@aarya123]: https://github.com/aarya123 -[@aequitas]: https://github.com/aequitas -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@aufano]: https://github.com/aufano -[@bdurrer]: https://github.com/bdurrer -[@citruz]: https://github.com/citruz -[@danielhiversen]: https://github.com/danielhiversen -[@danieljkemp]: https://github.com/danieljkemp -[@danielperna84]: https://github.com/danielperna84 -[@diogos88]: https://github.com/diogos88 -[@geekofweek]: https://github.com/geekofweek -[@goto100]: https://github.com/goto100 -[@gurumitts]: https://github.com/gurumitts -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@jacobtomlinson]: https://github.com/jacobtomlinson -[@jannau]: https://github.com/jannau -[@jawilson]: https://github.com/jawilson -[@leppa]: https://github.com/leppa -[@lwis]: https://github.com/lwis -[@m00dawg]: https://github.com/m00dawg -[@mezz64]: https://github.com/mezz64 -[@micw]: https://github.com/micw -[@nugget]: https://github.com/nugget -[@pavoni]: https://github.com/pavoni -[@quadportnick]: https://github.com/quadportnick -[@rytilahti]: https://github.com/rytilahti -[@tantecky]: https://github.com/tantecky -[@tchellomello]: https://github.com/tchellomello -[@titilambert]: https://github.com/titilambert -[@turbokongen]: https://github.com/turbokongen -[@viswa-swami]: https://github.com/viswa-swami -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[@wmalgadey]: https://github.com/wmalgadey -[forum]: https://community.home-assistant.io/ -[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-15-ios.markdown b/source/_posts/2017-04-15-ios.markdown deleted file mode 100644 index 817cb64631..0000000000 --- a/source/_posts/2017-04-15-ios.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post -title: "1 year and 22 days ago I had an idea..." -description: "An Easter gift from Home Assistant for all iOS fans" -date: 2017-04-15 08:04:05 +0000 -date_formatted: "April 16, 2017" -author: Robbie Trencheny -author_twitter: robbie -comments: true -categories: Announcements ---- - -1 year and 22 days ago, or 387 days ago, on March 25th, 2016, I started a project to bring Home Assistant to the iPhone. - -I thought the existing notification and location solutions were lacking in one way or another and had wanted for _years_ to have a project I could call my own which would allow me to learn iOS development. What better way then implementing an extremely complex application like Home Assistant? - -I started with a lot of steam. I remember cranking out the initial work that night and showing Paulus who was astounded at how fast the UI was coming together. - -Little would I know how many problems I would create and uncover throughout the process. Writing a mobile app for a project that moves as fast as Home Assistant is... tricky, to say the least. In the time since I started writing the app, Home Assistant had 90 releases. I started writing the day before 0.16 was released. Now we are at 0.42.3. Time flies... - -I couldn't have completed the app without help and input from the community. By the end I had 700 beta testers, of which about 500 were very active in testing the app. - -I received emails and forum posts almost every day, even when the app would go without an update for weeks and sometimes months at a time as my life got busier and busier. - -I wanted this app to be done 9 months ago, at least, but my drive to add more and more features killed that idea. This really taught me the value of the MVP over the kitchen sink. - -It may not look the way that I wanted it to initially, with beautiful native UI components, but that's okay. What I really cared about is there. The notification and location engines are some of the most customizable and powerful available in an iOS app if I do say so myself. I made them this way to keep with the spirit of infinite flexibility that is enshrined in Home Assistant. - -Just because the app is released doesn't mean we are at the end of the road. It's only the beginning. There's plenty of bugs to fix still, improvements to make, features to add. Beta testing will continue, and if anything, be expanded. I do want to have a native UI someday, but that's pretty hard with how fast the project moves. - -The biggest request I have is for more developers on the project. As many of you know, I have my hands in many different parts of Home Assistant, from governance and organization to managing the forums to writing this app, managing the Homebridge plugin and even sometimes writing code for the actual core codebase! I can't do it all, and I'm still a new iOS developer who doesn't know all the best practices. - -The app is [open source](https://github.com/home-assistant/home-assistant-iOS), has been for the last few months when I first prepared to submit it to Apple for review. I invite Swift developers to come and join me in building it. Trust me, there's tons to do. - -**1 year and 22 days ago, on March 25th, 2016 I began work on Home Assistant for iOS.** - -**Today, April 16th, 2017, I am _extremely_ excited to announce that Home Assistant for iOS has been approved by Apple and is now available to download for ~~a monthly subscription starting at $9.99~~ free! (had to get a joke in here somewhere!) on the iOS App Store in every country.** - -

    - -_Please note, you must have Home Assistant 0.42.4 or later installed for the app to function properly._ - -Thanks for everything so far, I'm looking forward to the road that lies ahead for Home Assistant on iOS! - diff --git a/source/_posts/2017-04-17-ikea-tradfri-internet-of-things-done-right.markdown b/source/_posts/2017-04-17-ikea-tradfri-internet-of-things-done-right.markdown deleted file mode 100644 index d44d60a79f..0000000000 --- a/source/_posts/2017-04-17-ikea-tradfri-internet-of-things-done-right.markdown +++ /dev/null @@ -1,140 +0,0 @@ ---- -layout: post -title: "IKEA Trådfri: Internet of Things done right" -description: "We analyzed the recently released IKEA Trådfri hardware. It is the perfect companion hardware to Home Assistant." -date: 2017-04-17 08:04:05 +0000 -date_formatted: "April 17, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Internet-of-Things -og_image: /images/blog/2017-04-tradfri/gateway.jpg ---- - -Last month IKEA released a new home automation lineup called [Trådfri][tradfri]. It consists of white bulbs, dimming remotes, color temperature remotes and motion sensors. After almost two weeks of research, we have come to the conclusion that this is going to be the perfect companion hardware to work with Home Assistant. Here is the gist of our breakdown: - - - **Works out of the box.** You can get started by just buying the already paired light and remote. You only need to buy the gateway if you want to set time-based rules for your lights or use your phone as a remote. - - **Local only hub.** No cloud that gathers data about how you live your life and it will keep working even if IKEA stops supporting it. - - **Based on open standards.** It uses Zigbee between devices and CoAP/dTLS to talk to the gateway. This means that you are not locked into a single vendor. You can pair it with Philips Hue bulbs and other compatible vendors. - - **Affordable.** Lights start at $12 standalone and $20 if bundled with a remote (USA prices). - - **Useful design.** The gateway has built-in space to hide excess cables and remotes come with magnetic holders for on the wall. - - **Able to subscribe to changes (local push).** Automations will be able to instantly respond to changes to device states by subscribing to the gateway for changes. - - **Full integration in Home Assistant 0.43 (scheduled for release April 22).** Our community built a standalone library [pytradfri] and we use it in Home Assistant. Home Assistant will automatically discover gateways on your network and guide the user to set them up. - - **Downside: no integration with other systems yet.** There are rumors that Homekit support will land in October and I expect both Google Home and Amazon Echo to eventually add support. Use Home Assistant to connect them all in the meanwhile. - - **Semi-downside: you can’t control your lights remotely.** Because it’s local only, you won’t be able to control your lights remotely unless via a third-party integration. - -Full breakdown available after clicking read more. - -_(Note: we are not affiliated with IKEA nor do we receive commission for sales. We are just big fans of their new line up!)_ - - -## {% linkable_title Works out of the box %} - -IKEA Trådfri focuses on the basics: making a product that works out of the box. They sell various dimming kits. Each contain a light and a remote paired to control the light. You put the light into the socket, slide the battery into the remote and. it. works. No need to purchase a gateway, download an app and use your phone to set it up. Heck, you don’t even need internet to get started! - -You will only need to buy the gateway if you want to use your phone as a remote or set up home automation. - -## {% linkable_title Only works locally %} - -The gateway only works locally. It only reaches out to the internet to synchronize the time and to check for firmware updates. This is awesome for many different reasons. - -**Privacy & Security.** No one but yourself will have access to the state of your house. And inside your house your communication with the gateway is encrypted. - -**Reliability & Speed.** All communication will always happen locally. Even if your internet will go out, you can still control your lights and your automations will still run. Even if IKEA would decide to drop support it will still continue to work. - -Check out [this blog post by Matthew Garrett][mjg59] for a more in-depth analysis of the security of the gateway. His conclusion: - -
    - Overall: as far as design goes, this is one of the most secure IoT-style devices I've looked at. I haven't examined the COAP stack in detail to figure out whether it has any exploitable bugs, but the attack surface is pretty much as minimal as it could be while still retaining any functionality at all. I'm impressed. -
    - -## {% linkable_title Based on open standards %} - -IKEA Trådfri devices use the open standard Zigbee to communicate. The gateway speaks both Zigbee and connects to your network to offer an API based on the open standard CoAP. The API communication is secured via the open standard DTLS. - -Because it’s based on Zigbee, you don’t have to just buy IKEA devices the rest of your life. For example, Philips Hue lights will pair just fine with the IKEA gateway. - -Note that there are reports that the other way around, pairing an IKEA light to the Philips Hue hub is currently not possible. IKEA is working on it according to [a post by Philips Hue support][hue-support]: - -
    - The non-interoperability between the newly launched IKEA smart lighting products and the Philips Hue bridge has been analyzed. One of the issues found is that the IKEA bulbs report their ProfileID as corresponding to the ZigBee Home Automation (ZHA) profile rather than the ZigBee Light Link (ZLL) profile. As the IKEA bulbs do not behave fully compliant with the ZLL standard, they are rejected by the Hue bridge. IKEA is aware of this and informed us their intent is to have the IKEA smart lighting bulbs to work with the Philips Hue bridge. -
    - -## {% linkable_title Affordable %} - -A white IKEA light bulb that just supports dimming starts at $12. You’ll have to shell out $18 If you want a white bulb that can control the light temperature to allow for different shades of white (relax, cool, focus etc). These prices are slightly lower than the competition. Right now on Amazon the cheapest just-dimming white bulbs come in at $15. - -However what really differentiates this system is the availability of all the cheap remotes and motion sensors. Ranging between $20 and $27 you get a light and a remote. Standalone Zigbee remotes on Amazon currently start at $21! - -Remotes are [a very important aspect of home automation][perfect]. The electricity has to be always on for the bulbs to function so you’ll need Zigbee switches and remotes to control your lights. The fact that they are so cheap will really help with adoption. - -

    - -Prices of the various available dimming kits. -

    - -## {% linkable_title Useful design %} - -The lights and gateway are all made with a simple design and will easily blend into your home. They did sneak in some great and useful things. You can slide the cover off the gateway and open it up. Inside is a mini case for the actual electronics but mainly it’s just empty space so you can roll up any excess network and usb cable from the hub inside! - -

    - -The cables you don't need can be hidden in the gateway. -

    - -Another nice feature is that the remote comes with a magnetic mount for the wall. - -## {% linkable_title Able to subscribe to changes (local push) %} - -This is a feature that I am really excited about. By being able to subscribe to changes in the Zigbee network Home Assistant will be able to instantly be notified about changes and trigger automations if necessary. - -This means that you will be able to turn the power on for a light and see it instantly turn on in Home Assistant. - -[_(Learn more about the different ways IoT devices broadcast changes)_][classification] - -## {% linkable_title Full integration in Home Assistant 0.43 (scheduled for release April 22) %} - -Home Assistant will automatically discover gateways on your network and guide the user to set them up. - -Once IKEA Trådfri got released, our community, lead by [Patrik], got quickly organized and started analyzing the different aspects [in our forums][forums]. I am happy to say that the end result is a standalone Python library [pytradfri] to control the gateway. This means that starting from our next release, Home Assistant 0.43, we will auto discover your gateway and integrate all your lights. - -The initial version of our integration will not yet stream events from the gateway. We’re still working on figuring out that part of the API. - -

    - -After automatic discovery, Home Assistant will ask the user to finish pairing with the gateway. -

    - -## {% linkable_title Downside: not many integrations yet %} - -The one major downside right now is that there are not many integrations yet because the system is brand new. There are [rumors] that Homekit is planned for October. And given the way the API is set up, I expect Google Home and Amazon Echo (Alexa) to eventually announce integration too. - -Since Home Assistant does integrate with it, you can use Home Assistant to bridge to these systems. For Homekit use [Homebridge] with the [Home Assistant plugin][hb-hass]. For integration with Google Home and Amazon Echo use [the Emulated Hue component][emulated_hue]. For Google Home you can also use [the API.ai integration][apiai] and Amazon Echo can also work with [Haaska]. - -## {% linkable_title Semi-downside: you can’t control your lights remotely %} - -Because the system is local only, you won’t be able to control your lights remotely. As with the previous downside, you will be able to use Home Assistant to make your system available remotely. - -Classified this as a semi-downside because besides showing off, the actual use cases are very rare. Although it makes [great marketing material]. - -## {% linkable_title Conclusion %} - -With Trådfri, IKEA has managed to put out an affordable and secure home automation system that does not compromise on functionality or design. There are still some downsides which I expect to get resolved in the future. - -As it currently stands, this is going to be the perfect companion hardware to work with Home Assistant: local, affordable, secure. And as cherry on the pie, local push will make us aware of changes right away. - -[tradfri]: http://www.ikea.com/us/en/catalog/categories/departments/lighting/36812/ -[mjg59]: http://mjg59.dreamwidth.org/47803.html -[hue-support]: https://developers.meethue.com/content/philips-hue-and-ikea-tr%C3%A5dfri#comment-2686 -[perfect]: /blog/2016/01/19/perfect-home-automation/#you-should-not-have-to-adapt-to-technology -[Patrik]: https://github.com/ggravlingen -[forums]: https://community.home-assistant.io/t/ikea-tradfri-gateway-zigbee/14788 -[pytradfri]: https://github.com/ggravlingen/pytradfri -[rumors]: https://github.com/bwssytems/ha-bridge/issues/570#issuecomment-293505087 -[Homebridge]: https://github.com/nfarina/homebridge -[hb-hass]: https://github.com/home-assistant/homebridge-homeassistant -[emulated_hue]: /components/emulated_hue/ -[apiai]: /components/apiai/ -[Haaska]: https://github.com/auchter/haaska -[great marketing material]: https://i2.wp.com/blog.smartthings.com/wp-content/uploads/2014/06/summer-vacay-683x405-blog.png?fit=683%2C405&ssl=1 -[classification]: /blog/2016/02/12/classifying-the-internet-of-things/ diff --git a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown deleted file mode 100644 index ea172859d0..0000000000 --- a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown +++ /dev/null @@ -1,521 +0,0 @@ ---- -layout: post -title: "Home Assistant 0.43: IKEA Trådfri, Spotify and our iOS app is live" -description: "Another packed release. Three major cool new features and a ton of small ones." -date: 2017-04-22 01:04:05 +0000 -date_formatted: "April 22, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2017-04-0.43/components.png ---- - - - -Oooh yeah. It's time for 0.43 and this is going to be a killer release. For the people that have been following on social media, you might have noticed that [we got pretty excited about the new IKEA Trådfri line up][ikea-blog]. And so we are very happy to announce that thanks to the work by [@ggravlingen], [@MartinHjelmare] and myself that this will be the first release to support the IKEA light bulbs. Home Assistant will automatically detect the gateway on your network and after following the instructions, allow you to control your lights. - -

    - -After automatic discovery, Home Assistant will ask the user to finish pairing with the gateway. -

    - -And in case you have missed the other big news: [@robbiet480] released the [first version of our iOS app][ios]! It took a little over a year but it offers some great ways to make your iDevice work with Home Assistant. Big congrats to Robbie for shipping! As with our other parts, the app is open-sourced under APACHE 2 and contributors are welcome. [Check it out.][ios-source] - -A big shout out this release to [@happyleavesaoc] for his constant stream of great contributions to Home Assistant. The first contribution was back in October 2015 and since then [@happyleavesaoc] has been responsible for many platforms and bug fixes including the Spotify platform this release. Thanks [@happyleavesaoc], you're a great example of what makes our community awesome. - -The new Spotify integration is based on the new Spotify Connect Playback API. It supports playback, album art and switching which Spotify device you're controlling. - -Also note that you have till the end of the weekend to [submit an application][application] to our giveaway of low energy servers which we got when [we won the Thomas Krenn award 2017][krenn]. [Go apply!][application] - -[ikea-blog]: /blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/ -[ios]: /blog/2017/04/15/ios/ -[ios-source]: https://github.com/home-assistant/home-assistant-ios -[krenn]: /blog/2017/04/01/thomas-krenn-award/ -[application]: https://community.home-assistant.io/c/contest-2017 - -## {% linkable_title New Platforms %} - -- MaryTTS platform ([@johanpalmqvist] - [#6988]) ([tts.marytts docs]) (new-platform) -- Telegram bot component (incl. webhook and polling platform) ([@sander76] - [#6913]) ([telegram_bot docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) (breaking change) (new-platform) -- Support fo map data from Neato ([@turbokongen] - [#6939]) ([neato docs]) ([camera.neato docs]) ([sensor.neato docs]) (new-platform) -- Support for IKEA Trådfri ([@ggravlingen] - [#7074]) ([light.tradfri docs]) (new-platform) -- MQTT camera ([@MrMep] - [#7092]) ([camera.mqtt docs]) (new-platform) -- LIFX Cloud scene support ([@amelchio] - [#7124]) ([scene.lifx_cloud docs]) (new-platform) -- Spotify media player ([@happyleavesaoc] - [#6980]) ([media_player.spotify docs]) (new-platform) -- JSON MQTT Device tracker ([@MrMep] - [#7055]) (new-platform) -- Opensky sensor ([@happyleavesaoc] - [#7061]) ([sensor.opensky docs]) (new-platform) -- Ping binary sensor ([@fabaff] - [#7052]) ([binary_sensor.ping docs]) (new-platform) -- myStrom Wifi Bulbs ([@fabaff] - [#7161]) ([light.mystrom docs]) (new-platform) - - -## {% linkable_title Breaking changes %} - -- Remove deprecated classes from `homeassistant.remote` ([@balloob] - [#7011]) -- min_max sensor has a different default name and will ignore states that are unknown ([@micw] - [#6786]) -- `telegram_webhooks` has been converted to a new `telegram_bot` component. It has two platforms: webhook and polling platform ([@sander76] - [#6913]) ([telegram_bot docs])([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) - -```yaml -telegram_bot: - platform: webhooks - api_key : api_key_here - allowed_chat_ids: - - 123456 - - 456789 -``` - -- Lutron_Caseta: it is no longer necessary to specify username and password in the config. ([@gurumitts] - [#7165]) ([lutron_caseta docs]) -- mvglive: config has been updated to allow support for multiple departures ([@mountainsandcode] - [#6953]) ([sensor.mvglive docs]) - -```yaml -sensor: - - platform: mvglive - nextdeparture: - - station: Hauptbahnhof - name: Hbf - destinations: ['München Flughafen Terminal','Markt Schwaben'] - products: 'S-Bahn' - timeoffset: 2 - - station: Sendlinger Tor - lines: ['U2','U8'] - - station: Scheidplatz - products: ['U-Bahn'] - directions: '1' -``` - -## 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. - -## 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 Release 0.43.1 - April 25 %} - -- Zwave cover workaround for graber shades. ([@turbokongen] - [#7204]) ([cover.zwave docs]) ([zwave.workaround docs]) -- Upgrade paho-mqtt to 1.2.3 ([@fabaff] - [#7214]) -- Workround for wemo subscription bug. ([@pavoni] - [#7245]) ([wemo docs]) ([switch.wemo docs]) -- Fix telegram webhooks ([@MartinHjelmare] - [#7236]) ([telegram_bot docs]) ([telegram_bot.webhooks docs]) -- Work around bad content-type in Hook api response ([@KlaasH] - [#7267]) ([switch.hook docs]) -- Recorder: Check for ENTITY_ID key that contains None value ([@balloob] - [#7287]) ([recorder docs]) - -## {% linkable_title Release 0.43.2 - April 27 %} - -- Frontend: Fix default date on history/logbook (@amelchio) -- Frontend: Fix logbook ui (@balloob) -- Upgrade pytradfri to 1.1 ([@balloob] - [#7290]) -- Upgrade python-telegram-bot to 5.3.1 ([@fabaff] - [#7311]) ([notify.telegram docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) -- Version bump of aioautomatic ([@armills] - [#7300]) ([device_tracker.automatic docs]) -- Version bump for automatic ([@armills] - [#7329]) ([device_tracker.automatic docs]) -- Fix breaking SSL in test HTML5 ([@balloob] - [#7310]) ([notify.html5 docs]) -- Fix for building Python Open Z-Wave in Docker ([@balloob] - [#7337]) - -## {% linkable_title All changes %} - -- Update kodi for aiohttp2 ([@armills] - [#6967]) ([media_player.kodi docs]) ([notify.kodi docs]) -- Fix current_temperature is rounded ([@aufano] - [#6960]) ([climate docs]) -- 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]) -- 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]) -- Fix control+c quitting HASS ([@balloob] - [#6974]) -- Update Emby for aiohttp v2 ([@mezz64] - [#6981]) -- switch.tplink: upgrade to the newest upstream release which adds support for plugs using the newer communication protocol ([@rytilahti] - [#6979]) ([switch.tplink docs]) -- switch.tplink: bump pyhs100 version requirement ([@rytilahti] - [#6986]) -- Add tests for ZWaveDeviceEntityValues helper ([@armills] - [#6978]) ([zwave docs]) -- Bump Amcrest module to 1.1.8 ([@tchellomello] - [#6990]) -- update gstreamer ([@happyleavesaoc] - [#6987]) ([media_player.gstreamer docs]) -- Warn if start takes a long time. ([@balloob] - [#6975]) -- Upgrade to aiohttp 2.0.6 ([@balloob] - [#6992]) -- Make discovery not block start ([@balloob] - [#6991]) -- Downgrade aiohttp to 205 ([@balloob] - [#6994]) -- Bump pywemo version. ([@pavoni] - [#7004]) -- Fix Synology camera content type ([@balloob] - [#7010]) ([camera.synology docs]) -- Fix two more instances of JSON parsing synology ([@balloob] - [#7014]) -- Bump pyalarmdotcom to support new version of aiohttp ([@Xorso] - [#7021]) ([alarm_control_panel.alarmdotcom docs]) -- Fix US states check (fixes #7015) ([@fabaff] - [#7017]) -- Remove deprecated remote classes ([@balloob] - [#7011]) (breaking change) -- Replace 'vendor_id' with 'arch' (fixes #7003) ([@fabaff] - [#7023]) -- more tests for slugify ([@micw] - [#7027]) -- Additional ZWave coverage ([@armills] - [#7024]) ([zwave docs]) -- bump ups version ([@happyleavesaoc] - [#7033]) ([sensor.ups docs]) -- update usps version ([@happyleavesaoc] - [#7035]) ([sensor.usps docs]) -- update fedex ([@happyleavesaoc] - [#7034]) ([sensor.fedex docs]) -- Google TTS can't read percent sign (#6971) ([@pezinek] - [#7030]) ([tts.google docs]) -- Feature/min max improvements ([@micw] - [#6786]) (breaking change) -- Upgrade psutil to 5.2.2 ([@fabaff] - [#7037]) ([sensor.systemmonitor docs]) -- 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 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]) -- Add MaryTTS platform ([@johanpalmqvist] - [#6988]) ([tts.marytts docs]) (new-platform) -- Fix mysensors callback ([@MartinHjelmare] - [#7057]) ([mysensors docs]) ([device_tracker.mysensors docs]) -- Constrain chardet to 2.3 ([@balloob] - [#7063]) -- Fix/slugify with german umlaut ss ([@micw] - [#7029]) -- Speed up aiohttp ([@balloob] - [#7064]) -- Upgrade netdisco to 1.0.0rc2 ([@balloob] - [#7008]) -- Telegram bot component (incl. webhook and polling platform) ([@sander76] - [#6913]) ([telegram_bot docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) (breaking change) (new-platform) -- Upgrade paho-mqtt to 1.2.2 ([@fabaff] - [#7066]) -- Fix handling with register callbacks on added_to_hass ([@pvizeli] - [#7067]) -- Lutron. Bugfix callback registration. ([@pvizeli] - [#7042]) -- Adding AlarmDecoder platform ([@hawk259] - [#6900]) -- Add communication data attributes to Zwave node_entity ([@turbokongen] - [#6813]) ([zwave docs]) -- Add product_name attribute to zwave nodes. ([@andrey-git] - [#7071]) -- Bump braviarc version to 0.3.7 ([@robbiet480] - [#7078]) ([media_player.braviatv docs]) -- Fix account balance in fido sensor ([@titilambert] - [#7077]) ([sensor.fido docs]) -- MQTT: Managing binary payloads ([@MrMep] - [#6976]) ([mqtt docs]) -- Bump qnapstats library version to 0.2.4 ([@colinodell] - [#7085]) ([sensor.qnap docs]) -- Add support fo map data from Neato ([@turbokongen] - [#6939]) ([neato docs]) ([camera.neato docs]) ([sensor.neato docs]) (new-platform) -- Added initial support for IKEA Trådfri Gateway ([@ggravlingen] - [#7074]) ([light.tradfri docs]) (new-platform) -- Better thread safety in zwave node_entity ([@andrey-git] - [#7087]) -- Uber version bump ([@armills] - [#7100]) ([sensor.uber docs]) -- No product ids configured should fetch all ids ([@armills] - [#7091]) -- Upgrade aiohttp to 2.0.7 ([@fabaff] - [#7106]) -- Update file header, add const for defaults, and update log messages ([@fabaff] - [#7110]) -- Upgrade speedtest-cli to 1.0.4 ([@fabaff] - [#7105]) ([sensor.speedtest docs]) -- Remove globally disabled pylint issue and update docstrings ([@fabaff] - [#7111]) -- Use third-party lib aioautomatic for automatic ([@armills] - [#7126]) ([device_tracker.automatic docs]) -- Upgrade chardet to 3.0.2 ([@fabaff] - [#7112]) -- Send stderr of ping tracker to devnull ([@amelchio] - [#7096]) ([device_tracker.ping docs]) -- Upgraded Amcrest module to 1.1.9 to support new firmware versions: ([@tchellomello] - [#7130]) -- Mqtt camera ([@MrMep] - [#7092]) ([camera.mqtt docs]) (new-platform) -- Bump version to 0.43.0.dev0 ([@MartinHjelmare] - [#7132]) -- Load zwave panel ([@balloob] - [#7127]) ([zwave docs]) -- IKEA Trådfri Gateway: added support for RGB ([@ggravlingen] - [#7115]) ([light.tradfri docs]) -- Make Trådfri discoverable ([@balloob] - [#7128]) -- Make version number optional and a string to fix identify issue introduced in iOS 1.0.1 ([@robbiet480] - [#7141]) -- Fix for zwave RGB setting ([@armills] - [#7137]) -- Replace rollershutter with cover in demo ([@robbiet480] - [#7140]) -- Add debug logging to automation initial state ([@armills] - [#7068]) ([automation docs]) -- Always return True/False from is_state and is_state_attr ([@amelchio] - [#7138]) -- Add LIFX Cloud scene support ([@amelchio] - [#7124]) ([scene.lifx_cloud docs]) (new-platform) -- Fix LIFX lights with disappearing names ([@amelchio] - [#7119]) ([light.lifx docs]) -- lutron: fix typo that prevented callback registration ([@thecynic] - [#7148]) ([lutron docs]) -- Fix HassIO timeout bug ([@pvizeli] - [#7155]) -- small fix for random effect in order to use the whole rgb range. So 255 is not excluded anymore. ([@Mister-Espria] - [#7156]) ([light.flux_led docs]) ([light.yeelight docs]) -- exposed content_type in rest_command ([@cmsimike] - [#7101]) -- Add vera power meter. ([@pavoni] - [#7134]) ([vera docs]) ([sensor.vera docs]) -- Add support for tradfri color temp ([@MartinHjelmare] - [#7153]) ([light.tradfri docs]) -- Disable MQTT camera test ([@balloob] - [#7164]) -- myStrom WiFi bulbs ([@fabaff] - [#7161]) -- Fix #7026 adding a new wol parameter ([@titilambert] - [#7144]) ([switch.wake_on_lan docs]) -- Add subscription update for Wemo switches, fix bug in Insight switches, fix wemo motion bug, fix wemo discovery ([@pavoni] - [#7135]) ([wemo docs]) -- Update neato.py ([@michaelarnauts] - [#7166]) ([neato docs]) -- Keep track of already added players ([@molobrakos] - [#7149]) -- Fix id zone mismatch ([@gurumitts] - [#7165]) ([lutron_caseta docs]) (breaking change) -- Upgrade pytradfri to 1.0 ([@balloob] - [#7163]) -- 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]) -- 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]) -- Add history to component priority list ([@balloob] - [#7173]) -- Tweak Tradfri ([@balloob] - [#7172]) ([light.tradfri docs]) -- Mqtt camera test ([@MrMep] - [#7175]) -- updated pylgtv module to fix problems with timeouts ([@hmn] - [#7184]) ([media_player.webostv docs]) ([notify.webostv docs]) -- Fix wemo discovery ([@balloob] - [#7183]) ([wemo docs]) ([light.wemo docs]) ([switch.wemo docs]) -- Add Bose soundtouch discovery support and upgrade libsoundtouch library ([@CharlesBlonde] - [#7005]) -- spotify media player ([@happyleavesaoc] - [#6980]) ([media_player.spotify docs]) (new-platform) -- JSON MQTT Device tracker ([@MrMep] - [#7055]) (new-platform) -- opensky sensor ([@happyleavesaoc] - [#7061]) ([sensor.opensky docs]) (new-platform) -- Add ping binary sensor ([@fabaff] - [#7052]) ([binary_sensor.ping docs]) (new-platform) -- Added light.pwm component. ([@soldag] - [#7009]) -- Fix for errors on missing preview on LG webos TV ([@masarliev] - [#6755]) ([media_player.webostv docs]) -- Fix auto discovery for Apple TV ([@postlund] - [#7188]) ([media_player.apple_tv docs]) -- Do not request artwork if not available ([@postlund] - [#7189]) ([media_player.apple_tv docs]) -- mvglive bug fixes and improvements ([@mountainsandcode] - [#6953]) ([sensor.mvglive docs]) (breaking change) -- Upgrade py-cpuinfo to 3.2.0 ([@fabaff] - [#7190]) ([sensor.cpuspeed docs]) -- Add support of input registers while querying modbus sensor. ([@LvivEchoes] - [#7082]) ([modbus docs]) ([sensor.modbus docs]) -- Add HassIO to discovery component ([@pvizeli] - [#7195]) -- LIFX light effects ([@amelchio] - [#7145]) ([light.lifx docs]) -- HassIO API v2 ([@pvizeli] - [#7201]) -- Support xy_color with LIFX lights ([@amelchio] - [#7208]) ([light.lifx docs]) -- Update ios.py ([@biacz] - [#7160]) -- Fix arwn platform to update hass state when events are received ([@sdague] - [#7202]) -- Issue 6749 updated pylgtv to 0.1.6 to fix thread leak in asyncio loop ([@hmn] - [#7199]) ([media_player.webostv docs]) ([notify.webostv docs]) - -[#6426]: https://github.com/home-assistant/home-assistant/pull/6426 -[#6755]: https://github.com/home-assistant/home-assistant/pull/6755 -[#6786]: https://github.com/home-assistant/home-assistant/pull/6786 -[#6813]: https://github.com/home-assistant/home-assistant/pull/6813 -[#6857]: https://github.com/home-assistant/home-assistant/pull/6857 -[#6900]: https://github.com/home-assistant/home-assistant/pull/6900 -[#6913]: https://github.com/home-assistant/home-assistant/pull/6913 -[#6935]: https://github.com/home-assistant/home-assistant/pull/6935 -[#6937]: https://github.com/home-assistant/home-assistant/pull/6937 -[#6939]: https://github.com/home-assistant/home-assistant/pull/6939 -[#6952]: https://github.com/home-assistant/home-assistant/pull/6952 -[#6953]: https://github.com/home-assistant/home-assistant/pull/6953 -[#6960]: https://github.com/home-assistant/home-assistant/pull/6960 -[#6963]: https://github.com/home-assistant/home-assistant/pull/6963 -[#6964]: https://github.com/home-assistant/home-assistant/pull/6964 -[#6966]: https://github.com/home-assistant/home-assistant/pull/6966 -[#6967]: https://github.com/home-assistant/home-assistant/pull/6967 -[#6968]: https://github.com/home-assistant/home-assistant/pull/6968 -[#6974]: https://github.com/home-assistant/home-assistant/pull/6974 -[#6975]: https://github.com/home-assistant/home-assistant/pull/6975 -[#6976]: https://github.com/home-assistant/home-assistant/pull/6976 -[#6978]: https://github.com/home-assistant/home-assistant/pull/6978 -[#6979]: https://github.com/home-assistant/home-assistant/pull/6979 -[#6980]: https://github.com/home-assistant/home-assistant/pull/6980 -[#6981]: https://github.com/home-assistant/home-assistant/pull/6981 -[#6986]: https://github.com/home-assistant/home-assistant/pull/6986 -[#6987]: https://github.com/home-assistant/home-assistant/pull/6987 -[#6988]: https://github.com/home-assistant/home-assistant/pull/6988 -[#6990]: https://github.com/home-assistant/home-assistant/pull/6990 -[#6991]: https://github.com/home-assistant/home-assistant/pull/6991 -[#6992]: https://github.com/home-assistant/home-assistant/pull/6992 -[#6994]: https://github.com/home-assistant/home-assistant/pull/6994 -[#7004]: https://github.com/home-assistant/home-assistant/pull/7004 -[#7005]: https://github.com/home-assistant/home-assistant/pull/7005 -[#7008]: https://github.com/home-assistant/home-assistant/pull/7008 -[#7009]: https://github.com/home-assistant/home-assistant/pull/7009 -[#7010]: https://github.com/home-assistant/home-assistant/pull/7010 -[#7011]: https://github.com/home-assistant/home-assistant/pull/7011 -[#7013]: https://github.com/home-assistant/home-assistant/pull/7013 -[#7014]: https://github.com/home-assistant/home-assistant/pull/7014 -[#7017]: https://github.com/home-assistant/home-assistant/pull/7017 -[#7021]: https://github.com/home-assistant/home-assistant/pull/7021 -[#7023]: https://github.com/home-assistant/home-assistant/pull/7023 -[#7024]: https://github.com/home-assistant/home-assistant/pull/7024 -[#7027]: https://github.com/home-assistant/home-assistant/pull/7027 -[#7029]: https://github.com/home-assistant/home-assistant/pull/7029 -[#7030]: https://github.com/home-assistant/home-assistant/pull/7030 -[#7031]: https://github.com/home-assistant/home-assistant/pull/7031 -[#7033]: https://github.com/home-assistant/home-assistant/pull/7033 -[#7034]: https://github.com/home-assistant/home-assistant/pull/7034 -[#7035]: https://github.com/home-assistant/home-assistant/pull/7035 -[#7037]: https://github.com/home-assistant/home-assistant/pull/7037 -[#7038]: https://github.com/home-assistant/home-assistant/pull/7038 -[#7040]: https://github.com/home-assistant/home-assistant/pull/7040 -[#7042]: https://github.com/home-assistant/home-assistant/pull/7042 -[#7045]: https://github.com/home-assistant/home-assistant/pull/7045 -[#7047]: https://github.com/home-assistant/home-assistant/pull/7047 -[#7048]: https://github.com/home-assistant/home-assistant/pull/7048 -[#7052]: https://github.com/home-assistant/home-assistant/pull/7052 -[#7055]: https://github.com/home-assistant/home-assistant/pull/7055 -[#7057]: https://github.com/home-assistant/home-assistant/pull/7057 -[#7061]: https://github.com/home-assistant/home-assistant/pull/7061 -[#7063]: https://github.com/home-assistant/home-assistant/pull/7063 -[#7064]: https://github.com/home-assistant/home-assistant/pull/7064 -[#7066]: https://github.com/home-assistant/home-assistant/pull/7066 -[#7067]: https://github.com/home-assistant/home-assistant/pull/7067 -[#7068]: https://github.com/home-assistant/home-assistant/pull/7068 -[#7071]: https://github.com/home-assistant/home-assistant/pull/7071 -[#7074]: https://github.com/home-assistant/home-assistant/pull/7074 -[#7077]: https://github.com/home-assistant/home-assistant/pull/7077 -[#7078]: https://github.com/home-assistant/home-assistant/pull/7078 -[#7082]: https://github.com/home-assistant/home-assistant/pull/7082 -[#7085]: https://github.com/home-assistant/home-assistant/pull/7085 -[#7087]: https://github.com/home-assistant/home-assistant/pull/7087 -[#7091]: https://github.com/home-assistant/home-assistant/pull/7091 -[#7092]: https://github.com/home-assistant/home-assistant/pull/7092 -[#7096]: https://github.com/home-assistant/home-assistant/pull/7096 -[#7100]: https://github.com/home-assistant/home-assistant/pull/7100 -[#7101]: https://github.com/home-assistant/home-assistant/pull/7101 -[#7105]: https://github.com/home-assistant/home-assistant/pull/7105 -[#7106]: https://github.com/home-assistant/home-assistant/pull/7106 -[#7110]: https://github.com/home-assistant/home-assistant/pull/7110 -[#7111]: https://github.com/home-assistant/home-assistant/pull/7111 -[#7112]: https://github.com/home-assistant/home-assistant/pull/7112 -[#7115]: https://github.com/home-assistant/home-assistant/pull/7115 -[#7117]: https://github.com/home-assistant/home-assistant/pull/7117 -[#7119]: https://github.com/home-assistant/home-assistant/pull/7119 -[#7124]: https://github.com/home-assistant/home-assistant/pull/7124 -[#7126]: https://github.com/home-assistant/home-assistant/pull/7126 -[#7127]: https://github.com/home-assistant/home-assistant/pull/7127 -[#7128]: https://github.com/home-assistant/home-assistant/pull/7128 -[#7130]: https://github.com/home-assistant/home-assistant/pull/7130 -[#7132]: https://github.com/home-assistant/home-assistant/pull/7132 -[#7134]: https://github.com/home-assistant/home-assistant/pull/7134 -[#7135]: https://github.com/home-assistant/home-assistant/pull/7135 -[#7137]: https://github.com/home-assistant/home-assistant/pull/7137 -[#7138]: https://github.com/home-assistant/home-assistant/pull/7138 -[#7139]: https://github.com/home-assistant/home-assistant/pull/7139 -[#7140]: https://github.com/home-assistant/home-assistant/pull/7140 -[#7141]: https://github.com/home-assistant/home-assistant/pull/7141 -[#7144]: https://github.com/home-assistant/home-assistant/pull/7144 -[#7145]: https://github.com/home-assistant/home-assistant/pull/7145 -[#7148]: https://github.com/home-assistant/home-assistant/pull/7148 -[#7149]: https://github.com/home-assistant/home-assistant/pull/7149 -[#7153]: https://github.com/home-assistant/home-assistant/pull/7153 -[#7155]: https://github.com/home-assistant/home-assistant/pull/7155 -[#7156]: https://github.com/home-assistant/home-assistant/pull/7156 -[#7160]: https://github.com/home-assistant/home-assistant/pull/7160 -[#7161]: https://github.com/home-assistant/home-assistant/pull/7161 -[#7163]: https://github.com/home-assistant/home-assistant/pull/7163 -[#7164]: https://github.com/home-assistant/home-assistant/pull/7164 -[#7165]: https://github.com/home-assistant/home-assistant/pull/7165 -[#7166]: https://github.com/home-assistant/home-assistant/pull/7166 -[#7171]: https://github.com/home-assistant/home-assistant/pull/7171 -[#7172]: https://github.com/home-assistant/home-assistant/pull/7172 -[#7173]: https://github.com/home-assistant/home-assistant/pull/7173 -[#7175]: https://github.com/home-assistant/home-assistant/pull/7175 -[#7176]: https://github.com/home-assistant/home-assistant/pull/7176 -[#7177]: https://github.com/home-assistant/home-assistant/pull/7177 -[#7181]: https://github.com/home-assistant/home-assistant/pull/7181 -[#7183]: https://github.com/home-assistant/home-assistant/pull/7183 -[#7184]: https://github.com/home-assistant/home-assistant/pull/7184 -[#7188]: https://github.com/home-assistant/home-assistant/pull/7188 -[#7189]: https://github.com/home-assistant/home-assistant/pull/7189 -[#7190]: https://github.com/home-assistant/home-assistant/pull/7190 -[#7195]: https://github.com/home-assistant/home-assistant/pull/7195 -[#7199]: https://github.com/home-assistant/home-assistant/pull/7199 -[#7201]: https://github.com/home-assistant/home-assistant/pull/7201 -[#7202]: https://github.com/home-assistant/home-assistant/pull/7202 -[#7208]: https://github.com/home-assistant/home-assistant/pull/7208 -[@BillyNate]: https://github.com/BillyNate -[@CharlesBlonde]: https://github.com/CharlesBlonde -[@DavidMStraub]: https://github.com/DavidMStraub -[@JesseWebDotCom]: https://github.com/JesseWebDotCom -[@LvivEchoes]: https://github.com/LvivEchoes -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@Mister-Espria]: https://github.com/Mister-Espria -[@MrMep]: https://github.com/MrMep -[@Xorso]: https://github.com/Xorso -[@aequitas]: https://github.com/aequitas -[@alexmogavero]: https://github.com/alexmogavero -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@aufano]: https://github.com/aufano -[@balloob]: https://github.com/balloob -[@biacz]: https://github.com/biacz -[@cmsimike]: https://github.com/cmsimike -[@colinodell]: https://github.com/colinodell -[@fabaff]: https://github.com/fabaff -[@ggravlingen]: https://github.com/ggravlingen -[@gurumitts]: https://github.com/gurumitts -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@hawk259]: https://github.com/hawk259 -[@hmn]: https://github.com/hmn -[@johanpalmqvist]: https://github.com/johanpalmqvist -[@masarliev]: https://github.com/masarliev -[@mezz64]: https://github.com/mezz64 -[@michaelarnauts]: https://github.com/michaelarnauts -[@micw]: https://github.com/micw -[@molobrakos]: https://github.com/molobrakos -[@mountainsandcode]: https://github.com/mountainsandcode -[@pavoni]: https://github.com/pavoni -[@pezinek]: https://github.com/pezinek -[@postlund]: https://github.com/postlund -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@rytilahti]: https://github.com/rytilahti -[@sander76]: https://github.com/sander76 -[@sdague]: https://github.com/sdague -[@soldag]: https://github.com/soldag -[@sytone]: https://github.com/sytone -[@tchellomello]: https://github.com/tchellomello -[@thecynic]: https://github.com/thecynic -[@titilambert]: https://github.com/titilambert -[@turbokongen]: https://github.com/turbokongen -[@viswa-swami]: https://github.com/viswa-swami -[alarm_control_panel.alarmdotcom docs]: /components/alarm_control_panel.alarmdotcom/ -[arduino docs]: /components/arduino/ -[automation docs]: /components/automation/ -[binary_sensor.ping docs]: /components/binary_sensor.ping/ -[binary_sensor.wemo docs]: /components/binary_sensor.wemo/ -[camera.foscam docs]: /components/camera.foscam/ -[camera.mqtt docs]: /components/camera.mqtt/ -[camera.neato docs]: /components/camera.neato/ -[camera.synology docs]: /components/camera.synology/ -[climate docs]: /components/climate/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.mysensors docs]: /components/device_tracker.mysensors/ -[device_tracker.ping docs]: /components/device_tracker.ping/ -[hassio docs]: /components/hassio/ -[input_slider docs]: /components/input_slider/ -[light.flux_led docs]: /components/light.flux_led/ -[light.lifx docs]: /components/light.lifx/ -[light.lutron_caseta docs]: /components/light.lutron_caseta/ -[light.mystrom docs]: /components/light.mystrom/ -[light.services.yaml docs]: /components/light.services.yaml/ -[light.tradfri docs]: /components/light.tradfri/ -[light.wemo docs]: /components/light.wemo/ -[light.yeelight docs]: /components/light.yeelight/ -[lutron docs]: /components/lutron/ -[lutron_caseta docs]: /components/lutron_caseta/ -[media_player docs]: /components/media_player/ -[media_player.apple_tv docs]: /components/media_player.apple_tv/ -[media_player.braviatv docs]: /components/media_player.braviatv/ -[media_player.gstreamer docs]: /components/media_player.gstreamer/ -[media_player.kodi docs]: /components/media_player.kodi/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.webostv docs]: /components/media_player.webostv/ -[modbus docs]: /components/modbus/ -[mqtt docs]: /components/mqtt/ -[mysensors docs]: /components/mysensors/ -[neato docs]: /components/neato/ -[notify.kodi docs]: /components/notify.kodi/ -[notify.sendgrid docs]: /components/notify.sendgrid/ -[notify.webostv docs]: /components/notify.webostv/ -[scene.lifx_cloud docs]: /components/scene.lifx_cloud/ -[sensor.cpuspeed docs]: /components/sensor.cpuspeed/ -[sensor.crimereports docs]: /components/sensor.crimereports/ -[sensor.fedex docs]: /components/sensor.fedex/ -[sensor.fido docs]: /components/sensor.fido/ -[sensor.modbus docs]: /components/sensor.modbus/ -[sensor.mvglive docs]: /components/sensor.mvglive/ -[sensor.neato docs]: /components/sensor.neato/ -[sensor.opensky docs]: /components/sensor.opensky/ -[sensor.qnap docs]: /components/sensor.qnap/ -[sensor.speedtest docs]: /components/sensor.speedtest/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.uber docs]: /components/sensor.uber/ -[sensor.ups docs]: /components/sensor.ups/ -[sensor.usps docs]: /components/sensor.usps/ -[sensor.vera docs]: /components/sensor.vera/ -[sun docs]: /components/sun/ -[switch.tplink docs]: /components/switch.tplink/ -[switch.wake_on_lan docs]: /components/switch.wake_on_lan/ -[switch.wemo docs]: /components/switch.wemo/ -[telegram_bot docs]: /components/telegram_bot/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[tts.google docs]: /components/tts.google/ -[tts.marytts docs]: /components/tts.marytts/ -[vera docs]: /components/vera/ -[wemo docs]: /components/wemo/ -[zwave docs]: /components/zwave/ -[zwave.node_entity docs]: /components/zwave.node_entity/ -[forum]: https://community.home-assistant.io/ -[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 -[#7236]: https://github.com/home-assistant/home-assistant/pull/7236 -[#7245]: https://github.com/home-assistant/home-assistant/pull/7245 -[#7267]: https://github.com/home-assistant/home-assistant/pull/7267 -[#7287]: https://github.com/home-assistant/home-assistant/pull/7287 -[@KlaasH]: https://github.com/KlaasH -[cover.zwave docs]: /components/cover.zwave/ -[recorder docs]: /components/recorder/ -[switch.hook docs]: /components/switch.hook/ -[switch.wemo docs]: /components/switch.wemo/ -[telegram_bot docs]: /components/telegram_bot/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[wemo docs]: /components/wemo/ -[zwave.workaround docs]: /components/zwave.workaround/ -[#7271]: https://github.com/home-assistant/home-assistant/pull/7271 -[#7282]: https://github.com/home-assistant/home-assistant/pull/7282 -[#7290]: https://github.com/home-assistant/home-assistant/pull/7290 -[#7300]: https://github.com/home-assistant/home-assistant/pull/7300 -[#7310]: https://github.com/home-assistant/home-assistant/pull/7310 -[#7311]: https://github.com/home-assistant/home-assistant/pull/7311 -[#7323]: https://github.com/home-assistant/home-assistant/pull/7323 -[#7324]: https://github.com/home-assistant/home-assistant/pull/7324 -[#7329]: https://github.com/home-assistant/home-assistant/pull/7329 -[#7337]: https://github.com/home-assistant/home-assistant/pull/7337 -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[hassio docs]: /components/hassio/ -[notify.html5 docs]: /components/notify.html5/ -[notify.telegram docs]: /components/notify.telegram/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-04-24-hardware-contest-2017.markdown b/source/_posts/2017-04-24-hardware-contest-2017.markdown deleted file mode 100644 index 0a1b08123f..0000000000 --- a/source/_posts/2017-04-24-hardware-contest-2017.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: post -title: "Hardware Contest 2017" -description: "Voting period for Hardware Contest 2017 started" -date: 2017-04-24 06:00:00 +0000 -date_formatted: "April 24, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Community -og_image: /images/default-social.png ---- - -We have four submissions for our [Hardware Contest 2017][hardware]. - -- [Part of IoT-course](https://community.home-assistant.io/t/entry-for-hardware-contest-part-of-iot-course/14827) -- [Automating a nursing home!](https://community.home-assistant.io/t/entry-automating-a-nursing-home/14872) -- [Dedicated hardware for coding, testing, building, and contributing to Home Assistant](https://community.home-assistant.io/t/entry-dedicated-hardware-for-coding-testing-building-and-contributing-to-home-assistant/15515) -- [HassIO - Home Assistant hub for dummies](https://community.home-assistant.io/t/entry-hassio-home-assistant-hub-for-dummies/16037) - -The voting is now open. To keep things simple are we using the voting feature of the [forum]. Vote for your choices. - -End of the voting period: April, 30 2017 - 23.59 UTC - -[hardware]: /blog/2017/04/01/thomas-krenn-award/ -[award]: https://www.thomas-krenn.com/de/tkmag/allgemein/zammad-home-assistant-und-freifunk-das-sind-die-gewinner-des-thomas-krenn-awards-2017/ -[forum]: https://community.home-assistant.io/c/contest-2017 -[twitter]: https://twitter.com/home_assistant - diff --git a/source/_posts/2017-04-25-influxdb-grafana-docker.markdown b/source/_posts/2017-04-25-influxdb-grafana-docker.markdown deleted file mode 100644 index 75cdd440c1..0000000000 --- a/source/_posts/2017-04-25-influxdb-grafana-docker.markdown +++ /dev/null @@ -1,59 +0,0 @@ ---- -layout: post -title: "Setting up InfluxDB and Grafana using Docker" -description: "Use this tutorial to setup InfluxDB and Grafana in a Docker container and use it with Home Assistant." -date: 2017-04-25 08:04:05 +0000 -date_formatted: "April 25, 2017" -author: Alok Saboo -author_twitter: alokrsaboo -comments: true -categories: How-To -og_image: /images/blog/2017-04-influxdb-grafana/influxdb-grafana-ha.png ---- - -Home Assistant collects volumes of (time series) data that are well suited for some fancy graphs. Although the [History](/components/history/) component provides some nice plots, I am sure you have always wanted those fancy [Grafana](https://grafana.com/) plots. The problem, however, is that low-powered device such as Raspberry Pi that most of us use for our Home Assistant setup are not well suited for such operation. - -Instead of running [InfluxDB](https://www.influxdata.com/) and Grafana on a Raspberry Pi or a different system and go through the [classic approach of installing both tools separately](/blog/2015/12/07/influxdb-and-grafana/), you can run them in a Docker container on another machine. For this tutorial, I am using a Synology NAS, but the instructions should apply to other devices that can run Docker. Just follow the steps below: - -1. SSH into your NAS. You may have to run `sudo su` if you are getting permission errors. -2. Download the [docker-statsd-influxdb-grafana]( https://hub.docker.com/r/samuelebistoletti/docker-statsd-influxdb-grafana/) image using the command: -`docker pull samuelebistoletti/docker-statsd-influxdb-grafana` -3. To start the container for the first-time launch: - ``` - docker run -d \ - --name docker-statsd-influxdb-grafana \ - -p 3003:3003 \ - -p 3004:8083 \ - -p 8086:8086 \ - -p 22022:22 \ - -p 8125:8125/udp \ - samuelebistoletti/docker-statsd-influxdb-grafana:latest - ``` -4. The image should now be running and both InfluxBD and Grafana should be now up and running. -5. You can access InfluxDB at http://NAS_IP_ADDRESS:3004/ and Grafana at http://NAS_IP_ADDRESS:3003/ -6. Navigate to http://NAS_IP_ADDRESS:3004/ and create the database `home_assistant` using the command `CREATE DATABASE home_assistant`. -

    - -

    -7. Now, you need to configure Home Assistant to use InfluxDB. Since, we did not add any username/password to our database, we can simply add the following to our configuration.yaml (replace the IP address with that of the device running Docker) and restart Home Assistant to setup InfluxDB (you will have to fine tune it based on your preferences): - ``` - influxdb: - host: 192.168.2.113 - ``` -8. Next, we need to configure Grafana to use InfluxDB. Navigate to http://NAS_IP_ADDRESS:3003/ to access Grafana (login with username and password `root`) and add your first data source. Here’s how you can configure Grafana to use InfluxDB database. Note that 192.168.2.113 is the IP address of my NAS. -

    - -

    -9. You should see `Data source is working` if you have configured everything correctly. -10. With all that configured, you are now ready for the fun stuff. You can create as many dashboards as you want and then import the same in Home Assistant. -11. To add the Grafana dashboard in HA, use the following config: - ``` - panel_iframe: - router: - title: 'Temperature' - url: 'http://192.168.2.113:3003/dashboard/db/temperature?edit&tab=time%20range' - ``` - The URL can be obtained by clicking Share Dashboard link on your dashboard: -

    - -

    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 deleted file mode 100644 index d1521d60d5..0000000000 --- a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown +++ /dev/null @@ -1,50 +0,0 @@ ---- -layout: post -title: "HASSbian 1.21 - It's about time isn't it" -description: "New release of the HASSbian Raspberry Pi Image for Home Assistant" -date: 2017-04-30 16:00:00 +0100 -date_formatted: "April 30, 2017" -author: Fredrik Lindqvist -comments: true -categories: Technology ---- - -### Hassbian 1.21 - It's about time isn't it -Since I, the developer of HASSbian, have been moving, started a new job and so on I've had few moments over for HASSbian development. The 1.2 release has been in pre-release for a few months now and just not communicated out that well. Hopefully this release changes that and I'll do my best to release more often. There's no simple way to update from 1.1 to 1.21 but 95% of the changes can be done by installing the [hassbian-config][hassbian-config-release] package. For more information have a look at the [hassbian-config][hassbian-repo] page. - -### Hassbian 1.22 - Sins of last night -Development is sometimes fast and joyful but mistakes are made at times. - -With the release of 1.21 a small problem with the OpenZWave build script wasn't corrected even tough it was a known bug. Problem is simple as it's only a problem with the symlink created for to the configuration folder for OpenZWave. This has been fixed and we bring some new things since they where ready anyway. The list below has been augmented with the updated information. - -### {% linkable_title Hassbian-config %} - -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. This replaces the `hassbian-scripts` functionality from 1.1. - - - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component that's 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. - -### {% linkable_title Spring cleaning %} - -With this image there also quite a bit of cleaning of the base system and the script that generates our Raspberry Pi image. - - - Replaced the `hassbian-scripts` folder with `hassbian-config`. - - Update `pi-gen`. Our build script has been upgraded to follow the Raspbian image closer once again. Now you could build this image with Docker if your so inclined. - - 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 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 -[gs-image]: /getting-started/installation-raspberry-pi-image/ -[discord-devs]: https://discord.gg/8X8DTH4 diff --git a/source/_posts/2017-05-01-home-assistant-on-raspberry-pi-zero-in-30-minutes.markdown b/source/_posts/2017-05-01-home-assistant-on-raspberry-pi-zero-in-30-minutes.markdown deleted file mode 100644 index 28434d3642..0000000000 --- a/source/_posts/2017-05-01-home-assistant-on-raspberry-pi-zero-in-30-minutes.markdown +++ /dev/null @@ -1,71 +0,0 @@ ---- -layout: post -title: "Home Assistant on a Pi Zero W in 30 minutes" -description: "Installing Home Assistant (Hassbian) on a Pi Zero W" -date: 2017-05-01 09:00:00 -date_formatted: "May 1, 2017" -author: Avraham David Gelbfish -author_twitter: adgelbfish -comments: true -categories: How-To -og_image: /images/blog/2017-05-hassbian-pi-zero/home_assistant_plus_rpi_600x315.png ---- - -

    - -

    - -Saw the [announcement](/blog/2017/04/30/hassbian-1.21-its-about-time/) yesterday for HASSbian 1.21 and got super excited? - -Today we'll flash the latest HASSbian to a [Raspberry Pi Zero W](https://www.raspberrypi.org/products/pi-zero/). -**With an added bonus** that besides for an USB cable for power, there's no need for any cables! - -What you'll need: -- a Raspberry Pi Zero W (an amazing tiny computer with built-in wifi) -- a microSD card -- some source of USB power -- Wifi -- a desktop or laptop - -Let's get to it! - -First, download the HASSbian 1.21 image from [here](https://github.com/home-assistant/pi-gen/releases/tag/v1.21). - -Unzip it. - -Flash it to the microSD card. If you need a flash tool, try [Etcher](https://etcher.io/) - -When the flashing finishes, remove it and plug it back in. You should see a drive called "boot". - -Right in there, not in any folders, create a file called `wpa_supplicant.conf`. - -The contents of the configuration file should be something like this: -(You may have to adjust for your configuration, hints [here](https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md) ) - -``` -network={ - ssid="YOUR_WIFI_NETWORK_NAME_HERE" - psk="YOUR_WIFI_PASSWORD_HERE" - key_mgmt=WPA-PSK -} -``` - -Next stick your SD card into the Raspberry Pi Zero W, and plug it in. - -After about a minute, use your SSH client to connect to HASSbian (or `hassbian.local` from a Mac), with the username `pi`. The default password is `raspberry`. - -It's a good idea to change the password. To do so, use the `passwd` command. - -Next, type the following two commands into the SSH console: - -``` -$ sudo systemctl enable install_homeassistant.service -$ sudo systemctl start install_homeassistant.service -``` - -Wait about 15-20 minutes and voilà you have your Home Assistant on your Raspberry Pi Zero W in 30 minutes. - -To try it out, go to [http://hassbian:8123](http://hassbian:8123) or [http://hassbian.local:8123](http://hassbian.local:8123) if you're using Mac. - -For further details about HASSbian, take a look at the [documentation](/docs/hassbian/). - diff --git a/source/_posts/2017-05-05-podcast-init-interview.markdown b/source/_posts/2017-05-05-podcast-init-interview.markdown deleted file mode 100644 index 386612df24..0000000000 --- a/source/_posts/2017-05-05-podcast-init-interview.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: post -title: "Podcast.__init__ interview with Paulus Schoutsen" -description: "Tobias Macey interviews our founder Paulus Schoutsen about Home Assistant." -date: 2017-05-05 02:00:00 -date_formatted: "May 5, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Media -og_image: /images/blog/2017-05-podcast-init/podcast_init.png ---- - -

    - -

    - -Earlier this year I was interviewed by Tobias Macey from [Podcast.\_\_init\_\_][pc-init] about Python and Home Assistant. Just realized that we never shared this on the blog, oops. Here it is, enjoy! - - - -[pc-init]: https://www.podcastinit.com/ diff --git a/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown b/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown deleted file mode 100644 index 4e87ac92fd..0000000000 --- a/source/_posts/2017-05-06-zigbee-opencv-dlib.markdown +++ /dev/null @@ -1,512 +0,0 @@ ---- -layout: post -title: "Home Assistant 0.44: ZigBee, OpenCV and DLib" -description: "Speak natively with Zigbee network, detect faces with OpenCV: 0.44 is here." -date: 2017-05-06 01:04:05 +0000 -date_formatted: "May 6, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -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) - -Another great new addition is [OpenCV][opencv docs] by [Teagan Glenn][@teagan42]. So now you'll be able to unlock all the cool stuff from OpenCV right in Home Assistant. And if OpenCV is not your style, you can try out the new [DLib integration][image_processing.dlib_face_identify docs] added by [Pascal Vizeli][@pvizeli] in this release. - -This release also includes a [new component][rss_feed_template docs] to dynamically generate RSS feeds based on a template. This means that any RSS widget on your phone, tablet or computer can now be used to show Home Assistant data! - -And finally, for users of the config panel in the UI, we have fixed the issue with the group editor. - -Enjoy! - -## {% 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 New integrations %} - -- Pushbullet notification sensor ([@jotunacorn] - [#7182]) ([sensor.pushbullet docs]) -- Add https certificate expiry sensor ([@fabfurnari] - [#7272]) ([sensor.cert_expiry docs]) -- RSS feed template ([@micw] - [#7032]) ([rss_feed_template docs]) -- Add support for Zigbee Home Automation ([@rcloran] - [#6263]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([sensor.zha docs]) ([switch.zha docs]) -- Support for Blinkt! lights on Raspberry Pi ([@imrehg] - [#7377]) ([light.blinkt docs]) -- Plant automation ([@ChristianKuehnel] - [#7131]) ([plant docs]) -- Add Eight sleep component ([@mezz64] - [#7275]) ([eight_sleep docs]) ([binary_sensor.eight_sleep docs]) ([sensor.eight_sleep docs]) -- OpenGarage support ([@swbradshaw] - [#7338]) ([cover.opengarage docs]) -- Add Sensibo climate platform ([@andrey-git] - [#7379]) ([climate docs]) -- Pilight binary sensor components ([@zeltom] - [#6774]) ([binary_sensor.pilight docs]) -- Opencv ([@Teagan42] - [#7261]) ([opencv docs]) ([image_processing.opencv docs]) -- Enviro pHAT ([@imrehg] - [#7427]) ([sensor.envirophat docs]) -- Add support for face recognition with dlib ([@pvizeli] - [#7421]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) - -## {% linkable_title Release 0.44.2 - May 8 %} - -- Fix opening add-ons in Hass.io store that are not installed ([@balloob]) - -## {% linkable_title Release 0.44.1 - May 7 %} - -- Fix opening add-ons in Hass.io store that are not installed ([@balloob]) -- sensor.envirophat: add missing requirement ([@imrehg] - [#7451]) ([sensor.envirophat docs]) -- Forecasts for weather underground ([@pezinek] - [#7062]) ([sensor.wunderground docs]) -- Upgrade pymysensors to 0.10.0 ([@MartinHjelmare] - [#7469]) -- Fix plant MIN_TEMPERATURE, MAX_TEMPERATURE validation ([@frog32] - [#7476]) ([plant docs]) -- Update to pyunifi 2.12 ([@finish06] - [#7468]) ([device_tracker.unifi docs]) -- MQTT Cover: Fixed status reporting for range with non-zero base ([@cribbstechnologies]) - - -## {% linkable_title Breaking changes %} - -- Python Open Z-Wave made a release that fixed string processing. This was backwards incompatible. We have updated our code so you'll have to update to the latest Python Open Z-Wave with this release. You can also wait one release, as next release we'll introduce automatic installing of Python Open Z-Wave. ([@keatontaylor] - [#7266]) ([climate.zwave docs]) (breaking change) -- InfluxDB configuration to blacklist domains has been updated to allow more features. ([@janLo] - [#7264]) (breaking change) - -```yaml -# New format -influxdb: - exclude: - entities: - - entity.id1 - - entity.id2 - domains: - - automation - include: - entities: - - entity.id3 - - entity.id4 -``` - -- The Automatic device tracker has been converted from polling to websocket push. This requires you to make a change in your Automatic account, see [our documentation for instructions][device_tracker.automatic docs]. ([@armills] - [#7404]) ([device_tracker.automatic docs]) (breaking change) -- The LimitlessLED color temperatures have been turned around to work like other lights. To maintain previous colors you must adjust the color_temp value in your light.turn_on calls to 654 minus your old value (for example, 280 becomes 374). ([@amelchio] - [#7359]) (breaking change) -- Joao apps will now require an API key to be set for all commands. ([@nkgilley] - [#7443]) ([joaoapps_join docs]) ([notify.joaoapps_join docs]) (breaking change) - -## {% linkable_title All changes %} - -- LIFX light effects ([@amelchio] - [#7145]) ([light.lifx docs]) -- HassIO API v2 ([@pvizeli] - [#7201]) -- Capture and log pip install error output ([@postlund] - [#7200]) -- Support xy_color with LIFX lights ([@amelchio] - [#7208]) ([light.lifx docs]) -- Update ios.py ([@biacz] - [#7160]) -- Fix arwn platform to update hass state when events are received ([@sdague] - [#7202]) -- Issue 6749 updated pylgtv to 0.1.6 to fix thread leak in asyncio loop ([@hmn] - [#7199]) ([media_player.webostv docs]) ([notify.webostv docs]) -- tradfri: Improve color temp support detection ([@balloob] - [#7211]) -- Fix tradfri lights ([@MartinHjelmare] - [#7212]) -- Bump version to 0.44.0.dev0 ([@fabaff] - [#7217]) -- Pushbullet notification sensor ([@jotunacorn] - [#7182]) ([sensor.pushbullet docs]) (new-platform) -- Zwave cover workaround for graber shades. ([@turbokongen] - [#7204]) ([cover.zwave docs]) -- Fixed typo and clarified details for Lifx effects ([@arsaboo] - [#7226]) -- Remove superfluous comments and update ordering ([@fabaff] - [#7227]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) -- lyft sensor: re-enable Prime Time rate attribute ([@drkp] - [#6982]) ([sensor.lyft docs]) -- Bump a couple of dependencies ([@mjg59] - [#7231]) ([light.avion docs]) ([light.decora docs]) -- Refactor lyft sensor update ([@armills] - [#7233]) ([sensor.lyft docs]) -- LIFX: avoid "Unable to remove unknown listener" warning ([@amelchio] - [#7235]) ([light.lifx docs]) -- Upgrade pygatt to 3.1.1 ([@fabaff] - [#7220]) -- Upgrade mutagen to 1.37.0 ([@fabaff] - [#7216]) -- Upgrade speedtest-cli to 1.0.5 ([@fabaff] - [#7215]) -- Upgrade paho-mqtt to 1.2.3 ([@fabaff] - [#7214]) -- Upgrade aiohttp_cors to 0.5.3 ([@fabaff] - [#7213]) -- Use consts and string formatting ([@fabaff] - [#7243]) ([notify.instapush docs]) -- Pushed to version 0.4.0 of denonavr which also includes experimental support for Marantz receivers ([@scarface-4711] - [#7250]) -- Add notice regarding submission of analytics ([@craftyguy] - [#7263]) -- Iterating the dictionary directly ([@fabaff] - [#7251]) -- Don't use len(SEQUENCE) as condition value ([@fabaff] - [#7249]) -- Workround for wemo subscription bug. ([@pavoni] - [#7245]) ([wemo docs]) ([switch.wemo docs]) -- Fix telegram webhooks ([@MartinHjelmare] - [#7236]) ([telegram_bot docs]) ([telegram_bot.webhooks docs]) -- Work around bad content-type in Hook api response ([@KlaasH] - [#7267]) ([switch.hook docs]) -- Rfxtrx upgrade lib 0.18 ([@danielhiversen] - [#7273]) ([rfxtrx docs]) -- WIP: HassIO allow to access to container logs. ([@pvizeli] - [#7271]) -- Update aiolifx ([@amelchio] - [#7279]) ([light.lifx docs]) -- Refactor matrix notify service ([@Cadair] - [#7122]) ([notify.matrix docs]) -- Add support for Ukrainian Language in Google TTS ([@LvivEchoes] - [#7278]) -- Add https certificate expiry sensor ([@fabfurnari] - [#7272]) ([sensor.cert_expiry docs]) (new-platform) -- Fix telegram_polling no first_name or last_name ([@darookee] - [#7281]) ([telegram_bot docs]) -- Add script to import state events to InfluxDB ([@janLo] - [#7254]) -- Fix HassIO bug with supervisor update & log ([@pvizeli] - [#7282]) -- Updating ping binary sensor with Windows support ([@patrickeasters] - [#7253]) ([binary_sensor.ping docs]) -- Fixes utf-8 encoding no longer required by python-openzwave0.3.3 ([@keatontaylor] - [#7266]) ([climate.zwave docs]) (breaking change) -- Recorder: Check for ENTITY_ID key that contains None value ([@balloob] - [#7287]) ([recorder docs]) -- Upgrade pytradfri to 1.1 ([@balloob] - [#7290]) -- Adding group control to tradfri light component ([@cyberjunky] - [#7248]) ([light.tradfri docs]) -- Feature/rss feed template ([@micw] - [#7032]) ([rss_feed_template docs]) (new-platform) -- Add support for Zigbee Home Automation ([@rcloran] - [#6263]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([sensor.zha docs]) ([switch.zha docs]) (new-platform) -- Added scene controller support to the vera component, along with proper polling when a vera device needs it ([@alanfischer] - [#7234]) ([vera docs]) ([sensor.vera docs]) -- Don't stack up error messages, fix link, and ordering ([@fabaff] - [#7291]) ([sensor.cert_expiry docs]) -- Fix breaking SSL in test HTML5 ([@balloob] - [#7310]) ([notify.html5 docs]) -- Upgrade pyhomematic, extend device support ([@danielperna84] - [#7303]) -- Issue 7218 update pylgtv to 0.1.7 ([@hmn] - [#7302]) ([media_player.webostv docs]) ([notify.webostv docs]) -- Version bump of aioautomatic ([@armills] - [#7300]) ([device_tracker.automatic docs]) -- Upgrade python-telegram-bot to 5.3.1 ([@fabaff] - [#7311]) ([notify.telegram docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) -- Disable Open Z-Wave in Docker ([@balloob] - [#7315]) -- LIFX: use white light when setting a specific temperature ([@amelchio] - [#7256]) ([light.lifx docs]) -- Allow InfluxDB to blacklist domains ([@janLo] - [#7264]) (breaking change) -- Hassio api v3 ([@balloob] - [#7323]) -- Update frontend ([@balloob] - [#7324]) -- Reduce color_xy_brightness_to_hsv to color_xy_to_hs ([@amelchio] - [#7320]) ([light.hue docs]) ([light.lifx docs]) -- Fix broken docker build ([@turbokongen] - [#7316]) -- Re-enable Open Z-Wave in Dockerfile ([@balloob] - [#7325]) -- Version bump for automatic ([@armills] - [#7329]) ([device_tracker.automatic docs]) -- Right fix for Python Open Z-Wave in Docker ([@balloob] - [#7337]) -- Use four-digits year ([@fabaff] - [#7336]) -- Allow multiple recipients for SMTP notify ([@amelchio] - [#7319]) ([notify.smtp docs]) -- Add auxheat to ecobee climate ([@titilambert] - [#6562]) ([climate.ecobee docs]) -- Properly return self._unit_of_measurement in the unit_of_measurement function ([@robbiet480] - [#7341]) ([sensor.ios docs]) -- Multiple changes (typo, ordering, docstrings, timeouts) ([@fabaff] - [#7343]) ([cover.garadget docs]) -- Upgrade Flux led lb to 0.19 ([@danielhiversen] - [#7352]) ([light.flux_led docs]) -- Add debug logging to pyvera events. ([@pavoni] - [#7364]) ([vera docs]) -- Upgrade xmltodict to 0.11.0 ([@fabaff] - [#7355]) -- Upgrade speedtest-cli to 1.0.6 ([@fabaff] - [#7354]) ([sensor.speedtest docs]) -- Remove global limit on white light temperature ([@amelchio] - [#7206]) ([light docs]) ([light.hue docs]) ([light.zwave docs]) ([switch.flux docs]) -- Remove state property from alarmdecoder binary sensor ([@balloob] - [#7370]) ([binary_sensor.alarmdecoder docs]) -- Remove binary sensor platforms implementing state property ([@balloob] - [#7371]) ([binary_sensor.octoprint docs]) ([binary_sensor.workday docs]) -- Feature/add mikrotik device tracker ([@LvivEchoes] - [#7366]) -- Netdisco now returns a dictionary while it used to be a tuple, fixed ([@JasonCarter80] - [#7350]) -- Create knx.py ([@onsmam] - [#7356]) -- light.sensehat: plugin to control the 8x8 LED matrix on a Sense hat ([@imrehg] - [#7365]) -- Update docstrings ([@fabaff] - [#7361]) ([ecobee docs]) ([enocean docs]) ([zha docs]) -- Flux switch: avoid updates when off ([@amelchio] - [#7363]) ([switch.flux docs]) -- Zoneminder: Fixed undefined index error ([@bah2830] - [#7340]) -- optimize remote calls and apps on webostv media_player ([@hmn] - [#7191]) ([media_player.webostv docs]) -- binary_sensor.workday: fix handling of states vs provinces ([@drkp] - [#7162]) ([binary_sensor.workday docs]) -- Upgrade voluptuous to 0.10.5 ([@fabaff] - [#7107]) -- Remove ordered_dict validator ([@balloob] - [#7375]) -- light.blinkt: add support for Blinkt! lights on Raspberry Pi ([@imrehg] - [#7377]) ([light.blinkt docs]) (new-platform) -- improve handling of flux_led lights in RGBW mode ([@wuub] - [#7221]) -- Plant (replacement for MiGardener) ([@ChristianKuehnel] - [#7131]) ([plant docs]) (new-platform) -- Add support for shuffle toggling on Spotify component. ([@abmantis] - [#7339]) ([media_player docs]) ([media_player.spotify docs]) -- Upgrade Ring to 0.1.4 ([@tchellomello] - [#7386]) -- Updated docstrings ([@arsaboo] - [#7383]) ([camera.netatmo docs]) -- Fix impulse events, added error event for Homegear ([@danielperna84] - [#7349]) ([homematic docs]) -- Fix YAML dump ([@balloob] - [#7388]) -- Migrate updater to aiohttp ([@balloob] - [#7387]) ([updater docs]) -- Remove path whitelisting for hassio ([@balloob] - [#7399]) -- Add Eight sleep component ([@mezz64] - [#7275]) ([eight_sleep docs]) ([binary_sensor.eight_sleep docs]) ([sensor.eight_sleep docs]) (new-platform) -- OpenGarage support ([@swbradshaw] - [#7338]) ([cover.opengarage docs]) (new-platform) -- Clean up requirements ([@andrey-git] - [#7391]) ([nuimo_controller docs]) ([sensor.dht docs]) ([sensor.thinkingcleaner docs]) ([switch.thinkingcleaner docs]) -- correct MQTT subscription filter ([@amigian74] - [#7269]) ([mqtt docs]) -- Update docstrings ([@fabaff] - [#7374]) -- light.blinkt: update brightness control logic ([@imrehg] - [#7389]) -- Update docstrings ([@fabaff] - [#7405]) -- Update LIFX default color for breathe/pulse effects ([@amelchio] - [#7407]) -- LIFX: Add transition option to colorloop effect ([@amelchio] - [#7410]) -- light.sensehat: brightness control logic update ([@imrehg] - [#7409]) ([light.sensehat docs]) -- Add Sensibo climate platform ([@andrey-git] - [#7379]) ([climate docs]) (new-platform) -- Pilight binary sensor components ([@zeltom] - [#6774]) ([binary_sensor.pilight docs]) (new-platform) -- applx suggested fix from issue #6573 ([@wokar] - [#7390]) ([sensor.zamg docs]) -- remove charset if set in content type header ([@hmn] - [#7411]) ([media_player docs]) -- Convert automatic device tracker to push updates ([@armills] - [#7404]) ([device_tracker.automatic docs]) (breaking change) -- light.piglow update ([@imrehg] - [#7408]) ([light.piglow docs]) -- Opencv ([@Teagan42] - [#7261]) ([opencv docs]) ([image_processing.opencv docs]) (new-platform) -- Fixed extra R in variable name. ([@cyberplant] - [#7418]) -- Update docstrings ([@fabaff] - [#7420]) -- ps - fix opencv ([@balloob] - [#7419]) -- Comment out opencv-python that is not installable on arm ([@andrey-git] - [#7426]) -- Reverse limitlessled color_temp range ([@amelchio] - [#7359]) (breaking change) -- Guard against no content type ([@balloob] - [#7432]) ([media_player docs]) -- wsock.send_json is a coroutine ([@balloob] - [#7433]) -- ps - fix websocket yielding pt2 ([@balloob] - [#7434]) -- Upgrade temperusb to 1.5.3 ([@fabaff] - [#7428]) -- update for pypi ([@nkgilley] - [#7430]) -- Add new sensor: Enviro pHAT ([@imrehg] - [#7427]) ([sensor.envirophat docs]) (new-platform) -- Added osramlightify groups. ([@deisi] - [#7376]) ([light.osramlightify docs]) -- Add support for face recognition with dlib ([@pvizeli] - [#7421]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) (new-platform) -- Replace pymailgun with pymailgunner ([@pschmitt] - [#7436]) ([notify.mailgun docs]) -- Suppress logs when octorpint goes offline ([@w1ll1am23] - [#7441]) ([octoprint docs]) -- Update join ([@nkgilley] - [#7443]) ([joaoapps_join docs]) ([notify.joaoapps_join docs]) (breaking change) -- Bump pyvera version - handle malformed json replies in poll thread. ([@pavoni] - [#7440]) ([vera docs]) -- Fix for broken virtual keys ([@danielperna84] - [#7439]) ([homematic docs]) -- Get new token to keep pubnub updates working ([@w1ll1am23] - [#7437]) ([wink docs]) -- Add hass to rfxtrx object ([@danielhiversen] - [#6844]) -- sensor.envirophat: add missing requirement ([@imrehg] - [#7451]) ([sensor.envirophat docs]) - -[#6263]: https://github.com/home-assistant/home-assistant/pull/6263 -[#6562]: https://github.com/home-assistant/home-assistant/pull/6562 -[#6774]: https://github.com/home-assistant/home-assistant/pull/6774 -[#6844]: https://github.com/home-assistant/home-assistant/pull/6844 -[#6982]: https://github.com/home-assistant/home-assistant/pull/6982 -[#7032]: https://github.com/home-assistant/home-assistant/pull/7032 -[#7107]: https://github.com/home-assistant/home-assistant/pull/7107 -[#7122]: https://github.com/home-assistant/home-assistant/pull/7122 -[#7131]: https://github.com/home-assistant/home-assistant/pull/7131 -[#7145]: https://github.com/home-assistant/home-assistant/pull/7145 -[#7160]: https://github.com/home-assistant/home-assistant/pull/7160 -[#7162]: https://github.com/home-assistant/home-assistant/pull/7162 -[#7182]: https://github.com/home-assistant/home-assistant/pull/7182 -[#7191]: https://github.com/home-assistant/home-assistant/pull/7191 -[#7199]: https://github.com/home-assistant/home-assistant/pull/7199 -[#7200]: https://github.com/home-assistant/home-assistant/pull/7200 -[#7201]: https://github.com/home-assistant/home-assistant/pull/7201 -[#7202]: https://github.com/home-assistant/home-assistant/pull/7202 -[#7204]: https://github.com/home-assistant/home-assistant/pull/7204 -[#7206]: https://github.com/home-assistant/home-assistant/pull/7206 -[#7208]: https://github.com/home-assistant/home-assistant/pull/7208 -[#7211]: https://github.com/home-assistant/home-assistant/pull/7211 -[#7212]: https://github.com/home-assistant/home-assistant/pull/7212 -[#7213]: https://github.com/home-assistant/home-assistant/pull/7213 -[#7214]: https://github.com/home-assistant/home-assistant/pull/7214 -[#7215]: https://github.com/home-assistant/home-assistant/pull/7215 -[#7216]: https://github.com/home-assistant/home-assistant/pull/7216 -[#7217]: https://github.com/home-assistant/home-assistant/pull/7217 -[#7220]: https://github.com/home-assistant/home-assistant/pull/7220 -[#7221]: https://github.com/home-assistant/home-assistant/pull/7221 -[#7226]: https://github.com/home-assistant/home-assistant/pull/7226 -[#7227]: https://github.com/home-assistant/home-assistant/pull/7227 -[#7231]: https://github.com/home-assistant/home-assistant/pull/7231 -[#7233]: https://github.com/home-assistant/home-assistant/pull/7233 -[#7234]: https://github.com/home-assistant/home-assistant/pull/7234 -[#7235]: https://github.com/home-assistant/home-assistant/pull/7235 -[#7236]: https://github.com/home-assistant/home-assistant/pull/7236 -[#7243]: https://github.com/home-assistant/home-assistant/pull/7243 -[#7245]: https://github.com/home-assistant/home-assistant/pull/7245 -[#7248]: https://github.com/home-assistant/home-assistant/pull/7248 -[#7249]: https://github.com/home-assistant/home-assistant/pull/7249 -[#7250]: https://github.com/home-assistant/home-assistant/pull/7250 -[#7251]: https://github.com/home-assistant/home-assistant/pull/7251 -[#7253]: https://github.com/home-assistant/home-assistant/pull/7253 -[#7254]: https://github.com/home-assistant/home-assistant/pull/7254 -[#7256]: https://github.com/home-assistant/home-assistant/pull/7256 -[#7261]: https://github.com/home-assistant/home-assistant/pull/7261 -[#7263]: https://github.com/home-assistant/home-assistant/pull/7263 -[#7264]: https://github.com/home-assistant/home-assistant/pull/7264 -[#7266]: https://github.com/home-assistant/home-assistant/pull/7266 -[#7267]: https://github.com/home-assistant/home-assistant/pull/7267 -[#7269]: https://github.com/home-assistant/home-assistant/pull/7269 -[#7271]: https://github.com/home-assistant/home-assistant/pull/7271 -[#7272]: https://github.com/home-assistant/home-assistant/pull/7272 -[#7273]: https://github.com/home-assistant/home-assistant/pull/7273 -[#7275]: https://github.com/home-assistant/home-assistant/pull/7275 -[#7278]: https://github.com/home-assistant/home-assistant/pull/7278 -[#7279]: https://github.com/home-assistant/home-assistant/pull/7279 -[#7281]: https://github.com/home-assistant/home-assistant/pull/7281 -[#7282]: https://github.com/home-assistant/home-assistant/pull/7282 -[#7287]: https://github.com/home-assistant/home-assistant/pull/7287 -[#7290]: https://github.com/home-assistant/home-assistant/pull/7290 -[#7291]: https://github.com/home-assistant/home-assistant/pull/7291 -[#7300]: https://github.com/home-assistant/home-assistant/pull/7300 -[#7302]: https://github.com/home-assistant/home-assistant/pull/7302 -[#7303]: https://github.com/home-assistant/home-assistant/pull/7303 -[#7310]: https://github.com/home-assistant/home-assistant/pull/7310 -[#7311]: https://github.com/home-assistant/home-assistant/pull/7311 -[#7315]: https://github.com/home-assistant/home-assistant/pull/7315 -[#7316]: https://github.com/home-assistant/home-assistant/pull/7316 -[#7319]: https://github.com/home-assistant/home-assistant/pull/7319 -[#7320]: https://github.com/home-assistant/home-assistant/pull/7320 -[#7323]: https://github.com/home-assistant/home-assistant/pull/7323 -[#7324]: https://github.com/home-assistant/home-assistant/pull/7324 -[#7325]: https://github.com/home-assistant/home-assistant/pull/7325 -[#7329]: https://github.com/home-assistant/home-assistant/pull/7329 -[#7336]: https://github.com/home-assistant/home-assistant/pull/7336 -[#7337]: https://github.com/home-assistant/home-assistant/pull/7337 -[#7338]: https://github.com/home-assistant/home-assistant/pull/7338 -[#7339]: https://github.com/home-assistant/home-assistant/pull/7339 -[#7340]: https://github.com/home-assistant/home-assistant/pull/7340 -[#7341]: https://github.com/home-assistant/home-assistant/pull/7341 -[#7343]: https://github.com/home-assistant/home-assistant/pull/7343 -[#7349]: https://github.com/home-assistant/home-assistant/pull/7349 -[#7350]: https://github.com/home-assistant/home-assistant/pull/7350 -[#7352]: https://github.com/home-assistant/home-assistant/pull/7352 -[#7354]: https://github.com/home-assistant/home-assistant/pull/7354 -[#7355]: https://github.com/home-assistant/home-assistant/pull/7355 -[#7356]: https://github.com/home-assistant/home-assistant/pull/7356 -[#7359]: https://github.com/home-assistant/home-assistant/pull/7359 -[#7361]: https://github.com/home-assistant/home-assistant/pull/7361 -[#7363]: https://github.com/home-assistant/home-assistant/pull/7363 -[#7364]: https://github.com/home-assistant/home-assistant/pull/7364 -[#7365]: https://github.com/home-assistant/home-assistant/pull/7365 -[#7366]: https://github.com/home-assistant/home-assistant/pull/7366 -[#7370]: https://github.com/home-assistant/home-assistant/pull/7370 -[#7371]: https://github.com/home-assistant/home-assistant/pull/7371 -[#7374]: https://github.com/home-assistant/home-assistant/pull/7374 -[#7375]: https://github.com/home-assistant/home-assistant/pull/7375 -[#7376]: https://github.com/home-assistant/home-assistant/pull/7376 -[#7377]: https://github.com/home-assistant/home-assistant/pull/7377 -[#7379]: https://github.com/home-assistant/home-assistant/pull/7379 -[#7383]: https://github.com/home-assistant/home-assistant/pull/7383 -[#7386]: https://github.com/home-assistant/home-assistant/pull/7386 -[#7387]: https://github.com/home-assistant/home-assistant/pull/7387 -[#7388]: https://github.com/home-assistant/home-assistant/pull/7388 -[#7389]: https://github.com/home-assistant/home-assistant/pull/7389 -[#7390]: https://github.com/home-assistant/home-assistant/pull/7390 -[#7391]: https://github.com/home-assistant/home-assistant/pull/7391 -[#7399]: https://github.com/home-assistant/home-assistant/pull/7399 -[#7404]: https://github.com/home-assistant/home-assistant/pull/7404 -[#7405]: https://github.com/home-assistant/home-assistant/pull/7405 -[#7407]: https://github.com/home-assistant/home-assistant/pull/7407 -[#7408]: https://github.com/home-assistant/home-assistant/pull/7408 -[#7409]: https://github.com/home-assistant/home-assistant/pull/7409 -[#7410]: https://github.com/home-assistant/home-assistant/pull/7410 -[#7411]: https://github.com/home-assistant/home-assistant/pull/7411 -[#7418]: https://github.com/home-assistant/home-assistant/pull/7418 -[#7419]: https://github.com/home-assistant/home-assistant/pull/7419 -[#7420]: https://github.com/home-assistant/home-assistant/pull/7420 -[#7421]: https://github.com/home-assistant/home-assistant/pull/7421 -[#7426]: https://github.com/home-assistant/home-assistant/pull/7426 -[#7427]: https://github.com/home-assistant/home-assistant/pull/7427 -[#7428]: https://github.com/home-assistant/home-assistant/pull/7428 -[#7430]: https://github.com/home-assistant/home-assistant/pull/7430 -[#7432]: https://github.com/home-assistant/home-assistant/pull/7432 -[#7433]: https://github.com/home-assistant/home-assistant/pull/7433 -[#7434]: https://github.com/home-assistant/home-assistant/pull/7434 -[#7436]: https://github.com/home-assistant/home-assistant/pull/7436 -[#7437]: https://github.com/home-assistant/home-assistant/pull/7437 -[#7439]: https://github.com/home-assistant/home-assistant/pull/7439 -[#7440]: https://github.com/home-assistant/home-assistant/pull/7440 -[#7441]: https://github.com/home-assistant/home-assistant/pull/7441 -[#7443]: https://github.com/home-assistant/home-assistant/pull/7443 -[#7451]: https://github.com/home-assistant/home-assistant/pull/7451 -[@Cadair]: https://github.com/Cadair -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@JasonCarter80]: https://github.com/JasonCarter80 -[@JshWright]: https://github.com/JshWright -[@KlaasH]: https://github.com/KlaasH -[@LvivEchoes]: https://github.com/LvivEchoes -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@Teagan42]: https://github.com/Teagan42 -[@abmantis]: https://github.com/abmantis -[@alanfischer]: https://github.com/alanfischer -[@amelchio]: https://github.com/amelchio -[@amigian74]: https://github.com/amigian74 -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@arsaboo]: https://github.com/arsaboo -[@bah2830]: https://github.com/bah2830 -[@balloob]: https://github.com/balloob -[@biacz]: https://github.com/biacz -[@craftyguy]: https://github.com/craftyguy -[@cribbstechnologies]: https://github.com/cribbstechnologies -[@cyberjunky]: https://github.com/cyberjunky -[@cyberplant]: https://github.com/cyberplant -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@darookee]: https://github.com/darookee -[@deisi]: https://github.com/deisi -[@drkp]: https://github.com/drkp -[@fabaff]: https://github.com/fabaff -[@fabfurnari]: https://github.com/fabfurnari -[@hmn]: https://github.com/hmn -[@imrehg]: https://github.com/imrehg -[@janLo]: https://github.com/janLo -[@jotunacorn]: https://github.com/jotunacorn -[@keatontaylor]: https://github.com/keatontaylor -[@mezz64]: https://github.com/mezz64 -[@micw]: https://github.com/micw -[@mjg59]: https://github.com/mjg59 -[@nkgilley]: https://github.com/nkgilley -[@onsmam]: https://github.com/onsmam -[@patrickeasters]: https://github.com/patrickeasters -[@pavoni]: https://github.com/pavoni -[@postlund]: https://github.com/postlund -[@pschmitt]: https://github.com/pschmitt -[@pvizeli]: https://github.com/pvizeli -[@rcloran]: https://github.com/rcloran -[@robbiet480]: https://github.com/robbiet480 -[@scarface-4711]: https://github.com/scarface-4711 -[@sdague]: https://github.com/sdague -[@swbradshaw]: https://github.com/swbradshaw -[@tchellomello]: https://github.com/tchellomello -[@titilambert]: https://github.com/titilambert -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wokar]: https://github.com/wokar -[@wuub]: https://github.com/wuub -[@zeltom]: https://github.com/zeltom -[binary_sensor.alarmdecoder docs]: /components/binary_sensor.alarmdecoder/ -[binary_sensor.eight_sleep docs]: /components/binary_sensor.eight_sleep/ -[binary_sensor.maxcube docs]: /components/binary_sensor.maxcube/ -[binary_sensor.octoprint docs]: /components/binary_sensor.octoprint/ -[binary_sensor.pilight docs]: /components/binary_sensor.pilight/ -[binary_sensor.ping docs]: /components/binary_sensor.ping/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[binary_sensor.zha docs]: /components/binary_sensor.zha/ -[camera.netatmo docs]: /components/camera.netatmo/ -[climate docs]: /components/climate/ -[climate.ecobee docs]: /components/climate.ecobee/ -[climate.maxcube docs]: /components/climate.maxcube/ -[climate.zwave docs]: /components/climate.zwave/ -[cover.garadget docs]: /components/cover.garadget/ -[cover.opengarage docs]: /components/cover.opengarage/ -[cover.zwave docs]: /components/cover.zwave/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.zha docs]: /components/device_tracker.zha/ -[ecobee docs]: /components/ecobee/ -[eight_sleep docs]: /components/eight_sleep/ -[enocean docs]: /components/enocean/ -[homematic docs]: /components/homematic/ -[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[image_processing.microsoft_face_detect docs]: /components/image_processing.microsoft_face_detect/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[joaoapps_join docs]: /components/joaoapps_join/ -[light docs]: /components/light/ -[light.avion docs]: /components/light.avion/ -[light.blinkt docs]: /components/light.blinkt/ -[light.decora docs]: /components/light.decora/ -[light.flux_led docs]: /components/light.flux_led/ -[light.hue docs]: /components/light.hue/ -[light.lifx docs]: /components/light.lifx/ -[light.osramlightify docs]: /components/light.osramlightify/ -[light.piglow docs]: /components/light.piglow/ -[light.sensehat docs]: /components/light.sensehat/ -[light.tradfri docs]: /components/light.tradfri/ -[light.zha docs]: /components/light.zha/ -[light.zwave docs]: /components/light.zwave/ -[maxcube docs]: /components/maxcube/ -[media_player docs]: /components/media_player/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.webostv docs]: /components/media_player.webostv/ -[mqtt docs]: /components/mqtt/ -[notify.html5 docs]: /components/notify.html5/ -[notify.instapush docs]: /components/notify.instapush/ -[notify.joaoapps_join docs]: /components/notify.joaoapps_join/ -[notify.mailgun docs]: /components/notify.mailgun/ -[notify.matrix docs]: /components/notify.matrix/ -[notify.smtp docs]: /components/notify.smtp/ -[notify.telegram docs]: /components/notify.telegram/ -[notify.webostv docs]: /components/notify.webostv/ -[nuimo_controller docs]: /components/nuimo_controller/ -[octoprint docs]: /components/octoprint/ -[opencv docs]: /components/opencv/ -[plant docs]: /components/plant/ -[recorder docs]: /components/recorder/ -[rfxtrx docs]: /components/rfxtrx/ -[rss_feed_template docs]: /components/rss_feed_template/ -[sensor.cert_expiry docs]: /components/sensor.cert_expiry/ -[sensor.dht docs]: /components/sensor.dht/ -[sensor.eight_sleep docs]: /components/sensor.eight_sleep/ -[sensor.envirophat docs]: /components/sensor.envirophat/ -[sensor.ios docs]: /components/sensor.ios/ -[sensor.lyft docs]: /components/sensor.lyft/ -[sensor.pushbullet docs]: /components/sensor.pushbullet/ -[sensor.speedtest docs]: /components/sensor.speedtest/ -[sensor.thinkingcleaner docs]: /components/sensor.thinkingcleaner/ -[sensor.vera docs]: /components/sensor.vera/ -[sensor.zamg docs]: /components/sensor.zamg/ -[sensor.zha docs]: /components/sensor.zha/ -[switch.flux docs]: /components/switch.flux/ -[switch.hook docs]: /components/switch.hook/ -[switch.thinkingcleaner docs]: /components/switch.thinkingcleaner/ -[switch.wemo docs]: /components/switch.wemo/ -[switch.zha docs]: /components/switch.zha/ -[telegram_bot docs]: /components/telegram_bot/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[updater docs]: /components/updater/ -[vera docs]: /components/vera/ -[wemo docs]: /components/wemo/ -[wink docs]: /components/wink/ -[zha docs]: /components/zha/ -[forum]: https://community.home-assistant.io/ -[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 -[#7469]: https://github.com/home-assistant/home-assistant/pull/7469 -[#7476]: https://github.com/home-assistant/home-assistant/pull/7476 -[@finish06]: https://github.com/finish06 -[@frog32]: https://github.com/frog32 -[@pezinek]: https://github.com/pezinek -[device_tracker.unifi docs]: /components/device_tracker.unifi/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-05-07-grazer-linuxtage-2017-talk-python-everywhere.markdown b/source/_posts/2017-05-07-grazer-linuxtage-2017-talk-python-everywhere.markdown deleted file mode 100644 index 2199538b46..0000000000 --- a/source/_posts/2017-05-07-grazer-linuxtage-2017-talk-python-everywhere.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: post -title: "Grazer Linuxtage 2017: Python Everywhere" -description: "Florian Klien's talk at Grazer Linuxtage 2017 about Home Assistant." -date: 2017-05-07 02:00:00 -date_formatted: "May 7, 2017" -author: Florian Klien -author_twitter: flowolf -comments: true -categories: Community Micropython -og_image: /images/blog/2017-05-grazer-linuxtage/social.png ---- - -I like Python. It's a clean easy to read, easy to learn language. Yet when you use it for some time you still find more features to improve your coding. What I probably like most about Python is the community and the great libraries that already exist. Often solving a problem means including a pre-existing library and writing some glue code. That makes it quick to get things up and running. - -I just gave a talk on how you can run Python to automate your home (yes with Home-Assistant) but also with [MicroPython]. Micropython allows you to run Python on your DIY sensors and switches around your home. Python everywhere - even on the chips that give Home-Assistant the data to be awesome. - -
    - -
    - -[MicroPython]: https://micropython.org diff --git a/source/_posts/2017-05-13-home-assistant-on-orange-pi-zero.markdown b/source/_posts/2017-05-13-home-assistant-on-orange-pi-zero.markdown deleted file mode 100644 index eda54ca033..0000000000 --- a/source/_posts/2017-05-13-home-assistant-on-orange-pi-zero.markdown +++ /dev/null @@ -1,134 +0,0 @@ ---- -layout: post -title: "Home Assistant on an Orange Pi Zero" -description: "Installing Home Assistant on a Orange Pi Zero with armbian." -date: 2017-05-13 09:00:00 -date_formatted: "May 13, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To -og_image: /images/blog/2017-05-orangepi/social.png ---- - -This blog post is about the setup of Home Assistant on an [Orange Pi Zero](http://www.orangepi.org/orangepizero/). Like the setup on a [Raspberry Pi Zero](/blog/2017/05/01/home-assistant-on-raspberry-pi-zero-in-30-minutes/) it will only take a couple of minutes to get a fully functional super cheap (less than 18 Euro incl. casing and power supply) Home Assistant hub. The reasons to use an Orange Pi Zero beside the prize are the built-in Ethernet port and the availability. - -

    - -

    - - - -Download the [Armbian](https://www.armbian.com/orange-pi-zero/) and create the SD card with [Etcher](https://etcher.io/). There is no possibility to connect a display to the Orange Pi Zero. This means that you need a wired network setup with DHCP server. After your Orange Pi Zero is running, give it some time, and look for its IP address. The hostname is `orangepizero`. - -If you found the IP address then use your SSH client to connect to the Orange Pi Zero. The default password is `1234`. - -```bash -$ ssh root@192.168.0.151 -[...] -root@192.168.0.151's password: -You are required to change your password immediately (root enforced) - ___ ____ _ _____ - / _ \ _ __ __ _ _ __ __ _ ___ | _ \(_) |__ /___ _ __ ___ -| | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | / // _ \ '__/ _ \ -| |_| | | | (_| | | | | (_| | __/ | __/| | / /| __/ | | (_) | - \___/|_| \__,_|_| |_|\__, |\___| |_| |_| /____\___|_| \___/ - |___/ - -Welcome to ARMBIAN 5.27.170514 nightly Ubuntu 16.04.2 LTS 4.11.0-sun8i -System load: 0.86 0.35 0.13 Up time: 9 min -Memory usage: 5 % of 496MB IP: 192.168.0.151 -CPU temp: 39°C -Usage of /: 16% of 7.1G - -[ General system configuration: armbian-config ] -New to Armbian? Check the documentation first: https://docs.armbian.com - -Changing password for root. -(current) UNIX password: -Enter new UNIX password: -Retype new UNIX password: - -You are using Armbian nightly build. - -It is provided AS IS with NO WARRANTY and NO END USER SUPPORT. - -Creating a new user account. Press to abort - -Please provide a username (eg. your forename): ha -Trying to add user ha -perl: warning: Setting locale failed. -perl: warning: Please check that your locale settings: - LANGUAGE = "en_US.UTF-8", - LC_ALL = (unset), - LC_PAPER = "de_CH.UTF-8", - LC_MONETARY = "de_CH.UTF-8", - LC_NUMERIC = "de_CH.UTF-8", - LC_MESSAGES = "en_US.UTF-8", - LC_MEASUREMENT = "de_CH.UTF-8", - LC_TIME = "de_CH.UTF-8", - LANG = "en_US.UTF-8" - are supported and installed on your system. -perl: warning: Falling back to a fallback locale ("en_US.UTF-8"). -Adding user `ha' ... -Adding new group `ha' (1000) ... -Adding new user `ha' (1000) with group `ha' ... -Creating home directory `/home/ha' ... -Copying files from `/etc/skel' ... -Enter new UNIX password: -Retype new UNIX password: -passwd: password updated successfully -Changing the user information for ha -Enter the new value, or press ENTER for the default - Full Name []: homeassistant - Room Number []: - Work Phone []: - Home Phone []: - Other []: -Is the information correct? [Y/n] y - -Dear homeassistant, your account ha has been created and is sudo enabled. -Please use this account for your daily work from now on. - -root@orangepizero:~# -``` -Get the latest details about the packages. - -```bash -root@orangepizero:~# apt-get update -Hit:1 http://ports.ubuntu.com xenial InRelease -Get:2 http://ports.ubuntu.com xenial-security InRelease [102 kB] -Hit:3 http://beta.armbian.com xenial InRelease -Get:4 http://ports.ubuntu.com xenial-updates InRelease [102 kB] -Get:5 http://ports.ubuntu.com xenial-backports InRelease [102 kB] -Get:6 http://ports.ubuntu.com xenial-updates/main armhf Packages [479 kB] -Get:7 http://ports.ubuntu.com xenial-updates/universe armhf Packages [419 kB] -Fetched 1205 kB in 7s (158 kB/s) -Reading package lists... Done -``` -Let's run an upgrade to make sure that all available packages are up-to-date. - -```bash -root@orangepizero:~# apt-get upgrade -``` -Now, we are installing the requirements for Home Assistant. - -```bash -root@orangepizero:~# apt-get install python3-dev python3-pip python3-venv -``` - -Those steps to install Home Assistant are described in the [documentation](/docs/installation/armbian/) and the guide for [`venv`](/docs/installation/virtualenv/) as well. Switch to the create user `ha` and perform the remaining installation steps which are reduced to the minimum below: - -```bash -ha@orangepizero:~$ pyvenv-3.5 homeassistant -ha@orangepizero:~$ cd homeassistant && source bin/activate -(homeassistant) ha@orangepizero:~/homeassistant$ pip3 install --upgrade pip -(homeassistant) ha@orangepizero:~/homeassistant$ pip3 install homeassistant -(homeassistant) ha@orangepizero:~/homeassistant$ hass -``` - -

    - -

    - -To make it ready for daily usage, don't forget to enable [autostart](/docs/autostart/). diff --git a/source/_posts/2017-05-19-home-assistant-at-pycon-us-2017.markdown b/source/_posts/2017-05-19-home-assistant-at-pycon-us-2017.markdown deleted file mode 100644 index bbf04b8005..0000000000 --- a/source/_posts/2017-05-19-home-assistant-at-pycon-us-2017.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "Home Assistant at PyCon US 2017" -description: "A bunch of our developers and users will be at PyCon US 2017." -date: 2017-05-19 00:00:01 -date_formatted: "May 19, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community ---- - -In just 12 hours PyCon US 2017 starts. This is an exciting conference because there will be a bunch of Home Assistant developers and users there being able to meet in person. - -Just like last year, we'll be hosting a [Home Assistant Open Space](https://us.pycon.org/2017/events/open-spaces/). Please stop by to ask any questions you have to the available developers. ~~We haven't reserved a slot yet but will do so tomorrow. We'll update this post and announce it on social media as we know time and location.~~ **First open-space will be Friday at 4pm in room B112.** - -We will also be taken part in the [development sprints](https://us.pycon.org/2017/community/sprints/) from Monday-Wednesday. You only need to bring a laptop. We'll help you get set up with a dev environment and you can be coding on top of Home Assistant in no time. ~~Exact location inside the conference center to be announced.~~ **We are sitting in room A108.** - -On a final note, the Home Assistant community is very very active so don't take it personal if we don't remember your name, issue or contribution. 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 deleted file mode 100644 index e2b2e34068..0000000000 --- a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown +++ /dev/null @@ -1,437 +0,0 @@ ---- -layout: post -title: "Home Assistant 0.45: Automation editor, Z-Wave panel, OCR" -description: "AXIS and Keene support, PiFace, Raspihats, and Datadog integration" -date: 2017-05-20 13:00:00 +0000 -date_formatted: "May 20, 2017" -author: Paulus Schoutsen & Fabian Affolter -author_twitter: balloob -comments: true -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! - -First thing for this release is a feature that has been requested a lot: an automation editor! It's still experimental - and many things are still in progress - but it works! You can create new automations and edit existing ones. If you start a new config, you're all good to go. Otherwise check [these instructions](/docs/automation/editor/) to get your automations ready for editing in the UI. - -

    - -

    - -Check this [video](https://youtu.be/0j_hWdCTip4) by [Ben](https://twitter.com/BRUHautomation) from [BRUHautomation](http://www.bruhautomation.com/) to see the new release in action. - -
    - -
    - -As the editor is experimental, there are some limitations. These include that Chrome/Chromium is the only supported browser, we don't support all triggers and actions and there is no support for conditions yet. But the foundation is there and so if you want to contribute to this, come help! - -On the Z-Wave front a lot has happened. The biggest one is that we have a major extension of the Z-Wave panel thanks to [@turbokongen]! You will now be able to change config parameters and manage your devices. - -

    - -

    -Thanks to the work by the Python Open Z-Wave team we are now able to install it on demand from PyPi! There is no longer a need to pre-compile it yourself. This should give us the guarantee that we work with the Python Open Z-Wave version that the code expects. - -

    -If you have a security key set in your Open Z-Wave `options.xml`, copy `options.xml` to your Home Assistant configuration directory. This is the only place where options will get persisted. -

    - -Next to that [@armills] has lead the charge and managed to get full test coverage for Z-Wave! Thanks for all the hard work! - -This release also contains two integrations which could help you to make non-smart devices a little smarter. The [`file` sensor][sensor.file docs] and the [`seven_segments` OCR image processing platform][image_processing.seven_segments docs]. The first simply reads a plain-text file which was created by a logger or alike. The latter one extracts the value from a captured image that shows a seven-segments display. - -

    - -

    - -And last, but not least, our Docker image is now based off Python 3.6. This version is faster and uses less memory than Python 3.5. Win! - -If you are using our [experimental Hass.io image][hass.io], we made a breaking change in how the panel is served. If you have an existing installation, make sure you update your supervisor to the latest version before updating Home Assistant. If you are going to flash a new Hass.io image, make sure to only flash the new 0.8 image as linked on [the installation page][hass.io-install]. - -[hass.io]: https://community.home-assistant.io/t/introducing-hass-io/17296 -[hass.io-install]: /hassio/installation/ - -## {% linkable_title New integrations %} - -- Add new raspihats component ([@florincosta] - [#7392]) ([raspihats docs]) (new-platform) -- Add datadog component ([@nunofgs] - [#7158]) ([datadog docs]) (new-platform) -- Add support for automation config panel ([@balloob] - [#7509]) ([config.automation docs]) (new-platform) -- Z-Wave panel API ([@turbokongen] - [#7456]) ([zwave docs]) ([zwave.api docs]) (new-platform) -- myStrom Buttons support ([@fabaff] - [#7099]) ([binary_sensor.mystrom docs]) (new-platform) -- Support for the PiFace Digital I/O module ([@basschipper] - [#7494]) ([rpi_pfio docs]) ([binary_sensor.rpi_pfio docs]) ([switch.rpi_pfio docs]) (new-platform) -- Add raspihats binary sensor ([@florincosta] - [#7508]) ([binary_sensor.raspihats docs]) (new-platform) -- Support lutron serena shades ([@gurumitts] - [#7565]) ([lutron_caseta docs]) ([cover.lutron_caseta docs]) (new-platform) -- Add Kira component to sensor and remote platforms ([@stu-gott] - [#7479]) ([kira docs]) ([remote.kira docs]) ([sensor.kira docs]) (new-platform) -- File sensor ([@fabaff] - [#7569]) ([sensor.file docs]) (new-platform) -- Seven segments OCR image processing ([@fabaff] - [#7632]) ([image_processing.seven_segments docs]) (new-platform) -- Axis component ([@Kane610] - [#7381]) ([axis docs]) (new-platform) - -## {% linkable_title Release 0.45.1 - May 22 %} - -- Fix telegram chats ([@azogue] - [#7689]) ([notify.telegram docs]) ([telegram_bot.__init__ docs]) -- Fix playback control of web streams ([@cgtobi] - [#7683]) ([media_player.volumio docs]) -- device_tracker.ubus: Handle empty results ([@tobygray] - [#7673]) ([device_tracker.ubus docs]) -- 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][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 %} - -- PyPI Openzwave ([@JshWright] - [#7415]) ([zwave docs]) (breaking change) -- Remove listening to `homeassistant_start` with event automation ([@balloob] - [#7474]) ([automation.event docs]) (breaking change) - - -## {% linkable_title All changes %} - -- Add hass to rfxtrx object ([@danielhiversen] - [#6844]) -- Add new raspihats component ([@florincosta] - [#7392]) ([raspihats docs]) (new-platform) -- sensor.envirophat: add missing requirement ([@imrehg] - [#7451]) ([sensor.envirophat docs]) -- PyPI Openzwave ([@JshWright] - [#7415]) ([zwave docs]) (breaking change) -- Add datadog component ([@nunofgs] - [#7158]) -- Add tests for deprecation helpers ([@armills] - [#7452]) -- Forecasts for weather underground ([@pezinek] - [#7062]) ([sensor.wunderground docs]) -- sensor.envirophat: add missing requirement ([@imrehg] - [#7451]) ([sensor.envirophat docs]) -- Switch russound, pymysensors, and pocketcasts to pypi ([@andrey-git] - [#7449]) -- Upgrade pymysensors to 0.10.0 ([@MartinHjelmare] - [#7469]) -- Upgrade Dockerfile to Python 3.6 ([@balloob] - [#7471]) -- Test only dependencies ([@balloob] - [#7472]) -- Update to pyunifi 2.12 ([@finish06] - [#7468]) ([device_tracker.unifi docs]) -- Remove listening to homeassistant_start with event automation ([@balloob] - [#7474]) ([automation.event docs]) (breaking change) -- Fix plant MIN_TEMPERATURE, MAX_TEMPERATURE validation ([@frog32] - [#7476]) ([plant docs]) -- Forecasts for weather underground ([@pezinek] - [#7062]) ([sensor.wunderground docs]) -- Upgrade pymysensors to 0.10.0 ([@MartinHjelmare] - [#7469]) -- Fix plant MIN_TEMPERATURE, MAX_TEMPERATURE validation ([@frog32] - [#7476]) ([plant docs]) -- Update to pyunifi 2.12 ([@finish06] - [#7468]) ([device_tracker.unifi docs]) -- Uses pypi for deps ([@gurumitts] - [#7485]) ([lutron_caseta docs]) -- 0.44.2 ([@balloob] - [#7488]) -- LIFX: avoid out-of-bounds hue aborting the colorloop effect ([@amelchio] - [#7495]) -- Upgrade async_timeout to 1.2.1 ([@fabaff] - [#7490]) -- Prevent printing of packets. ([@aequitas] - [#7492]) ([rflink docs]) -- Upgrade beautifulsoup4 to 4.6.0 ([@fabaff] - [#7491]) ([device_tracker.linksys_ap docs]) ([sensor.scrape docs]) -- Switch onkyo to pypi ([@andrey-git] - [#7497]) ([media_player.onkyo docs]) -- Fixed potential AttributeError when checking for deleted sources ([@scarface-4711] - [#7502]) ([media_player.denonavr docs]) -- Refactor sun component for correctness ([@armills] - [#7295]) -- new source only forces "play" if the current state is "playing" ([@abmantis] - [#7506]) ([media_player.spotify docs]) -- Correct retrieval of spotify shuffle state ([@andersonshatch] - [#7505]) ([media_player.spotify docs]) -- Fix sonos sleep timer ([@frog32] - [#7503]) ([media_player.sonos docs]) -- Add support for automation config panel ([@balloob] - [#7509]) ([automation.__init__ docs]) ([config.automation docs]) ([config.__init__ docs]) (new-platform) -- Zwave panel api ([@turbokongen] - [#7456]) ([zwave docs]) ([zwave.api docs]) (new-platform) -- Update docker dev environment to python3.6 ([@frog32] - [#7520]) -- Switch basicmodem and python-roku to pypi ([@andrey-git] - [#7514]) ([media_player.roku docs]) ([sensor.modem_callerid docs]) -- sensor.envirophat: do not set up platform if hardware is not attached ([@imrehg] - [#7438]) ([sensor.envirophat docs]) -- Telegram Bot enhancements with callback queries and new notification services ([@azogue] - [#7454]) ([telegram_bot docs]) ([notify.telegram docs]) ([telegram_bot.polling docs]) ([telegram_bot.services.yaml docs]) ([telegram_bot.webhooks docs]) -- Add password parameter to uvc component ([@nunofgs] - [#7499]) ([camera.uvc docs]) -- Don't interact with hass directly ([@fabaff] - [#7099]) ([binary_sensor.mystrom docs]) (new-platform) -- Support for the PiFace Digital I/O module ([@basschipper] - [#7494]) ([rpi_pfio docs]) ([binary_sensor.rpi_pfio docs]) ([switch.rpi_pfio docs]) (new-platform) -- Upgrade limitlessled to 1.0.7 ([@corneyl] - [#7525]) ([light.limitlessled docs]) -- Update docstrings and log messages ([@fabaff] - [#7526]) ([light.blinksticklight docs]) ([light.enocean docs]) ([light.flux_led docs]) ([light.insteon_local docs]) ([light.insteon_plm docs]) ([light.isy994 docs]) ([light.limitlessled docs]) ([light.mystrom docs]) -- Try to request current_location Automatic scope ([@armills] - [#7447]) ([device_tracker.automatic docs]) -- Add myStrom binary sensor ([@fabaff] - [#7530]) -- Add not-context-manager ([@fabaff] - [#7523]) -- Threadsafe configurator ([@Kane610] - [#7536]) ([configurator docs]) -- Fix for #7459 ([@jumpkick] - [#7544]) ([alexa docs]) -- Upgrade sendgrid to 4.1.0 ([@fabaff] - [#7538]) ([notify.sendgrid docs]) -- Automatic version bump ([@armills] - [#7555]) ([device_tracker.automatic docs]) -- Upgrade dweepy to 0.3.0 ([@fabaff] - [#7550]) ([dweet docs]) ([sensor.dweet docs]) -- Add SSL support to NZBGet sensor ([@tboyce021] - [#7553]) ([sensor.nzbget docs]) -- Do not install all dependencies in dev mode ([@balloob] - [#7548]) -- Hide proximity updates in logbook ([@armills] - [#7549]) ([logbook docs]) -- Only install tox in dev mode ([@balloob] - [#7557]) -- Support adding different server locations for Microsoft face component ([@tsvi] - [#7532]) ([microsoft_face docs]) -- Treat swing and fan level as optional in Sensibo Climate. ([@andrey-git] - [#7560]) ([climate.sensibo docs]) -- LIFX: add lifx_set_state service call ([@amelchio] - [#7552]) ([light.lifx docs]) -- Add raspihats binary sensor ([@florincosta] - [#7508]) ([binary_sensor.raspihats docs]) (new-platform) -- update pywebpush to 1.0.0 ([@perosb] - [#7561]) ([notify.html5 docs]) -- Initialize sun with correct values. ([@aequitas] - [#7559]) ([sun docs]) -- Comment RasPi specific requirements ([@Juggels] - [#7562]) ([sensor.envirophat docs]) -- Update netdisco ([@balloob] - [#7563]) -- Support lutron serena shades ([@gurumitts] - [#7565]) ([lutron_caseta docs]) ([cover.lutron_caseta docs]) (new-platform) -- Tests for zwave discovery logic ([@armills] - [#7566]) -- Tests for zwave setup features ([@armills] - [#7570]) -- Blink version bump ([@fronzbot] - [#7571]) ([blink docs]) ([sensor.blink docs]) -- Fix systematic warning in influxdb sensor ([@bestlibre] - [#7541]) ([sensor.influxdb docs]) -- Fix Kodi specific services registry and add descriptions ([@azogue] - [#7551]) ([media_player.kodi docs]) -- Add Kira component to sensor and remote platforms ([@stu-gott] - [#7479]) ([kira docs]) ([remote.kira docs]) ([sensor.kira docs]) (new-platform) -- Add tests for zwave network events ([@armills] - [#7573]) -- Additional Wink lock features ([@w1ll1am23] - [#7445]) -- Websocket_api: avoid parallel drain ([@balloob] - [#7576]) ([websocket_api docs]) -- Remove more test requirements ([@balloob] - [#7574]) -- camera.zoneminder: Handle old versions of zoneminder ([@mnoorenberghe] - [#7589]) ([camera.zoneminder docs]) -- Pass additional arguments to tox in test_docker ([@frog32] - [#7591]) -- Fix websocket api reaching queue ([@balloob] - [#7590]) ([websocket_api docs]) -- SMTP notify enhancements: full HTML emails and custom `product_name` in email headers ([@azogue] - [#7533]) ([notify.smtp docs]) -- Automation State Change For timer attribute fix ([@armills] - [#7584]) ([automation.state docs]) -- Add posibility to specify snmp protocol version ([@jhemzal] - [#7564]) ([sensor.snmp docs]) -- Add sonos alarm clock update service ([@frog32] - [#7521]) ([media_player.sonos docs]) -- Fix handling of single user ([@mezz64] - [#7587]) ([eight_sleep docs]) -- File sensor ([@fabaff] - [#7569]) ([sensor.file docs]) (new-platform) -- Make miflora monitored_conditions parameter optional ([@frog32] - [#7598]) ([sensor.miflora docs]) -- Force automation ids to always be a string ([@balloob] - [#7612]) ([automation.__init__ docs]) -- Update Docker base image to python 3.6 ([@pschmitt] - [#7613]) -- Add Content-type: image/jpeg for camera proxy ([@olekenneth] - [#7581]) ([camera.__init__ docs]) -- Fix typo and update style to match the other platforms ([@fabaff] - [#7621]) ([image_processing.opencv docs]) -- Bump pyvera - fixes issue with % in brightness levels. ([@pavoni] - [#7622]) ([vera docs]) -- Add kelvin/brightness_pct alternatives to light.turn_on ([@amelchio] - [#7596]) ([light.lifx docs]) ([light.__init__ docs]) -- Add support for disabling tradfri groups ([@cnrd] - [#7593]) ([tradfri docs]) ([light.tradfri docs]) -- Update docstrings and comments ([@fabaff] - [#7626]) ([image_processing.openalpr_cloud docs]) ([image_processing.openalpr_local docs]) -- Upgrade Sphinx to 1.6.1 ([@fabaff] - [#7624]) -- Update docstrings ([@fabaff] - [#7630]) ([image_processing.demo docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) ([image_processing.opencv docs]) -- Kodi specific service to call Kodi API methods ([@azogue] - [#7603]) ([media_player.kodi docs]) -- Updated limitlessled requirement to v1.0.8 ([@corneyl] - [#7629]) -- Osram lightify Removed wrong assignment ([@commento] - [#7615]) ([light.osramlightify docs]) -- Updated dependency ([@danielperna84] - [#7638]) ([homematic docs]) -- Seven segments OCR image processing ([@fabaff] - [#7632]) ([image_processing.seven_segments docs]) ([image_processing.__init__ docs]) (new-platform) -- Abort tests when instances leaked ([@balloob] - [#7623]) -- Coerce color_temp to int even when passed in as kelvin ([@amelchio] - [#7640]) ([light.__init__ docs]) -- Fix automation failing to setup if no automations specified ([@balloob] - [#7647]) ([automation.__init__ docs]) - -[#6844]: https://github.com/home-assistant/home-assistant/pull/6844 -[#7062]: https://github.com/home-assistant/home-assistant/pull/7062 -[#7099]: https://github.com/home-assistant/home-assistant/pull/7099 -[#7158]: https://github.com/home-assistant/home-assistant/pull/7158 -[#7295]: https://github.com/home-assistant/home-assistant/pull/7295 -[#7381]: https://github.com/home-assistant/home-assistant/pull/7381 -[#7392]: https://github.com/home-assistant/home-assistant/pull/7392 -[#7415]: https://github.com/home-assistant/home-assistant/pull/7415 -[#7438]: https://github.com/home-assistant/home-assistant/pull/7438 -[#7445]: https://github.com/home-assistant/home-assistant/pull/7445 -[#7447]: https://github.com/home-assistant/home-assistant/pull/7447 -[#7449]: https://github.com/home-assistant/home-assistant/pull/7449 -[#7451]: https://github.com/home-assistant/home-assistant/pull/7451 -[#7452]: https://github.com/home-assistant/home-assistant/pull/7452 -[#7454]: https://github.com/home-assistant/home-assistant/pull/7454 -[#7456]: https://github.com/home-assistant/home-assistant/pull/7456 -[#7468]: https://github.com/home-assistant/home-assistant/pull/7468 -[#7469]: https://github.com/home-assistant/home-assistant/pull/7469 -[#7471]: https://github.com/home-assistant/home-assistant/pull/7471 -[#7472]: https://github.com/home-assistant/home-assistant/pull/7472 -[#7474]: https://github.com/home-assistant/home-assistant/pull/7474 -[#7476]: https://github.com/home-assistant/home-assistant/pull/7476 -[#7479]: https://github.com/home-assistant/home-assistant/pull/7479 -[#7485]: https://github.com/home-assistant/home-assistant/pull/7485 -[#7488]: https://github.com/home-assistant/home-assistant/pull/7488 -[#7490]: https://github.com/home-assistant/home-assistant/pull/7490 -[#7491]: https://github.com/home-assistant/home-assistant/pull/7491 -[#7492]: https://github.com/home-assistant/home-assistant/pull/7492 -[#7494]: https://github.com/home-assistant/home-assistant/pull/7494 -[#7495]: https://github.com/home-assistant/home-assistant/pull/7495 -[#7497]: https://github.com/home-assistant/home-assistant/pull/7497 -[#7499]: https://github.com/home-assistant/home-assistant/pull/7499 -[#7502]: https://github.com/home-assistant/home-assistant/pull/7502 -[#7503]: https://github.com/home-assistant/home-assistant/pull/7503 -[#7505]: https://github.com/home-assistant/home-assistant/pull/7505 -[#7506]: https://github.com/home-assistant/home-assistant/pull/7506 -[#7508]: https://github.com/home-assistant/home-assistant/pull/7508 -[#7509]: https://github.com/home-assistant/home-assistant/pull/7509 -[#7514]: https://github.com/home-assistant/home-assistant/pull/7514 -[#7520]: https://github.com/home-assistant/home-assistant/pull/7520 -[#7521]: https://github.com/home-assistant/home-assistant/pull/7521 -[#7523]: https://github.com/home-assistant/home-assistant/pull/7523 -[#7525]: https://github.com/home-assistant/home-assistant/pull/7525 -[#7526]: https://github.com/home-assistant/home-assistant/pull/7526 -[#7530]: https://github.com/home-assistant/home-assistant/pull/7530 -[#7532]: https://github.com/home-assistant/home-assistant/pull/7532 -[#7533]: https://github.com/home-assistant/home-assistant/pull/7533 -[#7536]: https://github.com/home-assistant/home-assistant/pull/7536 -[#7538]: https://github.com/home-assistant/home-assistant/pull/7538 -[#7541]: https://github.com/home-assistant/home-assistant/pull/7541 -[#7544]: https://github.com/home-assistant/home-assistant/pull/7544 -[#7548]: https://github.com/home-assistant/home-assistant/pull/7548 -[#7549]: https://github.com/home-assistant/home-assistant/pull/7549 -[#7550]: https://github.com/home-assistant/home-assistant/pull/7550 -[#7551]: https://github.com/home-assistant/home-assistant/pull/7551 -[#7552]: https://github.com/home-assistant/home-assistant/pull/7552 -[#7553]: https://github.com/home-assistant/home-assistant/pull/7553 -[#7555]: https://github.com/home-assistant/home-assistant/pull/7555 -[#7557]: https://github.com/home-assistant/home-assistant/pull/7557 -[#7559]: https://github.com/home-assistant/home-assistant/pull/7559 -[#7560]: https://github.com/home-assistant/home-assistant/pull/7560 -[#7561]: https://github.com/home-assistant/home-assistant/pull/7561 -[#7562]: https://github.com/home-assistant/home-assistant/pull/7562 -[#7563]: https://github.com/home-assistant/home-assistant/pull/7563 -[#7564]: https://github.com/home-assistant/home-assistant/pull/7564 -[#7565]: https://github.com/home-assistant/home-assistant/pull/7565 -[#7566]: https://github.com/home-assistant/home-assistant/pull/7566 -[#7569]: https://github.com/home-assistant/home-assistant/pull/7569 -[#7570]: https://github.com/home-assistant/home-assistant/pull/7570 -[#7571]: https://github.com/home-assistant/home-assistant/pull/7571 -[#7573]: https://github.com/home-assistant/home-assistant/pull/7573 -[#7574]: https://github.com/home-assistant/home-assistant/pull/7574 -[#7576]: https://github.com/home-assistant/home-assistant/pull/7576 -[#7581]: https://github.com/home-assistant/home-assistant/pull/7581 -[#7584]: https://github.com/home-assistant/home-assistant/pull/7584 -[#7587]: https://github.com/home-assistant/home-assistant/pull/7587 -[#7589]: https://github.com/home-assistant/home-assistant/pull/7589 -[#7590]: https://github.com/home-assistant/home-assistant/pull/7590 -[#7591]: https://github.com/home-assistant/home-assistant/pull/7591 -[#7593]: https://github.com/home-assistant/home-assistant/pull/7593 -[#7596]: https://github.com/home-assistant/home-assistant/pull/7596 -[#7598]: https://github.com/home-assistant/home-assistant/pull/7598 -[#7603]: https://github.com/home-assistant/home-assistant/pull/7603 -[#7612]: https://github.com/home-assistant/home-assistant/pull/7612 -[#7613]: https://github.com/home-assistant/home-assistant/pull/7613 -[#7615]: https://github.com/home-assistant/home-assistant/pull/7615 -[#7621]: https://github.com/home-assistant/home-assistant/pull/7621 -[#7622]: https://github.com/home-assistant/home-assistant/pull/7622 -[#7623]: https://github.com/home-assistant/home-assistant/pull/7623 -[#7624]: https://github.com/home-assistant/home-assistant/pull/7624 -[#7626]: https://github.com/home-assistant/home-assistant/pull/7626 -[#7629]: https://github.com/home-assistant/home-assistant/pull/7629 -[#7630]: https://github.com/home-assistant/home-assistant/pull/7630 -[#7632]: https://github.com/home-assistant/home-assistant/pull/7632 -[#7638]: https://github.com/home-assistant/home-assistant/pull/7638 -[#7640]: https://github.com/home-assistant/home-assistant/pull/7640 -[#7647]: https://github.com/home-assistant/home-assistant/pull/7647 -[@JshWright]: https://github.com/JshWright -[@Juggels]: https://github.com/Juggels -[@Kane610]: https://github.com/Kane610 -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@abmantis]: https://github.com/abmantis -[@aequitas]: https://github.com/aequitas -[@amelchio]: https://github.com/amelchio -[@andersonshatch]: https://github.com/andersonshatch -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@azogue]: https://github.com/azogue -[@balloob]: https://github.com/balloob -[@basschipper]: https://github.com/basschipper -[@bestlibre]: https://github.com/bestlibre -[@cnrd]: https://github.com/cnrd -[@commento]: https://github.com/commento -[@corneyl]: https://github.com/corneyl -[@cribbstechnologies]: https://github.com/cribbstechnologies -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@fabaff]: https://github.com/fabaff -[@finish06]: https://github.com/finish06 -[@florincosta]: https://github.com/florincosta -[@frog32]: https://github.com/frog32 -[@fronzbot]: https://github.com/fronzbot -[@gurumitts]: https://github.com/gurumitts -[@imrehg]: https://github.com/imrehg -[@jhemzal]: https://github.com/jhemzal -[@jminardi]: https://github.com/jminardi -[@jumpkick]: https://github.com/jumpkick -[@mezz64]: https://github.com/mezz64 -[@mnoorenberghe]: https://github.com/mnoorenberghe -[@nunofgs]: https://github.com/nunofgs -[@olekenneth]: https://github.com/olekenneth -[@pavoni]: https://github.com/pavoni -[@perosb]: https://github.com/perosb -[@pezinek]: https://github.com/pezinek -[@pschmitt]: https://github.com/pschmitt -[@robbiet480]: https://github.com/robbiet480 -[@scarface-4711]: https://github.com/scarface-4711 -[@stu-gott]: https://github.com/stu-gott -[@tboyce021]: https://github.com/tboyce021 -[@tsvi]: https://github.com/tsvi -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[alexa docs]: /components/alexa/ -[axis docs]: /components/axis/ -[config.automation docs]: /docs/automation/editor/ -[automation.event docs]: /docs/configuration/events/ -[automation.state docs]: /docs/configuration/state_object/ -[binary_sensor.mystrom docs]: /components/binary_sensor.mystrom/ -[binary_sensor.raspihats docs]: /components/binary_sensor.raspihats/ -[binary_sensor.rpi_pfio docs]: /components/binary_sensor.rpi_pfio/ -[blink docs]: /components/blink/ -[camera.__init__ docs]: /components/camera.__init__/ -[camera.uvc docs]: /components/camera.uvc/ -[camera.zoneminder docs]: /components/camera.zoneminder/ -[climate.sensibo docs]: /components/climate.sensibo/ -[config.__init__ docs]: /components/config.__init__/ -[configurator docs]: /components/configurator/ -[cover.lutron_caseta docs]: /components/cover.lutron_caseta/ -[datadog docs]: /components/datadog/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.linksys_ap docs]: /components/device_tracker.linksys_ap/ -[device_tracker.unifi docs]: /components/device_tracker.unifi/ -[dweet docs]: /components/dweet/ -[eight_sleep docs]: /components/eight_sleep/ -[homematic docs]: /components/homematic/ -[image_processing.__init__ docs]: /components/image_processing.__init__/ -[image_processing.demo docs]: /components/image_processing.demo/ -[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[image_processing.microsoft_face_detect docs]: /components/image_processing.microsoft_face_detect/ -[image_processing.microsoft_face_identify docs]: /components/image_processing.microsoft_face_identify/ -[image_processing.openalpr_cloud docs]: /components/image_processing.openalpr_cloud/ -[image_processing.openalpr_local docs]: /components/image_processing.openalpr_local/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[image_processing.seven_segments docs]: /components/image_processing.seven_segments/ -[kira docs]: /components/kira/ -[light.__init__ docs]: /components/light.__init__/ -[light.blinksticklight docs]: /components/light.blinksticklight/ -[light.enocean docs]: /components/light.enocean/ -[light.flux_led docs]: /components/light.flux_led/ -[light.insteon_local docs]: /components/light.insteon_local/ -[light.insteon_plm docs]: /components/light.insteon_plm/ -[light.isy994 docs]: /components/light.isy994/ -[light.lifx docs]: /components/light.lifx/ -[light.limitlessled docs]: /components/light.limitlessled/ -[light.mystrom docs]: /components/light.mystrom/ -[light.osramlightify docs]: /components/light.osramlightify/ -[light.tradfri docs]: /components/light.tradfri/ -[logbook docs]: /components/logbook/ -[lutron_caseta docs]: /components/lutron_caseta/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.kodi docs]: /components/media_player.kodi/ -[media_player.onkyo docs]: /components/media_player.onkyo/ -[media_player.roku docs]: /components/media_player.roku/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.spotify docs]: /components/media_player.spotify/ -[microsoft_face docs]: /components/microsoft_face/ -[notify.html5 docs]: /components/notify.html5/ -[notify.sendgrid docs]: /components/notify.sendgrid/ -[notify.smtp docs]: /components/notify.smtp/ -[notify.telegram docs]: /components/notify.telegram/ -[plant docs]: /components/plant/ -[raspihats docs]: /components/raspihats/ -[remote.kira docs]: /components/remote.kira/ -[rflink docs]: /components/rflink/ -[rpi_pfio docs]: /components/rpi_pfio/ -[sensor.blink docs]: /components/sensor.blink/ -[sensor.dweet docs]: /components/sensor.dweet/ -[sensor.envirophat docs]: /components/sensor.envirophat/ -[sensor.file docs]: /components/sensor.file/ -[sensor.influxdb docs]: /components/sensor.influxdb/ -[sensor.kira docs]: /components/sensor.kira/ -[sensor.miflora docs]: /components/sensor.miflora/ -[sensor.modem_callerid docs]: /components/sensor.modem_callerid/ -[sensor.nzbget docs]: /components/sensor.nzbget/ -[sensor.scrape docs]: /components/sensor.scrape/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sun docs]: /components/sun/ -[switch.rpi_pfio docs]: /components/switch.rpi_pfio/ -[telegram_bot docs]: /components/telegram_bot/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[telegram_bot.services.yaml docs]: /components/telegram_bot.services.yaml/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[tradfri docs]: /components/tradfri/ -[vera docs]: /components/vera/ -[websocket_api docs]: /components/websocket_api/ -[zwave docs]: /components/zwave/ -[zwave.api docs]: /components/zwave.api/ -[forum]: https://community.home-assistant.io/ -[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 -[#7689]: https://github.com/home-assistant/home-assistant/pull/7689 -[#7714]: https://github.com/home-assistant/home-assistant/pull/7714 -[@cgtobi]: https://github.com/cgtobi -[@tobygray]: https://github.com/tobygray -[device_tracker.ubus docs]: /components/device_tracker.ubus/ -[hassio docs]: /components/hassio/ -[media_player.volumio docs]: /components/media_player.volumio/ -[telegram_bot.__init__ docs]: /components/telegram_bot.__init__/ -[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-02-home-assistant-podcast-1.markdown b/source/_posts/2017-06-02-home-assistant-podcast-1.markdown deleted file mode 100644 index 68e4137c8d..0000000000 --- a/source/_posts/2017-06-02-home-assistant-podcast-1.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: post -title: "Home Assistant Podcast 1" -description: "Home Assistant Podcast 1 – Introduction and 0.45" -date: 2017-06-02 06:00:00 +0000 -date_formatted: "June 02, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Media -og_image: /images/hasspodcast.jpg ---- - -The first podcast by [Home Assistant Podcast](https://hasspodcast.io) contains an introduction and covers the [0.45](/blog/2017/05/20/automation-editor-zwave-panel-ocr/) release of Home Assistant. - -- Listen online: [https://hasspodcast.io/ha001/](https://hasspodcast.io/ha001/) -- Download: [https://hasspodcast.io/podcast-download/13/ha001.mp3](https://hasspodcast.io/podcast-download/13/ha001.mp3) - diff --git a/source/_posts/2017-06-04-release-46.markdown b/source/_posts/2017-06-04-release-46.markdown deleted file mode 100644 index f514f61f9b..0000000000 --- a/source/_posts/2017-06-04-release-46.markdown +++ /dev/null @@ -1,399 +0,0 @@ ---- -layout: post -title: "0.46: Rachio sprinklers, Netgear Arlo cameras and Z-Wave fans" -description: "Another great new release with a major focus on bugfixes." -date: 2017-06-04 01:04:05 +0000 -date_formatted: "June 4, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -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. - -## {% linkable_title New platforms %} - -- Template light ([@cribbstechnologies] - [#7657]) ([light.template docs]) (new-platform) -- Support for GE Zwave fan controller ([@armills] - [#7767]) ([zwave docs]) ([fan.zwave docs]) (new-platform) -- Rachio (Sprinklers) ([@Klikini] - [#7600]) ([switch.rachio docs]) (new-platform) -- Introduced support to Netgear Arlo Cameras ([@tchellomello] - [#7826]) ([arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs]) (new-platform) - -## {% linkable_title Release 0.46.1 - June 9 %} - -- Support for renaming ZWave values ([@armills] - [#7780]) ([zwave docs]) -- Dsmr5 revert ([@aequitas] - [#7900]) ([sensor.dsmr docs]) -- Fix typos in Wunderground component (Percipitation -> Precipitation) ([@mje-nz] - [#7901]) ([sensor.wunderground docs]) -- Mqtt cover: Making command topic optional and add ability to set up/down position including ability to template the value ([@cribbstechnologies] - [#7841]) ([cover.mqtt docs]) -- Media Player - OpenHome: Fixed metadata issue ([@bazwilliams] - [#7932]) ([media_player.openhome docs]) -- Sensor - MetOffice: Fix last updated date ([@cyberjacob] - [#7965]) ([sensor.metoffice docs]) -- Prevent Roku doing I/O in event loop ([@balloob] - [#7969]) ([media_player.roku docs]) - -## {% linkable_title Breaking changes %} - -- The USPS sensor entity names have changed as there are now two. One for packages and one for mail. Config will now also use `scan_interval` instead of `update_interval` ([@happyleavesaoc] - [#7655]) ([sensor.usps docs]) (breaking change) -- Automation state trigger: From/to checks will now ignore state changes that are just attribute changess ([@amelchio] - [#7651]) ([automation.state docs]) (breaking change) -- Redesign monitored variables for hp_ilo sensor. `monitored_variables` is now a list of `name` and `sensor_type` values ([@Juggels] - [#7534]) ([sensor.hp_ilo docs]) (breaking change) - -```yaml -sensor: - - platform: hp_ilo - host: IP_ADDRESS or HOSTNAME - username: USERNAME - password: PASSWORD - monitored_variables: - - name: SENSOR NAME - sensor_type: SENSOR TYPE -``` - -- Automation - time: The `after` keyword for time triggers (not conditions) has been deprecated in favor of the `at` keyword. This resembles better what it does (old one still works, gives a warning) ([@armills] - [#7846]) ([automation.time docs]) (breaking change) -- Automation - numeric_state: `above` and `below` will no longer trigger if it is equal. ([@armills] - [#7857]) (breaking change) -- Broadlink switches: Entity ids will change for switches that don't have a default name set. In this case the object_id is now used. ([@abmantis] - [#7845]) ([switch.broadlink docs]) (breaking change) -- 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][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 All changes %} - -- Align with OpenALPR platform for naming conf variables ([@fabaff] - [#7650]) ([image_processing.seven_segments docs]) -- Added support to Amcrest camera to feed using RTSP via ffmpeg ([@tchellomello] - [#7646]) ([camera.amcrest docs]) ([sensor.amcrest docs]) -- bump fedex version ([@happyleavesaoc] - [#7653]) ([sensor.fedex docs]) -- bump ups version ([@happyleavesaoc] - [#7654]) -- update usps ([@happyleavesaoc] - [#7655]) ([sensor.usps docs]) (breaking change) -- Final tweaks for Zwave panel ([@turbokongen] - [#7652]) ([zwave docs]) -- Add network_key as a config option ([@robbiet480] - [#7637]) ([zwave docs]) -- Bugfix #7586 ([@turbokongen] - [#7661]) ([lock.zwave docs]) -- Fix tests ([@balloob] - [#7659]) -- Change line endings to LN ([@fabaff] - [#7660]) ([calendar.demo docs]) ([calendar.google docs]) ([camera.synology docs]) ([climate.tado docs]) ([remote.harmony docs]) ([sensor.synologydsm docs]) -- Point pylutron to pypi ([@thecynic] - [#7664]) ([lutron docs]) -- Upgrade Openhome library ([@bazwilliams] - [#7671]) ([media_player.openhome docs]) -- Ignore attribute changes in automation trigger from/to ([@amelchio] - [#7651]) ([automation.state docs]) (breaking change) -- Switch pymodbus to pypi ([@andrey-git] - [#7677]) ([modbus docs]) -- zoneminder: fix incorrect use of logging.exception. ([@tobygray] - [#7675]) ([zoneminder docs]) -- Zwave: Apply refresh_node workaround on 1st instance only ([@andrey-git] - [#7579]) ([zwave docs]) -- Guard against new and removed state change events ([@balloob] - [#7687]) ([automation.state docs]) -- ZWave: Add reset service to meters ([@turbokongen] - [#7676]) ([zwave docs]) -- Remove defunct INSTALL_OPENZWAVE from Dockerfile ([@armills] - [#7697]) -- Fix telegram chats ([@azogue] - [#7689]) ([notify.telegram docs]) -- Fix playback control of web streams ([@cgtobi] - [#7683]) ([media_player.volumio docs]) -- Sort entities in default groups by name ([@amelchio] - [#7681]) -- Continue tracking device over dhcp lease table if wireless adapter not installed ([@LvivEchoes] - [#7690]) ([device_tracker.mikrotik docs]) -- device_tracker.ubus: Handle empty results ([@tobygray] - [#7673]) ([device_tracker.ubus docs]) -- Bump pyEight version ([@mezz64] - [#7701]) ([eight_sleep docs]) -- Upgrade python-telegram-bot to 6.0.1 ([@fabaff] - [#7704]) -- Make 'sender' as requirement for the config (fixes #7698) ([@fabaff] - [#7706]) ([notify.smtp docs]) -- Allow fetching hass.io panel without auth ([@balloob] - [#7714]) ([hassio docs]) -- update apcacccess used in apcupsd to 0.0.10, which fixes random file drop from apcaccess ([@infamy] - [#7722]) ([apcupsd docs]) -- Constrain requests to a version ([@balloob] - [#7725]) -- Asuswrt continuous ssh ([@aronsky] - [#7728]) -- Ensure https base_url in telegram bot ([@bzillins] - [#7726]) ([telegram_bot.webhooks docs]) -- Prevent the random template filter from caching its output. Fixes #5678 ([@antsar] - [#7716]) -- Don't initialize mqtt components which have already been discovered ([@nordeep] - [#7625]) ([mqtt.discovery docs]) -- LIFX: disable color features for white-only bulbs ([@amelchio] - [#7742]) ([light.lifx docs]) -- Don't block startup more than 60 seconds while waiting for components. ([@antsar] - [#7739]) -- Always return rgb color of bulbs ([@w1ll1am23] - [#7743]) ([light.wink docs]) -- Redesign monitored variables for hp_ilo sensor ([@Juggels] - [#7534]) ([sensor.hp_ilo docs]) (breaking change) -- Fix time_date sensor to update at predictable intervals ([@stu-gott] - [#7644]) ([sensor.time_date docs]) -- Added new commands and functionality to the harmony remote component. ([@everix1992] - [#7113]) ([remote docs]) ([remote.harmony docs]) ([remote.services.yaml docs]) -- Template light ([@cribbstechnologies] - [#7657]) ([light.template docs]) (new-platform) -- Exclude filter for event types ([@amigian74] - [#7627]) -- Change setup script to use pip install instead of setup.py develop ([@hoh] - [#7756]) -- Add icons to device tracker. ([@antsar] - [#7759]) -- Rename of the zwave hass.data constants ([@armills] - [#7768]) ([zwave docs]) ([cover.zwave docs]) ([lock.zwave docs]) -- Get rid of mock http component app ([@balloob] - [#7775]) -- Remove usage of event_loop fixture ([@balloob] - [#7776]) -- assertEquals is deprecated ([@balloob] - [#7777]) -- Support for GE Zwave fan controller ([@armills] - [#7767]) ([zwave docs]) ([fan.zwave docs]) (new-platform) -- Replace executor with async_add_job ([@balloob] - [#7658]) -- Fix Telegram Bot send file to multiple targets, snapshots of HA cameras, variable templating, digest auth ([@azogue] - [#7771]) -- Fix more deprecation warnings ([@balloob] - [#7778]) -- Powerview to async ([@sander76] - [#7682]) ([scene.hunterdouglas_powerview docs]) -- Fix home/stay in concord232 ([@CTLS] - [#7789]) ([alarm_control_panel.concord232 docs]) -- Add Marantz SSDP discovery / Detect error string in AppCommand.xml body ([@scarface-4711] - [#7779]) ([media_player.denonavr docs]) -- Upgrade Sphinx to 1.6.2 ([@fabaff] - [#7805]) -- Upgrade slacker to 0.9.50 ([@fabaff] - [#7797]) ([notify.slack docs]) -- Bump pyenvisalink to version 2.1 ([@Cinntax] - [#7803]) ([envisalink docs]) -- Upgrade pysnmp to 4.3.6 ([@fabaff] - [#7806]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) -- Rachio (Sprinklers) ([@Klikini] - [#7600]) ([switch.rachio docs]) (new-platform) -- Rest notify data ([@Teagan42] - [#7757]) ([notify.rest docs]) -- Added handling of an AssertionError from pxssh failed login ([@aronsky] - [#7750]) ([device_tracker.asuswrt docs]) -- Upgrade sqlalchemy to 1.1.10 ([@fabaff] - [#7807]) -- Upgrade mypy to 0.511 ([@fabaff] - [#7809]) -- Allow configuring DSMR5 protocol. ([@aequitas] - [#7535]) ([sensor.dsmr docs]) -- Telegram send image: fix mimetype detection ([@azogue] - [#7802]) -- Bump aiohttp to 2.1.0 ([@mezz64] - [#7825]) -- Cleanup telegram / Add url to webhook ([@pvizeli] - [#7824]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) (breaking change) -- Upgrade pysnmp to 4.3.7 ([@fabaff] - [#7828]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) -- Flux led fix ([@danielhiversen] - [#7829]) ([light.flux_led docs]) -- update snapcast media player ([@happyleavesaoc] - [#7079]) ([media_player.services.yaml docs]) ([media_player.snapcast docs]) -- Update docstrings and log messages ([@fabaff] - [#7709]) -- Upgrade PyMVGLive to 1.1.4 ([@fabaff] - [#7832]) ([sensor.mvglive docs]) -- Added persistent error message if cover.myq fails to load ([@tchellomello] - [#7700]) ([cover.myq docs]) -- Add initial benchmark framework ([@balloob] - [#7827]) -- Downgrade Docker to Python 3.5 to solve Segmentation Faults ([@philhawthorne] - [#7799]) -- Introduced support to Netgear Arlo Cameras ([@tchellomello] - [#7826]) ([arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs]) (new-platform) -- Allow 'base_url' (fixes #7784) ([@fabaff] - [#7796]) ([upnp docs]) -- Expose the node name on the zwave node entity ([@armills] - [#7787]) ([zwave docs]) -- Bumped pyhomematic version ([@danielperna84] - [#7861]) ([homematic docs]) -- Rename time trigger 'after' to 'at' ([@armills] - [#7846]) ([automation.time docs]) (breaking change) -- 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]) -- 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]) -- Start of migration framework, to allow moving of files in the config … ([@infamy] - [#7740]) ([ios docs]) ([notify.ios docs]) (breaking change) -- Spotify aliases ([@Teagan42] - [#7702]) ([media_player.spotify docs]) -- Query in InfluxDB sensor is now templatable ([@titilambert] - [#7634]) ([sensor.influxdb docs]) -- fix for https://github.com/home-assistant/home-assistant/issues/7019 ([@molobrakos] - [#7618]) ([tellduslive docs]) -- Check if media commands are actually applicable ([@Juggels] - [#7595]) ([media_player.sonos docs]) -- Quickfix Bug #7384 ([@DavidLP] - [#7582]) ([media_player.spotify docs]) -- Align switch group handling with light. ([@aequitas] - [#7577]) ([switch.rflink docs]) -- Update netdisco ([@balloob] - [#7865]) -- Fix telegram_bot ([@balloob] - [#7877]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) -- [light.lifx] Update aiolifx ([@amelchio] - [#7882]) ([light.lifx docs]) -- Fix MQTT camera test ([@balloob] - [#7878]) - -[#7079]: https://github.com/home-assistant/home-assistant/pull/7079 -[#7113]: https://github.com/home-assistant/home-assistant/pull/7113 -[#7534]: https://github.com/home-assistant/home-assistant/pull/7534 -[#7535]: https://github.com/home-assistant/home-assistant/pull/7535 -[#7577]: https://github.com/home-assistant/home-assistant/pull/7577 -[#7579]: https://github.com/home-assistant/home-assistant/pull/7579 -[#7582]: https://github.com/home-assistant/home-assistant/pull/7582 -[#7595]: https://github.com/home-assistant/home-assistant/pull/7595 -[#7600]: https://github.com/home-assistant/home-assistant/pull/7600 -[#7618]: https://github.com/home-assistant/home-assistant/pull/7618 -[#7625]: https://github.com/home-assistant/home-assistant/pull/7625 -[#7627]: https://github.com/home-assistant/home-assistant/pull/7627 -[#7634]: https://github.com/home-assistant/home-assistant/pull/7634 -[#7637]: https://github.com/home-assistant/home-assistant/pull/7637 -[#7644]: https://github.com/home-assistant/home-assistant/pull/7644 -[#7646]: https://github.com/home-assistant/home-assistant/pull/7646 -[#7650]: https://github.com/home-assistant/home-assistant/pull/7650 -[#7651]: https://github.com/home-assistant/home-assistant/pull/7651 -[#7652]: https://github.com/home-assistant/home-assistant/pull/7652 -[#7653]: https://github.com/home-assistant/home-assistant/pull/7653 -[#7654]: https://github.com/home-assistant/home-assistant/pull/7654 -[#7655]: https://github.com/home-assistant/home-assistant/pull/7655 -[#7657]: https://github.com/home-assistant/home-assistant/pull/7657 -[#7658]: https://github.com/home-assistant/home-assistant/pull/7658 -[#7659]: https://github.com/home-assistant/home-assistant/pull/7659 -[#7660]: https://github.com/home-assistant/home-assistant/pull/7660 -[#7661]: https://github.com/home-assistant/home-assistant/pull/7661 -[#7664]: https://github.com/home-assistant/home-assistant/pull/7664 -[#7671]: https://github.com/home-assistant/home-assistant/pull/7671 -[#7673]: https://github.com/home-assistant/home-assistant/pull/7673 -[#7675]: https://github.com/home-assistant/home-assistant/pull/7675 -[#7676]: https://github.com/home-assistant/home-assistant/pull/7676 -[#7677]: https://github.com/home-assistant/home-assistant/pull/7677 -[#7681]: https://github.com/home-assistant/home-assistant/pull/7681 -[#7682]: https://github.com/home-assistant/home-assistant/pull/7682 -[#7683]: https://github.com/home-assistant/home-assistant/pull/7683 -[#7687]: https://github.com/home-assistant/home-assistant/pull/7687 -[#7689]: https://github.com/home-assistant/home-assistant/pull/7689 -[#7690]: https://github.com/home-assistant/home-assistant/pull/7690 -[#7697]: https://github.com/home-assistant/home-assistant/pull/7697 -[#7700]: https://github.com/home-assistant/home-assistant/pull/7700 -[#7701]: https://github.com/home-assistant/home-assistant/pull/7701 -[#7702]: https://github.com/home-assistant/home-assistant/pull/7702 -[#7704]: https://github.com/home-assistant/home-assistant/pull/7704 -[#7706]: https://github.com/home-assistant/home-assistant/pull/7706 -[#7709]: https://github.com/home-assistant/home-assistant/pull/7709 -[#7714]: https://github.com/home-assistant/home-assistant/pull/7714 -[#7716]: https://github.com/home-assistant/home-assistant/pull/7716 -[#7722]: https://github.com/home-assistant/home-assistant/pull/7722 -[#7725]: https://github.com/home-assistant/home-assistant/pull/7725 -[#7726]: https://github.com/home-assistant/home-assistant/pull/7726 -[#7728]: https://github.com/home-assistant/home-assistant/pull/7728 -[#7739]: https://github.com/home-assistant/home-assistant/pull/7739 -[#7740]: https://github.com/home-assistant/home-assistant/pull/7740 -[#7742]: https://github.com/home-assistant/home-assistant/pull/7742 -[#7743]: https://github.com/home-assistant/home-assistant/pull/7743 -[#7750]: https://github.com/home-assistant/home-assistant/pull/7750 -[#7756]: https://github.com/home-assistant/home-assistant/pull/7756 -[#7757]: https://github.com/home-assistant/home-assistant/pull/7757 -[#7759]: https://github.com/home-assistant/home-assistant/pull/7759 -[#7765]: https://github.com/home-assistant/home-assistant/pull/7765 -[#7767]: https://github.com/home-assistant/home-assistant/pull/7767 -[#7768]: https://github.com/home-assistant/home-assistant/pull/7768 -[#7771]: https://github.com/home-assistant/home-assistant/pull/7771 -[#7775]: https://github.com/home-assistant/home-assistant/pull/7775 -[#7776]: https://github.com/home-assistant/home-assistant/pull/7776 -[#7777]: https://github.com/home-assistant/home-assistant/pull/7777 -[#7778]: https://github.com/home-assistant/home-assistant/pull/7778 -[#7779]: https://github.com/home-assistant/home-assistant/pull/7779 -[#7787]: https://github.com/home-assistant/home-assistant/pull/7787 -[#7789]: https://github.com/home-assistant/home-assistant/pull/7789 -[#7796]: https://github.com/home-assistant/home-assistant/pull/7796 -[#7797]: https://github.com/home-assistant/home-assistant/pull/7797 -[#7799]: https://github.com/home-assistant/home-assistant/pull/7799 -[#7802]: https://github.com/home-assistant/home-assistant/pull/7802 -[#7803]: https://github.com/home-assistant/home-assistant/pull/7803 -[#7805]: https://github.com/home-assistant/home-assistant/pull/7805 -[#7806]: https://github.com/home-assistant/home-assistant/pull/7806 -[#7807]: https://github.com/home-assistant/home-assistant/pull/7807 -[#7808]: https://github.com/home-assistant/home-assistant/pull/7808 -[#7809]: https://github.com/home-assistant/home-assistant/pull/7809 -[#7824]: https://github.com/home-assistant/home-assistant/pull/7824 -[#7825]: https://github.com/home-assistant/home-assistant/pull/7825 -[#7826]: https://github.com/home-assistant/home-assistant/pull/7826 -[#7827]: https://github.com/home-assistant/home-assistant/pull/7827 -[#7828]: https://github.com/home-assistant/home-assistant/pull/7828 -[#7829]: https://github.com/home-assistant/home-assistant/pull/7829 -[#7832]: https://github.com/home-assistant/home-assistant/pull/7832 -[#7845]: https://github.com/home-assistant/home-assistant/pull/7845 -[#7846]: https://github.com/home-assistant/home-assistant/pull/7846 -[#7848]: https://github.com/home-assistant/home-assistant/pull/7848 -[#7857]: https://github.com/home-assistant/home-assistant/pull/7857 -[#7858]: https://github.com/home-assistant/home-assistant/pull/7858 -[#7860]: https://github.com/home-assistant/home-assistant/pull/7860 -[#7861]: https://github.com/home-assistant/home-assistant/pull/7861 -[#7865]: https://github.com/home-assistant/home-assistant/pull/7865 -[#7877]: https://github.com/home-assistant/home-assistant/pull/7877 -[#7878]: https://github.com/home-assistant/home-assistant/pull/7878 -[#7882]: https://github.com/home-assistant/home-assistant/pull/7882 -[@CTLS]: https://github.com/CTLS -[@Cinntax]: https://github.com/Cinntax -[@DavidLP]: https://github.com/DavidLP -[@Juggels]: https://github.com/Juggels -[@Klikini]: https://github.com/Klikini -[@LvivEchoes]: https://github.com/LvivEchoes -[@Teagan42]: https://github.com/Teagan42 -[@abmantis]: https://github.com/abmantis -[@aequitas]: https://github.com/aequitas -[@amelchio]: https://github.com/amelchio -[@amigian74]: https://github.com/amigian74 -[@andrey-git]: https://github.com/andrey-git -[@antsar]: https://github.com/antsar -[@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 -[@bzillins]: https://github.com/bzillins -[@cgtobi]: https://github.com/cgtobi -[@cribbstechnologies]: https://github.com/cribbstechnologies -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@everix1992]: https://github.com/everix1992 -[@fabaff]: https://github.com/fabaff -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@hoh]: https://github.com/hoh -[@infamy]: https://github.com/infamy -[@mezz64]: https://github.com/mezz64 -[@molobrakos]: https://github.com/molobrakos -[@nordeep]: https://github.com/nordeep -[@philhawthorne]: https://github.com/philhawthorne -[@pvizeli]: https://github.com/pvizeli -[@robbiet480]: https://github.com/robbiet480 -[@sander76]: https://github.com/sander76 -[@scarface-4711]: https://github.com/scarface-4711 -[@stu-gott]: https://github.com/stu-gott -[@tchellomello]: https://github.com/tchellomello -[@thecynic]: https://github.com/thecynic -[@titilambert]: https://github.com/titilambert -[@tobygray]: https://github.com/tobygray -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[alarm_control_panel.concord232 docs]: /components/alarm_control_panel.concord232/ -[apcupsd docs]: /components/apcupsd/ -[arlo docs]: /components/arlo/ -[automation.state docs]: /docs/automation/trigger/#state-trigger -[automation.time docs]: /docs/automation/trigger/#time-trigger -[calendar.demo docs]: /components/calendar.demo/ -[calendar.google docs]: /components/calendar.google/ -[camera.amcrest docs]: /components/camera.amcrest/ -[camera.arlo docs]: /components/camera.arlo/ -[camera.synology docs]: /components/camera.synology/ -[climate.tado docs]: /components/climate.tado/ -[cover.myq docs]: /components/cover.myq/ -[cover.zwave docs]: /components/cover.zwave/ -[device_tracker.__init__ docs]: /components/device_tracker.__init__/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.mikrotik docs]: /components/device_tracker.mikrotik/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[device_tracker.ubus docs]: /components/device_tracker.ubus/ -[eight_sleep docs]: /components/eight_sleep/ -[envisalink docs]: /components/envisalink/ -[fan.zwave docs]: /components/fan.zwave/ -[hassio docs]: /components/hassio/ -[homematic docs]: /components/homematic/ -[image_processing.seven_segments docs]: /components/image_processing.seven_segments/ -[insteon_local docs]: /components/insteon_local/ -[ios docs]: /components/ios/ -[light.__init__ docs]: /components/light.__init__/ -[light.flux_led docs]: /components/light.flux_led/ -[light.lifx docs]: /components/light.lifx/ -[light.template docs]: /components/light.template/ -[light.wink docs]: /components/light.wink/ -[lock.zwave docs]: /components/lock.zwave/ -[lutron docs]: /components/lutron/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.openhome docs]: /components/media_player.openhome/ -[media_player.services.yaml docs]: /components/media_player.services.yaml/ -[media_player.snapcast docs]: /components/media_player.snapcast/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.volumio docs]: /components/media_player.volumio/ -[modbus docs]: /components/modbus/ -[mqtt.discovery docs]: /components/mqtt.discovery/ -[notify.ios docs]: /components/notify.ios/ -[notify.rest docs]: /components/notify.rest/ -[notify.slack docs]: /components/notify.slack/ -[notify.smtp docs]: /components/notify.smtp/ -[notify.telegram docs]: /components/notify.telegram/ -[recorder.__init__ docs]: /components/recorder.__init__/ -[remote docs]: /components/remote/ -[remote.harmony docs]: /components/remote.harmony/ -[remote.services.yaml docs]: /components/remote.services.yaml/ -[scene.hunterdouglas_powerview docs]: /components/scene.hunterdouglas_powerview/ -[sensor.amcrest docs]: /components/sensor.amcrest/ -[sensor.arlo docs]: /components/sensor.arlo/ -[sensor.dsmr docs]: /components/sensor.dsmr/ -[sensor.fedex docs]: /components/sensor.fedex/ -[sensor.history_stats docs]: /components/sensor.history_stats/ -[sensor.hp_ilo docs]: /components/sensor.hp_ilo/ -[sensor.influxdb docs]: /components/sensor.influxdb/ -[sensor.mvglive docs]: /components/sensor.mvglive/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.synologydsm docs]: /components/sensor.synologydsm/ -[sensor.time_date docs]: /components/sensor.time_date/ -[sensor.usps docs]: /components/sensor.usps/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.rachio docs]: /components/switch.rachio/ -[switch.rflink docs]: /components/switch.rflink/ -[telegram_bot.__init__ docs]: /components/telegram_bot.__init__/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[tellduslive docs]: /components/tellduslive/ -[upnp docs]: /components/upnp/ -[zoneminder docs]: /components/zoneminder/ -[zwave docs]: /components/zwave/ -[forum]: https://community.home-assistant.io/ -[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 -[#7900]: https://github.com/home-assistant/home-assistant/pull/7900 -[#7901]: https://github.com/home-assistant/home-assistant/pull/7901 -[#7932]: https://github.com/home-assistant/home-assistant/pull/7932 -[#7965]: https://github.com/home-assistant/home-assistant/pull/7965 -[#7969]: https://github.com/home-assistant/home-assistant/pull/7969 -[@cyberjacob]: https://github.com/cyberjacob -[@mje-nz]: https://github.com/mje-nz -[cover.mqtt docs]: /components/cover.mqtt/ -[sensor.metoffice docs]: /components/sensor.metoffice/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[media_player.roku docs]: /components/media_player.roku/ -[discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-10-interview-with-jupiter-broadcasting.markdown b/source/_posts/2017-06-10-interview-with-jupiter-broadcasting.markdown deleted file mode 100644 index 186815ff11..0000000000 --- a/source/_posts/2017-06-10-interview-with-jupiter-broadcasting.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: post -title: "Linux Action Show special about Home Assistant" -description: "Our founder Paulus Schoutsen is interviewed by Chris Fisher about home automation, Hass.io and the new Home Assistant podcast." -date: 2017-06-10 01:04:05 +0000 -date_formatted: "June 10, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Media -og_image: /images/blog/2017-06-jupiter-broadcasting/social.jpg ---- - -Our founder Paulus Schoutsen is interviewed by Chris Fisher for a Linux Action Show special about home automation, [Hass.io] and the new [Home Assistant podcast]. - -
    - -
    - -[Hass.io]: https://community.home-assistant.io/t/introducing-hass-io/17296/48 -[Home Assistant podcast]: https://hasspodcast.io/ diff --git a/source/_posts/2017-06-15-zwave-entity-ids.markdown b/source/_posts/2017-06-15-zwave-entity-ids.markdown deleted file mode 100644 index 48bb3a80df..0000000000 --- a/source/_posts/2017-06-15-zwave-entity-ids.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -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 deleted file mode 100644 index b91503b06d..0000000000 --- a/source/_posts/2017-06-17-release-47.markdown +++ /dev/null @@ -1,577 +0,0 @@ ---- -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]: /components/alarm_control_panel.spc/ -[binary_sensor.enocean docs]: /components/binary_sensor.enocean/ -[binary_sensor.homematic docs]: /components/binary_sensor.homematic/ -[binary_sensor.spc docs]: /components/binary_sensor.spc/ -[binary_sensor.tapsaff docs]: /components/binary_sensor.tapsaff/ -[calendar.google docs]: /components/calendar.google/ -[climate.flexit docs]: /components/climate.flexit/ -[climate.wink docs]: /components/climate.wink/ -[conversation docs]: /components/conversation/ -[cover.homematic docs]: /components/cover.homematic/ -[cover.mqtt docs]: /components/cover.mqtt/ -[cover.myq docs]: /components/cover.myq/ -[device_tracker.__init__ docs]: /components/device_tracker.__init__/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.ping docs]: /components/device_tracker.ping/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[device_tracker.unifi docs]: /components/device_tracker.unifi/ -[eight_sleep docs]: /components/eight_sleep/ -[fan.__init__ docs]: /components/fan.__init__/ -[fan.demo docs]: /components/fan.demo/ -[fan.zwave docs]: /components/fan.zwave/ -[group docs]: /components/group/ -[homematic docs]: /components/homematic/ -[http docs]: /components/http/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[image_processing.seven_segments docs]: /components/image_processing.seven_segments/ -[influxdb docs]: /components/influxdb/ -[juicenet docs]: /components/juicenet/ -[light.lifx docs]: /components/light.lifx/ -[light.lutron docs]: /components/light.lutron/ -[light.osramlightify docs]: /components/light.osramlightify/ -[light.template docs]: /components/light.template/ -[light.vera docs]: /components/light.vera/ -[light.yeelight docs]: /components/light.yeelight/ -[light.zwave docs]: /components/light.zwave/ -[lock.sesame docs]: /components/lock.sesame/ -[lutron docs]: /components/lutron/ -[mailgun docs]: /components/mailgun/ -[media_player.aquostv docs]: /components/media_player.aquostv/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.firetv docs]: /components/media_player.firetv/ -[media_player.nad docs]: /components/media_player.nad/ -[media_player.nadtcp docs]: /components/media_player.nadtcp/ -[media_player.openhome docs]: /components/media_player.openhome/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.roku docs]: /components/media_player.roku/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[mqtt.__init__ docs]: /components/mqtt.__init__/ -[nest docs]: /components/nest/ -[netatmo docs]: /components/netatmo/ -[notify.html5 docs]: /components/notify.html5/ -[notify.mailgun docs]: /components/notify.mailgun/ -[notify.sendgrid docs]: /components/notify.sendgrid/ -[notify.xmpp docs]: /components/notify.xmpp/ -[opencv docs]: /components/opencv/ -[persistent_notification docs]: /components/persistent_notification/ -[plant docs]: /components/plant/ -[python_script docs]: /components/python_script/ -[sensor.bitcoin docs]: /components/sensor.bitcoin/ -[sensor.blockchain docs]: /components/sensor.blockchain/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.coinmarketcap docs]: /components/sensor.coinmarketcap/ -[sensor.cpuspeed docs]: /components/sensor.cpuspeed/ -[sensor.cups docs]: /components/sensor.cups/ -[sensor.currencylayer docs]: /components/sensor.currencylayer/ -[sensor.dsmr docs]: /components/sensor.dsmr/ -[sensor.dte_energy_bridge docs]: /components/sensor.dte_energy_bridge/ -[sensor.dublin_bus_transport docs]: /components/sensor.dublin_bus_transport/ -[sensor.dweet docs]: /components/sensor.dweet/ -[sensor.ebox docs]: /components/sensor.ebox/ -[sensor.ecobee docs]: /components/sensor.ecobee/ -[sensor.eliqonline docs]: /components/sensor.eliqonline/ -[sensor.etherscan docs]: /components/sensor.etherscan/ -[sensor.fixer docs]: /components/sensor.fixer/ -[sensor.gitter docs]: /components/sensor.gitter/ -[sensor.hddtemp docs]: /components/sensor.hddtemp/ -[sensor.homematic docs]: /components/sensor.homematic/ -[sensor.imap_email_content docs]: /components/sensor.imap_email_content/ -[sensor.juicenet docs]: /components/sensor.juicenet/ -[sensor.metoffice docs]: /components/sensor.metoffice/ -[sensor.mold_indicator docs]: /components/sensor.mold_indicator/ -[sensor.netatmo docs]: /components/sensor.netatmo/ -[sensor.openevse docs]: /components/sensor.openevse/ -[sensor.pi_hole docs]: /components/sensor.pi_hole/ -[sensor.pvoutput docs]: /components/sensor.pvoutput/ -[sensor.radarr docs]: /components/sensor.radarr/ -[sensor.ripple docs]: /components/sensor.ripple/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.statistics docs]: /components/sensor.statistics/ -[sensor.template docs]: /components/sensor.template/ -[sensor.ups docs]: /components/sensor.ups/ -[sensor.usps docs]: /components/sensor.usps/ -[sensor.waqi docs]: /components/sensor.waqi/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sensor.yahoo_finance docs]: /components/sensor.yahoo_finance/ -[sensor.yweather docs]: /components/sensor.yweather/ -[spc docs]: /components/spc/ -[splunk docs]: /components/splunk/ -[switch.homematic docs]: /components/switch.homematic/ -[switch.raspihats docs]: /components/switch.raspihats/ -[switch.rest docs]: /components/switch.rest/ -[switch.template docs]: /components/switch.template/ -[telegram_bot.__init__ docs]: /components/telegram_bot.__init__/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[updater docs]: /components/updater/ -[vera docs]: /components/vera/ -[volvooncall docs]: /components/volvooncall/ -[weather.buienradar docs]: /components/weather.buienradar/ -[zeroconf docs]: /components/zeroconf/ -[zwave docs]: /components/zwave/ -[zwave blog post]: /blog/2017/06/15/zwave-entity-ids/ -[forum]: https://community.home-assistant.io/ -[issue]: https://github.com/home-assistant/home-assistant/issues -[first-commit]: /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]: /components/fan.dyson/ -[remote.itach docs]: /components/remote.itach/ -[sensor.dyson docs]: /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 deleted file mode 100644 index 0b8fe36efe..0000000000 --- a/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -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 deleted file mode 100644 index 3dc0835b55..0000000000 --- a/source/_posts/2017-07-02-release-48.markdown +++ /dev/null @@ -1,538 +0,0 @@ ---- -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]: /components/api/ -[camera.arlo docs]: /components/camera.arlo/ -[mqtt docs]: /components/mqtt/ -[remote.harmony docs]: /components/remote.harmony/ -[sensor.arlo docs]: /components/sensor.arlo/ -[snips docs]: /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 deleted file mode 100644 index f85c83c020..0000000000 --- a/source/_posts/2017-07-03-home-assistant-is-moving-to-discord.markdown +++ /dev/null @@ -1,90 +0,0 @@ ---- -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]: /faq/ -[docs]: /docs/ diff --git a/source/_posts/2017-07-05-hasspodcast-ep-3.markdown b/source/_posts/2017-07-05-hasspodcast-ep-3.markdown deleted file mode 100644 index 6ddb527631..0000000000 --- a/source/_posts/2017-07-05-hasspodcast-ep-3.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -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 deleted file mode 100644 index 09a24ce1f7..0000000000 --- a/source/_posts/2017-07-16-release-49.markdown +++ /dev/null @@ -1,507 +0,0 @@ ---- -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]: /components/alarm_control_panel.totalconnect/ -[amcrest docs]: /components/amcrest/ -[apcupsd docs]: /components/apcupsd/ -[binary_sensor.hikvision docs]: /components/binary_sensor.hikvision/ -[binary_sensor.modbus docs]: /components/binary_sensor.modbus/ -[binary_sensor.octoprint docs]: /components/binary_sensor.octoprint/ -[binary_sensor.pilight docs]: /components/binary_sensor.pilight/ -[binary_sensor.zha docs]: /components/binary_sensor.zha/ -[camera.amcrest docs]: /components/camera.amcrest/ -[camera.arlo docs]: /components/camera.arlo/ -[climate.flexit docs]: /components/climate.flexit/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.radiotherm docs]: /components/climate.radiotherm/ -[climate.tado docs]: /components/climate.tado/ -[cover.template docs]: /components/cover.template/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.linksys_smart docs]: /components/device_tracker.linksys_smart/ -[device_tracker.tplink docs]: /components/device_tracker.tplink/ -[device_tracker.upc_connect docs]: /components/device_tracker.upc_connect/ -[dyson docs]: /components/dyson/ -[fan.dyson docs]: /components/fan.dyson/ -[group docs]: /components/group/ -[hassio docs]: /hassio/ -[homematic docs]: /components/homematic/ -[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[knx docs]: /components/knx/ -[lametric docs]: /components/lametric/ -[light.avion docs]: /components/light.avion/ -[light.decora docs]: /components/light.decora/ -[light.hue docs]: /components/light.hue/ -[light.hyperion docs]: /components/light.hyperion/ -[light.knx docs]: /components/light.knx/ -[light.lifx docs]: /components/light.lifx/ -[light.mystrom docs]: /components/light.mystrom/ -[light.rflink docs]: /components/light.rflink/ -[light.zha docs]: /components/light.zha/ -[lutron docs]: /components/lutron/ -[media_extractor docs]: /components/media_extractor/ -[media_player.apple_tv docs]: /components/media_player.apple_tv/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.emby docs]: /components/media_player.emby/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.soundtouch docs]: /components/media_player.soundtouch/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.vizio docs]: /components/media_player.vizio/ -[modbus docs]: /components/modbus/ -[mqtt docs]: /components/mqtt/ -[notify docs]: /components/notify/ -[notify.discord docs]: /components/notify.discord/ -[notify.lametric docs]: /components/notify.lametric/ -[notify.slack docs]: /components/notify.slack/ -[notify.twitter docs]: /components/notify.twitter/ -[octoprint docs]: /components/octoprint/ -[prometheus docs]: /components/prometheus/ -[python_script docs]: /components/python_script/ -[recorder docs]: /components/recorder/ -[rflink docs]: /components/rflink/ -[rfxtrx docs]: /components/rfxtrx/ -[scene.velux docs]: /components/scene.velux/ -[sensor.amcrest docs]: /components/sensor.amcrest/ -[sensor.apcupsd docs]: /components/sensor.apcupsd/ -[sensor.arwn docs]: /components/sensor.arwn/ -[sensor.broadlink docs]: /components/sensor.broadlink/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.citybikes docs]: /components/sensor.citybikes/ -[sensor.dht docs]: /components/sensor.dht/ -[sensor.dyson docs]: /components/sensor.dyson/ -[sensor.gtfs docs]: /components/sensor.gtfs/ -[sensor.london_underground docs]: /components/sensor.london_underground/ -[sensor.modbus docs]: /components/sensor.modbus/ -[sensor.octoprint docs]: /components/sensor.octoprint/ -[sensor.openweathermap docs]: /components/sensor.openweathermap/ -[sensor.otp docs]: /components/sensor.otp/ -[sensor.rflink docs]: /components/sensor.rflink/ -[sensor.uber docs]: /components/sensor.uber/ -[sensor.waqi docs]: /components/sensor.waqi/ -[sensor.yweather docs]: /components/sensor.yweather/ -[sensor.zha docs]: /components/sensor.zha/ -[snips docs]: /components/snips/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.dlink docs]: /components/switch.dlink/ -[switch.modbus docs]: /components/switch.modbus/ -[switch.rachio docs]: /components/switch.rachio/ -[switch.rflink docs]: /components/switch.rflink/ -[switch.xiaomi_vacuum docs]: /components/switch.xiaomi_vacuum/ -[tado docs]: /components/tado/ -[tts docs]: /components/tts/ -[tts.amazon_polly docs]: /components/tts.amazon_polly/ -[upnp docs]: /components/upnp/ -[velux docs]: /components/velux/ -[frontend docs]: /components/frontend/ -[vera docs]: /components/vera/ -[verisure docs]: /components/verisure/ -[wake_on_lan docs]: /components/wake_on_lan/ -[weather.buienradar docs]: /components/weather.buienradar/ -[weather.openweathermap docs]: /components/weather.openweathermap/ -[zha docs]: /components/zha/ -[zha.const docs]: /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]: /components/binary_sensor.rfxtrx/ -[telegram_bot docs]: /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]: /components/device_tracker.ubus/ -[keyboard_remote docs]: /components/keyboard_remote/ -[switch.flux docs]: /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 deleted file mode 100644 index 565a375574..0000000000 --- a/source/_posts/2017-07-17-hasspodcast-ep-4.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -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 deleted file mode 100644 index 3a181997f6..0000000000 --- a/source/_posts/2017-07-25-introducing-hassio.markdown +++ /dev/null @@ -1,97 +0,0 @@ ---- -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 deleted file mode 100644 index 9b364cb1ed..0000000000 --- a/source/_posts/2017-07-27-talk-python-podcast.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -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 deleted file mode 100644 index bd9fba9034..0000000000 --- a/source/_posts/2017-07-29-release-50.markdown +++ /dev/null @@ -1,424 +0,0 @@ ---- -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](/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]: /components/alarm_control_panel.manual_mqtt/ -[alarm_control_panel.simplisafe docs]: /components/alarm_control_panel.simplisafe/ -[alarmdecoder docs]: /components/alarmdecoder/ -[alexa docs]: /components/alexa/ -[automation.state docs]: /docs/automation/trigger/#state-trigger -[automation.time docs]: /docs/automation/trigger/#time-trigger -[binary_sensor.ping docs]: /components/binary_sensor.ping/ -[binary_sensor.rest docs]: /components/binary_sensor.rest/ -[binary_sensor.velbus docs]: /components/binary_sensor.velbus/ -[binary_sensor.xiaomi docs]: /components/binary_sensor.xiaomi/ -[camera.onvif docs]: /components/camera.onvif/ -[climate.maxcube docs]: /components/climate.maxcube/ -[conversation docs]: /components/conversation/ -[cover docs]: /components/cover/ -[cover.lutron_caseta docs]: /components/cover.lutron_caseta/ -[cover.xiaomi docs]: /components/cover.xiaomi/ -[cover.zwave docs]: /components/cover.zwave/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[emulated_hue docs]: /components/emulated_hue/ -[fan.wink docs]: /components/fan.wink/ -[hassio docs]: /hassio/ -[history docs]: /components/history/ -[homematic docs]: /components/homematic/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[intent docs]: /developers/intent/ -[intent_script docs]: /components/intent_script/ -[knx docs]: /components/knx/ -[light docs]: /components/light/ -[light.decora docs]: /components/light.decora/ -[light.hue docs]: /components/light.hue/ -[light.lifx docs]: /components/light.lifx/ -[light.tplink docs]: /components/light.tplink/ -[light.velbus docs]: /components/light.velbus/ -[light.wink docs]: /components/light.wink/ -[light.xiaomi docs]: /components/light.xiaomi/ -[light.zha docs]: /components/light.zha/ -[media_extractor docs]: /components/media_extractor/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.kodi docs]: /components/media_player.kodi/ -[mqtt docs]: /components/mqtt/ -[notify.html5 docs]: /components/notify.html5/ -[notify.twitter docs]: /components/notify.twitter/ -[python_script docs]: /components/python_script/ -[recorder docs]: /components/recorder/ -[remote.harmony docs]: /components/remote.harmony/ -[sensor.citybikes docs]: /components/sensor.citybikes/ -[sensor.dht docs]: /components/sensor.dht/ -[sensor.fitbit docs]: /components/sensor.fitbit/ -[sensor.google_wifi docs]: /components/sensor.google_wifi/ -[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ -[sensor.knx docs]: /components/sensor.knx/ -[sensor.lyft docs]: /components/sensor.lyft/ -[sensor.octoprint docs]: /components/sensor.octoprint/ -[sensor.pi_hole docs]: /components/sensor.pi_hole/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.uk_transport docs]: /components/sensor.uk_transport/ -[sensor.xiaomi docs]: /components/sensor.xiaomi/ -[shopping_list docs]: /components/shopping_list/ -[snips docs]: /components/snips/ -[statsd docs]: /components/statsd/ -[switch.fritzdect docs]: /components/switch.fritzdect/ -[switch.mqtt docs]: /components/switch.mqtt/ -[switch.wink docs]: /components/switch.wink/ -[switch.xiaomi docs]: /components/switch.xiaomi/ -[switch.xiaomi_vacuum docs]: /components/switch.xiaomi_vacuum/ -[velbus docs]: /components/velbus/ -[weather.yweather docs]: /components/weather.yweather/ -[wink docs]: /components/wink/ -[xiaomi docs]: /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]: /components/light.tradfri/ -[media_player.pioneer docs]: /components/media_player.pioneer/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[zwave docs]: /components/zwave/ diff --git a/source/_posts/2017-08-01-hasspodcast-ep-5.markdown b/source/_posts/2017-08-01-hasspodcast-ep-5.markdown deleted file mode 100644 index 9df9be08c7..0000000000 --- a/source/_posts/2017-08-01-hasspodcast-ep-5.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -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 deleted file mode 100644 index 6e8a5f24ff..0000000000 --- a/source/_posts/2017-08-12-release-51.markdown +++ /dev/null @@ -1,466 +0,0 @@ ---- -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]: /components/alarm_control_panel.simplisafe/ -[alexa docs]: /components/alexa/ -[asterisk_mbox docs]: /components/asterisk_mbox/ -[automation docs]: /components/automation/ -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.command_line docs]: /components/binary_sensor.command_line/ -[binary_sensor.rest docs]: /components/binary_sensor.rest/ -[binary_sensor.zwave docs]: /components/binary_sensor.zwave/ -[camera.foscam docs]: /components/camera.foscam/ -[climate docs]: /components/climate/ -[climate.honeywell docs]: /components/climate.honeywell/ -[climate.tado docs]: /components/climate.tado/ -[config.zwave docs]: /components/config.zwave/ -[cover.lutron_caseta docs]: /components/cover.lutron_caseta/ -[cover.rpi_gpio docs]: /components/cover.rpi_gpio/ -[device_tracker.huawei_router docs]: /components/device_tracker.huawei_router/ -[dyson docs]: /components/dyson/ -[emulated_hue docs]: /components/emulated_hue/ -[fan.dyson docs]: /components/fan.dyson/ -[group docs]: /components/group/ -[history docs]: /components/history/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[influxdb docs]: /components/influxdb/ -[insteon_plm docs]: /components/insteon_plm/ -[light.decora_wifi docs]: /components/light.decora_wifi/ -[light.flux_led docs]: /components/light.flux_led/ -[light.lifx docs]: /components/light.lifx/ -[light.mochad docs]: /components/light.mochad/ -[light.osramlightify docs]: /components/light.osramlightify/ -[lock.nuki docs]: /components/lock.nuki/ -[lutron_caseta docs]: /components/lutron_caseta/ -[mailbox.demo docs]: /components/mailbox.demo/ -[mailbox.demo.txt docs]: /components/mailbox.demo.txt/ -[media_extractor docs]: /components/media_extractor/ -[media_player docs]: /components/media_player/ -[media_player.bluesound docs]: /components/media_player.bluesound/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.directv docs]: /components/media_player.directv/ -[media_player.kodi docs]: /components/media_player.kodi/ -[media_player.mpd docs]: /components/media_player.mpd/ -[media_player.russound_rio docs]: /components/media_player.russound_rio/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[notify.pushbullet docs]: /components/notify.pushbullet/ -[notify.xmpp docs]: /components/notify.xmpp/ -[recorder docs]: /components/recorder/ -[recorder.migration docs]: /components/recorder.migration/ -[recorder.models docs]: /components/recorder.models/ -[recorder.purge docs]: /components/recorder.purge/ -[recorder.util docs]: /components/recorder.util/ -[remote docs]: /components/remote/ -[remote.apple_tv docs]: /components/remote.apple_tv/ -[remote.demo docs]: /components/remote.demo/ -[remote.harmony docs]: /components/remote.harmony/ -[remote.itach docs]: /components/remote.itach/ -[remote.kira docs]: /components/remote.kira/ -[rflink docs]: /components/rflink/ -[scene.lutron_caseta docs]: /components/scene.lutron_caseta/ -[sensor.asterisk_mbox docs]: /components/sensor.asterisk_mbox/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.command_line docs]: /components/sensor.command_line/ -[sensor.dyson docs]: /components/sensor.dyson/ -[sensor.efergy docs]: /components/sensor.efergy/ -[sensor.eight_sleep docs]: /components/sensor.eight_sleep/ -[sensor.geizhals docs]: /components/sensor.geizhals/ -[sensor.google_wifi docs]: /components/sensor.google_wifi/ -[sensor.lastfm docs]: /components/sensor.lastfm/ -[sensor.neato docs]: /components/sensor.neato/ -[sensor.pi_hole docs]: /components/sensor.pi_hole/ -[sensor.pocketcasts docs]: /components/sensor.pocketcasts/ -[sensor.radarr docs]: /components/sensor.radarr/ -[sensor.rest docs]: /components/sensor.rest/ -[sensor.sabnzbd docs]: /components/sensor.sabnzbd/ -[sensor.shodan docs]: /components/sensor.shodan/ -[sensor.sonarr docs]: /components/sensor.sonarr/ -[sensor.statistics docs]: /components/sensor.statistics/ -[sensor.supervisord docs]: /components/sensor.supervisord/ -[sensor.synologydsm docs]: /components/sensor.synologydsm/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.vasttrafik docs]: /components/sensor.vasttrafik/ -[sensor.yr docs]: /components/sensor.yr/ -[sensor.zamg docs]: /components/sensor.zamg/ -[switch.command_line docs]: /components/switch.command_line/ -[switch.mqtt docs]: /components/switch.mqtt/ -[switch.neato docs]: /components/switch.neato/ -[switch.rachio docs]: /components/switch.rachio/ -[switch.rainmachine docs]: /components/switch.rainmachine/ -[switch.wink docs]: /components/switch.wink/ -[switch.xiaomi_vacuum docs]: /components/switch.xiaomi_vacuum/ -[telegram_bot docs]: /components/telegram_bot/ -[updater docs]: /components/updater/ -[vacuum docs]: /components/vacuum/ -[vacuum.demo docs]: /components/vacuum.demo/ -[vacuum.dyson docs]: /components/vacuum.dyson/ -[vacuum.roomba docs]: /components/vacuum.roomba/ -[vacuum.xiaomi docs]: /components/vacuum.xiaomi/ -[weather.buienradar docs]: /components/weather.buienradar/ -[weather.yweather docs]: /components/weather.yweather/ -[weather.zamg docs]: /components/weather.zamg/ -[wink docs]: /components/wink/ -[zwave docs]: /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 deleted file mode 100644 index 38e5e66151..0000000000 --- a/source/_posts/2017-08-26-release-0-52.markdown +++ /dev/null @@ -1,400 +0,0 @@ ---- -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]: /components/abode/ -[alarm_control_panel docs]: /components/alarm_control_panel/ -[alarm_control_panel.abode docs]: /components/alarm_control_panel.abode/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[alarm_control_panel.simplisafe docs]: /components/alarm_control_panel.simplisafe/ -[alarm_control_panel.totalconnect docs]: /components/alarm_control_panel.totalconnect/ -[binary_sensor.abode docs]: /components/binary_sensor.abode/ -[binary_sensor.mysensors docs]: /components/binary_sensor.mysensors/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[camera.usps docs]: /components/camera.usps/ -[climate.mysensors docs]: /components/climate.mysensors/ -[config docs]: /components/config/ -[configurator docs]: /components/configurator/ -[cover.mysensors docs]: /components/cover.mysensors/ -[cover.template docs]: /components/cover.template/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.mysensors docs]: /components/device_tracker.mysensors/ -[ecobee docs]: /components/ecobee/ -[emulated_hue.upnp docs]: /components/emulated_hue.upnp/ -[envisalink docs]: /components/envisalink/ -[fan.isy994 docs]: /components/fan.isy994/ -[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[insteon_plm docs]: /components/insteon_plm/ -[light.decora_wifi docs]: /components/light.decora_wifi/ -[light.flux_led docs]: /components/light.flux_led/ -[light.hue docs]: /components/light.hue/ -[light.lifx docs]: /components/light.lifx/ -[light.mysensors docs]: /components/light.mysensors/ -[light.rpi_gpio_pwm docs]: /components/light.rpi_gpio_pwm/ -[light.tplink docs]: /components/light.tplink/ -[light.yeelight docs]: /components/light.yeelight/ -[lock.nello docs]: /components/lock.nello/ -[media_extractor docs]: /components/media_extractor/ -[media_player.mpd docs]: /components/media_player.mpd/ -[media_player.onkyo docs]: /components/media_player.onkyo/ -[media_player.snapcast docs]: /components/media_player.snapcast/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[media_player.webostv docs]: /components/media_player.webostv/ -[mysensors docs]: /components/mysensors/ -[notify.discord docs]: /components/notify.discord/ -[notify.hipchat docs]: /components/notify.hipchat/ -[notify.mysensors docs]: /components/notify.mysensors/ -[notify.prowl docs]: /components/notify.prowl/ -[notify.pushbullet docs]: /components/notify.pushbullet/ -[notify.pushover docs]: /components/notify.pushover/ -[notify.sendgrid docs]: /components/notify.sendgrid/ -[notify.slack docs]: /components/notify.slack/ -[octoprint docs]: /components/octoprint/ -[prometheus docs]: /components/prometheus/ -[script docs]: /components/script/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.cert_expiry docs]: /components/sensor.cert_expiry/ -[sensor.eliqonline docs]: /components/sensor.eliqonline/ -[sensor.fedex docs]: /components/sensor.fedex/ -[sensor.fitbit docs]: /components/sensor.fitbit/ -[sensor.fritzbox_callmonitor docs]: /components/sensor.fritzbox_callmonitor/ -[sensor.geizhals docs]: /components/sensor.geizhals/ -[sensor.ios docs]: /components/sensor.ios/ -[sensor.london_air docs]: /components/sensor.london_air/ -[sensor.mysensors docs]: /components/sensor.mysensors/ -[sensor.netdata docs]: /components/sensor.netdata/ -[sensor.octoprint docs]: /components/sensor.octoprint/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.swiss_public_transport docs]: /components/sensor.swiss_public_transport/ -[sensor.uber docs]: /components/sensor.uber/ -[sensor.uk_transport docs]: /components/sensor.uk_transport/ -[sensor.usps docs]: /components/sensor.usps/ -[sensor.version docs]: /components/sensor.version/ -[sensor.worldtidesinfo docs]: /components/sensor.worldtidesinfo/ -[switch.mqtt docs]: /components/switch.mqtt/ -[switch.mysensors docs]: /components/switch.mysensors/ -[switch.pilight docs]: /components/switch.pilight/ -[switch.rainmachine docs]: /components/switch.rainmachine/ -[switch.xiaomi docs]: /components/switch.xiaomi/ -[usps docs]: /components/usps/ -[weather.buienradar docs]: /components/weather.buienradar/ -[xiaomi docs]: /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]: /components/camera.foscam/ -[climate.ecobee docs]: /components/climate.ecobee/ -[device_tracker.icloud docs]: /components/device_tracker.icloud/ diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown deleted file mode 100644 index 7897969747..0000000000 --- a/source/_posts/2017-09-09-release-53.markdown +++ /dev/null @@ -1,462 +0,0 @@ ---- -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 tunneling 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]: /components/abode/ -[alarm_control_panel.abode docs]: /components/alarm_control_panel.abode/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[alarm_control_panel.manual docs]: /components/alarm_control_panel.manual/ -[binary_sensor.abode docs]: /components/binary_sensor.abode/ -[binary_sensor.bayesian docs]: /components/binary_sensor.bayesian/ -[binary_sensor.hikvision docs]: /components/binary_sensor.hikvision/ -[binary_sensor.homematic docs]: /components/binary_sensor.homematic/ -[binary_sensor.ring docs]: /components/binary_sensor.ring/ -[binary_sensor.tesla docs]: /components/binary_sensor.tesla/ -[binary_sensor.xiaomi docs]: /components/binary_sensor.xiaomi/ -[binary_sensor.knx docs]: /components/binary_sensor.knx/ -[climate.homematic docs]: /components/climate.homematic/ -[climate.honeywell docs]: /components/climate.honeywell/ -[climate.tesla docs]: /components/climate.tesla/ -[climate.knx docs]: /components/climate.knx/ -[cloud docs]: /components/cloud/ -[cloud.cloud_api docs]: /components/cloud.cloud_api/ -[cloud.const docs]: /components/cloud.const/ -[cloud.http_api docs]: /components/cloud.http_api/ -[cloud.util docs]: /components/cloud.util/ -[config docs]: /components/config/ -[config.customize docs]: /components/config.customize/ -[counter docs]: /components/counter/ -[cover.abode docs]: /components/cover.abode/ -[cover.homematic docs]: /components/cover.homematic/ -[cover.lutron_caseta docs]: /components/cover.lutron_caseta/ -[cover.rfxtrx docs]: /components/cover.rfxtrx/ -[cover.xiaomi docs]: /components/cover.xiaomi/ -[cover.knx docs]: /components/cover.knx/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.geofency docs]: /components/device_tracker.geofency/ -[device_tracker.tesla docs]: /components/device_tracker.tesla/ -[device_tracker.volvooncall docs]: /components/device_tracker.volvooncall/ -[hdmi_cec docs]: /components/hdmi_cec/ -[homematic docs]: /components/homematic/ -[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[input_text docs]: /components/input_text/ -[insteon_plm docs]: /components/insteon_plm/ -[light.homematic docs]: /components/light.homematic/ -[light.hue docs]: /components/light.hue/ -[light.lutron_caseta docs]: /components/light.lutron_caseta/ -[light.mqtt docs]: /components/light.mqtt/ -[light.xiaomi_philipslight docs]: /components/light.xiaomi_philipslight/ -[light.rfxtrx docs]: /components/light.rfxtrx/ -[light.tradfri docs]: /components/light.tradfri/ -[light.knx docs]: /components/light.knx/ -[light.zha docs]: /components/light.zha/ -[lock.abode docs]: /components/lock.abode/ -[lock.nello docs]: /components/lock.nello/ -[lock.tesla docs]: /components/lock.tesla/ -[lutron_caseta docs]: /components/lutron_caseta/ -[media_extractor docs]: /components/media_extractor/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.directv docs]: /components/media_player.directv/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.spotify docs]: /components/media_player.spotify/ -[media_player.yamaha_musiccast docs]: /components/media_player.yamaha_musiccast/ -[mycroft docs]: /components/mycroft/ -[mysensors docs]: /components/mysensors/ -[notify.discord docs]: /components/notify.discord/ -[notify.mycroft docs]: /components/notify.mycroft/ -[notify.pushbullet docs]: /components/notify.pushbullet/ -[notify.sendgrid docs]: /components/notify.sendgrid/ -[notify.twitter docs]: /components/notify.twitter/ -[notify.xmpp docs]: /components/notify.xmpp/ -[rfxtrx docs]: /components/rfxtrx/ -[sensor.airvisual docs]: /components/sensor.airvisual/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.dht docs]: /components/sensor.dht/ -[sensor.dwdwarnapp docs]: /components/sensor.dwdwarnapp/ -[sensor.fitbit docs]: /components/sensor.fitbit/ -[sensor.homematic docs]: /components/sensor.homematic/ -[sensor.mopar docs]: /components/sensor.mopar/ -[sensor.radarr docs]: /components/sensor.radarr/ -[sensor.season docs]: /components/sensor.season/ -[sensor.shodan docs]: /components/sensor.shodan/ -[sensor.sonarr docs]: /components/sensor.sonarr/ -[sensor.statistics docs]: /components/sensor.statistics/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.tank_utility docs]: /components/sensor.tank_utility/ -[sensor.tesla docs]: /components/sensor.tesla/ -[sensor.uber docs]: /components/sensor.uber/ -[sensor.worldtidesinfo docs]: /components/sensor.worldtidesinfo/ -[sensor.knx docs]: /components/sensor.knx/ -[snips docs]: /components/snips/ -[switch.abode docs]: /components/switch.abode/ -[switch.digitalloggers docs]: /components/switch.digitalloggers/ -[switch.dlink docs]: /components/switch.dlink/ -[switch.homematic docs]: /components/switch.homematic/ -[switch.lutron_caseta docs]: /components/switch.lutron_caseta/ -[switch.rest docs]: /components/switch.rest/ -[switch.rfxtrx docs]: /components/switch.rfxtrx/ -[switch.knx docs]: /components/switch.knx/ -[telegram_bot docs]: /components/telegram_bot/ -[tesla docs]: /components/tesla/ -[tradfri docs]: /components/tradfri/ -[volvooncall docs]: /components/volvooncall/ -[xiaomi docs]: /components/xiaomi/ -[knx docs]: /components/knx/ -[zwave docs]: /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]: /components/camera.foscam/ -[sensor.wunderground docs]: /components/sensor.wunderground/ diff --git a/source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown b/source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown deleted file mode 100644 index e601496765..0000000000 --- a/source/_posts/2017-09-16-hassbian-1.3-a-bit-of-a-stretch.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -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]: /docs/installation/hassbian/installation/ -[discord-hassbian]: https://discord.gg/RkajcgS diff --git a/source/_posts/2017-09-23-release-54.markdown b/source/_posts/2017-09-23-release-54.markdown deleted file mode 100644 index 97fb51ea0c..0000000000 --- a/source/_posts/2017-09-23-release-54.markdown +++ /dev/null @@ -1,355 +0,0 @@ ---- -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-25-new-hassio-build-system.markdown b/source/_posts/2017-09-25-new-hassio-build-system.markdown deleted file mode 100644 index b36c19a403..0000000000 --- a/source/_posts/2017-09-25-new-hassio-build-system.markdown +++ /dev/null @@ -1,57 +0,0 @@ ---- -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/_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 deleted file mode 100644 index 14340b8126..0000000000 --- a/source/_posts/2017-09-27-effortless-encryption-with-lets-encrypt-and-duckdns.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -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 deleted file mode 100644 index 58a15d94cd..0000000000 --- a/source/_posts/2017-09-29-hacktoberfest.markdown +++ /dev/null @@ -1,46 +0,0 @@ ---- -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]: /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 deleted file mode 100644 index 956ab95827..0000000000 --- a/source/_posts/2017-10-01-hass-podcast-ep9.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -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 deleted file mode 100644 index 7b053dd690..0000000000 --- a/source/_posts/2017-10-06-deprecating-python-3.4-support.markdown +++ /dev/null @@ -1,36 +0,0 @@ ---- -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 ---- - -**Update February 16, 2018**: -Home Assistant 0.64 will be the last release to support Python 3.4. Starting with release 0.65, Home Assistant will require a minimum version of Python 3.5.3. - ---- - -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 deleted file mode 100644 index 6d1c6b36da..0000000000 --- a/source/_posts/2017-10-07-release-55.markdown +++ /dev/null @@ -1,412 +0,0 @@ ---- -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](/blog/2015/12/13/setup-encryption-using-lets-encrypt/). DuckDNS is also integrated in [Hass.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 `entity_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]: /components/abode/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[alarm_control_panel.manual_mqtt docs]: /components/alarm_control_panel.manual_mqtt/ -[alexa.smart_home docs]: /components/alexa/ -[apple_tv docs]: /components/apple_tv/ -[arlo docs]: /components/arlo/ -[binary_sensor.raincloud docs]: /components/binary_sensor.raincloud/ -[binary_sensor.threshold docs]: /components/binary_sensor.threshold/ -[binary_sensor.wink docs]: /components/binary_sensor.wink/ -[camera.arlo docs]: /components/camera.arlo/ -[camera.synology docs]: /components/camera.synology/ -[camera.usps docs]: /components/camera.usps/ -[climate.ecobee docs]: /components/climate.ecobee/ -[climate.mqtt docs]: /components/climate.mqtt/ -[cover.mqtt docs]: /components/cover.mqtt/ -[cover.rflink docs]: /components/cover.rflink/ -[demo docs]: /components/demo/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.owntracks_http docs]: /components/device_tracker.owntracks_http/ -[duckdns docs]: /components/duckdns/ -[ecobee docs]: /components/ecobee/ -[emulated_hue docs]: /components/emulated_hue/ -[google docs]: /components/calendar.google/ -[group docs]: /components/group/ -[hassio docs]: /hassio/ -[history docs]: /components/history/ -[homematic docs]: /components/homematic/ -[http docs]: /components/http/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[influxdb docs]: /components/influxdb/ -[input_datetime docs]: /components/input_datetime/ -[input_number docs]: /components/input_number/ -[light.flux_led docs]: /components/light.flux_led/ -[light.rflink docs]: /components/light.rflink/ -[light.tradfri docs]: /components/light.tradfri/ -[light.yeelight docs]: /components/light.yeelight/ -[lock.wink docs]: /components/lock.wink/ -[media_extractor docs]: /components/media_extractor/ -[media_player.apple_tv docs]: /components/media_player.apple_tv/ -[media_player.webostv docs]: /components/media_player.webostv/ -[media_player.yamaha_musiccast docs]: /components/media_player.yamaha_musiccast/ -[mqtt_statestream docs]: /components/mqtt_statestream/ -[notify.clicksendaudio docs]: /components/notify.clicksendaudio/ -[notify.discord docs]: /components/notify.discord/ -[notify.facebook docs]: /components/notify.facebook/ -[notify.simplepush docs]: /components/notify.simplepush/ -[raincloud docs]: /components/raincloud/ -[raspihats docs]: /components/raspihats/ -[recorder docs]: /components/recorder/ -[remote.itach docs]: /components/remote.itach/ -[rflink docs]: /components/rflink/ -[sensor.airvisual docs]: /components/sensor.airvisual/ -[sensor.arlo docs]: /components/sensor.arlo/ -[sensor.comed_hourly_pricing docs]: /components/sensor.comed_hourly_pricing/ -[sensor.dsmr docs]: /components/sensor.dsmr/ -[sensor.fedex docs]: /components/sensor.fedex/ -[sensor.geo_rss_events docs]: /components/sensor.geo_rss_events/ -[sensor.google_travel_time docs]: /components/sensor.google_travel_time/ -[sensor.imap docs]: /components/sensor.imap/ -[sensor.lyft docs]: /components/sensor.lyft/ -[sensor.onewire docs]: /components/sensor.onewire/ -[sensor.pvoutput docs]: /components/sensor.pvoutput/ -[sensor.raincloud docs]: /components/sensor.raincloud/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.thethingsnetwork docs]: /components/sensor.thethingsnetwork/ -[sensor.tibber docs]: /components/sensor.tibber/ -[sensor.ups docs]: /components/sensor.ups/ -[sensor.usps docs]: /components/sensor.usps/ -[sensor.vera docs]: /components/sensor.vera/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[splunk docs]: /components/splunk/ -[switch.abode docs]: /components/switch.abode/ -[switch.raincloud docs]: /components/switch.raincloud/ -[switch.rflink docs]: /components/switch.rflink/ -[switch.tplink docs]: /components/switch.tplink/ -[thethingsnetwork docs]: /components/thethingsnetwork/ -[tradfri docs]: /components/tradfri/ -[upnp docs]: /components/upnp/ -[usps docs]: /components/usps/ -[vacuum.xiaomi docs]: /components/vacuum.xiaomi_miio/ -[wink docs]: /components/wink/ -[zwave docs]: /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]: /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]: /components/camera.synology/ -[cover.rflink docs]: /components/cover.rflink/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[google docs]: /components/google/ -[light.tradfri docs]: /components/light.tradfri/ -[media_player.liveboxplaytv docs]: /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 deleted file mode 100644 index 1af3ecff8b..0000000000 --- a/source/_posts/2017-10-14-templating-date-time.markdown +++ /dev/null @@ -1,38 +0,0 @@ ---- -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 deleted file mode 100644 index 295702ce37..0000000000 --- a/source/_posts/2017-10-18-hasspodcast-ep-10.markdown +++ /dev/null @@ -1,18 +0,0 @@ ---- -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 deleted file mode 100644 index 33c6472628..0000000000 --- a/source/_posts/2017-10-21-release-56.markdown +++ /dev/null @@ -1,548 +0,0 @@ ---- -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](/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](/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](/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:`)](/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](/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]: /components/__init__/ -[abode docs]: /components/abode/ -[alarm_control_panel.arlo docs]: /components/alarm_control_panel.arlo/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[alexa.smart_home docs]: /components/alexa.smart_home/ -[arlo docs]: /components/arlo/ -[automation.event docs]: /docs/automation/trigger/#event-trigger -[automation.numeric_state docs]: /docs/automation/trigger/#numeric-state-trigger -[automation.state docs]: /docs/automation/trigger/#state-trigger -[binary_sensor.iss docs]: /components/binary_sensor.iss/ -[binary_sensor.netatmo docs]: /components/binary_sensor.netatmo/ -[binary_sensor.skybell docs]: /components/binary_sensor.skybell/ -[binary_sensor.template docs]: /components/binary_sensor.template/ -[binary_sensor.tesla docs]: /components/binary_sensor.tesla/ -[binary_sensor.wink docs]: /components/binary_sensor.wink/ -[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/ -[camera.arlo docs]: /components/camera.arlo/ -[camera.ffmpeg docs]: /components/camera.ffmpeg/ -[camera.onvif docs]: /components/camera.onvif/ -[camera.skybell docs]: /components/camera.skybell/ -[camera.synology docs]: /components/camera.synology/ -[camera.yi docs]: /components/camera.yi/ -[climate.eq3btsmart docs]: /components/climate.eq3btsmart/ -[climate.knx docs]: /components/climate.knx/ -[climate.mqtt docs]: /components/climate.mqtt/ -[climate.tesla docs]: /components/climate.tesla/ -[climate.toon docs]: /components/climate.toon/ -[cloud.iot docs]: /components/cloud.iot/ -[cover.rflink docs]: /components/cover.rflink/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.fritz docs]: /components/device_tracker.fritz/ -[device_tracker.mikrotik docs]: /components/device_tracker.mikrotik/ -[device_tracker.netgear docs]: /components/device_tracker.netgear/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[device_tracker.unifi docs]: /components/device_tracker.unifi/ -[device_tracker.upc_connect docs]: /components/device_tracker.upc_connect/ -[enocean docs]: /components/enocean/ -[ffmpeg docs]: /components/ffmpeg/ -[google_assistant docs]: /components/google_assistant/ -[hassio docs]: /components/hassio/ -[homematic docs]: /components/homematic/ -[http docs]: /components/http/ -[knx docs]: /components/knx/ -[light.hue docs]: /components/light.hue/ -[light.mqtt_json docs]: /components/light.mqtt_json/ -[light.osramlightify docs]: /components/light.osramlightify/ -[light.skybell docs]: /components/light.skybell/ -[light.template docs]: /components/light.template/ -[light.tplink docs]: /components/light.tplink/ -[light.tradfri docs]: /components/light.tradfri/ -[light.yeelight docs]: /components/light.yeelight/ -[lock.tesla docs]: /components/lock.tesla/ -[map docs]: /components/map/ -[media_extractor docs]: /components/media_extractor/ -[media_player.denon docs]: /components/media_player.denon/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.dunehd docs]: /components/media_player.dunehd/ -[media_player.liveboxplaytv docs]: /components/media_player.liveboxplaytv/ -[media_player.monoprice docs]: /components/media_player.monoprice/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.yamaha docs]: /components/media_player.yamaha/ -[modbus docs]: /components/modbus/ -[mqtt docs]: /components/mqtt/ -[namecheapdns docs]: /components/namecheapdns/ -[notify.clicksend_tts docs]: /components/notify.clicksend_tts/ -[notify.html5 docs]: /components/notify.html5/ -[notify.rocketchat docs]: /components/notify.rocketchat/ -[notify.xmpp docs]: /components/notify.xmpp/ -[python_script docs]: /components/python_script/ -[raincloud docs]: /components/raincloud/ -[sensor.abode docs]: /components/sensor.abode/ -[sensor.airvisual docs]: /components/sensor.airvisual/ -[sensor.android_ip_webcam docs]: /components/sensor.android_ip_webcam/ -[sensor.arlo docs]: /components/sensor.arlo/ -[sensor.arwn docs]: /components/sensor.arwn/ -[sensor.darksky docs]: /components/sensor.darksky/ -[sensor.fitbit docs]: /components/sensor.fitbit/ -[sensor.fritzbox_callmonitor docs]: /components/sensor.fritzbox_callmonitor/ -[sensor.fritzbox_netmonitor docs]: /components/sensor.fritzbox_netmonitor/ -[sensor.glances docs]: /components/sensor.glances/ -[sensor.imap docs]: /components/sensor.imap/ -[sensor.ios docs]: /components/sensor.ios/ -[sensor.mqtt_room docs]: /components/sensor.mqtt_room/ -[sensor.netdata docs]: /components/sensor.netdata/ -[sensor.openweathermap docs]: /components/sensor.openweathermap/ -[sensor.raincloud docs]: /components/sensor.raincloud/ -[sensor.ring docs]: /components/sensor.ring/ -[sensor.serial docs]: /components/sensor.serial/ -[sensor.skybell docs]: /components/sensor.skybell/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.statistics docs]: /components/sensor.statistics/ -[sensor.steam_online docs]: /components/sensor.steam_online/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.tesla docs]: /components/sensor.tesla/ -[sensor.toon docs]: /components/sensor.toon/ -[sensor.tradfri docs]: /components/sensor.tradfri/ -[sensor.transmission docs]: /components/sensor.transmission/ -[sensor.travisci docs]: /components/sensor.travisci/ -[sensor.uptime docs]: /components/sensor.uptime/ -[sensor.vera docs]: /components/sensor.vera/ -[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ -[sensor.zha docs]: /components/sensor.zha/ -[shiftr docs]: /components/shiftr/ -[skybell docs]: /components/skybell/ -[switch.flux docs]: /components/switch.flux/ -[switch.fritzdect docs]: /components/switch.fritzdect/ -[switch.hikvisioncam docs]: /components/switch.hikvisioncam/ -[switch.rainmachine docs]: /components/switch.rainmachine/ -[switch.skybell docs]: /components/switch.skybell/ -[switch.tesla docs]: /components/switch.tesla/ -[switch.toon docs]: /components/switch.toon/ -[switch.tplink docs]: /components/switch.tplink/ -[switch.wink docs]: /components/switch.wink/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[telegram_bot docs]: /components/telegram_bot/ -[tesla docs]: /components/tesla/ -[toon docs]: /components/toon/ -[tradfri docs]: /components/tradfri/ -[vacuum docs]: /components/vacuum/ -[vacuum.dyson docs]: /components/vacuum.dyson/ -[vacuum.mqtt docs]: /components/vacuum.mqtt/ -[vera docs]: /components/vera/ -[weather.openweathermap docs]: /components/weather.openweathermap/ -[wink docs]: /components/wink/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[zha docs]: /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 deleted file mode 100644 index 10ae33715a..0000000000 --- a/source/_posts/2017-10-23-simple-analog-sensor.markdown +++ /dev/null @@ -1,93 +0,0 @@ ---- -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 deleted file mode 100644 index a64b3e18d8..0000000000 --- a/source/_posts/2017-10-28-demo.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -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 [/demo/](/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 deleted file mode 100644 index 1d02e48e3b..0000000000 --- a/source/_posts/2017-11-02-secure-shell-tunnel.markdown +++ /dev/null @@ -1,69 +0,0 @@ ---- -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](/hassio/) then enable the [SSH Server add-on](/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 deleted file mode 100644 index 5c689b185a..0000000000 --- a/source/_posts/2017-11-04-release-57.markdown +++ /dev/null @@ -1,659 +0,0 @@ ---- -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](/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 release 0.57.1 - november 4 %} - - - Fix login screen not showing when no password stored ([@balloob]) - -## {% linkable_title release 0.57.2 - november 5 %} - -- Update frontend with fixes for setting temperature on climate card ([@balloob]) -- Fix setting max brightness for TRADFRI ([@ggravlingen] - [#10359]) - -## {% linkable_title release 0.57.3 - november 11 %} - -- Tellstick Duo acync callback fix ([@stefan-jonasson] - [#10384]) ([tellstick docs]) -- Fixed update() method and removed `ding` feature from stickupcams/floodlight ([@tchellomello] - [#10428]) ([binary_sensor.ring docs]) ([camera.ring docs]) ([sensor.ring docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% 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](/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 -[#10359]: https://github.com/home-assistant/home-assistant/pull/10359 -[@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]: /components/alarm_control_panel.totalconnect/ -[alexa.smart_home docs]: /components/alexa.smart_home/ -[api docs]: /components/api/ -[automation.event docs]: /docs/automation/trigger/#event-trigger -[automation.numeric_state docs]: /docs/automation/trigger/#numeric-state-trigger -[axis docs]: /components/axis/ -[binary_sensor.axis docs]: /components/binary_sensor.axis/ -[binary_sensor.gc100 docs]: /components/binary_sensor.gc100/ -[binary_sensor.linode docs]: /components/binary_sensor.linode/ -[binary_sensor.random docs]: /components/binary_sensor.random/ -[binary_sensor.rfxtrx docs]: /components/binary_sensor.rfxtrx/ -[binary_sensor.ring docs]: /components/binary_sensor.ring/ -[binary_sensor.tellduslive docs]: /components/binary_sensor.tellduslive/ -[binary_sensor.trend docs]: /components/binary_sensor.trend/ -[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/ -[camera docs]: /components/camera/ -[camera.ring docs]: /components/camera.ring/ -[climate.ephember docs]: /components/climate.ephember/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.honeywell docs]: /components/climate.honeywell/ -[climate.toon docs]: /components/climate.toon/ -[cloud docs]: /components/cloud/ -[cloud.iot docs]: /components/cloud.iot/ -[cover.template docs]: /components/cover.template/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.geofency docs]: /components/device_tracker.geofency/ -[device_tracker.mikrotik docs]: /components/device_tracker.mikrotik/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[device_tracker.ubus docs]: /components/device_tracker.ubus/ -[dialogflow docs]: /components/dialogflow/ -[downloader docs]: /components/downloader/ -[duckdns docs]: /components/duckdns/ -[fan.mqtt docs]: /components/fan.mqtt/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[gc100 docs]: /components/gc100/ -[google_assistant docs]: /components/google_assistant/ -[google_domains docs]: /components/google_domains/ -[hassio docs]: /components/hassio/ -[history docs]: /components/history/ -[http docs]: /components/http/ -[image_processing.openalpr_local docs]: /components/image_processing.openalpr_local/ -[input_number docs]: /components/input_number/ -[input_text docs]: /components/input_text/ -[introduction docs]: /components/introduction/ -[light.hue docs]: /components/light.hue/ -[light.hyperion docs]: /components/light.hyperion/ -[light.mqtt docs]: /components/light.mqtt/ -[light.tradfri docs]: /components/light.tradfri/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.yeelight docs]: /components/light.yeelight/ -[linode docs]: /components/linode/ -[logbook docs]: /components/logbook/ -[mailbox docs]: /components/mailbox/ -[media_extractor docs]: /components/media_extractor/ -[media_player docs]: /components/media_player/ -[media_player.liveboxplaytv docs]: /components/media_player.liveboxplaytv/ -[media_player.monoprice docs]: /components/media_player.monoprice/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.russound_rnet docs]: /components/media_player.russound_rnet/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.yamaha docs]: /components/media_player.yamaha/ -[mqtt_statestream docs]: /components/mqtt_statestream/ -[namecheapdns docs]: /components/namecheapdns/ -[no_ip docs]: /components/no_ip/ -[notify.aws_lambda docs]: /components/notify.aws_lambda/ -[notify.aws_sns docs]: /components/notify.aws_sns/ -[notify.aws_sqs docs]: /components/notify.aws_sqs/ -[notify.clickatell docs]: /components/notify.clickatell/ -[notify.sendgrid docs]: /components/notify.sendgrid/ -[notify.yessssms docs]: /components/notify.yessssms/ -[panel_custom docs]: /components/panel_custom/ -[persistent_notification docs]: /components/persistent_notification/ -[plant docs]: /components/plant/ -[raincloud docs]: /components/raincloud/ -[remember_the_milk docs]: /components/remember_the_milk/ -[rfxtrx docs]: /components/rfxtrx/ -[ring docs]: /components/ring/ -[sensor.coinmarketcap docs]: /components/sensor.coinmarketcap/ -[sensor.emoncms docs]: /components/sensor.emoncms/ -[sensor.fail2ban docs]: /components/sensor.fail2ban/ -[sensor.gitter docs]: /components/sensor.gitter/ -[sensor.glances docs]: /components/sensor.glances/ -[sensor.google_travel_time docs]: /components/sensor.google_travel_time/ -[sensor.hddtemp docs]: /components/sensor.hddtemp/ -[sensor.imap docs]: /components/sensor.imap/ -[sensor.irish_rail_transport docs]: /components/sensor.irish_rail_transport/ -[sensor.lastfm docs]: /components/sensor.lastfm/ -[sensor.luftdaten docs]: /components/sensor.luftdaten/ -[sensor.nederlandse_spoorwegen docs]: /components/sensor.nederlandse_spoorwegen/ -[sensor.radarr docs]: /components/sensor.radarr/ -[sensor.rest docs]: /components/sensor.rest/ -[sensor.ring docs]: /components/sensor.ring/ -[sensor.scrape docs]: /components/sensor.scrape/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.sonarr docs]: /components/sensor.sonarr/ -[sensor.speedtest docs]: /components/sensor.speedtest/ -[sensor.swiss_public_transport docs]: /components/sensor.swiss_public_transport/ -[sensor.synologydsm docs]: /components/sensor.synologydsm/ -[sensor.sytadin docs]: /components/sensor.sytadin/ -[sensor.toon docs]: /components/sensor.toon/ -[sensor.uk_transport docs]: /components/sensor.uk_transport/ -[sensor.whois docs]: /components/sensor.whois/ -[shopping_list docs]: /components/shopping_list/ -[switch.deluge docs]: /components/switch.deluge/ -[switch.flux docs]: /components/switch.flux/ -[switch.gc100 docs]: /components/switch.gc100/ -[switch.snmp docs]: /components/switch.snmp/ -[switch.template docs]: /components/switch.template/ -[switch.toon docs]: /components/switch.toon/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[tellduslive docs]: /components/tellduslive/ -[tellstick docs]: /components/tellstick/ -[tesla docs]: /components/tesla/ -[timer docs]: /components/timer/ -[toon docs]: /components/toon/ -[tradfri docs]: /components/tradfri/ -[tts.amazon_polly docs]: /components/tts.amazon_polly/ -[tts.microsoft docs]: /components/tts.microsoft/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[vera docs]: /components/vera/ -[wink docs]: /components/wink/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[ikea email]: https://twitter.com/home_assistant/status/925373865802502144 -[wink-auth]: /components/wink/#authenticate-using-developerwinkcomhttpsdeveloperwinkcom -[#10384]: https://github.com/home-assistant/home-assistant/pull/10384 -[#10428]: https://github.com/home-assistant/home-assistant/pull/10428 -[@stefan-jonasson]: https://github.com/stefan-jonasson -[@tchellomello]: https://github.com/tchellomello -[binary_sensor.ring docs]: /components/binary_sensor.ring/ -[camera.ring docs]: /components/camera.ring/ -[sensor.ring docs]: /components/sensor.ring/ -[tellstick docs]: /components/tellstick/ diff --git a/source/_posts/2017-11-05-frontend-translations.markdown b/source/_posts/2017-11-05-frontend-translations.markdown deleted file mode 100644 index aefa5588af..0000000000 --- a/source/_posts/2017-11-05-frontend-translations.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post -title: "Translating Home Assistant" -description: "Introduction to the new translation integration with Lokalise." -date: 2017-11-05 20:00:00 -0500 -date_formatted: "November 5, 2017" -author: Adam Mills -comments: true -categories: Community -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. -

    - -## {% linkable_title Translations %} - -As mentioned in the [0.57 release notes](/blog/2017/11/04/release-57/), Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. [@c727] took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with [Lokalise](https://lokalise.co/) to manage our translations! - -Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our [public signup link](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/), and start translating right away. We’ve created a [translation startup guide](/developers/frontend_translation/) with additional details about how to contribute. Instructions are provided there for how to request a new language. - -Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright! - -[@c727]: https://github.com/c727 diff --git a/source/_posts/2017-11-10-ttn-with-mqtt.markdown b/source/_posts/2017-11-10-ttn-with-mqtt.markdown deleted file mode 100644 index 38341bdc9f..0000000000 --- a/source/_posts/2017-11-10-ttn-with-mqtt.markdown +++ /dev/null @@ -1,198 +0,0 @@ ---- -layout: post -title: "Home Assistant and The Things Network (TTN)" -description: "How to use transfer MQTT messages from The Things Network (TTN) to a local broker." -date: 2017-11-10 14:00:00 +0200 -date_formatted: "November 10, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To -og_image: /images/blog/2017-11-mqtt-ttn/social-ha-ttn.png ---- - -The Home Assistant integration for [The Things Network (TTN)](https://www.thethingsnetwork.org/) uses their [Storage](https://www.thethingsnetwork.org/docs/applications/storage/) feature to get the sensor data. The easiest way to observe TTN sensors would be [MQTT](https://www.thethingsnetwork.org/docs/applications/mqtt/) as it doesn't requires any additional configuration. - -At the moment Home Assistant only supports one [MQTT broker](/docs/mqtt/). This means that you can't subscribe to topics which are located on different brokers. - - - -## {% linkable_title Subscribe to the TTN Broker %} - -To check what your devices are sending, subscribe to the topic `+/devices/+/up` with a command-line tool like `mosquitto_sub`. The `` is the postfix of the **Handler** entry in your **Application overview**. `` is the **Application ID** and `` is your access key. - -```bash -$ mosquitto_sub -v -h .thethings.network -t '+/devices/+/up' -u '' -P '' -{ - "app_id": "ha-demo", - "dev_id": "device01", - "hardware_serial": "AJDJENDNHRBFBBT", - "port": 1, - [...] -``` - -The payload contains details about the device itself and the sensor data. The sensor data is stored in `payload_fields`. Depending on the device configuration it may contain a single value or multiple values. - -## {% linkable_title The relay %} - -To be able to work locally with the MQTT data that is received from the devices connected to TTN, we need to transfer it to the local broker. With this simple script below all messages from a given device are re-published on your local MQTT broker after they are received. Modify the script with your details as outlined in the previous section. - -```python -"""Relay MQTT messages from The Things Network to a local MQTT broker.""" -import paho.mqtt.client as mqtt -import paho.mqtt.publish as publish - -DEVICE_NAME = '' - -TTN_BROKER = '.thethings.network' -TTN_USERNAME = '' -TTN_PASSWORD = '' -TTN_TOPIC = '+/devices/{}/up'.format(DEVICE_NAME) - -LOCAL_BROKER = '192.168.0.2' -LOCAL_TOPIC = 'home/ttn/garden_temp' - - -def on_connect(client, userdata, flags, rc): - """Subscribe to topic after connection to broker is made.""" - print("Connected with result code", str(rc)) - client.subscribe(TTN_TOPIC) - - -def on_message(client, userdata, msg): - """Relay message to a different broker.""" - publish.single( - LOCAL_TOPIC, payload=msg.payload, qos=0, retain=False, - hostname=LOCAL_BROKER, port=1883, client_id='ttn-local', - keepalive=60, will=None, auth=None, tls=None, protocol=mqtt.MQTTv311) - - -client = mqtt.Client() -client.username_pw_set(TTN_USERNAME, password=TTN_PASSWORD) -client.on_connect = on_connect -client.on_message = on_message -client.connect(TTN_BROKER, 1883, 60) - -client.loop_forever() -``` - -Save it and run it. As soon as a MQTT message is received from your device you should see it on your local broker (here 192.168.0.2) if you subscribe to `#` or the topic given in the script above `home/ttn/garden_temp`. - -```bash -$ mosquitto_sub -h 192.168.0.2 -t "#" -d -``` - -## {% linkable_title The sensor %} - -All we would need now, is a [`mqtt` sensor](/components/sensor.mqtt/) with a `value_template`. With a sophisticated custom sensor it would be possible to displaying a little more than just the state. The device is only sending the temperature `{"temperature": 7.5}` but there are other details available which the sensor should show. - -```python -"""Support for The Things Network MQTT sensors.""" -import asyncio -from datetime import timedelta -import json -import logging - -import voluptuous as vol - -import homeassistant.components.mqtt as mqtt -from homeassistant.components.mqtt import CONF_STATE_TOPIC -from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT -from homeassistant.core import callback -import homeassistant.helpers.config_validation as cv -from homeassistant.helpers.entity import Entity - -_LOGGER = logging.getLogger(__name__) - -DEFAULT_NAME = 'MQTT TTN Sensor' -DEFAULT_FORCE_UPDATE = False -DEPENDENCIES = ['mqtt'] - -PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, - vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string, - -}) - - -@asyncio.coroutine -def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Set up the TTN MQTT Sensor.""" - async_add_devices([MqttTtnSensor( - config.get(CONF_NAME), config.get(CONF_STATE_TOPIC), - config.get(CONF_UNIT_OF_MEASUREMENT)) - ]) - - -class MqttTtnSensor(Entity): - """Representation of a sensor.""" - - def __init__(self, name, state_topic, unit_of_measurement): - """Initialize the sensor.""" - self._state = None - self._name = name - self._unit_of_measurement = unit_of_measurement - self._attributes = {} - self._state_topic = state_topic - - def async_added_to_hass(self): - """Subscribe to MQTT events.""" - @callback - def message_received(topic, payload, qos): - """Handle new MQTT messages.""" - - try: - data = json.loads(payload) - except json.JSONDecodeError: - _LOGGER.error("Invalid JSON data received: %s", data) - - self._state = data['payload_fields'][next( - iter(data['payload_fields']))] - self._attributes = data - del self._attributes['payload_fields'] - del self._attributes['metadata'] - self.async_schedule_update_ha_state() - - return mqtt.async_subscribe( - self.hass, self._state_topic, message_received, 0) - - @property - def should_poll(self): - """No polling needed.""" - return False - - @property - def name(self): - """Return the name of the sensor.""" - return self._name - - @property - def unit_of_measurement(self): - """Return the unit this state is expressed in.""" - return self._unit_of_measurement - - @property - def state_attributes(self): - """Return the attributes of the entity.""" - return self._attributes - - @property - def state(self): - """Return the state of the entity.""" - return self._state -``` - -Store it in `/custom_components/sensor/mqtt_ttn.py` and it will handle the messages. - -## {% linkable_title The configuration %} - -Now create the [`mqtt_ttn` sensor](/components/sensor.mqtt/) entry for your device. - -``` -sensor: - - platform: mqtt_ttn - name: TTN Sensor - state_topic: "home/ttn/garden_temp" -``` - -This solution is not production-ready, scalable or stable but it could fill the gape till Home Assistant is able to connect to multiple MQTT brokers. If you have multiple devices relay all messages to your local broker and add a configuration variable to `mqtt_ttn` sensor which allows you to select the device. diff --git a/source/_posts/2017-11-12-tor.markdown b/source/_posts/2017-11-12-tor.markdown deleted file mode 100644 index cd4e018f7a..0000000000 --- a/source/_posts/2017-11-12-tor.markdown +++ /dev/null @@ -1,102 +0,0 @@ ---- -layout: post -title: "Secure remote access to Home Assistant using Tor" -description: "Using Tor with Home Assistant and Hass.io." -date: 2017-11-12 10:00:00 +0200 -date_formatted: "November 12, 2017" -author: Franck Nijhof & Fabian Affolter -author_twitter: frenck -comments: true -categories: How-To -og_image: /images/blog/2017-11-tor/social.png ---- - -Routers and gateways provided by broadband internet providers are very often limited regarding features and configuration possibilities. Most of these limitations affect the opportunities that allow users to set up port-forwarding, DMZ, and DHCP reservations since the suppliers figured that average user does not want (or should not) deal with these. Making your Home Assistant instance available remotely (and securely), in this case, becomes more difficult. Are you one of those unlucky ones? - -There are a couple of options available to achieve a remote (and secure) accessible Home Assistant instance. However, almost all of them require you to: open one or more ports on your router, expose a public IP address, and require you to reserve a fixed IP in your DHCP server (or set up a static IP address). Examples of these are: - -- Combination of [DuckDNS](/components/duckdns/) (or similar), [Let's Encrypt](/docs/ecosystem/certificates/lets_encrypt/) (SSL), DHCP reservation, and forwarding a port to your device running Home Assistant. -- Setup a VPN, which often requires more hardware and software. Additionally, it also requires port-forwarding, DHCP reservation and most likely [DuckDNS](/components/duckdns/) (or similar). -- [SSH tunnel-ing](/blog/2017/11/02/secure-shell-tunnel/). Which still requires port-forwarding, DHCP reservation and most likely (yeah, you've guessed it) [DuckDNS](/components/duckdns/) (or similar). - -There is, however, another option available that most people do not realize: [Tor](https://www.torproject.org). [Tor](https://www.torproject.org) offers a capability that they refer to as [Tor's Hidden Services](https://www.torproject.org/docs/hidden-services.html.en), which allows you to securely access your Home Assistant installation *without* the need for all these things. No need to forward and open ports, no need to expose your public IP, no DNS entry, no need for SSL certificates, and you do not have to assign a fixed IP to the device running your Home Assistant. - -The most amazing part? It is super easy to set up! - - - -## {% linkable_title Setting up Tor %} - -Our [documentation](/docs/ecosystem/tor/) provides a detailed guide about setting up a [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en). The setup is straight-forward: - -1. Install Tor. On a Debian-based system: `$ sudo apt-get install tor`. On Fedora: `$ sudo dnf install tor` -2. Modify Tor's main configuration file `/etc/tor/torrc` to include the following lines: - - ```bash - ############### This section is just for location-hidden services ### - - ## Once you have configured a hidden service, you can look at the - ## contents of the file ".../hidden_service/hostname" for the address - ## to tell people. - ... - HiddenServiceDir /var/lib/tor/homeassistant/ - HiddenServicePort 80 127.0.0.1:8123 - ... - ``` -3. Restart Tor: `$ sudo systemctl restart tor` -4. The Tor-generated hostname file contains the hostname you need to access your installation. - - ```bash - $ sudo cat /var/lib/tor/homeassistant/hostname - abcdef1234567890.onion - ``` - -## {% linkable_title Tor add-on for Hass.io %} - -[Franck Nijhof (@frenck)](https://github.com/frenck) created the [Tor add-on](https://github.com/hassio-addons/addon-tor) for [Hass.io](/hassio/). This add-on makes the installation and the setup extremely simple. Go to the **Hass.io** panel, then to the **Store**, copy `https://github.com/hassio-addons/repository` into the text box of **Add-On Repositories** and save it. - -A new entry **Tor** will show-up in the list of add-ons. Click on it to install it. The configuration is done in **Options**. Please refer to the [Configuration documentation](https://github.com/hassio-addons/addon-tor#configuration) for further details. A possible configuration could look like the sample below (which is the default configuration). - -```json -{ - "log_level": "info", - "socks": false, - "hidden_services": true, - "stealth": false, - "client_names": [], - "ports": [ - "8123:80" - ] -} -``` - -When you are done, press **Save** and then **Start**. In the **Logs** section, you can see what the add-on is doing. Watch out for an entry like the one below, which will tell you your hostname on the Tor network. - -```bash -INFO: ----------------------------------------------------------- -INFO: Your Home Assistant instance is available on Tor! -INFO: Address: abcdef1234567890.onion -INFO: ----------------------------------------------------------- -``` - -Don't worry if you missed it, restarting the add-on will display it again. The details are also stored and available in the `/ssl/tor/hidden_service/hostname` file. - -## {% linkable_title Tor clients %} - -To access you Home Assistant via the Tor Hidden Service, you will need a Tor client. There are multiple clients, for different devices and platforms, available. The [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en) is by far the simplest option, which is available for Windows, MacOS & Linux. - -Simply download and install the [Tor Browser](https://www.torproject.org/projects/torbrowser.html.en), start it, and enter the "dot onion" address you've gained from the earlier steps (`abcdef1234567890.onion` in this case). Voila! - -Some other clients: - -- [Orbot](https://guardianproject.info/apps/orbot/) for Android -- [Orfox](https://play.google.com/store/apps/details?id=info.guardianproject.orfox&hl=nl) for Android -- [Onion Browser](https://mike.tig.as/onionbrowser/) for iOS - -## {% linkable_title Cranking up security %} - -The setup described in this blog post is easy and relatively secure, but anyone who knows your `.onion` address can still connect to your Home Assistant instance (Remember to use passwords!). With all of the [discussion](https://blog.torproject.org/quick-simple-guide-tor-and-internet-things-so-far) about putting your IoT on the Tor Network, maybe you want to add an extra layer of defense, especially if you’re going to be the only one that uses it. Tor offers an additional layer of security, called "Hidden Service Authentication", usually referred to as "Stealth"-mode. - -This "Stealth"-mode adds an extra layer of security to your Hidden Service by only responding to a client that passes a unique secret cookie as it connects. Obviously, this requires additional configuration on the Tor client applications. - -Additional information can be found in the [Tor documentation](/docs/ecosystem/tor/) and the [Tor add-on repository](https://github.com/hassio-addons/addon-tor), including how to setup the "Stealth"-mode. The Tor Project itself provides details about a variaty of topics in their [documentation](https://www.torproject.org/docs/documentation.html.en). diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown deleted file mode 100644 index d7e7fbbc25..0000000000 --- a/source/_posts/2017-11-18-release-58.markdown +++ /dev/null @@ -1,503 +0,0 @@ ---- -layout: post -title: "0.58: More translations, faster frontend, system log" -description: "We now have 445 translators helping out and the frontend is receiving some polishing." -date: 2017-11-18 04:00:00 -date_formatted: "November 18, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2017-11-0.58/components.png ---- - - - -

    -The Hass.io release of 0.58 will be delayed by a couple of days because Pascal is moving this weekend. -

    - -## {% linkable_title Translation update %} - -Translations are up and running in full speed. Shortly after the last release we got our translation pipeline figured out. [@armills] and [@c727] are doing an amazing job managing this project. We've doubled the number of supported languages to 42 and the amount of keys to translate went from 8 to 130. Our translators are on top of their game and 79% is already translated. - -Talking about our translators, we now have 445 people with an account to help with translations. Not bad for 3 weeks! - -And because more translations is more better, [@robbiet480] has added the iOS app to Lokalise, our translation management platform. The iOS app is currently supported in 7 different languages. - -[Learn more about how to help with translations](/blog/2017/11/05/frontend-translations/) - -## {% linkable_title Frontend improvements continue %} - -Thanks to [@Andrey-git] we now are able to serve the frontend in modern JavaScript. Leveraging modern JavaScript makes the frontend faster to load and run. For now it's opt-in but we're looking into making it opt-out in the future. The ES5 version of the frontend will remain available for older devices. - -To try it once, add `?latest` to your Home Assistant bookmark. To make it the default on your installation, update your config to look like this: - -``` -frontend: - javascript_version: latest -``` - -

    -For Custom UI users: your custom UI will need to be updated before it can work with the new version of the frontend. -

    - -### {% linkable_title System log enhanced %} - -Our about screen that shows the error logs has gained a nice upgrade by [@postlund]. Now the 50 latest exceptions will be displayed with the option to get more information. - -

    - Screenshot of the about screen showing the system log. - Screenshot of the about screen showing the system log. -

    - -## {% linkable_title New Platforms %} - -- pyLoad download sensor ([@iMarkus] - [#10089]) ([sensor.pyload docs]) (new-platform) -- Add LaCrosse sensor platform ([@hthiery] - [#10195]) ([sensor.lacrosse docs]) (new-platform) -- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([sensor.neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform) -- Add platform and sensors for Vultr VPS ([@GenericStudent] - [#9928]) ([vultr docs]) ([binary_sensor.vultr docs]) ([sensor.vultr docs]) (new-platform) -- Adds support for Tile® Bluetooth trackers ([@bachya] - [#10478]) ([device_tracker.tile docs]) (new-platform) -- Support presence detection using Hitron Coda router ([@arilotter] - [#9682]) ([device_tracker.hitron_coda docs]) (new-platform) -- Add basic backend support for a system log ([@postlund] - [#10492]) ([system_log docs]) (new-platform) -- New sensor viaggiatreno. ([@fabfurnari] - [#10522]) ([sensor.viaggiatreno docs]) (new-platform) - -## {% linkable_title Release 0.58.1 - November 21 %} - -- Fix yweather ([@tinloaf] - [#10661]) ([weather.yweather docs]) -- Properly initialize Harmony remote ([@amelchio] - [#10665]) ([remote.harmony docs]) -- Handle the new version of HydroQuebec website ([@titilambert] - [#10682]) ([sensor.hydroquebec docs]) -- Fix for time_date sensor ([@etsinko] - [#10694]) ([sensor.time_date docs]) -- Frontend fixes ([@andrey-git] [@armills] [@balloob]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - - -## {% linkable_title Breaking Changes %} - - - `hass.states.is_state_attr(entity_id, attribute, value)` has been removed. The template version still exists. Unused method parameter `wait` has been removed from `hass.bus.async_fire` ([@balloob] - [#10305]) (breaking change) -- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform) -- Lutron released a firmware updated for the Caseta system which removed our ability to connect to and control the bridge device over SSH, breaking compatibility with pylutron_caseta and Home Assistant. Component has been updated to work again, please see the docs on how to set it up. ([@mdonoughe] - [#10286]) ([lutron_caseta docs]) (breaking change) - -## {% linkable_title All changes %} - -- Bump python-miio for improved device support ([@syssi] - [#10294]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) -- pyLoad download sensor ([@iMarkus] - [#10089]) ([sensor.pyload docs]) (new-platform) -- Add LaCrosse sensor platform ([@hthiery] - [#10195]) ([sensor.lacrosse docs]) (new-platform) -- Clean up core ([@balloob] - [#10305]) (breaking change) -- Refactor Neato botvac components as a vacuum ([@jabesq] - [#9946]) ([neato docs]) ([sensor.neato docs]) ([switch.neato docs]) ([vacuum.neato docs]) (breaking change) (new-platform) -- Move constants to setup.py ([@fabaff] - [#10312]) ([no_ip docs]) -- Add option to overwrite file to the downloader component ([@arsaboo] - [#10298]) ([downloader docs]) -- Use constants for HTTP headers ([@fabaff] - [#10313]) ([binary_sensor.aurora docs]) ([device_tracker.tplink docs]) ([device_tracker.upc_connect docs]) ([media_player.bluesound docs]) ([sensor.haveibeenpwned docs]) ([sensor.zamg docs]) ([telegram_bot.polling docs]) -- fix a import in test causing vs code to fail to discover ([@perosb] - [#10358]) -- Upgrade sqlalchemy to 1.1.15 ([@fabaff] - [#10330]) -- Move counter component ([@fabaff] - [#10332]) ([counter docs]) -- Add platform and sensors for Vultr VPS ([@GenericStudent] - [#9928]) ([vultr docs]) ([binary_sensor.vultr docs]) ([sensor.vultr docs]) (new-platform) -- Add heal_node and test_node services. ([@turbokongen] - [#10369]) ([zwave docs]) -- Addition of new binary sensor class 'plug' ([@echox] - [#10336]) ([binary_sensor docs]) -- Upgrae simplepush to 1.1.4 ([@fabaff] - [#10365]) ([notify.simplepush docs]) -- Update aiohttp to 2.3.1 ([@pvizeli] - [#10139]) -- Device model identification of the Xiaomi Philips Ceiling Lamp fixed. ([@syssi] - [#10401]) ([light.xiaomi_miio docs]) -- Zwave save cache to file now. ([@turbokongen] - [#10381]) -- Bump to 0.12.2 to fix urllib3 dependency ([@MisterWil] - [#10420]) ([abode docs]) -- Remove extra info from zwave entity states ([@armills] - [#10413]) ([zwave docs]) -- Fixes issue #10425 ([@robmarkcole] - [#10426]) ([sensor.london_air docs]) -- Add baudrate option to Serial sensor ([@dgomes] - [#10439]) ([sensor.serial docs]) (breaking change) -- Remove model info from state ([@balloob] - [#10399]) ([light.tradfri docs]) -- update tibber library ([@danielhiversen] - [#10460]) ([sensor.tibber docs]) -- update pywebpush==1.3.0 ([@perosb] - [#10374]) ([notify.html5 docs]) -- Fix slow WOL switch test ([@balloob] - [#10455]) -- Fix recorder stop on SQLite vacuuming error ([@milanvo] - [#10405]) -- Add include/exclude filter to mqtt_statestream ([@mw-white] - [#10354]) ([mqtt_statestream docs]) -- Upgrade to 0.1.2 ([@TopdRob] - [#10348]) ([notify.free_mobile docs]) -- Upgrade pyatv to 0.3.6 ([@TopdRob] - [#10349]) ([apple_tv docs]) -- Remove useless temp converting ([@pvizeli] - [#10465]) ([climate.homematic docs]) -- Upgrade apns2 to 0.3.0 ([@TopdRob] - [#10347]) ([notify.apns docs]) -- Improvement of KNX climate component ([@Julius2342] - [#10388]) ([knx docs]) ([climate.knx docs]) -- Updated gc100 package requirement to 1.0.3a ([@davegravy] - [#10484]) ([gc100 docs]) -- Remove lag from Harmony remote platform ([@amelchio] - [#10218]) ([remote docs]) ([remote.harmony docs]) -- Improve error handling. ([@cgtobi] - [#10482]) ([influxdb docs]) -- Upgrade psutil to 5.4.1 ([@fabaff] - [#10490]) ([sensor.systemmonitor docs]) -- Upgrade youtube_dl to 2017.11.06 ([@fabaff] - [#10491]) ([media_extractor docs]) -- Fix for telegram polling. (added pausing when error occurs) ([@sander76] - [#10214]) ([telegram_bot.polling docs]) -- add JSON processing capabilities to sensor_serial ([@dgomes] - [#10476]) ([sensor.serial docs]) -- upgrade to new pylutron_caseta with TLS ([@mdonoughe] - [#10286]) ([lutron_caseta docs]) (breaking change) -- Bump dev to 0.58.0.dev0 ([@fabaff] - [#10510]) -- OwnTracks Message Handling ([@ehagan] - [#10489]) ([device_tracker.owntracks docs]) -- Add support for Alexa intent slot synonyms. ([@kmdm] - [#10469]) -- Introduce media progress for Yamaha Musiccast devices ([@jalmeroth] - [#10256]) ([media_player.yamaha_musiccast docs]) -- Add an option to serve ES6 JS to clients ([@andrey-git] - [#10474]) -- Adapt to new yarl API ([@tinloaf] - [#10527]) ([tts.google docs]) -- Update nederlandse_spoorwegen.py to include platform information ([@hmmbob] - [#10494]) ([sensor.nederlandse_spoorwegen docs]) -- Pin yarl ([@tinloaf] - [#10528]) -- Support configuration of region (no service url neccessary ([@molobrakos] - [#10513]) ([volvooncall docs]) -- Fix import in tests ([@andrey-git] - [#10525]) -- Update axis.py ([@Kane610] - [#10412]) ([axis docs]) -- Add attribute to show who last un/set alarm (SPC) ([@mbrrg] - [#9906]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) -- Fixed Wink Quirky Aros bugs. ([@w1ll1am23] - [#10533]) ([climate.wink docs]) -- Adds support for Tile® Bluetooth trackers ([@bachya] - [#10478]) ([device_tracker.tile docs]) (new-platform) -- telegram_bot: Support for sending videos ([@vickyg3] - [#10470]) ([telegram_bot docs]) ([notify.telegram docs]) -- Pre-construct frontend index.html ([@balloob] - [#10520]) -- notify.html5: use new json save and load functions ([@perosb] - [#10416]) ([notify.html5 docs]) -- Change to device state attributes ([@dgomes] - [#10536]) ([sensor.serial docs]) -- Google Assistant request sync service ([@r4nd0mbr1ck] - [#10165]) -- Optimize concurrent access to media player image cache ([@amelchio] - [#10345]) ([media_player docs]) -- webostv: set current source correctly ([@KapJI] - [#10548]) ([media_player.webostv docs]) -- Upgrade pysnmp to 4.4.2 ([@fabaff] - [#10539]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) -- Fix and clean lametric ([@MartinHjelmare] - [#10391]) ([lametric docs]) ([notify.lametric docs]) -- Support presence detection using Hitron Coda router ([@arilotter] - [#9682]) ([device_tracker.hitron_coda docs]) (new-platform) -- Better support for int types ([@ziotibia81] - [#10409]) ([sensor.modbus docs]) -- Don't use the 'id' field since it can be autogenerated (fixes #10551). ([@kmdm] - [#10554]) -- pad packets to multiple of 4 characters ([@SteveEdson] - [#10560]) ([switch.broadlink docs]) -- Move temperature display helper from components to helpers ([@fabaff] - [#10555]) ([climate docs]) ([weather docs]) ([climate.eq3btsmart docs]) -- webostv: Reduce default timeout to prevent log spamming ([@abmantis] - [#10564]) ([media_player.webostv docs]) -- Fix lametric sound ([@MartinHjelmare] - [#10562]) ([lametric docs]) ([notify.lametric docs]) -- Use a template for the Universal media player state ([@azogue] - [#10395]) ([media_player.universal docs]) -- Verisure: Added option to set installation giid ([@abjorshammar] - [#10504]) ([verisure docs]) -- Bump ring_doorbell to 0.1.7 ([@tchellomello] - [#10566]) ([ring docs]) -- Add code to enable discovery for mqtt cover ([@marthoc] - [#10580]) ([cover.mqtt docs]) -- Google Assistant for climate entities: Support QUERY and respect system-wide unit_system setting. ([@emosenkis] - [#10346]) -- turn service call handler into coroutine ([@NovapaX] - [#10576]) ([configurator docs]) -- Add basic backend support for a system log ([@postlund] - [#10492]) ([system_log docs]) (new-platform) -- Tradfri unique identities ([@NovapaX] - [#10414]) ([tradfri docs]) -- Add panel build type ([@balloob] - [#10589]) -- Cloud updates ([@balloob] - [#10567]) -- Upgrade youtube_dl to 2017.11.15 ([@fabaff] - [#10592]) ([media_extractor docs]) -- Fix Yahoo Weather icons over SSL ([@OnFreund] - [#10602]) ([sensor.yweather docs]) -- Arlo - Fixes for updated library ([@jwillaz] - [#9892]) ([arlo docs]) ([camera.arlo docs]) ([sensor.arlo docs]) -- Do not add panel from system_log ([@postlund] - [#10600]) ([system_log docs]) -- Fix ValueError exception ([@ziotibia81] - [#10596]) ([sensor.modbus docs]) -- Fix Hikvision (motion) switch bug ([@arsaboo] - [#10608]) ([switch.hikvisioncam docs]) -- Allow unicode when dumping yaml ([@andrey-git] - [#10607]) -- Support script execution for Alexa ([@micbase] - [#10517]) -- bump client version ([@wardcraigj] - [#10610]) ([alarm_control_panel.totalconnect docs]) -- New sensor viaggiatreno. ([@fabfurnari] - [#10522]) ([sensor.viaggiatreno docs]) (new-platform) -- Modbus switch register support ([@ziotibia81] - [#10563]) ([switch.modbus docs]) -- Upgrade mypy to 0.550 ([@fabaff] - [#10591]) -- Small fix to be able to use mac and vendor in "device_tracker_new_device" event. ([@Boltgolt] - [#10537]) ([device_tracker docs]) -- add support for color temperature and color to Google Assistant ([@perosb] - [#10039]) -- Cleanup old stale restore feature ([@pvizeli] - [#10593]) ([light docs]) -- Correct input_datetime initial value parsing ([@colindunn] - [#10417]) ([input_datetime docs]) -- Change generic thermostat to control heating on mode change Off -> Auto ([@milanvo] - [#10601]) ([climate.generic_thermostat docs]) -- Improve WUnderground config validation ([@milanvo] - [#10573]) ([sensor.wunderground docs]) -- update hbmqtt to 0.9.1 ([@masarliev] - [#10611]) -- Allow to pass YandexTTS options via sevice call ([@andrey-git] - [#10578]) ([tts docs]) ([tts.yandextts docs]) -- Snapcast: bump version and enable reconnect. ([@janLo] - [#10626]) ([media_player.snapcast docs]) -- Fix async missing decorators ([@armills] - [#10628]) -- Alexa slot synonym fix ([@devspacenine] - [#10614]) -- Adjust logging in downloader component ([@amelchio] - [#10622]) ([downloader docs]) -- Added sorted() to python_script ([@etsinko] - [#10621]) ([python_script docs]) -- Add loglinefetch for frontend API call ([@turbokongen] - [#10579]) -- Fixes AirVisual bug regarding incorrect location data ([@bachya] - [#10054]) ([sensor.airvisual docs]) -- Make MQTT reconnection logic more resilient and fix race condition ([@cezarsa] - [#10133]) ([mqtt docs]) -- Alexa improvements ([@robbiet480] - [#10632]) -- Print entity type in "too slow" warnings ([@andrey-git] - [#10641]) -- Bump pyatv to 0.3.8 ([@postlund] - [#10643]) ([apple_tv docs]) -- Implement entity and domain exclude/include for Alexa ([@robbiet480] - [#10647]) - -[#10039]: https://github.com/home-assistant/home-assistant/pull/10039 -[#10054]: https://github.com/home-assistant/home-assistant/pull/10054 -[#10089]: https://github.com/home-assistant/home-assistant/pull/10089 -[#10133]: https://github.com/home-assistant/home-assistant/pull/10133 -[#10139]: https://github.com/home-assistant/home-assistant/pull/10139 -[#10165]: https://github.com/home-assistant/home-assistant/pull/10165 -[#10195]: https://github.com/home-assistant/home-assistant/pull/10195 -[#10214]: https://github.com/home-assistant/home-assistant/pull/10214 -[#10218]: https://github.com/home-assistant/home-assistant/pull/10218 -[#10256]: https://github.com/home-assistant/home-assistant/pull/10256 -[#10286]: https://github.com/home-assistant/home-assistant/pull/10286 -[#10294]: https://github.com/home-assistant/home-assistant/pull/10294 -[#10298]: https://github.com/home-assistant/home-assistant/pull/10298 -[#10305]: https://github.com/home-assistant/home-assistant/pull/10305 -[#10312]: https://github.com/home-assistant/home-assistant/pull/10312 -[#10313]: https://github.com/home-assistant/home-assistant/pull/10313 -[#10330]: https://github.com/home-assistant/home-assistant/pull/10330 -[#10332]: https://github.com/home-assistant/home-assistant/pull/10332 -[#10336]: https://github.com/home-assistant/home-assistant/pull/10336 -[#10345]: https://github.com/home-assistant/home-assistant/pull/10345 -[#10346]: https://github.com/home-assistant/home-assistant/pull/10346 -[#10347]: https://github.com/home-assistant/home-assistant/pull/10347 -[#10348]: https://github.com/home-assistant/home-assistant/pull/10348 -[#10349]: https://github.com/home-assistant/home-assistant/pull/10349 -[#10354]: https://github.com/home-assistant/home-assistant/pull/10354 -[#10358]: https://github.com/home-assistant/home-assistant/pull/10358 -[#10365]: https://github.com/home-assistant/home-assistant/pull/10365 -[#10369]: https://github.com/home-assistant/home-assistant/pull/10369 -[#10374]: https://github.com/home-assistant/home-assistant/pull/10374 -[#10381]: https://github.com/home-assistant/home-assistant/pull/10381 -[#10388]: https://github.com/home-assistant/home-assistant/pull/10388 -[#10391]: https://github.com/home-assistant/home-assistant/pull/10391 -[#10395]: https://github.com/home-assistant/home-assistant/pull/10395 -[#10399]: https://github.com/home-assistant/home-assistant/pull/10399 -[#10401]: https://github.com/home-assistant/home-assistant/pull/10401 -[#10405]: https://github.com/home-assistant/home-assistant/pull/10405 -[#10409]: https://github.com/home-assistant/home-assistant/pull/10409 -[#10412]: https://github.com/home-assistant/home-assistant/pull/10412 -[#10413]: https://github.com/home-assistant/home-assistant/pull/10413 -[#10414]: https://github.com/home-assistant/home-assistant/pull/10414 -[#10416]: https://github.com/home-assistant/home-assistant/pull/10416 -[#10417]: https://github.com/home-assistant/home-assistant/pull/10417 -[#10420]: https://github.com/home-assistant/home-assistant/pull/10420 -[#10426]: https://github.com/home-assistant/home-assistant/pull/10426 -[#10439]: https://github.com/home-assistant/home-assistant/pull/10439 -[#10455]: https://github.com/home-assistant/home-assistant/pull/10455 -[#10460]: https://github.com/home-assistant/home-assistant/pull/10460 -[#10465]: https://github.com/home-assistant/home-assistant/pull/10465 -[#10469]: https://github.com/home-assistant/home-assistant/pull/10469 -[#10470]: https://github.com/home-assistant/home-assistant/pull/10470 -[#10474]: https://github.com/home-assistant/home-assistant/pull/10474 -[#10476]: https://github.com/home-assistant/home-assistant/pull/10476 -[#10478]: https://github.com/home-assistant/home-assistant/pull/10478 -[#10482]: https://github.com/home-assistant/home-assistant/pull/10482 -[#10484]: https://github.com/home-assistant/home-assistant/pull/10484 -[#10489]: https://github.com/home-assistant/home-assistant/pull/10489 -[#10490]: https://github.com/home-assistant/home-assistant/pull/10490 -[#10491]: https://github.com/home-assistant/home-assistant/pull/10491 -[#10492]: https://github.com/home-assistant/home-assistant/pull/10492 -[#10494]: https://github.com/home-assistant/home-assistant/pull/10494 -[#10504]: https://github.com/home-assistant/home-assistant/pull/10504 -[#10510]: https://github.com/home-assistant/home-assistant/pull/10510 -[#10513]: https://github.com/home-assistant/home-assistant/pull/10513 -[#10517]: https://github.com/home-assistant/home-assistant/pull/10517 -[#10520]: https://github.com/home-assistant/home-assistant/pull/10520 -[#10522]: https://github.com/home-assistant/home-assistant/pull/10522 -[#10525]: https://github.com/home-assistant/home-assistant/pull/10525 -[#10527]: https://github.com/home-assistant/home-assistant/pull/10527 -[#10528]: https://github.com/home-assistant/home-assistant/pull/10528 -[#10533]: https://github.com/home-assistant/home-assistant/pull/10533 -[#10536]: https://github.com/home-assistant/home-assistant/pull/10536 -[#10537]: https://github.com/home-assistant/home-assistant/pull/10537 -[#10539]: https://github.com/home-assistant/home-assistant/pull/10539 -[#10548]: https://github.com/home-assistant/home-assistant/pull/10548 -[#10554]: https://github.com/home-assistant/home-assistant/pull/10554 -[#10555]: https://github.com/home-assistant/home-assistant/pull/10555 -[#10560]: https://github.com/home-assistant/home-assistant/pull/10560 -[#10562]: https://github.com/home-assistant/home-assistant/pull/10562 -[#10563]: https://github.com/home-assistant/home-assistant/pull/10563 -[#10564]: https://github.com/home-assistant/home-assistant/pull/10564 -[#10566]: https://github.com/home-assistant/home-assistant/pull/10566 -[#10567]: https://github.com/home-assistant/home-assistant/pull/10567 -[#10573]: https://github.com/home-assistant/home-assistant/pull/10573 -[#10576]: https://github.com/home-assistant/home-assistant/pull/10576 -[#10578]: https://github.com/home-assistant/home-assistant/pull/10578 -[#10579]: https://github.com/home-assistant/home-assistant/pull/10579 -[#10580]: https://github.com/home-assistant/home-assistant/pull/10580 -[#10589]: https://github.com/home-assistant/home-assistant/pull/10589 -[#10591]: https://github.com/home-assistant/home-assistant/pull/10591 -[#10592]: https://github.com/home-assistant/home-assistant/pull/10592 -[#10593]: https://github.com/home-assistant/home-assistant/pull/10593 -[#10596]: https://github.com/home-assistant/home-assistant/pull/10596 -[#10600]: https://github.com/home-assistant/home-assistant/pull/10600 -[#10601]: https://github.com/home-assistant/home-assistant/pull/10601 -[#10602]: https://github.com/home-assistant/home-assistant/pull/10602 -[#10607]: https://github.com/home-assistant/home-assistant/pull/10607 -[#10608]: https://github.com/home-assistant/home-assistant/pull/10608 -[#10610]: https://github.com/home-assistant/home-assistant/pull/10610 -[#10611]: https://github.com/home-assistant/home-assistant/pull/10611 -[#10614]: https://github.com/home-assistant/home-assistant/pull/10614 -[#10621]: https://github.com/home-assistant/home-assistant/pull/10621 -[#10622]: https://github.com/home-assistant/home-assistant/pull/10622 -[#10626]: https://github.com/home-assistant/home-assistant/pull/10626 -[#10628]: https://github.com/home-assistant/home-assistant/pull/10628 -[#10632]: https://github.com/home-assistant/home-assistant/pull/10632 -[#10641]: https://github.com/home-assistant/home-assistant/pull/10641 -[#10643]: https://github.com/home-assistant/home-assistant/pull/10643 -[#10647]: https://github.com/home-assistant/home-assistant/pull/10647 -[#9682]: https://github.com/home-assistant/home-assistant/pull/9682 -[#9892]: https://github.com/home-assistant/home-assistant/pull/9892 -[#9906]: https://github.com/home-assistant/home-assistant/pull/9906 -[#9928]: https://github.com/home-assistant/home-assistant/pull/9928 -[#9946]: https://github.com/home-assistant/home-assistant/pull/9946 -[@Boltgolt]: https://github.com/Boltgolt -[@GenericStudent]: https://github.com/GenericStudent -[@Julius2342]: https://github.com/Julius2342 -[@Kane610]: https://github.com/Kane610 -[@KapJI]: https://github.com/KapJI -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@MisterWil]: https://github.com/MisterWil -[@NovapaX]: https://github.com/NovapaX -[@OnFreund]: https://github.com/OnFreund -[@SteveEdson]: https://github.com/SteveEdson -[@TopdRob]: https://github.com/TopdRob -[@abjorshammar]: https://github.com/abjorshammar -[@abmantis]: https://github.com/abmantis -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@arilotter]: https://github.com/arilotter -[@armills]: https://github.com/armills -[@arsaboo]: https://github.com/arsaboo -[@azogue]: https://github.com/azogue -[@bachya]: https://github.com/bachya -[@balloob]: https://github.com/balloob -[@cezarsa]: https://github.com/cezarsa -[@cgtobi]: https://github.com/cgtobi -[@colindunn]: https://github.com/colindunn -[@danielhiversen]: https://github.com/danielhiversen -[@davegravy]: https://github.com/davegravy -[@devspacenine]: https://github.com/devspacenine -[@dgomes]: https://github.com/dgomes -[@echox]: https://github.com/echox -[@ehagan]: https://github.com/ehagan -[@emosenkis]: https://github.com/emosenkis -[@etsinko]: https://github.com/etsinko -[@fabaff]: https://github.com/fabaff -[@fabfurnari]: https://github.com/fabfurnari -[@hmmbob]: https://github.com/hmmbob -[@hthiery]: https://github.com/hthiery -[@iMarkus]: https://github.com/iMarkus -[@jabesq]: https://github.com/jabesq -[@jalmeroth]: https://github.com/jalmeroth -[@janLo]: https://github.com/janLo -[@jwillaz]: https://github.com/jwillaz -[@kmdm]: https://github.com/kmdm -[@marthoc]: https://github.com/marthoc -[@masarliev]: https://github.com/masarliev -[@mbrrg]: https://github.com/mbrrg -[@mdonoughe]: https://github.com/mdonoughe -[@micbase]: https://github.com/micbase -[@milanvo]: https://github.com/milanvo -[@molobrakos]: https://github.com/molobrakos -[@mw-white]: https://github.com/mw-white -[@perosb]: https://github.com/perosb -[@postlund]: https://github.com/postlund -[@pvizeli]: https://github.com/pvizeli -[@r4nd0mbr1ck]: https://github.com/r4nd0mbr1ck -[@robbiet480]: https://github.com/robbiet480 -[@c727]: https://github.com/c727 -[@robmarkcole]: https://github.com/robmarkcole -[@sander76]: https://github.com/sander76 -[@syssi]: https://github.com/syssi -[@tchellomello]: https://github.com/tchellomello -[@tinloaf]: https://github.com/tinloaf -[@turbokongen]: https://github.com/turbokongen -[@vickyg3]: https://github.com/vickyg3 -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[@ziotibia81]: https://github.com/ziotibia81 -[abode docs]: /components/abode/ -[alarm_control_panel.spc docs]: /components/alarm_control_panel.spc/ -[alarm_control_panel.totalconnect docs]: /components/alarm_control_panel.totalconnect/ -[apple_tv docs]: /components/apple_tv/ -[arlo docs]: /components/arlo/ -[axis docs]: /components/axis/ -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.aurora docs]: /components/binary_sensor.aurora/ -[binary_sensor.spc docs]: /components/binary_sensor.spc/ -[binary_sensor.vultr docs]: /components/binary_sensor.vultr/ -[camera.arlo docs]: /components/camera.arlo/ -[climate docs]: /components/climate/ -[climate.eq3btsmart docs]: /components/climate.eq3btsmart/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.homematic docs]: /components/climate.homematic/ -[climate.knx docs]: /components/climate.knx/ -[climate.wink docs]: /components/climate.wink/ -[cloud docs]: /components/cloud/ -[cloud.auth_api docs]: /components/cloud.auth_api/ -[cloud.const docs]: /components/cloud.const/ -[cloud.http_api docs]: /components/cloud.http_api/ -[cloud.iot docs]: /components/cloud.iot/ -[config.zwave docs]: /components/config.zwave/ -[configurator docs]: /components/configurator/ -[counter docs]: /components/counter/ -[cover.mqtt docs]: /components/cover.mqtt/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.hitron_coda docs]: /components/device_tracker.hitron_coda/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[device_tracker.tile docs]: /components/device_tracker.tile/ -[device_tracker.tplink docs]: /components/device_tracker.tplink/ -[device_tracker.upc_connect docs]: /components/device_tracker.upc_connect/ -[downloader docs]: /components/downloader/ -[gc100 docs]: /components/gc100/ -[google_assistant.smart_home docs]: /components/google_assistant.smart_home/ -[hassio docs]: /components/hassio/ -[influxdb docs]: /components/influxdb/ -[input_datetime docs]: /components/input_datetime/ -[knx docs]: /components/knx/ -[lametric docs]: /components/lametric/ -[light docs]: /components/light/ -[light.tradfri docs]: /components/light.tradfri/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[lutron_caseta docs]: /components/lutron_caseta/ -[media_extractor docs]: /components/media_extractor/ -[media_player docs]: /components/media_player/ -[media_player.bluesound docs]: /components/media_player.bluesound/ -[media_player.snapcast docs]: /components/media_player.snapcast/ -[media_player.universal docs]: /components/media_player.universal/ -[media_player.webostv docs]: /components/media_player.webostv/ -[media_player.yamaha_musiccast docs]: /components/media_player.yamaha_musiccast/ -[mqtt docs]: /components/mqtt/ -[mqtt.discovery docs]: /components/mqtt.discovery/ -[mqtt.server docs]: /components/mqtt.server/ -[mqtt_statestream docs]: /components/mqtt_statestream/ -[neato docs]: /components/neato/ -[no_ip docs]: /components/no_ip/ -[notify.apns docs]: /components/notify.apns/ -[notify.free_mobile docs]: /components/notify.free_mobile/ -[notify.html5 docs]: /components/notify.html5/ -[notify.lametric docs]: /components/notify.lametric/ -[notify.simplepush docs]: /components/notify.simplepush/ -[notify.telegram docs]: /components/notify.telegram/ -[python_script docs]: /components/python_script/ -[remote docs]: /components/remote/ -[remote.harmony docs]: /components/remote.harmony/ -[ring docs]: /components/ring/ -[sensor.airvisual docs]: /components/sensor.airvisual/ -[sensor.arlo docs]: /components/sensor.arlo/ -[sensor.haveibeenpwned docs]: /components/sensor.haveibeenpwned/ -[sensor.lacrosse docs]: /components/sensor.lacrosse/ -[sensor.london_air docs]: /components/sensor.london_air/ -[sensor.modbus docs]: /components/sensor.modbus/ -[sensor.neato docs]: /components/sensor.neato/ -[sensor.nederlandse_spoorwegen docs]: /components/sensor.nederlandse_spoorwegen/ -[sensor.pyload docs]: /components/sensor.pyload/ -[sensor.serial docs]: /components/sensor.serial/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.tibber docs]: /components/sensor.tibber/ -[sensor.viaggiatreno docs]: /components/sensor.viaggiatreno/ -[sensor.vultr docs]: /components/sensor.vultr/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sensor.yweather docs]: /components/sensor.yweather/ -[sensor.zamg docs]: /components/sensor.zamg/ -[spc docs]: /components/spc/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.hikvisioncam docs]: /components/switch.hikvisioncam/ -[switch.modbus docs]: /components/switch.modbus/ -[switch.neato docs]: /components/switch.neato/ -[switch.snmp docs]: /components/switch.snmp/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[system_log docs]: /components/system_log/ -[telegram_bot docs]: /components/telegram_bot/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[tradfri docs]: /components/tradfri/ -[tts docs]: /components/tts/ -[tts.google docs]: /components/tts.google/ -[tts.yandextts docs]: /components/tts.yandextts/ -[vacuum.neato docs]: /components/vacuum.neato/ -[verisure docs]: /components/verisure/ -[volvooncall docs]: /components/volvooncall/ -[vultr docs]: /components/vultr/ -[weather docs]: /components/weather/ -[weather.demo docs]: /components/weather.demo/ -[websocket_api docs]: /components/websocket_api/ -[zwave docs]: /components/zwave/ -[#10661]: https://github.com/home-assistant/home-assistant/pull/10661 -[#10665]: https://github.com/home-assistant/home-assistant/pull/10665 -[#10682]: https://github.com/home-assistant/home-assistant/pull/10682 -[#10694]: https://github.com/home-assistant/home-assistant/pull/10694 -[@amelchio]: https://github.com/amelchio -[@etsinko]: https://github.com/etsinko -[@tinloaf]: https://github.com/tinloaf -[@titilambert]: https://github.com/titilambert -[remote.harmony docs]: /components/remote.harmony/ -[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ -[sensor.time_date docs]: /components/sensor.time_date/ -[weather.yweather docs]: /components/weather.yweather/ diff --git a/source/_posts/2017-11-29-hassio-virtual-machine.markdown b/source/_posts/2017-11-29-hassio-virtual-machine.markdown deleted file mode 100644 index 2f53ef97d9..0000000000 --- a/source/_posts/2017-11-29-hassio-virtual-machine.markdown +++ /dev/null @@ -1,153 +0,0 @@ ---- -layout: post -title: "Set up Hass.io on top of a virtual machine" -description: "A how-to about using Hass.io on x86_64 hardware in a virtualized way." -date: 2017-11-29 06:00:00 +0000 -date_formatted: "November 29, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: How-To -og_image: /images/blog/2017-11-hassio-virtual/social.png ---- - - -The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with [Hass.io](/hassio/). For a test or if you have a system which is already hosting virtual machines then the [**Hass.io installer**](/hassio/installation/#alternative-install-on-generic-linux-server) is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with [libvirt](https://libvirt.org/) support and the guest will be running Debian 9. Hass.io will be installed on the guest. - - - -Assuming that you already have setup `libvirtd`. You might need to install `virt-builder` and `virt-viewer` additionally. - -```bash -$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer -``` - -We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use `$ virt-builder --list` to get an overview about what's operating systems are available if you prefer to use a different system. - -```bash -$ sudo virt-builder debian-9 \ - --output /var/lib/libvirt/images/hassio.img \ - --format qcow2 \ - --size 10G \ - --root-password password:test123 \ - --hostname hassio \ - --firstboot-command "dpkg-reconfigure openssh-server" -[...] -[ 147.6] Finishing off - Output file: /var/lib/libvirt/images/hassio.img - Output size: 10.0G - Output format: qcow2 - Total usable space: 9.3G - Free space: 8.1G (87%) -``` - -Now, we are making our new virtual machine available for `libvirtd`. If you get an error that the OS is unknown, use `$ osinfo-query os` to get the name to use with `--os-variant`. To access the virtual machine is connected to the bridge `bridge0`. - -```bash -$ sudo virt-install --name hassio --import --ram 1024 \ - --os-variant debian9 -w bridge=bridge0 \ - --autostart --disk /var/lib/libvirt/images/hassio.img -``` - -

    - - Hass.io virtual machine in Virtual Machine Manager -

    - -Depending on your preferences you can use the Virtual Machine Manager (`virt-manager`) or `virsh` to manage the created virtual machine. Log in and create an user with `# useradd ha` and set a password with `# passwd ha`. We will need that user to make a SSH connection to the virtual machine. - -Log in as `ha` with the given password. If your are using the default network of `libvirtd` then the DHCP range is defined in `/var/lib/libvirt/dnsmasq/default.conf`. In this guide the virtual machine is present at 192.168.0.109. - -```bash -$ ssh ha@192.168.0.109 -ha@192.168.0.109's password: -Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 -[...] -$ -``` - -Install the requirements after you switch the user to `root`. - -```bash -$ su -Password: -root@hassio:/home/ha# -root@hassio:/home/ha# apt-get update -root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \ - apt-transport-https ca-certificates -``` - -We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages. - -```bash -root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg -root@hassio:/home/ha# apt-key add gpg -OK -root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list -root@hassio:/home/ha# apt-get update -``` - -Now, it's possible to install a current release of [Docker](https://www.docker.com/). - -```bash -root@hassio:/home/ha# apt-get -y install docker-ce -``` - -Start `docker` and enable it. - -```bash -root@hassio:/home/ha# systemctl start docker && systemctl enable docker -``` - -An [installation script](https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio) will take care about the setup of all moving parts. - -```bash -root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash - -[INFO] Install supervisor docker -[INFO] Install generic HostControl -[INFO] Install startup scripts -[INFO] Init systemd -Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service. -[INFO] Start services -``` - -If it's done, then there will be two new containers. - -```bash -root@hassio:/home/ha# docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -ada5bbfc74f0 homeassistant/qemux86-64-homeassistant "/usr/bin/entry.sh..." 4 minutes ago Up 4 minutes homeassistant -5954ac452ffc homeassistant/amd64-hassio-supervisor "/usr/bin/entry.sh..." 7 minutes ago Up 7 minutes hassio_supervisor -``` - -After a connection to the container which is containing Home Assistant is made, you will see the log output. - -```bash -root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0 -2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling - - Hass.io overview -

    - -Keep in mind that there are limitations with this approach. Not all [add-ons](/addons/) will work and some don't make sense to use as the hardware is not present. E.g., use the [SSH community add-on](https://github.com/hassio-addons/addon-ssh) instead of the default [SSH add-on](/addons/ssh/). - diff --git a/source/_posts/2017-12-03-release-59.markdown b/source/_posts/2017-12-03-release-59.markdown deleted file mode 100644 index bfadb2646a..0000000000 --- a/source/_posts/2017-12-03-release-59.markdown +++ /dev/null @@ -1,431 +0,0 @@ ---- -layout: post -title: "0.59: Order pizza, Entity Picker, Color Wheel" -description: "If you don't want to create items on our shopping list with HTTP requests, just order pizza!" -date: 2017-12-03 02:00:00 -date_formatted: "December 3, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2017-12-0.59/components.png ---- - - - -We are proud to announce the availability of Home Assistant 0.59. To keep you in the loop: This is the second last release in 2017. We have stuck to our bi-weekly release cycle for another year but we decided that we will take a little break between Christmas and New Year. - -## {% linkable_title Dominos Pizza platform %} -With the Dominos Pizza integration made by [@wardcraigj] your home is now taking care that you don't starve. In combination with a [Skybell](/components/skybell/) or a [DoorBird](/components/doorbird/) you will know exactly when the pizza is in front of your door. - -## {% linkable_title Color picker %} -[@NovapaX] created a new color picker. While dragging the color badge with your finger, a badge will appear above your finger so you can see the current color. - -

    - Screenshot of the color wheel. - Screenshot of the color wheel. -

    - -## {% linkable_title Shopping list tweaks %} -[@balloob] has refreshed the shopping list UI to make it more usable. It's now possible to add items by typing, instead of just voice. Also editing has been made easier. - -## {% linkable_title Entity picker %} -[@balloob] improved the way if you want to pick an entity. In the automation editor, the script editor and the service section of the Developer Tools it's much easier to identify the right one! The automation editor will only suggest relevant entities. - -

    - Screenshot of the Entity Picker. - Screenshot of the of the Entity Picker. -

    - -## {% linkable_title Hass.io Add-ons %} -If you follow our [twitter feed](https://twitter.com/home_assistant) then you may already know that [@frenck](https://github.com/frenck) spent some time to bring new stuff to the [Community Hass.io Add-ons repository](https://github.com/hassio-addons/repository). - -- [Cloud9 IDE](https://github.com/hassio-addons/addon-ide) -- [Terminal support](https://github.com/hassio-addons/addon-terminal) -- New release of the [Tor add-on](https://github.com/hassio-addons/addon-tor) - -## {% linkable_title New Platforms %} - -- Support for Unifi direct access device tracker (No unifi controller software) ([@w1ll1am23] - [#10097]) ([device_tracker.unifi_direct docs]) (new-platform) -- Tahoma platform for Somfy Covers and Sensors ([@philklei] - [#10652]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) (new-platform) -- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform) -- Add Dominos Pizza platform ([@wardcraigj] - [#10379]) ([dominos docs]) (new-platform) -- Add tts.baidu platform ([@zhujisheng] - [#10724]) ([tts.baidu docs]) (new-platform) -- Create ecobee weather platform ([@PhracturedBlue] - [#10869]) ([ecobee docs]) ([weather.ecobee docs]) (new-platform) - -## {% linkable_title Release 0.59.1 - December 4 %} - -- Fix Notifications for Android TV ([@danielperna84] - [#10798]) ([notify.nfandroidtv docs]) -- fix iOS component config generation ([@wrboyce] - [#10923]) -- Fix color wheel in group more info dialogs ([@NovapaX] - [#10934]) -- Dominos no order fix ([@wardcraigj] - [#10935]) ([dominos docs]) - -## {% linkable_title Release 0.59.2 - December 6 %} - -- Require FF43 for latest js ([@andrey-git] - [#10941]) -- Fix linksys_ap.py by inheriting DeviceScanner ([@mateuszdrab] - [#10947]) ([device_tracker.linksys_ap docs]) -- Upgrade tellduslive library version (closes https://github.com/home-assistant/home-assistant/issues/10922) ([@molobrakos] - [#10950]) ([tellduslive docs]) -- Allow chime to work for wink siren/chime ([@w1ll1am23] - [#10961]) ([wink docs]) -- Reload closest store on api menu request ([@wardcraigj] - [#10962]) ([dominos docs]) -- Revert pychromecast update ([@balloob] - [#10989]) ([media_player.cast docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - - -## {% linkable_title Breaking Changes %} - -- Added cycles config option to LaMetric notifications ([@frittes] - [#10656]) ([notify.lametric docs]) (breaking change) -- Fix name collision when using multiple Hue bridges ([@zBart] - [#10486]) ([light.hue docs]) (breaking change) -- Single LEDs in Blinkt support ([@matemaciek] - [#10581]) ([light.blinkt docs]) (breaking change) -- Tellduslive update with support for auto config and Local api ([@fredrike] - [#10435]) ([tellduslive docs]) (breaking change) -- Add useragent-based detection of JS version ([@andrey-git] - [#10776]) (breaking change) - -## {% linkable_title All changes %} - -- Added unit_of_measurement to Currencylayer ([@arsaboo] - [#10598]) ([sensor.currencylayer docs]) -- Change generic thermostat - any toggle device as heater switch ([@milanvo] - [#10597]) ([climate.generic_thermostat docs]) -- Add hddtemp sensor device even if unreachable. ([@cgtobi] - [#10623]) ([sensor.hddtemp docs]) -- Restore target temperature for generic thermostat ([@tinloaf] - [#10635]) ([climate.generic_thermostat docs]) -- Update lnetatmo ([@gieljnssns] - [#10631]) ([netatmo docs]) -- Support for Unifi direct access device tracker (No unifi controller software) ([@w1ll1am23] - [#10097]) ([device_tracker.unifi_direct docs]) (new-platform) -- Add Facebook Notification tests ([@broox] - [#10642]) -- Change some warnings to info ([@cgarwood] - [#10386]) ([emulated_hue docs]) -- Added cycles config option to LaMetric notifications ([@frittes] - [#10656]) ([notify.lametric docs]) (breaking change) -- Netatmo httperror403 fix ([@gieljnssns] - [#10659]) ([netatmo docs]) -- Bump dev to 0.59.0.dev0 ([@fabaff] - [#10675]) -- Include unit_of_measurement as InfluxDb field ([@PeteBa] - [#9790]) ([influxdb docs]) -- Tahoma platform for Somfy Covers and Sensors ([@philklei] - [#10652]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) (new-platform) -- Populate measurement state field for HA states like home/not_home ([@PeteBa] - [#9833]) ([influxdb docs]) -- Reorganize lint travis builds ([@balloob] - [#10670]) -- Refactored to new global json saving and loading ([@mnigbur] - [#10677]) -- Convert configurator to use markdown ([@balloob] - [#10668]) ([configurator docs]) ([light.hue docs]) -- index.html improvements ([@balloob] - [#10696]) -- Add Arm Custom Bypass to alarm_control_panel ([@uchagani] - [#10697]) ([alarm_control_panel docs]) -- Fix conversation ([@balloob] - [#10686]) ([conversation docs]) -- Shopping list: add item HTTP API ([@balloob] - [#10674]) ([shopping_list docs]) -- Add presence device_class ([@arsaboo] - [#10705]) ([binary_sensor docs]) -- python-miio version bumped for improved device support. ([@syssi] - [#10720]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Adding Queue count sensor ([@bigwoof] - [#10723]) ([sensor.sabnzbd docs]) -- Bump pychromecast to 1.0.2 ([@OttoWinter] - [#10728]) ([media_player.cast docs]) -- Fix unit conversion for Sensibo A/C units ([@bryanyork] - [#10692]) ([climate.sensibo docs]) -- Optimised images. Saved 80 KB out of 656 KB. 12.3% overall (up to 32.1% per file) ([@grischard] - [#10735]) -- Add transmission rate ([@svenstaro] - [#10740]) ([sensor.fritzbox_netmonitor docs]) -- Update pytradfri to 4.1.0 ([@lwis] - [#10521]) ([tradfri docs]) ([light.tradfri docs]) -- Use new DoorBirdPy (v0.1.0) ([@Klikini] - [#10734]) ([doorbird docs]) -- Add fan and reduce I/O calls in radiotherm ([@TD22057] - [#10437]) ([climate.radiotherm docs]) -- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform) -- Temporarily fix yahoo weather API issue and add unit test. ([@cgtobi] - [#10737]) ([sensor.yweather docs]) -- Google assistant climate mode fix ([@braddparker] - [#10726]) ([google_assistant.smart_home docs]) -- Protect sensitive information for Amcrest cameras ([@tchellomello] - [#10569]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs]) -- InfluxDB send retry after IOError ([@janLo] - [#10263]) ([influxdb docs]) -- Add Dominos Pizza platform ([@wardcraigj] - [#10379]) ([dominos docs]) (new-platform) -- Fix name collision when using multiple Hue bridges ([@zBart] - [#10486]) ([light.hue docs]) (breaking change) -- Make shell_command async ([@n8henrie] - [#10741]) ([shell_command docs]) -- Update CODEOWNERS with hive Component / Platforms ([@Rendili] - [#10775]) -- Bump total-connect-client version ([@uchagani] - [#10769]) ([alarm_control_panel.totalconnect docs]) -- Fix scene description formatting. ([@balloob] - [#10785]) -- Fixes #10773: Demo Alarm Broken ([@uchagani] - [#10777]) ([alarm_control_panel.demo docs]) -- Load Ring camera only with Ring Protect plan activated ([@tchellomello] - [#10739]) ([ring docs]) ([camera.ring docs]) -- system_log improvements ([@andrey-git] - [#10709]) ([system_log docs]) -- Fix WUnderground error handling, rework entity methods ([@milanvo] - [#10295]) ([sensor.wunderground docs]) -- Add away_mode_name to arlo alarm control panel ([@bcl1713] - [#10796]) ([alarm_control_panel.arlo docs]) -- Add missing docstring ([@fabaff] - [#10812]) ([notify.pushbullet docs]) -- Cloud cognito switch ([@balloob] - [#10823]) ([cloud docs]) ([cloud.auth_api docs]) ([cloud.iot docs]) -- Added sensor types from telldus server src ([@rasmusbe] - [#10787]) ([sensor.tellduslive docs]) -- Add tts.baidu platform ([@zhujisheng] - [#10724]) ([tts.baidu docs]) (new-platform) -- make RGB values consistent as int. fixes #10766 ([@perosb] - [#10782]) -- Single LEDs in Blinkt support ([@matemaciek] - [#10581]) ([light.blinkt docs]) (breaking change) -- Add debug ([@dgomes] - [#10828]) ([sensor.serial docs]) -- Fix "recently pair device" ([@stephenyeargin] - [#10832]) -- Fixed Yeelight's color temperature conversion to RGB ([@chocomega] - [#10831]) ([light.yeelight docs]) -- Fix for Sensibo with missing temperature ([@andrey-git] - [#10801]) ([climate.sensibo docs]) -- upgrade somecomfort to 0.5.0 ([@dferrante] - [#10834]) ([climate.honeywell docs]) -- Add support for logarithm in templates ([@odinuge] - [#10824]) -- Changing handling for google_assistant groups to treat them as lights. ([@snowzach] - [#10111]) -- Tellduslive update with support for auto config and Local api ([@fredrike] - [#10435]) ([tellduslive docs]) (breaking change) -- KNX: Added config option for broadcasting current time to KNX bus. ([@Julius2342] - [#10654]) ([knx docs]) -- Ecobee set humidity level ([@cbulock] - [#10780]) ([ecobee docs]) ([climate.ecobee docs]) -- Add device class for low battery ([@schmittx] - [#10829]) ([binary_sensor docs]) -- Tellduslive: Use magic constants for battery level. Also, the previous formula for battery level was wrong. ([@molobrakos] - [#10788]) ([tellduslive docs]) -- Add useragent-based detection of JS version ([@andrey-git] - [#10776]) (breaking change) -- add support for multiple execution per execute request ([@perosb] - [#10844]) ([google_assistant.http docs]) -- Upgrade HomeMatic, add devices ([@danielperna84] - [#10845]) ([homematic docs]) ([binary_sensor.homematic docs]) ([sensor.homematic docs]) -- Climate component: add supported_features ([@tinloaf] - [#10658]) ([climate docs]) ([climate.generic_thermostat docs]) ([climate.mqtt docs]) -- Upgrade mutagen to 1.39 ([@fabaff] - [#10851]) ([tts docs]) -- Updated codeowner for Tile device tracker ([@bachya] - [#10861]) -- Revert "KNX: Added config option for broadcasting current time to KNX bus. (#10654)" ([@Julius2342] - [#10874]) ([knx docs]) -- Upgrade distro to 1.1.0 ([@fabaff] - [#10850]) ([updater docs]) -- Bugfix trigger state with multible entities ([@pvizeli] - [#10857]) ([automation.state docs]) -- tellstick fix DEPENDENCIES and update tellcore-net ([@pvizeli] - [#10859]) ([tellstick docs]) ([sensor.tellstick docs]) -- Upgrade aiohttp to 2.3.5 ([@fabaff] - [#10889]) -- Upgrade fastdotcom to 0.0.3 ([@fabaff] - [#10886]) ([sensor.fastdotcom docs]) -- Upgrade schiene to 0.19 ([@fabaff] - [#10887]) ([sensor.deutsche_bahn docs]) -- Xiaomi Vacuum: remove deprecated calls ([@rytilahti] - [#10839]) ([vacuum.xiaomi_miio docs]) -- Create ecobee weather platform ([@PhracturedBlue] - [#10869]) ([ecobee docs]) ([weather.ecobee docs]) (new-platform) -- Microsoft Text-to-speech: Fixing missing en-gb support bug ([@jeroenterheerdt] - [#10429]) ([tts.microsoft docs]) -- Upgrade youtube_dl to 2017.11.26 ([@fabaff] - [#10890]) ([media_extractor docs]) -- Upgrade yarl to 0.15.0 ([@fabaff] - [#10888]) -- Fix tests ([@pvizeli] - [#10891]) -- Refactored WHOIS sensor to resolve assumed key errors ([@GenericStudent] - [#10662]) ([sensor.whois docs]) -- Serve latest extra_html in dev mode ([@andrey-git] - [#10863]) -- Reload groups after saving a change via config API ([@andrey-git] - [#10877]) ([config.group docs]) -- Fix issues from review of ecobee weather component ([@PhracturedBlue] - [#10903]) ([weather.ecobee docs]) -- Bugfix #10902 ([@turbokongen] - [#10904]) ([zwave docs]) - -[#10097]: https://github.com/home-assistant/home-assistant/pull/10097 -[#10111]: https://github.com/home-assistant/home-assistant/pull/10111 -[#10263]: https://github.com/home-assistant/home-assistant/pull/10263 -[#10295]: https://github.com/home-assistant/home-assistant/pull/10295 -[#10379]: https://github.com/home-assistant/home-assistant/pull/10379 -[#10386]: https://github.com/home-assistant/home-assistant/pull/10386 -[#10429]: https://github.com/home-assistant/home-assistant/pull/10429 -[#10435]: https://github.com/home-assistant/home-assistant/pull/10435 -[#10437]: https://github.com/home-assistant/home-assistant/pull/10437 -[#10486]: https://github.com/home-assistant/home-assistant/pull/10486 -[#10521]: https://github.com/home-assistant/home-assistant/pull/10521 -[#10569]: https://github.com/home-assistant/home-assistant/pull/10569 -[#10581]: https://github.com/home-assistant/home-assistant/pull/10581 -[#10597]: https://github.com/home-assistant/home-assistant/pull/10597 -[#10598]: https://github.com/home-assistant/home-assistant/pull/10598 -[#10623]: https://github.com/home-assistant/home-assistant/pull/10623 -[#10631]: https://github.com/home-assistant/home-assistant/pull/10631 -[#10635]: https://github.com/home-assistant/home-assistant/pull/10635 -[#10642]: https://github.com/home-assistant/home-assistant/pull/10642 -[#10652]: https://github.com/home-assistant/home-assistant/pull/10652 -[#10654]: https://github.com/home-assistant/home-assistant/pull/10654 -[#10656]: https://github.com/home-assistant/home-assistant/pull/10656 -[#10658]: https://github.com/home-assistant/home-assistant/pull/10658 -[#10659]: https://github.com/home-assistant/home-assistant/pull/10659 -[#10662]: https://github.com/home-assistant/home-assistant/pull/10662 -[#10668]: https://github.com/home-assistant/home-assistant/pull/10668 -[#10670]: https://github.com/home-assistant/home-assistant/pull/10670 -[#10674]: https://github.com/home-assistant/home-assistant/pull/10674 -[#10675]: https://github.com/home-assistant/home-assistant/pull/10675 -[#10677]: https://github.com/home-assistant/home-assistant/pull/10677 -[#10686]: https://github.com/home-assistant/home-assistant/pull/10686 -[#10692]: https://github.com/home-assistant/home-assistant/pull/10692 -[#10696]: https://github.com/home-assistant/home-assistant/pull/10696 -[#10697]: https://github.com/home-assistant/home-assistant/pull/10697 -[#10705]: https://github.com/home-assistant/home-assistant/pull/10705 -[#10709]: https://github.com/home-assistant/home-assistant/pull/10709 -[#10720]: https://github.com/home-assistant/home-assistant/pull/10720 -[#10723]: https://github.com/home-assistant/home-assistant/pull/10723 -[#10724]: https://github.com/home-assistant/home-assistant/pull/10724 -[#10726]: https://github.com/home-assistant/home-assistant/pull/10726 -[#10728]: https://github.com/home-assistant/home-assistant/pull/10728 -[#10734]: https://github.com/home-assistant/home-assistant/pull/10734 -[#10735]: https://github.com/home-assistant/home-assistant/pull/10735 -[#10737]: https://github.com/home-assistant/home-assistant/pull/10737 -[#10739]: https://github.com/home-assistant/home-assistant/pull/10739 -[#10740]: https://github.com/home-assistant/home-assistant/pull/10740 -[#10741]: https://github.com/home-assistant/home-assistant/pull/10741 -[#10769]: https://github.com/home-assistant/home-assistant/pull/10769 -[#10775]: https://github.com/home-assistant/home-assistant/pull/10775 -[#10776]: https://github.com/home-assistant/home-assistant/pull/10776 -[#10777]: https://github.com/home-assistant/home-assistant/pull/10777 -[#10780]: https://github.com/home-assistant/home-assistant/pull/10780 -[#10782]: https://github.com/home-assistant/home-assistant/pull/10782 -[#10785]: https://github.com/home-assistant/home-assistant/pull/10785 -[#10787]: https://github.com/home-assistant/home-assistant/pull/10787 -[#10788]: https://github.com/home-assistant/home-assistant/pull/10788 -[#10796]: https://github.com/home-assistant/home-assistant/pull/10796 -[#10801]: https://github.com/home-assistant/home-assistant/pull/10801 -[#10812]: https://github.com/home-assistant/home-assistant/pull/10812 -[#10823]: https://github.com/home-assistant/home-assistant/pull/10823 -[#10824]: https://github.com/home-assistant/home-assistant/pull/10824 -[#10828]: https://github.com/home-assistant/home-assistant/pull/10828 -[#10829]: https://github.com/home-assistant/home-assistant/pull/10829 -[#10831]: https://github.com/home-assistant/home-assistant/pull/10831 -[#10832]: https://github.com/home-assistant/home-assistant/pull/10832 -[#10834]: https://github.com/home-assistant/home-assistant/pull/10834 -[#10839]: https://github.com/home-assistant/home-assistant/pull/10839 -[#10844]: https://github.com/home-assistant/home-assistant/pull/10844 -[#10845]: https://github.com/home-assistant/home-assistant/pull/10845 -[#10850]: https://github.com/home-assistant/home-assistant/pull/10850 -[#10851]: https://github.com/home-assistant/home-assistant/pull/10851 -[#10857]: https://github.com/home-assistant/home-assistant/pull/10857 -[#10859]: https://github.com/home-assistant/home-assistant/pull/10859 -[#10861]: https://github.com/home-assistant/home-assistant/pull/10861 -[#10863]: https://github.com/home-assistant/home-assistant/pull/10863 -[#10869]: https://github.com/home-assistant/home-assistant/pull/10869 -[#10874]: https://github.com/home-assistant/home-assistant/pull/10874 -[#10877]: https://github.com/home-assistant/home-assistant/pull/10877 -[#10886]: https://github.com/home-assistant/home-assistant/pull/10886 -[#10887]: https://github.com/home-assistant/home-assistant/pull/10887 -[#10888]: https://github.com/home-assistant/home-assistant/pull/10888 -[#10889]: https://github.com/home-assistant/home-assistant/pull/10889 -[#10890]: https://github.com/home-assistant/home-assistant/pull/10890 -[#10891]: https://github.com/home-assistant/home-assistant/pull/10891 -[#10903]: https://github.com/home-assistant/home-assistant/pull/10903 -[#10904]: https://github.com/home-assistant/home-assistant/pull/10904 -[#9790]: https://github.com/home-assistant/home-assistant/pull/9790 -[#9804]: https://github.com/home-assistant/home-assistant/pull/9804 -[#9833]: https://github.com/home-assistant/home-assistant/pull/9833 -[@GenericStudent]: https://github.com/GenericStudent -[@Julius2342]: https://github.com/Julius2342 -[@Klikini]: https://github.com/Klikini -[@OttoWinter]: https://github.com/OttoWinter -[@PeteBa]: https://github.com/PeteBa -[@PhracturedBlue]: https://github.com/PhracturedBlue -[@Rendili]: https://github.com/Rendili -[@TD22057]: https://github.com/TD22057 -[@andrey-git]: https://github.com/andrey-git -[@arsaboo]: https://github.com/arsaboo -[@bachya]: https://github.com/bachya -[@balloob]: https://github.com/balloob -[@bcl1713]: https://github.com/bcl1713 -[@bigwoof]: https://github.com/bigwoof -[@braddparker]: https://github.com/braddparker -[@broox]: https://github.com/broox -[@bryanyork]: https://github.com/bryanyork -[@cbulock]: https://github.com/cbulock -[@cgarwood]: https://github.com/cgarwood -[@cgtobi]: https://github.com/cgtobi -[@chocomega]: https://github.com/chocomega -[@danielperna84]: https://github.com/danielperna84 -[@dferrante]: https://github.com/dferrante -[@dgomes]: https://github.com/dgomes -[@fabaff]: https://github.com/fabaff -[@fredrike]: https://github.com/fredrike -[@frittes]: https://github.com/frittes -[@gieljnssns]: https://github.com/gieljnssns -[@grischard]: https://github.com/grischard -[@janLo]: https://github.com/janLo -[@jeroenterheerdt]: https://github.com/jeroenterheerdt -[@lwis]: https://github.com/lwis -[@matemaciek]: https://github.com/matemaciek -[@milanvo]: https://github.com/milanvo -[@mnigbur]: https://github.com/mnigbur -[@molobrakos]: https://github.com/molobrakos -[@n8henrie]: https://github.com/n8henrie -[@odinuge]: https://github.com/odinuge -[@perosb]: https://github.com/perosb -[@philklei]: https://github.com/philklei -[@pvizeli]: https://github.com/pvizeli -[@rasmusbe]: https://github.com/rasmusbe -[@rytilahti]: https://github.com/rytilahti -[@schmittx]: https://github.com/schmittx -[@snowzach]: https://github.com/snowzach -[@stephenyeargin]: https://github.com/stephenyeargin -[@svenstaro]: https://github.com/svenstaro -[@syssi]: https://github.com/syssi -[@tchellomello]: https://github.com/tchellomello -[@tinloaf]: https://github.com/tinloaf -[@turbokongen]: https://github.com/turbokongen -[@uchagani]: https://github.com/uchagani -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[@zBart]: https://github.com/zBart -[@zhujisheng]: https://github.com/zhujisheng -[alarm_control_panel docs]: /components/alarm_control_panel/ -[alarm_control_panel.arlo docs]: /components/alarm_control_panel.arlo/ -[alarm_control_panel.demo docs]: /components/alarm_control_panel.demo/ -[alarm_control_panel.totalconnect docs]: /components/alarm_control_panel.totalconnect/ -[amcrest docs]: /components/amcrest/ -[automation.state docs]: /docs/automation/trigger/#state-trigger -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.homematic docs]: /components/binary_sensor.homematic/ -[camera.amcrest docs]: /components/camera.amcrest/ -[camera.ring docs]: /components/camera.ring/ -[climate docs]: /components/climate/ -[climate.ecobee docs]: /components/climate.ecobee/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.hive docs]: /components/climate.hive/ -[climate.honeywell docs]: /components/climate.honeywell/ -[climate.mqtt docs]: /components/climate.mqtt/ -[climate.radiotherm docs]: /components/climate.radiotherm/ -[climate.sensibo docs]: /components/climate.sensibo/ -[cloud docs]: /components/cloud/ -[cloud.auth_api docs]: /components/cloud.auth_api/ -[cloud.iot docs]: /components/cloud.iot/ -[config.group docs]: /components/config.group/ -[configurator docs]: /components/configurator/ -[conversation docs]: /components/conversation/ -[cover.tahoma docs]: /components/cover.tahoma/ -[device_tracker.unifi_direct docs]: /components/device_tracker.unifi_direct/ -[dominos docs]: /components/dominos/ -[doorbird docs]: /components/doorbird/ -[ecobee docs]: /components/ecobee/ -[emulated_hue docs]: /components/emulated_hue/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[google_assistant.http docs]: /components/google_assistant.http/ -[google_assistant.smart_home docs]: /components/google_assistant.smart_home/ -[hive docs]: /components/hive/ -[homematic docs]: /components/homematic/ -[influxdb docs]: /components/influxdb/ -[knx docs]: /components/knx/ -[light.blinkt docs]: /components/light.blinkt/ -[light.hive docs]: /components/light.hive/ -[light.hue docs]: /components/light.hue/ -[light.tradfri docs]: /components/light.tradfri/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.yeelight docs]: /components/light.yeelight/ -[media_extractor docs]: /components/media_extractor/ -[media_player.cast docs]: /components/media_player.cast/ -[netatmo docs]: /components/netatmo/ -[notify.lametric docs]: /components/notify.lametric/ -[notify.pushbullet docs]: /components/notify.pushbullet/ -[ring docs]: /components/ring/ -[sensor.amcrest docs]: /components/sensor.amcrest/ -[sensor.currencylayer docs]: /components/sensor.currencylayer/ -[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/ -[sensor.fastdotcom docs]: /components/sensor.fastdotcom/ -[sensor.fritzbox_netmonitor docs]: /components/sensor.fritzbox_netmonitor/ -[sensor.hddtemp docs]: /components/sensor.hddtemp/ -[sensor.hive docs]: /components/sensor.hive/ -[sensor.homematic docs]: /components/sensor.homematic/ -[sensor.sabnzbd docs]: /components/sensor.sabnzbd/ -[sensor.serial docs]: /components/sensor.serial/ -[sensor.tahoma docs]: /components/sensor.tahoma/ -[sensor.tellduslive docs]: /components/sensor.tellduslive/ -[sensor.tellstick docs]: /components/sensor.tellstick/ -[sensor.whois docs]: /components/sensor.whois/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sensor.yweather docs]: /components/sensor.yweather/ -[shell_command docs]: /components/shell_command/ -[shopping_list docs]: /components/shopping_list/ -[switch.hive docs]: /components/switch.hive/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[system_log docs]: /components/system_log/ -[tahoma docs]: /components/tahoma/ -[tellduslive docs]: /components/tellduslive/ -[tellstick docs]: /components/tellstick/ -[tradfri docs]: /components/tradfri/ -[tts docs]: /components/tts/ -[tts.baidu docs]: /components/tts.baidu/ -[tts.microsoft docs]: /components/tts.microsoft/ -[updater docs]: /components/updater/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[weather.ecobee docs]: /components/weather.ecobee/ -[zwave docs]: /components/zwave/ -[#10798]: https://github.com/home-assistant/home-assistant/pull/10798 -[#10923]: https://github.com/home-assistant/home-assistant/pull/10923 -[#10934]: https://github.com/home-assistant/home-assistant/pull/10934 -[#10935]: https://github.com/home-assistant/home-assistant/pull/10935 -[@NovapaX]: https://github.com/NovapaX -[@wrboyce]: https://github.com/wrboyce -[notify.nfandroidtv docs]: /components/notify.nfandroidtv/ -[#10941]: https://github.com/home-assistant/home-assistant/pull/10941 -[#10947]: https://github.com/home-assistant/home-assistant/pull/10947 -[#10950]: https://github.com/home-assistant/home-assistant/pull/10950 -[#10961]: https://github.com/home-assistant/home-assistant/pull/10961 -[#10962]: https://github.com/home-assistant/home-assistant/pull/10962 -[#10989]: https://github.com/home-assistant/home-assistant/pull/10989 -[@andrey-git]: https://github.com/andrey-git -[@balloob]: https://github.com/balloob -[@mateuszdrab]: https://github.com/mateuszdrab -[@molobrakos]: https://github.com/molobrakos -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[device_tracker.linksys_ap docs]: /components/device_tracker.linksys_ap/ -[dominos docs]: /components/dominos/ -[media_player.cast docs]: /components/media_player.cast/ -[tellduslive docs]: /components/tellduslive/ -[wink docs]: /components/wink/ diff --git a/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown b/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown deleted file mode 100644 index d765165e5c..0000000000 --- a/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown +++ /dev/null @@ -1,107 +0,0 @@ ---- -layout: post -title: Introducing Home Assistant Cloud -description: "Use Alexa to control any device that is connected to Home Assistant." -date: 2017-12-17 03:00:00 -date_formatted: "December 17, 2017" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Announcements ---- - -Today we’re introducing the next step in the Home Assistant saga: the Home Assistant Cloud. The goal of the Home Assistant Cloud is to bridge the gap between your local Home Assistant instance and services in the cloud while delivering the maximum possible security and privacy. - -The first service that is supported via the Home Assistant Cloud is the Amazon Alexa Smart Home skill. This integration will allow you to control all your devices in Home Assistant via Amazon Alexa. You will be able to say _“Alexa, turn on the kitchen lights”_ and your local Home Assistant will turn on the lights. Because Alexa talks to Home Assistant, it doesn’t matter what kind of lights they are! Anything that is linked to Home Assistant will work. IKEA lights, a 10 year old X10 switch or something you’ve made yourself. As long as Home Assistant can control it, you can control it via Alexa. - -We have designed the Home Assistant Cloud with security in mind. When you activate the new Cloud component, your instance will create a secure connection to the Home Assistant Cloud. There is no need for any further configuration or to expose your instance to the internet. - -Integrations like Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger! - -We are making the beta of the Home Assistant Cloud publicly available today. During the beta period the Home Assistant Cloud will be free to use. We are currently planning to run a beta till March 1, 2018 0:00 UTC. Once the beta ends, the Home Assistant Cloud will be part of our Community Support package which will run at $5 USD/month. - -By subscribing to the Community Support package you will show your support for the Home Assistant organization, its projects and its community. It will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. - -So if you ever felt like donating money to support the development of Home Assistant and Hass.io: sign up for the Home Assistant Cloud! - -### {% linkable_title Why not take donations? %} - -With donations you have to convince people to keep donating and it will be hard to plan around the amount of available money. The biggest concern is what do you do when there is not enough money. We could shut down the servers or again depend on the wallets of our developers. We could run Wikipedia style advertisements for donating, but those are even more annoying than running advertisements. - -## {% linkable_title Getting started %} - -Upgrade Home Assistant to 0.60 and enable the [`cloud`](/components/cloud/) and [`config`](/components/config/) components: - -```yaml -# Example configuration.yaml entry -cloud: -config: -``` - -Now restart Home Assistant and navigate to the configuration panel. It will offer a new cloud section. Here you can create an account and login. Once logged in, your instance will connect to the cloud. - -The next step is to configure Alexa. This can be done by enabling the Home Assistant skill for Alexa and link your Home Assistant cloud account. - -Once you’re done, ask Alexa to discover devices (“Alexa, discover devices”) and you are all set to control them: “Alexa, turn on <device name>”. - -See the [Cloud component configuration](/components/cloud/) to learn how to filter which devices get exposed to Alexa. - -## {% linkable_title FAQ %} - -_Last updated: February 22, 2018_ - -#### {% linkable_title I thought the Home Assistant crew didn't like the cloud? %} - -You are right, [we don't](/blog/2016/01/19/perfect-home-automation/#your-system-should-run-at-home-not-in-the-cloud)! The Home Assistant Cloud is not an alternative to running your local Home Assistant instance. All control and automations are still running locally. - -Instead, the Home Assistant Cloud is an extension of your local instance. It allows to communicate with companies that force us to communicate via a public available cloud endpoint like Amazon Alexa and Google Assistant. - -Home Assistant Cloud is only used to route the messages to your local Home Assistant instance. All messages are processed locally. - -_(Some people have suggested we rename to Home Assistant Bridge to avoid this confusion)_ - -#### {% linkable_title Will Home Assistant and Hass.io remain open source? %} - -Yes. Yes. Yes! Home Assistant is the work of hundreds of developers all working together in creating something amazing. The only thing that will require a subscription is the optional cloud functionality. - -#### {% linkable_title Where is the source code for the Alexa skill? %} - -All messages are processed locally and so the Alexa skill code is part of the Home Assistant code. The Home Assistant Cloud only routes the messages to your local Home Assistant instance. This means that you can audit the source code to check all the things that the cloud can do: - - - [Module that processes incoming cloud messages](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/cloud/iot.py) - - [Alexa Smart Home v3 skill](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/alexa/smart_home.py) - -#### {% linkable_title What other features will come to the cloud? %} - -We have a lot of ideas! We are not going to make any promises but here are some things that we’re looking into: - -- Google Home / Google Assistant Smart Home skill -- Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant. -- Encrypted backups of your Hass.io data -- Text to speech powered by AWS Polly -- Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud. -- IFTTT integration -- Alexa shopping list integration - -#### {% linkable_title What countries are supported at launch? %} - -As of February 2018, we are live in all countries that have Alexa except for Japan (which is under certification). - -#### {% linkable_title How is the connection made to the cloud? %} - -The connection is made using a WebSocket connection over HTTPS. [See the source here](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/cloud/iot.py). - -#### {% linkable_title I think that the price is too high for what I get. %} - -The Home Assistant Cloud functionality is a perk for becoming a supporter of the Home Assistant project. As a supporter you will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. You are not paying to just maintain the cloud servers. - -The perks offered for being a supporter will also extend over time, as noted in [this answer](#what-other-features-will-come-to-the-cloud). - -#### {% linkable_title What will the Home Assistant organization do with the funds ? %} - -The plan is to hire developers to work fulltime on Home Assistant. We have grown a lot in the last 4 years and the work load is pushing the limits of what our core developers can do. Open source burn out is very common ([1], [2]) and we want to avoid this by moving most organization and release chores to a paid position. - -_For more background on these topics, check out [HASS Podcast 15](https://hasspodcast.io/ha015/)._ - -[1]: https://nolanlawson.com/2017/03/05/what-it-feels-like-to-be-an-open-source-maintainer/ -[2]: https://www.kennethreitz.org/essays/the-reality-of-developer-burnout diff --git a/source/_posts/2017-12-17-release-60.markdown b/source/_posts/2017-12-17-release-60.markdown deleted file mode 100644 index 4cfabc3417..0000000000 --- a/source/_posts/2017-12-17-release-60.markdown +++ /dev/null @@ -1,408 +0,0 @@ ---- -layout: post -title: "0.60: Beckhoff/TwinCAT, WebDav, Gearbest, iAlarm" -description: "Use Home Assistant for your production line or track prices and the stock market." -date: 2017-12-17 02:00:00 -date_formatted: "December 17, 2017" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2017-12-0.60/components.png ---- - - - -The biggest change for 0.60 will be covered in a separate [blog post](/blog/2017/12/17/introducing-home-assistant-cloud/). Thus, we will keep it short here. Just one thing: This is the last release in 2017. We will be back to our bi-weekly release cycle in 2018. - -A big "Thank you" to all people who supported us to make this release possible. - -## {% linkable_title TwinCAT %} -With the brand-new [ADS (automation device specification)][ads docs] component by [@stlehmann] allows you to hook Home Assistant into this fieldbus independent interface which is often used between Beckhoff devices running with TwinCAT. - -## {% linkable_title WebDav calendar %} -Thanks to [@maxlaverse] Home Assistant support now [WebDav calendars][calendar.caldav docs]. - -## {% linkable_title Tracking prices %} -With the new [`gearbest` sensor][sensor.gearbest docs] there is now an additional sensor available to track the price of a product. - -## {% linkable_title Financial details %} -Yahoo! has discontinued their financial service. To fill this gap we have now the [`alpha_vantage` sensor][sensor.alpha_vantage docs] which is intruded in this release and allows you to monitor the stock market. - -## {% linkable_title New Platforms %} - -- Add iAlarm support ([@RyuzakiKK] - [#10878]) ([alarm_control_panel.ialarm docs]) (new-platform) -- Add Alpha Vantage sensor ([@fabaff] - [#10873]) ([sensor.alpha_vantage docs]) (new-platform) -- Add ADS component ([@stlehmann] - [#10142]) ([ads docs]) ([binary_sensor.ads docs]) ([light.ads docs]) ([sensor.ads docs]) ([switch.ads docs]) (new-platform) -- Gearbest sensor ([@HerrHofrat] - [#10556]) ([sensor.gearbest docs]) (new-platform) -- Add Ziggo Mediabox XL media_player ([@b10m] - [#10514]) ([media_player.ziggo_mediabox_xl docs]) (new-platform) -- Meraki AP Device tracker ([@masarliev] - [#10971]) ([device_tracker.meraki docs]) (new-platform) -- Added Vera scenes ([@alanfischer] - [#10424]) ([vera docs]) ([scene.vera docs]) (new-platform) -- Add support for Canary component and platforms ([@snjoetw] - [#10306]) ([canary docs]) ([camera.canary docs]) ([sensor.canary docs]) (new-platform) -- Add support for Logitech UE Smart Radios. ([@GreenTurtwig] - [#10077]) ([media_player.ue_smart_radio docs]) (new-platform) -- Added support for cover in tellstick ([@perfalk] - [#10858]) ([tellstick docs]) ([cover.tellstick docs]) (new-platform) -- Add a caldav calendar component ([@maxlaverse] - [#10842]) ([calendar.caldav docs]) (new-platform) -- Refactor hue to split bridge support from light platform ([@andreacampi] - [#10691]) ([hue docs]) ([light.hue docs]) (breaking change) (new-platform) - -## {% linkable_title Release 0.60.1 - January 6 %} - -- Fix async IO in Sesame lock component. ([@veleek] - [#11054]) ([lock.sesame docs]) -- Fix webdav calendar schema ([@maxlaverse] - [#11185]) ([calendar.caldav docs]) -- homematic: add username and password to interface config schema ([@jannau] - [#11214]) ([homematic docs]) -- Fix webostv select source ([@OddBloke] - [#11227]) ([media_player.webostv docs]) -- Fix detection of if a negative node is in use ([@OverloadUT] - [#11255]) ([binary_sensor.isy994 docs]) -- Bugfix homematic available modus ([@pvizeli] - [#11256]) ([homematic docs]) -- Support multiple Hue bridges with lights of the same id ([@andreacampi] - [#11259]) ([light.hue docs]) -- Fix inverted sensors on the concord232 binary sensor component ([@CTLS] - [#11261]) ([binary_sensor.concord232 docs]) -- Fix handling zero values for state_on/state_off ([@ziotibia81] - [#11264]) ([switch.modbus docs]) -- Fix allday events in custom_calendars ([@maxlaverse] - [#11272]) ([calendar.caldav docs]) -- Fix unpredictable entity names in concord232 binary_sensor ([@rwa] - [#11292]) ([binary_sensor.concord232 docs]) -- Fix leak sensors always showing Unknown until Wet ([@OverloadUT] - [#11313]) ([binary_sensor.isy994 docs]) -- Don't block on sevice call for alexa ([@pvizeli] - [#11358]) ([alexa.smart_home docs]) -- iOS 10 should be served javascript_version:es5 ([@mnoorenberghe] - [#11387]) - -## {% 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 %} - -- Update snips to listen on new mqtt topic and utilize rawValue ([@tschmidty69] - [#11020]) ([snips docs]) (breaking change) -- Refactor hue to split bridge support from light platform ([@andreacampi] - [#10691]) ([hue docs]) ([light.hue docs]) (breaking change) (new-platform) -- Use luftdaten module ([@fabaff] - [#10970]) ([sensor.luftdaten docs]) (breaking change) -- ISY994 sensor improvements ([@OverloadUT] - [#10805]) ([isy994 docs]) ([binary_sensor.isy994 docs]) (breaking change) -- Homematic next ([@pvizeli] - [#11156]) ([homematic docs]) (breaking change) - -## {% linkable_title All changes %} - -- Update ecobee version to fix stack-trace issue ([@PhracturedBlue] - [#10894]) ([ecobee docs]) -- Pybotvac multi ([@raymccarthy] - [#10843]) ([neato docs]) -- More declarative timeout syntax for manual alarm control panel. ([@bonzini] - [#10738]) ([alarm_control_panel.manual docs]) ([alarm_control_panel.manual_mqtt docs]) -- Unpacking RESTful sensor JSON results into attributes. ([@nickovs] - [#10753]) ([sensor.rest docs]) -- Bump dev to 0.60.0.dev0 ([@fabaff] - [#10912]) -- Update eliqonline.py ([@molobrakos] - [#10914]) ([sensor.eliqonline docs]) -- Add iAlarm support ([@RyuzakiKK] - [#10878]) ([alarm_control_panel.ialarm docs]) (new-platform) -- Correction of Samsung Power OFF behaviour ([@RiRomain] - [#10907]) ([media_player.samsungtv docs]) -- Add Alpha Vantage sensor ([@fabaff] - [#10873]) ([sensor.alpha_vantage docs]) (new-platform) -- Don't repeat getting receiver name on each update / pushed to denonavr 0.5.5 ([@scarface-4711] - [#10915]) ([media_player.denonavr docs]) -- Add Min and Event Count Metrics To Prometheus ([@bah2830] - [#10530]) ([prometheus docs]) -- Update coveragerc ([@balloob] - [#10931]) -- Report availability of TP-Link smart sockets ([@DanNixon] - [#10933]) ([switch.tplink docs]) -- Set percent unit for battery level so that history displays properly; edited variable name for consistency ([@nbougues] - [#10932]) ([sensor.tesla docs]) -- Export climate status and target temperature to Prometheus ([@hudashot] - [#10919]) ([prometheus docs]) -- Tado ignore invalid devices ([@dasos] - [#10927]) ([climate.tado docs]) -- don't ignore voltage data if sensor data changed ([@PaulAnnekov] - [#10925]) ([xiaomi_aqara docs]) -- Add ADS component ([@stlehmann] - [#10142]) ([ads docs]) ([binary_sensor.ads docs]) ([light.ads docs]) ([sensor.ads docs]) ([switch.ads docs]) (new-platform) -- Gearbest sensor ([@HerrHofrat] - [#10556]) ([sensor.gearbest docs]) (new-platform) -- Add Ziggo Mediabox XL media_player ([@b10m] - [#10514]) ([media_player.ziggo_mediabox_xl docs]) (new-platform) -- Generic thermostat initial_operation_mode ([@ziotibia81] - [#10690]) ([climate.generic_thermostat docs]) -- Use new build path for dev translations ([@armills] - [#10937]) -- Add option to set default hide if away for new devices ([@masarliev] - [#10762]) ([device_tracker docs]) -- Allow disabling the LEDs on TP-Link smart plugs ([@DanNixon] - [#10980]) ([switch.tplink docs]) -- Meraki AP Device tracker ([@masarliev] - [#10971]) ([device_tracker.meraki docs]) (new-platform) -- Update tradfri.py ([@pvizeli] - [#10991]) ([light.tradfri docs]) -- webostv: Ensure source exists before use ([@OddBloke] - [#10959]) ([media_player.webostv docs]) -- Ensure Docker script files uses LF line endings to support Docker for Windows. ([@R1chardTM] - [#10067]) -- Added Vera scenes ([@alanfischer] - [#10424]) ([vera docs]) ([scene.vera docs]) (new-platform) -- Fix Egardia alarm status shown as unknown after restart ([@jeroenterheerdt] - [#11010]) ([alarm_control_panel.egardia docs]) -- Handle OSError when forcibly turning off media_player.samsungtv ([@lwis] - [#10997]) ([media_player.samsungtv docs]) -- Shuffle support in Sonos ([@mar-schmidt] - [#10875]) ([media_player.sonos docs]) -- Add support for Canary component and platforms ([@snjoetw] - [#10306]) ([canary docs]) ([camera.canary docs]) ([sensor.canary docs]) (new-platform) -- Ignore Sonos players with unknown hostnames ([@amelchio] - [#11013]) -- Support LIFX Mini products ([@amelchio] - [#10996]) ([light.lifx docs]) -- Update snips to listen on new mqtt topic and utilize rawValue ([@tschmidty69] - [#11020]) ([snips docs]) (breaking change) -- Change default js version to auto ([@andrey-git] - [#10999]) -- Serialize mochad requests ([@mtreinish] - [#11029]) ([mochad docs]) ([light.mochad docs]) ([switch.mochad docs]) -- In dev mode expose only relevant sources ([@andrey-git] - [#11026]) -- Added force_update for REST sensor ([@foxel] - [#11016]) ([sensor.miflora docs]) ([sensor.mqtt docs]) ([sensor.rest docs]) -- Add support for Logitech UE Smart Radios. ([@GreenTurtwig] - [#10077]) ([media_player.ue_smart_radio docs]) (new-platform) -- Make notify.html5 depend on config ([@balloob] - [#11052]) ([notify.html5 docs]) -- This change fixes the error `OSError: [WinError 193]` on Windows debuggers (i.e. PyCharm) ([@tringler] - [#11034]) -- Added support for cover in tellstick ([@perfalk] - [#10858]) ([tellstick docs]) ([cover.tellstick docs]) (new-platform) -- Add a caldav calendar component ([@maxlaverse] - [#10842]) ([calendar.caldav docs]) (new-platform) -- Add GPS coords to meraki ([@addelovein] - [#10998]) ([device_tracker.meraki docs]) -- Refactor hue to split bridge support from light platform ([@andreacampi] - [#10691]) ([hue docs]) ([light.hue docs]) (breaking change) (new-platform) -- add custom bypass status to total connect ([@uchagani] - [#11042]) ([alarm_control_panel.totalconnect docs]) -- Volvo on call: Optional use of Scandinavian miles. Also add average fuel consumption property ([@molobrakos] - [#11051]) ([volvooncall docs]) ([sensor.volvooncall docs]) -- Allow tradfri to read the available state of the device ([@pvizeli] - [#11056]) ([light.tradfri docs]) -- Upgrade aiohttp to 2.3.6 ([@fabaff] - [#11079]) -- Upgrade yarl to 0.16.0 ([@fabaff] - [#11078]) -- Upgrade psutil to 5.4.2 ([@fabaff] - [#11083]) ([sensor.systemmonitor docs]) -- Upgrade youtube_dl to 2017.12.10 ([@fabaff] - [#11080]) ([media_extractor docs]) -- Upgrade shodan to 1.7.7 ([@fabaff] - [#11084]) ([sensor.shodan docs]) -- Update tellcore-net to 0.4 ([@pvizeli] - [#11087]) ([tellstick docs]) -- Bump pymusiccast to version 0.1.6 ([@jalmeroth] - [#11091]) ([media_player.yamaha_musiccast docs]) -- Use luftdaten module ([@fabaff] - [#10970]) ([sensor.luftdaten docs]) (breaking change) -- Bump pyatv to 0.3.9 ([@postlund] - [#11104]) ([apple_tv docs]) -- Report availability for TP-Link smart bulbs ([@DanNixon] - [#10976]) ([light.tplink docs]) -- Fix incorrect comment. ([@emosenkis] - [#11111]) -- Update Warrant ([@balloob] - [#11101]) ([cloud docs]) -- Fixed typo in automation.py ([@ryanm101] - [#11116]) ([config.automation docs]) -- Add media position properties ([@pschmitt] - [#10076]) ([media_player.liveboxplaytv docs]) -- update pyripple ([@nkgilley] - [#11122]) ([sensor.ripple docs]) -- Skip HASS emulated Hue bridges from detection. ([@andreacampi] - [#11128]) ([hue docs]) -- Always consume the no_throttle keyword argument. ([@andreacampi] - [#11126]) -- Add problem device class ([@armills] - [#11130]) ([binary_sensor docs]) -- set default utc offset to 0 ([@pollett] - [#11114]) ([sensor.efergy docs]) -- Allow using more than one keyboard remote ([@BryanJacobs] - [#11061]) ([keyboard_remote docs]) -- ISY994 sensor improvements ([@OverloadUT] - [#10805]) ([isy994 docs]) ([binary_sensor.isy994 docs]) (breaking change) -- Disable html5 notify dependency ([@balloob] - [#11135]) ([notify.html5 docs]) -- Upgrade Homematic ([@danielperna84] - [#11149]) ([homematic docs]) -- Fix X10 commands for mochad light turn on ([@mtreinish] - [#11146]) ([light.mochad docs]) -- Homematic next ([@pvizeli] - [#11156]) ([homematic docs]) (breaking change) -- Resolve hostnames ([@pvizeli] - [#11160]) ([homematic docs]) -- Perform logbook filtering on the worker thread ([@armills] - [#11161]) ([logbook docs]) -- Don't connect to cloud if subscription expired ([@balloob] - [#11163]) ([cloud docs]) ([cloud.const docs]) -- Add install mode to homematic ([@pvizeli] - [#11164]) ([homematic docs]) -- convert alarmdecoder interface from async to sync ([@PhracturedBlue] - [#11168]) ([alarmdecoder docs]) -- Remove logging ([@cmsimike] - [#11173]) ([sensor.octoprint docs]) -- Revbump to SoCo 0.13 and add support for Night Sound and Speech Enhancement. ([@rbdixon] - [#10765]) ([media_player.sonos docs]) - -[#10067]: https://github.com/home-assistant/home-assistant/pull/10067 -[#10076]: https://github.com/home-assistant/home-assistant/pull/10076 -[#10077]: https://github.com/home-assistant/home-assistant/pull/10077 -[#10142]: https://github.com/home-assistant/home-assistant/pull/10142 -[#10306]: https://github.com/home-assistant/home-assistant/pull/10306 -[#10424]: https://github.com/home-assistant/home-assistant/pull/10424 -[#10514]: https://github.com/home-assistant/home-assistant/pull/10514 -[#10530]: https://github.com/home-assistant/home-assistant/pull/10530 -[#10556]: https://github.com/home-assistant/home-assistant/pull/10556 -[#10690]: https://github.com/home-assistant/home-assistant/pull/10690 -[#10691]: https://github.com/home-assistant/home-assistant/pull/10691 -[#10738]: https://github.com/home-assistant/home-assistant/pull/10738 -[#10753]: https://github.com/home-assistant/home-assistant/pull/10753 -[#10762]: https://github.com/home-assistant/home-assistant/pull/10762 -[#10765]: https://github.com/home-assistant/home-assistant/pull/10765 -[#10805]: https://github.com/home-assistant/home-assistant/pull/10805 -[#10842]: https://github.com/home-assistant/home-assistant/pull/10842 -[#10843]: https://github.com/home-assistant/home-assistant/pull/10843 -[#10858]: https://github.com/home-assistant/home-assistant/pull/10858 -[#10873]: https://github.com/home-assistant/home-assistant/pull/10873 -[#10875]: https://github.com/home-assistant/home-assistant/pull/10875 -[#10878]: https://github.com/home-assistant/home-assistant/pull/10878 -[#10894]: https://github.com/home-assistant/home-assistant/pull/10894 -[#10907]: https://github.com/home-assistant/home-assistant/pull/10907 -[#10912]: https://github.com/home-assistant/home-assistant/pull/10912 -[#10914]: https://github.com/home-assistant/home-assistant/pull/10914 -[#10915]: https://github.com/home-assistant/home-assistant/pull/10915 -[#10919]: https://github.com/home-assistant/home-assistant/pull/10919 -[#10925]: https://github.com/home-assistant/home-assistant/pull/10925 -[#10927]: https://github.com/home-assistant/home-assistant/pull/10927 -[#10931]: https://github.com/home-assistant/home-assistant/pull/10931 -[#10932]: https://github.com/home-assistant/home-assistant/pull/10932 -[#10933]: https://github.com/home-assistant/home-assistant/pull/10933 -[#10937]: https://github.com/home-assistant/home-assistant/pull/10937 -[#10959]: https://github.com/home-assistant/home-assistant/pull/10959 -[#10970]: https://github.com/home-assistant/home-assistant/pull/10970 -[#10971]: https://github.com/home-assistant/home-assistant/pull/10971 -[#10976]: https://github.com/home-assistant/home-assistant/pull/10976 -[#10980]: https://github.com/home-assistant/home-assistant/pull/10980 -[#10991]: https://github.com/home-assistant/home-assistant/pull/10991 -[#10996]: https://github.com/home-assistant/home-assistant/pull/10996 -[#10997]: https://github.com/home-assistant/home-assistant/pull/10997 -[#10998]: https://github.com/home-assistant/home-assistant/pull/10998 -[#10999]: https://github.com/home-assistant/home-assistant/pull/10999 -[#11010]: https://github.com/home-assistant/home-assistant/pull/11010 -[#11013]: https://github.com/home-assistant/home-assistant/pull/11013 -[#11016]: https://github.com/home-assistant/home-assistant/pull/11016 -[#11020]: https://github.com/home-assistant/home-assistant/pull/11020 -[#11026]: https://github.com/home-assistant/home-assistant/pull/11026 -[#11029]: https://github.com/home-assistant/home-assistant/pull/11029 -[#11034]: https://github.com/home-assistant/home-assistant/pull/11034 -[#11042]: https://github.com/home-assistant/home-assistant/pull/11042 -[#11051]: https://github.com/home-assistant/home-assistant/pull/11051 -[#11052]: https://github.com/home-assistant/home-assistant/pull/11052 -[#11056]: https://github.com/home-assistant/home-assistant/pull/11056 -[#11061]: https://github.com/home-assistant/home-assistant/pull/11061 -[#11078]: https://github.com/home-assistant/home-assistant/pull/11078 -[#11079]: https://github.com/home-assistant/home-assistant/pull/11079 -[#11080]: https://github.com/home-assistant/home-assistant/pull/11080 -[#11083]: https://github.com/home-assistant/home-assistant/pull/11083 -[#11084]: https://github.com/home-assistant/home-assistant/pull/11084 -[#11087]: https://github.com/home-assistant/home-assistant/pull/11087 -[#11091]: https://github.com/home-assistant/home-assistant/pull/11091 -[#11101]: https://github.com/home-assistant/home-assistant/pull/11101 -[#11104]: https://github.com/home-assistant/home-assistant/pull/11104 -[#11111]: https://github.com/home-assistant/home-assistant/pull/11111 -[#11114]: https://github.com/home-assistant/home-assistant/pull/11114 -[#11116]: https://github.com/home-assistant/home-assistant/pull/11116 -[#11122]: https://github.com/home-assistant/home-assistant/pull/11122 -[#11126]: https://github.com/home-assistant/home-assistant/pull/11126 -[#11128]: https://github.com/home-assistant/home-assistant/pull/11128 -[#11130]: https://github.com/home-assistant/home-assistant/pull/11130 -[#11135]: https://github.com/home-assistant/home-assistant/pull/11135 -[#11146]: https://github.com/home-assistant/home-assistant/pull/11146 -[#11149]: https://github.com/home-assistant/home-assistant/pull/11149 -[#11156]: https://github.com/home-assistant/home-assistant/pull/11156 -[#11160]: https://github.com/home-assistant/home-assistant/pull/11160 -[#11161]: https://github.com/home-assistant/home-assistant/pull/11161 -[#11163]: https://github.com/home-assistant/home-assistant/pull/11163 -[#11164]: https://github.com/home-assistant/home-assistant/pull/11164 -[#11168]: https://github.com/home-assistant/home-assistant/pull/11168 -[#11173]: https://github.com/home-assistant/home-assistant/pull/11173 -[@BryanJacobs]: https://github.com/BryanJacobs -[@DanNixon]: https://github.com/DanNixon -[@GreenTurtwig]: https://github.com/GreenTurtwig -[@HerrHofrat]: https://github.com/HerrHofrat -[@OddBloke]: https://github.com/OddBloke -[@OverloadUT]: https://github.com/OverloadUT -[@PaulAnnekov]: https://github.com/PaulAnnekov -[@PhracturedBlue]: https://github.com/PhracturedBlue -[@R1chardTM]: https://github.com/R1chardTM -[@RiRomain]: https://github.com/RiRomain -[@RyuzakiKK]: https://github.com/RyuzakiKK -[@addelovein]: https://github.com/addelovein -[@alanfischer]: https://github.com/alanfischer -[@amelchio]: https://github.com/amelchio -[@andreacampi]: https://github.com/andreacampi -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@b10m]: https://github.com/b10m -[@bah2830]: https://github.com/bah2830 -[@balloob]: https://github.com/balloob -[@bonzini]: https://github.com/bonzini -[@cmsimike]: https://github.com/cmsimike -[@danielperna84]: https://github.com/danielperna84 -[@dasos]: https://github.com/dasos -[@emosenkis]: https://github.com/emosenkis -[@fabaff]: https://github.com/fabaff -[@foxel]: https://github.com/foxel -[@hudashot]: https://github.com/hudashot -[@jalmeroth]: https://github.com/jalmeroth -[@jeroenterheerdt]: https://github.com/jeroenterheerdt -[@lwis]: https://github.com/lwis -[@mar-schmidt]: https://github.com/mar-schmidt -[@masarliev]: https://github.com/masarliev -[@maxlaverse]: https://github.com/maxlaverse -[@molobrakos]: https://github.com/molobrakos -[@mtreinish]: https://github.com/mtreinish -[@nbougues]: https://github.com/nbougues -[@nickovs]: https://github.com/nickovs -[@nkgilley]: https://github.com/nkgilley -[@perfalk]: https://github.com/perfalk -[@pollett]: https://github.com/pollett -[@postlund]: https://github.com/postlund -[@pschmitt]: https://github.com/pschmitt -[@pvizeli]: https://github.com/pvizeli -[@raymccarthy]: https://github.com/raymccarthy -[@rbdixon]: https://github.com/rbdixon -[@ryanm101]: https://github.com/ryanm101 -[@scarface-4711]: https://github.com/scarface-4711 -[@snjoetw]: https://github.com/snjoetw -[@stlehmann]: https://github.com/stlehmann -[@tringler]: https://github.com/tringler -[@tschmidty69]: https://github.com/tschmidty69 -[@uchagani]: https://github.com/uchagani -[@ziotibia81]: https://github.com/ziotibia81 -[ads docs]: /components/ads/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[alarm_control_panel.ialarm docs]: /components/alarm_control_panel.ialarm/ -[alarm_control_panel.manual docs]: /components/alarm_control_panel.manual/ -[alarm_control_panel.manual_mqtt docs]: /components/alarm_control_panel.manual_mqtt/ -[alarm_control_panel.totalconnect docs]: /components/alarm_control_panel.totalconnect/ -[alarmdecoder docs]: /components/alarmdecoder/ -[apple_tv docs]: /components/apple_tv/ -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.ads docs]: /components/binary_sensor.ads/ -[binary_sensor.isy994 docs]: /components/binary_sensor.isy994/ -[calendar.caldav docs]: /components/calendar.caldav/ -[camera.canary docs]: /components/camera.canary/ -[canary docs]: /components/canary/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.tado docs]: /components/climate.tado/ -[cloud docs]: /components/cloud/ -[cloud.const docs]: /components/cloud.const/ -[config.automation docs]: /components/config.automation/ -[cover.tellstick docs]: /components/cover.tellstick/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.meraki docs]: /components/device_tracker.meraki/ -[ecobee docs]: /components/ecobee/ -[homematic docs]: /components/homematic/ -[hue docs]: /components/hue/ -[isy994 docs]: /components/isy994/ -[keyboard_remote docs]: /components/keyboard_remote/ -[light.ads docs]: /components/light.ads/ -[light.hue docs]: /components/light.hue/ -[light.lifx docs]: /components/light.lifx/ -[light.mochad docs]: /components/light.mochad/ -[light.tplink docs]: /components/light.tplink/ -[light.tradfri docs]: /components/light.tradfri/ -[logbook docs]: /components/logbook/ -[media_extractor docs]: /components/media_extractor/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.liveboxplaytv docs]: /components/media_player.liveboxplaytv/ -[media_player.samsungtv docs]: /components/media_player.samsungtv/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.ue_smart_radio docs]: /components/media_player.ue_smart_radio/ -[media_player.webostv docs]: /components/media_player.webostv/ -[media_player.yamaha_musiccast docs]: /components/media_player.yamaha_musiccast/ -[media_player.ziggo_mediabox_xl docs]: /components/media_player.ziggo_mediabox_xl/ -[mochad docs]: /components/mochad/ -[neato docs]: /components/neato/ -[notify.html5 docs]: /components/notify.html5/ -[prometheus docs]: /components/prometheus/ -[scene.vera docs]: /components/scene.vera/ -[sensor.ads docs]: /components/sensor.ads/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[sensor.canary docs]: /components/sensor.canary/ -[sensor.efergy docs]: /components/sensor.efergy/ -[sensor.eliqonline docs]: /components/sensor.eliqonline/ -[sensor.gearbest docs]: /components/sensor.gearbest/ -[sensor.luftdaten docs]: /components/sensor.luftdaten/ -[sensor.miflora docs]: /components/sensor.miflora/ -[sensor.mqtt docs]: /components/sensor.mqtt/ -[sensor.octoprint docs]: /components/sensor.octoprint/ -[sensor.rest docs]: /components/sensor.rest/ -[sensor.ripple docs]: /components/sensor.ripple/ -[sensor.shodan docs]: /components/sensor.shodan/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.tesla docs]: /components/sensor.tesla/ -[sensor.volvooncall docs]: /components/sensor.volvooncall/ -[snips docs]: /components/snips/ -[switch.ads docs]: /components/switch.ads/ -[switch.mochad docs]: /components/switch.mochad/ -[switch.tplink docs]: /components/switch.tplink/ -[tellstick docs]: /components/tellstick/ -[vera docs]: /components/vera/ -[volvooncall docs]: /components/volvooncall/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[#11054]: https://github.com/home-assistant/home-assistant/pull/11054 -[#11185]: https://github.com/home-assistant/home-assistant/pull/11185 -[#11214]: https://github.com/home-assistant/home-assistant/pull/11214 -[#11227]: https://github.com/home-assistant/home-assistant/pull/11227 -[#11255]: https://github.com/home-assistant/home-assistant/pull/11255 -[#11256]: https://github.com/home-assistant/home-assistant/pull/11256 -[#11259]: https://github.com/home-assistant/home-assistant/pull/11259 -[#11261]: https://github.com/home-assistant/home-assistant/pull/11261 -[#11264]: https://github.com/home-assistant/home-assistant/pull/11264 -[#11272]: https://github.com/home-assistant/home-assistant/pull/11272 -[#11292]: https://github.com/home-assistant/home-assistant/pull/11292 -[#11313]: https://github.com/home-assistant/home-assistant/pull/11313 -[#11358]: https://github.com/home-assistant/home-assistant/pull/11358 -[#11387]: https://github.com/home-assistant/home-assistant/pull/11387 -[@CTLS]: https://github.com/CTLS -[@OddBloke]: https://github.com/OddBloke -[@OverloadUT]: https://github.com/OverloadUT -[@andreacampi]: https://github.com/andreacampi -[@jannau]: https://github.com/jannau -[@maxlaverse]: https://github.com/maxlaverse -[@mnoorenberghe]: https://github.com/mnoorenberghe -[@pvizeli]: https://github.com/pvizeli -[@rwa]: https://github.com/rwa -[@veleek]: https://github.com/veleek -[@ziotibia81]: https://github.com/ziotibia81 -[alexa.smart_home docs]: /components/alexa.smart_home/ -[binary_sensor.concord232 docs]: /components/binary_sensor.concord232/ -[binary_sensor.isy994 docs]: /components/binary_sensor.isy994/ -[calendar.caldav docs]: /components/calendar.caldav/ -[homematic docs]: /components/homematic/ -[light.hue docs]: /components/light.hue/ -[lock.sesame docs]: /components/lock.sesame/ -[media_player.webostv docs]: /components/media_player.webostv/ -[switch.modbus docs]: /components/switch.modbus/ diff --git a/source/_posts/2017-12-28-thank-you.markdown b/source/_posts/2017-12-28-thank-you.markdown deleted file mode 100644 index d1cefceb59..0000000000 --- a/source/_posts/2017-12-28-thank-you.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post -title: "Thank You" -description: "Thanks to all our contributors, dependencies and companies that help make Home Assistant awesome." -date: 2017-12-28 22:00:00 UTC -date_formatted: "December 28, 2017" -author: Fabian affolter -author_twitter: fabaff -comments: true -categories: Community -og_image: ---- - -2017 is almost over and this means it's time to do a little recap of our 2017. This was a great year for Home Assistant. Again, we were able to stick to our bi-weekly release cycle. There were 25 releases over the year and each release included the work of around 60 contributors. - -We got 10.000 stars on [GitHub], reached 10.000 commits in the main repo (over 4300 were made in 2017), got a [Thomas-Krenn award], participated in [Hacktoberfest], we have now almost 1000 integrations (the exact number is 938), we [moved to Discord] and we are up to over 2 million pageviews per month on our forum. Beside that we announced the [Home Assistant cloud] and have regular [Home Assistant Podcasts]. - -We also do not want to forget to mention [Hass.io] and all the great Hass.io add-ons. - -Uff, what a year...Thank you, dear community for being so helpful, supportive and awesome 🙇. - -A very big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. You are the foundation for our success and all of you can be proud of yourself. - -We would also like to thanks all the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thank you [GitHub], [TravisCI], [CloudFlare], [Discord] and [Discourse]! - -Some of us are taking a break and spending some quality time with family and loved ones. - -Stay tuned for more Home Assistant awesomeness in 2018. We will keep the pace but first: Happy New Year! - --- Home Assistant Organization - -[CloudFlare]: https://CloudFlare.com -[Discord]: https://discordapp.com -[Discourse]: https://Discourse.com -[forum]: https://community.home-assistant.io -[GitHub]: https://GitHub.com -[Hacktoberfest]: /blog/2017/11/04/release-57/#hacktoberfest -[Hass.io]: /hassio/ -[Home Assistant cloud]: /blog/2017/12/17/introducing-home-assistant-cloud/ -[Home Assistant Podcasts]: https://hasspodcast.io/ -[moved to Discord]: /blog/2017/07/03/home-assistant-is-moving-to-discord/ -[Thomas-Krenn award]: /blog/2017/04/01/thomas-krenn-award/ -[TravisCI]: https://Travis-ci.org - diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown deleted file mode 100644 index 1cc48aad14..0000000000 --- a/source/_posts/2018-01-14-release-61.markdown +++ /dev/null @@ -1,797 +0,0 @@ ---- -layout: post -title: "0.61: Coinbase, Discogs, iGlo, Sochain" -description: "New crypto currency sensors and other new stuff including breaking changes." -date: 2018-01-14 18:00:00 -date_formatted: "January 14, 2018" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Release-Notes -og_image: /images/blog/2018-01-0.61/components.png ---- - - - -Almost a 100 contributors to this release 🎉 That's what you get when you skip a release. It's a little late but "Happy New Year" and welcome to 0.61 the first release 2018. - -This release contain some breaking changes. Please make sure that you check the section below if you are running into trouble. - -## {% linkable_title Assistant configs %} - -We made a mistake in the foundation of both the Google Assistant and Alexa integrations: they were storing their config inside customize. This is not the right place and we moved them to be under the components itself. See the breaking changes section on how to migrate. - -## {% linkable_title Hass.io updates %} - -[@pvizeli] has made it easier to create and restore snapshots for Hass.io by calling the new services. This way it will be easy to automate the creation of a snapshot at night. The updater has also been fixed and will now report on new versions of Hass.io that are available. - -## {% linkable_title Improved loading speed %} - -[@amelchio] has made startup of Home Assistant _even_ faster. All service descriptions are now loaded only when needed by the frontend instead of during startup. This did mean that we had to enforce our service convention. We found a few platforms that didn't follow this and they have been updated: - -```text -todoist.new_task -> calendar.todoist_new_task - -snapcast.snapcast_snapshot -> media_player.snapcast_snapshot -snapcast.snapcast_restore -> media_player.snapcast_restore - -mopar.remote_command -> sensor.mopar_remote_command - -broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107 -broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107 -``` - -## {% linkable_title New Platforms %} - -- Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) -- Greenwave Reality (TCP Connected) Lighting Component ([@dfiel] - [#11282]) ([light.greenwave docs]) (new-platform) -- Added rainsensor ([@jbarrancos] - [#11023]) ([rainbird docs]) ([sensor.rainbird docs]) ([switch.rainbird docs]) (new-platform) -- Sochain cryptocurrency sensor ([@Klathmon] - [#11335]) ([sensor.sochain docs]) (new-platform) -- Support for EcoNet water heaters ([@w1ll1am23] - [#11260]) ([climate.econet docs]) (new-platform) -- Add deCONZ component ([@Kane610] - [#10321]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) (new-platform) -- Added new climate component from Daikin ([@rofrantz] - [#10983]) ([climate.daikin docs]) (new-platform) -- Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) -- Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) -- Add Dark Sky weather component ([@DanNixon] - [#11435]) ([weather.darksky docs]) (new-platform) -- Coinbase.com sensor platform ([@nkgilley] - [#11036]) ([coinbase docs]) ([sensor.coinbase docs]) (new-platform) - -## {% linkable_title Release 0.61.1 - January 16 %} - -- Fix zha color probe ([@rcloran] - [#11670]) ([zha docs]) ([light.zha docs]) -- Move several local services to their right domain ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([sensor.mopar docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) -- Rfxtrx fix ([@danielhiversen] - [#11678]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) -- History order bugfix and opt-in option ([@rwa] - [#11686]) ([history docs]) -- Fix purge with MariaDB / MySQL ([@tinloaf] - [#11713]) - -## {% 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 %} - -- Extend Threshold binary sensor to support ranges. This means that you can now set `up` and `lower`. ([@DanNixon] - [#11110]) ([binary_sensor.threshold docs]) (breaking change) -- The Steam game platform contains changes: - - `game` attribute no longer set in `device_state_attributes` if no game is currently being played as the string "None" is no longer passed if no current game is being played, instead the `game` attribute is not present. - - States now use lower snake case. - - The "Play" and "Trade" states has been renamed to "looking_to_play" and "looking_to_trade". - ([@frwickst] - [#11182]) ([sensor.steam_online docs]) (breaking change) -- The [`tile`][device_tracker.tile docs] platform now shows only active Tiles by default; to show all Tiles, including expired/inactive ones, `show_inactive` must be `True`. The following state attributes have been removed: `last_seen` and `last_updated`. ([@bachya] - [#11172]) ([device_tracker.tile docs]) (breaking change) -- The `hidden_string` feature has been removed from the isy994 component. Previously, this allowed entities to be "hidden" in Home Assistant if a configured string was present in an ISY device's name or folder path. This was removed because hiding devices is now done via the customization feature. -Note however, that this feature was replaced by a new ignore_string config option, which will now cause Home Assistant to completely ignore devices with the matching string so that they will not be imported as a Home Assistant device at all. This can be helpful if you have nodes in the ISY that aren't useful at all in Hass (IR transmitter nodes are a good example.) ([@OverloadUT] - [#11243]) ([isy994 docs]) ([binary_sensor.isy994 docs]) ([cover.isy994 docs]) ([fan.isy994 docs]) ([light.isy994 docs]) ([lock.isy994 docs]) ([sensor.isy994 docs]) ([switch.isy994 docs]) (breaking change) -- The [`egardia` alarm panel][alarm_control_panel.egardia docs] platform no longer a need the users to run a separate Egardiaserver component. It can now also run on HASS.io. ([@jeroenterheerdt] - [#11344]) ([alarm_control_panel.egardia docs]) (breaking change) -- The binary sensor platform of the DoorBird integration has been deleted, so remove DoorBird from your `binary_sensor` configuration. Instead, set the `doorbell_events` option of the `doorbird` component to `True`. The `last_visitor` option has been removed from the camera component, as it is now always added as an entity. ([@Klikini] - [#11193]) ([camera.doorbird docs]) (breaking change) -- The following attributes of the TP-Link switch and light platform have been renamed: - - Light: `current_consumption` -> `current_power_w`, `daily_consumption` -> `daily_energy_kwh` and `monthly_consumption` -> `monthly_energy_kwh` - - Switch: `current` -> `current_a`, `current_consumption` -> `current_power_w`, `total_consumption` -> `total_energy_kwh` and `daily_consumption` -> `today_energy_kwh` ([@DanNixon] - [#10979]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change) -- Move IMAP Email Content body to an attribute ([@notoriousbdg] - [#11096]) ([sensor.imap_email_content docs]) (breaking change) -- Automations which were using `state` that was returning `target_temperature` of the `netatmo` climate platform needs an update. ([@ciotlosm] - [#11345]) ([climate.netatmo docs]) (breaking change) -- The default availability payloads for the `MQTT` switch platform have changed from "ON" and "OFF" to "online" and "offline" (in order to match the majority of MQTT platforms that already supported availability reporting). ([@DanNixon] - [#11336]) (breaking change) -- Customizations for how entities are exposed to Alexa are no longer set via `customize`. Instead they are set via the configuration of the cloud component: - - ```yaml - cloud: - alexa: - entity_config: - switch.kitchen: - name: 'Name for Alexa' - description: 'Description for Alexa' - display_categories: 'LIGHT' - ``` - ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) -- The extension of the `alpha_vantage` requires an update of the configuration as now are exchange data available as well. ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change) -- The `prometheus` component now supports pushing all sensors and fixes wrong metrics. If may require that you update your configuration. ([@michaelkuty] - [#11159]) ([prometheus docs]) (breaking change) -- Insteon local devices will now use their address as the `entity_id` and `name`. The friendly name can be customized using the [standard customization configuration](/docs/configuration/customizing-devices/). ([@camrun91] - [#11088]) ([insteon_local docs]) ([fan.insteon_local docs]) ([light.insteon_local docs]) ([switch.insteon_local docs]) (breaking change) -- Google Assistant is no longer configured via `customize` but instead has its configuration under the `google_assistant` entry in your `configuration.yaml`. The attributes will no longer have to be prefixed with `google_assistant_` either. - - | Old option | New option | - | ---------- | ------------ | - | google_assistant | expose | - | aliases | aliases | - | google_assistant_name | name | - | google_assistant_type | type | - - Before: - - ```yaml - homeassistant: - customize: - switch.kitchen: - google_assistant: false - google_assistant_name: nice lights - google_assistant_type: light - aliases: - - roof lights - - google_assistant: - ``` - - After: - - ```yaml - google_assistant: - entity_config: - switch.kitchen: - expose: false - alias: roof lights - name: nice lights - type: light - ``` -([@balloob] - [#11499]) ([cloud docs]) ([google_assistant docs]) (breaking change) -- The `climate.set_aux_heat` service is no longer available for the Sensibo climate platform. Now call `climate.turn_on` or `climate.turn_off`. ([@andrey-git] - [#11579]) ([climate.sensibo docs]) (breaking change) -- Release 0.61.0 introduced a lazy service loading strategy that relied on all components and platforms following our naming convention. After the release we realized that not all services did, which have been addressed by this fix. This results in certain services changing names: - - ``` - todoist.new_task -> calendar.todoist_new_task - - snapcast.snapcast_snapshot -> media_player.snapcast_snapshot - snapcast.snapcast_restore -> media_player.snapcast_restore - - mopar.remote_command -> sensor.mopar_remote_command - - broadlink.learn_command_192_168_0_107 -> switch.broadlink_learn_command_192_168_0_107 - broadlink.send_packet_192_168_0_107 -> switch.broadlink_send_packet_192_168_0_107 - ``` - ([@amelchio] - [#11677]) ([calendar.todoist docs]) ([media_player.snapcast docs]) ([media_player.soundtouch docs]) ([sensor.mopar docs]) ([switch.broadlink docs]) ([switch.scsgate docs]) (breaking change) - - -## {% linkable_title All changes %} - -- Try multiple methods of getting data in asuswrt. ([@PeWu] - [#11140]) ([device_tracker.asuswrt docs]) -- Hydroquebec component use now asyncio ([@titilambert] - [#10795]) ([sensor.hydroquebec docs]) -- Hive Component Release Two ([@KJonline] - [#11053]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) -- Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) -- Fix statistics sensor mean and median when only one sample is available. ([@markferry] - [#11180]) ([sensor.statistics docs]) -- Extend Threshold binary sensor to support ranges ([@DanNixon] - [#11110]) ([binary_sensor.threshold docs]) (breaking change) -- Bump python-miio version ([@djchen] - [#11232]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Backup configuration files before overwriting ([@cgarwood] - [#11216]) -- Upgrade to new miflora version 0.2.0 ([@ChristianKuehnel] - [#11250]) ([sensor.miflora docs]) -- Add workaround for running tox on Windows platforms ([@veleek] - [#11188]) -- added myself to become code owner for miflora and plant ([@ChristianKuehnel] - [#11251]) -- Proper Steam game names and small fixes ([@frwickst] - [#11182]) ([sensor.steam_online docs]) (breaking change) -- Bugfix: 10509 - http is hard coded in plex sensor ([@ryanm101] - [#11072]) ([sensor.plex docs]) -- Adding MotionIP to BinarySensors for HMIP-SMI ([@schnoetz] - [#11268]) ([homematic docs]) -- Revert "Backup configuration files before overwriting" ([@pvizeli] - [#11269]) -- Functinality to save/restore snapshots for monoprice platform ([@etsinko] - [#10296]) ([media_player.monoprice docs]) -- Change manifest path to /states as this is the path / actually sets. ([@andrey-git] - [#11274]) -- Report Sensibo as off when it is off ([@andrey-git] - [#11281]) ([climate.sensibo docs]) -- Added password for GPS logger endpoint ([@foxel] - [#11245]) ([device_tracker.gpslogger docs]) -- Greenwave Reality (TCP Connected) Lighting Component ([@dfiel] - [#11282]) ([light.greenwave docs]) (new-platform) -- Adds support for disabled Tiles and automatic session renewal ([@bachya] - [#11172]) ([device_tracker.tile docs]) (breaking change) -- Plex refactor ([@ryanm101] - [#11235]) ([media_player.plex docs]) -- alexa: Add handling for covers ([@philk] - [#11242]) ([alexa.smart_home docs]) -- Added rainsensor ([@jbarrancos] - [#11023]) ([rainbird docs]) ([sensor.rainbird docs]) ([switch.rainbird docs]) (new-platform) -- Store raw state of RF sensors from alarmdecoder ([@PhracturedBlue] - [#10841]) ([alarmdecoder docs]) ([binary_sensor.alarmdecoder docs]) -- Add Chime status and control to Alarm Decoder component ([@goyney] - [#11271]) ([alarm_control_panel.alarmdecoder docs]) -- Better error handling ([@rofrantz] - [#11297]) ([sensor.transmission docs]) ([switch.transmission docs]) -- Removed error log used as debug ([@cmsimike] - [#11301]) ([octoprint docs]) -- Huge ISY994 platform cleanup, fixes support for 5.0.10 firmware ([@OverloadUT] - [#11243]) ([isy994 docs]) ([binary_sensor.isy994 docs]) ([cover.isy994 docs]) ([fan.isy994 docs]) ([light.isy994 docs]) ([lock.isy994 docs]) ([sensor.isy994 docs]) ([switch.isy994 docs]) (breaking change) -- Add heartbeat to websocket connections ([@balloob] - [#11298]) ([cloud.iot docs]) -- Fix typo in bitcoin.py component for mined blocks. ([@awkwardDuck] - [#11318]) ([sensor.bitcoin docs]) -- xiaomi_aqara: Fix covers never being closed ([@cnrd] - [#11319]) ([cover.xiaomi_aqara docs]) -- Fix for track_new_devices BC ([@masarliev] - [#11202]) ([device_tracker docs]) -- Upgrade aiohttp_cors to 0.6.0 ([@fabaff] - [#11310]) ([http docs]) -- Upgrade pysnmp to 4.4.3 ([@fabaff] - [#11317]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) -- Upgrade luftdaten to 0.1.3 ([@fabaff] - [#11316]) ([sensor.luftdaten docs]) -- Upgrade yahooweather to 0.10 ([@fabaff] - [#11309]) ([weather.yweather docs]) -- Upgrade distro to 1.2.0 ([@fabaff] - [#11312]) ([updater docs]) -- Upgrade python-digitalocean to 1.13.2 ([@fabaff] - [#11311]) ([digital_ocean docs]) -- Upgrade youtube_dl to 2017.12.23 ([@fabaff] - [#11308]) ([media_extractor docs]) -- Upgrade alpha_vantage to 1.6.0 ([@fabaff] - [#11307]) ([sensor.alpha_vantage docs]) -- Bugfix for HA Issue 7292, 9412 - switch to gamertag to receive ssl image url ([@ReneNulschDE] - [#11315]) ([sensor.xbox_live docs]) -- closes #11314 by not restricting the voice to anything but a string ([@Human] - [#11326]) ([tts.marytts docs]) -- Additional device classes for binary sensors ([@schmittx] - [#11280]) ([binary_sensor docs]) -- Remove need for separate EgardiaServer setup ([@jeroenterheerdt] - [#11344]) ([alarm_control_panel.egardia docs]) (breaking change) -- Add default names and validation for TP-Link devices ([@DanNixon] - [#11346]) ([light.tplink docs]) ([switch.tplink docs]) -- Sochain cryptocurrency sensor ([@Klathmon] - [#11335]) ([sensor.sochain docs]) (new-platform) -- pass stops_at to get_station_by_name ([@ttroy50] - [#11304]) ([sensor.irish_rail_transport docs]) -- Move data instance to setup ([@fabaff] - [#11350]) ([sensor.swiss_public_transport docs]) -- Update modbus.py ([@goldminenine] - [#11238]) ([modbus docs]) -- DoorBird feature update ([@Klikini] - [#11193]) ([camera.doorbird docs]) (breaking change) -- Upgrade aiohttp to 2.3.7 ([@fabaff] - [#11329]) -- Upgrade fuzzywuzzy to 0.16.0 ([@fabaff] - [#11331]) ([conversation docs]) -- Upgrade pyowm to 2.8.0 ([@fabaff] - [#11332]) ([sensor.openweathermap docs]) ([weather.openweathermap docs]) -- Upgrade sqlalchemy to 1.2.0 ([@fabaff] - [#11333]) -- Upgrade mypy to 0.560 ([@fabaff] - [#11334]) -- Upgrade python-telegram-bot to 9.0.0 ([@fabaff] - [#11341]) ([telegram_bot docs]) -- Upgrade youtube_dl to 2017.12.28 ([@fabaff] - [#11357]) ([media_extractor docs]) -- Correct units used in TP-Link energy monioring ([@DanNixon] - [#10979]) ([light.tplink docs]) ([switch.tplink docs]) (breaking change) -- Add HTTP endpoint for resending email confirmation ([@balloob] - [#11354]) ([cloud.auth_api docs]) ([cloud.http_api docs]) -- Fix RGB template ordering in MQTT Light ([@DanNixon] - [#11362]) ([light.mqtt docs]) -- Ping device tracker now respects interval_seconds ([@tschmidty69] - [#11348]) ([device_tracker.ping docs]) -- Fido component use now asyncio ([@titilambert] - [#11244]) ([sensor.fido docs]) -- Support for EcoNet water heaters ([@w1ll1am23] - [#11260]) ([climate.econet docs]) (new-platform) -- Remember the Milk - updating and completing tasks ([@ChristianKuehnel] - [#11069]) ([remember_the_milk docs]) -- Reverts unit conversions in TP-Link bulb ([@DanNixon] - [#11381]) ([light.tplink docs]) -- Clean up Google Assistant ([@balloob] - [#11375]) ([google_assistant docs]) ([google_assistant.http docs]) ([google_assistant.smart_home docs]) -- Adding support for Egardia / Woonveilig version GATE-03 ([@jeroenterheerdt] - [#11397]) ([alarm_control_panel.egardia docs]) -- Add deCONZ component ([@Kane610] - [#10321]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) (new-platform) -- Fix broken tests ([@balloob] - [#11395]) -- Upgrade pychromecast to 1.0.3 ([@OttoWinter] - [#11410]) ([media_player.cast docs]) -- Bump pywemo to fix request include problems. ([@pavoni] - [#11401]) ([wemo docs]) -- Log exceptions that happen during service call ([@balloob] - [#11394]) -- Move IMAP Email Content body to an attribute ([@notoriousbdg] - [#11096]) ([sensor.imap_email_content docs]) (breaking change) -- Notify webos timeout error fix ([@masarliev] - [#11027]) ([notify.webostv docs]) -- Removed status block to allow https://github.com/home-assistant/home-assistant-polymer/pull/766 with no impact ([@ciotlosm] - [#11345]) ([climate.netatmo docs]) (breaking change) -- More support for availability reporting on MQTT components ([@DanNixon] - [#11336]) (breaking change) -- Do not purge the most recent state for an entity ([@tinloaf] - [#11039]) -- Performance optimization of TP-Link switch ([@amelchio] - [#11416]) ([switch.tplink docs]) -- Fixing OpenWeatherMap Sensor. Current weather is 'unknown' if forecast: false. It was reported as #8640. ([@tomaszduda23] - [#11417]) ([sensor.openweathermap docs]) -- Silence redundant warnings about slow setup ([@amelchio] - [#11352]) -- Account for User-Agent being non-existent, causing a TypeError ([@akatrevorjay] - [#11064]) -- Cloud Updates ([@balloob] - [#11404]) ([cloud docs]) -- Add support for the renaming of Yamaha Receiver Zones via configuration file. Added a test to cover the change, plus previously untested options. ([@dfinlay] - [#11402]) ([media_player.yamaha docs]) -- Plex api update ([@ryanm101] - [#11423]) ([media_player.plex docs]) ([sensor.plex docs]) -- fix: hmip-etrv-2 now working with homeassistant ([@daenny] - [#11175]) ([homematic docs]) ([climate.homematic docs]) -- Fix errors in zigbee push state ([@SteveEasley] - [#11386]) ([zigbee docs]) -- Add on/off supported feature to climate ([@andrey-git] - [#11379]) ([climate docs]) ([climate.demo docs]) ([climate.sensibo docs]) -- Fix CONF_FRIENDLY_NAME ([@cdce8p] - [#11438]) ([cover.template docs]) ([light.template docs]) -- Climate: fix missing "|" ([@andrey-git] - [#11441]) ([climate.demo docs]) -- Google Assistant -> Google Actions ([@balloob] - [#11442]) ([cloud.iot docs]) -- Added new climate component from Daikin ([@rofrantz] - [#10983]) ([climate.daikin docs]) (new-platform) -- Updated generic thermostat to respect operation_mode and added away mode ([@ciotlosm] - [#11445]) ([climate.generic_thermostat docs]) -- Reconnect to alarmdecoder on disconnect ([@PhracturedBlue] - [#11383]) ([alarmdecoder docs]) -- Set tahoma cover scan interval to 60 seconds ([@bakedraccoon] - [#11447]) ([cover.tahoma docs]) -- Add some tests to the cloud component ([@balloob] - [#11460]) ([cloud docs]) ([cloud.iot docs]) -- Input Select - Added service description ([@cdce8p] - [#11456]) ([input_select docs]) -- Input Boolean - Deleted 'DEFAULT_INITIAL' ([@cdce8p] - [#11453]) ([input_boolean docs]) -- Updated gitignore file ([@cdce8p] - [#11452]) -- Update hydroquebec component to use hass httpsession ([@titilambert] - [#11412]) ([sensor.hydroquebec docs]) -- Catch everything when calling to OctoPrint API to fix #10557 ([@w1ll1am23] - [#11457]) ([octoprint docs]) -- Update PULL_REQUEST_TEMPLATE.md ([@danielhiversen] - [#11465]) -- Alexa to not use customize for entity config ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) -- Don't duplicate html5 registrations ([@Chris-V] - [#11451]) ([notify.html5 docs]) -- AlarmDecoder remove icon function as BinarySensorDevice handles it correctly now ([@hawk259] - [#11467]) ([binary_sensor.alarmdecoder docs]) -- Upgrade psutil to 5.4.3 ([@fabaff] - [#11468]) ([sensor.systemmonitor docs]) -- Upgrade alpha_vantage to 1.8.0 ([@fabaff] - [#11476]) ([sensor.alpha_vantage docs]) -- Fix vultr tests ([@balloob] - [#11477]) -- Upgrade yarl to 0.17.0 ([@fabaff] - [#11478]) -- Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) -- Upgrade pysnmp to 4.4.4 ([@fabaff] - [#11485]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) -- Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) -- Add missing configuration variables ([@fabaff] - [#11390]) ([sensor.metoffice docs]) -- Clean up Alexa.intent and DialogFlow.intent ([@balloob] - [#11492]) ([alexa.intent docs]) -- Fix time functions would throw errors in python scripts ([@tomwaters] - [#11414]) ([python_script docs]) -- Upgrade pywebpush to 1.5.0 ([@Chris-V] - [#11497]) ([notify.html5 docs]) -- upgrade schiene to 0.20 ([@JulianKahnert] - [#11504]) ([sensor.deutsche_bahn docs]) -- timer: include the remaining time in the state attributes ([@Julio-Guerra] - [#11510]) ([timer docs]) -- More tolerant KNX component if gateway cant be connected ([@Julius2342] - [#11511]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) -- Snips (new) added speech response, parse snips/duration ([@tschmidty69] - [#11513]) ([snips docs]) -- Add Dark Sky weather component ([@DanNixon] - [#11435]) ([weather.darksky docs]) (new-platform) -- Lazy loading of service descriptions ([@amelchio] - [#11479]) ([api docs]) ([websocket_api docs]) ([light.lifx docs]) -- Fix canary flaky test ([@balloob] - [#11519]) -- Address missed review comments for Dark Sky weather ([@DanNixon] - [#11520]) ([weather.darksky docs]) -- New features for Owntracks device_tracker ([@cpcowart] - [#11480]) ([device_tracker.owntracks docs]) -- Reconnect before mochad switch send command ([@aosadchyy] - [#11296]) ([switch.mochad docs]) -- Fix Kodi channels media type ([@florianj1] - [#11505]) ([media_player.kodi docs]) -- Extension sensor alpha_vantage ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change) -- MQTT json attributes ([@timstanley1985] - [#11439]) ([sensor.mqtt docs]) -- Support pushing all sensors and fix wrong metrics. ([@michaelkuty] - [#11159]) ([prometheus docs]) (breaking change) -- Add options feature to Baidu TTS. ([@yienxu] - [#11462]) ([tts.baidu docs]) -- Insteon local update ([@camrun91] - [#11088]) ([insteon_local docs]) ([fan.insteon_local docs]) ([light.insteon_local docs]) ([switch.insteon_local docs]) (breaking change) -- Snips: (fix) support new intentName format ([@tschmidty69] - [#11509]) ([snips docs]) -- Upgrade numpy to 1.14.0 ([@fabaff] - [#11542]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) -- Upgrade python-etherscan-api to 0.0.2 ([@fabaff] - [#11535]) ([sensor.etherscan docs]) -- Upgrade Sphinx to 1.6.6 ([@fabaff] - [#11534]) -- ZoneMinder event sensor updates ([@swilson] - [#11369]) ([sensor.zoneminder docs]) -- Move Google Assistant entity config out of customize ([@balloob] - [#11499]) ([cloud docs]) ([google_assistant docs]) (breaking change) -- Upgrade lightify to 1.0.6.1 ([@fabaff] - [#11545]) ([light.osramlightify docs]) -- Improved test runtime ([@cdce8p] - [#11553]) ([binary_sensor.workday docs]) -- Add 2 media_player services and 1 custom service to Squeezebox platform ([@ericpignet] - [#10969]) ([media_player.squeezebox docs]) -- Fix error on entity_config missing ([@philk] - [#11561]) ([google_assistant.http docs]) -- Upgrade keyring to 10.3.2 ([@fabaff] - [#11531]) -- Coinbase.com sensor platform ([@nkgilley] - [#11036]) ([coinbase docs]) ([sensor.coinbase docs]) (new-platform) -- Try to fix crashes after Hue refactoring ([@andreacampi] - [#11270]) ([light.hue docs]) -- Remove execution file perm ([@balloob] - [#11563]) -- Deprecate explicit entity_id in template platforms ([@amelchio] - [#11123]) ([binary_sensor.template docs]) ([cover.template docs]) ([light.template docs]) ([sensor.template docs]) ([switch.template docs]) -- Test tweaks ([@balloob] - [#11560]) -- Add Velux Windows to Tahoma ([@bakedraccoon] - [#11538]) ([tahoma docs]) ([cover.tahoma docs]) -- Extend hass.io services / updater ([@pvizeli] - [#11549]) ([hassio docs]) -- Add sensibo_assume_state service to Sensibo climate ([@andrey-git] - [#11567]) ([climate.sensibo docs]) -- Tracking all groups to allow changing of existing groups ([@randellhodges] - [#11444]) ([group docs]) -- Fix new squeezebox service descriptions for lazy loading ([@amelchio] - [#11574]) ([media_player.squeezebox docs]) -- Mark REST binary_sensor unavailable if request fails ([@DanNixon] - [#11506]) ([binary_sensor.rest docs]) -- Tado improvements - hot water zone sensors and climate precision ([@andersonshatch] - [#11521]) ([climate.tado docs]) ([sensor.tado docs]) -- Make the rpi_rf component thread-safe using an RLock ([@ulido] - [#11487]) ([switch.rpi_rf docs]) -- Update pyhomematic, support new devices ([@danielperna84] - [#11578]) ([homematic docs]) -- Alarmdecoder add validation of the zone types ([@hawk259] - [#11488]) ([alarmdecoder docs]) -- Support OSRAM lights on ZHA ([@armills] - [#11522]) ([light.zha docs]) -- Fix bluetooth tracker source ([@swilson] - [#11469]) ([device_tracker docs]) ([device_tracker.bluetooth_le_tracker docs]) ([device_tracker.bluetooth_tracker docs]) -- Fix for asuswrt, telnet not working and presence-detection for router mode ([@kennedyshead] - [#11422]) ([device_tracker.asuswrt docs]) -- Remove aux_heat support from Sensibo now that UI supports on/off ([@andrey-git] - [#11579]) ([climate.sensibo docs]) (breaking change) -- Changed device type of media player and cover to switch ([@Laqoore] - [#11483]) ([google_assistant.smart_home docs]) -- Control ordering of display in history component ([@rwa] - [#11340]) ([history docs]) -- Pr/11430 ([@balloob] - [#11587]) -- Cast return values and add unit tests for the yahoo weather component. ([@cgtobi] - [#10699]) ([weather.yweather docs]) -- add velux roller shutter to tahoma ([@bakedraccoon] - [#11586]) ([tahoma docs]) -- Added support for enable/disable motion detection ([@abjorshammar] - [#11583]) ([camera.uvc docs]) -- Avoid returning empty media_image_url string ([@JackWindows] - [#11557]) ([media_player.cast docs]) -- Core support for hass.io calls & Bugfix check_config ([@pvizeli] - [#11571]) ([__init__ docs]) ([hassio docs]) ([updater docs]) -- Fix Tahoma stop command for 2 types of shutters ([@bakedraccoon] - [#11588]) ([cover.tahoma docs]) -- Pushbullet email support (fix) ([@tschmidty69] - [#11590]) ([notify.pushbullet docs]) -- Fix state for trigger with forced updates ([@armills] - [#11595]) ([automation.state docs]) -- Snips add say and say_actions services (new) ([@tschmidty69] - [#11596]) ([snips docs]) -- Concord232 alarm arm away fix ([@rwa] - [#11597]) ([alarm_control_panel.concord232 docs]) ([binary_sensor.concord232 docs]) -- Bugfix and cleanup for Rfxtrx ([@danielhiversen] - [#11600]) -- Xiaomi lib upgrade ([@danielhiversen] - [#11603]) -- Upgrade yarl to 0.18.0 ([@fabaff] - [#11609]) -- patch stop command ([@bakedraccoon] - [#11612]) ([cover.tahoma docs]) -- Use kelvin/mireds correctly for setting iglo white ([@jesserockz] - [#11622]) -- Update Pyarlo to 0.1.2 ([@arsaboo] - [#11626]) - -[#10296]: https://github.com/home-assistant/home-assistant/pull/10296 -[#10321]: https://github.com/home-assistant/home-assistant/pull/10321 -[#10547]: https://github.com/home-assistant/home-assistant/pull/10547 -[#10699]: https://github.com/home-assistant/home-assistant/pull/10699 -[#10795]: https://github.com/home-assistant/home-assistant/pull/10795 -[#10841]: https://github.com/home-assistant/home-assistant/pull/10841 -[#10957]: https://github.com/home-assistant/home-assistant/pull/10957 -[#10969]: https://github.com/home-assistant/home-assistant/pull/10969 -[#10979]: https://github.com/home-assistant/home-assistant/pull/10979 -[#10983]: https://github.com/home-assistant/home-assistant/pull/10983 -[#11023]: https://github.com/home-assistant/home-assistant/pull/11023 -[#11027]: https://github.com/home-assistant/home-assistant/pull/11027 -[#11036]: https://github.com/home-assistant/home-assistant/pull/11036 -[#11039]: https://github.com/home-assistant/home-assistant/pull/11039 -[#11053]: https://github.com/home-assistant/home-assistant/pull/11053 -[#11064]: https://github.com/home-assistant/home-assistant/pull/11064 -[#11069]: https://github.com/home-assistant/home-assistant/pull/11069 -[#11072]: https://github.com/home-assistant/home-assistant/pull/11072 -[#11088]: https://github.com/home-assistant/home-assistant/pull/11088 -[#11096]: https://github.com/home-assistant/home-assistant/pull/11096 -[#11110]: https://github.com/home-assistant/home-assistant/pull/11110 -[#11123]: https://github.com/home-assistant/home-assistant/pull/11123 -[#11140]: https://github.com/home-assistant/home-assistant/pull/11140 -[#11159]: https://github.com/home-assistant/home-assistant/pull/11159 -[#11171]: https://github.com/home-assistant/home-assistant/pull/11171 -[#11172]: https://github.com/home-assistant/home-assistant/pull/11172 -[#11175]: https://github.com/home-assistant/home-assistant/pull/11175 -[#11180]: https://github.com/home-assistant/home-assistant/pull/11180 -[#11182]: https://github.com/home-assistant/home-assistant/pull/11182 -[#11188]: https://github.com/home-assistant/home-assistant/pull/11188 -[#11193]: https://github.com/home-assistant/home-assistant/pull/11193 -[#11202]: https://github.com/home-assistant/home-assistant/pull/11202 -[#11216]: https://github.com/home-assistant/home-assistant/pull/11216 -[#11232]: https://github.com/home-assistant/home-assistant/pull/11232 -[#11235]: https://github.com/home-assistant/home-assistant/pull/11235 -[#11238]: https://github.com/home-assistant/home-assistant/pull/11238 -[#11242]: https://github.com/home-assistant/home-assistant/pull/11242 -[#11243]: https://github.com/home-assistant/home-assistant/pull/11243 -[#11244]: https://github.com/home-assistant/home-assistant/pull/11244 -[#11245]: https://github.com/home-assistant/home-assistant/pull/11245 -[#11250]: https://github.com/home-assistant/home-assistant/pull/11250 -[#11251]: https://github.com/home-assistant/home-assistant/pull/11251 -[#11260]: https://github.com/home-assistant/home-assistant/pull/11260 -[#11268]: https://github.com/home-assistant/home-assistant/pull/11268 -[#11269]: https://github.com/home-assistant/home-assistant/pull/11269 -[#11270]: https://github.com/home-assistant/home-assistant/pull/11270 -[#11271]: https://github.com/home-assistant/home-assistant/pull/11271 -[#11274]: https://github.com/home-assistant/home-assistant/pull/11274 -[#11280]: https://github.com/home-assistant/home-assistant/pull/11280 -[#11281]: https://github.com/home-assistant/home-assistant/pull/11281 -[#11282]: https://github.com/home-assistant/home-assistant/pull/11282 -[#11296]: https://github.com/home-assistant/home-assistant/pull/11296 -[#11297]: https://github.com/home-assistant/home-assistant/pull/11297 -[#11298]: https://github.com/home-assistant/home-assistant/pull/11298 -[#11301]: https://github.com/home-assistant/home-assistant/pull/11301 -[#11304]: https://github.com/home-assistant/home-assistant/pull/11304 -[#11307]: https://github.com/home-assistant/home-assistant/pull/11307 -[#11308]: https://github.com/home-assistant/home-assistant/pull/11308 -[#11309]: https://github.com/home-assistant/home-assistant/pull/11309 -[#11310]: https://github.com/home-assistant/home-assistant/pull/11310 -[#11311]: https://github.com/home-assistant/home-assistant/pull/11311 -[#11312]: https://github.com/home-assistant/home-assistant/pull/11312 -[#11315]: https://github.com/home-assistant/home-assistant/pull/11315 -[#11316]: https://github.com/home-assistant/home-assistant/pull/11316 -[#11317]: https://github.com/home-assistant/home-assistant/pull/11317 -[#11318]: https://github.com/home-assistant/home-assistant/pull/11318 -[#11319]: https://github.com/home-assistant/home-assistant/pull/11319 -[#11326]: https://github.com/home-assistant/home-assistant/pull/11326 -[#11329]: https://github.com/home-assistant/home-assistant/pull/11329 -[#11331]: https://github.com/home-assistant/home-assistant/pull/11331 -[#11332]: https://github.com/home-assistant/home-assistant/pull/11332 -[#11333]: https://github.com/home-assistant/home-assistant/pull/11333 -[#11334]: https://github.com/home-assistant/home-assistant/pull/11334 -[#11335]: https://github.com/home-assistant/home-assistant/pull/11335 -[#11336]: https://github.com/home-assistant/home-assistant/pull/11336 -[#11340]: https://github.com/home-assistant/home-assistant/pull/11340 -[#11341]: https://github.com/home-assistant/home-assistant/pull/11341 -[#11344]: https://github.com/home-assistant/home-assistant/pull/11344 -[#11345]: https://github.com/home-assistant/home-assistant/pull/11345 -[#11346]: https://github.com/home-assistant/home-assistant/pull/11346 -[#11348]: https://github.com/home-assistant/home-assistant/pull/11348 -[#11350]: https://github.com/home-assistant/home-assistant/pull/11350 -[#11352]: https://github.com/home-assistant/home-assistant/pull/11352 -[#11354]: https://github.com/home-assistant/home-assistant/pull/11354 -[#11357]: https://github.com/home-assistant/home-assistant/pull/11357 -[#11362]: https://github.com/home-assistant/home-assistant/pull/11362 -[#11369]: https://github.com/home-assistant/home-assistant/pull/11369 -[#11375]: https://github.com/home-assistant/home-assistant/pull/11375 -[#11379]: https://github.com/home-assistant/home-assistant/pull/11379 -[#11381]: https://github.com/home-assistant/home-assistant/pull/11381 -[#11383]: https://github.com/home-assistant/home-assistant/pull/11383 -[#11386]: https://github.com/home-assistant/home-assistant/pull/11386 -[#11390]: https://github.com/home-assistant/home-assistant/pull/11390 -[#11394]: https://github.com/home-assistant/home-assistant/pull/11394 -[#11395]: https://github.com/home-assistant/home-assistant/pull/11395 -[#11397]: https://github.com/home-assistant/home-assistant/pull/11397 -[#11401]: https://github.com/home-assistant/home-assistant/pull/11401 -[#11402]: https://github.com/home-assistant/home-assistant/pull/11402 -[#11404]: https://github.com/home-assistant/home-assistant/pull/11404 -[#11410]: https://github.com/home-assistant/home-assistant/pull/11410 -[#11412]: https://github.com/home-assistant/home-assistant/pull/11412 -[#11414]: https://github.com/home-assistant/home-assistant/pull/11414 -[#11416]: https://github.com/home-assistant/home-assistant/pull/11416 -[#11417]: https://github.com/home-assistant/home-assistant/pull/11417 -[#11422]: https://github.com/home-assistant/home-assistant/pull/11422 -[#11423]: https://github.com/home-assistant/home-assistant/pull/11423 -[#11427]: https://github.com/home-assistant/home-assistant/pull/11427 -[#11435]: https://github.com/home-assistant/home-assistant/pull/11435 -[#11438]: https://github.com/home-assistant/home-assistant/pull/11438 -[#11439]: https://github.com/home-assistant/home-assistant/pull/11439 -[#11441]: https://github.com/home-assistant/home-assistant/pull/11441 -[#11442]: https://github.com/home-assistant/home-assistant/pull/11442 -[#11444]: https://github.com/home-assistant/home-assistant/pull/11444 -[#11445]: https://github.com/home-assistant/home-assistant/pull/11445 -[#11447]: https://github.com/home-assistant/home-assistant/pull/11447 -[#11451]: https://github.com/home-assistant/home-assistant/pull/11451 -[#11452]: https://github.com/home-assistant/home-assistant/pull/11452 -[#11453]: https://github.com/home-assistant/home-assistant/pull/11453 -[#11456]: https://github.com/home-assistant/home-assistant/pull/11456 -[#11457]: https://github.com/home-assistant/home-assistant/pull/11457 -[#11460]: https://github.com/home-assistant/home-assistant/pull/11460 -[#11461]: https://github.com/home-assistant/home-assistant/pull/11461 -[#11462]: https://github.com/home-assistant/home-assistant/pull/11462 -[#11465]: https://github.com/home-assistant/home-assistant/pull/11465 -[#11467]: https://github.com/home-assistant/home-assistant/pull/11467 -[#11468]: https://github.com/home-assistant/home-assistant/pull/11468 -[#11469]: https://github.com/home-assistant/home-assistant/pull/11469 -[#11476]: https://github.com/home-assistant/home-assistant/pull/11476 -[#11477]: https://github.com/home-assistant/home-assistant/pull/11477 -[#11478]: https://github.com/home-assistant/home-assistant/pull/11478 -[#11479]: https://github.com/home-assistant/home-assistant/pull/11479 -[#11480]: https://github.com/home-assistant/home-assistant/pull/11480 -[#11483]: https://github.com/home-assistant/home-assistant/pull/11483 -[#11485]: https://github.com/home-assistant/home-assistant/pull/11485 -[#11487]: https://github.com/home-assistant/home-assistant/pull/11487 -[#11488]: https://github.com/home-assistant/home-assistant/pull/11488 -[#11492]: https://github.com/home-assistant/home-assistant/pull/11492 -[#11497]: https://github.com/home-assistant/home-assistant/pull/11497 -[#11499]: https://github.com/home-assistant/home-assistant/pull/11499 -[#11504]: https://github.com/home-assistant/home-assistant/pull/11504 -[#11505]: https://github.com/home-assistant/home-assistant/pull/11505 -[#11506]: https://github.com/home-assistant/home-assistant/pull/11506 -[#11509]: https://github.com/home-assistant/home-assistant/pull/11509 -[#11510]: https://github.com/home-assistant/home-assistant/pull/11510 -[#11511]: https://github.com/home-assistant/home-assistant/pull/11511 -[#11513]: https://github.com/home-assistant/home-assistant/pull/11513 -[#11519]: https://github.com/home-assistant/home-assistant/pull/11519 -[#11520]: https://github.com/home-assistant/home-assistant/pull/11520 -[#11521]: https://github.com/home-assistant/home-assistant/pull/11521 -[#11522]: https://github.com/home-assistant/home-assistant/pull/11522 -[#11531]: https://github.com/home-assistant/home-assistant/pull/11531 -[#11534]: https://github.com/home-assistant/home-assistant/pull/11534 -[#11535]: https://github.com/home-assistant/home-assistant/pull/11535 -[#11538]: https://github.com/home-assistant/home-assistant/pull/11538 -[#11542]: https://github.com/home-assistant/home-assistant/pull/11542 -[#11545]: https://github.com/home-assistant/home-assistant/pull/11545 -[#11549]: https://github.com/home-assistant/home-assistant/pull/11549 -[#11553]: https://github.com/home-assistant/home-assistant/pull/11553 -[#11557]: https://github.com/home-assistant/home-assistant/pull/11557 -[#11560]: https://github.com/home-assistant/home-assistant/pull/11560 -[#11561]: https://github.com/home-assistant/home-assistant/pull/11561 -[#11563]: https://github.com/home-assistant/home-assistant/pull/11563 -[#11567]: https://github.com/home-assistant/home-assistant/pull/11567 -[#11571]: https://github.com/home-assistant/home-assistant/pull/11571 -[#11574]: https://github.com/home-assistant/home-assistant/pull/11574 -[#11578]: https://github.com/home-assistant/home-assistant/pull/11578 -[#11579]: https://github.com/home-assistant/home-assistant/pull/11579 -[#11583]: https://github.com/home-assistant/home-assistant/pull/11583 -[#11586]: https://github.com/home-assistant/home-assistant/pull/11586 -[#11587]: https://github.com/home-assistant/home-assistant/pull/11587 -[#11588]: https://github.com/home-assistant/home-assistant/pull/11588 -[#11590]: https://github.com/home-assistant/home-assistant/pull/11590 -[#11595]: https://github.com/home-assistant/home-assistant/pull/11595 -[#11596]: https://github.com/home-assistant/home-assistant/pull/11596 -[#11597]: https://github.com/home-assistant/home-assistant/pull/11597 -[#11600]: https://github.com/home-assistant/home-assistant/pull/11600 -[#11603]: https://github.com/home-assistant/home-assistant/pull/11603 -[#11609]: https://github.com/home-assistant/home-assistant/pull/11609 -[#11612]: https://github.com/home-assistant/home-assistant/pull/11612 -[#11622]: https://github.com/home-assistant/home-assistant/pull/11622 -[#11626]: https://github.com/home-assistant/home-assistant/pull/11626 -[@Chris-V]: https://github.com/Chris-V -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@DanNixon]: https://github.com/DanNixon -[@Human]: https://github.com/Human -[@JackWindows]: https://github.com/JackWindows -[@JulianKahnert]: https://github.com/JulianKahnert -[@Julio-Guerra]: https://github.com/Julio-Guerra -[@Julius2342]: https://github.com/Julius2342 -[@KJonline]: https://github.com/KJonline -[@Kane610]: https://github.com/Kane610 -[@Klathmon]: https://github.com/Klathmon -[@Klikini]: https://github.com/Klikini -[@Laqoore]: https://github.com/Laqoore -[@OttoWinter]: https://github.com/OttoWinter -[@OverloadUT]: https://github.com/OverloadUT -[@PeWu]: https://github.com/PeWu -[@PhracturedBlue]: https://github.com/PhracturedBlue -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@SteveEasley]: https://github.com/SteveEasley -[@abjorshammar]: https://github.com/abjorshammar -[@abondoe]: https://github.com/abondoe -[@akatrevorjay]: https://github.com/akatrevorjay -[@amelchio]: https://github.com/amelchio -[@andersonshatch]: https://github.com/andersonshatch -[@andreacampi]: https://github.com/andreacampi -[@andrey-git]: https://github.com/andrey-git -[@aosadchyy]: https://github.com/aosadchyy -[@armills]: https://github.com/armills -[@arsaboo]: https://github.com/arsaboo -[@awkwardDuck]: https://github.com/awkwardDuck -[@bachya]: https://github.com/bachya -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@camrun91]: https://github.com/camrun91 -[@cdce8p]: https://github.com/cdce8p -[@cgarwood]: https://github.com/cgarwood -[@cgtobi]: https://github.com/cgtobi -[@ciotlosm]: https://github.com/ciotlosm -[@cmsimike]: https://github.com/cmsimike -[@cnrd]: https://github.com/cnrd -[@cpcowart]: https://github.com/cpcowart -[@daenny]: https://github.com/daenny -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@dfiel]: https://github.com/dfiel -[@dfinlay]: https://github.com/dfinlay -[@djchen]: https://github.com/djchen -[@ericpignet]: https://github.com/ericpignet -[@etsinko]: https://github.com/etsinko -[@fabaff]: https://github.com/fabaff -[@florianj1]: https://github.com/florianj1 -[@foxel]: https://github.com/foxel -[@frwickst]: https://github.com/frwickst -[@goldminenine]: https://github.com/goldminenine -[@goyney]: https://github.com/goyney -[@hawk259]: https://github.com/hawk259 -[@jbarrancos]: https://github.com/jbarrancos -[@jeroenterheerdt]: https://github.com/jeroenterheerdt -[@jesserockz]: https://github.com/jesserockz -[@kennedyshead]: https://github.com/kennedyshead -[@markferry]: https://github.com/markferry -[@masarliev]: https://github.com/masarliev -[@michaelkuty]: https://github.com/michaelkuty -[@nkgilley]: https://github.com/nkgilley -[@notoriousbdg]: https://github.com/notoriousbdg -[@pavoni]: https://github.com/pavoni -[@philk]: https://github.com/philk -[@pvizeli]: https://github.com/pvizeli -[@randellhodges]: https://github.com/randellhodges -[@rofrantz]: https://github.com/rofrantz -[@rwa]: https://github.com/rwa -[@ryanm101]: https://github.com/ryanm101 -[@schmittx]: https://github.com/schmittx -[@schnoetz]: https://github.com/schnoetz -[@swilson]: https://github.com/swilson -[@thibmaek]: https://github.com/thibmaek -[@timstanley1985]: https://github.com/timstanley1985 -[@tinloaf]: https://github.com/tinloaf -[@titilambert]: https://github.com/titilambert -[@tomaszduda23]: https://github.com/tomaszduda23 -[@tomwaters]: https://github.com/tomwaters -[@tschmidty69]: https://github.com/tschmidty69 -[@ttroy50]: https://github.com/ttroy50 -[@ulido]: https://github.com/ulido -[@veleek]: https://github.com/veleek -[@w1ll1am23]: https://github.com/w1ll1am23 -[@yienxu]: https://github.com/yienxu -[__init__ docs]: /components/__init__/ -[alarm_control_panel.alarmdecoder docs]: /components/alarm_control_panel.alarmdecoder/ -[alarm_control_panel.concord232 docs]: /components/alarm_control_panel.concord232/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[alarmdecoder docs]: /components/alarmdecoder/ -[alexa.intent docs]: /components/alexa.intent/ -[alexa.smart_home docs]: /components/alexa.smart_home/ -[api docs]: /components/api/ -[automation.state docs]: /docs/automation/trigger/#state-trigger -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.alarmdecoder docs]: /components/binary_sensor.alarmdecoder/ -[binary_sensor.concord232 docs]: /components/binary_sensor.concord232/ -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[binary_sensor.isy994 docs]: /components/binary_sensor.isy994/ -[binary_sensor.knx docs]: /components/binary_sensor.knx/ -[binary_sensor.rest docs]: /components/binary_sensor.rest/ -[binary_sensor.template docs]: /components/binary_sensor.template/ -[binary_sensor.threshold docs]: /components/binary_sensor.threshold/ -[binary_sensor.trend docs]: /components/binary_sensor.trend/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[camera.doorbird docs]: /components/camera.doorbird/ -[camera.uvc docs]: /components/camera.uvc/ -[climate docs]: /components/climate/ -[climate.daikin docs]: /components/climate.daikin/ -[climate.demo docs]: /components/climate.demo/ -[climate.econet docs]: /components/climate.econet/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.hive docs]: /components/climate.hive/ -[climate.homematic docs]: /components/climate.homematic/ -[climate.knx docs]: /components/climate.knx/ -[climate.netatmo docs]: /components/climate.netatmo/ -[climate.sensibo docs]: /components/climate.sensibo/ -[climate.tado docs]: /components/climate.tado/ -[climate.touchline docs]: /components/climate.touchline/ -[cloud docs]: /components/cloud/ -[cloud.auth_api docs]: /components/cloud.auth_api/ -[cloud.http_api docs]: /components/cloud.http_api/ -[cloud.iot docs]: /components/cloud.iot/ -[coinbase docs]: /components/coinbase/ -[conversation docs]: /components/conversation/ -[cover.isy994 docs]: /components/cover.isy994/ -[cover.knx docs]: /components/cover.knx/ -[cover.tahoma docs]: /components/cover.tahoma/ -[cover.template docs]: /components/cover.template/ -[cover.xiaomi_aqara docs]: /components/cover.xiaomi_aqara/ -[deconz docs]: /components/deconz/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.bluetooth_le_tracker docs]: /components/device_tracker.bluetooth_le_tracker/ -[device_tracker.bluetooth_tracker docs]: /components/device_tracker.bluetooth_tracker/ -[device_tracker.gpslogger docs]: /components/device_tracker.gpslogger/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.ping docs]: /components/device_tracker.ping/ -[device_tracker.snmp docs]: /components/device_tracker.snmp/ -[device_tracker.tile docs]: /components/device_tracker.tile/ -[digital_ocean docs]: /components/digital_ocean/ -[fan.insteon_local docs]: /components/fan.insteon_local/ -[fan.isy994 docs]: /components/fan.isy994/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[google_assistant docs]: /components/google_assistant/ -[google_assistant.http docs]: /components/google_assistant.http/ -[google_assistant.smart_home docs]: /components/google_assistant.smart_home/ -[group docs]: /components/group/ -[hassio docs]: /components/hassio/ -[history docs]: /components/history/ -[hive docs]: /components/hive/ -[homematic docs]: /components/homematic/ -[http docs]: /components/http/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[input_boolean docs]: /components/input_boolean/ -[input_select docs]: /components/input_select/ -[insteon_local docs]: /components/insteon_local/ -[isy994 docs]: /components/isy994/ -[knx docs]: /components/knx/ -[light.deconz docs]: /components/light.deconz/ -[light.greenwave docs]: /components/light.greenwave/ -[light.hive docs]: /components/light.hive/ -[light.hue docs]: /components/light.hue/ -[light.iglo docs]: /components/light.iglo/ -[light.insteon_local docs]: /components/light.insteon_local/ -[light.isy994 docs]: /components/light.isy994/ -[light.knx docs]: /components/light.knx/ -[light.lifx docs]: /components/light.lifx/ -[light.mqtt docs]: /components/light.mqtt/ -[light.osramlightify docs]: /components/light.osramlightify/ -[light.template docs]: /components/light.template/ -[light.tplink docs]: /components/light.tplink/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.zha docs]: /components/light.zha/ -[lock.isy994 docs]: /components/lock.isy994/ -[media_extractor docs]: /components/media_extractor/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.kodi docs]: /components/media_player.kodi/ -[media_player.monoprice docs]: /components/media_player.monoprice/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[media_player.yamaha docs]: /components/media_player.yamaha/ -[modbus docs]: /components/modbus/ -[notify.html5 docs]: /components/notify.html5/ -[notify.pushbullet docs]: /components/notify.pushbullet/ -[notify.webostv docs]: /components/notify.webostv/ -[octoprint docs]: /components/octoprint/ -[prometheus docs]: /components/prometheus/ -[python_script docs]: /components/python_script/ -[rainbird docs]: /components/rainbird/ -[remember_the_milk docs]: /components/remember_the_milk/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[sensor.bitcoin docs]: /components/sensor.bitcoin/ -[sensor.coinbase docs]: /components/sensor.coinbase/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/ -[sensor.discogs docs]: /components/sensor.discogs/ -[sensor.etherscan docs]: /components/sensor.etherscan/ -[sensor.fido docs]: /components/sensor.fido/ -[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ -[sensor.imap_email_content docs]: /components/sensor.imap_email_content/ -[sensor.irish_rail_transport docs]: /components/sensor.irish_rail_transport/ -[sensor.isy994 docs]: /components/sensor.isy994/ -[sensor.knx docs]: /components/sensor.knx/ -[sensor.luftdaten docs]: /components/sensor.luftdaten/ -[sensor.metoffice docs]: /components/sensor.metoffice/ -[sensor.miflora docs]: /components/sensor.miflora/ -[sensor.mqtt docs]: /components/sensor.mqtt/ -[sensor.openweathermap docs]: /components/sensor.openweathermap/ -[sensor.plex docs]: /components/sensor.plex/ -[sensor.rainbird docs]: /components/sensor.rainbird/ -[sensor.snmp docs]: /components/sensor.snmp/ -[sensor.sochain docs]: /components/sensor.sochain/ -[sensor.statistics docs]: /components/sensor.statistics/ -[sensor.steam_online docs]: /components/sensor.steam_online/ -[sensor.swiss_public_transport docs]: /components/sensor.swiss_public_transport/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.tado docs]: /components/sensor.tado/ -[sensor.template docs]: /components/sensor.template/ -[sensor.transmission docs]: /components/sensor.transmission/ -[sensor.xbox_live docs]: /components/sensor.xbox_live/ -[sensor.zoneminder docs]: /components/sensor.zoneminder/ -[snips docs]: /components/snips/ -[switch.insteon_local docs]: /components/switch.insteon_local/ -[switch.isy994 docs]: /components/switch.isy994/ -[switch.knx docs]: /components/switch.knx/ -[switch.mochad docs]: /components/switch.mochad/ -[switch.rainbird docs]: /components/switch.rainbird/ -[switch.rpi_rf docs]: /components/switch.rpi_rf/ -[switch.snmp docs]: /components/switch.snmp/ -[switch.template docs]: /components/switch.template/ -[switch.tplink docs]: /components/switch.tplink/ -[switch.transmission docs]: /components/switch.transmission/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[tahoma docs]: /components/tahoma/ -[telegram_bot docs]: /components/telegram_bot/ -[timer docs]: /components/timer/ -[tts.baidu docs]: /components/tts.baidu/ -[tts.marytts docs]: /components/tts.marytts/ -[updater docs]: /components/updater/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[weather.darksky docs]: /components/weather.darksky/ -[weather.openweathermap docs]: /components/weather.openweathermap/ -[weather.yweather docs]: /components/weather.yweather/ -[websocket_api docs]: /components/websocket_api/ -[wemo docs]: /components/wemo/ -[zigbee docs]: /components/zigbee/ -[#11670]: https://github.com/home-assistant/home-assistant/pull/11670 -[#11677]: https://github.com/home-assistant/home-assistant/pull/11677 -[#11678]: https://github.com/home-assistant/home-assistant/pull/11678 -[#11686]: https://github.com/home-assistant/home-assistant/pull/11686 -[#11713]: https://github.com/home-assistant/home-assistant/pull/11713 -[@amelchio]: https://github.com/amelchio -[@danielhiversen]: https://github.com/danielhiversen -[@rcloran]: https://github.com/rcloran -[@rwa]: https://github.com/rwa -[@tinloaf]: https://github.com/tinloaf -[binary_sensor.rfxtrx docs]: /components/binary_sensor.rfxtrx/ -[calendar.todoist docs]: /components/calendar.todoist/ -[history docs]: /components/history/ -[light.zha docs]: /components/light.zha/ -[media_player.snapcast docs]: /components/media_player.snapcast/ -[media_player.soundtouch docs]: /components/media_player.soundtouch/ -[rfxtrx docs]: /components/rfxtrx/ -[sensor.mopar docs]: /components/sensor.mopar/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.scsgate docs]: /components/switch.scsgate/ -[zha docs]: /components/zha/ diff --git a/source/_posts/2018-01-21-clarification-emulated-hue.markdown b/source/_posts/2018-01-21-clarification-emulated-hue.markdown deleted file mode 100644 index b1b9138ae7..0000000000 --- a/source/_posts/2018-01-21-clarification-emulated-hue.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -title: "Clarification about Emulated Hue" -description: "The Emulated Hue component is not going to be removed nor will we ever remove any functionality from Home Assistant to push you to subscribe to the Community Support Package." -date: 2018-01-21 01:00:00 -date_formatted: "January 21, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Public-Service-Announcement ---- - -There are some misconceptions floating around about the future of the Emulated Hue component and I would like to set the record straight. **The Emulated Hue component is not going to be removed nor will we ever remove any functionality from Home Assistant to push you to support the Home Assistant project by subscribing to the Community Support Package.** - -The reason people are concerned about the future of the Emulated Hue component is because of a poor choice of words in a deprecation message. This message was [introduced a year ago][pr2] when we deprecated the config option `type: alexa` for the Emulated Hue component: - -> Alexa type is deprecated and will be removed in a future version - -That config option should never have been called `type: alexa` but instead have been called `mode: legacy`. If you think about it, why would emulating something even have different modes it emulates based on the consumer? That means that one of the two emulation modes is incorrect. - -The old implementation was not 100% correct. It was correct enough to work with Alexa (the original target) but not with Google Home. When fixing Emulated Hue we added `type: alexa` to re-enable the old implementation so that people did not have to go through the trouble to re-add their Alexa devices. The option was deprecated to indicate that we would remove the incorrect emulation in the future. However, we forgot about actually following through with that. - -The mistake we made was calling the correct mode `google_home` although it had nothing to do with Google Home. It confused people and they kept adding `type: alexa` to their configuration, triggering the deprecation warning. - -The warning will be updated starting Home Assistant 0.62 and will also include a link to this blog post. - -More info: - -- To read about what was incorrect in the first version of Emulated Hue, take a look at the PR fixing it: [Re-org emulated_hue and fix google home][pr1]. -- Read the [documentation on how to configure Emulated Hue][eh-conf] - -[pr1]: https://github.com/home-assistant/home-assistant/pull/4708 -[pr2]: https://github.com/home-assistant/home-assistant/pull/5549 -[eh-conf]: /components/emulated_hue/#configuration diff --git a/source/_posts/2018-01-27-release-62.markdown b/source/_posts/2018-01-27-release-62.markdown deleted file mode 100644 index 1b72621881..0000000000 --- a/source/_posts/2018-01-27-release-62.markdown +++ /dev/null @@ -1,511 +0,0 @@ ---- -layout: post -title: "0.62: MyChevy, Iota and Venstar Thermostat" -description: "Keep track of your Chevy Bolt, monitor your IOTA wallets and control your Venstar Thermostats." -date: 2018-01-27 01:00:00 -date_formatted: "January 27, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-01-0.62/components.png ---- - - - -Second release of the year and it's buzzing on GitHub. This release we had 70 people contribute code. We've also managed to finally get our PR count below a 100 open PRs again. A lot of cool stuff still waiting to make it to a future Home Assistant release. - -I want to give a shout out to [@martinhjelmare] and [@frenck]. Martin is doing an amazing job at code reviews and Franck has been kicking ass with Hass.io add-ons and keeping track of our documentation PRs. Thanks for this amazing work! - -## MyChevy - -With this new integration by [@sdague] you are able to keep an eye on your Chevy Bolt EV. Keep track if your car is plugged in, the battery stats and the range it is currently capable of driving. Hip! - -## New Platforms - -- Adding support for Lutron covers ([@nickovs] - [#11602]) ([lutron docs]) ([cover.lutron docs]) (new-platform) -- Add basic mychevy component ([@sdague] - [#11409]) ([mychevy docs]) (new-platform) -- Added support for TekSavvy bandwidth sensor ([@jpjodoin] - [#11186]) ([sensor.teksavvy docs]) (new-platform) -- Ihc component and platforms ([@dingusdk] - [#10916]) ([ihc docs]) ([binary_sensor.ihc docs]) ([light.ihc docs]) ([sensor.ihc docs]) ([switch.ihc docs]) (new-platform) -- Iota wallet ([@jinnerbichler] - [#11398]) ([iota docs]) ([sensor.iota docs]) (new-platform) - -## {% linkable_title Release 0.62.1 - January 30 %} - -- Snips - (fix/change) remove response when intent not handled ([@tschmidty69] - [#11929]) ([snips docs]) -- Fix asuswrt AttributeError on neigh for unknown device ([@scop] - [#11960]) ([device_tracker.asuswrt docs]) -- Set default values for Daikin devices that don't support fan direction and fan speed features ([@rofrantz] - [#12000]) ([climate.daikin docs]) -- Fix parameter escaping ([@smoldaner] - [#12008]) ([media_player.squeezebox docs]) -- Error handling, in case no connections are available ([@ReneNulschDE] - [#12010]) ([sensor.deutsche_bahn docs]) -- Fix 404 for Hass.io panel using frontend dev ([@c727] - [#12039]) ([frontend docs]) -- Upgrade pyharmony to 1.0.20 ([@amelchio] - [#12043]) ([remote.harmony docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - - -## Breaking Changes - -- Tahoma platform will get new entity IDs ([@glpatcern] - [#11547]) ([tahoma docs]) ([cover.tahoma docs]) (breaking change) -- Mold indicator: attribute names no longer include spaces or periods ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) -- Custom component devs only: `EntityComponent.add_entity(entity)` and `EntityComponent.async_add_entity(entity)` have been removed. Use `EntityComponent.add_entities([entity])` and `EntityComponent.async_add_entities([entity])` instead. Also `EntityComponent.entities` is no longer a dictionary but instead an iterable. Use `EntityComponent.get_entity(entity_id)` to get entity by id. ([@balloob] - [#11691]) (breaking change) - -## All changes - -- Upgrade keyring to 10.6.0 ([@fabaff] - [#11608]) -- Upgrad youtube_dl to 2017.12.31 ([@fabaff] - [#11610]) -- small sonos cleanup ([@pvizeli] - [#11607]) ([media_player.sonos docs]) -- Update Xiaomi Miio compontent broken URI ([@keesschollaart81] - [#11621]) ([light.xiaomi_miio docs]) -- light/mqqt_json: allow brightness scaling ([@jkoelker] - [#11613]) -- Adding support for Lutron covers ([@nickovs] - [#11602]) ([lutron docs]) ([cover.lutron docs]) (new-platform) -- Hyperion: Add brightness, HDMI and effect support ([@starkillerOG] - [#11543]) ([light.hyperion docs]) -- Fixes and enhancements for the Tahoma platform ([@glpatcern] - [#11547]) ([tahoma docs]) ([cover.tahoma docs]) (breaking change) -- upgrade xiaomi lib ([@danielhiversen] - [#11629]) -- Add templates to MQTT climate ([@tinloaf] - [#11623]) -- Upgrade coinmarketcap to 4.1.2 ([@fabaff] - [#11634]) -- Add Deconz support for Zigbee green power devices like Hue Tap ([@Kane610] - [#11455]) ([deconz docs]) ([sensor.deconz docs]) -- Bump dev to 0.62.0.dev0 ([@fabaff] - [#11652]) -- Add ability to specify a sender in the clicksend notification ([@heydonms] - [#11046]) ([notify.clicksend docs]) -- Round values to one decimal ([@covrig] - [#11673]) ([sensor.xiaomi_aqara docs]) -- Add basic mychevy component ([@sdague] - [#11409]) ([mychevy docs]) (new-platform) -- update mypy commandline arguments ([@benleb] - [#11638]) -- Add support for configuring jeelink RF parameters ([@hthiery] - [#11620]) -- Wemo Dimmer Support ([@angel12] - [#10882]) ([wemo docs]) ([light.wemo docs]) -- add temperature controls to eph-ember ([@ttroy50] - [#11400]) ([climate.ephember docs]) -- Upgrade youtube_dl to 2018.01.14 ([@fabaff] - [#11661]) -- Change line separator to LN ([@fabaff] - [#11662]) ([hive docs]) ([map docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([notify.prowl docs]) ([sensor.hive docs]) ([switch.hive docs]) -- Upgrade sqlalchemy to 1.2.1 ([@fabaff] - [#11666]) -- Upgrade pylast to 2.1.0 ([@fabaff] - [#11668]) -- Added extra arguments to onvif platform config ([@karlkar] - [#11680]) ([camera.onvif docs]) -- Enable probot move ([@fabaff] - [#11690]) -- fixed not to include spaces or dots in attribute names ([@olskar] - [#11694]) ([sensor.mold_indicator docs]) (breaking change) -- Add attributes ([@fabaff] - [#11698]) ([sensor.random docs]) -- Feature/fritzdect errorhandling ([@BastianPoe] - [#11490]) ([switch.fritzdect docs]) -- Tesla bug fix #11598 ([@zabuldon] - [#11707]) -- Update mold_indicator.py ([@olskar] - [#11715]) ([sensor.mold_indicator docs]) -- Override default name for TP-Link devices ([@DanNixon] - [#11710]) ([light.tplink docs]) ([switch.tplink docs]) -- Don't use None inside header ([@pvizeli] - [#11725]) ([hassio docs]) -- Add enable_output service to Yamaha platform ([@postlund] - [#11103]) ([media_player.yamaha docs]) -- Fix effects not appearing in UI due to missing attribute ([@shortbloke] - [#11738]) ([light.flux_led docs]) -- Fix for None object access attempt ([@karlkar] - [#11748]) -- Fixed universal media player templated source_select bug (issue #10981) and corrected typo in test_universal ([@iliketoprogram14] - [#11746]) -- Fix Tahoma device class ([@bakedraccoon] - [#11745]) ([cover.tahoma docs]) -- Add deCONZ entities in a predicitive order ([@Kane610] - [#11712]) ([binary_sensor.deconz docs]) ([sensor.deconz docs]) -- Xbox sensor - Extend error handling ([@ReneNulschDE] - [#11637]) ([sensor.xbox_live docs]) -- Upgrade netdisco ([@balloob] - [#11752]) -- set default value for rfxtrx config ([@danielhiversen] - [#11767]) ([binary_sensor.rfxtrx docs]) -- Round off exchange rate ([@arsaboo] - [#11765]) ([sensor.alpha_vantage docs]) -- Update icon (fixes #11744) ([@fabaff] - [#11758]) ([sensor.fixer docs]) -- Use localized forecast for openweathermap ([@brainexe] - [#11770]) ([sensor.openweathermap docs]) -- Unit should be mph as that is what the metoffices datapoint API returns ([@ioangogo] - [#11760]) ([sensor.metoffice docs]) -- Owntracks: Use bluetooth_le as source_type if beacon was used for location change. ([@cnrd] - [#11615]) ([device_tracker.owntracks docs]) -- Add a 'last' mode and attribute to min_max sensor ([@markferry] - [#11037]) ([sensor.min_max docs]) -- Update header and make it less verbose ([@fabaff] - [#11774]) ([asterisk_mbox docs]) -- Added support for TekSavvy bandwidth sensor ([@jpjodoin] - [#11186]) ([sensor.teksavvy docs]) (new-platform) -- Fix for Neato D3 and D5 ([@karlkar] - [#11775]) -- Axis discovery fails to save conf ([@Kane610] - [#11769]) ([axis docs]) -- Limit service description loading to a single thread ([@amelchio] - [#11733]) -- Snips: (change) Removed unknown intent speech response ([@tschmidty69] - [#11776]) ([snips docs]) -- Implemented event_data_template (new) ([@tschmidty69] - [#11057]) -- Fix PEP8 and PEP257 issues ([@fabaff] - [#11780]) ([deconz docs]) ([scene docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) -- Fix typos ([@fabaff] - [#11781]) ([system_log docs]) -- Support for performance mode on Rheem water heaters. ([@w1ll1am23] - [#11786]) ([climate.econet docs]) -- Service for setting a fixed scene of Xiaomi MIIO lights ([@syssi] - [#10819]) ([light.xiaomi_miio docs]) -- Homematic ip tilt covers ([@steffenslavetinsky] - [#11650]) ([cover.homematic docs]) -- plant - check history for min_brightness ([@ChristianKuehnel] - [#9534]) ([plant docs]) -- add generic rollershutter agian, was missing in last merge ([@philklei] - [#11788]) ([tahoma docs]) -- Additional attributes and services of the Xiaomi Air Purifier introduced ([@syssi] - [#11249]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- flux led version 0.20 ([@danielhiversen] - [#11791]) -- Hyperion: fix ([@starkillerOG] - [#11793]) ([light.hyperion docs]) -- Fix sensibo function names ([@andrey-git] - [#11797]) ([climate.sensibo docs]) -- Always load yr picture from https ([@andrey-git] - [#11796]) ([sensor.yr docs]) -- Make Google TTS secure ([@PRabahy] - [#11031]) ([tts.google docs]) -- Correct inadvertent change to file permissions ([@shortbloke] - [#11755]) ([light.flux_led docs]) -- Fix recorder purge ([@tinloaf] - [#11802]) -- Disable installing Telldus in Docker ([@balloob] - [#11806]) -- Nad ([@robhuls] - [#11800]) -- bump roku version ([@soberstadt] - [#11816]) -- MiFlora - use bluepy on linux systems ([@ChristianKuehnel] - [#11284]) ([light.decora docs]) ([sensor.miflora docs]) -- Ihc component and platforms ([@dingusdk] - [#10916]) ([ihc docs]) ([binary_sensor.ihc docs]) ([light.ihc docs]) ([sensor.ihc docs]) ([switch.ihc docs]) (new-platform) -- Change telldus domain to download.telldus.com ([@michaelarnauts] - [#11825]) -- Add more workday sensor countries and update holidays library to version 0.9.3 ([@drndos] - [#11826]) ([binary_sensor.workday docs]) -- Add missing availability schema to MQTT alarm panel ([@DanNixon] - [#11829]) ([alarm_control_panel.mqtt docs]) -- python-miio version bumped. Fixes all xiaomi_miio components. (Closes: #11768) ([@syssi] - [#11837]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Add waterfurnace platform ([@sdague] - [#11732]) -- (Re)Enable Daikin autodiscovery ([@rofrantz] - [#11842]) -- Fixes for PEP257 ([@fabaff] - [#11810]) -- bump eq3bt version ([@rytilahti] - [#11834]) ([climate.eq3btsmart docs]) -- Fix Unifi direct errors caused by AP reboot. ([@w1ll1am23] - [#11835]) ([device_tracker.unifi_direct docs]) -- Change 'on' to 'heat' as fallback thermostat mode ([@andrewdolphin] - [#11377]) ([google_assistant docs]) -- Use strict timeout when polling Samsung TV (Fix for #6375) ([@kennedyshead] - [#11759]) ([media_player.samsungtv docs]) -- Fix issues with generic thermostat ([@ciotlosm] - [#11805]) -- maxcube: Set MAX! Window Sensor's class to 'window' ([@leppa] - [#11799]) ([binary_sensor.maxcube docs]) -- Fix new iframe panel url ([@pvizeli] - [#11850]) ([hassio docs]) -- Fix races on recorder test ([@sdague] - [#11857]) -- Clean up entity component ([@balloob] - [#11691]) (breaking change) -- Allow exposing sensors as temperature or humidity 'climate' devices to Google Assistant ([@rofrantz] - [#11095]) ([google_assistant docs]) -- BME680 Sensor Component ([@arcsur] - [#11695]) -- Respond to Alexa scene activation correctly ([@bitglue] - [#11869]) ([alexa docs]) -- Checking Xiaomi Aqara devices unavailability states ([@PaulAnnekov] - [#11631]) ([xiaomi_aqara docs]) ([binary_sensor.xiaomi_aqara docs]) ([cover.xiaomi_aqara docs]) ([light.xiaomi_aqara docs]) ([sensor.xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) -- Hass.io panel v2 ([@pvizeli] - [#11860]) ([hassio docs]) -- Add missing mock call for test_minimal_config ([@sdague] - [#11858]) -- Expose Alexa Smart Home via HTTP POST ([@bitglue] - [#11859]) ([alexa docs]) -- fixed async function called in a thread ([@PaulAnnekov] - [#11882]) ([xiaomi_aqara docs]) -- upgrade ecobee ([@nkgilley] - [#11878]) ([ecobee docs]) -- Fix for hive aux_heat target temperature display ([@Rendili] - [#11884]) ([hive docs]) -- Bump waterfurnace library to 0.3.0 ([@sdague] - [#11888]) ([waterfurnace docs]) -- Postpone "Z-wave not ready" warning ([@amelchio] - [#11807]) ([zwave docs]) -- [SMALL-PR] Don't make climate calls if feature is not supported ([@rofrantz] - [#11841]) ([climate docs]) -- Handle Daikin AC adapters without fan mode and swing mode support ([@rofrantz] - [#11840]) ([climate.daikin docs]) -- device tracker - tomato https support ([@GregoryDosh] - [#11566]) ([device_tracker.tomato docs]) -- Bme680 ([@arcsur] - [#11892]) ([sensor.bme680 docs]) -- Add android option for linux_battery.py ([@mu4yu3] - [#11852]) ([sensor.linux_battery docs]) -- Pushbullet (fix) invalid keyword, added unittests ([@tschmidty69] - [#11804]) -- Snips - (fix) removed endSession mqtt response on error and unknown intents ([@tschmidty69] - [#11908]) ([snips docs]) -- Clarify emulated hue warning ([@balloob] - [#11910]) ([emulated_hue docs]) -- Use API to discover Hue if no bridges specified ([@balloob] - [#11909]) ([hue docs]) -- Update python-wink version and multiple wink fixes/updates. ([@w1ll1am23] - [#11833]) ([wink docs]) ([binary_sensor.wink docs]) ([climate.wink docs]) ([cover.wink docs]) -- New venstar climate component ([@Cinntax] - [#11639]) -- Iota wallet ([@jinnerbichler] - [#11398]) ([iota docs]) ([sensor.iota docs]) (new-platform) -- Improve foscam library exception support ([@i-am-shodan] - [#11701]) ([camera.foscam docs]) -- Added Xeoma camera platform ([@jeradM] - [#11619]) -- Multi-Room Support for Greenwave Reality ([@dfiel] - [#11364]) ([light.greenwave docs]) -- Minor fix to configuration validation and related log line. ([@arcsur] - [#11898]) ([sensor.bme680 docs]) -- Report scripts and groups as scenes to Alexa ([@bitglue] - [#11900]) ([alexa docs]) -- Add ERC20 tokens to etherscan.io sensor ([@nkgilley] - [#11916]) ([sensor.etherscan docs]) -- Allow separate command and state OIDs and payloads in SNMP switch ([@nkaminski] - [#11075]) ([switch.snmp docs]) -- Add "write" service to system_log ([@andrey-git] - [#11901]) ([system_log docs]) -- fixes #11848 ([@kennedyshead] - [#11915]) ([device_tracker.asuswrt docs]) -- Allow setting climate devices to AUTO mode via Google Assistant ([@balloob] - [#11923]) ([google_assistant docs]) ([climate.nest docs]) -- Fixed rfxtrx binary_sensor KeyError on missing optional device_class ([@basschipper] - [#11925]) ([rfxtrx docs]) ([binary_sensor.rfxtrx docs]) -- Implement Alexa temperature sensors ([@bitglue] - [#11930]) ([alexa docs]) -- Update pyhomematic to 0.1.38 ([@danielperna84] - [#11936]) ([homematic docs]) - -[#10819]: https://github.com/home-assistant/home-assistant/pull/10819 -[#10882]: https://github.com/home-assistant/home-assistant/pull/10882 -[#10916]: https://github.com/home-assistant/home-assistant/pull/10916 -[#11031]: https://github.com/home-assistant/home-assistant/pull/11031 -[#11037]: https://github.com/home-assistant/home-assistant/pull/11037 -[#11046]: https://github.com/home-assistant/home-assistant/pull/11046 -[#11057]: https://github.com/home-assistant/home-assistant/pull/11057 -[#11075]: https://github.com/home-assistant/home-assistant/pull/11075 -[#11095]: https://github.com/home-assistant/home-assistant/pull/11095 -[#11103]: https://github.com/home-assistant/home-assistant/pull/11103 -[#11186]: https://github.com/home-assistant/home-assistant/pull/11186 -[#11249]: https://github.com/home-assistant/home-assistant/pull/11249 -[#11284]: https://github.com/home-assistant/home-assistant/pull/11284 -[#11364]: https://github.com/home-assistant/home-assistant/pull/11364 -[#11377]: https://github.com/home-assistant/home-assistant/pull/11377 -[#11398]: https://github.com/home-assistant/home-assistant/pull/11398 -[#11400]: https://github.com/home-assistant/home-assistant/pull/11400 -[#11409]: https://github.com/home-assistant/home-assistant/pull/11409 -[#11455]: https://github.com/home-assistant/home-assistant/pull/11455 -[#11490]: https://github.com/home-assistant/home-assistant/pull/11490 -[#11543]: https://github.com/home-assistant/home-assistant/pull/11543 -[#11547]: https://github.com/home-assistant/home-assistant/pull/11547 -[#11566]: https://github.com/home-assistant/home-assistant/pull/11566 -[#11602]: https://github.com/home-assistant/home-assistant/pull/11602 -[#11607]: https://github.com/home-assistant/home-assistant/pull/11607 -[#11608]: https://github.com/home-assistant/home-assistant/pull/11608 -[#11610]: https://github.com/home-assistant/home-assistant/pull/11610 -[#11613]: https://github.com/home-assistant/home-assistant/pull/11613 -[#11615]: https://github.com/home-assistant/home-assistant/pull/11615 -[#11619]: https://github.com/home-assistant/home-assistant/pull/11619 -[#11620]: https://github.com/home-assistant/home-assistant/pull/11620 -[#11621]: https://github.com/home-assistant/home-assistant/pull/11621 -[#11623]: https://github.com/home-assistant/home-assistant/pull/11623 -[#11629]: https://github.com/home-assistant/home-assistant/pull/11629 -[#11631]: https://github.com/home-assistant/home-assistant/pull/11631 -[#11634]: https://github.com/home-assistant/home-assistant/pull/11634 -[#11637]: https://github.com/home-assistant/home-assistant/pull/11637 -[#11638]: https://github.com/home-assistant/home-assistant/pull/11638 -[#11639]: https://github.com/home-assistant/home-assistant/pull/11639 -[#11650]: https://github.com/home-assistant/home-assistant/pull/11650 -[#11652]: https://github.com/home-assistant/home-assistant/pull/11652 -[#11661]: https://github.com/home-assistant/home-assistant/pull/11661 -[#11662]: https://github.com/home-assistant/home-assistant/pull/11662 -[#11666]: https://github.com/home-assistant/home-assistant/pull/11666 -[#11668]: https://github.com/home-assistant/home-assistant/pull/11668 -[#11673]: https://github.com/home-assistant/home-assistant/pull/11673 -[#11680]: https://github.com/home-assistant/home-assistant/pull/11680 -[#11690]: https://github.com/home-assistant/home-assistant/pull/11690 -[#11691]: https://github.com/home-assistant/home-assistant/pull/11691 -[#11694]: https://github.com/home-assistant/home-assistant/pull/11694 -[#11695]: https://github.com/home-assistant/home-assistant/pull/11695 -[#11698]: https://github.com/home-assistant/home-assistant/pull/11698 -[#11701]: https://github.com/home-assistant/home-assistant/pull/11701 -[#11707]: https://github.com/home-assistant/home-assistant/pull/11707 -[#11710]: https://github.com/home-assistant/home-assistant/pull/11710 -[#11712]: https://github.com/home-assistant/home-assistant/pull/11712 -[#11715]: https://github.com/home-assistant/home-assistant/pull/11715 -[#11725]: https://github.com/home-assistant/home-assistant/pull/11725 -[#11732]: https://github.com/home-assistant/home-assistant/pull/11732 -[#11733]: https://github.com/home-assistant/home-assistant/pull/11733 -[#11738]: https://github.com/home-assistant/home-assistant/pull/11738 -[#11745]: https://github.com/home-assistant/home-assistant/pull/11745 -[#11746]: https://github.com/home-assistant/home-assistant/pull/11746 -[#11748]: https://github.com/home-assistant/home-assistant/pull/11748 -[#11752]: https://github.com/home-assistant/home-assistant/pull/11752 -[#11755]: https://github.com/home-assistant/home-assistant/pull/11755 -[#11758]: https://github.com/home-assistant/home-assistant/pull/11758 -[#11759]: https://github.com/home-assistant/home-assistant/pull/11759 -[#11760]: https://github.com/home-assistant/home-assistant/pull/11760 -[#11765]: https://github.com/home-assistant/home-assistant/pull/11765 -[#11767]: https://github.com/home-assistant/home-assistant/pull/11767 -[#11769]: https://github.com/home-assistant/home-assistant/pull/11769 -[#11770]: https://github.com/home-assistant/home-assistant/pull/11770 -[#11774]: https://github.com/home-assistant/home-assistant/pull/11774 -[#11775]: https://github.com/home-assistant/home-assistant/pull/11775 -[#11776]: https://github.com/home-assistant/home-assistant/pull/11776 -[#11780]: https://github.com/home-assistant/home-assistant/pull/11780 -[#11781]: https://github.com/home-assistant/home-assistant/pull/11781 -[#11786]: https://github.com/home-assistant/home-assistant/pull/11786 -[#11788]: https://github.com/home-assistant/home-assistant/pull/11788 -[#11791]: https://github.com/home-assistant/home-assistant/pull/11791 -[#11793]: https://github.com/home-assistant/home-assistant/pull/11793 -[#11796]: https://github.com/home-assistant/home-assistant/pull/11796 -[#11797]: https://github.com/home-assistant/home-assistant/pull/11797 -[#11799]: https://github.com/home-assistant/home-assistant/pull/11799 -[#11800]: https://github.com/home-assistant/home-assistant/pull/11800 -[#11802]: https://github.com/home-assistant/home-assistant/pull/11802 -[#11804]: https://github.com/home-assistant/home-assistant/pull/11804 -[#11805]: https://github.com/home-assistant/home-assistant/pull/11805 -[#11806]: https://github.com/home-assistant/home-assistant/pull/11806 -[#11807]: https://github.com/home-assistant/home-assistant/pull/11807 -[#11810]: https://github.com/home-assistant/home-assistant/pull/11810 -[#11816]: https://github.com/home-assistant/home-assistant/pull/11816 -[#11825]: https://github.com/home-assistant/home-assistant/pull/11825 -[#11826]: https://github.com/home-assistant/home-assistant/pull/11826 -[#11829]: https://github.com/home-assistant/home-assistant/pull/11829 -[#11833]: https://github.com/home-assistant/home-assistant/pull/11833 -[#11834]: https://github.com/home-assistant/home-assistant/pull/11834 -[#11835]: https://github.com/home-assistant/home-assistant/pull/11835 -[#11837]: https://github.com/home-assistant/home-assistant/pull/11837 -[#11840]: https://github.com/home-assistant/home-assistant/pull/11840 -[#11841]: https://github.com/home-assistant/home-assistant/pull/11841 -[#11842]: https://github.com/home-assistant/home-assistant/pull/11842 -[#11850]: https://github.com/home-assistant/home-assistant/pull/11850 -[#11852]: https://github.com/home-assistant/home-assistant/pull/11852 -[#11857]: https://github.com/home-assistant/home-assistant/pull/11857 -[#11858]: https://github.com/home-assistant/home-assistant/pull/11858 -[#11859]: https://github.com/home-assistant/home-assistant/pull/11859 -[#11860]: https://github.com/home-assistant/home-assistant/pull/11860 -[#11869]: https://github.com/home-assistant/home-assistant/pull/11869 -[#11878]: https://github.com/home-assistant/home-assistant/pull/11878 -[#11882]: https://github.com/home-assistant/home-assistant/pull/11882 -[#11884]: https://github.com/home-assistant/home-assistant/pull/11884 -[#11888]: https://github.com/home-assistant/home-assistant/pull/11888 -[#11892]: https://github.com/home-assistant/home-assistant/pull/11892 -[#11898]: https://github.com/home-assistant/home-assistant/pull/11898 -[#11900]: https://github.com/home-assistant/home-assistant/pull/11900 -[#11901]: https://github.com/home-assistant/home-assistant/pull/11901 -[#11908]: https://github.com/home-assistant/home-assistant/pull/11908 -[#11909]: https://github.com/home-assistant/home-assistant/pull/11909 -[#11910]: https://github.com/home-assistant/home-assistant/pull/11910 -[#11915]: https://github.com/home-assistant/home-assistant/pull/11915 -[#11916]: https://github.com/home-assistant/home-assistant/pull/11916 -[#11923]: https://github.com/home-assistant/home-assistant/pull/11923 -[#11925]: https://github.com/home-assistant/home-assistant/pull/11925 -[#11930]: https://github.com/home-assistant/home-assistant/pull/11930 -[#11936]: https://github.com/home-assistant/home-assistant/pull/11936 -[#9534]: https://github.com/home-assistant/home-assistant/pull/9534 -[@BastianPoe]: https://github.com/BastianPoe -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@Cinntax]: https://github.com/Cinntax -[@DanNixon]: https://github.com/DanNixon -[@GregoryDosh]: https://github.com/GregoryDosh -[@Kane610]: https://github.com/Kane610 -[@PRabahy]: https://github.com/PRabahy -[@PaulAnnekov]: https://github.com/PaulAnnekov -[@Rendili]: https://github.com/Rendili -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@amelchio]: https://github.com/amelchio -[@andrewdolphin]: https://github.com/andrewdolphin -[@andrey-git]: https://github.com/andrey-git -[@angel12]: https://github.com/angel12 -[@arcsur]: https://github.com/arcsur -[@arsaboo]: https://github.com/arsaboo -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@basschipper]: https://github.com/basschipper -[@benleb]: https://github.com/benleb -[@bitglue]: https://github.com/bitglue -[@brainexe]: https://github.com/brainexe -[@ciotlosm]: https://github.com/ciotlosm -[@cnrd]: https://github.com/cnrd -[@covrig]: https://github.com/covrig -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@dfiel]: https://github.com/dfiel -[@dingusdk]: https://github.com/dingusdk -[@drndos]: https://github.com/drndos -[@fabaff]: https://github.com/fabaff -[@glpatcern]: https://github.com/glpatcern -[@heydonms]: https://github.com/heydonms -[@hthiery]: https://github.com/hthiery -[@i-am-shodan]: https://github.com/i-am-shodan -[@iliketoprogram14]: https://github.com/iliketoprogram14 -[@ioangogo]: https://github.com/ioangogo -[@jeradM]: https://github.com/jeradM -[@jinnerbichler]: https://github.com/jinnerbichler -[@jkoelker]: https://github.com/jkoelker -[@jpjodoin]: https://github.com/jpjodoin -[@karlkar]: https://github.com/karlkar -[@keesschollaart81]: https://github.com/keesschollaart81 -[@kennedyshead]: https://github.com/kennedyshead -[@leppa]: https://github.com/leppa -[@markferry]: https://github.com/markferry -[@michaelarnauts]: https://github.com/michaelarnauts -[@mu4yu3]: https://github.com/mu4yu3 -[@nickovs]: https://github.com/nickovs -[@nkaminski]: https://github.com/nkaminski -[@nkgilley]: https://github.com/nkgilley -[@olskar]: https://github.com/olskar -[@philklei]: https://github.com/philklei -[@postlund]: https://github.com/postlund -[@pvizeli]: https://github.com/pvizeli -[@robhuls]: https://github.com/robhuls -[@rofrantz]: https://github.com/rofrantz -[@rytilahti]: https://github.com/rytilahti -[@sdague]: https://github.com/sdague -[@shortbloke]: https://github.com/shortbloke -[@soberstadt]: https://github.com/soberstadt -[@starkillerOG]: https://github.com/starkillerOG -[@steffenslavetinsky]: https://github.com/steffenslavetinsky -[@syssi]: https://github.com/syssi -[@tinloaf]: https://github.com/tinloaf -[@tschmidty69]: https://github.com/tschmidty69 -[@ttroy50]: https://github.com/ttroy50 -[@w1ll1am23]: https://github.com/w1ll1am23 -[@zabuldon]: https://github.com/zabuldon -[alarm_control_panel.mqtt docs]: /components/alarm_control_panel.mqtt/ -[alexa docs]: /components/alexa/ -[asterisk_mbox docs]: /components/asterisk_mbox/ -[axis docs]: /components/axis/ -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[binary_sensor.hive docs]: /components/binary_sensor.hive/ -[binary_sensor.ihc docs]: /components/binary_sensor.ihc/ -[binary_sensor.maxcube docs]: /components/binary_sensor.maxcube/ -[binary_sensor.rfxtrx docs]: /components/binary_sensor.rfxtrx/ -[binary_sensor.wink docs]: /components/binary_sensor.wink/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/ -[camera.foscam docs]: /components/camera.foscam/ -[camera.onvif docs]: /components/camera.onvif/ -[climate docs]: /components/climate/ -[climate.daikin docs]: /components/climate.daikin/ -[climate.econet docs]: /components/climate.econet/ -[climate.ephember docs]: /components/climate.ephember/ -[climate.eq3btsmart docs]: /components/climate.eq3btsmart/ -[climate.hive docs]: /components/climate.hive/ -[climate.nest docs]: /components/climate.nest/ -[climate.sensibo docs]: /components/climate.sensibo/ -[climate.wink docs]: /components/climate.wink/ -[cover.homematic docs]: /components/cover.homematic/ -[cover.lutron docs]: /components/cover.lutron/ -[cover.tahoma docs]: /components/cover.tahoma/ -[cover.wink docs]: /components/cover.wink/ -[cover.xiaomi_aqara docs]: /components/cover.xiaomi_aqara/ -[deconz docs]: /components/deconz/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.tomato docs]: /components/device_tracker.tomato/ -[device_tracker.unifi_direct docs]: /components/device_tracker.unifi_direct/ -[ecobee docs]: /components/ecobee/ -[emulated_hue docs]: /components/emulated_hue/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[google_assistant docs]: /components/google_assistant/ -[hassio docs]: /components/hassio/ -[hive docs]: /components/hive/ -[homematic docs]: /components/homematic/ -[hue docs]: /components/hue/ -[ihc docs]: /components/ihc/ -[ihc.const docs]: /components/ihc.const/ -[ihc.ihcdevice docs]: /components/ihc.ihcdevice/ -[iota docs]: /components/iota/ -[light.deconz docs]: /components/light.deconz/ -[light.decora docs]: /components/light.decora/ -[light.flux_led docs]: /components/light.flux_led/ -[light.greenwave docs]: /components/light.greenwave/ -[light.hive docs]: /components/light.hive/ -[light.hyperion docs]: /components/light.hyperion/ -[light.ihc docs]: /components/light.ihc/ -[light.tplink docs]: /components/light.tplink/ -[light.wemo docs]: /components/light.wemo/ -[light.xiaomi_aqara docs]: /components/light.xiaomi_aqara/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[lutron docs]: /components/lutron/ -[map docs]: /components/map/ -[media_player.samsungtv docs]: /components/media_player.samsungtv/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.yamaha docs]: /components/media_player.yamaha/ -[notify.clicksend docs]: /components/notify.clicksend/ -[notify.prowl docs]: /components/notify.prowl/ -[plant docs]: /components/plant/ -[rfxtrx docs]: /components/rfxtrx/ -[scene docs]: /components/scene/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[sensor.linux_battery docs]: /components/sensor.linux_battery/ -[sensor.bme680 docs]: /components/sensor.bme680/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.etherscan docs]: /components/sensor.etherscan/ -[sensor.fixer docs]: /components/sensor.fixer/ -[sensor.hive docs]: /components/sensor.hive/ -[sensor.ihc docs]: /components/sensor.ihc/ -[sensor.iota docs]: /components/sensor.iota/ -[sensor.metoffice docs]: /components/sensor.metoffice/ -[sensor.miflora docs]: /components/sensor.miflora/ -[sensor.min_max docs]: /components/sensor.min_max/ -[sensor.mold_indicator docs]: /components/sensor.mold_indicator/ -[mychevy docs]: /components/mychevy/ -[sensor.openweathermap docs]: /components/sensor.openweathermap/ -[sensor.random docs]: /components/sensor.random/ -[sensor.teksavvy docs]: /components/sensor.teksavvy/ -[sensor.xbox_live docs]: /components/sensor.xbox_live/ -[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ -[sensor.yr docs]: /components/sensor.yr/ -[snips docs]: /components/snips/ -[switch.fritzdect docs]: /components/switch.fritzdect/ -[switch.hive docs]: /components/switch.hive/ -[switch.ihc docs]: /components/switch.ihc/ -[switch.snmp docs]: /components/switch.snmp/ -[switch.tplink docs]: /components/switch.tplink/ -[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[system_log docs]: /components/system_log/ -[tahoma docs]: /components/tahoma/ -[tts.google docs]: /components/tts.google/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[waterfurnace docs]: /components/waterfurnace/ -[wemo docs]: /components/wemo/ -[wink docs]: /components/wink/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[zwave docs]: /components/zwave/ -[@martinhjelmare]: https://github.com/martinhjelmare -[@frenck]: https://github.com/frenck -[#11929]: https://github.com/home-assistant/home-assistant/pull/11929 -[#11960]: https://github.com/home-assistant/home-assistant/pull/11960 -[#12000]: https://github.com/home-assistant/home-assistant/pull/12000 -[#12008]: https://github.com/home-assistant/home-assistant/pull/12008 -[#12010]: https://github.com/home-assistant/home-assistant/pull/12010 -[#12039]: https://github.com/home-assistant/home-assistant/pull/12039 -[#12043]: https://github.com/home-assistant/home-assistant/pull/12043 -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@amelchio]: https://github.com/amelchio -[@c727]: https://github.com/c727 -[@rofrantz]: https://github.com/rofrantz -[@scop]: https://github.com/scop -[@smoldaner]: https://github.com/smoldaner -[@tschmidty69]: https://github.com/tschmidty69 -[climate.daikin docs]: /components/climate.daikin/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[frontend docs]: /components/frontend/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[remote.harmony docs]: /components/remote.harmony/ -[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/ -[snips docs]: /components/snips/ diff --git a/source/_posts/2018-02-09-disabling-disqus.markdown b/source/_posts/2018-02-09-disabling-disqus.markdown deleted file mode 100644 index 6183c238f6..0000000000 --- a/source/_posts/2018-02-09-disabling-disqus.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "Disabling Disqus comments" -description: "We have disabled Disqus comments on the site due to inappropriate advertisements." -date: 2018-02-09 01:00:00 -date_formatted: "February 9, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Community ---- - -Last week, starting with the release of [Home Assistant 0.62](/blog/2018/01/27/release-62/), we switched to using our [community forums](https://community.home-assistant.io) for comments on our blog posts. By doing so, people are able to use their existing Home Assistant community accounts to comment on our blog posts and engage with one another. It has been easier for our users to stay in the loop with one less channel to keep track off. - -Previously, we were using the free version of Disqus to power comments on our blog. After the switch, to preserve the old comments, we decided to keep Disqus active on the older blog post pages. However, today we decided to turn them off. - -Today Disqus changed their advertisement strategy and turned on irrelevant graphical advertisement above and below the comment thread ([screenshot](https://twitter.com/balloob/status/961677501725421568)). On a phone, it took so much screen real estate that it filled the whole page with an advertisement for weight loss milk. Previously, Disqus had advertisements in an unobtrusive way: showing suggested content a visitor might also be interesed in. - -Today we have switched all blog posts to the new commenting system and are no longer serving Disqus comments. We are exploring ways to restore the old comments. diff --git a/source/_posts/2018-02-10-release-63.markdown b/source/_posts/2018-02-10-release-63.markdown deleted file mode 100644 index dc23d2029f..0000000000 --- a/source/_posts/2018-02-10-release-63.markdown +++ /dev/null @@ -1,690 +0,0 @@ ---- -layout: post -title: "0.63: Entity Registry, SQL Sensor, Mercedes cars" -description: "Reserve entity IDs for your devices with the new entity registry, show query results as a sensor and yet another car integrated." -date: 2018-02-10 01:00:00 -date_formatted: "February 10, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-02-0.63/components.png ---- - - - -## {% linkable_title Date set for dropping Python 3.4 support %} - -As [announced in October](/blog/2017/10/06/deprecating-python-3.4-support/), we're going to drop Python 3.4 support in 2018. We've now decided that in two releases, 0.65, the minimum Python version that will be supported is bumped to 3.5.3. This won't impact most users. You are already fine if you're using Hass.io, the latest Debian stable (Stretch) or a derivative of that (Raspbian, Ubuntu). - -## {% linkable_title Entity Registry %} - -This release introduces the entity registry. The entity registry allows integrations to reserve entity IDs. This means that we'll automatically grant an entity ID to a device. It's reserved so that no other device will ever get that entity ID. It also means that as a user, you will be able to customize the entity IDs for these devices. - -For an integration to leverage the entity registry, it needs to define a unique ID for each of their entities. A unique ID is something that we can uniquely identify the device and that is not configurable. So a serial number and mac address are ok, IP addresses or names are not. - -Examples of integrations that have unique IDs defined in this release are Z-Wave, Hue, Nest, LIFX, Sonos, Apple TV. - -To update the entity ID that will be assigned to your device, update `/entity_registry.yaml` and restart Home Assistant (reloading on the fly is planned for a future release). - -The entity registry will assign an entity ID the first time that a device is seen. This should be the same entity ID as it always was before. If this is not the case, update the registration entity to change it back to the old entity ID. - -We're planning a lot of cool stuff around the entity registry. Stay tuned! - -## {% linkable_title New Platforms %} - -- Adds allergy/disease sensor platform from Pollen.com ([@bachya] - [#11573]) ([sensor.pollen docs]) (new-platform) -- Add Goalfeed platform ([@wardcraigj] - [#11098]) ([goalfeed docs]) (new-platform) -- Add Melissa (HVAC/climate) component ([@kennedyshead] - [#11503]) ([melissa docs]) ([sensor.melissa docs]) (new-platform) -- Mediaroom ([@dgomes] - [#11864]) ([media_player.mediaroom docs]) (new-platform) -- Add Xiaomi Universal IR Remote (Chuangmi IR) ([@cnrd] - [#11891]) ([remote.xiaomi_miio docs]) (new-platform) -- SQL sensor ([@dgomes] - [#12142]) ([sensor.sql docs]) (new-platform) -- Add Mercedes me component ([@ReneNulschDE] - [#11743]) (new-platform) - -## {% linkable_title Release 0.63.1 - February 12 %} - -- Fix Alexa Step Volume ([@lucasweb78] - [#12314]) ([alexa docs]) -- Remove unique ID from netatmo ([@balloob] - [#12317]) ([binary_sensor.netatmo docs]) ([camera.netatmo docs]) ([sensor.netatmo docs]) -- Allow overriding name via entity registry ([@balloob] - [#12292]) -- Respect entity namespace for entity registry ([@balloob] - [#12313]) -- Fix Report State for Alexa Brightness Controller ([@lucasweb78] - [#12318]) ([alexa docs]) -- Always return lockState == LOCKED when handling Alexa.LockController ([@lucasweb78] - [#12328]) ([alexa docs]) -- Fix platform dependencies ([@balloob] - [#12330]) - -## {% linkable_title Release 0.63.2 - February 14 %} - -- Fix MercedesMe - add check for unsupported features ([@ReneNulschDE] - [#12342]) ([mercedesme docs]) ([binary_sensor.mercedesme docs]) ([device_tracker.mercedesme docs]) ([sensor.mercedesme docs]) -- Fix WUnderground names ([@OttoWinter] - [#12346]) ([sensor.wunderground docs]) -- Updated beacontools ([@citruz] - [#12368]) ([sensor.eddystone_temperature docs]) -- Introduce zone_id to identify player+zone ([@sdague] - [#12382]) ([media_player.yamaha docs]) -- Downgrade limitlessled to 1.0.8 ([@amelchio] - [#12403]) ([light.limitlessled docs]) - -## {% linkable_title Release 0.63.3 - February 17 %} - -- python-miio version bumped. (Closes: #12389, Closes: #12298) ([@syssi] - [#12392]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Fixed 3 small issues in isy994 component ([@OverloadUT] - [#12421]) ([isy994 docs]) -- Reduce the load on met.no servers, yr.no sensor ([@danielhiversen] - [#12435]) ([sensor.yr docs]) -- Fix for contentRating error ([@ryanm101] - [#12445]) ([media_player.plex docs]) -- Fix light template to return brightness as int ([@andrey-git] - [#12447]) ([light.template docs]) -- Optimize recorder purge ([@amelchio] - [#12448]) -- [SQL Sensor] always close session ([@dgomes] - [#12452]) ([sensor.sql docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - - -## {% linkable_title Breaking Changes %} - -- updated sensor name ([@philklei] - [#12084]) ([sensor.tahoma docs]) (breaking change) -- Originally Canary camera is added per location and only displays an image that was captured due to motion. Now it is per device (each location can have multiple devices) with live stream support. ([@snjoetw] - [#11949]) ([canary docs]) ([camera.canary docs]) (breaking change) -- Avoid influxdb filling connection pool: The influxdb `retry_queue_limit` configuration variable no longer has any effect and can be removed. ([@amelchio] - [#12182]) ([influxdb docs]) (breaking change) -- Some spelling mistakes in default entity names have been fixed in ([@OttoWinter] - [#12041]). This is causing these `entity_id` changes: - - [Seven segments display](/components/image_processing.seven_segments/): `image_processing.seven_segement_ocr_[...]` → `image_processing.seven_segment_ocr_[...]` - - [Rain Bird Switch](/components/switch.rainbird/): `switch.sprinker_[...]` → `switch.sprinkler_[...]` - - [OpenEVSE Sensor](/components/sensor.openevse/): `sensor.ambient_termperature` → `sensor.ambient_temperature` - - [Fido](/components/sensor.fido/): `sensor.[...]_internaltional_remaining` → `sensor.[...]_international remaining` -- From version 0.64, Home Assistant will by default purge recorded state history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain: - ```yaml - recorder: - purge_keep_days: 30 - ``` - - If you want to keep the previous default of never deleting history, use this configuration: - ```yaml - recorder: - purge_interval: 0 - ``` - ([@amelchio] - [#11976]) -- Fix duplicate entity_ids in System Monitor ([@fanaticDavid] - [#12124]) ([sensor.systemmonitor docs]) (breaking change) - - | Resource | Old Entity ID | New Entity ID | - | :------------------ | :------------------ |:-------------------------| - | disk_use | sensor.disk_used | sensor.disk_use | - | disk_use_percent | sensor.disk_used | sensor.disk_use_percent | - | load_15m | sensor.average_load_15m | sensor.load_15m | - | load_1m | sensor.average_load_1m | sensor.load_1m | - | load_5m | sensor.average_load_5m | sensor.load_5m | - | memory_free | sensor.ram_available | sensor.memory_free | - | memory_use | sensor.ram_used | sensor.memory_use | - | memory_use_percent | sensor.ram_used | sensor.memory_use_percent | - | network_in | sensor.received | sensor.network_in | - | network_out | sensor.sent | sensor.network_out | - | packets_in | sensor.packets_received | sensor.packets_in | - | packets_out | sensor.packets_sent | sensor.packets_out | - | processor_use | sensor.cpu_used | sensor.processor_use | - | swap_use | sensor.swap_used | sensor.swap_use | - | swap_use_percent | sensor.swap_used | sensor.swap_use_percent | - -- Developers only: Following EntityComponent methods have been removed: `extract_from_service`, `async_update_group`, `async_reset`, `prepare_reload` ([@balloob] - [#12237]) (breaking change) - - -## {% linkable_title All changes %} - -- Map media_stop to idle state ([@akloeckner] - [#11819]) -- Adds allergy/disease sensor platform from Pollen.com ([@bachya] - [#11573]) ([sensor.pollen docs]) (new-platform) -- check_config.py: allow colorlog==3.1. ([@dotlambda] - [#11927]) -- Weblink - Allow relative urls in config ([@ReneNulschDE] - [#11808]) ([weblink docs]) -- Panel_Iframe - Allow relative urls in config ([@ReneNulschDE] - [#11832]) ([panel_iframe docs]) -- Python 3.6 invalid escape sequence deprecation fixes ([@scop] - [#11941]) -- tests: Use assertEqual instead of deprecated assertEquals ([@scop] - [#11943]) -- huawei_router: Fix documentation link ([@scop] - [#11961]) ([device_tracker.huawei_router docs]) -- Spelling fixes ([@scop] - [#11940]) -- Upgrade sqlalchemy to 1.2.2 ([@fabaff] - [#11956]) -- Upgrade youtube_dl to 2018.01.21 ([@fabaff] - [#11955]) ([media_extractor docs]) -- Upgrade sphinx-autodoc-typehints to 1.2.4 ([@fabaff] - [#11954]) -- Upgrade coinmarketcap to 4.2.1 ([@fabaff] - [#11953]) ([sensor.coinmarketcap docs]) -- Bump dev to 0.63.0.dev0 ([@fabaff] - [#11952]) -- Update xiaomi_aqara.py ([@MGWGIT] - [#11969]) ([sensor.xiaomi_aqara docs]) -- panasonic_viera: Set device name from discovery info ([@scop] - [#11990]) ([media_player.panasonic_viera docs]) -- Update panasonic_viera to 0.3 ([@scop] - [#11989]) ([media_player.panasonic_viera docs]) -- Fix 11982 - uvc don't handle null as username ([@bratanon] - [#11984]) ([camera.uvc docs]) -- Add Goalfeed platform ([@wardcraigj] - [#11098]) ([goalfeed docs]) (new-platform) -- Added support for hourly percent change in coinmarketcap component ([@kevindgoff] - [#11996]) ([sensor.coinmarketcap docs]) -- Upgrade coinbase to 2.0.7 ([@fabaff] - [#11992]) ([coinbase docs]) ([sensor.coinbase docs]) -- Upgrade pyota to 2.0.4 ([@fabaff] - [#11991]) ([iota docs]) -- Fixed Canary temperature sensor and remapped air quality value ([@snjoetw] - [#11355]) ([canary docs]) ([sensor.canary docs]) -- Refactor Alexa Smart Home API ([@bitglue] - [#12016]) ([alexa docs]) -- Report states ([@bitglue] - [#11973]) ([alexa docs]) -- alexa: Add media_player InputController support ([@philk] - [#11946]) ([alexa docs]) -- emulated_hue: allow customization within emulated_hue configuration ([@jackwilsdon] - [#11981]) ([emulated_hue docs]) -- Flake8 35 ([@scop] - [#11972]) ([feedreader docs]) ([spc docs]) ([media_player.bluesound docs]) ([media_player.clementine docs]) ([sensor.fritzbox_callmonitor docs]) ([sensor.qnap docs]) ([sensor.synologydsm docs]) -- Typing fixes ([@scop] - [#12015]) -- Fix DoorBird push notifications for installations with an API password ([@Klikini] - [#12020]) ([doorbird docs]) -- Bump upstream lib version. ([@Cinntax] - [#12021]) ([climate.venstar docs]) -- sensor.deutsche_bahn: add only_direct option ([@akloeckner] - [#11999]) ([sensor.deutsche_bahn docs]) -- Fix MQTT cover availability subscription ([@OttoWinter] - [#12036]) ([cover.mqtt docs]) -- Spelling fixes ([@OttoWinter] - [#12041]) (breaking change) -- Online state for samsungtv is jumping when TV is idle ([@kennedyshead] - [#11998]) ([media_player.samsungtv docs]) -- Upgrade astral to 1.5 ([@fabaff] - [#12042]) -- Refactor alexa smart_home tests ([@bitglue] - [#12044]) -- Handling of payload not for this entity. ([@freol35241] - [#11836]) ([binary_sensor.mqtt docs]) -- Refactor Google Assistant query_device ([@philk] - [#12022]) ([google_assistant docs]) -- Entity registry ([@balloob] - [#11979]) ([group docs]) ([climate.nest docs]) -- Return all attributes that are not None in base lock entity class ([@snjoetw] - [#12049]) ([lock docs]) -- Extract requirements ([@balloob] - [#12051]) -- Prepare for recorder purge to be active by default ([@amelchio] - [#11976]) (breaking change) -- Bumped up pymochad requirement to 0.2.0 as a fix for #11928 ([@aosadchyy] - [#12014]) ([mochad docs]) -- Publish errors on the event bus ([@postlund] - [#11964]) ([system_log docs]) -- Unique ID for LIFX lights ([@amelchio] - [#12064]) ([light.lifx docs]) -- Deconz use entity registry ([@Kane610] - [#12067]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) -- Flake8 bugbear fixes ([@scop] - [#12072]) ([plant docs]) ([rfxtrx docs]) ([zwave docs]) ([climate.heatmiser docs]) ([media_player.plex docs]) ([notify.kodi docs]) -- Fix demo platform support ([@ciotlosm] - [#12070]) -- fix event channel name ([@wardcraigj] - [#12077]) ([goalfeed docs]) -- fixed timestamp problem in firefox ([@escoand] - [#12073]) ([weather.openweathermap docs]) -- Handle more file closing using context manager ([@scop] - [#11942]) ([light.greenwave docs]) ([notify.gntp docs]) ([sensor.onewire docs]) -- Influx import improvements ([@RePeet13] - [#11988]) -- Set flux default stop time to dusk ([@infernix] - [#12062]) ([switch.flux docs]) -- Add conditions to forecast ([@escoand] - [#12074]) ([weather.openweathermap docs]) -- Squeezebox Fix duplicate server from discovery ([@mezz64] - [#12063]) ([media_player.squeezebox docs]) -- Upgrade keyring to 11.0.0 ([@fabaff] - [#12082]) -- Correct use of middleware async handling. ([@pelson] - [#12078]) ([http docs]) -- updated sensor name ([@philklei] - [#12084]) ([sensor.tahoma docs]) (breaking change) -- Fix detection of mobile browsers ([@c727] - [#12075]) ([frontend docs]) -- update tahoma api to version 0.0.11 ([@philklei] - [#12099]) ([tahoma docs]) -- added media_stop ([@jodur] - [#12100]) ([media_player.vlc docs]) -- Goalfeed channel ([@wardcraigj] - [#12086]) ([goalfeed docs]) -- Update jinja2 to 2.10 ([@arsaboo] - [#12118]) -- Downgrade Sonarr and Radarr 'Host is not avaliable' errors to warnings ([@timmo001] - [#12119]) ([sensor.radarr docs]) ([sensor.sonarr docs]) -- Fixes away_mode error on startup ([@ciotlosm] - [#12121]) ([climate.generic_thermostat docs]) -- except vol.MultipleInvalid in Broadlink #11795 ([@danielhiversen] - [#12107]) ([sensor.broadlink docs]) -- Adds SUPPORT_TARGET_TEMPERATURE_HIGH and SUPPORT_TARGET_TEMPERATURE_LOW support ([@hawk259] - [#12110]) ([climate.ecobee docs]) -- Dark sky precip accumulation ([@nordlead2005] - [#12127]) ([sensor.darksky docs]) -- fixed wrong check for valid range of 'rgb' values ([@PaulAnnekov] - [#12132]) ([light.xiaomi_aqara docs]) -- OpenALPR Cloud API - transfer image in body of POST request ([@ReneNulschDE] - [#12112]) ([image_processing.openalpr_cloud docs]) -- Add support for "off" function to iTunes ([@lexam79] - [#12109]) ([media_player.itunes docs]) -- Remove asyncio.test_utils to fix tests in Docker/Python 3.7 ([@ubnt-marc-khouri] - [#12102]) -- Add Mercedes me component ([@ReneNulschDE] - [#11743]) -- Spelling fixes ([@scop] - [#12138]) ([plant docs]) ([switch.pulseaudio_loopback docs]) -- Update volumio component ([@titilambert] - [#12045]) ([media_player.volumio docs]) -- Adding information about current TV channel to WebOS media player ([@led-spb] - [#11339]) ([media_player.webostv docs]) -- Fix #8475 device tracker ubus tracks unauthenticated and unassociated devices ([@aarnaud] - [#12140]) ([device_tracker.ubus docs]) -- Fix #11875 Ubus broken since upgrade to 0 57 ([@aarnaud] - [#12141]) ([device_tracker.ubus docs]) -- Update flake8-docstrings to 1.0.3 ([@scop] - [#12136]) -- Tado fixes ([@NigelRook] - [#11294]) ([tado docs]) ([climate.tado docs]) -- Add Melissa (HVAC/climate) component ([@kennedyshead] - [#11503]) ([melissa docs]) ([sensor.melissa docs]) (new-platform) -- Mediaroom ([@dgomes] - [#11864]) ([media_player.mediaroom docs]) (new-platform) -- Upgrade mutagen to 1.40.0 ([@fabaff] - [#12152]) ([tts docs]) -- Upgrade TwitterAPI to 2.4.8 ([@fabaff] - [#12148]) ([notify.twitter docs]) -- fix generic_thermostat bug when restore state from HA start up ([@crhan] - [#12134]) ([climate.generic_thermostat docs]) -- Adding xy_color attribute support to deconz lights ([@ErnstEeldert] - [#12106]) ([light.deconz docs]) -- update python-openzwave to 4.1.3 ([@perosb] - [#12057]) ([zwave docs]) -- Panasonic viera new services ([@dgomes] - [#11963]) ([media_player docs]) ([media_player.panasonic_viera docs]) -- [Mediaroom media_player] Follow up on PR #11864 ([@dgomes] - [#12155]) ([media_player.mediaroom docs]) -- Tests for samsungtv ([@kennedyshead] - [#11933]) -- Upgrade influxdb to 5.0.0 ([@fabaff] - [#12156]) ([influxdb docs]) -- add delay_arrival ([@akloeckner] - [#12169]) ([sensor.deutsche_bahn docs]) -- Move TP-Link socket LED state setting to update() ([@DanNixon] - [#12170]) ([switch.tplink docs]) -- Upgrade schiene to 0.21 ([@fabaff] - [#12176]) ([sensor.deutsche_bahn docs]) -- python-miio version bumped. Fixes all xiaomi_miio components. (Closes: #12017, Closes: #11948, Closes: #11200) ([@syssi] - [#12188]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Services (small_pr)(fix): Added missing return on data template error ([@tschmidty69] - [#12184]) -- fix ecobee is_aux_heat_on property ([@titilambert] - [#12186]) ([climate.ecobee docs]) -- Upgrade pytouchline to 0.7 ([@tbergo] - [#12179]) ([climate.touchline docs]) -- Canary live stream ([@snjoetw] - [#11949]) ([canary docs]) ([camera.canary docs]) (breaking change) -- Replace Gitter with Discord ([@fabaff] - [#12199]) -- Upgrade Sphinx to 1.6.7 ([@fabaff] - [#12200]) -- Change attributes in new Mercedes Me component ([@ReneNulschDE] - [#12147]) ([mercedesme docs]) ([binary_sensor.mercedesme docs]) ([device_tracker.mercedesme docs]) ([sensor.mercedesme docs]) -- Binary Sensor Template: Add icon_template and entity_picture_template support ([@hawk259] - [#12158]) ([binary_sensor.template docs]) -- Bump pyeconet version to fix JSONDecodeError ([@w1ll1am23] - [#12204]) ([climate.econet docs]) -- Add support for Alexa.StepSpeaker ([@lucasweb78] - [#12183]) ([alexa docs]) -- Upgrade wakeonlan to 1.0.0 ([@Tadly] - [#12190]) ([wake_on_lan docs]) ([media_player.panasonic_viera docs]) ([media_player.samsungtv docs]) ([media_player.webostv docs]) ([switch.wake_on_lan docs]) -- zha: Update to bellows 0.5.0+zigpy ([@rcloran] - [#12187]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([sensor.zha docs]) -- Make waterfurnace recovery more robust ([@sdague] - [#12202]) ([waterfurnace docs]) -- Much nicer icon ([@lance36] - [#12212]) ([vacuum.xiaomi_miio docs]) -- Properly handle thresholds of zero ([@DanNixon] - [#12175]) ([binary_sensor.threshold docs]) -- zha: Add support for XBee radios ([@rcloran] - [#12205]) ([zha docs]) ([binary_sensor.zha docs]) -- Fix clear playlist in Volumio component ([@titilambert] - [#12173]) ([media_player.volumio docs]) -- Add Xiaomi Universal IR Remote (Chuangmi IR) ([@cnrd] - [#11891]) ([remote.xiaomi_miio docs]) (new-platform) -- Fix Xeoma camera platform to allow different admin/viewer credentials ([@jeradM] - [#12161]) ([camera.xeoma docs]) -- Xiaomi MiIO Light: Brightness mapping improved ([@syssi] - [#12203]) ([light.xiaomi_miio docs]) -- Fixes according to review from @MartinHjelmare Thank you. ([@kennedyshead] - [#12171]) ([climate.melissa docs]) ([sensor.melissa docs]) -- Fix logger bug on Windows: path contains '\'. ([@fanthos] - [#12197]) ([system_log docs]) -- Catch concurrent.futures.CancelledError in websocket code. ([@pelson] - [#12150]) ([websocket_api docs]) -- Update pushsafer.py ([@appzer] - [#11466]) ([notify.pushsafer docs]) -- Add wake on lan capability to philips TV ([@frog32] - [#12065]) ([media_player.philips_js docs]) -- Specify the minimum python version in the setup.py. ([@pelson] - [#12144]) -- Return of entity_id in template platforms ([@amelchio] - [#12234]) ([binary_sensor.template docs]) ([cover.template docs]) ([light.template docs]) ([sensor.template docs]) ([switch.template docs]) -- Allow zero purge_interval to disable recorder purge ([@amelchio] - [#12220]) -- Update min js=latest version ([@andrey-git] - [#12091]) ([frontend docs]) -- librouteros version bump ([@zabuldon] - [#12227]) ([device_tracker.mikrotik docs]) -- SQL sensor ([@dgomes] - [#12142]) ([sensor.sql docs]) (new-platform) -- Fixes for tesla. New sensors. ([@zabuldon] - [#12225]) ([tesla docs]) ([sensor.tesla docs]) -- Entity layer cleanup ([@balloob] - [#12237]) (breaking change) -- [SMALL PATCH] Sql sensor ([@dgomes] - [#12242]) ([sensor.sql docs]) -- Set tahoma cover update interval to default ([@bakedraccoon] - [#12232]) ([cover.tahoma docs]) -- Avoid influxdb filling connection pool ([@amelchio] - [#12182]) ([influxdb docs]) (breaking change) -- Force update support for mqtt binary sensor ([@mkfink] - [#12092]) ([binary_sensor.mqtt docs]) -- Added password mode to input_text (obscure content of text box) ([@covrig] - [#11849]) ([input_text docs]) ([sensor.xiaomi_aqara docs]) -- Fix cover service description ([@cdce8p] - [#12243]) -- Add explicit first-time config for new purge_keep_days default ([@amelchio] - [#12246]) -- added more debug logging for sensor.alpha_vantage ([@ChristianKuehnel] - [#12249]) ([sensor.alpha_vantage docs]) -- Add Service Schema to Broadlink Switch ([@maddox] - [#12253]) ([switch.broadlink docs]) -- Update aiohttp 2.3.10 / yarl 1.1.0 ([@pvizeli] - [#12244]) -- Fix source code using Windows newline ([@OttoWinter] - [#12248]) -- miflora - fix for exception handling bug ([@ChristianKuehnel] - [#12149]) ([sensor.miflora docs]) -- Update pyhomematic to 0.1.39 ([@danielperna84] - [#12265]) ([homematic docs]) -- Update owntracks.py ([@luca-angemi] - [#12260]) ([device_tracker.owntracks docs]) -- Fix for iTunes media player not updating artwork ([@lexam79] - [#12089]) ([media_player.itunes docs]) -- Fix duplicate entity_ids in System Monitor ([@fanaticDavid] - [#12124]) ([sensor.systemmonitor docs]) (breaking change) -- One bug fix and one improvement to the statistics sensor. ([@glance-] - [#12259]) ([sensor.statistics docs]) -- allow wildcards in subscription ([@escoand] - [#12247]) ([device_tracker.mqtt docs]) -- Retry keyset cloud ([@balloob] - [#12270]) ([cloud docs]) -- Update limitlessled requirement to v1.0.9 ([@vaceslav] - [#12275]) ([light.limitlessled docs]) - -[#11098]: https://github.com/home-assistant/home-assistant/pull/11098 -[#11294]: https://github.com/home-assistant/home-assistant/pull/11294 -[#11339]: https://github.com/home-assistant/home-assistant/pull/11339 -[#11355]: https://github.com/home-assistant/home-assistant/pull/11355 -[#11466]: https://github.com/home-assistant/home-assistant/pull/11466 -[#11503]: https://github.com/home-assistant/home-assistant/pull/11503 -[#11573]: https://github.com/home-assistant/home-assistant/pull/11573 -[#11743]: https://github.com/home-assistant/home-assistant/pull/11743 -[#11808]: https://github.com/home-assistant/home-assistant/pull/11808 -[#11819]: https://github.com/home-assistant/home-assistant/pull/11819 -[#11832]: https://github.com/home-assistant/home-assistant/pull/11832 -[#11836]: https://github.com/home-assistant/home-assistant/pull/11836 -[#11849]: https://github.com/home-assistant/home-assistant/pull/11849 -[#11864]: https://github.com/home-assistant/home-assistant/pull/11864 -[#11891]: https://github.com/home-assistant/home-assistant/pull/11891 -[#11927]: https://github.com/home-assistant/home-assistant/pull/11927 -[#11933]: https://github.com/home-assistant/home-assistant/pull/11933 -[#11940]: https://github.com/home-assistant/home-assistant/pull/11940 -[#11941]: https://github.com/home-assistant/home-assistant/pull/11941 -[#11942]: https://github.com/home-assistant/home-assistant/pull/11942 -[#11943]: https://github.com/home-assistant/home-assistant/pull/11943 -[#11946]: https://github.com/home-assistant/home-assistant/pull/11946 -[#11949]: https://github.com/home-assistant/home-assistant/pull/11949 -[#11952]: https://github.com/home-assistant/home-assistant/pull/11952 -[#11953]: https://github.com/home-assistant/home-assistant/pull/11953 -[#11954]: https://github.com/home-assistant/home-assistant/pull/11954 -[#11955]: https://github.com/home-assistant/home-assistant/pull/11955 -[#11956]: https://github.com/home-assistant/home-assistant/pull/11956 -[#11961]: https://github.com/home-assistant/home-assistant/pull/11961 -[#11963]: https://github.com/home-assistant/home-assistant/pull/11963 -[#11964]: https://github.com/home-assistant/home-assistant/pull/11964 -[#11969]: https://github.com/home-assistant/home-assistant/pull/11969 -[#11972]: https://github.com/home-assistant/home-assistant/pull/11972 -[#11973]: https://github.com/home-assistant/home-assistant/pull/11973 -[#11976]: https://github.com/home-assistant/home-assistant/pull/11976 -[#11979]: https://github.com/home-assistant/home-assistant/pull/11979 -[#11981]: https://github.com/home-assistant/home-assistant/pull/11981 -[#11984]: https://github.com/home-assistant/home-assistant/pull/11984 -[#11988]: https://github.com/home-assistant/home-assistant/pull/11988 -[#11989]: https://github.com/home-assistant/home-assistant/pull/11989 -[#11990]: https://github.com/home-assistant/home-assistant/pull/11990 -[#11991]: https://github.com/home-assistant/home-assistant/pull/11991 -[#11992]: https://github.com/home-assistant/home-assistant/pull/11992 -[#11996]: https://github.com/home-assistant/home-assistant/pull/11996 -[#11998]: https://github.com/home-assistant/home-assistant/pull/11998 -[#11999]: https://github.com/home-assistant/home-assistant/pull/11999 -[#12014]: https://github.com/home-assistant/home-assistant/pull/12014 -[#12015]: https://github.com/home-assistant/home-assistant/pull/12015 -[#12016]: https://github.com/home-assistant/home-assistant/pull/12016 -[#12020]: https://github.com/home-assistant/home-assistant/pull/12020 -[#12021]: https://github.com/home-assistant/home-assistant/pull/12021 -[#12022]: https://github.com/home-assistant/home-assistant/pull/12022 -[#12036]: https://github.com/home-assistant/home-assistant/pull/12036 -[#12041]: https://github.com/home-assistant/home-assistant/pull/12041 -[#12042]: https://github.com/home-assistant/home-assistant/pull/12042 -[#12044]: https://github.com/home-assistant/home-assistant/pull/12044 -[#12045]: https://github.com/home-assistant/home-assistant/pull/12045 -[#12049]: https://github.com/home-assistant/home-assistant/pull/12049 -[#12051]: https://github.com/home-assistant/home-assistant/pull/12051 -[#12057]: https://github.com/home-assistant/home-assistant/pull/12057 -[#12062]: https://github.com/home-assistant/home-assistant/pull/12062 -[#12063]: https://github.com/home-assistant/home-assistant/pull/12063 -[#12064]: https://github.com/home-assistant/home-assistant/pull/12064 -[#12065]: https://github.com/home-assistant/home-assistant/pull/12065 -[#12067]: https://github.com/home-assistant/home-assistant/pull/12067 -[#12070]: https://github.com/home-assistant/home-assistant/pull/12070 -[#12072]: https://github.com/home-assistant/home-assistant/pull/12072 -[#12073]: https://github.com/home-assistant/home-assistant/pull/12073 -[#12074]: https://github.com/home-assistant/home-assistant/pull/12074 -[#12075]: https://github.com/home-assistant/home-assistant/pull/12075 -[#12077]: https://github.com/home-assistant/home-assistant/pull/12077 -[#12078]: https://github.com/home-assistant/home-assistant/pull/12078 -[#12082]: https://github.com/home-assistant/home-assistant/pull/12082 -[#12084]: https://github.com/home-assistant/home-assistant/pull/12084 -[#12086]: https://github.com/home-assistant/home-assistant/pull/12086 -[#12089]: https://github.com/home-assistant/home-assistant/pull/12089 -[#12091]: https://github.com/home-assistant/home-assistant/pull/12091 -[#12092]: https://github.com/home-assistant/home-assistant/pull/12092 -[#12099]: https://github.com/home-assistant/home-assistant/pull/12099 -[#12100]: https://github.com/home-assistant/home-assistant/pull/12100 -[#12102]: https://github.com/home-assistant/home-assistant/pull/12102 -[#12106]: https://github.com/home-assistant/home-assistant/pull/12106 -[#12107]: https://github.com/home-assistant/home-assistant/pull/12107 -[#12109]: https://github.com/home-assistant/home-assistant/pull/12109 -[#12110]: https://github.com/home-assistant/home-assistant/pull/12110 -[#12112]: https://github.com/home-assistant/home-assistant/pull/12112 -[#12118]: https://github.com/home-assistant/home-assistant/pull/12118 -[#12119]: https://github.com/home-assistant/home-assistant/pull/12119 -[#12121]: https://github.com/home-assistant/home-assistant/pull/12121 -[#12124]: https://github.com/home-assistant/home-assistant/pull/12124 -[#12127]: https://github.com/home-assistant/home-assistant/pull/12127 -[#12132]: https://github.com/home-assistant/home-assistant/pull/12132 -[#12134]: https://github.com/home-assistant/home-assistant/pull/12134 -[#12136]: https://github.com/home-assistant/home-assistant/pull/12136 -[#12138]: https://github.com/home-assistant/home-assistant/pull/12138 -[#12140]: https://github.com/home-assistant/home-assistant/pull/12140 -[#12141]: https://github.com/home-assistant/home-assistant/pull/12141 -[#12142]: https://github.com/home-assistant/home-assistant/pull/12142 -[#12144]: https://github.com/home-assistant/home-assistant/pull/12144 -[#12147]: https://github.com/home-assistant/home-assistant/pull/12147 -[#12148]: https://github.com/home-assistant/home-assistant/pull/12148 -[#12149]: https://github.com/home-assistant/home-assistant/pull/12149 -[#12150]: https://github.com/home-assistant/home-assistant/pull/12150 -[#12152]: https://github.com/home-assistant/home-assistant/pull/12152 -[#12155]: https://github.com/home-assistant/home-assistant/pull/12155 -[#12156]: https://github.com/home-assistant/home-assistant/pull/12156 -[#12158]: https://github.com/home-assistant/home-assistant/pull/12158 -[#12161]: https://github.com/home-assistant/home-assistant/pull/12161 -[#12169]: https://github.com/home-assistant/home-assistant/pull/12169 -[#12170]: https://github.com/home-assistant/home-assistant/pull/12170 -[#12171]: https://github.com/home-assistant/home-assistant/pull/12171 -[#12173]: https://github.com/home-assistant/home-assistant/pull/12173 -[#12175]: https://github.com/home-assistant/home-assistant/pull/12175 -[#12176]: https://github.com/home-assistant/home-assistant/pull/12176 -[#12179]: https://github.com/home-assistant/home-assistant/pull/12179 -[#12182]: https://github.com/home-assistant/home-assistant/pull/12182 -[#12183]: https://github.com/home-assistant/home-assistant/pull/12183 -[#12184]: https://github.com/home-assistant/home-assistant/pull/12184 -[#12186]: https://github.com/home-assistant/home-assistant/pull/12186 -[#12187]: https://github.com/home-assistant/home-assistant/pull/12187 -[#12188]: https://github.com/home-assistant/home-assistant/pull/12188 -[#12190]: https://github.com/home-assistant/home-assistant/pull/12190 -[#12197]: https://github.com/home-assistant/home-assistant/pull/12197 -[#12199]: https://github.com/home-assistant/home-assistant/pull/12199 -[#12200]: https://github.com/home-assistant/home-assistant/pull/12200 -[#12202]: https://github.com/home-assistant/home-assistant/pull/12202 -[#12203]: https://github.com/home-assistant/home-assistant/pull/12203 -[#12204]: https://github.com/home-assistant/home-assistant/pull/12204 -[#12205]: https://github.com/home-assistant/home-assistant/pull/12205 -[#12212]: https://github.com/home-assistant/home-assistant/pull/12212 -[#12220]: https://github.com/home-assistant/home-assistant/pull/12220 -[#12225]: https://github.com/home-assistant/home-assistant/pull/12225 -[#12227]: https://github.com/home-assistant/home-assistant/pull/12227 -[#12232]: https://github.com/home-assistant/home-assistant/pull/12232 -[#12234]: https://github.com/home-assistant/home-assistant/pull/12234 -[#12237]: https://github.com/home-assistant/home-assistant/pull/12237 -[#12242]: https://github.com/home-assistant/home-assistant/pull/12242 -[#12243]: https://github.com/home-assistant/home-assistant/pull/12243 -[#12244]: https://github.com/home-assistant/home-assistant/pull/12244 -[#12246]: https://github.com/home-assistant/home-assistant/pull/12246 -[#12247]: https://github.com/home-assistant/home-assistant/pull/12247 -[#12248]: https://github.com/home-assistant/home-assistant/pull/12248 -[#12249]: https://github.com/home-assistant/home-assistant/pull/12249 -[#12253]: https://github.com/home-assistant/home-assistant/pull/12253 -[#12259]: https://github.com/home-assistant/home-assistant/pull/12259 -[#12260]: https://github.com/home-assistant/home-assistant/pull/12260 -[#12265]: https://github.com/home-assistant/home-assistant/pull/12265 -[#12270]: https://github.com/home-assistant/home-assistant/pull/12270 -[#12275]: https://github.com/home-assistant/home-assistant/pull/12275 -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@Cinntax]: https://github.com/Cinntax -[@DanNixon]: https://github.com/DanNixon -[@ErnstEeldert]: https://github.com/ErnstEeldert -[@Kane610]: https://github.com/Kane610 -[@Klikini]: https://github.com/Klikini -[@MGWGIT]: https://github.com/MGWGIT -[@NigelRook]: https://github.com/NigelRook -[@OttoWinter]: https://github.com/OttoWinter -[@PaulAnnekov]: https://github.com/PaulAnnekov -[@RePeet13]: https://github.com/RePeet13 -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@Tadly]: https://github.com/Tadly -[@aarnaud]: https://github.com/aarnaud -[@akloeckner]: https://github.com/akloeckner -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@aosadchyy]: https://github.com/aosadchyy -[@appzer]: https://github.com/appzer -[@arsaboo]: https://github.com/arsaboo -[@bachya]: https://github.com/bachya -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@bitglue]: https://github.com/bitglue -[@bratanon]: https://github.com/bratanon -[@c727]: https://github.com/c727 -[@cdce8p]: https://github.com/cdce8p -[@ciotlosm]: https://github.com/ciotlosm -[@cnrd]: https://github.com/cnrd -[@covrig]: https://github.com/covrig -[@crhan]: https://github.com/crhan -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@dgomes]: https://github.com/dgomes -[@dotlambda]: https://github.com/dotlambda -[@escoand]: https://github.com/escoand -[@fabaff]: https://github.com/fabaff -[@fanaticDavid]: https://github.com/fanaticDavid -[@fanthos]: https://github.com/fanthos -[@freol35241]: https://github.com/freol35241 -[@frog32]: https://github.com/frog32 -[@glance-]: https://github.com/glance- -[@hawk259]: https://github.com/hawk259 -[@infernix]: https://github.com/infernix -[@jackwilsdon]: https://github.com/jackwilsdon -[@jeradM]: https://github.com/jeradM -[@jodur]: https://github.com/jodur -[@kennedyshead]: https://github.com/kennedyshead -[@kevindgoff]: https://github.com/kevindgoff -[@lance36]: https://github.com/lance36 -[@led-spb]: https://github.com/led-spb -[@lexam79]: https://github.com/lexam79 -[@luca-angemi]: https://github.com/luca-angemi -[@lucasweb78]: https://github.com/lucasweb78 -[@maddox]: https://github.com/maddox -[@mezz64]: https://github.com/mezz64 -[@mkfink]: https://github.com/mkfink -[@nordlead2005]: https://github.com/nordlead2005 -[@pelson]: https://github.com/pelson -[@perosb]: https://github.com/perosb -[@philk]: https://github.com/philk -[@philklei]: https://github.com/philklei -[@postlund]: https://github.com/postlund -[@pvizeli]: https://github.com/pvizeli -[@rcloran]: https://github.com/rcloran -[@scop]: https://github.com/scop -[@sdague]: https://github.com/sdague -[@snjoetw]: https://github.com/snjoetw -[@syssi]: https://github.com/syssi -[@tbergo]: https://github.com/tbergo -[@timmo001]: https://github.com/timmo001 -[@titilambert]: https://github.com/titilambert -[@tschmidty69]: https://github.com/tschmidty69 -[@ubnt-marc-khouri]: https://github.com/ubnt-marc-khouri -[@vaceslav]: https://github.com/vaceslav -[@w1ll1am23]: https://github.com/w1ll1am23 -[@wardcraigj]: https://github.com/wardcraigj -[@zabuldon]: https://github.com/zabuldon -[alexa docs]: /components/alexa/ -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[binary_sensor.mercedesme docs]: /components/binary_sensor.mercedesme/ -[binary_sensor.mqtt docs]: /components/binary_sensor.mqtt/ -[binary_sensor.template docs]: /components/binary_sensor.template/ -[binary_sensor.threshold docs]: /components/binary_sensor.threshold/ -[binary_sensor.zha docs]: /components/binary_sensor.zha/ -[camera.canary docs]: /components/camera.canary/ -[camera.uvc docs]: /components/camera.uvc/ -[camera.xeoma docs]: /components/camera.xeoma/ -[canary docs]: /components/canary/ -[climate.demo docs]: /components/climate.demo/ -[climate.ecobee docs]: /components/climate.ecobee/ -[climate.econet docs]: /components/climate.econet/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[climate.heatmiser docs]: /components/climate.heatmiser/ -[climate.melissa docs]: /components/climate.melissa/ -[climate.nest docs]: /components/climate.nest/ -[climate.tado docs]: /components/climate.tado/ -[climate.touchline docs]: /components/climate.touchline/ -[climate.venstar docs]: /components/climate.venstar/ -[cloud docs]: /components/cloud/ -[coinbase docs]: /components/coinbase/ -[cover.mqtt docs]: /components/cover.mqtt/ -[cover.tahoma docs]: /components/cover.tahoma/ -[cover.template docs]: /components/cover.template/ -[deconz docs]: /components/deconz/ -[device_tracker.huawei_router docs]: /components/device_tracker.huawei_router/ -[device_tracker.mercedesme docs]: /components/device_tracker.mercedesme/ -[device_tracker.mikrotik docs]: /components/device_tracker.mikrotik/ -[device_tracker.mqtt docs]: /components/device_tracker.mqtt/ -[device_tracker.owntracks docs]: /components/device_tracker.owntracks/ -[device_tracker.ubus docs]: /components/device_tracker.ubus/ -[doorbird docs]: /components/doorbird/ -[emulated_hue docs]: /components/emulated_hue/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[feedreader docs]: /components/feedreader/ -[frontend docs]: /components/frontend/ -[goalfeed docs]: /components/goalfeed/ -[google_assistant docs]: /components/google_assistant/ -[group docs]: /components/group/ -[homematic docs]: /components/homematic/ -[http docs]: /components/http/ -[image_processing.openalpr_cloud docs]: /components/image_processing.openalpr_cloud/ -[influxdb docs]: /components/influxdb/ -[input_text docs]: /components/input_text/ -[ios docs]: /components/ios/ -[iota docs]: /components/iota/ -[light.deconz docs]: /components/light.deconz/ -[light.greenwave docs]: /components/light.greenwave/ -[light.lifx docs]: /components/light.lifx/ -[light.limitlessled docs]: /components/light.limitlessled/ -[light.template docs]: /components/light.template/ -[light.xiaomi_aqara docs]: /components/light.xiaomi_aqara/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.zha docs]: /components/light.zha/ -[lock docs]: /components/lock/ -[media_extractor docs]: /components/media_extractor/ -[media_player docs]: /components/media_player/ -[media_player.bluesound docs]: /components/media_player.bluesound/ -[media_player.clementine docs]: /components/media_player.clementine/ -[media_player.itunes docs]: /components/media_player.itunes/ -[media_player.mediaroom docs]: /components/media_player.mediaroom/ -[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/ -[media_player.philips_js docs]: /components/media_player.philips_js/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.samsungtv docs]: /components/media_player.samsungtv/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[media_player.vlc docs]: /components/media_player.vlc/ -[media_player.volumio docs]: /components/media_player.volumio/ -[media_player.webostv docs]: /components/media_player.webostv/ -[melissa docs]: /components/melissa/ -[mercedesme docs]: /components/mercedesme/ -[mochad docs]: /components/mochad/ -[notify.gntp docs]: /components/notify.gntp/ -[notify.kodi docs]: /components/notify.kodi/ -[notify.pushsafer docs]: /components/notify.pushsafer/ -[notify.twitter docs]: /components/notify.twitter/ -[panel_iframe docs]: /components/panel_iframe/ -[plant docs]: /components/plant/ -[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ -[rfxtrx docs]: /components/rfxtrx/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[sensor.broadlink docs]: /components/sensor.broadlink/ -[sensor.canary docs]: /components/sensor.canary/ -[sensor.coinbase docs]: /components/sensor.coinbase/ -[sensor.coinmarketcap docs]: /components/sensor.coinmarketcap/ -[sensor.darksky docs]: /components/sensor.darksky/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/ -[sensor.fritzbox_callmonitor docs]: /components/sensor.fritzbox_callmonitor/ -[sensor.melissa docs]: /components/sensor.melissa/ -[sensor.mercedesme docs]: /components/sensor.mercedesme/ -[sensor.miflora docs]: /components/sensor.miflora/ -[sensor.onewire docs]: /components/sensor.onewire/ -[sensor.pollen docs]: /components/sensor.pollen/ -[sensor.qnap docs]: /components/sensor.qnap/ -[sensor.radarr docs]: /components/sensor.radarr/ -[sensor.sonarr docs]: /components/sensor.sonarr/ -[sensor.sql docs]: /components/sensor.sql/ -[sensor.statistics docs]: /components/sensor.statistics/ -[sensor.synologydsm docs]: /components/sensor.synologydsm/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.tahoma docs]: /components/sensor.tahoma/ -[sensor.template docs]: /components/sensor.template/ -[sensor.tesla docs]: /components/sensor.tesla/ -[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ -[sensor.zha docs]: /components/sensor.zha/ -[spc docs]: /components/spc/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.flux docs]: /components/switch.flux/ -[switch.pulseaudio_loopback docs]: /components/switch.pulseaudio_loopback/ -[switch.template docs]: /components/switch.template/ -[switch.tplink docs]: /components/switch.tplink/ -[switch.wake_on_lan docs]: /components/switch.wake_on_lan/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[system_log docs]: /components/system_log/ -[tado docs]: /components/tado/ -[tahoma docs]: /components/tahoma/ -[tesla docs]: /components/tesla/ -[tts docs]: /components/tts/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[wake_on_lan docs]: /components/wake_on_lan/ -[waterfurnace docs]: /components/waterfurnace/ -[weather.openweathermap docs]: /components/weather.openweathermap/ -[weblink docs]: /components/weblink/ -[websocket_api docs]: /components/websocket_api/ -[zha docs]: /components/zha/ -[zha.const docs]: /components/zha.const/ -[zwave docs]: /components/zwave/ -[#12292]: https://github.com/home-assistant/home-assistant/pull/12292 -[#12313]: https://github.com/home-assistant/home-assistant/pull/12313 -[#12314]: https://github.com/home-assistant/home-assistant/pull/12314 -[#12317]: https://github.com/home-assistant/home-assistant/pull/12317 -[#12318]: https://github.com/home-assistant/home-assistant/pull/12318 -[#12328]: https://github.com/home-assistant/home-assistant/pull/12328 -[#12330]: https://github.com/home-assistant/home-assistant/pull/12330 -[@balloob]: https://github.com/balloob -[@lucasweb78]: https://github.com/lucasweb78 -[alexa docs]: /components/alexa/ -[binary_sensor.netatmo docs]: /components/binary_sensor.netatmo/ -[camera.netatmo docs]: /components/camera.netatmo/ -[sensor.netatmo docs]: /components/sensor.netatmo/ -[#12342]: https://github.com/home-assistant/home-assistant/pull/12342 -[#12346]: https://github.com/home-assistant/home-assistant/pull/12346 -[#12368]: https://github.com/home-assistant/home-assistant/pull/12368 -[#12382]: https://github.com/home-assistant/home-assistant/pull/12382 -[#12403]: https://github.com/home-assistant/home-assistant/pull/12403 -[@OttoWinter]: https://github.com/OttoWinter -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@amelchio]: https://github.com/amelchio -[@citruz]: https://github.com/citruz -[@sdague]: https://github.com/sdague -[binary_sensor.mercedesme docs]: /components/binary_sensor.mercedesme/ -[device_tracker.mercedesme docs]: /components/device_tracker.mercedesme/ -[light.limitlessled docs]: /components/light.limitlessled/ -[media_player.yamaha docs]: /components/media_player.yamaha/ -[mercedesme docs]: /components/mercedesme/ -[sensor.eddystone_temperature docs]: /components/sensor.eddystone_temperature/ -[sensor.mercedesme docs]: /components/sensor.mercedesme/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[#12392]: https://github.com/home-assistant/home-assistant/pull/12392 -[#12421]: https://github.com/home-assistant/home-assistant/pull/12421 -[#12435]: https://github.com/home-assistant/home-assistant/pull/12435 -[#12445]: https://github.com/home-assistant/home-assistant/pull/12445 -[#12447]: https://github.com/home-assistant/home-assistant/pull/12447 -[#12448]: https://github.com/home-assistant/home-assistant/pull/12448 -[#12452]: https://github.com/home-assistant/home-assistant/pull/12452 -[@OverloadUT]: https://github.com/OverloadUT -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@danielhiversen]: https://github.com/danielhiversen -[@dgomes]: https://github.com/dgomes -[@ryanm101]: https://github.com/ryanm101 -[@syssi]: https://github.com/syssi -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[isy994 docs]: /components/isy994/ -[light.template docs]: /components/light.template/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[media_player.plex docs]: /components/media_player.plex/ -[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ -[sensor.sql docs]: /components/sensor.sql/ -[sensor.yr docs]: /components/sensor.yr/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ diff --git a/source/_posts/2018-02-20-cloud-update.markdown b/source/_posts/2018-02-20-cloud-update.markdown deleted file mode 100644 index 80473619e5..0000000000 --- a/source/_posts/2018-02-20-cloud-update.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "Cloud Update" -description: "Alexa skill now live in Germany, UK, Canada, Australia and India." -date: 2018-02-19 01:00:00 -date_formatted: "February 19, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Cloud ---- - -We're happy to announce that the Home Assistant skill is now available in Canada, UK, Germany, India and Australia! Check it out in the [Amazon Alexa Skill store][alexa skill]. - -In the meanwhile, we have also been working on the Google Assistant integration. We passed the first verification and are now working with Google to do the final verification. Stay tuned! - -In less than 2 weeks the open beta is about to expire. We're still working on setting up the company and payment system so we can start accepting payments. Until we do, Home Assistant Cloud will remain free. - -[alexa skill]: https://alexa.amazon.com/spa/index.html#skills/dp/B0772J1QKB/?ref=skill_dsk_skb_sr_2 diff --git a/source/_posts/2018-02-26-release-64.markdown b/source/_posts/2018-02-26-release-64.markdown deleted file mode 100644 index bdfd104d72..0000000000 --- a/source/_posts/2018-02-26-release-64.markdown +++ /dev/null @@ -1,661 +0,0 @@ ---- -layout: post -title: "0.64: Over 1000 integrations! New: HomeKit, BMW, August." -description: "Some great new integrations, some great new fixes, oooooh yeah." -date: 2018-02-26 00:01:00 -date_formatted: "February 26, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-02-0.64/components.png ---- - - - -🎉 1000 integrations, 1000 integrations, 1000 integrations! 🎉 - -That's right, Home Assistant 0.64 is here! In case you have missed our latest [Cloud update](/blog/2018/02/19/cloud-update/), the Home Assistant Alexa skill is now live in all regions and we're working with Google in getting the Smart Home skill for Google Assistant approved. Exciting times! - -In the meanwhile, some great new integrations have landed, including yet another car 🚗 This time it's BMW. - -This is going to be the last release that supports Python 3.4. Starting with the next release, the minimum version required will be Python 3.5.3. [Learn more here.](/blog/2017/10/06/deprecating-python-3.4-support/) - -## {% linkable_title HomeKit %} - -Native HomeKit support has arrived! Thanks to @cdce8p It is now possible to expose some devices over HomeKit to allow control via Siri and other things speaking the HomeKit protocol. Initial support has been added for temperature sensors and cover devices. Expect more devices to be added soon. - -[Check the HomeKit docs][HomeKit docs] - -## {% linkable_title Hass.io UI update %} - -Some of you already noticed that your Hass.io panel looks a bit different since this morning: @pvizeli pressed the ~~red~~ green button and the new UI got live. The Hass.io team ([@frenck] [@pvizeli] [@ryanm101]) is doing a great job in adding new features (like partial or encrypted snapshots) to the Hass.io backend and fixing bugs. However, those features where only added to the command line tools but not to the frontend. - -That's where [@c727] and [@ciotlosm] jumped in. They made new features accessible via the frontend and improved the overall navigation. - -We know that some features are still missing or broken, we are fixing this right now! Check this [issue](https://github.com/home-assistant/home-assistant-polymer/issues/912) first before you report any issues related to the Hass.io panel, please. - -## {% linkable_title Chart.js %} - -The frontend is now rendering the graphs and charts using Chart.js thanks to the hard work by [@fanthos]. This means that you can now render all the charts without being connected to the internet! - -## {% linkable_title August integration %} - -Major new integration by [@snjoetw]: August locks and door bells! Lock and unlock from Home Assistant and detect when your doorbell is rung or senses motion. Awesome! - -## {% linkable_title Cast bug fixes %} - -[@OttoWinter] has crushed a bunch of bugs for our ChromeCast integration. Including that nasy Cast group discovery issue! He is working on some more improvements that should arrive soon, stay tuned. Awesome work Otto! - -## {% linkable_title New Platforms %} - -- Support for August doorbell ([@snjoetw] - [#11124]) ([august docs]) ([binary_sensor.august docs]) ([camera.august docs]) ([lock.august docs]) (new-platform) -- Add new component: BMW connected drive ([@ChristianKuehnel] - [#12277]) ([bmw_connected_drive docs]) ([device_tracker.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (new-platform) -- Add New Sensor for ISP Start.ca ([@mikeodr] - [#12356]) ([sensor.startca docs]) (new-platform) -- Add the Xiaomi TV platform. ([@fattdev] - [#12359]) ([media_player.xiaomi_tv docs]) (new-platform) -- added smappee component ([@hmn] - [#11491]) ([smappee docs]) ([sensor.smappee docs]) ([switch.smappee docs]) (new-platform) -- Add support for HomeKit ([@cdce8p] - [#12488]) ([homekit docs]) (new-platform) -- Adds filesize component ([@robmarkcole] - [#12211]) ([sensor.filesize docs]) (new-platform) -- Adds folder sensor ([@robmarkcole] - [#12208]) ([sensor.folder docs]) (new-platform) -- Spotcrime ([@jcconnell] - [#12460]) ([sensor.spotcrime docs]) (new-platform) -- Add Tahoma scenes ([@bakedraccoon] - [#12498]) ([scene docs]) ([tahoma docs]) (new-platform) - -## {% linkable_title Release 0.64.1 - February 27 %} - -- Frontend: Don't put unit of sensor on new line ([@NovapaX]) -- Frontend: Fix display issues on iOS 9.3.5 ([@NovapaX]) -- Frontend: Fix chart legend not showing correctly when data has 1 serie ([@fanthos]) -- Frontend: Fix cards not getting updated ([@balloob]) -- Cast automatically drop connection ([@OttoWinter] - [#12635]) ([media_player.cast docs]) -- Roomba timeout ([@kellerza] - [#12645]) ([vacuum.roomba docs]) -- Fix a problem with calling `deconz.close` ([@aronsky] - [#12657]) ([deconz docs]) -- Harmony: make activity optional ([@balloob] - [#12679]) ([remote.harmony docs]) -- Fix getting state from iglo ([@jesserockz] - [#12685]) ([light.iglo docs]) -- Fix mysensor defaults ([@balloob] - [#12687]) ([mysensors docs]) -- Component deconz: Fix dark attribute on presence sensors ([@tumik] - [#12691]) ([binary_sensor.deconz docs]) -- Bugfix: Update of sources for non AVR-X devices always fails ([@scarface-4711] - [#12711]) ([media_player.denonavr docs]) -- Don't allow to use a old unsecure library ([@pvizeli] - [#12715]) -- Unbreak tahoma ([@bakedraccoon] - [#12719]) ([tahoma docs]) -- fix for https://github.com/home-assistant/home-assistant/issues/12673 ([@ChristianKuehnel] - [#12726]) ([sensor.alpha_vantage docs]) -- Fix harmony duplicate detection ([@amelchio] - [#12729]) ([remote.harmony docs]) -- Update ZHA deps ([@balloob] - [#12737]) ([zha docs]) -- MQTT: Fix doing async inside sync context ([@OttoWinter]) -- Fix DarSky humidity precision ([@PhilRW]) - -## {% linkable_title Release 0.64.2 - March 1 %} - -- updated to bimmer_connected 0.4.1 ([@ChristianKuehnel] - [#12759]) ([bmw_connected_drive docs]) -- Revert optimized logbook SQL ([@amelchio] - [#12762]) ([logbook docs]) -- bump fedex version ([@happyleavesaoc] - [#12764]) ([sensor.fedex docs]) -- Silence harmless sonos data structure warnings ([@amelchio] - [#12767]) ([media_player.sonos docs]) -- Update samsungctl library to latest version ([@uchagani] - [#12769]) ([media_player.samsungtv docs]) -- Fixed missing optional keyerror data_bits ([@basschipper] - [#12789]) ([binary_sensor.rfxtrx docs]) -- Fixed Pollen.com bugs with ZIP codes and invalid API responses ([@bachya] - [#12790]) ([sensor.pollen docs]) -- Fix dead Sonos web interface with some music sources ([@amelchio] - [#12796]) ([media_player.sonos docs]) -- Unique IDs for Plex Clients ([@ryanm101] - [#12799]) ([media_player.plex docs]) - -## {% linkable_title Release 0.64.3 - March 2 %} - -- is_allowed_path: Also test folder #12788 #12807 ([@kellerza] - [#12810]) -- Fix sensibo default IDs to be according to schema ([@andrey-git] - [#12837]) ([climate.sensibo docs]) -- Cloud: handle unauth better ([@balloob] - [#12840]) ([cloud docs]) -- Handle Hue errors better ([@balloob] - [#12845]) ([hue docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - - -## {% linkable_title Breaking Changes %} - -- Home Assistant now defaults to purge recorded history that is older than 10 days. If you want to keep your recorded data for longer than that, you must configure the number of days to retain _before starting 0.64 for the first time_, for example: - ```yaml - recorder: - purge_keep_days: 30 - ``` - - If you want to keep the previous default of never deleting history, use this configuration: - ```yaml - recorder: - purge_interval: 0 - ``` - ([@amelchio] - [#12271]) (breaking change) -- Show a persistent_notification if no symbols and no currencies are configured ([@ChristianKuehnel] - [#12252]) ([sensor.alpha_vantage docs]) (breaking change) -- Updated RainMachine unique IDs to play better with the entity registry. If RainMachine had been configured previously, new entries will be placed into the entity registry, causing there to be two of each program/zone defined. To address, simply alter the `entity_registry.yaml` as desired. ([@bachya] - [#12315]) ([switch.rainmachine docs]) (breaking change) -- Updated AirVisual unique IDs to play better with the entity registry. If AirVisual had been configured previously, new entries will be placed into the entity registry, causing there to be two of each sensor type defined. To address, simply alter the `entity_registry.yaml` as desired. ([@bachya] - [#12319]) ([sensor.airvisual docs]) (breaking change) -- Custom component devs only: voluptuous now requires default values for config keys to be valid values. ([@balloob] - [#12463]) (breaking change) -- Fixes `usps` platform. Dependency `myusps` now leverages Selenium webdriver to overcome login issues. This is a breaking change since the user must now have additional dependencies installed - either `google-chrome` and `chromedriver`, or `phantomjs`. There is a new config option `driver` that allows the user to specify their preference, though `phantomjs` is the default. Doc PR forthcoming that will outline choices and make suggestions based on user's OS. - ([@happyleavesaoc] - [#12465]) ([usps docs]) (breaking change) -- LimitlessLED has been converted to assumed state. Will no longer turn the lights off when restarting Home Assistant. Will no longer revert changes made by other controllers. ([@amelchio] - [#12475]) ([light.limitlessled docs]) (breaking change) - -## {% linkable_title All changes %} - -- device_tracker.asuswrt: Clean up unused connection param ([@trisk] - [#12262]) ([device_tracker.asuswrt docs]) -- Fix some rfxtrx devices with multiple sensors ([@neffs] - [#12264]) ([sensor.rfxtrx docs]) -- have climate fallback to state if no ATTR_OPERATION_MODE (#12271) ([@ttroy50] - [#12279]) ([google_assistant docs]) -- check_config check bootstrap errors ([@kellerza] - [#12291]) -- Attempt fixing flakiness of check config test ([@balloob] - [#12283]) -- Fix MQTT retained message not being re-dispatched ([@OttoWinter] - [#12004]) ([mqtt docs]) -- Fix config error for FTP links, add test ([@ReneNulschDE] - [#12294]) ([weblink docs]) -- Fix Panel_IFrame - FTP URL not allowed in 0.63 ([@ReneNulschDE] - [#12295]) ([panel_iframe docs]) -- Upgrade pylint to 1.8.2 ([@OttoWinter] - [#12274]) -- Move HassIntent handler code into helpers/intent ([@tschmidty69] - [#12181]) ([conversation docs]) -- Migrated SABnzbd sensor to asyncio and switched to pypi library ([@jeradM] - [#12290]) ([sensor.sabnzbd docs]) -- 📝 Fix fixture encoding ([@OttoWinter] - [#12296]) -- Clarify tahoma errrors ([@bakedraccoon] - [#12307]) ([tahoma docs]) -- add friendly_name_template to template sensor ([@NovapaX] - [#12268]) ([sensor.template docs]) -- Purge recorder data by default ([@amelchio] - [#12271]) (breaking change) -- Protect bloomsky platform setup ([@balloob] - [#12316]) ([binary_sensor.bloomsky docs]) ([camera.bloomsky docs]) ([sensor.bloomsky docs]) -- Removed default sensor configuration ([@ChristianKuehnel] - [#12252]) ([sensor.alpha_vantage docs]) (breaking change) -- Force LF line endings for Windows ([@kellerza] - [#12266]) -- Updated RainMachine to play better with the entity registry ([@bachya] - [#12315]) ([switch.rainmachine docs]) (breaking change) -- Revert #12316 ([@balloob] - [#12329]) ([binary_sensor.bloomsky docs]) ([camera.bloomsky docs]) ([sensor.bloomsky docs]) -- zha: Add remove service ([@rcloran] - [#11683]) ([zha docs]) -- Fix line endings [skipci] ([@balloob] - [#12333]) -- Unifi tracking filter by SSID ([@mikeodr] - [#12281]) ([device_tracker.unifi docs]) -- device_tracker.asuswrt: Ignore unreachable ip neigh entries ([@trisk] - [#12201]) ([device_tracker.asuswrt docs]) -- nmap_tracker: don't scan on setup ([@abmantis] - [#12322]) ([device_tracker.nmap_tracker docs]) -- Upgrade Sphinx to 1.7.0 ([@fabaff] - [#12335]) -- Mock Module + Platform default to async ([@balloob] - [#12347]) -- Change Unifi SSID filtering to list comprehension ([@mikeodr] - [#12344]) ([device_tracker.unifi docs]) -- Use the speedometer icon in the fastdotcom sensor ([@d0ugal] - [#12348]) ([sensor.fastdotcom docs]) -- Communication reduced. Setting brightness and/or color temperature will turn on the device. ([@syssi] - [#12343]) ([light.xiaomi_miio docs]) -- Add New Sensor for ISP Start.ca ([@mikeodr] - [#12356]) ([sensor.startca docs]) (new-platform) -- bump fedex version ([@happyleavesaoc] - [#12362]) ([sensor.fedex docs]) -- Upgrade alpha_vantage to 1.9.0 ([@fabaff] - [#12352]) ([sensor.alpha_vantage docs]) -- Eq3btsmart more reliable ([@karlkar] - [#11555]) ([climate.eq3btsmart docs]) -- Allow disabling entities in the registry ([@balloob] - [#12360]) -- Upgrade panasonic_viera to 0.3.1 ([@dgomes] - [#12370]) ([media_player.panasonic_viera docs]) -- SMA sensor add SSL and upgrade to pysma 0.2 ([@kellerza] - [#12354]) ([sensor.sma docs]) -- Specify algorithms for webpush jwt verification ([@balloob] - [#12378]) ([notify.html5 docs]) -- Upgrade youtube_dl to 2018.02.11 ([@fabaff] - [#12383]) ([media_extractor docs]) -- Remove usage of deprecated assert method ([@balloob] - [#12379]) -- Add attributes (fixes #12332) ([@fabaff] - [#12377]) ([sensor.speedtest docs]) -- Improve service by allowing to reference entity id instead of deconz id ([@Kane610] - [#11862]) ([deconz docs]) ([scene docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) -- Pollen.com: Entity Registry updates and cleanup ([@bachya] - [#12361]) ([sensor.pollen docs]) -- Changed pyvera version to 0.2.41 ([@patrik3k] - [#12391]) ([vera docs]) -- File Path fixes for RPi Camera ([@FrederikBolding] - [#12338]) ([camera.rpi_camera docs]) -- Code cleanup of velux scene ([@Julius2342] - [#12390]) ([scene docs]) -- Upgrade sphinx-autodoc-typehints to 1.2.5 ([@fabaff] - [#12404]) -- Extract data validator to own file and add tests ([@balloob] - [#12401]) ([cloud docs]) ([conversation docs]) ([http docs]) ([shopping_list docs]) (new-platform) -- Fix MQTT payload decode returning prematurely ([@OttoWinter] - [#12420]) ([mqtt docs]) -- Print every changed file on new line ([@cdce8p] - [#12412]) -- Added support for colored KNX lights ([@Julius2342] - [#12411]) ([knx docs]) ([light.knx docs]) -- Small code cleanup: ([@Julius2342] - [#12409]) ([scene docs]) -- Cleanup of knx component ([@Julius2342] - [#12408]) ([knx docs]) ([binary_sensor.knx docs]) ([climate.knx docs]) ([cover.knx docs]) ([light.knx docs]) ([notify.knx docs]) ([sensor.knx docs]) ([switch.knx docs]) -- Update the Tibber sensor at startup ([@danielhiversen] - [#12428]) ([sensor.tibber docs]) -- zha: Add unique_id to entities ([@rcloran] - [#12331]) ([zha docs]) -- Cleanup http ([@balloob] - [#12424]) ([frontend docs]) ([http docs]) -- Update CODEOWNERS ([@dgomes] - [#12440]) -- Fix: timeout data attribute now is parsed to float ([@sjvc] - [#12432]) ([telegram_bot docs]) -- Stop mapping zigbee switches to lights & switches. ([@igorbernstein2] - [#12280]) ([zha docs]) -- AirVisual: Entity Registry updates and cleanup ([@bachya] - [#12319]) ([sensor.airvisual docs]) (breaking change) -- Vagrant - sendfile python3.5 debian-stretch ([@tabakhase] - [#12454]) -- Add effects to iGlo Lights ([@jesserockz] - [#12365]) ([light.iglo docs]) -- Fake the state for a short period and skip the next update. ([@syssi] - [#12446]) ([fan.xiaomi_miio docs]) -- Initial support for Config Entries ([@balloob] - [#12079]) -- Make WUnderground async ([@OttoWinter] - [#12385]) ([sensor.wunderground docs]) -- Add the Xiaomi TV platform. ([@fattdev] - [#12359]) ([media_player.xiaomi_tv docs]) (new-platform) -- Update voluputous ([@balloob] - [#12463]) (breaking change) -- Map Alexa StepVolume responses to volume_up/down ([@lucasweb78] - [#12467]) ([alexa docs]) -- ONVIF Camera added Error handling and rtsp authentication. ([@matt2005] - [#11129]) ([camera.onvif docs]) -- Bump aioautomatic to 0.6.5 for voluptuous 0.11 ([@armills] - [#12480]) ([device_tracker.automatic docs]) -- Add example in test how to create list or object in template ([@balloob] - [#12469]) -- KNX/Climate: Fixed platform schema min/max values. ([@Julius2342] - [#12477]) ([climate.knx docs]) -- Prevent error when no internet or DNS is available ([@mjj4791] - [#12486]) ([sensor.buienradar docs]) ([weather.buienradar docs]) -- Added doorbird_last_motion to DoorBird camera platform ([@sjvc] - [#12457]) ([camera.doorbird docs]) -- Fail gracefully with unreachable LaMetric ([@PhilRW] - [#12451]) ([notify.lametric docs]) -- Enable compression when sending json to client ([@elupus] - [#11165]) ([http docs]) -- bump usps version ([@happyleavesaoc] - [#12465]) ([usps docs]) (breaking change) -- Try deflaking recorder tests ([@balloob] - [#12492]) -- Support for August doorbell ([@snjoetw] - [#11124]) ([august docs]) ([binary_sensor.august docs]) ([camera.august docs]) ([lock.august docs]) (new-platform) -- Avoid warnings when purging an empty database ([@amelchio] - [#12494]) -- Support for PTZ in Onvif cameras ([@karlkar] - [#11630]) ([camera.onvif docs]) -- Rework Sonos media player platform ([@amelchio] - [#12126]) ([media_player.sonos docs]) -- Converted shopping list to use json util and added default override for json util ([@FrederikBolding] - [#12478]) ([shopping_list docs]) -- added smappee component ([@hmn] - [#11491]) ([smappee docs]) ([sensor.smappee docs]) ([switch.smappee docs]) (new-platform) -- More features for the Bluesound component ([@thrawnarn] - [#11450]) ([media_player.bluesound docs]) -- zha: Simplify unique ID ([@rcloran] - [#12495]) ([zha docs]) -- zha: Add support for humidity sensors ([@rcloran] - [#12496]) ([zha docs]) ([sensor.zha docs]) -- bump python-eq3bt version, fixes #12499 ([@rytilahti] - [#12510]) ([climate.eq3btsmart docs]) -- new version of xiaomi lib ([@danielhiversen] - [#12513]) ([xiaomi_aqara docs]) -- python-miio version bumped. (Closes: #12471) ([@syssi] - [#12481]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- LimitlessLED assumed state ([@amelchio] - [#12475]) ([light.limitlessled docs]) (breaking change) -- Add support for HomeKit ([@cdce8p] - [#12488]) ([homekit docs]) (new-platform) -- Add password support ([@pvizeli] - [#12525]) ([hassio docs]) -- Changed to async_schedule_update_ha_state ([@thrawnarn] - [#12518]) ([media_player.bluesound docs]) -- Fix Sphinx build ([@balloob] - [#12535]) -- Update voluptuous serialize ([@balloob] - [#12538]) ([config docs]) -- Clarify a comment regarding python versions ([@aprasanna] - [#12537]) -- Adds filesize component ([@robmarkcole] - [#12211]) ([sensor.filesize docs]) (new-platform) -- Clarify cloud error ([@balloob] - [#12540]) ([cloud docs]) -- Build JSON in executor ([@amelchio] - [#12536]) ([history docs]) ([logbook docs]) -- Bugfix: Input Datetime config schema ([@cdce8p] - [#12552]) ([input_datetime docs]) -- Fix numeric_state condition spamming on unavailable ([@OttoWinter] - [#12550]) -- Frontier silicon async ([@zhelev] - [#12503]) ([media_player.frontier_silicon docs]) -- Fix WUnderground spamming logs ([@OttoWinter] - [#12548]) ([sensor.wunderground docs]) -- Added support for milight single channel dimmer ([@rubenverhoef] - [#12558]) ([light.limitlessled docs]) -- Add new component: BMW connected drive ([@ChristianKuehnel] - [#12277]) ([bmw_connected_drive docs]) ([device_tracker.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (new-platform) -- Cleanup hass.io component ([@pvizeli] - [#12556]) ([hassio docs]) -- Add support for smoke detector in deconz ([@Kane610] - [#12561]) ([deconz docs]) -- Fix caldav component handling missing dtend ([@bottomquark] - [#12562]) ([calendar.caldav docs]) -- Add limitlessled night effect ([@amelchio] - [#12567]) ([light.limitlessled docs]) -- Basic support of post 2016 AVR-X receivers ([@scarface-4711] - [#12569]) ([media_player.denonavr docs]) -- Fix config 404 ([@balloob] - [#12571]) ([config docs]) -- Logbook speedup ([@amelchio] - [#12566]) ([logbook docs]) -- Fix sonos default errorcodes ([@amelchio] - [#12582]) ([media_player.sonos docs]) -- Update pychromecast to 2.0.0 ([@balloob] - [#12587]) ([media_player.cast docs]) -- Set event_id foreign key in recorded states ([@amelchio] - [#12580]) -- Deconz support water sensor ([@Kane610] - [#12581]) ([deconz docs]) -- Cloud reconnect tweaks ([@balloob] - [#12586]) ([cloud docs]) -- Hassio cleanup part2 ([@pvizeli] - [#12588]) ([hassio docs]) -- Add Bluetooth and NFC card/tag Alarm types ([@matthewcky2k] - [#12151]) ([lock.zwave docs]) -- Fix fix isy994 fan detection ([@OverloadUT] - [#12595]) ([isy994 docs]) -- Adds folder sensor ([@robmarkcole] - [#12208]) ([sensor.folder docs]) (new-platform) -- Add unique_id to Xiaomi Aqara ([@tinloaf] - [#12372]) ([xiaomi_aqara docs]) -- Make groups entities again ([@balloob] - [#12574]) ([alexa docs]) -- Python spotcrime ([@jcconnell] - [#12460]) ([sensor.spotcrime docs]) (new-platform) -- Allow ignoring call service events in mqtt_eventstream ([@cmsimike] - [#12519]) ([mqtt_eventstream docs]) -- Set speed service fixed. ([@syssi] - [#12602]) ([fan.xiaomi_miio docs]) -- Updated script/lint ([@cdce8p] - [#12600]) -- Adding RoomHinting to GoogleAssistant to allow for room annotations. ([@jeremydk] - [#12598]) ([google_assistant docs]) -- Fix mclimate accounts with not only melissa components ([@kennedyshead] - [#12427]) ([melissa docs]) ([climate.melissa docs]) -- Cast unique_id and async discovery ([@OttoWinter] - [#12474]) ([media_player.cast docs]) -- Add Tahoma scenes ([@bakedraccoon] - [#12498]) ([scene docs]) ([tahoma docs]) (new-platform) -- Optimize logbook SQL query ([@amelchio] - [#12608]) ([logbook docs]) -- Fix voluptuous breaking change things ([@balloob] - [#12611]) ([xiaomi_aqara docs]) ([binary_sensor.knx docs]) -- OpenGarage - correctly handle offline status (#12612) ([@swbradshaw] - [#12613]) ([cover.opengarage docs]) -- Move recorder query out of event loop ([@amelchio] - [#12615]) -- Hassio update timeout filter list ([@pvizeli] - [#12617]) ([hassio docs]) -- The name of the enum must be used here because of the speed_list. ([@syssi] - [#12625]) ([fan.xiaomi_miio docs]) -- Fix cast doing I/O in event loop ([@OttoWinter] - [#12632]) ([media_player.cast docs]) - -[#11124]: https://github.com/home-assistant/home-assistant/pull/11124 -[#11129]: https://github.com/home-assistant/home-assistant/pull/11129 -[#11165]: https://github.com/home-assistant/home-assistant/pull/11165 -[#11450]: https://github.com/home-assistant/home-assistant/pull/11450 -[#11491]: https://github.com/home-assistant/home-assistant/pull/11491 -[#11555]: https://github.com/home-assistant/home-assistant/pull/11555 -[#11630]: https://github.com/home-assistant/home-assistant/pull/11630 -[#11683]: https://github.com/home-assistant/home-assistant/pull/11683 -[#11862]: https://github.com/home-assistant/home-assistant/pull/11862 -[#12004]: https://github.com/home-assistant/home-assistant/pull/12004 -[#12079]: https://github.com/home-assistant/home-assistant/pull/12079 -[#12126]: https://github.com/home-assistant/home-assistant/pull/12126 -[#12151]: https://github.com/home-assistant/home-assistant/pull/12151 -[#12181]: https://github.com/home-assistant/home-assistant/pull/12181 -[#12201]: https://github.com/home-assistant/home-assistant/pull/12201 -[#12208]: https://github.com/home-assistant/home-assistant/pull/12208 -[#12211]: https://github.com/home-assistant/home-assistant/pull/12211 -[#12252]: https://github.com/home-assistant/home-assistant/pull/12252 -[#12262]: https://github.com/home-assistant/home-assistant/pull/12262 -[#12264]: https://github.com/home-assistant/home-assistant/pull/12264 -[#12266]: https://github.com/home-assistant/home-assistant/pull/12266 -[#12268]: https://github.com/home-assistant/home-assistant/pull/12268 -[#12271]: https://github.com/home-assistant/home-assistant/pull/12271 -[#12274]: https://github.com/home-assistant/home-assistant/pull/12274 -[#12277]: https://github.com/home-assistant/home-assistant/pull/12277 -[#12279]: https://github.com/home-assistant/home-assistant/pull/12279 -[#12280]: https://github.com/home-assistant/home-assistant/pull/12280 -[#12281]: https://github.com/home-assistant/home-assistant/pull/12281 -[#12283]: https://github.com/home-assistant/home-assistant/pull/12283 -[#12290]: https://github.com/home-assistant/home-assistant/pull/12290 -[#12291]: https://github.com/home-assistant/home-assistant/pull/12291 -[#12294]: https://github.com/home-assistant/home-assistant/pull/12294 -[#12295]: https://github.com/home-assistant/home-assistant/pull/12295 -[#12296]: https://github.com/home-assistant/home-assistant/pull/12296 -[#12307]: https://github.com/home-assistant/home-assistant/pull/12307 -[#12315]: https://github.com/home-assistant/home-assistant/pull/12315 -[#12316]: https://github.com/home-assistant/home-assistant/pull/12316 -[#12319]: https://github.com/home-assistant/home-assistant/pull/12319 -[#12322]: https://github.com/home-assistant/home-assistant/pull/12322 -[#12329]: https://github.com/home-assistant/home-assistant/pull/12329 -[#12331]: https://github.com/home-assistant/home-assistant/pull/12331 -[#12333]: https://github.com/home-assistant/home-assistant/pull/12333 -[#12335]: https://github.com/home-assistant/home-assistant/pull/12335 -[#12338]: https://github.com/home-assistant/home-assistant/pull/12338 -[#12343]: https://github.com/home-assistant/home-assistant/pull/12343 -[#12344]: https://github.com/home-assistant/home-assistant/pull/12344 -[#12347]: https://github.com/home-assistant/home-assistant/pull/12347 -[#12348]: https://github.com/home-assistant/home-assistant/pull/12348 -[#12352]: https://github.com/home-assistant/home-assistant/pull/12352 -[#12354]: https://github.com/home-assistant/home-assistant/pull/12354 -[#12356]: https://github.com/home-assistant/home-assistant/pull/12356 -[#12359]: https://github.com/home-assistant/home-assistant/pull/12359 -[#12360]: https://github.com/home-assistant/home-assistant/pull/12360 -[#12361]: https://github.com/home-assistant/home-assistant/pull/12361 -[#12362]: https://github.com/home-assistant/home-assistant/pull/12362 -[#12365]: https://github.com/home-assistant/home-assistant/pull/12365 -[#12370]: https://github.com/home-assistant/home-assistant/pull/12370 -[#12372]: https://github.com/home-assistant/home-assistant/pull/12372 -[#12377]: https://github.com/home-assistant/home-assistant/pull/12377 -[#12378]: https://github.com/home-assistant/home-assistant/pull/12378 -[#12379]: https://github.com/home-assistant/home-assistant/pull/12379 -[#12383]: https://github.com/home-assistant/home-assistant/pull/12383 -[#12385]: https://github.com/home-assistant/home-assistant/pull/12385 -[#12390]: https://github.com/home-assistant/home-assistant/pull/12390 -[#12391]: https://github.com/home-assistant/home-assistant/pull/12391 -[#12401]: https://github.com/home-assistant/home-assistant/pull/12401 -[#12404]: https://github.com/home-assistant/home-assistant/pull/12404 -[#12408]: https://github.com/home-assistant/home-assistant/pull/12408 -[#12409]: https://github.com/home-assistant/home-assistant/pull/12409 -[#12411]: https://github.com/home-assistant/home-assistant/pull/12411 -[#12412]: https://github.com/home-assistant/home-assistant/pull/12412 -[#12420]: https://github.com/home-assistant/home-assistant/pull/12420 -[#12424]: https://github.com/home-assistant/home-assistant/pull/12424 -[#12427]: https://github.com/home-assistant/home-assistant/pull/12427 -[#12428]: https://github.com/home-assistant/home-assistant/pull/12428 -[#12432]: https://github.com/home-assistant/home-assistant/pull/12432 -[#12440]: https://github.com/home-assistant/home-assistant/pull/12440 -[#12446]: https://github.com/home-assistant/home-assistant/pull/12446 -[#12451]: https://github.com/home-assistant/home-assistant/pull/12451 -[#12454]: https://github.com/home-assistant/home-assistant/pull/12454 -[#12457]: https://github.com/home-assistant/home-assistant/pull/12457 -[#12460]: https://github.com/home-assistant/home-assistant/pull/12460 -[#12463]: https://github.com/home-assistant/home-assistant/pull/12463 -[#12464]: https://github.com/home-assistant/home-assistant/pull/12464 -[#12465]: https://github.com/home-assistant/home-assistant/pull/12465 -[#12467]: https://github.com/home-assistant/home-assistant/pull/12467 -[#12469]: https://github.com/home-assistant/home-assistant/pull/12469 -[#12474]: https://github.com/home-assistant/home-assistant/pull/12474 -[#12475]: https://github.com/home-assistant/home-assistant/pull/12475 -[#12477]: https://github.com/home-assistant/home-assistant/pull/12477 -[#12478]: https://github.com/home-assistant/home-assistant/pull/12478 -[#12480]: https://github.com/home-assistant/home-assistant/pull/12480 -[#12481]: https://github.com/home-assistant/home-assistant/pull/12481 -[#12486]: https://github.com/home-assistant/home-assistant/pull/12486 -[#12488]: https://github.com/home-assistant/home-assistant/pull/12488 -[#12492]: https://github.com/home-assistant/home-assistant/pull/12492 -[#12494]: https://github.com/home-assistant/home-assistant/pull/12494 -[#12495]: https://github.com/home-assistant/home-assistant/pull/12495 -[#12496]: https://github.com/home-assistant/home-assistant/pull/12496 -[#12498]: https://github.com/home-assistant/home-assistant/pull/12498 -[#12503]: https://github.com/home-assistant/home-assistant/pull/12503 -[#12510]: https://github.com/home-assistant/home-assistant/pull/12510 -[#12513]: https://github.com/home-assistant/home-assistant/pull/12513 -[#12518]: https://github.com/home-assistant/home-assistant/pull/12518 -[#12519]: https://github.com/home-assistant/home-assistant/pull/12519 -[#12525]: https://github.com/home-assistant/home-assistant/pull/12525 -[#12535]: https://github.com/home-assistant/home-assistant/pull/12535 -[#12536]: https://github.com/home-assistant/home-assistant/pull/12536 -[#12537]: https://github.com/home-assistant/home-assistant/pull/12537 -[#12538]: https://github.com/home-assistant/home-assistant/pull/12538 -[#12540]: https://github.com/home-assistant/home-assistant/pull/12540 -[#12548]: https://github.com/home-assistant/home-assistant/pull/12548 -[#12550]: https://github.com/home-assistant/home-assistant/pull/12550 -[#12552]: https://github.com/home-assistant/home-assistant/pull/12552 -[#12556]: https://github.com/home-assistant/home-assistant/pull/12556 -[#12558]: https://github.com/home-assistant/home-assistant/pull/12558 -[#12561]: https://github.com/home-assistant/home-assistant/pull/12561 -[#12562]: https://github.com/home-assistant/home-assistant/pull/12562 -[#12566]: https://github.com/home-assistant/home-assistant/pull/12566 -[#12567]: https://github.com/home-assistant/home-assistant/pull/12567 -[#12569]: https://github.com/home-assistant/home-assistant/pull/12569 -[#12571]: https://github.com/home-assistant/home-assistant/pull/12571 -[#12574]: https://github.com/home-assistant/home-assistant/pull/12574 -[#12580]: https://github.com/home-assistant/home-assistant/pull/12580 -[#12581]: https://github.com/home-assistant/home-assistant/pull/12581 -[#12582]: https://github.com/home-assistant/home-assistant/pull/12582 -[#12586]: https://github.com/home-assistant/home-assistant/pull/12586 -[#12587]: https://github.com/home-assistant/home-assistant/pull/12587 -[#12588]: https://github.com/home-assistant/home-assistant/pull/12588 -[#12595]: https://github.com/home-assistant/home-assistant/pull/12595 -[#12598]: https://github.com/home-assistant/home-assistant/pull/12598 -[#12600]: https://github.com/home-assistant/home-assistant/pull/12600 -[#12602]: https://github.com/home-assistant/home-assistant/pull/12602 -[#12608]: https://github.com/home-assistant/home-assistant/pull/12608 -[#12611]: https://github.com/home-assistant/home-assistant/pull/12611 -[#12613]: https://github.com/home-assistant/home-assistant/pull/12613 -[#12615]: https://github.com/home-assistant/home-assistant/pull/12615 -[#12617]: https://github.com/home-assistant/home-assistant/pull/12617 -[#12625]: https://github.com/home-assistant/home-assistant/pull/12625 -[#12632]: https://github.com/home-assistant/home-assistant/pull/12632 -[#12669]: https://github.com/home-assistant/home-assistant/pull/12669 -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@FrederikBolding]: https://github.com/FrederikBolding -[@Julius2342]: https://github.com/Julius2342 -[@Kane610]: https://github.com/Kane610 -[@NovapaX]: https://github.com/NovapaX -[@OttoWinter]: https://github.com/OttoWinter -[@OverloadUT]: https://github.com/OverloadUT -[@PhilRW]: https://github.com/PhilRW -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@abmantis]: https://github.com/abmantis -[@amelchio]: https://github.com/amelchio -[@aprasanna]: https://github.com/aprasanna -[@armills]: https://github.com/armills -[@bachya]: https://github.com/bachya -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@bottomquark]: https://github.com/bottomquark -[@cdce8p]: https://github.com/cdce8p -[@cmsimike]: https://github.com/cmsimike -[@d0ugal]: https://github.com/d0ugal -[@danielhiversen]: https://github.com/danielhiversen -[@dgomes]: https://github.com/dgomes -[@elupus]: https://github.com/elupus -[@fabaff]: https://github.com/fabaff -[@fattdev]: https://github.com/fattdev -[@gerard33]: https://github.com/gerard33 -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@hmn]: https://github.com/hmn -[@igorbernstein2]: https://github.com/igorbernstein2 -[@jcconnell]: https://github.com/jcconnell -[@jeradM]: https://github.com/jeradM -[@jeremydk]: https://github.com/jeremydk -[@jesserockz]: https://github.com/jesserockz -[@karlkar]: https://github.com/karlkar -[@kellerza]: https://github.com/kellerza -[@kennedyshead]: https://github.com/kennedyshead -[@lucasweb78]: https://github.com/lucasweb78 -[@matt2005]: https://github.com/matt2005 -[@matthewcky2k]: https://github.com/matthewcky2k -[@mikeodr]: https://github.com/mikeodr -[@mjj4791]: https://github.com/mjj4791 -[@neffs]: https://github.com/neffs -[@patrik3k]: https://github.com/patrik3k -[@pvizeli]: https://github.com/pvizeli -[@rcloran]: https://github.com/rcloran -[@robmarkcole]: https://github.com/robmarkcole -[@rubenverhoef]: https://github.com/rubenverhoef -[@rytilahti]: https://github.com/rytilahti -[@scarface-4711]: https://github.com/scarface-4711 -[@sjvc]: https://github.com/sjvc -[@snjoetw]: https://github.com/snjoetw -[@swbradshaw]: https://github.com/swbradshaw -[@syssi]: https://github.com/syssi -[@tabakhase]: https://github.com/tabakhase -[@thrawnarn]: https://github.com/thrawnarn -[@tinloaf]: https://github.com/tinloaf -[@trisk]: https://github.com/trisk -[@tschmidty69]: https://github.com/tschmidty69 -[@ttroy50]: https://github.com/ttroy50 -[@zhelev]: https://github.com/zhelev -[@fanthos]: https://github.com/fanthos -[@c727]: https://github.com/c727 -[@ciotlosm]: https://github.com/ciotlosm -[@frenck]: https://github.com/frenck -[@pvizeli]: https://github.com/pvizeli -[@ryanm101]: https://github.com/ryanm101 -[alexa docs]: /components/alexa/ -[august docs]: /components/august/ -[binary_sensor.august docs]: /components/binary_sensor.august/ -[binary_sensor.bloomsky docs]: /components/binary_sensor.bloomsky/ -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[binary_sensor.knx docs]: /components/binary_sensor.knx/ -[bmw_connected_drive docs]: /components/bmw_connected_drive/ -[calendar.caldav docs]: /components/calendar.caldav/ -[camera.august docs]: /components/camera.august/ -[camera.bloomsky docs]: /components/camera.bloomsky/ -[camera.doorbird docs]: /components/camera.doorbird/ -[camera.onvif docs]: /components/camera.onvif/ -[camera.rpi_camera docs]: /components/camera.rpi_camera/ -[climate.eq3btsmart docs]: /components/climate.eq3btsmart/ -[climate.knx docs]: /components/climate.knx/ -[climate.melissa docs]: /components/climate.melissa/ -[cloud docs]: /components/cloud/ -[config docs]: /components/config/ -[conversation docs]: /components/conversation/ -[cover.knx docs]: /components/cover.knx/ -[cover.opengarage docs]: /components/cover.opengarage/ -[deconz docs]: /components/deconz/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.automatic docs]: /components/device_tracker.automatic/ -[device_tracker.bmw_connected_drive docs]: /components/device_tracker.bmw_connected_drive/ -[device_tracker.nmap_tracker docs]: /components/device_tracker.nmap_tracker/ -[device_tracker.unifi docs]: /components/device_tracker.unifi/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[frontend docs]: /components/frontend/ -[google_assistant docs]: /components/google_assistant/ -[hassio docs]: /components/hassio/ -[history docs]: /components/history/ -[homekit docs]: /components/homekit/ -[homekit.accessories docs]: /components/homekit.accessories/ -[homekit.const docs]: /components/homekit.const/ -[homekit.covers docs]: /components/homekit.covers/ -[homekit.sensors docs]: /components/homekit.sensors/ -[http docs]: /components/http/ -[input_datetime docs]: /components/input_datetime/ -[isy994 docs]: /components/isy994/ -[knx docs]: /components/knx/ -[light.deconz docs]: /components/light.deconz/ -[light.iglo docs]: /components/light.iglo/ -[light.knx docs]: /components/light.knx/ -[light.limitlessled docs]: /components/light.limitlessled/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[lock.august docs]: /components/lock.august/ -[lock.zwave docs]: /components/lock.zwave/ -[logbook docs]: /components/logbook/ -[media_extractor docs]: /components/media_extractor/ -[media_player.bluesound docs]: /components/media_player.bluesound/ -[media_player.braviatv_psk docs]: /components/media_player.braviatv_psk/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[media_player.frontier_silicon docs]: /components/media_player.frontier_silicon/ -[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.xiaomi_tv docs]: /components/media_player.xiaomi_tv/ -[melissa docs]: /components/melissa/ -[mqtt docs]: /components/mqtt/ -[mqtt_eventstream docs]: /components/mqtt_eventstream/ -[notify.html5 docs]: /components/notify.html5/ -[notify.knx docs]: /components/notify.knx/ -[notify.lametric docs]: /components/notify.lametric/ -[panel_iframe docs]: /components/panel_iframe/ -[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ -[scene docs]: /components/scene/ -[sensor.airvisual docs]: /components/sensor.airvisual/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[sensor.bloomsky docs]: /components/sensor.bloomsky/ -[sensor.bmw_connected_drive docs]: /components/sensor.bmw_connected_drive/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.fastdotcom docs]: /components/sensor.fastdotcom/ -[sensor.fedex docs]: /components/sensor.fedex/ -[sensor.filesize docs]: /components/sensor.filesize/ -[sensor.folder docs]: /components/sensor.folder/ -[sensor.knx docs]: /components/sensor.knx/ -[sensor.pollen docs]: /components/sensor.pollen/ -[sensor.rfxtrx docs]: /components/sensor.rfxtrx/ -[sensor.sabnzbd docs]: /components/sensor.sabnzbd/ -[sensor.sma docs]: /components/sensor.sma/ -[sensor.smappee docs]: /components/sensor.smappee/ -[sensor.speedtest docs]: /components/sensor.speedtest/ -[sensor.spotcrime docs]: /components/sensor.spotcrime/ -[sensor.startca docs]: /components/sensor.startca/ -[sensor.template docs]: /components/sensor.template/ -[sensor.tibber docs]: /components/sensor.tibber/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sensor.zha docs]: /components/sensor.zha/ -[shopping_list docs]: /components/shopping_list/ -[smappee docs]: /components/smappee/ -[switch.knx docs]: /components/switch.knx/ -[switch.rainmachine docs]: /components/switch.rainmachine/ -[switch.smappee docs]: /components/switch.smappee/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[tahoma docs]: /components/tahoma/ -[telegram_bot docs]: /components/telegram_bot/ -[usps docs]: /components/usps/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[vera docs]: /components/vera/ -[weather.buienradar docs]: /components/weather.buienradar/ -[weblink docs]: /components/weblink/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[zha docs]: /components/zha/ -[#12635]: https://github.com/home-assistant/home-assistant/pull/12635 -[#12645]: https://github.com/home-assistant/home-assistant/pull/12645 -[#12657]: https://github.com/home-assistant/home-assistant/pull/12657 -[#12679]: https://github.com/home-assistant/home-assistant/pull/12679 -[#12685]: https://github.com/home-assistant/home-assistant/pull/12685 -[#12687]: https://github.com/home-assistant/home-assistant/pull/12687 -[#12691]: https://github.com/home-assistant/home-assistant/pull/12691 -[#12711]: https://github.com/home-assistant/home-assistant/pull/12711 -[#12715]: https://github.com/home-assistant/home-assistant/pull/12715 -[#12719]: https://github.com/home-assistant/home-assistant/pull/12719 -[#12726]: https://github.com/home-assistant/home-assistant/pull/12726 -[#12729]: https://github.com/home-assistant/home-assistant/pull/12729 -[#12737]: https://github.com/home-assistant/home-assistant/pull/12737 -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@NovapaX]: https://github.com/NovapaX -[@OttoWinter]: https://github.com/OttoWinter -[@amelchio]: https://github.com/amelchio -[@aronsky]: https://github.com/aronsky -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@jesserockz]: https://github.com/jesserockz -[@kellerza]: https://github.com/kellerza -[@pvizeli]: https://github.com/pvizeli -[@scarface-4711]: https://github.com/scarface-4711 -[@tumik]: https://github.com/tumik -[@fanthos]: https://github.com/fanthos -[@PhilRW]: https://github.com/PhilRW -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[deconz docs]: /components/deconz/ -[light.iglo docs]: /components/light.iglo/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.denonavr docs]: /components/media_player.denonavr/ -[mysensors docs]: /components/mysensors/ -[remote.harmony docs]: /components/remote.harmony/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[tahoma docs]: /components/tahoma/ -[vacuum.roomba docs]: /components/vacuum.roomba/ -[zha docs]: /components/zha/ -[#12759]: https://github.com/home-assistant/home-assistant/pull/12759 -[#12762]: https://github.com/home-assistant/home-assistant/pull/12762 -[#12764]: https://github.com/home-assistant/home-assistant/pull/12764 -[#12767]: https://github.com/home-assistant/home-assistant/pull/12767 -[#12769]: https://github.com/home-assistant/home-assistant/pull/12769 -[#12789]: https://github.com/home-assistant/home-assistant/pull/12789 -[#12790]: https://github.com/home-assistant/home-assistant/pull/12790 -[#12796]: https://github.com/home-assistant/home-assistant/pull/12796 -[#12799]: https://github.com/home-assistant/home-assistant/pull/12799 -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@amelchio]: https://github.com/amelchio -[@bachya]: https://github.com/bachya -[@basschipper]: https://github.com/basschipper -[@happyleavesaoc]: https://github.com/happyleavesaoc -[@ryanm101]: https://github.com/ryanm101 -[@uchagani]: https://github.com/uchagani -[binary_sensor.rfxtrx docs]: /components/binary_sensor.rfxtrx/ -[bmw_connected_drive docs]: /components/bmw_connected_drive/ -[logbook docs]: /components/logbook/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.samsungtv docs]: /components/media_player.samsungtv/ -[media_player.sonos docs]: /components/media_player.sonos/ -[sensor.fedex docs]: /components/sensor.fedex/ -[sensor.pollen docs]: /components/sensor.pollen/ -[#12810]: https://github.com/home-assistant/home-assistant/pull/12810 -[#12837]: https://github.com/home-assistant/home-assistant/pull/12837 -[#12840]: https://github.com/home-assistant/home-assistant/pull/12840 -[#12845]: https://github.com/home-assistant/home-assistant/pull/12845 -[@andrey-git]: https://github.com/andrey-git -[@balloob]: https://github.com/balloob -[@kellerza]: https://github.com/kellerza -[climate.sensibo docs]: /components/climate.sensibo/ -[cloud docs]: /components/cloud/ -[hue docs]: /components/hue/ \ No newline at end of file diff --git a/source/_posts/2018-03-09-release-65.markdown b/source/_posts/2018-03-09-release-65.markdown deleted file mode 100644 index ebf590affd..0000000000 --- a/source/_posts/2018-03-09-release-65.markdown +++ /dev/null @@ -1,757 +0,0 @@ ---- -layout: post -title: "0.65: Rename entities, new filter sensor, UpCloud and Channels" -description: "A new Home Assistant release full of amazing new features. Rename entities without a restart, filter out anomalies or apply other filters to data, improved HomeKit support." -date: 2018-03-09 00:01:00 -date_formatted: "March 9, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-03-0.65/entity-registry-name.gif ---- - - - -Release 0.65 has arrived and oh boy, is it awesome. First off, in case you have missed the previous release notes and [announcements](/blog/2017/10/06/deprecating-python-3.4-support/): **Starting with this release, Home Assistant has dropped support for Python 3.4. The minimum supported version is now Python 3.5.3.** If you are on Hass.io or Docker, you'll automatically be running the latest and greatest. If you're on an older Hassbian installation or did your own Linux setup you'll need to upgrade to at least Python 3.5.3. - -## {% linkable_title Naming entities %} - -With the introduction of the entity registry in 0.63, Home Assistant is making sure that the same devices always receive the same entity IDs. This release is taking it a step further by allowing users to change the name of a device from the frontend. Changing the name will be instantly applied and overrides whatever name the device is given by the integration. If you want to switch back to the name from the integration, set the name to blank. - -_This feature is, just like the entity registry, only available for integrations that provide unique IDs for their entities. Adding this to each integration is still a work in progress._ - -

    - Screencap of interaction with the UI to override the name of a light. - The new entity registry settings page in action. -

    - -## {% linkable_title Filter sensor %} - -The [filter sensor][sensor.filter docs] is a new 2nd order sensor by [@dgomes]: it will consume data from a sensor entity and apply filters to it. For the initial implementation it comes with Low-pass, Outlier and Throttle filters. Expect more to be added in the future. - -```yaml -sensor: - - platform: filter - name: "filtered realistic humidity" - entity_id: sensor.realistic_humidity - filters: - - filter: outlier - window_size: 4 - radius: 4.0 - - filter: lowpass - time_constant: 10 - precision: 2 -``` - -

    - Chart showing a humidity sensor with a lot of spikes and a smooth graph produced by the new filter sensor. - Graph showing both the input sensor and the output of the filter sensor. -

    - -## {% linkable_title Light Group %} - -We have had some discussion lately and realized that our current group component is very limiting. Extending it would probably lead to more confusion so we've decided to take a new approach: groups that are designed to be part of a specific component. The first one in this series comes at the hand of [@OttoWinter]: the group light ([docs][light.group docs]). - -The group light creates a single light inside Home Assistant that is representing a group of lights. All commands will be forwarded and the state is a combination of all the lights. - -```yaml -light: - - platform: group - name: Cool Light Group - entities: - - light.amazing_light - - light.foobar - - light.sun -``` - -## {% linkable_title HomeKit %} - -HomeKit got some more upgrades. We've added support for temperature sensors in Fahrenheit, alarm systems, switches and thermostats. Just a few releases more and we should be able to cover it all. - -## {% linkable_title Optional words for the Conversation component %} - -The [conversation component](/components/conversation/) has always been a great introduction to controlling your house by voice. There is no hotword detection or powerful language engine behind it, but it gives a great intro to what is possible. Starting with this release, it will get a little bit more powerful with the introduction of optional words. To mark a word optional, wrap it in square brackets: `Change the light to [the color] {color}`. - -```yaml -# Example configuration.yaml entry -conversation: - intents: - LivingRoomTemperature: - - What is the temperature in the living room - - What is [the] living room temperature - -intent_script: - LivingRoomTemperature: - speech: - text: It is currently {{ states.sensor.temperature }} degrees in the living room. -``` - -

    - Screenshot of the frontend with the conversation panel open. - Have conversations with Home Assistant via the conversation component. -

    - -## {% linkable_title New Platforms %} - -- Synology Chat as a notification platform ([@cmsimike] - [#12596]) ([notify.synology_chat docs]) (new-platform) -- KNX Component: Scene support and expose sensor values ([@Julius2342] - [#11978]) ([knx docs]) ([scene docs]) ([binary_sensor.knx docs]) (new-platform) -- Adds simulated sensor ([@robmarkcole] - [#12539]) ([sensor.simulated docs]) (new-platform) -- Add Songpal ("Sony Audio Control API") platform ([@rytilahti] - [#12143]) ([media_player.songpal docs]) (new-platform) -- Add UpCloud platform ([@scop] - [#12011]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) (new-platform) -- Added Sense energy monitor sensor ([@kbickar] - [#11580]) ([sensor.sense docs]) (new-platform) -- Filter Sensor ([@dgomes] - [#12650]) ([sensor.filter docs]) (new-platform) -- Add light.group platform ([@OttoWinter] - [#12229]) ([light.group docs]) (new-platform) -- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) -- Add support for Zillow Zestimate sensor ([@jcconnell] - [#12597]) ([sensor.zestimate docs]) (new-platform) -- Add a Media Player Component for Channels ([@maddox] - [#12937]) ([media_player.channels docs]) (new-platform) -- Add support for alarm system, switch and thermostat to homekit ([@maxclaey] - [#12819]) ([homekit docs]) (new-platform) -- Add camera proxy ([@PhracturedBlue] - [#12006]) ([camera.proxy docs]) (new-platform) - -## {% linkable_title Release 0.65.1 - March 10 %} - -- allow ios device tracker see calls to go through ([@balloob] - [#13020]) ([device_tracker docs]) -- Fix config component loading YAML ([@kellerza] - [#13024]) -- Make Throttle async aware ([@balloob] - [#13027]) -- Add support for input boolean to Google Assistant ([@balloob] - [#13030]) ([google_assistant docs]) -- HomeKit Bugfix: names ([@cdce8p] - [#13031]) ([homekit docs]) - -## {% linkable_title Release 0.65.2 - March 10 %} - -- Fix translations sometimes not loading in the frontend ([@armills]) -- Fix sensibo's min/max_temp properties ([@jra3] - [#12996]) ([climate.sensibo docs]) -- Use request.query ([@ptarjan] - [#13037]) ([wink docs]) -- Ensure we have valid config AFTER merging packages #13015 ([@kellerza] - [#13038]) -- Bump pysabnzbd version ([@jeradM] - [#13042]) ([sensor.sabnzbd docs]) -- Fix async lifx_set_state ([@amelchio] - [#13045]) ([light.lifx docs]) -- Yeelight version bumped. ([@syssi] - [#13056]) ([light.yeelight docs]) -- Don't call async from sync ([@balloob] - [#13057]) ([xiaomi_aqara docs]) -- Convert decimals from SQL results ([@balloob] - [#13059]) ([sensor.sql docs]) - -## {% linkable_title Release 0.65.3 - March 11 %} - -- Implement Hue available property ([@balloob] - [#12939]) ([light.hue docs]) -- Catch async from sync context by running asyncio event loop in debug mode during tests ([@balloob] - [#13058]) ([camera.arlo docs]) ([climate.generic_thermostat docs]) -- Fixes KNX fire event problem, issue https://github.com/home-assistant/home-assistant/issues/13049 ([@Julius2342] - [#13062]) ([knx docs]) -- Bump iGlo Version ([@jesserockz] - [#13063]) ([light.iglo docs]) -- Fix Tado doing async wrong ([@balloob] - [#13078]) ([device_tracker.tado docs]) -- Synology Camera: auto-renew session when it's expired ([@snjoetw] - [#13079]) ([camera.synology docs]) -- Revert "Cast automatically drop connection (#12635)" ([@OttoWinter] - [#13094]) ([media_player.cast docs]) -- Bump pyvera to 0.2.42. Improve event loop robustness. ([@pavoni] - [#13095]) ([vera docs]) -- Fix Kodi by updateding jsonrpc-websocket to 0.6 ([@Tadly] - [#13096]) ([media_player.kodi docs]) - -## {% linkable_title Release 0.65.4 - March 12 %} - -- Fix unavailable property for wemo switch ([@balloob] - [#13106]) ([switch.wemo docs]) -- Hue: Catch if bridge goes unavailable ([@balloob] - [#13109]) ([hue docs]) ([light.hue docs]) -- Adding check for empty discovery info in alarm control panel Egardia. ([@jeroenterheerdt] - [#13114]) ([alarm_control_panel.egardia docs]) -- Throttle Arlo api calls ([@arsaboo] - [#13143]) ([arlo docs]) - -## {% linkable_title Release 0.65.5 - March 14 %} - -- Bugfix HomeKit: Error string values for temperature ([@cdce8p] - [#13162]) ([homekit docs]) -- Revert throttle Arlo api calls ([@arsaboo] - [#13174]) ([arlo docs]) -- Ignore unsupported Sonos favorites ([@amelchio] - [#13195]) ([media_player.sonos docs]) -- Avoid Sonos error when joining with self ([@amelchio] - [#13196]) ([media_player.sonos docs]) -- Fix input_boolean Google Assistant serialize error ([@balloob] - [#13220]) ([google_assistant docs]) - -## {% linkable_title Release 0.65.6 - March 21 %} - -- More robust MJPEG parser. Fixes #13138. ([@PhracturedBlue] - [#13226]) ([camera.proxy docs]) -- Tado: don't reference unset hass var ([@balloob] - [#13237]) ([device_tracker docs]) -- Fix Sonos join/unjoin in scripts ([@amelchio] - [#13248]) ([media_player.sonos docs]) -- Fix Sonos radio stations with ampersand ([@amelchio] - [#13293]) ([media_player.sonos docs]) -- Do not include unavailable entities in Google Assistant SYNC ([@balloob] - [#13358]) ([google_assistant docs]) ([light.demo docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - -## {% linkable_title Breaking Changes %} - -- Insteon PLM: If you have created platform overrides in your configuration.yaml file to change a your INSTEON device to map to a different Home Assistant platform, that mapping will no longer be in effect. Please see the new device override capabilities in the [insteon_plm documentation](/components/insteon_plm/). ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change) -- AirVisual's air index unit is AQI (Air Quality Index), not PSI (Pressure per Square Inch). ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change) -- TekSavvy Sensor: The sensor entity id for peak upload usage used to be `sensor.teksavvy_on_peak_upload_` this has been changed to `sensor.teksavvy_on_peak_upload`. The `usage` title was shared between and therefore indeterminate between GB and % usage. Therefore % usage entity ID has been changed to `sensor.teksavvy_usage_ratio` ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change) -- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) -- zip_code for the Pollen integration is now required to have quotes around it to prevent accidental errors: `zip_code: "00544"` ([@bachya] - [#12934]) ([sensor.pollen docs]) (breaking change) -- Google Assistant integration: It is no longer possible to override the domain that Home Assistant uses for an entity. This was bound to go wrong when we would test supported features for different domains. Also removed support for disguising temperature sensors as thermostats. We should follow the traits that Google offer us and not offer things that will only work half. ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change) -- The LimitlessLED white temperature range has been adjusted and should now match the Mi-Light smartphone app for identical Kelvin values. ([@amelchio] - [#12971]) ([light.limitlessled docs]) (breaking change) - -## {% linkable_title All changes %} - -- Hello Python 3.5 ([@balloob] - [#12610]) -- Fix CODEOWNERS permissions ([@OttoWinter] - [#12621]) -- Xiaomi Aqara Gateway: Service descriptions added ([@syssi] - [#12631]) -- Removing asyncio.coroutine syntax from some components ([@Julius2342] - [#12507]) -- Allow renaming entities in entity registry ([@balloob] - [#12636]) ([config docs]) -- Check if $files is empty, don't try to execute it ([@armills] - [#12651]) -- Removed py34 ([@cdce8p] - [#12648]) -- Improved Homekit tests ([@cdce8p] - [#12647]) ([homekit docs]) -- Removing asyncio.coroutine syntax from HASS core ([@Julius2342] - [#12509]) -- Synology Chat as a notification platform ([@cmsimike] - [#12596]) ([notify.synology_chat docs]) (new-platform) -- Enable pytradfri during build, and include in Docker ([@lwis] - [#12662]) -- Upgrade insteonplm to 0.8.2 (required refactoring) ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change) -- Homekit Update, Support for TempSensor (°F) ([@cdce8p] - [#12676]) ([homekit docs]) -- Fix formatting of minutes for sleep start in the fitbit sensor ([@awkwardDuck] - [#12664]) ([sensor.fitbit docs]) -- KNX Component: Scene support and expose sensor values ([@Julius2342] - [#11978]) ([knx docs]) ([scene docs]) ([binary_sensor.knx docs]) (new-platform) -- Added config validator for future group platforms ([@cdce8p] - [#12592]) -- Adds simulated sensor ([@robmarkcole] - [#12539]) ([sensor.simulated docs]) (new-platform) -- Add history_graph component to demo ([@balloob] - [#12681]) ([demo docs]) -- Next generation of Xiaomi Aqara devices added ([@syssi] - [#12659]) ([xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) -- Fix homekit: temperature calculation ([@cdce8p] - [#12720]) ([homekit docs]) -- AsusWRT log exceptions ([@kellerza] - [#12668]) ([device_tracker.asuswrt docs]) -- Homekit schema gracefully fail with integer ([@kellerza] - [#12725]) ([homekit docs]) -- Update core HSV color scaling to standard scales: ([@armills] - [#12649]) ([light.hue docs]) ([light.lifx docs]) -- correct air index unit ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change) -- Remove automatic sqlite vacuum ([@amelchio] - [#12728]) -- Disable asuswrt tests ([@armills] - [#12663]) -- Fix Citybikes naming ([@aronsky] - [#12661]) ([sensor.citybikes docs]) -- Xiaomi MiIO Light: Flag the device as unavailable if not reachable ([@syssi] - [#12449]) ([light.xiaomi_miio docs]) -- Check_config await error ([@kellerza] - [#12722]) -- Add Songpal ("Sony Audio Control API") platform ([@rytilahti] - [#12143]) ([media_player.songpal docs]) (new-platform) -- Quote services.yaml string ([@amelchio] - [#12763]) -- Intent: Set light color ([@balloob] - [#12633]) ([light docs]) -- Update Yi platform to make use of async/await ([@bachya] - [#12713]) ([camera.yi docs]) -- Add custom header support for rest_command ([@doctorjames] - [#12646]) ([rest_command docs]) -- Round humidity for display purposes ([@PhilRW] - [#12766]) ([climate docs]) ([weather docs]) ([climate.wink docs]) ([weather.darksky docs]) -- Xiaomi MiIO Vacuum: Use a unique data key per domain ([@syssi] - [#12743]) ([vacuum.xiaomi_miio docs]) -- Add UpCloud platform ([@scop] - [#12011]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) (new-platform) -- Add Unit System Option For Fitbit ([@bertbert72] - [#11817]) ([sensor.fitbit docs]) -- Add 'lock' device class ([@swilson] - [#11640]) ([binary_sensor docs]) -- Bump frontend to 20180228.1 ([@balloob] - [#12786]) ([frontend docs]) -- Fix when 2 states match with same name ([@balloob] - [#12771]) -- MQTT Static Typing ([@OttoWinter] - [#12433]) ([mqtt docs]) -- Add "headers" config parameter to rest switch ([@mfrueh] - [#12706]) ([switch.rest docs]) -- Added Sense energy monitor sensor ([@kbickar] - [#11580]) ([sensor.sense docs]) (new-platform) -- TekSavvy Sensor unlimited bandwidth support ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change) -- iCloud location tracking improvements ([@reedriley] - [#12399]) ([device_tracker.icloud docs]) -- Support serving of backend translations ([@armills] - [#12453]) ([frontend docs]) -- Translation cleanup ([@armills] - [#12804]) -- Take ownership of Emby, Eight Sleep, Hikvision ([@mezz64] - [#12803]) -- Bump pyHik version, digest auth, more device support ([@mezz64] - [#12801]) ([binary_sensor.hikvision docs]) -- Only run deploy from lint branch ([@armills] - [#12805]) -- Add optional words to conversation utterances ([@balloob] - [#12772]) ([conversation docs]) -- Changed default from `all` to `changed` ([@cdce8p] - [#12660]) -- Fix flakiness in tests ([@balloob] - [#12806]) -- Tibber: retry if we fail to connect at startup ([@danielhiversen] - [#12620]) ([sensor.tibber docs]) -- Cast Python Async Await Syntax ([@OttoWinter] - [#12816]) ([media_player.cast docs]) -- Filter Sensor ([@dgomes] - [#12650]) ([sensor.filter docs]) (new-platform) -- MQTT Python 3.5 Async Await Syntax ([@OttoWinter] - [#12815]) ([mqtt docs]) -- Improved Homekit tests ([@cdce8p] - [#12800]) ([homekit docs]) -- Add light.group platform ([@OttoWinter] - [#12229]) ([light.group docs]) (new-platform) -- Add icons to Xiaomi Aqara sensors ([@bakedraccoon] - [#12814]) ([sensor.xiaomi_aqara docs]) -- Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) -- Skip flaky light.group test [skipci] ([@balloob] - [#12847]) -- Update volvooncall.py ([@danielhiversen] - [#12834]) ([switch.volvooncall docs]) -- Address upcloud post-merge comments (#12011) ([@scop] - [#12835]) ([upcloud docs]) ([binary_sensor.upcloud docs]) ([switch.upcloud docs]) -- Keep auto groups during group reload ([@amelchio] - [#12841]) ([group docs]) -- PyXiaomiGateway version bumped. ([@syssi] - [#12828]) ([xiaomi_aqara docs]) -- Fix light group update before add ([@OttoWinter] - [#12844]) ([light.group docs]) -- IndexError (list index out of range) fixed. ([@syssi] - [#12858]) ([sensor.xiaomi_aqara docs]) -- Fix dead Sonos web interface even more ([@amelchio] - [#12851]) ([media_player.sonos docs]) -- Updated to use latest ihcsdk version ([@dingusdk] - [#12865]) ([ihc docs]) -- Add unique id for Tibber sensor ([@danielhiversen] - [#12864]) ([sensor.tibber docs]) -- Add support for Zillow Zestimate sensor ([@jcconnell] - [#12597]) ([sensor.zestimate docs]) (new-platform) -- Grammar fix 'an unique' ([@amelchio] - [#12870]) -- Add SQL index to states.event_id ([@amelchio] - [#12825]) -- Optimize logbook SQL query ([@amelchio] - [#12881]) ([logbook docs]) -- await syntax knx scene ([@Julius2342] - [#12879]) ([scene docs]) -- Fix 0 value when home-assistant restarts ([@bokub] - [#12874]) ([sensor.history_stats docs]) -- Fix aggressive scan intervals ([@balloob] - [#12885]) ([alarm_control_panel.concord232 docs]) ([binary_sensor.concord232 docs]) ([sensor.folder docs]) ([sensor.simulated docs]) -- Fix interaction with hyperion on NodeMCU ([@a-andre] - [#12872]) ([light.hyperion docs]) -- Add the Gamerscore and Tier of the account ([@kevintuhumury] - [#12867]) ([sensor.xbox_live docs]) -- Improve influxdb throughput ([@amelchio] - [#12882]) ([influxdb docs]) -- Add config flow for Hue ([@balloob] - [#12830]) ([config docs]) ([hue docs]) -- Fix issue with guest August lock being included ([@snjoetw] - [#12893]) ([august docs]) -- Upgrade to py-canary 0.4.1 ([@snjoetw] - [#12894]) ([canary docs]) -- update html5 to async/await ([@perosb] - [#12895]) ([notify.html5 docs]) -- Adding additional switches and sensors for Tesla ([@alandtse] - [#12241]) ([device_tracker.tesla docs]) ([sensor.tesla docs]) ([switch.tesla docs]) -- Additional radio schemes for sonos ([@amelchio] - [#12886]) ([media_player.sonos docs]) -- Fix Edimax new firmware auth error and move to pyedimax fork ([@andreipop2005] - [#12873]) ([switch.edimax docs]) -- InfluxDB cleanups ([@amelchio] - [#12903]) ([influxdb docs]) -- Fix for moisture sensors in isy994 ([@thejta] - [#12734]) ([binary_sensor.isy994 docs]) -- Apple TV should return all supported features ([@lucasweb78] - [#12167]) ([media_player.apple_tv docs]) -- Remove dynamic controls from sonos ([@amelchio] - [#12908]) ([media_player.sonos docs]) -- Fix async method call in sync context ([@balloob] - [#12890]) ([device_tracker.icloud docs]) -- update html5 to async/await tests ([@perosb] - [#12896]) -- Fixing small naming bug ([@ebfio] - [#12911]) ([sensor.serial_pm docs]) -- Tibber: Check if the current electricity price is available before we… ([@danielhiversen] - [#12905]) ([sensor.tibber docs]) -- Add empty unit to systemmonitor load averages ([@DanNixon] - [#12900]) ([sensor.systemmonitor docs]) -- update notify html5 dependencies ([@perosb] - [#12898]) ([notify.html5 docs]) -- Xiaomi MiIO Remote: Lazy discover disabled ([@syssi] - [#12710]) ([remote.xiaomi_miio docs]) -- Xiaomi MiIO Switch: Allow unavailable devices at startup by model setting ([@syssi] - [#12626]) ([switch.xiaomi_miio docs]) -- Update python-coinbase to 2.1.0 ([@balloob] - [#12925]) ([coinbase docs]) -- Remove unused cloud APIs ([@balloob] - [#12913]) ([cloud docs]) -- Upgrade to aiohttp 3 ([@balloob] - [#12921]) ([api docs]) ([http docs]) ([shopping_list docs]) -- Flaky tests ([@balloob] - [#12931]) -- Addresses issues with Pollen.com API troubles ([@bachya] - [#12930]) ([sensor.pollen docs]) -- Set supported features based on capabilities of device ([@maxclaey] - [#12922]) ([climate.nest docs]) -- Bumped (minor) version of xknx within knx-component. This fixes a bug with inverted percentage within sensors. ([@Julius2342] - [#12929]) ([knx docs]) ([light.knx docs]) -- Added checks for empty replies from REST calls and supporting tests ([@nickovs] - [#12904]) ([sensor.rest docs]) -- Reinstate our old virtual env check in favor of pip ([@balloob] - [#12932]) -- Support for queries with no results (fix for #12856) ([@dgomes] - [#12888]) ([sensor.sql docs]) -- Fix netatmo sensor warning from invalid Voluptuous default ([@amelchio] - [#12933]) ([sensor.netatmo docs]) -- Updated to enforce quoted ZIP codes for Pollen ([@bachya] - [#12934]) ([sensor.pollen docs]) (breaking change) -- Added support for multiple onvif profiles ([@karlkar] - [#11651]) ([camera.onvif docs]) -- Make ubus dhcp name resolution optional ([@rmounce] - [#12658]) ([device_tracker.ubus docs]) -- Add add_devices back to rpi_camera ([@feanor12] - [#12947]) ([camera.rpi_camera docs]) -- Remove weird tests ([@balloob] - [#12936]) -- optional displaying the sensors location on the map ([@c7h] - [#12375]) ([sensor.luftdaten docs]) -- [SQL Sensor] partial revert of #12452 ([@dgomes] - [#12956]) ([sensor.sql docs]) -- Fix LIFX color conversions ([@amelchio] - [#12957]) ([light.lifx docs]) -- BugFix Popp strike lock not discovered in homeassistant. ([@turbokongen] - [#12951]) ([zwave docs]) -- Add a Media Player Component for Channels ([@maddox] - [#12937]) ([media_player.channels docs]) (new-platform) -- Telegram_bot three platform support proxy_url and proxy_params ([@crhan] - [#12878]) ([telegram_bot.broadcast docs]) ([telegram_bot.polling docs]) ([telegram_bot.webhooks docs]) -- Add support for alarm system, switch and thermostat to homekit ([@maxclaey] - [#12819]) ([homekit docs]) (new-platform) -- Pin lokalise script to working version ([@armills] - [#12965]) -- Hue: Don't change brightness when changing just color ([@balloob] - [#12940]) ([light.hue docs]) -- LIFX async/await conversion ([@amelchio] - [#12973]) ([light.lifx docs]) -- IMAP sensor async/await conversion ([@amelchio] - [#12988]) ([sensor.imap docs]) -- Refactor Google Assistant ([@balloob] - [#12959]) ([google_assistant docs]) ([light docs]) (breaking change) -- Bump pyEmby version to support aiohttp => 3 ([@mezz64] - [#12986]) ([media_player.emby docs]) -- Update pyalarmdotcom version ([@koolsb] - [#12987]) ([alarm_control_panel.alarmdotcom docs]) -- Show the error message when Zabbix fails to log in ([@cyberjacob] - [#12985]) ([zabbix docs]) -- Script/gen_requirements: Ignore package families ([@cdce8p] - [#12963]) -- Fix Sonos group discovery ([@amelchio] - [#12970]) ([media_player.sonos docs]) -- Check color temp range for google assistant ([@balloob] - [#12994]) ([google_assistant docs]) -- Fix limitlessled color temperature ([@amelchio] - [#12971]) ([light.limitlessled docs]) (breaking change) -- Fixes notify.html5 for notifications on FireFox ([@corneyl] - [#12993]) ([notify.html5 docs]) -- Move HomeAssistantView to separate file. Convert http to async syntax. [skip ci] ([@fanthos] - [#12982]) ([http docs]) -- Get zha switch and binary_sensor state on startup ([@SteveEasley] - [#11672]) ([zha docs]) ([binary_sensor.zha docs]) ([light.zha docs]) ([switch.zha docs]) -- Add camera proxy ([@PhracturedBlue] - [#12006]) ([camera.proxy docs]) (new-platform) -- check_config script evolution ([@kellerza] - [#12792]) -- Plex mark devices unavailable if they 'vanish' and clear media ([@ryanm101] - [#12811]) ([media_player.plex docs]) -- Add consider_home and source_type to device_tracker.see service ([@mueslo] - [#12849]) ([device_tracker docs]) -- Clean up Light Groups ([@OttoWinter] - [#12962]) ([light.group docs]) -- Updated to plexapi 3.0.6 ([@ryanm101] - [#13005]) ([media_player.plex docs]) ([sensor.plex docs]) - -[#11580]: https://github.com/home-assistant/home-assistant/pull/11580 -[#11640]: https://github.com/home-assistant/home-assistant/pull/11640 -[#11651]: https://github.com/home-assistant/home-assistant/pull/11651 -[#11672]: https://github.com/home-assistant/home-assistant/pull/11672 -[#11817]: https://github.com/home-assistant/home-assistant/pull/11817 -[#11978]: https://github.com/home-assistant/home-assistant/pull/11978 -[#11994]: https://github.com/home-assistant/home-assistant/pull/11994 -[#12006]: https://github.com/home-assistant/home-assistant/pull/12006 -[#12011]: https://github.com/home-assistant/home-assistant/pull/12011 -[#12143]: https://github.com/home-assistant/home-assistant/pull/12143 -[#12167]: https://github.com/home-assistant/home-assistant/pull/12167 -[#12229]: https://github.com/home-assistant/home-assistant/pull/12229 -[#12241]: https://github.com/home-assistant/home-assistant/pull/12241 -[#12325]: https://github.com/home-assistant/home-assistant/pull/12325 -[#12375]: https://github.com/home-assistant/home-assistant/pull/12375 -[#12399]: https://github.com/home-assistant/home-assistant/pull/12399 -[#12433]: https://github.com/home-assistant/home-assistant/pull/12433 -[#12449]: https://github.com/home-assistant/home-assistant/pull/12449 -[#12453]: https://github.com/home-assistant/home-assistant/pull/12453 -[#12507]: https://github.com/home-assistant/home-assistant/pull/12507 -[#12509]: https://github.com/home-assistant/home-assistant/pull/12509 -[#12534]: https://github.com/home-assistant/home-assistant/pull/12534 -[#12539]: https://github.com/home-assistant/home-assistant/pull/12539 -[#12592]: https://github.com/home-assistant/home-assistant/pull/12592 -[#12596]: https://github.com/home-assistant/home-assistant/pull/12596 -[#12597]: https://github.com/home-assistant/home-assistant/pull/12597 -[#12610]: https://github.com/home-assistant/home-assistant/pull/12610 -[#12620]: https://github.com/home-assistant/home-assistant/pull/12620 -[#12621]: https://github.com/home-assistant/home-assistant/pull/12621 -[#12626]: https://github.com/home-assistant/home-assistant/pull/12626 -[#12631]: https://github.com/home-assistant/home-assistant/pull/12631 -[#12633]: https://github.com/home-assistant/home-assistant/pull/12633 -[#12636]: https://github.com/home-assistant/home-assistant/pull/12636 -[#12646]: https://github.com/home-assistant/home-assistant/pull/12646 -[#12647]: https://github.com/home-assistant/home-assistant/pull/12647 -[#12648]: https://github.com/home-assistant/home-assistant/pull/12648 -[#12649]: https://github.com/home-assistant/home-assistant/pull/12649 -[#12650]: https://github.com/home-assistant/home-assistant/pull/12650 -[#12651]: https://github.com/home-assistant/home-assistant/pull/12651 -[#12658]: https://github.com/home-assistant/home-assistant/pull/12658 -[#12659]: https://github.com/home-assistant/home-assistant/pull/12659 -[#12660]: https://github.com/home-assistant/home-assistant/pull/12660 -[#12661]: https://github.com/home-assistant/home-assistant/pull/12661 -[#12662]: https://github.com/home-assistant/home-assistant/pull/12662 -[#12663]: https://github.com/home-assistant/home-assistant/pull/12663 -[#12664]: https://github.com/home-assistant/home-assistant/pull/12664 -[#12668]: https://github.com/home-assistant/home-assistant/pull/12668 -[#12676]: https://github.com/home-assistant/home-assistant/pull/12676 -[#12681]: https://github.com/home-assistant/home-assistant/pull/12681 -[#12706]: https://github.com/home-assistant/home-assistant/pull/12706 -[#12710]: https://github.com/home-assistant/home-assistant/pull/12710 -[#12713]: https://github.com/home-assistant/home-assistant/pull/12713 -[#12720]: https://github.com/home-assistant/home-assistant/pull/12720 -[#12722]: https://github.com/home-assistant/home-assistant/pull/12722 -[#12725]: https://github.com/home-assistant/home-assistant/pull/12725 -[#12728]: https://github.com/home-assistant/home-assistant/pull/12728 -[#12730]: https://github.com/home-assistant/home-assistant/pull/12730 -[#12734]: https://github.com/home-assistant/home-assistant/pull/12734 -[#12743]: https://github.com/home-assistant/home-assistant/pull/12743 -[#12763]: https://github.com/home-assistant/home-assistant/pull/12763 -[#12766]: https://github.com/home-assistant/home-assistant/pull/12766 -[#12771]: https://github.com/home-assistant/home-assistant/pull/12771 -[#12772]: https://github.com/home-assistant/home-assistant/pull/12772 -[#12786]: https://github.com/home-assistant/home-assistant/pull/12786 -[#12792]: https://github.com/home-assistant/home-assistant/pull/12792 -[#12800]: https://github.com/home-assistant/home-assistant/pull/12800 -[#12801]: https://github.com/home-assistant/home-assistant/pull/12801 -[#12803]: https://github.com/home-assistant/home-assistant/pull/12803 -[#12804]: https://github.com/home-assistant/home-assistant/pull/12804 -[#12805]: https://github.com/home-assistant/home-assistant/pull/12805 -[#12806]: https://github.com/home-assistant/home-assistant/pull/12806 -[#12811]: https://github.com/home-assistant/home-assistant/pull/12811 -[#12814]: https://github.com/home-assistant/home-assistant/pull/12814 -[#12815]: https://github.com/home-assistant/home-assistant/pull/12815 -[#12816]: https://github.com/home-assistant/home-assistant/pull/12816 -[#12819]: https://github.com/home-assistant/home-assistant/pull/12819 -[#12825]: https://github.com/home-assistant/home-assistant/pull/12825 -[#12828]: https://github.com/home-assistant/home-assistant/pull/12828 -[#12830]: https://github.com/home-assistant/home-assistant/pull/12830 -[#12834]: https://github.com/home-assistant/home-assistant/pull/12834 -[#12835]: https://github.com/home-assistant/home-assistant/pull/12835 -[#12841]: https://github.com/home-assistant/home-assistant/pull/12841 -[#12844]: https://github.com/home-assistant/home-assistant/pull/12844 -[#12847]: https://github.com/home-assistant/home-assistant/pull/12847 -[#12849]: https://github.com/home-assistant/home-assistant/pull/12849 -[#12851]: https://github.com/home-assistant/home-assistant/pull/12851 -[#12858]: https://github.com/home-assistant/home-assistant/pull/12858 -[#12864]: https://github.com/home-assistant/home-assistant/pull/12864 -[#12865]: https://github.com/home-assistant/home-assistant/pull/12865 -[#12867]: https://github.com/home-assistant/home-assistant/pull/12867 -[#12870]: https://github.com/home-assistant/home-assistant/pull/12870 -[#12872]: https://github.com/home-assistant/home-assistant/pull/12872 -[#12873]: https://github.com/home-assistant/home-assistant/pull/12873 -[#12874]: https://github.com/home-assistant/home-assistant/pull/12874 -[#12878]: https://github.com/home-assistant/home-assistant/pull/12878 -[#12879]: https://github.com/home-assistant/home-assistant/pull/12879 -[#12881]: https://github.com/home-assistant/home-assistant/pull/12881 -[#12882]: https://github.com/home-assistant/home-assistant/pull/12882 -[#12885]: https://github.com/home-assistant/home-assistant/pull/12885 -[#12886]: https://github.com/home-assistant/home-assistant/pull/12886 -[#12888]: https://github.com/home-assistant/home-assistant/pull/12888 -[#12890]: https://github.com/home-assistant/home-assistant/pull/12890 -[#12893]: https://github.com/home-assistant/home-assistant/pull/12893 -[#12894]: https://github.com/home-assistant/home-assistant/pull/12894 -[#12895]: https://github.com/home-assistant/home-assistant/pull/12895 -[#12896]: https://github.com/home-assistant/home-assistant/pull/12896 -[#12898]: https://github.com/home-assistant/home-assistant/pull/12898 -[#12900]: https://github.com/home-assistant/home-assistant/pull/12900 -[#12903]: https://github.com/home-assistant/home-assistant/pull/12903 -[#12904]: https://github.com/home-assistant/home-assistant/pull/12904 -[#12905]: https://github.com/home-assistant/home-assistant/pull/12905 -[#12908]: https://github.com/home-assistant/home-assistant/pull/12908 -[#12911]: https://github.com/home-assistant/home-assistant/pull/12911 -[#12913]: https://github.com/home-assistant/home-assistant/pull/12913 -[#12921]: https://github.com/home-assistant/home-assistant/pull/12921 -[#12922]: https://github.com/home-assistant/home-assistant/pull/12922 -[#12925]: https://github.com/home-assistant/home-assistant/pull/12925 -[#12929]: https://github.com/home-assistant/home-assistant/pull/12929 -[#12930]: https://github.com/home-assistant/home-assistant/pull/12930 -[#12931]: https://github.com/home-assistant/home-assistant/pull/12931 -[#12932]: https://github.com/home-assistant/home-assistant/pull/12932 -[#12933]: https://github.com/home-assistant/home-assistant/pull/12933 -[#12934]: https://github.com/home-assistant/home-assistant/pull/12934 -[#12936]: https://github.com/home-assistant/home-assistant/pull/12936 -[#12937]: https://github.com/home-assistant/home-assistant/pull/12937 -[#12940]: https://github.com/home-assistant/home-assistant/pull/12940 -[#12947]: https://github.com/home-assistant/home-assistant/pull/12947 -[#12951]: https://github.com/home-assistant/home-assistant/pull/12951 -[#12956]: https://github.com/home-assistant/home-assistant/pull/12956 -[#12957]: https://github.com/home-assistant/home-assistant/pull/12957 -[#12959]: https://github.com/home-assistant/home-assistant/pull/12959 -[#12962]: https://github.com/home-assistant/home-assistant/pull/12962 -[#12963]: https://github.com/home-assistant/home-assistant/pull/12963 -[#12965]: https://github.com/home-assistant/home-assistant/pull/12965 -[#12970]: https://github.com/home-assistant/home-assistant/pull/12970 -[#12971]: https://github.com/home-assistant/home-assistant/pull/12971 -[#12973]: https://github.com/home-assistant/home-assistant/pull/12973 -[#12982]: https://github.com/home-assistant/home-assistant/pull/12982 -[#12985]: https://github.com/home-assistant/home-assistant/pull/12985 -[#12986]: https://github.com/home-assistant/home-assistant/pull/12986 -[#12987]: https://github.com/home-assistant/home-assistant/pull/12987 -[#12988]: https://github.com/home-assistant/home-assistant/pull/12988 -[#12993]: https://github.com/home-assistant/home-assistant/pull/12993 -[#12994]: https://github.com/home-assistant/home-assistant/pull/12994 -[#13005]: https://github.com/home-assistant/home-assistant/pull/13005 -[@DanNixon]: https://github.com/DanNixon -[@Julius2342]: https://github.com/Julius2342 -[@OttoWinter]: https://github.com/OttoWinter -[@PhilRW]: https://github.com/PhilRW -[@PhracturedBlue]: https://github.com/PhracturedBlue -[@SteveEasley]: https://github.com/SteveEasley -[@a-andre]: https://github.com/a-andre -[@alandtse]: https://github.com/alandtse -[@amelchio]: https://github.com/amelchio -[@andreipop2005]: https://github.com/andreipop2005 -[@armills]: https://github.com/armills -[@aronsky]: https://github.com/aronsky -[@awkwardDuck]: https://github.com/awkwardDuck -[@bachya]: https://github.com/bachya -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@bertbert72]: https://github.com/bertbert72 -[@bokub]: https://github.com/bokub -[@c7h]: https://github.com/c7h -[@cdce8p]: https://github.com/cdce8p -[@chilicheech]: https://github.com/chilicheech -[@cmsimike]: https://github.com/cmsimike -[@corneyl]: https://github.com/corneyl -[@crhan]: https://github.com/crhan -[@cyberjacob]: https://github.com/cyberjacob -[@danielhiversen]: https://github.com/danielhiversen -[@dgomes]: https://github.com/dgomes -[@dingusdk]: https://github.com/dingusdk -[@doctorjames]: https://github.com/doctorjames -[@ebfio]: https://github.com/ebfio -[@fanthos]: https://github.com/fanthos -[@feanor12]: https://github.com/feanor12 -[@jcconnell]: https://github.com/jcconnell -[@jeroenterheerdt]: https://github.com/jeroenterheerdt -[@karlkar]: https://github.com/karlkar -[@kbickar]: https://github.com/kbickar -[@kellerza]: https://github.com/kellerza -[@kevintuhumury]: https://github.com/kevintuhumury -[@koolsb]: https://github.com/koolsb -[@lucasweb78]: https://github.com/lucasweb78 -[@lwis]: https://github.com/lwis -[@maddox]: https://github.com/maddox -[@maxclaey]: https://github.com/maxclaey -[@mezz64]: https://github.com/mezz64 -[@mfrueh]: https://github.com/mfrueh -[@mikeodr]: https://github.com/mikeodr -[@mueslo]: https://github.com/mueslo -[@nickovs]: https://github.com/nickovs -[@perosb]: https://github.com/perosb -[@reedriley]: https://github.com/reedriley -[@rmounce]: https://github.com/rmounce -[@robmarkcole]: https://github.com/robmarkcole -[@ryanm101]: https://github.com/ryanm101 -[@rytilahti]: https://github.com/rytilahti -[@scop]: https://github.com/scop -[@snjoetw]: https://github.com/snjoetw -[@swilson]: https://github.com/swilson -[@syssi]: https://github.com/syssi -[@teharris1]: https://github.com/teharris1 -[@thejta]: https://github.com/thejta -[@turbokongen]: https://github.com/turbokongen -[alarm_control_panel.alarmdotcom docs]: /components/alarm_control_panel.alarmdotcom/ -[alarm_control_panel.concord232 docs]: /components/alarm_control_panel.concord232/ -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[api docs]: /components/api/ -[august docs]: /components/august/ -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.concord232 docs]: /components/binary_sensor.concord232/ -[binary_sensor.egardia docs]: /components/binary_sensor.egardia/ -[binary_sensor.hikvision docs]: /components/binary_sensor.hikvision/ -[binary_sensor.insteon_plm docs]: /components/binary_sensor.insteon_plm/ -[binary_sensor.isy994 docs]: /components/binary_sensor.isy994/ -[binary_sensor.knx docs]: /components/binary_sensor.knx/ -[binary_sensor.upcloud docs]: /components/binary_sensor.upcloud/ -[binary_sensor.zha docs]: /components/binary_sensor.zha/ -[camera.onvif docs]: /components/camera.onvif/ -[camera.proxy docs]: /components/camera.proxy/ -[camera.rpi_camera docs]: /components/camera.rpi_camera/ -[camera.yi docs]: /components/camera.yi/ -[canary docs]: /components/canary/ -[climate docs]: /components/climate/ -[climate.nest docs]: /components/climate.nest/ -[climate.wink docs]: /components/climate.wink/ -[cloud docs]: /components/cloud/ -[coinbase docs]: /components/coinbase/ -[config docs]: /components/config/ -[conversation docs]: /components/conversation/ -[demo docs]: /components/demo/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.asuswrt docs]: /components/device_tracker.asuswrt/ -[device_tracker.icloud docs]: /components/device_tracker.icloud/ -[device_tracker.tesla docs]: /components/device_tracker.tesla/ -[device_tracker.ubus docs]: /components/device_tracker.ubus/ -[egardia docs]: /components/egardia/ -[fan.insteon_plm docs]: /components/fan.insteon_plm/ -[frontend docs]: /components/frontend/ -[google_assistant docs]: /components/google_assistant/ -[group docs]: /components/group/ -[homekit docs]: /components/homekit/ -[http docs]: /components/http/ -[hue docs]: /components/hue/ -[ihc docs]: /components/ihc/ -[influxdb docs]: /components/influxdb/ -[insteon_plm docs]: /components/insteon_plm/ -[knx docs]: /components/knx/ -[light docs]: /components/light/ -[light.demo docs]: /components/light.demo/ -[light.group docs]: /components/light.group/ -[light.group docs]: /components/light.group/ -[light.hue docs]: /components/light.hue/ -[light.hyperion docs]: /components/light.hyperion/ -[light.insteon_plm docs]: /components/light.insteon_plm/ -[light.knx docs]: /components/light.knx/ -[light.lifx docs]: /components/light.lifx/ -[light.limitlessled docs]: /components/light.limitlessled/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.zha docs]: /components/light.zha/ -[logbook docs]: /components/logbook/ -[media_player.apple_tv docs]: /components/media_player.apple_tv/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.channels docs]: /components/media_player.channels/ -[media_player.emby docs]: /components/media_player.emby/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.songpal docs]: /components/media_player.songpal/ -[media_player.sonos docs]: /components/media_player.sonos/ -[mqtt docs]: /components/mqtt/ -[notify.html5 docs]: /components/notify.html5/ -[notify.synology_chat docs]: /components/notify.synology_chat/ -[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ -[rest_command docs]: /components/rest_command/ -[scene docs]: /components/scene/ -[sensor.airvisual docs]: /components/sensor.airvisual/ -[sensor.citybikes docs]: /components/sensor.citybikes/ -[sensor.filter docs]: /components/sensor.filter/ -[sensor.fitbit docs]: /components/sensor.fitbit/ -[sensor.folder docs]: /components/sensor.folder/ -[sensor.history_stats docs]: /components/sensor.history_stats/ -[sensor.imap docs]: /components/sensor.imap/ -[sensor.insteon_plm docs]: /components/sensor.insteon_plm/ -[sensor.luftdaten docs]: /components/sensor.luftdaten/ -[sensor.netatmo docs]: /components/sensor.netatmo/ -[sensor.plex docs]: /components/sensor.plex/ -[sensor.pollen docs]: /components/sensor.pollen/ -[sensor.rest docs]: /components/sensor.rest/ -[sensor.sense docs]: /components/sensor.sense/ -[sensor.serial_pm docs]: /components/sensor.serial_pm/ -[sensor.simulated docs]: /components/sensor.simulated/ -[sensor.sql docs]: /components/sensor.sql/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.teksavvy docs]: /components/sensor.teksavvy/ -[sensor.tesla docs]: /components/sensor.tesla/ -[sensor.tibber docs]: /components/sensor.tibber/ -[sensor.xbox_live docs]: /components/sensor.xbox_live/ -[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ -[sensor.zestimate docs]: /components/sensor.zestimate/ -[shopping_list docs]: /components/shopping_list/ -[switch.edimax docs]: /components/switch.edimax/ -[switch.insteon_plm docs]: /components/switch.insteon_plm/ -[switch.rest docs]: /components/switch.rest/ -[switch.tesla docs]: /components/switch.tesla/ -[switch.upcloud docs]: /components/switch.upcloud/ -[switch.volvooncall docs]: /components/switch.volvooncall/ -[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[switch.zha docs]: /components/switch.zha/ -[telegram_bot.broadcast docs]: /components/telegram_bot.broadcast/ -[telegram_bot.polling docs]: /components/telegram_bot.polling/ -[telegram_bot.webhooks docs]: /components/telegram_bot.webhooks/ -[upcloud docs]: /components/upcloud/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[weather docs]: /components/weather/ -[weather.darksky docs]: /components/weather.darksky/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[zabbix docs]: /components/zabbix/ -[zha docs]: /components/zha/ -[zwave docs]: /components/zwave/ -[#13020]: https://github.com/home-assistant/home-assistant/pull/13020 -[#13024]: https://github.com/home-assistant/home-assistant/pull/13024 -[#13027]: https://github.com/home-assistant/home-assistant/pull/13027 -[#13030]: https://github.com/home-assistant/home-assistant/pull/13030 -[#13031]: https://github.com/home-assistant/home-assistant/pull/13031 -[@balloob]: https://github.com/balloob -[@cdce8p]: https://github.com/cdce8p -[@kellerza]: https://github.com/kellerza -[device_tracker docs]: /components/device_tracker/ -[google_assistant docs]: /components/google_assistant/ -[homekit docs]: /components/homekit/ -[#12996]: https://github.com/home-assistant/home-assistant/pull/12996 -[#13037]: https://github.com/home-assistant/home-assistant/pull/13037 -[#13038]: https://github.com/home-assistant/home-assistant/pull/13038 -[#13042]: https://github.com/home-assistant/home-assistant/pull/13042 -[#13045]: https://github.com/home-assistant/home-assistant/pull/13045 -[#13056]: https://github.com/home-assistant/home-assistant/pull/13056 -[#13057]: https://github.com/home-assistant/home-assistant/pull/13057 -[#13059]: https://github.com/home-assistant/home-assistant/pull/13059 -[@amelchio]: https://github.com/amelchio -[@balloob]: https://github.com/balloob -[@jeradM]: https://github.com/jeradM -[@jra3]: https://github.com/jra3 -[@kellerza]: https://github.com/kellerza -[@armills]: https://github.com/armills -[@ptarjan]: https://github.com/ptarjan -[@syssi]: https://github.com/syssi -[climate.sensibo docs]: /components/climate.sensibo/ -[light.lifx docs]: /components/light.lifx/ -[light.yeelight docs]: /components/light.yeelight/ -[sensor.sabnzbd docs]: /components/sensor.sabnzbd/ -[sensor.sql docs]: /components/sensor.sql/ -[wink docs]: /components/wink/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[#12939]: https://github.com/home-assistant/home-assistant/pull/12939 -[#13058]: https://github.com/home-assistant/home-assistant/pull/13058 -[#13062]: https://github.com/home-assistant/home-assistant/pull/13062 -[#13063]: https://github.com/home-assistant/home-assistant/pull/13063 -[#13078]: https://github.com/home-assistant/home-assistant/pull/13078 -[#13079]: https://github.com/home-assistant/home-assistant/pull/13079 -[#13094]: https://github.com/home-assistant/home-assistant/pull/13094 -[#13095]: https://github.com/home-assistant/home-assistant/pull/13095 -[#13096]: https://github.com/home-assistant/home-assistant/pull/13096 -[@Julius2342]: https://github.com/Julius2342 -[@OttoWinter]: https://github.com/OttoWinter -[@Tadly]: https://github.com/Tadly -[@balloob]: https://github.com/balloob -[@jesserockz]: https://github.com/jesserockz -[@pavoni]: https://github.com/pavoni -[@snjoetw]: https://github.com/snjoetw -[camera.arlo docs]: /components/camera.arlo/ -[camera.synology docs]: /components/camera.synology/ -[climate.generic_thermostat docs]: /components/climate.generic_thermostat/ -[device_tracker.tado docs]: /components/device_tracker.tado/ -[knx docs]: /components/knx/ -[light.hue docs]: /components/light.hue/ -[light.iglo docs]: /components/light.iglo/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.kodi docs]: /components/media_player.kodi/ -[vera docs]: /components/vera/ -[#13106]: https://github.com/home-assistant/home-assistant/pull/13106 -[#13109]: https://github.com/home-assistant/home-assistant/pull/13109 -[#13114]: https://github.com/home-assistant/home-assistant/pull/13114 -[#13143]: https://github.com/home-assistant/home-assistant/pull/13143 -[@arsaboo]: https://github.com/arsaboo -[@balloob]: https://github.com/balloob -[@jeroenterheerdt]: https://github.com/jeroenterheerdt -[alarm_control_panel.egardia docs]: /components/alarm_control_panel.egardia/ -[arlo docs]: /components/arlo/ -[hue docs]: /components/hue/ -[light.hue docs]: /components/light.hue/ -[switch.wemo docs]: /components/switch.wemo/ -[#13162]: https://github.com/home-assistant/home-assistant/pull/13162 -[#13174]: https://github.com/home-assistant/home-assistant/pull/13174 -[#13195]: https://github.com/home-assistant/home-assistant/pull/13195 -[#13196]: https://github.com/home-assistant/home-assistant/pull/13196 -[#13220]: https://github.com/home-assistant/home-assistant/pull/13220 -[@amelchio]: https://github.com/amelchio -[@arsaboo]: https://github.com/arsaboo -[@balloob]: https://github.com/balloob -[@cdce8p]: https://github.com/cdce8p -[arlo docs]: /components/arlo/ -[google_assistant docs]: /components/google_assistant/ -[homekit docs]: /components/homekit/ -[media_player.sonos docs]: /components/media_player.sonos/ -[#13226]: https://github.com/home-assistant/home-assistant/pull/13226 -[#13237]: https://github.com/home-assistant/home-assistant/pull/13237 -[#13248]: https://github.com/home-assistant/home-assistant/pull/13248 -[#13293]: https://github.com/home-assistant/home-assistant/pull/13293 -[#13358]: https://github.com/home-assistant/home-assistant/pull/13358 -[@PhracturedBlue]: https://github.com/PhracturedBlue -[@amelchio]: https://github.com/amelchio -[@balloob]: https://github.com/balloob -[camera.proxy docs]: /components/camera.proxy/ -[device_tracker docs]: /components/device_tracker/ -[google_assistant docs]: /components/google_assistant/ -[light.demo docs]: /components/light.demo/ -[media_player.sonos docs]: /components/media_player.sonos/ diff --git a/source/_posts/2018-03-24-new-release-schedule.markdown b/source/_posts/2018-03-24-new-release-schedule.markdown deleted file mode 100644 index d39d8d3633..0000000000 --- a/source/_posts/2018-03-24-new-release-schedule.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: post -title: "Updated release schedule" -description: "We're adding a beta period of a week before marking each release as final." -date: 2018-03-24 00:01:00 -date_formatted: "March 24, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Announcements -og_image: /images/blog/2018-03-release-schedule/social.png ---- - -So this weekend we're going to shake things a little up. Instead of releasing a new version today, we've released a beta version of the new version: 0.66.0.beta0. After a week of being in beta, the version will be promoted to be the new stable release. While the beta is live, we will accept contributions on the dev branch for the next version as usual. - -

    -Diagram showing the updates release cycle containing a week extra time before release. -Diagram of the new release schedule -

    - -The goal is to create a more stable first release without the need for a quick follow up hot fix. So if you want to be able to access the new features faster but don't mind the risk of running into the occasional bug, get yourself on the beta channel today: - - - Hass.io users will be able to enable the dev channel in the system settings. - - For Docker users, the beta's will be published under the `rc` tag. - - Beta's are also published to PyPi. Because it is a beta release, it will not be installed by Pip unless explictely specified in the install command: `pip3 install --pre --upgrade homeassistant`. - -The documentation for the beta version can be found at [https://rc.home-assistant.io/](https://rc.home-assistant.io/). - -If you find issues with either the code or the docs of the pre-release, please open an issue in the [appropriate place](/help/#bugs-feature-requests-and-alike) or, even better, submit a pull request to fix it. diff --git a/source/_posts/2018-03-29-fedora-atomic.markdown b/source/_posts/2018-03-29-fedora-atomic.markdown deleted file mode 100644 index 30750c6342..0000000000 --- a/source/_posts/2018-03-29-fedora-atomic.markdown +++ /dev/null @@ -1,143 +0,0 @@ ---- -layout: post -title: "Using Fedora Atomic with Home Assistant" -description: "Running Home Assistant on a Fedora Atomic host." -date: 2018-03-29 22:00:00 -date_formatted: "March 29, 2018" -author: Fabian Affolter -author_twitter: fabaff -comments: true -categories: Announcements -og_image: /images/blog/2018-03-fedora-atomic/social.png ---- - - -The Hackerspace [Eastermundigen](http://www.eastermundigen.ch/) is often my real-world playground for Home Assistant-related topics which sometimes more belong in the industrial automation area than in a home. Also, it gives me access to devices which I don't have like 3D printers, laser cutters, connected power strips and a like. In the past the local Home Assistant instance there was running on an old [CubieBoard2](http://cubieboard.org/) with [Fedora ARM](https://arm.fedoraproject.org/). It was one of several systems which were running 24/7. To reduce the electricity costs we decided to consolidate the physical systems to only two. One for storage and one for all other services. - - - -This blog post contains the details of the setup. They may be useful for others as well. Our new system is running Fedora 27 from [Project Atomic](http://www.projectatomic.io). We will not cover the setup of an Atomic host and the details of Project Atomic itself. For more details, have a look at [Benjamin Affolter](https://twitter.com/bliemli)'s [blog post](https://www.puzzle.ch/blog/articles/2017/09/28/atomic-host-basic-setup-and-usage) which also covers some of the basics. - -The installation process of an Atomic host is pretty much the same as for Fedora Server or Fedora Workstation. Either create a Live USB device or use PXE to get the installation going. E.g., lauch iPXE and chainload [netboot.yxz](https://netboot.xyz/) with `chain --autofree https://boot.netboot.xyz`. Then let `anaconda` guide you through the setup. - -After the first boot, copy the SSH keys, use `visudo` to add users and perform the usual steps you do for a new system. We only allow SSH with keys, are enforcing the usage of `sudo`, need special network settings and a couple of other things. But those configuration settings are irrelevant for a setup in a local network. - -If the system is up and running then check if you are using the latest release. - -```bash -$ sudo atomic host status -State: idle; auto updates disabled -Deployments: -● ostree://fedora-atomic:fedora/27/x86_64/atomic-host - Version: 27.100 (2018-03-13 17:19:44) - Commit: 326f62b93a5cc836c97d31e73a71b6b6b6955c0f225f7651b52a693718e6aa91 - GPGSignature: Valid signature by 860E19B0AFA800A1751881A6F55E7430F5282EE4 -``` - -The release is 27.100. The latest is 27.105. So, let's update the host and reboot it. - -```bash -$ sudo atomic host upgrade -$ sudo systemctl reboot -``` - -You can also see that Docker is already running. No installation needed. - -```bash -$ sudo systemctl status docker -● docker.service - Docker Application Container Engine - Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) - Active: active (running) since Thu 2018-03-28 15:44:04 CEST; 35min ago -... -``` - -Further we will cover how it works for Home Assistant and [Mosquitto](https://mosquitto.org/). For a small setup using [kubernetes](https://kubernetes.io) seems a bit overkill. Thus, we decided to stick to `systemd`. - -Instead of `docker` we can use the command-line tool [`atomic`](http://www.projectatomic.io/docs/usr-bin-atomic/) to perform a lot of tasks. Download the images for the containers. We are pulling the images from [Docker Hub](https://hub.docker.com/), thus we need to add the registry to use. - -```bash -$ sudo atomic install docker.io/​homeassistant/home-assistant -$ sudo atomic install docker.io/eclipse-mosquitto -``` - -Both containers need additional directories for persistent storage. - -```bash -$ sudo mkdir -p /opt/home-assistant -$ sudo mkdir -p /opt/mosquitto/{config,data,log} -``` - -We need a copy of `mosquitto.conf` to run Mosquitto later: - -```bash -$ sudo curl -o /opt/mosquitto/config/mosquitto.conf \ - https://raw.githubusercontent.com/eclipse/mosquitto/master/mosquitto.conf -``` - -To handle the containers we created service unit files for the [Home Assistant](https://hub.docker.com/r/homeassistant/home-assistant/) and the [Mosquitto](https://hub.docker.com/_/eclipse-mosquitto/) container. For Home Assistant and Mosquitto the file can looks like the sample below. Further details about the `ExecStart` line can be found in the documentation about a [Docker](/docs/installation/docker/) setup. For Home Assistant - -```bash -$ su -# cat <<'EOF' >> /etc/systemd/system/home-assistant.service -[Unit] -Description=Home Assistant -Requires=docker.service -Wants=docker.service -After=docker.service - -[Service] -Restart=on-failure -RestartSec=10 -ExecStart=/usr/bin/docker run --rm --name %p -v /opt/home-assistant:/config:Z -v /etc/localtime:/etc/localtime:ro --network host homeassistant/home-assistant -ExecStop=-/usr/bin/docker stop -t 30 %p - -[Install] -WantedBy=multi-user.target -EOF -``` - -and for Mosquitto. - -```bash -# cat <<'EOF' >> /etc/systemd/system/mosquitto.service -[Unit] -Description=Mosquitto MQTT docker container -Requires=docker.service -Wants=docker.service -After=docker.service - -[Service] -Restart=on-failure -RestartSec=10 -ExecStart=/usr/bin/docker run --name %p -v mosquitto.conf:/opt/mosquitto/config/mosquitto.conf -v /opt/mosquitto/data:/opt/mosquitto/data -v /opt/mosquitto/log:/mosquitto/log -p 1883:1883 -p 9001:9001 eclipse-mosquitto -ExecStop=/usr/bin/docker stop -t 2 %p -ExecStopPost=/usr/bin/docker rm -f %p - -[Install] -WantedBy=multi-user.target -EOF -``` - -Exit to be not longer `root`. - -```bash -# exit -``` - -Reload `systemd` to make it aware of the new configurations. - -```bash -$ sudo systemctl daemon-reload -``` - -Now, both container can be controlled by `systemctl`. - -```bash -$ sudo systemctl enable home-assistant.service --now -$ sudo systemctl enable mosquitto.service --now -``` - -Check with `$ sudo systemctl status [name].service` if there are error or the services are running. - -The deployment of [NGINX](https://nginx.org/en/) as webserver for static content, [grafana](https://grafana.com/) and [InfluxBD](https://www.influxdata.com/) works the same way as for Home Assistant and Mosquitto. To get a proper [traefik](https://traefik.io/) setup additional reading and work is required. - diff --git a/source/_posts/2018-03-30-release-66.markdown b/source/_posts/2018-03-30-release-66.markdown deleted file mode 100644 index 26aba182be..0000000000 --- a/source/_posts/2018-03-30-release-66.markdown +++ /dev/null @@ -1,571 +0,0 @@ ---- -layout: post -title: "0.66: VeSync switches, HomematicIP, and a group cover." -description: "Fabulous release 0.66 has landed! Tons of fixes, improvements and joy." -date: 2018-03-30 00:01:00 -date_formatted: "March 30, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-03-0.66/components.png ---- - - - -This is the first release with our new release schedule. During the extra week we had a total of 4 beta releases with a total of [26 fixes](https://github.com/home-assistant/home-assistant/milestone/128?closed=1). So this should be the most stable release yet! - -It's also a release that is full of goodies. 80 people contributed over 223 fixes, improvements and new integrations during the last 2 weeks of this release 😎 I want to highlight the work of two people who are doing an amazing job: [@NovapaX] has been doing a great job triaging and fixing weird quirks and bugs in the frontend. And I want to give a shout out to [@armills] who has enabled backend translations. This means that a bunch of things that did not have translations yet, will now soon be translatable. We're planning some cool things with this! - -A quick note if you are using Philips Hue and a Hue custom component: it will no longer work due to the internal changes to the Hue platform. Remove the custom component to ensure that your Hue lights keep working. - -## New Platforms - -- Add new platform for VeSync switches ([@markperdue] - [#13000]) ([switch.vesync docs]) (new-platform) -- HomeKit Restructure (new config options) ([@cdce8p] - [#12997]) ([homekit docs]) (breaking change) (new-platform) -- Added cover.group platform (replaces #12303) ([@cdce8p] - [#12692]) ([cover.group docs]) (new-platform) -- Add extra sensors for BMW ConnectedDrive ([@gerard33] - [#12591]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (new-platform) -- Homekit: New supported devices ([@cdce8p] - [#13244]) ([homekit docs]) (new-platform) -- Adding Foobot device sensor ([@reefab] - [#12417]) ([sensor.foobot docs]) (new-platform) -- Added Stride notification component ([@BioSehnsucht] - [#13221]) ([notify docs]) (new-platform) -- Xiaomi MiIO Sensor: Xiaomi Air Quality Monitor (PM2.5) integration ([@syssi] - [#13264]) ([sensor.xiaomi_miio docs]) (new-platform) -- Add initial support fo HomematicIP components ([@mxworm] - [#12761]) ([homematicip docs]) ([sensor.homematicip docs]) (new-platform) -- Support for security systems controlled by IFTTT ([@maxclaey] - [#12975]) ([alarm_control_panel.ifttt docs]) (new-platform) -- Zigbee fan ([@igorbernstein2] - [#12289]) ([zha docs]) ([fan.zha docs]) (new-platform) -- Adding a discoverable Samsung Syncthru Printer sensor platform ([@nielstron] - [#13134]) ([sensor.syncthru docs]) (new-platform) -- Add trafikverket_weatherstation sensor platform ([@Qxlkdr] - [#12115]) ([sensor.trafikverket_weatherstation docs]) (new-platform) -- Security fix & lock for HomeMatic ([@PH89] - [#11980]) ([homematic docs]) ([lock docs]) ([lock.homematic docs]) (breaking change) (new-platform) - -## {% linkable_title Release 0.66.1 - April 1 %} - -- Update frontend to fix climate and chart issues ([@NovapaX] & [@c727]) -- Fix mqtt_json color commands ([@armills] - [#13617]) ([light.mqtt_json docs]) -- Add pincode fallback ([@cdce8p] - [#13587]) ([homekit docs]) -- Fix mysensors sensor type lookup ([@MartinHjelmare] - [#13574]) ([sensor.mysensors docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - -## Breaking Changes - -- Refactor Hue: If you specify a bridge in your config, the `host` key is now required and needs to be a valid ip address. Option `allow_in_emulated_hue` has been removed. Exclude the lights via the emulated hue config. Due to the internal changes of how the Hue integration works, any Hue custom component will no longer work. ([@balloob] - [#13043]) ([hue docs]) ([light.hue docs]) (breaking change) -- Z-Wave: In version 0.47, the opt-in `new_entity_ids` configuration was added to Z-Wave to smooth the transition through the change. Support for old entity IDs is now removed, and the configuration is no longer necessary. If you are migrating from 0.63 or higher, your entity IDs will already be stored in the Entity Registry and no changes are required. If not, [entity IDs can now be manually configured using the Entity Registry](/docs/configuration/entity-registry/) if necessary. ([@armills] - [#12652]) ([zwave docs]) (breaking change) -- Spotcrime sensor: This update changes the sensor to require a user supplied API key as a configuration entry. The default key has been removed from the Spotcrime package and has also been modified to accept a user supplied API key.([@jcconnell] - [#12926]) ([sensor.spotcrime docs]) (breaking change) -- Smappee sensor: Fixed SI units for current consumption. Total consumption should be in kWh. not kW. ([@vandenberghev] - [#13190]) ([sensor.smappee docs]) (breaking change) -- System monitor sensor: Used and available swap space reported by the system monitor component is now measured in MiB instead of GiB. ([@DanNixon] - [#13148]) ([sensor.systemmonitor docs]) (breaking change) -- HomeKit: The `pincode` parameter is deprecated, since the `HomeKit` component will now generate one for you and display it as a persistence notification during setup. Additionally the default `port` changed to `51827` to avoid potential conflicts with `homebridge`. Lastly to fix a major bug, we needed to change the way accessory ids are generated. This means that in turn all previous accessory settings will need to be repeated. To avoid future conflicts, it is highly recommended to remove the `Home Assistant Bridge` from the `Home` app and repeat the setup process. ([HomeKit Setup](/components/homekit/#setup)) ([@cdce8p] - [#12997]) ([homekit docs]) (breaking change) (new-platform) -- Tibber: The name and the entity id for the Tibber sensor will now be the same as the nickname from the app. Default nick name is the address. So if you have not changed the nickname in the app, everything should be as before. ([@clementhk] - [#13231]) ([sensor.tibber docs]) (breaking change) -- Darsky sensor: Fix the incorrect unit of measurement for the 'Precip Intensity' and 'Daily Max Precip Intensity' for IS units according to the dark sky api documentation.([@cgtobi] - [#13415]) ([sensor.darksky docs]) (breaking change) -- HomeMatic: Locks are now under the lock component ([@PH89] - [#11980]) ([homematic docs]) ([lock docs]) ([lock.homematic docs]) (breaking change) (new-platform) - -## All changes - -- New lazytox.py script ([@kellerza] - [#12862]) -- Update netdisco to 1.3.0 ([@balloob] - [#13007]) -- remove rounding of temperature reading ([@hthiery] - [#13018]) ([sensor.lacrosse docs]) -- Make lazytox script executable ([@OttoWinter] - [#13040]) -- python-miio version bumped. ([@syssi] - [#13055]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Glances Docker Sensors ([@timmo001] - [#13026]) ([sensor.glances docs]) -- Script/lint, Lazytox: Fix issue to ignore delete files ([@cdce8p] - [#13051]) -- Sensor template don't exit early on TemplateError ([@OttoWinter] - [#13041]) ([sensor.template docs]) -- Better errors for unknown secrets ([@kellerza] - [#13072]) -- Remove Z-Wave old/new entity_id attributes ([@armills] - [#12652]) ([zwave docs]) (breaking change) -- Make Sensibo climate registry_entity compliant ([@andrey-git] - [#13086]) ([climate.sensibo docs]) -- Rename homeassistant.util.async to .async_ ([@smurfix] - [#13088]) -- Config flow translations ([@armills] - [#13066]) -- Lint script tweaks ([@armills] - [#13093]) -- asyncio.ensure_future Python 3.5 ([@OttoWinter] - [#13141]) ([spc docs]) -- Upgrade aiohttp to 3.0.7 ([@fabaff] - [#13119]) -- Upgrade astral to 1.6 ([@fabaff] - [#13120]) -- fix: Support different JointSpace API versions ([@FezVrasta] - [#13084]) ([media_player.philips_js docs]) -- update to async/await ([@perosb] - [#13137]) ([zha docs]) ([light.zha docs]) -- Upgrade mypy to 0.570 ([@fabaff] - [#13128]) -- Upgrade TwitterAPI to 2.4.10 ([@fabaff] - [#13126]) ([notify docs]) -- Upgrade youtube_dl to 2018.03.10 ([@fabaff] - [#13124]) ([media_extractor docs]) -- Upgrade zeroconf to 0.20.0 ([@fabaff] - [#13123]) ([zeroconf docs]) -- Upgrade schiene to 0.22 ([@fabaff] - [#13121]) ([sensor.deutsche_bahn docs]) -- Remove crazy JSON encoding things that are no longer used ([@balloob] - [#13029]) ([http docs]) ([websocket_api docs]) -- Disable Monkey Patch for 3.6.3+ ([@OttoWinter] - [#13150]) -- Upgrade Sphinx to 1.7.1 ([@fabaff] - [#13127]) -- upgrade tibber libary to 0.4.0 to use aiohttp 3.0 ([@danielhiversen] - [#13164]) ([sensor.tibber docs]) -- Change iglo port to cv.port validator ([@jesserockz] - [#13163]) ([light.iglo docs]) -- deConz rewrite to use async await syntax ([@Kane610] - [#13151]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) -- Upgrade holidays to 0.9.4 ([@OttoWinter] - [#13167]) ([binary_sensor.workday docs]) -- upcloud: Provide unique ID for server entities ([@scop] - [#13181]) ([upcloud docs]) -- Added IPAreaThermostat and an exception-list for HM_IGNORE_DISCOVERY_NODE ([@a-wolter] - [#13171]) ([homematic docs]) ([sensor.homematic docs]) -- Improve MQTT failed connection error message ([@OttoWinter] - [#13184]) ([mqtt docs]) -- Upgrade pytest to 3.4.2 ([@OttoWinter] - [#13169]) -- Channels clean ups ([@maddox] - [#12967]) ([media_player.channels docs]) -- Fix freegeoip ([@pvizeli] - [#13193]) -- Python Spotcrime sensor requires API key, fixes include/exclude ([@jcconnell] - [#12926]) ([sensor.spotcrime docs]) (breaking change) -- Add new platform for VeSync switches ([@markperdue] - [#13000]) ([switch.vesync docs]) (new-platform) -- Fixed SI units for current consumption ([@vandenberghev] - [#13190]) ([sensor.smappee docs]) (breaking change) -- Report swap in MiB ([@DanNixon] - [#13148]) ([sensor.systemmonitor docs]) (breaking change) -- Fix history API ([@balloob] - [#13214]) ([history docs]) -- Add notifications to downloader.py ([@engrbm87] - [#12961]) ([downloader docs]) -- HomeKit Restructure (new config options) ([@cdce8p] - [#12997]) ([homekit docs]) (breaking change) (new-platform) -- deCONZ - Add support for consumption and power sensors ([@Kane610] - [#13218]) ([deconz docs]) ([binary_sensor.deconz docs]) ([sensor.deconz docs]) -- Change Hass.io icon to home-assistant ([@c727] - [#13230]) ([hassio docs]) -- Add docstring ([@fabaff] - [#13232]) ([sensor.crimereports docs]) -- Python 3.5 adjustments ([@OttoWinter] - [#13173]) ([mysensors docs]) -- Added cover.group platform (replaces #12303) ([@cdce8p] - [#12692]) ([cover.group docs]) (new-platform) -- Tibber use appNickname as name ([@clementhk] - [#13231]) ([sensor.tibber docs]) (breaking change) -- media_content_type attribute display fix ([@kuzin2006] - [#13204]) ([media_player.kodi docs]) -- Edimax component reports wrong power values ([@andreipop2005] - [#13011]) ([switch.edimax docs]) -- myStrom: Add RGB support to Wifi bulbs ([@the-glu] - [#13194]) ([light.mystrom docs]) -- Fix logbook JSON serialize issue ([@balloob] - [#13229]) ([logbook docs]) -- Try to fix caldav ([@maxlaverse] - [#13236]) ([calendar.caldav docs]) -- Cleanup Sonos platform setup ([@amelchio] - [#13225]) ([media_player.sonos docs]) -- Fix 'dict' object has no attribute 'strftime' ([@Juggels] - [#13215]) ([calendar.todoist docs]) -- Fix aiohttp deprecation warnings ([@balloob] - [#13240]) -- Add extra sensors for BMW ConnectedDrive ([@gerard33] - [#12591]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (new-platform) -- Homekit: New supported devices ([@cdce8p] - [#13244]) ([homekit docs]) (new-platform) -- Adding Foobot device sensor ([@reefab] - [#12417]) ([sensor.foobot docs]) (new-platform) -- Fix for not setting up the camera if it is offline during setup phase ([@karlkar] - [#13082]) ([camera.onvif docs]) -- Added Stride notification component ([@BioSehnsucht] - [#13221]) ([notify docs]) (new-platform) -- Homekit: Use util functions for unit conversion ([@cdce8p] - [#13253]) ([homekit docs]) -- Use the first, not the last volume controller when multiple are available on songpal ([@rytilahti] - [#13222]) ([media_player.songpal docs]) -- Xiaomi MiIO Switch: Power Strip support improved ([@syssi] - [#12917]) ([switch.xiaomi_miio docs]) -- Xiaomi MiIO light: Philips Eyecare Smart Lamp 2 integration ([@syssi] - [#12883]) ([light.xiaomi_miio docs]) -- Fix guide link in CONTRIBUTING.md ([@JensTimmerman] - [#13272]) -- Xiaomi MiIO Remote: Unique id added ([@syssi] - [#13266]) ([remote.xiaomi_miio docs]) -- Xiaomi MiIO Sensor: Xiaomi Air Quality Monitor (PM2.5) integration ([@syssi] - [#13264]) ([sensor.xiaomi_miio docs]) (new-platform) -- Refactor Hue: phue -> aiohue ([@balloob] - [#13043]) ([hue docs]) ([light.hue docs]) (breaking change) -- Unused xiaomi miio sensor method removed ([@syssi] - [#13281]) ([sensor.xiaomi_miio docs]) -- Changed to async/await ([@thrawnarn] - [#13246]) ([media_player.bluesound docs]) -- Python 3.5 async with ([@OttoWinter] - [#13283]) -- Fix WUnderground duplicate entity ids ([@OttoWinter] - [#13285]) ([sensor.wunderground docs]) -- Upgrade aiohttp to 3.0.9 ([@fabaff] - [#13288]) -- Upgrade aiohttp_cors to 0.7.0 ([@fabaff] - [#13289]) ([http docs]) -- Upgrade sqlalchemy to 1.2.5 ([@fabaff] - [#13292]) ([sensor.sql docs]) -- Upgrade TwitterAPI to 2.5.0 ([@fabaff] - [#13287]) ([notify docs]) -- Upgrade numpy to 1.14.2 ([@fabaff] - [#13291]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) -- Upgrade python-telegram-bot to 10.0.1 ([@fabaff] - [#13294]) ([telegram_bot docs]) -- Upgrade python-forecastio to 1.4.0 ([@cgtobi] - [#13282]) ([weather.darksky docs]) -- Delete .gitmodules ([@pvizeli] - [#13295]) -- Update to latest python-nest ([@cburgess] - [#12590]) ([nest docs]) -- Upgrade async_timeout to 2.0.1 ([@fabaff] - [#13290]) -- Add initial support fo HomematicIP components ([@mxworm] - [#12761]) ([homematicip docs]) ([sensor.homematicip docs]) (new-platform) -- Added Time based SMA to Filter Sensor ([@dgomes] - [#13104]) ([sensor.filter docs]) -- Support for security systems controlled by IFTTT ([@maxclaey] - [#12975]) ([alarm_control_panel.ifttt docs]) (new-platform) -- Add ecobee fan mode ([@uchagani] - [#12732]) ([ecobee docs]) ([climate.ecobee docs]) -- Zigbee fan ([@igorbernstein2] - [#12289]) ([zha docs]) ([fan.zha docs]) (new-platform) -- Update plex.py ([@chronm] - [#12157]) ([sensor.plex docs]) -- Support MQTT Lock discovery ([@molobrakos] - [#13303]) ([mqtt docs]) ([lock.mqtt docs]) -- Adding a discoverable Samsung Syncthru Printer sensor platform ([@nielstron] - [#13134]) ([sensor.syncthru docs]) (new-platform) -- Use hue/sat as internal light color interface ([@armills] - [#11288]) ([light docs]) -- Superfluous None ([@dgomes] - [#13326]) ([sensor.filter docs]) -- pytest 3.4.0 cache gitignore ([@OttoWinter] - [#13308]) -- Add trafikverket_weatherstation sensor platform ([@Qxlkdr] - [#12115]) ([sensor.trafikverket_weatherstation docs]) (new-platform) -- zha: catch the exception from bellows if a device isn't available. ([@perosb] - [#13314]) ([light.zha docs]) ([switch.zha docs]) -- Plex unavailable client cleanup ([@ryanm101] - [#13156]) ([media_player.plex docs]) -- Perform check_config service in current process ([@kellerza] - [#13017]) -- Added switch for DoorBird second relay ([@sjvc] - [#13339]) ([doorbird docs]) ([switch.doorbird docs]) -- Add min and max price as attribute for Tibber sensor ([@danielhiversen] - [#13313]) ([sensor.tibber docs]) -- Bugfix: Zwave set_config_parameter failed when config list contained int ([@turbokongen] - [#13301]) ([zwave docs]) -- Update pyhomematic to 0.1.40 ([@danielperna84] - [#13354]) ([homematic docs]) -- Fix mysensors light turn on hs color ([@MartinHjelmare] - [#13349]) ([light.mysensors docs]) -- Add a polling fallback for Sonos ([@amelchio] - [#13310]) ([media_player.sonos docs]) -- Fix retrieval of track URL into medi_content_id ([@ih8gates] - [#13333]) ([media_player.spotify docs]) -- Homekit Bugfix: Use get instead of indexing ([@maxclaey] - [#13353]) ([homekit docs]) -- Configuration options for IFTTT alarm control panel ([@maxclaey] - [#13352]) ([alarm_control_panel.ifttt docs]) -- Add the possibility to filter on line(s) in Västtrafik Public Transport sensor ([@ThomasSvedberg] - [#13317]) ([sensor.vasttrafik docs]) -- Fix mysensors RGBW ([@MartinHjelmare] - [#13364]) ([light.mysensors docs]) -- Add watt to mysensors switch attributes ([@MartinHjelmare] - [#13370]) -- Mediaroom async ([@dgomes] - [#13321]) ([media_player.mediaroom docs]) -- Add language parameter to darksky sensor ([@cgtobi] - [#13297]) ([sensor.darksky docs]) ([weather.darksky docs]) -- Fixing Egardia 'home armed' state not shown correctly. ([@jeroenterheerdt] - [#13335]) -- Include all config flow translations with backend translations ([@balloob] - [#13394]) -- Avoid breaking change for BMW ConnectedDrive sensors in #12591 ([@gerard33] - [#13380]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) -- Support setting icon when configuring MQTT entity ([@molobrakos] - [#13304]) ([sensor.mqtt docs]) ([switch.mqtt docs]) -- Enhance mysensors sensor units and icons ([@MartinHjelmare] - [#13365]) ([sensor.mysensors docs]) -- Fix incorrect unit of measurement for precip_intensity. ([@cgtobi] - [#13415]) ([sensor.darksky docs]) (breaking change) -- Fix Sonos playing Sveriges Radio ([@amelchio] - [#13401]) ([media_player.sonos docs]) -- Cache LaMetric devices for offline use ([@PhilRW] - [#13379]) -- Enhance mysensors binary sensor device classes ([@MartinHjelmare] - [#13367]) ([binary_sensor.mysensors docs]) -- Switched to async/await. Bumped pyxeoma version ([@jeradM] - [#13404]) ([camera.xeoma docs]) -- Added default return value for HS_Color ([@cdce8p] - [#13395]) ([homekit docs]) -- Hue: Use the currently active color mode ([@armills] - [#13376]) ([light docs]) ([light.hue docs]) -- Cleanup homematicip_cloud ([@mxworm] - [#13356]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) -- Add send sticker service to telegram bot ([@syssi] - [#13387]) ([telegram_bot docs]) -- Google assistant sync ([@balloob] - [#13392]) ([cloud docs]) -- Fix current_cover_position ([@cdce8p] - [#13135]) ([cover.template docs]) -- Switched values to downcase. ([@diminishedprime] - [#13406]) -- Cast Integration Cleanup ([@OttoWinter] - [#13275]) ([media_player.cast docs]) -- Security fix & lock for HomeMatic ([@PH89] - [#11980]) ([homematic docs]) ([lock docs]) ([lock.homematic docs]) (breaking change) (new-platform) -- Log invalid templates in script delays ([@amelchio] - [#13423]) -- LimitlessLED hs_color fixes ([@amelchio] - [#13425]) ([light.limitlessled docs]) -- Hyperion: fix typo ([@a-andre] - [#13429]) ([light.hyperion docs]) -- HomeKit: Bugfix & improved logging ([@cdce8p] - [#13431]) ([homekit docs]) -- Improve detection of entity names in templates ([@amelchio] - [#13432]) -- Add version bump script ([@balloob] - [#13447]) -- Add extra check for ESSID field in case there's a wired connection ([@Zepheus] - [#13459]) ([device_tracker docs]) -- Fix encoding errors in mikrotik device tracker ([@bdurrer] - [#13464]) ([device_tracker docs]) -- Hue: Convert XY to HS color if HS not present ([@balloob] - [#13465]) ([light.hue docs]) -- Fix ID (fixes #13444) ([@fabaff] - [#13471]) ([media_player.mpchc docs]) -- Upgrade aiohue and fix race condition ([@balloob] - [#13475]) ([hue docs]) -- version should contain just 'b' not 'beta' ([@balloob] - [#13476]) -- Fix Google Calendar caching when offline ([@PhilRW] - [#13375]) ([calendar.google docs]) -- Homekit: Bugfix Thermostat Fahrenheit support ([@cdce8p] - [#13477]) ([homekit docs]) -- Validate basic customize entries ([@cdce8p] - [#13478]) -- Homekit: Fix security systems ([@cdce8p] - [#13499]) ([homekit docs]) -- python-miio version bumped (Closes: 13449) ([@syssi] - [#13511]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([sensor.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Fix mysensors light supported features ([@MartinHjelmare] - [#13512]) ([light.mysensors docs]) -- Fix Insteon Leak Sensor ([@teharris1] - [#13515]) -- HomeKit: Fix setting light brightness ([@cdce8p] - [#13518]) ([homekit docs]) -- Construct version pinned ([@syssi] - [#13528]) ([climate.eq3btsmart docs]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([sensor.eddystone_temperature docs]) ([sensor.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) -- Don't add Falsy items to list #13412 ([@kellerza] - [#13536]) -- Check whitelisted paths #13107 ([@kellerza] - [#13154]) -- Fix FLUX_LED error when no color is set ([@dramamoose] - [#13527]) ([light.flux_led docs]) - -[#11288]: https://github.com/home-assistant/home-assistant/pull/11288 -[#11980]: https://github.com/home-assistant/home-assistant/pull/11980 -[#12115]: https://github.com/home-assistant/home-assistant/pull/12115 -[#12157]: https://github.com/home-assistant/home-assistant/pull/12157 -[#12289]: https://github.com/home-assistant/home-assistant/pull/12289 -[#12417]: https://github.com/home-assistant/home-assistant/pull/12417 -[#12590]: https://github.com/home-assistant/home-assistant/pull/12590 -[#12591]: https://github.com/home-assistant/home-assistant/pull/12591 -[#12652]: https://github.com/home-assistant/home-assistant/pull/12652 -[#12692]: https://github.com/home-assistant/home-assistant/pull/12692 -[#12732]: https://github.com/home-assistant/home-assistant/pull/12732 -[#12761]: https://github.com/home-assistant/home-assistant/pull/12761 -[#12862]: https://github.com/home-assistant/home-assistant/pull/12862 -[#12883]: https://github.com/home-assistant/home-assistant/pull/12883 -[#12917]: https://github.com/home-assistant/home-assistant/pull/12917 -[#12926]: https://github.com/home-assistant/home-assistant/pull/12926 -[#12961]: https://github.com/home-assistant/home-assistant/pull/12961 -[#12967]: https://github.com/home-assistant/home-assistant/pull/12967 -[#12975]: https://github.com/home-assistant/home-assistant/pull/12975 -[#12997]: https://github.com/home-assistant/home-assistant/pull/12997 -[#13000]: https://github.com/home-assistant/home-assistant/pull/13000 -[#13007]: https://github.com/home-assistant/home-assistant/pull/13007 -[#13011]: https://github.com/home-assistant/home-assistant/pull/13011 -[#13017]: https://github.com/home-assistant/home-assistant/pull/13017 -[#13018]: https://github.com/home-assistant/home-assistant/pull/13018 -[#13026]: https://github.com/home-assistant/home-assistant/pull/13026 -[#13029]: https://github.com/home-assistant/home-assistant/pull/13029 -[#13040]: https://github.com/home-assistant/home-assistant/pull/13040 -[#13041]: https://github.com/home-assistant/home-assistant/pull/13041 -[#13043]: https://github.com/home-assistant/home-assistant/pull/13043 -[#13051]: https://github.com/home-assistant/home-assistant/pull/13051 -[#13055]: https://github.com/home-assistant/home-assistant/pull/13055 -[#13066]: https://github.com/home-assistant/home-assistant/pull/13066 -[#13072]: https://github.com/home-assistant/home-assistant/pull/13072 -[#13082]: https://github.com/home-assistant/home-assistant/pull/13082 -[#13084]: https://github.com/home-assistant/home-assistant/pull/13084 -[#13086]: https://github.com/home-assistant/home-assistant/pull/13086 -[#13088]: https://github.com/home-assistant/home-assistant/pull/13088 -[#13093]: https://github.com/home-assistant/home-assistant/pull/13093 -[#13104]: https://github.com/home-assistant/home-assistant/pull/13104 -[#13119]: https://github.com/home-assistant/home-assistant/pull/13119 -[#13120]: https://github.com/home-assistant/home-assistant/pull/13120 -[#13121]: https://github.com/home-assistant/home-assistant/pull/13121 -[#13123]: https://github.com/home-assistant/home-assistant/pull/13123 -[#13124]: https://github.com/home-assistant/home-assistant/pull/13124 -[#13126]: https://github.com/home-assistant/home-assistant/pull/13126 -[#13127]: https://github.com/home-assistant/home-assistant/pull/13127 -[#13128]: https://github.com/home-assistant/home-assistant/pull/13128 -[#13134]: https://github.com/home-assistant/home-assistant/pull/13134 -[#13135]: https://github.com/home-assistant/home-assistant/pull/13135 -[#13137]: https://github.com/home-assistant/home-assistant/pull/13137 -[#13141]: https://github.com/home-assistant/home-assistant/pull/13141 -[#13148]: https://github.com/home-assistant/home-assistant/pull/13148 -[#13150]: https://github.com/home-assistant/home-assistant/pull/13150 -[#13151]: https://github.com/home-assistant/home-assistant/pull/13151 -[#13154]: https://github.com/home-assistant/home-assistant/pull/13154 -[#13156]: https://github.com/home-assistant/home-assistant/pull/13156 -[#13163]: https://github.com/home-assistant/home-assistant/pull/13163 -[#13164]: https://github.com/home-assistant/home-assistant/pull/13164 -[#13167]: https://github.com/home-assistant/home-assistant/pull/13167 -[#13169]: https://github.com/home-assistant/home-assistant/pull/13169 -[#13171]: https://github.com/home-assistant/home-assistant/pull/13171 -[#13173]: https://github.com/home-assistant/home-assistant/pull/13173 -[#13181]: https://github.com/home-assistant/home-assistant/pull/13181 -[#13184]: https://github.com/home-assistant/home-assistant/pull/13184 -[#13190]: https://github.com/home-assistant/home-assistant/pull/13190 -[#13193]: https://github.com/home-assistant/home-assistant/pull/13193 -[#13194]: https://github.com/home-assistant/home-assistant/pull/13194 -[#13204]: https://github.com/home-assistant/home-assistant/pull/13204 -[#13214]: https://github.com/home-assistant/home-assistant/pull/13214 -[#13215]: https://github.com/home-assistant/home-assistant/pull/13215 -[#13218]: https://github.com/home-assistant/home-assistant/pull/13218 -[#13221]: https://github.com/home-assistant/home-assistant/pull/13221 -[#13222]: https://github.com/home-assistant/home-assistant/pull/13222 -[#13225]: https://github.com/home-assistant/home-assistant/pull/13225 -[#13229]: https://github.com/home-assistant/home-assistant/pull/13229 -[#13230]: https://github.com/home-assistant/home-assistant/pull/13230 -[#13231]: https://github.com/home-assistant/home-assistant/pull/13231 -[#13232]: https://github.com/home-assistant/home-assistant/pull/13232 -[#13236]: https://github.com/home-assistant/home-assistant/pull/13236 -[#13240]: https://github.com/home-assistant/home-assistant/pull/13240 -[#13244]: https://github.com/home-assistant/home-assistant/pull/13244 -[#13246]: https://github.com/home-assistant/home-assistant/pull/13246 -[#13253]: https://github.com/home-assistant/home-assistant/pull/13253 -[#13264]: https://github.com/home-assistant/home-assistant/pull/13264 -[#13266]: https://github.com/home-assistant/home-assistant/pull/13266 -[#13272]: https://github.com/home-assistant/home-assistant/pull/13272 -[#13275]: https://github.com/home-assistant/home-assistant/pull/13275 -[#13281]: https://github.com/home-assistant/home-assistant/pull/13281 -[#13282]: https://github.com/home-assistant/home-assistant/pull/13282 -[#13283]: https://github.com/home-assistant/home-assistant/pull/13283 -[#13285]: https://github.com/home-assistant/home-assistant/pull/13285 -[#13287]: https://github.com/home-assistant/home-assistant/pull/13287 -[#13288]: https://github.com/home-assistant/home-assistant/pull/13288 -[#13289]: https://github.com/home-assistant/home-assistant/pull/13289 -[#13290]: https://github.com/home-assistant/home-assistant/pull/13290 -[#13291]: https://github.com/home-assistant/home-assistant/pull/13291 -[#13292]: https://github.com/home-assistant/home-assistant/pull/13292 -[#13294]: https://github.com/home-assistant/home-assistant/pull/13294 -[#13295]: https://github.com/home-assistant/home-assistant/pull/13295 -[#13297]: https://github.com/home-assistant/home-assistant/pull/13297 -[#13301]: https://github.com/home-assistant/home-assistant/pull/13301 -[#13303]: https://github.com/home-assistant/home-assistant/pull/13303 -[#13304]: https://github.com/home-assistant/home-assistant/pull/13304 -[#13308]: https://github.com/home-assistant/home-assistant/pull/13308 -[#13310]: https://github.com/home-assistant/home-assistant/pull/13310 -[#13313]: https://github.com/home-assistant/home-assistant/pull/13313 -[#13314]: https://github.com/home-assistant/home-assistant/pull/13314 -[#13317]: https://github.com/home-assistant/home-assistant/pull/13317 -[#13321]: https://github.com/home-assistant/home-assistant/pull/13321 -[#13326]: https://github.com/home-assistant/home-assistant/pull/13326 -[#13333]: https://github.com/home-assistant/home-assistant/pull/13333 -[#13335]: https://github.com/home-assistant/home-assistant/pull/13335 -[#13339]: https://github.com/home-assistant/home-assistant/pull/13339 -[#13349]: https://github.com/home-assistant/home-assistant/pull/13349 -[#13352]: https://github.com/home-assistant/home-assistant/pull/13352 -[#13353]: https://github.com/home-assistant/home-assistant/pull/13353 -[#13354]: https://github.com/home-assistant/home-assistant/pull/13354 -[#13356]: https://github.com/home-assistant/home-assistant/pull/13356 -[#13364]: https://github.com/home-assistant/home-assistant/pull/13364 -[#13365]: https://github.com/home-assistant/home-assistant/pull/13365 -[#13367]: https://github.com/home-assistant/home-assistant/pull/13367 -[#13370]: https://github.com/home-assistant/home-assistant/pull/13370 -[#13375]: https://github.com/home-assistant/home-assistant/pull/13375 -[#13376]: https://github.com/home-assistant/home-assistant/pull/13376 -[#13379]: https://github.com/home-assistant/home-assistant/pull/13379 -[#13380]: https://github.com/home-assistant/home-assistant/pull/13380 -[#13387]: https://github.com/home-assistant/home-assistant/pull/13387 -[#13392]: https://github.com/home-assistant/home-assistant/pull/13392 -[#13394]: https://github.com/home-assistant/home-assistant/pull/13394 -[#13395]: https://github.com/home-assistant/home-assistant/pull/13395 -[#13401]: https://github.com/home-assistant/home-assistant/pull/13401 -[#13404]: https://github.com/home-assistant/home-assistant/pull/13404 -[#13406]: https://github.com/home-assistant/home-assistant/pull/13406 -[#13415]: https://github.com/home-assistant/home-assistant/pull/13415 -[#13423]: https://github.com/home-assistant/home-assistant/pull/13423 -[#13425]: https://github.com/home-assistant/home-assistant/pull/13425 -[#13429]: https://github.com/home-assistant/home-assistant/pull/13429 -[#13431]: https://github.com/home-assistant/home-assistant/pull/13431 -[#13432]: https://github.com/home-assistant/home-assistant/pull/13432 -[#13447]: https://github.com/home-assistant/home-assistant/pull/13447 -[#13459]: https://github.com/home-assistant/home-assistant/pull/13459 -[#13464]: https://github.com/home-assistant/home-assistant/pull/13464 -[#13465]: https://github.com/home-assistant/home-assistant/pull/13465 -[#13471]: https://github.com/home-assistant/home-assistant/pull/13471 -[#13475]: https://github.com/home-assistant/home-assistant/pull/13475 -[#13476]: https://github.com/home-assistant/home-assistant/pull/13476 -[#13477]: https://github.com/home-assistant/home-assistant/pull/13477 -[#13478]: https://github.com/home-assistant/home-assistant/pull/13478 -[#13499]: https://github.com/home-assistant/home-assistant/pull/13499 -[#13511]: https://github.com/home-assistant/home-assistant/pull/13511 -[#13512]: https://github.com/home-assistant/home-assistant/pull/13512 -[#13515]: https://github.com/home-assistant/home-assistant/pull/13515 -[#13518]: https://github.com/home-assistant/home-assistant/pull/13518 -[#13527]: https://github.com/home-assistant/home-assistant/pull/13527 -[#13528]: https://github.com/home-assistant/home-assistant/pull/13528 -[#13536]: https://github.com/home-assistant/home-assistant/pull/13536 -[@BioSehnsucht]: https://github.com/BioSehnsucht -[@DanNixon]: https://github.com/DanNixon -[@FezVrasta]: https://github.com/FezVrasta -[@JensTimmerman]: https://github.com/JensTimmerman -[@Juggels]: https://github.com/Juggels -[@Kane610]: https://github.com/Kane610 -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@OttoWinter]: https://github.com/OttoWinter -[@PH89]: https://github.com/PH89 -[@PhilRW]: https://github.com/PhilRW -[@Qxlkdr]: https://github.com/Qxlkdr -[@ThomasSvedberg]: https://github.com/ThomasSvedberg -[@Zepheus]: https://github.com/Zepheus -[@a-andre]: https://github.com/a-andre -[@a-wolter]: https://github.com/a-wolter -[@amelchio]: https://github.com/amelchio -[@andreipop2005]: https://github.com/andreipop2005 -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@balloob]: https://github.com/balloob -[@bdurrer]: https://github.com/bdurrer -[@c727]: https://github.com/c727 -[@cburgess]: https://github.com/cburgess -[@cdce8p]: https://github.com/cdce8p -[@cgtobi]: https://github.com/cgtobi -[@chronm]: https://github.com/chronm -[@clementhk]: https://github.com/clementhk -[@danielhiversen]: https://github.com/danielhiversen -[@danielperna84]: https://github.com/danielperna84 -[@dgomes]: https://github.com/dgomes -[@diminishedprime]: https://github.com/diminishedprime -[@dramamoose]: https://github.com/dramamoose -[@engrbm87]: https://github.com/engrbm87 -[@fabaff]: https://github.com/fabaff -[@gerard33]: https://github.com/gerard33 -[@hthiery]: https://github.com/hthiery -[@igorbernstein2]: https://github.com/igorbernstein2 -[@ih8gates]: https://github.com/ih8gates -[@jcconnell]: https://github.com/jcconnell -[@jeradM]: https://github.com/jeradM -[@jeroenterheerdt]: https://github.com/jeroenterheerdt -[@jesserockz]: https://github.com/jesserockz -[@karlkar]: https://github.com/karlkar -[@kellerza]: https://github.com/kellerza -[@kuzin2006]: https://github.com/kuzin2006 -[@maddox]: https://github.com/maddox -[@markperdue]: https://github.com/markperdue -[@maxclaey]: https://github.com/maxclaey -[@maxlaverse]: https://github.com/maxlaverse -[@molobrakos]: https://github.com/molobrakos -[@mxworm]: https://github.com/mxworm -[@nielstron]: https://github.com/nielstron -[@perosb]: https://github.com/perosb -[@pvizeli]: https://github.com/pvizeli -[@reefab]: https://github.com/reefab -[@ryanm101]: https://github.com/ryanm101 -[@rytilahti]: https://github.com/rytilahti -[@scop]: https://github.com/scop -[@sjvc]: https://github.com/sjvc -[@smurfix]: https://github.com/smurfix -[@syssi]: https://github.com/syssi -[@teharris1]: https://github.com/teharris1 -[@the-glu]: https://github.com/the-glu -[@thrawnarn]: https://github.com/thrawnarn -[@timmo001]: https://github.com/timmo001 -[@turbokongen]: https://github.com/turbokongen -[@uchagani]: https://github.com/uchagani -[@vandenberghev]: https://github.com/vandenberghev -[alarm_control_panel.ifttt docs]: /components/alarm_control_panel.ifttt/ -[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/ -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[binary_sensor.mysensors docs]: /components/binary_sensor.mysensors/ -[binary_sensor.trend docs]: /components/binary_sensor.trend/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[bmw_connected_drive docs]: /components/bmw_connected_drive/ -[calendar.caldav docs]: /components/calendar.caldav/ -[calendar.google docs]: /components/calendar.google/ -[calendar.todoist docs]: /components/calendar.todoist/ -[camera.onvif docs]: /components/camera.onvif/ -[camera.xeoma docs]: /components/camera.xeoma/ -[climate.ecobee docs]: /components/climate.ecobee/ -[climate.eq3btsmart docs]: /components/climate.eq3btsmart/ -[climate.sensibo docs]: /components/climate.sensibo/ -[cloud docs]: /components/cloud/ -[cover.group docs]: /components/cover.group/ -[cover.template docs]: /components/cover.template/ -[deconz docs]: /components/deconz/ -[device_tracker docs]: /components/device_tracker/ -[doorbird docs]: /components/doorbird/ -[downloader docs]: /components/downloader/ -[ecobee docs]: /components/ecobee/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[fan.zha docs]: /components/fan.zha/ -[hassio docs]: /components/hassio/ -[history docs]: /components/history/ -[homekit docs]: /components/homekit/ -[homematic docs]: /components/homematic/ -[homematicip docs]: /components/homematicip/ -[homematicip_cloud docs]: /components/homematicip_cloud/ -[http docs]: /components/http/ -[hue docs]: /components/hue/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[light docs]: /components/light/ -[light.deconz docs]: /components/light.deconz/ -[light.flux_led docs]: /components/light.flux_led/ -[light.hue docs]: /components/light.hue/ -[light.hyperion docs]: /components/light.hyperion/ -[light.iglo docs]: /components/light.iglo/ -[light.limitlessled docs]: /components/light.limitlessled/ -[light.mysensors docs]: /components/light.mysensors/ -[light.mystrom docs]: /components/light.mystrom/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.zha docs]: /components/light.zha/ -[lock docs]: /components/lock/ -[lock.bmw_connected_drive docs]: /components/lock.bmw_connected_drive/ -[lock.homematic docs]: /components/lock.homematic/ -[lock.mqtt docs]: /components/lock.mqtt/ -[logbook docs]: /components/logbook/ -[media_extractor docs]: /components/media_extractor/ -[media_player.bluesound docs]: /components/media_player.bluesound/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.channels docs]: /components/media_player.channels/ -[media_player.kodi docs]: /components/media_player.kodi/ -[@NovapaX]: https://github.com/NovapaX -[media_player.mediaroom docs]: /components/media_player.mediaroom/ -[media_player.mpchc docs]: /components/media_player.mpchc/ -[media_player.philips_js docs]: /components/media_player.philips_js/ -[media_player.plex docs]: /components/media_player.plex/ -[media_player.songpal docs]: /components/media_player.songpal/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.spotify docs]: /components/media_player.spotify/ -[mqtt docs]: /components/mqtt/ -[mysensors docs]: /components/mysensors/ -[nest docs]: /components/nest/ -[notify docs]: /components/notify/ -[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ -[scene.deconz docs]: /components/scene.deconz/ -[sensor.bmw_connected_drive docs]: /components/sensor.bmw_connected_drive/ -[sensor.crimereports docs]: /components/sensor.crimereports/ -[sensor.darksky docs]: /components/sensor.darksky/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.deutsche_bahn docs]: /components/sensor.deutsche_bahn/ -[sensor.eddystone_temperature docs]: /components/sensor.eddystone_temperature/ -[sensor.filter docs]: /components/sensor.filter/ -[sensor.foobot docs]: /components/sensor.foobot/ -[sensor.glances docs]: /components/sensor.glances/ -[sensor.homematic docs]: /components/sensor.homematic/ -[sensor.homematicip docs]: /components/sensor.homematicip/ -[sensor.homematicip_cloud docs]: /components/sensor.homematicip_cloud/ -[sensor.lacrosse docs]: /components/sensor.lacrosse/ -[sensor.mqtt docs]: /components/sensor.mqtt/ -[sensor.mysensors docs]: /components/sensor.mysensors/ -[sensor.plex docs]: /components/sensor.plex/ -[sensor.smappee docs]: /components/sensor.smappee/ -[sensor.spotcrime docs]: /components/sensor.spotcrime/ -[sensor.sql docs]: /components/sensor.sql/ -[sensor.syncthru docs]: /components/sensor.syncthru/ -[sensor.systemmonitor docs]: /components/sensor.systemmonitor/ -[sensor.template docs]: /components/sensor.template/ -[sensor.tibber docs]: /components/sensor.tibber/ -[sensor.trafikverket_weatherstation docs]: /components/sensor.trafikverket_weatherstation/ -[sensor.vasttrafik docs]: /components/sensor.vasttrafik/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sensor.xiaomi_miio docs]: /components/sensor.xiaomi_miio/ -[spc docs]: /components/spc/ -[switch.doorbird docs]: /components/switch.doorbird/ -[switch.edimax docs]: /components/switch.edimax/ -[switch.mqtt docs]: /components/switch.mqtt/ -[switch.vesync docs]: /components/switch.vesync/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[switch.zha docs]: /components/switch.zha/ -[telegram_bot docs]: /components/telegram_bot/ -[upcloud docs]: /components/upcloud/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[weather.darksky docs]: /components/weather.darksky/ -[websocket_api docs]: /components/websocket_api/ -[zeroconf docs]: /components/zeroconf/ -[zha docs]: /components/zha/ -[zwave docs]: /components/zwave/ -[#13574]: https://github.com/home-assistant/home-assistant/pull/13574 -[#13587]: https://github.com/home-assistant/home-assistant/pull/13587 -[#13617]: https://github.com/home-assistant/home-assistant/pull/13617 -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@armills]: https://github.com/armills -[@cdce8p]: https://github.com/cdce8p -[homekit docs]: /components/homekit/ -[light.mqtt_json docs]: /components/light.mqtt_json/ -[sensor.mysensors docs]: /components/sensor.mysensors/ diff --git a/source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown b/source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown deleted file mode 100644 index 045f30c196..0000000000 --- a/source/_posts/2018-04-12-ubiquiti-and-home-assistant.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: post -title: "Home Assistant 🤝 Ubiquiti Networks" -description: "Ubiquiti Networks has hired Paulus Schoutsen, the founder of Home Assistant, to support Home Assistant’s goals of making Home Assistant easier to configure for users, improving the integration with device makers and making it easier to create, maintain and evolve integrations." -date: 2018-04-12 00:01:00 -date_formatted: "April 12, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Announcements -og_image: /images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg ---- - -TL;DR: Ubiquiti Networks has hired Paulus Schoutsen, the founder of Home Assistant, to support Home Assistant’s goals of making Home Assistant easier to configure for users, improving the integration with device makers and making it easier to create, maintain and evolve integrations. - -Home Assistant is an open source project that thus far has been run by people in their spare time. In the last four and a half years it has grown from just me building a tiny framework with a handful of integrations to having our own operating system, over a 1000 integrations, superb performance, contributions by over 900 people, and our main Docker image has been pulled over 10 million times! - -Observing this growth and passionate community, Ubiquiti Networks approached us. - -Ubiquiti Networks currently focuses on 3 main technologies: high-capacity distributed Internet access, unified information technology, and next-gen consumer electronics for home and personal use. Their enterprise quality combined with their affordability has made them very popular among our users. They also share another passion of ours: trying to avoid clouds. Take for example their [UniFi Video] IP surveillance solution: it is a completely local hosted solution. - -They recognize great potential in Home Assistant becoming the defacto platform for the home: fast, open source and local. They also want to deepen the integration of Ubiquiti Networks products in Home Assistant and may even support hosting Home Assistant instances on their hardware. - -And so we have agreed that I (Paulus, founder Home Assistant) will join Ubiquiti Networks as a full time employee to focus on growing Home Assistant. I’ll now be able to devote my full energy to making Home Assistant easier to configure for users, improving the integration with device makers and making it easier to create, maintain and evolve integrations. - -Ubiquiti Networks will not acquire any ownership of Home Assistant. We will remain an independent and open source project, just improving faster than ever with the support of Ubiquiti Networks. - -I’m very excited about this opportunity and 2018 will be a really really great year for Home Assistant! - -

    - Photo of Paulus, the founder of Home Assistant, standing in front of a Ubiquiti Networks logo wearing a Home Assistant t-shirt. - Paulus Schoutsen, founder of Home Assistant, at the NYC Ubiquiti office. -

    - -[UniFi Video]: https://www.ubnt.com/unifi-video/unifi-video-camera-g3/#unifi-video-camera-hybrid-technology diff --git a/source/_posts/2018-04-14-release-67.markdown b/source/_posts/2018-04-14-release-67.markdown deleted file mode 100644 index 843cce88e6..0000000000 --- a/source/_posts/2018-04-14-release-67.markdown +++ /dev/null @@ -1,446 +0,0 @@ ---- -layout: post -title: "0.67: Mastodon, Tahoma switches, Nanoleaf Aurora Light Panels" -description: "Security fixes and performance improvements 😅" -date: 2018-04-13 00:01:00 -date_formatted: "April 13, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-04-0.67/components.png ---- - - - -Release 0.67 is here! In case you missed [the announcement from yesterday][ann-ubiquiti], Ubiquiti is paying me to write these release notes. Ooooooh yeah. With more time on my hands I'm going to be focusing on major improvements that we have been postponing for a while, first up will be a user system. - -This release includes a security fix. The error log was accessible via the API without requiring authentication in previous releases. Although not a leak on it's own, combined with a faulty component that would log sensitive information to the error log could lead to that being exposed (we don't know of any component that does this). Thanks to [Matt Hamilton](https://github.com/Eriner) for disclosing this issue to us. - -## {% linkable_title New Platforms %} - -- Adds folder_watcher component ([@robmarkcole] - [#12918]) ([folder_watcher docs]) (new-platform) -- Add FreeDNS component ([@bdurrer] - [#13526]) ([freedns docs]) (new-platform) -- Google Maps location sharing device tracker ([@michaelarnauts] - [#12301]) ([device_tracker.google_maps docs]) (new-platform) -- Added Waze travel time sensor ([@Myrddyn1] - [#12387]) ([sensor.waze_travel_time docs]) (new-platform) -- Added switch component to Amcrest IP Camera. ([@adpriebe] - [#12992]) ([amcrest docs]) ([switch.amcrest docs]) (new-platform) -- Add mastodon ([@fabaff] - [#13441]) ([notify docs]) (new-platform) -- Tahoma switches ([@ikucuze] - [#13636]) ([tahoma docs]) ([switch.tahoma docs]) (new-platform) -- Add support for Nanoleaf Aurora Light Panels ([@Oro] - [#13456]) ([light.nanoleaf_aurora docs]) (new-platform) - -## {% linkable_title Release 0.67.1 - April 17 %} - -- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) -- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) -- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) -- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) -- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) -- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) -- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) -- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) -- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) -- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) -- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) -- Update pyfido to 2.1.1 ([@titilambert] - [#13947]) ([sensor.fido docs]) -- Bumped pypollencom to 1.1.2 ([@bachya] - [#13959]) ([sensor.pollen docs]) -- Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch docs]) - -## {% linkable_title If you need help... %} - -...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. - -## {% linkable_title Reporting Issues %} - -Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. - - -## {% linkable_title Breaking Changes %} - -- Updates default Pilight port number ([@frenck] - [#13419]) ([pilight docs]) (breaking change) -- Update to new "b2vapi" of BMW ConnectedDrive ([@ChristianKuehnel] - [#13305]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (breaking change) -- Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) ([mercedesme docs]) ([binary_sensor.mercedesme docs]) ([sensor.mercedesme docs]) (breaking change) -- Channel up and down for webostv ([@stephanerosi] - [#13624]) ([media_player.webostv docs]) (breaking change) -- Add media type separation for video/movie ([@tadly] - [#13612]) (breaking change) -- Added ENTITY_ID_FORMAT import and set entity_id in __init__ ([@timmo001] - [#13642]) ([switch.broadlink docs]) (breaking change) - -## {% linkable_title All changes %} - -- Updates default Pilight port number ([@frenck] - [#13419]) ([pilight docs]) (breaking change) -- Upgrade mypy to 0.580 ([@fabaff] - [#13420]) -- Update to new "b2vapi" of BMW ConnectedDrive ([@ChristianKuehnel] - [#13305]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (breaking change) -- Add code owner for Manual Alarm with MQTT Control ([@colinodell] - [#13438]) -- QNAP updates ([@colinodell] - [#13435]) ([sensor.qnap docs]) -- Xiaomi MiIO Fan: Xiaomi Air Humidifier integration ([@syssi] - [#12627]) ([fan.xiaomi_miio docs]) -- Bump songpal version, fixes lots of issues mentioned in #13022 ([@rytilahti] - [#13440]) ([media_player.songpal docs]) -- Removed the google home warning from emulated_hue ([@mf-social] - [#13436]) -- Fixing odometer to display km ([@alandtse] - [#13427]) ([sensor.tesla docs]) -- Upgrade keyring to 12.0.0 and keyrings.alt to 3.0 ([@fabaff] - [#13452]) -- Upgrade aiohttp to 3.1.0 ([@fabaff] - [#13451]) -- Qwikswitch async & updates ([@kellerza] - [#12641]) ([qwikswitch docs]) ([light.qwikswitch docs]) ([switch.qwikswitch docs]) -- Make Telnet Switch value template optional ([@DanNixon] - [#13433]) ([switch.telnet docs]) -- Update yeelightsunflower to 0.0.10 ([@lindsaymarkward] - [#13448]) -- Add more info to issue template ([@c727] - [#12955]) -- [RFC] Update issue template ([@amelchio] - [#12989]) -- Update total_connect_client to 0.17 for Honeywell L5100-WiFi Support ([@phileaton] - [#13473]) ([alarm_control_panel.totalconnect docs]) -- Upgrade python-mystrom to 0.4.2 ([@fabaff] - [#13485]) ([light.mystrom docs]) ([switch.mystrom docs]) -- New service added to control the power mode of the yeelight ([@syssi] - [#13267]) ([light.yeelight docs]) -- Upgrade slacker to 0.9.65 ([@fabaff] - [#13496]) ([notify docs]) -- Adds template function state_attr to get attribute from a state ([@Nossnevs] - [#13378]) -- Upgrade aiohttp to 3.1.1 ([@fabaff] - [#13510]) -- Update tradfri v5 ([@lwis] - [#11187]) ([tradfri docs]) ([light.tradfri docs]) ([sensor.tradfri docs]) -- Fix typos and update link (fixes #13520) ([@fabaff] - [#13529]) -- Tradfri - unique_id's and color_temp support for rgb-bulbs ([@NovapaX] - [#13531]) ([light.tradfri docs]) -- Qwikswitch async refactor & sensor ([@kellerza] - [#13509]) ([qwikswitch docs]) ([light.qwikswitch docs]) ([sensor.qwikswitch docs]) ([switch.qwikswitch docs]) (new-platform) -- Adds folder_watcher component ([@robmarkcole] - [#12918]) ([folder_watcher docs]) (new-platform) -- Update rflink to 0.0.37 ([@olskar] - [#12603]) ([rflink docs]) -- Added file path validity checks to file sensor ([@FrederikBolding] - [#12505]) ([sensor.file docs]) -- Allow for overriding the DoorBird push notification URL in configuration ([@Klikini] - [#13268]) ([doorbird docs]) -- Convert Hue to always use config entries ([@balloob] - [#13034]) ([hue docs]) -- Implement thermostat support for Alexa ([@trisk] - [#13340]) ([alexa docs]) -- deCONZ config entry ([@Kane610] - [#13402]) ([deconz docs]) -- Remove andrey-git from requirements monitoring ([@andrey-git] - [#13547]) -- Fix BMW device tracker toggling state if vehicle tracking is disabled ([@ChristianKuehnel] - [#12999]) ([device_tracker.bmw_connected_drive docs]) -- Xiaomi MiIO Switch: Support for the Xiaomi Chuangmi Plug V3 ([@syssi] - [#13271]) ([switch.xiaomi_miio docs]) -- Add FreeDNS component ([@bdurrer] - [#13526]) ([freedns docs]) (new-platform) -- Update pylint to 1.8.3 ([@scop] - [#13544]) -- Google Maps location sharing device tracker ([@michaelarnauts] - [#12301]) ([device_tracker.google_maps docs]) (new-platform) -- Check_config: Handle numbers correctly when printing config ([@hAmpzter] - [#13377]) -- Add support for Canary Flex ([@snjoetw] - [#13280]) ([canary docs]) ([sensor.canary docs]) -- Fixes #12758. Try other cameras even if one fails to initialize ([@PhracturedBlue] - [#13276]) ([amcrest docs]) -- Added HassOpenCover and HassCloseCover intents ([@tschmidty69] - [#13372]) ([conversation docs]) ([cover docs]) -- rfxtrx lib 0.22.0 ([@Danielhiversen] - [#13576]) ([rfxtrx docs]) -- xiaomi lib upgrade ([@Danielhiversen] - [#13577]) ([xiaomi_aqara docs]) -- Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) ([mercedesme docs]) ([binary_sensor.mercedesme docs]) ([sensor.mercedesme docs]) (breaking change) -- Added Waze travel time sensor ([@Myrddyn1] - [#12387]) ([sensor.waze_travel_time docs]) (new-platform) -- Added switch component to Amcrest IP Camera. ([@adpriebe] - [#12992]) ([amcrest docs]) ([switch.amcrest docs]) (new-platform) -- Upgrade pyhydroquebec 2.2.1 ([@titilambert] - [#13586]) ([sensor.hydroquebec docs]) -- Add mastodon ([@fabaff] - [#13441]) ([notify docs]) (new-platform) -- Added support for requesting RSSI values from Bluetooth devices ([@FrederikBolding] - [#12458]) ([device_tracker.bluetooth_tracker docs]) -- Fix mysensors update callback ([@MartinHjelmare] - [#13602]) ([mysensors docs]) -- Broadlink ([@Danielhiversen] - [#13585]) ([sensor.broadlink docs]) ([switch.broadlink docs]) -- Fix IMAP email message_data ([@zhaokoh] - [#13606]) ([sensor.imap_email_content docs]) -- Re-add group polling as a fallback for observation ([@lwis] - [#13613]) ([light.tradfri docs]) -- Unflake folder watcher test ([@balloob] - [#13569]) -- Make mysensors updates and platform setup async ([@MartinHjelmare] - [#13603]) -- Use 0/1 for raspberry pi cover GPIO writes rather than true/false ([@fezfox] - [#13610]) ([cover.rpi_gpio docs]) -- Fix Hue error logging ([@balloob] - [#13616]) ([hue docs]) -- Bugfix for tradfri to correctly execute Command. ([@lwis] - [#13618]) ([light.tradfri docs]) -- Hue mireds value is actually 153 not 154 ([@Skaronator] - [#13601]) ([light docs]) -- changed PyTado version ([@wmalgadey] - [#13626]) ([tado docs]) -- Upgrade py-cpuinfo to 4.0.0 ([@fabaff] - [#13629]) ([sensor.cpuspeed docs]) -- Add Switzerland ([@fabaff] - [#13630]) ([binary_sensor.workday docs]) -- Xiaomi Mi WiFi Repeater 2 integration as device tracker ([@syssi] - [#13521]) -- Upgrade youtube_dl to 2018.04.03 ([@fabaff] - [#13647]) ([media_extractor docs]) -- Update plex.py ([@chronm] - [#13659]) ([sensor.plex docs]) -- Always enable config entries & remove config_entry_example ([@balloob] - [#13663]) ([config docs]) -- Add missing service docs for hs_color ([@armills] - [#13667]) -- Add regex functions as templating helpers ([@mountainsandcode] - [#13631]) -- Channel up and down for webostv ([@stephanerosi] - [#13624]) ([media_player.webostv docs]) (breaking change) -- Added headers configuration variable to notify.rest component ([@5LICK] - [#13674]) ([notify docs]) -- Spelling fixes ([@scop] - [#13681]) ([device_tracker docs]) ([smappee docs]) ([alarm_control_panel.ifttt docs]) ([climate.nest docs]) ([remote.xiaomi_miio docs]) -- Xiaomi MiIO Light: White Philips Candle Light support ([@syssi] - [#13682]) ([light.xiaomi_miio docs]) -- Bugfixes HomeKit covers, lights ([@cdce8p] - [#13689]) ([homekit docs]) -- Minor style changes, cleanup ([@cdce8p] - [#13654]) ([homekit docs]) -- Bugfix: Zwave Print_node to logfile instead of console ([@turbokongen] - [#13302]) ([zwave docs]) -- Update HAP-python to 1.1.8 ([@cdce8p] - [#13563]) ([homekit docs]) -- Update ha-philips_js to 0.0.3 ([@danielperna84] - [#13702]) ([media_player.philips_js docs]) -- Coverage & Codeowners ([@kellerza] - [#13700]) -- Bump insteonplm to 0.8.6 to fix sensor message handling ([@teharris1] - [#13691]) ([insteon_plm docs]) -- Fix asuswrt ap mode failure ([@shuaiger] - [#13693]) ([device_tracker docs]) -- Support color temperature in Homekit ([@morberg] - [#13658]) ([homekit docs]) -- Remove unused CONF_WATCHERS ([@robmarkcole] - [#13678]) ([folder_watcher docs]) -- Add media type separation for video/movie ([@tadly] - [#13612]) (breaking change) -- Adding configration to disable ip address as a requirement Fixes: #13399 ([@PlanetJ] - [#13692]) ([device_tracker docs]) -- Tahoma switches ([@ikucuze] - [#13636]) ([tahoma docs]) ([switch.tahoma docs]) (new-platform) -- Send XY color for non-osram hue bulbs ([@armills] - [#13665]) ([light.hue docs]) -- Update AbodePy version to 0.12.3 ([@MisterWil] - [#13709]) ([abode docs]) -- Enable autodiscovery for mqtt cameras ([@jmtatsch] - [#13697]) ([mqtt docs]) ([camera.mqtt docs]) -- Added ENTITY_ID_FORMAT import and set entity_id in __init__ ([@timmo001] - [#13642]) ([switch.broadlink docs]) (breaking change) -- Fix #10175 ([@pschmitt] - [#13713]) ([media_player.liveboxplaytv docs]) -- Add support for Nanoleaf Aurora Light Panels ([@Oro] - [#13456]) ([light.nanoleaf_aurora docs]) (new-platform) -- Added gogogate2 cover ([@dlbroadfoot] - [#13467]) -- Remove vendor lookup for mac addresses ([@balloob] - [#13788]) ([device_tracker docs]) -- iglo hs color fix ([@armills] - [#13808]) ([light.iglo docs]) -- Fix too green color conversion ([@amelchio] - [#13828]) -- Rename from aurora light to nanoleaf_aurora ([@Oro] - [#13831]) ([light.nanoleaf_aurora docs]) -- Channel up/down for LiveTV and next/previous for other apps ([@stephanerosi] - [#13829]) ([media_player.webostv docs]) -- Add authentication to error log endpoint ([@balloob] - [#13836]) ([api docs]) - -[#11187]: https://github.com/home-assistant/home-assistant/pull/11187 -[#12301]: https://github.com/home-assistant/home-assistant/pull/12301 -[#12387]: https://github.com/home-assistant/home-assistant/pull/12387 -[#12458]: https://github.com/home-assistant/home-assistant/pull/12458 -[#12505]: https://github.com/home-assistant/home-assistant/pull/12505 -[#12603]: https://github.com/home-assistant/home-assistant/pull/12603 -[#12627]: https://github.com/home-assistant/home-assistant/pull/12627 -[#12641]: https://github.com/home-assistant/home-assistant/pull/12641 -[#12918]: https://github.com/home-assistant/home-assistant/pull/12918 -[#12955]: https://github.com/home-assistant/home-assistant/pull/12955 -[#12989]: https://github.com/home-assistant/home-assistant/pull/12989 -[#12992]: https://github.com/home-assistant/home-assistant/pull/12992 -[#12999]: https://github.com/home-assistant/home-assistant/pull/12999 -[#13034]: https://github.com/home-assistant/home-assistant/pull/13034 -[#13267]: https://github.com/home-assistant/home-assistant/pull/13267 -[#13268]: https://github.com/home-assistant/home-assistant/pull/13268 -[#13271]: https://github.com/home-assistant/home-assistant/pull/13271 -[#13276]: https://github.com/home-assistant/home-assistant/pull/13276 -[#13280]: https://github.com/home-assistant/home-assistant/pull/13280 -[#13302]: https://github.com/home-assistant/home-assistant/pull/13302 -[#13305]: https://github.com/home-assistant/home-assistant/pull/13305 -[#13340]: https://github.com/home-assistant/home-assistant/pull/13340 -[#13372]: https://github.com/home-assistant/home-assistant/pull/13372 -[#13377]: https://github.com/home-assistant/home-assistant/pull/13377 -[#13378]: https://github.com/home-assistant/home-assistant/pull/13378 -[#13402]: https://github.com/home-assistant/home-assistant/pull/13402 -[#13419]: https://github.com/home-assistant/home-assistant/pull/13419 -[#13420]: https://github.com/home-assistant/home-assistant/pull/13420 -[#13427]: https://github.com/home-assistant/home-assistant/pull/13427 -[#13433]: https://github.com/home-assistant/home-assistant/pull/13433 -[#13435]: https://github.com/home-assistant/home-assistant/pull/13435 -[#13436]: https://github.com/home-assistant/home-assistant/pull/13436 -[#13438]: https://github.com/home-assistant/home-assistant/pull/13438 -[#13440]: https://github.com/home-assistant/home-assistant/pull/13440 -[#13441]: https://github.com/home-assistant/home-assistant/pull/13441 -[#13448]: https://github.com/home-assistant/home-assistant/pull/13448 -[#13451]: https://github.com/home-assistant/home-assistant/pull/13451 -[#13452]: https://github.com/home-assistant/home-assistant/pull/13452 -[#13456]: https://github.com/home-assistant/home-assistant/pull/13456 -[#13467]: https://github.com/home-assistant/home-assistant/pull/13467 -[#13473]: https://github.com/home-assistant/home-assistant/pull/13473 -[#13485]: https://github.com/home-assistant/home-assistant/pull/13485 -[#13496]: https://github.com/home-assistant/home-assistant/pull/13496 -[#13509]: https://github.com/home-assistant/home-assistant/pull/13509 -[#13510]: https://github.com/home-assistant/home-assistant/pull/13510 -[#13521]: https://github.com/home-assistant/home-assistant/pull/13521 -[#13526]: https://github.com/home-assistant/home-assistant/pull/13526 -[#13529]: https://github.com/home-assistant/home-assistant/pull/13529 -[#13531]: https://github.com/home-assistant/home-assistant/pull/13531 -[#13538]: https://github.com/home-assistant/home-assistant/pull/13538 -[#13544]: https://github.com/home-assistant/home-assistant/pull/13544 -[#13547]: https://github.com/home-assistant/home-assistant/pull/13547 -[#13563]: https://github.com/home-assistant/home-assistant/pull/13563 -[#13569]: https://github.com/home-assistant/home-assistant/pull/13569 -[#13576]: https://github.com/home-assistant/home-assistant/pull/13576 -[#13577]: https://github.com/home-assistant/home-assistant/pull/13577 -[#13585]: https://github.com/home-assistant/home-assistant/pull/13585 -[#13586]: https://github.com/home-assistant/home-assistant/pull/13586 -[#13601]: https://github.com/home-assistant/home-assistant/pull/13601 -[#13602]: https://github.com/home-assistant/home-assistant/pull/13602 -[#13603]: https://github.com/home-assistant/home-assistant/pull/13603 -[#13606]: https://github.com/home-assistant/home-assistant/pull/13606 -[#13610]: https://github.com/home-assistant/home-assistant/pull/13610 -[#13612]: https://github.com/home-assistant/home-assistant/pull/13612 -[#13613]: https://github.com/home-assistant/home-assistant/pull/13613 -[#13616]: https://github.com/home-assistant/home-assistant/pull/13616 -[#13618]: https://github.com/home-assistant/home-assistant/pull/13618 -[#13624]: https://github.com/home-assistant/home-assistant/pull/13624 -[#13626]: https://github.com/home-assistant/home-assistant/pull/13626 -[#13629]: https://github.com/home-assistant/home-assistant/pull/13629 -[#13630]: https://github.com/home-assistant/home-assistant/pull/13630 -[#13631]: https://github.com/home-assistant/home-assistant/pull/13631 -[#13636]: https://github.com/home-assistant/home-assistant/pull/13636 -[#13642]: https://github.com/home-assistant/home-assistant/pull/13642 -[#13647]: https://github.com/home-assistant/home-assistant/pull/13647 -[#13654]: https://github.com/home-assistant/home-assistant/pull/13654 -[#13658]: https://github.com/home-assistant/home-assistant/pull/13658 -[#13659]: https://github.com/home-assistant/home-assistant/pull/13659 -[#13663]: https://github.com/home-assistant/home-assistant/pull/13663 -[#13665]: https://github.com/home-assistant/home-assistant/pull/13665 -[#13667]: https://github.com/home-assistant/home-assistant/pull/13667 -[#13674]: https://github.com/home-assistant/home-assistant/pull/13674 -[#13678]: https://github.com/home-assistant/home-assistant/pull/13678 -[#13681]: https://github.com/home-assistant/home-assistant/pull/13681 -[#13682]: https://github.com/home-assistant/home-assistant/pull/13682 -[#13689]: https://github.com/home-assistant/home-assistant/pull/13689 -[#13691]: https://github.com/home-assistant/home-assistant/pull/13691 -[#13692]: https://github.com/home-assistant/home-assistant/pull/13692 -[#13693]: https://github.com/home-assistant/home-assistant/pull/13693 -[#13697]: https://github.com/home-assistant/home-assistant/pull/13697 -[#13700]: https://github.com/home-assistant/home-assistant/pull/13700 -[#13702]: https://github.com/home-assistant/home-assistant/pull/13702 -[#13709]: https://github.com/home-assistant/home-assistant/pull/13709 -[#13713]: https://github.com/home-assistant/home-assistant/pull/13713 -[#13788]: https://github.com/home-assistant/home-assistant/pull/13788 -[#13808]: https://github.com/home-assistant/home-assistant/pull/13808 -[#13828]: https://github.com/home-assistant/home-assistant/pull/13828 -[#13829]: https://github.com/home-assistant/home-assistant/pull/13829 -[#13831]: https://github.com/home-assistant/home-assistant/pull/13831 -[#13836]: https://github.com/home-assistant/home-assistant/pull/13836 -[@5LICK]: https://github.com/5LICK -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@DanNixon]: https://github.com/DanNixon -[@Danielhiversen]: https://github.com/Danielhiversen -[@FrederikBolding]: https://github.com/FrederikBolding -[@Kane610]: https://github.com/Kane610 -[@Klikini]: https://github.com/Klikini -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@MisterWil]: https://github.com/MisterWil -[@Myrddyn1]: https://github.com/Myrddyn1 -[@Nossnevs]: https://github.com/Nossnevs -[@NovapaX]: https://github.com/NovapaX -[@Oro]: https://github.com/Oro -[@PhracturedBlue]: https://github.com/PhracturedBlue -[@PlanetJ]: https://github.com/PlanetJ -[@ReneNulschDE]: https://github.com/ReneNulschDE -[@Skaronator]: https://github.com/Skaronator -[@adpriebe]: https://github.com/adpriebe -[@alandtse]: https://github.com/alandtse -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@armills]: https://github.com/armills -[@balloob]: https://github.com/balloob -[@bdurrer]: https://github.com/bdurrer -[@c727]: https://github.com/c727 -[@cdce8p]: https://github.com/cdce8p -[@chronm]: https://github.com/chronm -[@colinodell]: https://github.com/colinodell -[@danielperna84]: https://github.com/danielperna84 -[@dlbroadfoot]: https://github.com/dlbroadfoot -[@fabaff]: https://github.com/fabaff -[@fezfox]: https://github.com/fezfox -[@frenck]: https://github.com/frenck -[@hAmpzter]: https://github.com/hAmpzter -[@ikucuze]: https://github.com/ikucuze -[@jmtatsch]: https://github.com/jmtatsch -[@kellerza]: https://github.com/kellerza -[@lindsaymarkward]: https://github.com/lindsaymarkward -[@lwis]: https://github.com/lwis -[@mf-social]: https://github.com/mf-social -[@michaelarnauts]: https://github.com/michaelarnauts -[@morberg]: https://github.com/morberg -[@mountainsandcode]: https://github.com/mountainsandcode -[@olskar]: https://github.com/olskar -[@phileaton]: https://github.com/phileaton -[@pschmitt]: https://github.com/pschmitt -[@robmarkcole]: https://github.com/robmarkcole -[@rytilahti]: https://github.com/rytilahti -[@scop]: https://github.com/scop -[@shuaiger]: https://github.com/shuaiger -[@snjoetw]: https://github.com/snjoetw -[@stephanerosi]: https://github.com/stephanerosi -[@syssi]: https://github.com/syssi -[@tadly]: https://github.com/tadly -[@teharris1]: https://github.com/teharris1 -[@timmo001]: https://github.com/timmo001 -[@titilambert]: https://github.com/titilambert -[@trisk]: https://github.com/trisk -[@tschmidty69]: https://github.com/tschmidty69 -[@turbokongen]: https://github.com/turbokongen -[@wmalgadey]: https://github.com/wmalgadey -[@zhaokoh]: https://github.com/zhaokoh -[abode docs]: /components/abode/ -[alarm_control_panel.ifttt docs]: /components/alarm_control_panel.ifttt/ -[alarm_control_panel.totalconnect docs]: /components/alarm_control_panel.totalconnect/ -[alexa docs]: /components/alexa/ -[amcrest docs]: /components/amcrest/ -[api docs]: /components/api/ -[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/ -[binary_sensor.mercedesme docs]: /components/binary_sensor.mercedesme/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[bmw_connected_drive docs]: /components/bmw_connected_drive/ -[camera.mqtt docs]: /components/camera.mqtt/ -[canary docs]: /components/canary/ -[climate.nest docs]: /components/climate.nest/ -[config docs]: /components/config/ -[config_entry_example docs]: /components/config_entry_example/ -[conversation docs]: /components/conversation/ -[cover docs]: /components/cover/ -[cover.rpi_gpio docs]: /components/cover.rpi_gpio/ -[deconz docs]: /components/deconz/ -[device_tracker docs]: /components/device_tracker/ -[device_tracker.bluetooth_tracker docs]: /components/device_tracker.bluetooth_tracker/ -[device_tracker.bmw_connected_drive docs]: /components/device_tracker.bmw_connected_drive/ -[device_tracker.google_maps docs]: /components/device_tracker.google_maps/ -[doorbird docs]: /components/doorbird/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[folder_watcher docs]: /components/folder_watcher/ -[freedns docs]: /components/freedns/ -[homekit docs]: /components/homekit/ -[hue docs]: /components/hue/ -[insteon_plm docs]: /components/insteon_plm/ -[light docs]: /components/light/ -[light.nanoleaf_aurora docs]: /components/light.nanoleaf_aurora/ -[light.hue docs]: /components/light.hue/ -[light.iglo docs]: /components/light.iglo/ -[light.mystrom docs]: /components/light.mystrom/ -[light.nanoleaf_aurora docs]: /components/light.nanoleaf_aurora/ -[light.qwikswitch docs]: /components/light.qwikswitch/ -[light.tradfri docs]: /components/light.tradfri/ -[light.xiaomi_miio docs]: /components/light.xiaomi_miio/ -[light.yeelight docs]: /components/light.yeelight/ -[lock.bmw_connected_drive docs]: /components/lock.bmw_connected_drive/ -[media_extractor docs]: /components/media_extractor/ -[media_player.liveboxplaytv docs]: /components/media_player.liveboxplaytv/ -[media_player.philips_js docs]: /components/media_player.philips_js/ -[media_player.songpal docs]: /components/media_player.songpal/ -[media_player.webostv docs]: /components/media_player.webostv/ -[mercedesme docs]: /components/mercedesme/ -[mqtt docs]: /components/mqtt/ -[mysensors docs]: /components/mysensors/ -[notify docs]: /components/notify/ -[pilight docs]: /components/pilight/ -[qwikswitch docs]: /components/qwikswitch/ -[remote.xiaomi_miio docs]: /components/remote.xiaomi_miio/ -[rflink docs]: /components/rflink/ -[rfxtrx docs]: /components/rfxtrx/ -[sensor.bmw_connected_drive docs]: /components/sensor.bmw_connected_drive/ -[sensor.broadlink docs]: /components/sensor.broadlink/ -[sensor.canary docs]: /components/sensor.canary/ -[sensor.cpuspeed docs]: /components/sensor.cpuspeed/ -[sensor.file docs]: /components/sensor.file/ -[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ -[sensor.imap_email_content docs]: /components/sensor.imap_email_content/ -[sensor.mercedesme docs]: /components/sensor.mercedesme/ -[sensor.plex docs]: /components/sensor.plex/ -[sensor.qnap docs]: /components/sensor.qnap/ -[sensor.qwikswitch docs]: /components/sensor.qwikswitch/ -[sensor.tesla docs]: /components/sensor.tesla/ -[sensor.tradfri docs]: /components/sensor.tradfri/ -[sensor.waze_travel_time docs]: /components/sensor.waze_travel_time/ -[smappee docs]: /components/smappee/ -[switch.amcrest docs]: /components/switch.amcrest/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.mystrom docs]: /components/switch.mystrom/ -[switch.qwikswitch docs]: /components/switch.qwikswitch/ -[switch.tahoma docs]: /components/switch.tahoma/ -[switch.telnet docs]: /components/switch.telnet/ -[switch.xiaomi_miio docs]: /components/switch.xiaomi_miio/ -[tado docs]: /components/tado/ -[tahoma docs]: /components/tahoma/ -[tradfri docs]: /components/tradfri/ -[folder_watcher docs]: /components/folder_watcher/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[zwave docs]: /components/zwave/ -[ann-ubiquiti]: /blog/2018/04/12/ubiquiti-and-home-assistant/ -[#13728]: https://github.com/home-assistant/home-assistant/pull/13728 -[#13741]: https://github.com/home-assistant/home-assistant/pull/13741 -[#13862]: https://github.com/home-assistant/home-assistant/pull/13862 -[#13884]: https://github.com/home-assistant/home-assistant/pull/13884 -[#13887]: https://github.com/home-assistant/home-assistant/pull/13887 -[#13889]: https://github.com/home-assistant/home-assistant/pull/13889 -[#13906]: https://github.com/home-assistant/home-assistant/pull/13906 -[#13908]: https://github.com/home-assistant/home-assistant/pull/13908 -[#13920]: https://github.com/home-assistant/home-assistant/pull/13920 -[#13940]: https://github.com/home-assistant/home-assistant/pull/13940 -[#13946]: https://github.com/home-assistant/home-assistant/pull/13946 -[#13947]: https://github.com/home-assistant/home-assistant/pull/13947 -[#13959]: https://github.com/home-assistant/home-assistant/pull/13959 -[@Danielhiversen]: https://github.com/Danielhiversen -[@Kane610]: https://github.com/Kane610 -[@aav7fl]: https://github.com/aav7fl -[@bachya]: https://github.com/bachya -[@balloob]: https://github.com/balloob -[@dlbroadfoot]: https://github.com/dlbroadfoot -[@kellerza]: https://github.com/kellerza -[@syssi]: https://github.com/syssi -[@titilambert]: https://github.com/titilambert -[climate.honeywell docs]: /components/climate.honeywell/ -[config docs]: /components/config/ -[device_tracker docs]: /components/device_tracker/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[qwikswitch docs]: /components/qwikswitch/ -[sensor.fido docs]: /components/sensor.fido/ -[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ -[sensor.pollen docs]: /components/sensor.pollen/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.vesync docs]: /components/switch.vesync/ diff --git a/source/_posts/2018-04-22-hassio-2018.markdown b/source/_posts/2018-04-22-hassio-2018.markdown deleted file mode 100644 index 9050605355..0000000000 --- a/source/_posts/2018-04-22-hassio-2018.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: post -title: "Hass.io 2018" -description: "We want to clarify how Hass.io relates to Home Assistant and talk about the roadmap for Hass.io in 2018." -date: 2018-04-22 00:00:00 -date_formatted: "April 22, 2018" -author: Pascal Vizeli -author_twitter: pvizeli -comments: true -categories: Announcements -og_image: /images/blog/2018-04-hassio-2018/blogpost.png ---- - -We noticed that there is some confusion in the community about how Hass.io relates to Home Assistant and what impact the upcoming Hass.io changes will have. We will try to clarify it all in this blog post. - -## {% linkable_title What is Hass.io %} -Hass.io is a complete solution to run Home Assistant, by the authors of Home Assistant. The goal of Hass.io is to provide an easy to use and secure system, entirely managed from within the Home Assistant user interface. - -Hass.io is a complete solution, which means that it comes with its own highly secure and optimized operating system, a supervisor application to maintain and configure that system, and of course Home Assistant itself. - -When using Hass.io, you'll see a new Hass.io panel inside the Home Assistant UI. From here users can configure the system and install Home Assistant updates with a simple click of a button. Users are also able to make snapshots of their system, making it easy to migrate all their configuration to a new system or restore their system to a previous state. - -We wanted to be able to provide the convenience of seamless updates and configuration via the UI to other applications too, and so we introduced Hass.io add-ons. Any application can be packaged up as a Hass.io add-on, allowing any user to install and manage it easily. Since the introduction, we’ve seen an amazing growth in users sharing their add-ons with the community. It’s now possible to install an adblocker for your network, an MQTT broker or Tor with a single click. - -## {% linkable_title Upcoming changes to Hass.io %} -We’ve introduced Hass.io [last July]. Since then, we’ve noticed some room for improvements in making Hass.io easier to use, lighter to maintain and easier to integrate with other host systems. - -Note that the descriptions of upcoming improvements can get quite technical. Feel free to jump to [the conclusion]. - -### {% linkable_title Automatic add-on configuration %} -Home Assistant has recently introduced configuration entries. We’re going to hook into this new functionality and allow add-ons to configure their related integration in Home Assistant automatically. For example, if a user installs the MQTT broker add-on, we will automatically set up Home Assistant to connect to it. - -### {% linkable_title Host management %} -To control the host system, we currently use a custom service called HostControl. This allows the user to manage here host and restart/shutdown the computer from within Home Assistant. Instead of relying on our own system, we’re going to change to use D-Bus. D-Bus is a standardized mechanism for services and applications to communicate. Using a defined standard means that all parts of the host can now be remotely configured: sound, network, etc, etc. We will be extending the Hass.io panel in Home Assistant with controls to configure various parts of the host. - -### {% linkable_title Hass.io OS %} -Hass.io is currently using a forked version of ResinOS as our operating system. ResinOS has been designed to run a minimal environment for Docker, simple over the air updates and connect to the ResinIO cloud. Our fork removed the ResinIO logic. Over time, ResinOS has been evolving but not in a direction that is aligned with our goals, resulting in the maintenance of our fork to take up a lot of time. - -The ResinOS build system is based on the Yocto Project. This is a very powerful system, but also requires specific support for each hardware platform need to be specifically added and maintained (like each version of Raspberry Pi), which caused long build and development times for Hass.io. - -All these factors made us decide to build our own, custom, operating system. We’re obviously not starting from scratch, but instead, are basing it off [Buildroot] as the foundation and use [RAUC] for over the air updates. - -Some things that the new operating system will be able to do: -- Easier to add support for new hardware. -- Updating will be atomic and has a Fail-safe. If a system fails to boot after an OS upgrade, it will fallback, by booting the previous working version. -- Updates are required to be securely signed by the Home Assistant team, adding a whole new level of security. -- Compressing the root file system, making it faster on SD cards and slow IO-Interfaces. -- Compressing parts of the memory so that we can store more information. - -## {% linkable_title What Hass.io users should do to prepare for these updates %} -At this moment: Nothing. - -The new Hass.io supervisor still supports the old ResinOS builds (our official downloads for Raspberry Pi and Intel NUC) and generic Linux installations. If you’re using a generic Linux installation on SUSE Linux or Ubuntu, you have to update your local AppArmor profile if you want to use the new functionality (instructions will be provided upon release). - -Once our new installation images with HassioOS are released, you have to reflash your device once. You can do this without losing any configuration by using our Snapshot feature: -- Create a snapshot of your current installation and download it to your PC. -- Flash the SD card with the new Hass.io OS image. -- Restore your snapshot. -- Enjoy a new and improved Hass.io - -[last July]: https://www.home-assistant.io/blog/2017/07/25/introducing-hassio/ -[the conclusion]: #what-hassio-users-should-do-to-prepare-for-these-updates -[Buildroot]: https://buildroot.org/ -[RAUC]: https://www.rauc.io/ diff --git a/source/_posts/2018-04-24-launch-google-assistant-support.markdown b/source/_posts/2018-04-24-launch-google-assistant-support.markdown deleted file mode 100644 index 7a263f9682..0000000000 --- a/source/_posts/2018-04-24-launch-google-assistant-support.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: post -title: "Our Google Assistant skill is live!" -description: "The Google Assistant integration for Home Assistant Cloud is now available to all." -date: 2018-04-24 00:01:00 -date_formatted: "April 24, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Announcement -og_image: /images/blog/2018-04-google-assistant/google-assistant-home-assistant.png ---- - -

    - Home Assistant logo and the Works with the Google Assistant badge -

    - -Guess what? Yep, our Google Assistant Smart Home skill is live! It's a mouthful but it means that you can now control your Home Assistant devices via any Google Assistant enabled device by simply saying things like "Ok Google, turn on the lights". - -To get started: - - - [Enable Home Assistant Cloud](/cloud/#enabling-the-cloud) - - Install our skill for Google Assistant. As of this writing, the link is not live yet: you can find it by opening the Google Home app -> Home Control, tap on the blue + at the bottom right and find Hass.io in the list. - - Optional: [Tweak the devices](/cloud/google_assistant/) that are getting exposed to Google Assistant. - -Things to note: - - - The skill is called Hass.io, but will work with normal Home Assistant too. The name was necessary to avoid confusion between Home Assistant, Google Assistant and Google Home. - - Works with Home Assistant 0.65.6 or later. - - All message handling is done local and is [open source](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/google_assistant/trait.py). - - If you have an Android device with Google Assistant, you can control your devices too. - - Home Assistant 0.68 will introduce a button to the Cloud config panel to trigger a sync of available devices. - -Home Assistant Cloud is still in open beta and free to use. Open beta period has been extended to June 1. Many thanks to [Quadflight] for providing the Raspberry Pis that Google used for physical testing and thanks to [Arsaboo] for helping with testing. - -
    - -
    - -[Quadflight]: https://github.com/quadflight -[Arsaboo]: https://github.com/arsaboo diff --git a/source/_posts/2018-04-26-developer-site.markdown b/source/_posts/2018-04-26-developer-site.markdown deleted file mode 100644 index 2895a83338..0000000000 --- a/source/_posts/2018-04-26-developer-site.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: post -title: "New developer website" -description: "We have extracted the developer section of our website into its own website." -date: 2018-04-26 00:01:00 -date_formatted: "April 26, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Announcement -og_image: /images/blog/2018-04-developer-website/screenshot.png ---- - -When we launched the website in December 2014, we've only had a handful of components and usage instructions. Since then the website has grown to over a 1000 pages touching a wide range of topics. The growth, while great, also has put a lot of strain on how the docs are organised. One of the places that was especially suffering under the growth was the developer section. It was living under a single top menu item and had to contain everything in a single sidebar. - -To fix this, we're releasing a new website: [developers.home-assistant.io](https://developers.home-assistant.io). The website is aimed at people that are developing Home Assistant. It will contain resources how to setup your development environment, how to fix bugs, help with translations or improve the frontend. The main website will now solely be focused on Home Assistant users. - -Go check it out and let us know what you think: [developers.home-assistant.io](https://developers.home-assistant.io). - -Screenshot of the developer website diff --git a/source/_posts/2018-04-27-release-68.markdown b/source/_posts/2018-04-27-release-68.markdown deleted file mode 100644 index 924546f866..0000000000 --- a/source/_posts/2018-04-27-release-68.markdown +++ /dev/null @@ -1,533 +0,0 @@ ---- -layout: post -title: "0.68: HomeKit control, Eufy, FritzBox, SigFox sensors" -description: "Enjoy your weekend with this brand new release of Home Assistant." -date: 2018-04-27 00:01:00 -date_formatted: "April 27, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-04-0.68/components.png ---- - - - -Weekend is around the corner and that means that it's time for the next release of Home Assistant. 0.68 brings a ton of great goodies and bug fixes. - -One of the coolest features this release is by [@mjg59]: you are now able to **control** HomeKit devices. Previously, it was possible to control Home Assistant from iOS devices using the HomeKit protocol. With this release, Home Assistant is able to become the controller and use HomeKit to control lights and switches directly. Since HomeKit is vendor agnostic, it means that any HomeKit light or switch will now be compatible with Home Assistant. Very cool. - -Another cool new platform, also by [@mjg59], is support for Eufy devices. Eufy is the Home Automation brand of Anker and they have been producing reasonably priced devices which can now be controlled by Home Assistant too. Thanks for all your contributions [@mjg59] ❤️. - -## {% linkable_title New Platforms %} - -- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform) -- Add support for controlling homekit lights and switches ([@mjg59] - [#13346]) ([homekit_controller docs]) ([light.homekit_controller docs]) (new-platform) -- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform) -- Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform) -- Add AVM fritzbox smarthome component ([@hthiery] - [#10688]) ([fritzbox docs]) ([climate.fritzbox docs]) ([switch.fritzbox docs]) (new-platform) -- Adds SigFox sensor ([@robmarkcole] - [#13731]) ([sensor.sigfox docs]) (new-platform) -- Add blackbird media player component ([@koolsb] - [#13549]) ([media_player.blackbird docs]) (new-platform) -- Add support for Sensirion SHT31 temperature/humidity sensor ([@viorels] - [#12952]) ([sensor.sht31 docs]) (new-platform) -- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform) - -## {% linkable_title New Features %} - -- Support binary_sensor and device_tracker in HomeKit ([@Yonsm] - [#13735]) ([homekit docs]) (new-feature) -- Add Homekit locks support ([@philk] - [#13625]) ([homekit docs]) (new-feature) -- Support CO2/PM2.5/Light sensors in HomeKit ([@Yonsm] - [#13804]) ([homekit docs]) (new-feature) -- Support Garage Doors in HomeKit ([@marthoc] - [#13796]) ([homekit docs]) (new-feature) -- Support basic covers with open/close/stop services HomeKit ([@nickw444] - [#13819]) ([homekit docs]) (new-feature) - -## {% linkable_title Release 0.68.1 - April 30 %} - -- Fix color setting of tplink lights ([@amelchio] - [#14108]) ([light.tplink docs]) -- Improve precision of Hue color state ([@amelchio] - [#14113]) ([light.hue docs]) -- Revert Hue color state to be xy-based ([@amelchio] - [#14154]) -- Fix Python 3.6 compatibility for HomeKit controller ([@mjg59] - [#14160]) ([homekit_controller docs]) -- Added CONF_IP_ADDRESS to HomeKit ([@cdce8p] - [#14163]) ([homekit docs]) -- Do not sync entities with an empty name ([@balloob] - [#14181]) ([google_assistant docs]) -- Improve chromecast disconnection logic ([@OttoWinter] - [#14190]) ([media_player.cast docs]) -- Fix poorly formatted automations ([@balloob] - [#14196]) -- Disable eliqonline requirement ([@balloob] - [#14156]) - -## {% 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 %} - -- Icons! Material Design Icons has implemented some naming guidelines and this caused 9 icons to change names, 3 of which are home automation icons: `roomba` -> `robot-vacuum`, `nest-protect` -> `smoke-detector`, `nest-thermostat` -> `thermostat` ([see all changes](http://templarian.com/2018/04/18/material-design-icons-v2-3-54/)). -- Support for multiple MAX!Cube LAN gateways caused a slight change to the configuration schema. Make sure to check the docs for the new one. ([@syssi] - [#13517]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) (breaking change) -- Ebox sensor platform has been disabled because the dependency was not compatible with pip 10. ([@balloob] - [#14003]) ([sensor.ebox docs]) (breaking change) - -## {% linkable_title Beta Fixes %} - -- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform) -- Order the output of the automation editor ([@balloob] - [#14019]) ([config docs]) (beta fix) -- HomeKit Alarm Control Panel Code Exception Fix ([@schmittx] - [#14025]) ([homekit docs]) (beta fix) -- Revert cast platform polling mode ([@OttoWinter] - [#14027]) ([media_player.cast docs]) (beta fix) -- Handle HomeKit configuration failure more cleanly ([@mjg59] - [#14041]) ([homekit_controller docs]) (beta fix) -- Update device classes for contact sensor HomeKit ([@marthoc] - [#14051]) ([homekit docs]) (beta fix) -- Upgrade broadlink lib ([@Danielhiversen] - [#14074]) ([sensor.broadlink docs]) ([switch.broadlink docs]) (beta fix) -- Fix timezone issue when calculating min/max values in tibber #14009 ([@Danielhiversen] - [#14080]) ([sensor.tibber docs]) (beta fix) -- Updated list of AWS regions for Amazon Polly ([@GotoCode] - [#14097]) ([tts docs]) (beta fix) -- Change Eufy brightness handling ([@mjg59] - [#14111]) (beta fix) - -## {% linkable_title All changes %} - -- Update Homekit to 1.1.9 ([@cdce8p] - [#13716]) ([homekit docs]) -- Update docstrings ([@fabaff] - [#13720]) ([ihc docs]) ([cover.opengarage docs]) ([cover.tahoma docs]) ([sensor.trafikverket_weatherstation docs]) -- Add option to ignore availability in google calendar events ([@cgtobi] - [#13714]) ([calendar.google docs]) -- Allow use of date_string in service call ([@Juggels] - [#13256]) ([calendar.todoist docs]) -- Add timeout / debounce (for brightness and others) ([@cdce8p] - [#13534]) ([homekit docs]) -- added support for smappee water sensors ([@hmn] - [#12831]) ([smappee docs]) ([sensor.smappee docs]) -- Initialise filter_sensor with historical values ([@dgomes] - [#13075]) ([sensor.filter docs]) -- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) (beta fix) -- Bluesound bugfix status 595 and await ([@thrawnarn] - [#13727]) ([media_player.bluesound docs]) -- Upgrade aiohttp to 3.1.2 ([@fabaff] - [#13732]) -- Upgrade sqlalchemy to 1.2.6 ([@fabaff] - [#13733]) ([sensor.sql docs]) -- Brightness conversion for Abode dimmers ([@shred86] - [#13711]) ([light.abode docs]) -- Update CODEOWNERS (sensor.filter, sensor.upnp) ([@dgomes] - [#13736]) -- Reset permission ([@fabaff] - [#13743]) ([light.abode docs]) -- Throw an error when invalid device_mode is given ([@dangyuluo] - [#13739]) -- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) (beta fix) -- Upgrade netdisco to 1.3.1 ([@fabaff] - [#13744]) -- Add MQTT Sensor unique_id ([@OttoWinter] - [#13318]) ([sensor.mqtt docs]) -- Prepare entity component for config entries ([@balloob] - [#13730]) -- Check valid file on get_size ([@robmarkcole] - [#13756]) ([sensor.folder docs]) -- Qwikswitch sensors ([@kellerza] - [#13622]) ([sensor.qwikswitch docs]) -- Device type mapping introduced to avoid breaking change ([@syssi] - [#13765]) ([light.yeelight docs]) -- Only flag media position as updated when it really has ([@molobrakos] - [#13737]) ([media_player.squeezebox docs]) -- Support binary_sensor and device_tracker in HomeKit ([@Yonsm] - [#13735]) ([homekit docs]) (new-feature) -- Use config entry to setup platforms ([@balloob] - [#13752]) ([hue docs]) ([light docs]) ([light.hue docs]) -- Add Homekit locks support ([@philk] - [#13625]) ([homekit docs]) (new-feature) -- Snips sounds ([@tschmidty69] - [#13746]) ([snips docs]) -- Add missing DISCHRG state ([@swilson] - [#13787]) ([sensor.nut docs]) -- Improved upgradeability HomeKit security_systems ([@cdce8p] - [#13783]) ([homekit docs]) -- Qwikswitch Entity Register ([@kellerza] - [#13791]) ([qwikswitch docs]) ([sensor.qwikswitch docs]) -- Updated beacontools to 1.2.3 ([@citruz] - [#13792]) ([sensor.eddystone_temperature docs]) -- script/lazytox: Ensure Flake8 passes for tests/ ([@kellerza] - [#13794]) -- Fix bad metrics format for short metrics. ([@michaelkuty] - [#13778]) ([prometheus docs]) -- Update bellows to 0.5.2 ([@rcloran] - [#13800]) ([zha docs]) -- device_tracker.ubus: Handle devices not running DHCP ([@tobygray] - [#13579]) ([device_tracker docs]) -- Update yweather.py ([@wiuwiu] - [#13802]) ([weather.yweather docs]) -- Tibber lib update ([@Danielhiversen] - [#13811]) ([sensor.tibber docs]) -- Update pyhomematic to 0.1.41 ([@danielperna84] - [#13814]) ([homematic docs]) -- Add support for Eufy bulbs and switches ([@mjg59] - [#13773]) ([eufy docs]) ([light.eufy docs]) ([switch.eufy docs]) (new-platform) -- Homekit refactor ([@cdce8p] - [#13707]) ([homekit docs]) -- HomeKit type_cover fix ([@cdce8p] - [#13832]) ([homekit docs]) -- Allow platform unloading ([@balloob] - [#13784]) ([hue docs]) ([light docs]) -- Support CO2/PM2.5/Light sensors in HomeKit ([@Yonsm] - [#13804]) ([homekit docs]) (new-feature) -- Clicksend: Added support for multiple recipients ([@xTCx] - [#13812]) ([notify docs]) -- Support Garage Doors in HomeKit ([@marthoc] - [#13796]) ([homekit docs]) (new-feature) -- Abode better events ([@MisterWil] - [#13809]) ([abode docs]) -- UPnP async ([@dgomes] - [#13666]) ([upnp docs]) ([sensor.upnp docs]) -- Update example (fixes #13834) ([@fabaff] - [#13839]) -- Add support for deCONZ daylight sensor ([@marthoc] - [#13479]) ([deconz docs]) ([sensor.deconz docs]) -- initialize queue before filtering ([@dgomes] - [#13842]) ([sensor.filter docs]) -- Extract config flow to own module ([@balloob] - [#13840]) ([config docs]) ([deconz docs]) ([hue docs]) -- Add support for controlling homekit lights and switches ([@mjg59] - [#13346]) ([homekit_controller docs]) ([light.homekit_controller docs]) (new-platform) -- bump python-ecobee-api version to 0.0.18 ([@geekofweek] - [#13854]) ([ecobee docs]) -- Adding USCIS component ([@meauxt] - [#13764]) ([sensor.uscis docs]) (new-platform) -- Avoid unnecessary cast state updates ([@dersger] - [#13770]) ([media_player.cast docs]) -- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix) -- Update yweather.py ([@TheCellMC] - [#13851]) ([weather.yweather docs]) -- add support for Kodi discovery ([@escoand] - [#13790]) ([media_player.kodi docs]) -- Further untangle data entry flow ([@balloob] - [#13855]) -- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix) -- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix) -- Added snips service descriptions ([@tschmidty69] - [#13883]) -- Add unique_id for BMW ConnectedDrive ([@gerard33] - [#13888]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) -- Revert "Update yweather.py" ([@pvizeli] - [#13900]) ([weather.yweather docs]) -- Eufy colour bulb updates ([@mjg59] - [#13895]) ([eufy docs]) ([light.eufy docs]) -- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix) -- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix) -- Fritzbox netmonitor name ([@escoand] - [#13903]) ([sensor.fritzbox_netmonitor docs]) -- Restore typeerror check for units sans energy tracking ([@andersonshatch] - [#13824]) ([switch.edimax docs]) -- Add more math functions to templates ([@Shou] - [#13915]) -- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) -- Add extra attributes for device scanner, Nmap and Unifi (IP, SSID, etc.) ([@stephanerosi] - [#13673]) ([device_tracker docs]) -- Fixed Capsman data not being used ([@Marco98] - [#13917]) ([device_tracker docs]) -- Broadlink Sensor - switch to connection-less mode ([@Paxy] - [#13761]) ([sensor.broadlink docs]) -- Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform) -- Hive R3 update ([@KJonline] - [#13357]) ([hive docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) -- Updated foobot_async package version ([@reefab] - [#13942]) ([sensor.foobot docs]) -- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix) -- Upgrade alpha_vantage to 2.0.0 ([@fabaff] - [#13943]) ([sensor.alpha_vantage docs]) -- Cleanup on exit ([@dgomes] - [#13918]) ([media_player.mediaroom docs]) -- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix) -- Add data entry flow helper ([@balloob] - [#13935]) ([config docs]) -- Xiaomi MiIO Device Tracker: Unused variable removed ([@syssi] - [#13948]) ([device_tracker docs]) -- Implement play media to set a channel based on (by priority): ([@stephanerosi] - [#13934]) ([media_player.webostv docs]) -- Update of python-mpd2 ([@karlkar] - [#13921]) ([media_player.mpd docs]) -- Add AVM fritzbox smarthome component ([@hthiery] - [#10688]) ([fritzbox docs]) ([climate.fritzbox docs]) ([switch.fritzbox docs]) (new-platform) -- Adds SigFox sensor ([@robmarkcole] - [#13731]) ([sensor.sigfox docs]) (new-platform) -- Upgrade aiohttp to 3.1.3 ([@fabaff] - [#13938]) -- Upgrade youtube_dl to 2018.04.16 ([@fabaff] - [#13937]) ([media_extractor docs]) -- Added FB messenger broadcast api to notify.facebook component ([@B1tMaster] - [#12459]) ([notify.facebook docs]) -- Added web view for TTS to get url ([@tschmidty69] - [#13882]) ([tts docs]) -- Add services for bmw_connected_drive ([@ChristianKuehnel] - [#13497]) ([bmw_connected_drive docs]) ([device_tracker docs]) -- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) (beta fix) -- Bump deCONZ requirement to v36 ([@Kane610] - [#13960]) ([deconz docs]) -- Fix Gogogate2 'available' attribute ([@dlbroadfoot] - [#13728]) (beta fix) -- Fix so it is possible to ignore discovered config entry handlers ([@Kane610] - [#13741]) (beta fix) -- Prevent vesync doing I/O in event loop ([@balloob] - [#13862]) ([switch.vesync docs]) (beta fix) -- Fix #13846 Double underscore in bluetooth address ([@aav7fl] - [#13884]) ([device_tracker docs]) (beta fix) -- Fix race condition for component loaded before listening ([@balloob] - [#13887]) ([config docs]) (beta fix) -- Missing property decorator added ([@syssi] - [#13889]) ([fan.xiaomi_miio docs]) (beta fix) -- Fix call to parent broadlink switch ([@Danielhiversen] - [#13906]) ([switch.broadlink docs]) (beta fix) -- Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix) -- Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) -- Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix) -- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix) -- Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch docs]) -- Bump skybellpy version to 0.1.2 ([@MisterWil] - [#13974]) ([skybell docs]) -- Fix typo an coding style ([@stephanerosi] - [#13970]) ([device_tracker docs]) -- Params of the send command can be a list now ([@syssi] - [#13905]) ([vacuum docs]) -- Support basic covers with open/close/stop services HomeKit ([@nickw444] - [#13819]) ([homekit docs]) (new-feature) -- Colorlog windows fix ([@veleek] - [#13929]) ([notify docs]) -- deCONZ migrate setup fully to config entry ([@Kane610] - [#13679]) ([deconz docs]) -- Alexa thermostat fails to properly parse 'value' field for climate ([@no2chem] - [#13958]) ([alexa docs]) -- renaming icons ([@NovapaX] - [#13982]) ([hdmi_cec docs]) ([vacuum docs]) ([vacuum.dyson docs]) ([vacuum.neato docs]) ([vacuum.roomba docs]) ([vacuum.xiaomi_miio docs]) -- Fix for Lokalise backend misinterpretation of keys ([@armills] - [#13986]) -- Bump locationsharinglib to 1.2.1 ([@thelittlefireman] - [#13980]) ([device_tracker docs]) -- Support for multiple MAX!Cube LAN gateways added ([@syssi] - [#13517]) ([maxcube docs]) ([binary_sensor.maxcube docs]) ([climate.maxcube docs]) (breaking change) -- Add additional receiver for Onkyo zone 2 ([@koolsb] - [#13551]) ([media_player.onkyo docs]) -- Add blackbird media player component ([@koolsb] - [#13549]) ([media_player.blackbird docs]) (new-platform) -- Add support for Sensirion SHT31 temperature/humidity sensor ([@viorels] - [#12952]) ([sensor.sht31 docs]) (new-platform) -- Useless code removed ([@syssi] - [#13996]) ([maxcube docs]) -- Add Homematic HmIP-SWO-PR weather sensor support ([@pascalhahn] - [#13904]) ([homematic docs]) -- Disable ebox requirement ([@balloob] - [#14003]) ([sensor.ebox docs]) (breaking change) -- Upgraded miflora library to version 0.4.0 ([@ChristianKuehnel] - [#14005]) ([sensor.miflora docs]) -- Log an error instead of raising an exception ([@syssi] - [#14006]) ([sensor.sht31 docs]) -- Tibber available ([@Danielhiversen] - [#13865]) ([sensor.tibber docs]) -- Upgrade pylutron-caseta to 0.5.0 to reestablish connections ([@rohankapoorcom] - [#14013]) ([lutron_caseta docs]) -- Add sensor device classes ([@balloob] - [#14010]) ([sensor docs]) ([sensor.ecobee docs]) ([sensor.linux_battery docs]) ([sensor.nest docs]) -- Qwikswitch binary sensors ([@kellerza] - [#14008]) ([qwikswitch docs]) ([binary_sensor.qwikswitch docs]) ([sensor.qwikswitch docs]) (beta fix) (new-platform) -- Order the output of the automation editor ([@balloob] - [#14019]) ([config docs]) (beta fix) -- HomeKit Alarm Control Panel Code Exception Fix ([@schmittx] - [#14025]) ([homekit docs]) (beta fix) -- Revert cast platform polling mode ([@OttoWinter] - [#14027]) ([media_player.cast docs]) (beta fix) -- Handle HomeKit configuration failure more cleanly ([@mjg59] - [#14041]) ([homekit_controller docs]) (beta fix) -- Update device classes for contact sensor HomeKit ([@marthoc] - [#14051]) ([homekit docs]) (beta fix) -- Upgrade broadlink lib ([@Danielhiversen] - [#14074]) ([sensor.broadlink docs]) ([switch.broadlink docs]) (beta fix) -- Fix timezone issue when calculating min/max values in tibber #14009 ([@Danielhiversen] - [#14080]) ([sensor.tibber docs]) (beta fix) -- Updated list of AWS regions for Amazon Polly ([@GotoCode] - [#14097]) ([tts docs]) (beta fix) - -[#10688]: https://github.com/home-assistant/home-assistant/pull/10688 -[#12224]: https://github.com/home-assistant/home-assistant/pull/12224 -[#12459]: https://github.com/home-assistant/home-assistant/pull/12459 -[#12831]: https://github.com/home-assistant/home-assistant/pull/12831 -[#12952]: https://github.com/home-assistant/home-assistant/pull/12952 -[#13075]: https://github.com/home-assistant/home-assistant/pull/13075 -[#13256]: https://github.com/home-assistant/home-assistant/pull/13256 -[#13318]: https://github.com/home-assistant/home-assistant/pull/13318 -[#13346]: https://github.com/home-assistant/home-assistant/pull/13346 -[#13357]: https://github.com/home-assistant/home-assistant/pull/13357 -[#13479]: https://github.com/home-assistant/home-assistant/pull/13479 -[#13497]: https://github.com/home-assistant/home-assistant/pull/13497 -[#13517]: https://github.com/home-assistant/home-assistant/pull/13517 -[#13534]: https://github.com/home-assistant/home-assistant/pull/13534 -[#13549]: https://github.com/home-assistant/home-assistant/pull/13549 -[#13551]: https://github.com/home-assistant/home-assistant/pull/13551 -[#13579]: https://github.com/home-assistant/home-assistant/pull/13579 -[#13622]: https://github.com/home-assistant/home-assistant/pull/13622 -[#13625]: https://github.com/home-assistant/home-assistant/pull/13625 -[#13666]: https://github.com/home-assistant/home-assistant/pull/13666 -[#13673]: https://github.com/home-assistant/home-assistant/pull/13673 -[#13679]: https://github.com/home-assistant/home-assistant/pull/13679 -[#13707]: https://github.com/home-assistant/home-assistant/pull/13707 -[#13711]: https://github.com/home-assistant/home-assistant/pull/13711 -[#13714]: https://github.com/home-assistant/home-assistant/pull/13714 -[#13716]: https://github.com/home-assistant/home-assistant/pull/13716 -[#13720]: https://github.com/home-assistant/home-assistant/pull/13720 -[#13727]: https://github.com/home-assistant/home-assistant/pull/13727 -[#13728]: https://github.com/home-assistant/home-assistant/pull/13728 -[#13730]: https://github.com/home-assistant/home-assistant/pull/13730 -[#13731]: https://github.com/home-assistant/home-assistant/pull/13731 -[#13732]: https://github.com/home-assistant/home-assistant/pull/13732 -[#13733]: https://github.com/home-assistant/home-assistant/pull/13733 -[#13735]: https://github.com/home-assistant/home-assistant/pull/13735 -[#13736]: https://github.com/home-assistant/home-assistant/pull/13736 -[#13737]: https://github.com/home-assistant/home-assistant/pull/13737 -[#13739]: https://github.com/home-assistant/home-assistant/pull/13739 -[#13741]: https://github.com/home-assistant/home-assistant/pull/13741 -[#13743]: https://github.com/home-assistant/home-assistant/pull/13743 -[#13744]: https://github.com/home-assistant/home-assistant/pull/13744 -[#13746]: https://github.com/home-assistant/home-assistant/pull/13746 -[#13752]: https://github.com/home-assistant/home-assistant/pull/13752 -[#13756]: https://github.com/home-assistant/home-assistant/pull/13756 -[#13761]: https://github.com/home-assistant/home-assistant/pull/13761 -[#13764]: https://github.com/home-assistant/home-assistant/pull/13764 -[#13765]: https://github.com/home-assistant/home-assistant/pull/13765 -[#13770]: https://github.com/home-assistant/home-assistant/pull/13770 -[#13773]: https://github.com/home-assistant/home-assistant/pull/13773 -[#13778]: https://github.com/home-assistant/home-assistant/pull/13778 -[#13783]: https://github.com/home-assistant/home-assistant/pull/13783 -[#13784]: https://github.com/home-assistant/home-assistant/pull/13784 -[#13787]: https://github.com/home-assistant/home-assistant/pull/13787 -[#13790]: https://github.com/home-assistant/home-assistant/pull/13790 -[#13791]: https://github.com/home-assistant/home-assistant/pull/13791 -[#13792]: https://github.com/home-assistant/home-assistant/pull/13792 -[#13794]: https://github.com/home-assistant/home-assistant/pull/13794 -[#13796]: https://github.com/home-assistant/home-assistant/pull/13796 -[#13800]: https://github.com/home-assistant/home-assistant/pull/13800 -[#13802]: https://github.com/home-assistant/home-assistant/pull/13802 -[#13804]: https://github.com/home-assistant/home-assistant/pull/13804 -[#13809]: https://github.com/home-assistant/home-assistant/pull/13809 -[#13811]: https://github.com/home-assistant/home-assistant/pull/13811 -[#13812]: https://github.com/home-assistant/home-assistant/pull/13812 -[#13814]: https://github.com/home-assistant/home-assistant/pull/13814 -[#13819]: https://github.com/home-assistant/home-assistant/pull/13819 -[#13824]: https://github.com/home-assistant/home-assistant/pull/13824 -[#13832]: https://github.com/home-assistant/home-assistant/pull/13832 -[#13839]: https://github.com/home-assistant/home-assistant/pull/13839 -[#13840]: https://github.com/home-assistant/home-assistant/pull/13840 -[#13842]: https://github.com/home-assistant/home-assistant/pull/13842 -[#13851]: https://github.com/home-assistant/home-assistant/pull/13851 -[#13854]: https://github.com/home-assistant/home-assistant/pull/13854 -[#13855]: https://github.com/home-assistant/home-assistant/pull/13855 -[#13862]: https://github.com/home-assistant/home-assistant/pull/13862 -[#13865]: https://github.com/home-assistant/home-assistant/pull/13865 -[#13882]: https://github.com/home-assistant/home-assistant/pull/13882 -[#13883]: https://github.com/home-assistant/home-assistant/pull/13883 -[#13884]: https://github.com/home-assistant/home-assistant/pull/13884 -[#13887]: https://github.com/home-assistant/home-assistant/pull/13887 -[#13888]: https://github.com/home-assistant/home-assistant/pull/13888 -[#13889]: https://github.com/home-assistant/home-assistant/pull/13889 -[#13895]: https://github.com/home-assistant/home-assistant/pull/13895 -[#13900]: https://github.com/home-assistant/home-assistant/pull/13900 -[#13903]: https://github.com/home-assistant/home-assistant/pull/13903 -[#13904]: https://github.com/home-assistant/home-assistant/pull/13904 -[#13905]: https://github.com/home-assistant/home-assistant/pull/13905 -[#13906]: https://github.com/home-assistant/home-assistant/pull/13906 -[#13908]: https://github.com/home-assistant/home-assistant/pull/13908 -[#13915]: https://github.com/home-assistant/home-assistant/pull/13915 -[#13917]: https://github.com/home-assistant/home-assistant/pull/13917 -[#13918]: https://github.com/home-assistant/home-assistant/pull/13918 -[#13920]: https://github.com/home-assistant/home-assistant/pull/13920 -[#13921]: https://github.com/home-assistant/home-assistant/pull/13921 -[#13929]: https://github.com/home-assistant/home-assistant/pull/13929 -[#13934]: https://github.com/home-assistant/home-assistant/pull/13934 -[#13935]: https://github.com/home-assistant/home-assistant/pull/13935 -[#13937]: https://github.com/home-assistant/home-assistant/pull/13937 -[#13938]: https://github.com/home-assistant/home-assistant/pull/13938 -[#13940]: https://github.com/home-assistant/home-assistant/pull/13940 -[#13942]: https://github.com/home-assistant/home-assistant/pull/13942 -[#13943]: https://github.com/home-assistant/home-assistant/pull/13943 -[#13946]: https://github.com/home-assistant/home-assistant/pull/13946 -[#13948]: https://github.com/home-assistant/home-assistant/pull/13948 -[#13958]: https://github.com/home-assistant/home-assistant/pull/13958 -[#13960]: https://github.com/home-assistant/home-assistant/pull/13960 -[#13970]: https://github.com/home-assistant/home-assistant/pull/13970 -[#13974]: https://github.com/home-assistant/home-assistant/pull/13974 -[#13980]: https://github.com/home-assistant/home-assistant/pull/13980 -[#13982]: https://github.com/home-assistant/home-assistant/pull/13982 -[#13986]: https://github.com/home-assistant/home-assistant/pull/13986 -[#13996]: https://github.com/home-assistant/home-assistant/pull/13996 -[#14003]: https://github.com/home-assistant/home-assistant/pull/14003 -[#14005]: https://github.com/home-assistant/home-assistant/pull/14005 -[#14006]: https://github.com/home-assistant/home-assistant/pull/14006 -[#14008]: https://github.com/home-assistant/home-assistant/pull/14008 -[#14010]: https://github.com/home-assistant/home-assistant/pull/14010 -[#14013]: https://github.com/home-assistant/home-assistant/pull/14013 -[#14019]: https://github.com/home-assistant/home-assistant/pull/14019 -[#14025]: https://github.com/home-assistant/home-assistant/pull/14025 -[#14027]: https://github.com/home-assistant/home-assistant/pull/14027 -[#14041]: https://github.com/home-assistant/home-assistant/pull/14041 -[#14051]: https://github.com/home-assistant/home-assistant/pull/14051 -[#14074]: https://github.com/home-assistant/home-assistant/pull/14074 -[#14080]: https://github.com/home-assistant/home-assistant/pull/14080 -[#14097]: https://github.com/home-assistant/home-assistant/pull/14097 -[@B1tMaster]: https://github.com/B1tMaster -[@ChristianKuehnel]: https://github.com/ChristianKuehnel -[@Danielhiversen]: https://github.com/Danielhiversen -[@GotoCode]: https://github.com/GotoCode -[@Juggels]: https://github.com/Juggels -[@KJonline]: https://github.com/KJonline -[@Kane610]: https://github.com/Kane610 -[@Kirchoff]: https://github.com/Kirchoff -[@Marco98]: https://github.com/Marco98 -[@MisterWil]: https://github.com/MisterWil -[@NovapaX]: https://github.com/NovapaX -[@OttoWinter]: https://github.com/OttoWinter -[@Paxy]: https://github.com/Paxy -[@Shou]: https://github.com/Shou -[@TheCellMC]: https://github.com/TheCellMC -[@Yonsm]: https://github.com/Yonsm -[@aav7fl]: https://github.com/aav7fl -[@andersonshatch]: https://github.com/andersonshatch -[@armills]: https://github.com/armills -[@balloob]: https://github.com/balloob -[@cdce8p]: https://github.com/cdce8p -[@cgtobi]: https://github.com/cgtobi -[@citruz]: https://github.com/citruz -[@dangyuluo]: https://github.com/dangyuluo -[@danielperna84]: https://github.com/danielperna84 -[@dersger]: https://github.com/dersger -[@dgomes]: https://github.com/dgomes -[@dlbroadfoot]: https://github.com/dlbroadfoot -[@escoand]: https://github.com/escoand -[@fabaff]: https://github.com/fabaff -[@geekofweek]: https://github.com/geekofweek -[@gerard33]: https://github.com/gerard33 -[@hmn]: https://github.com/hmn -[@hthiery]: https://github.com/hthiery -[@karlkar]: https://github.com/karlkar -[@kellerza]: https://github.com/kellerza -[@koolsb]: https://github.com/koolsb -[@marthoc]: https://github.com/marthoc -[@meauxt]: https://github.com/meauxt -[@michaelkuty]: https://github.com/michaelkuty -[@mjg59]: https://github.com/mjg59 -[@molobrakos]: https://github.com/molobrakos -[@nickw444]: https://github.com/nickw444 -[@no2chem]: https://github.com/no2chem -[@pascalhahn]: https://github.com/pascalhahn -[@philk]: https://github.com/philk -[@pvizeli]: https://github.com/pvizeli -[@rcloran]: https://github.com/rcloran -[@reefab]: https://github.com/reefab -[@robmarkcole]: https://github.com/robmarkcole -[@rohankapoorcom]: https://github.com/rohankapoorcom -[@schmittx]: https://github.com/schmittx -[@shred86]: https://github.com/shred86 -[@stephanerosi]: https://github.com/stephanerosi -[@swilson]: https://github.com/swilson -[@syssi]: https://github.com/syssi -[@thelittlefireman]: https://github.com/thelittlefireman -[@thrawnarn]: https://github.com/thrawnarn -[@titilambert]: https://github.com/titilambert -[@tobygray]: https://github.com/tobygray -[@tschmidty69]: https://github.com/tschmidty69 -[@veleek]: https://github.com/veleek -[@viorels]: https://github.com/viorels -[@wiuwiu]: https://github.com/wiuwiu -[@xTCx]: https://github.com/xTCx -[abode docs]: /components/abode/ -[alexa docs]: /components/alexa/ -[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/ -[binary_sensor.hive docs]: /components/binary_sensor.hive/ -[binary_sensor.maxcube docs]: /components/binary_sensor.maxcube/ -[binary_sensor.qwikswitch docs]: /components/binary_sensor.qwikswitch/ -[bmw_connected_drive docs]: /components/bmw_connected_drive/ -[calendar.google docs]: /components/calendar.google/ -[calendar.todoist docs]: /components/calendar.todoist/ -[climate.fritzbox docs]: /components/climate.fritzbox/ -[climate.hive docs]: /components/climate.hive/ -[climate.honeywell docs]: /components/climate.honeywell/ -[climate.maxcube docs]: /components/climate.maxcube/ -[climate.modbus docs]: /components/climate.modbus/ -[config docs]: /components/config/ -[cover.opengarage docs]: /components/cover.opengarage/ -[cover.tahoma docs]: /components/cover.tahoma/ -[deconz docs]: /components/deconz/ -[device_tracker docs]: /components/device_tracker/ -[ecobee docs]: /components/ecobee/ -[eufy docs]: /components/eufy/ -[fan.xiaomi_miio docs]: /components/fan.xiaomi_miio/ -[fritzbox docs]: /components/fritzbox/ -[google docs]: /components/google/ -[hdmi_cec docs]: /components/hdmi_cec/ -[hive docs]: /components/hive/ -[homekit docs]: /components/homekit/ -[homekit_controller docs]: /components/homekit_controller/ -[homematic docs]: /components/homematic/ -[hue docs]: /components/hue/ -[ihc docs]: /components/ihc/ -[light docs]: /components/light/ -[light.abode docs]: /components/light.abode/ -[light.aurora docs]: /components/light.aurora/ -[light.eufy docs]: /components/light.eufy/ -[light.hive docs]: /components/light.hive/ -[light.homekit_controller docs]: /components/light.homekit_controller/ -[light.hue docs]: /components/light.hue/ -[light.yeelight docs]: /components/light.yeelight/ -[lock.bmw_connected_drive docs]: /components/lock.bmw_connected_drive/ -[lutron_caseta docs]: /components/lutron_caseta/ -[maxcube docs]: /components/maxcube/ -[media_extractor docs]: /components/media_extractor/ -[media_player.blackbird docs]: /components/media_player.blackbird/ -[media_player.bluesound docs]: /components/media_player.bluesound/ -[media_player.cast docs]: /components/media_player.cast/ -[media_player.kodi docs]: /components/media_player.kodi/ -[media_player.mediaroom docs]: /components/media_player.mediaroom/ -[media_player.mpd docs]: /components/media_player.mpd/ -[media_player.onkyo docs]: /components/media_player.onkyo/ -[media_player.squeezebox docs]: /components/media_player.squeezebox/ -[media_player.webostv docs]: /components/media_player.webostv/ -[notify docs]: /components/notify/ -[notify.facebook docs]: /components/notify.facebook/ -[prometheus docs]: /components/prometheus/ -[qwikswitch docs]: /components/qwikswitch/ -[sensor docs]: /components/sensor/ -[sensor.alpha_vantage docs]: /components/sensor.alpha_vantage/ -[sensor.bmw_connected_drive docs]: /components/sensor.bmw_connected_drive/ -[sensor.broadlink docs]: /components/sensor.broadlink/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.ebox docs]: /components/sensor.ebox/ -[sensor.ecobee docs]: /components/sensor.ecobee/ -[sensor.eddystone_temperature docs]: /components/sensor.eddystone_temperature/ -[sensor.filter docs]: /components/sensor.filter/ -[sensor.folder docs]: /components/sensor.folder/ -[sensor.foobot docs]: /components/sensor.foobot/ -[sensor.fritzbox_netmonitor docs]: /components/sensor.fritzbox_netmonitor/ -[sensor.hive docs]: /components/sensor.hive/ -[sensor.hydroquebec docs]: /components/sensor.hydroquebec/ -[sensor.linux_battery docs]: /components/sensor.linux_battery/ -[sensor.miflora docs]: /components/sensor.miflora/ -[sensor.mqtt docs]: /components/sensor.mqtt/ -[sensor.nest docs]: /components/sensor.nest/ -[sensor.nut docs]: /components/sensor.nut/ -[sensor.qwikswitch docs]: /components/sensor.qwikswitch/ -[sensor.sht31 docs]: /components/sensor.sht31/ -[sensor.sigfox docs]: /components/sensor.sigfox/ -[sensor.smappee docs]: /components/sensor.smappee/ -[sensor.sql docs]: /components/sensor.sql/ -[sensor.tibber docs]: /components/sensor.tibber/ -[sensor.trafikverket_weatherstation docs]: /components/sensor.trafikverket_weatherstation/ -[sensor.upnp docs]: /components/sensor.upnp/ -[sensor.uscis docs]: /components/sensor.uscis/ -[skybell docs]: /components/skybell/ -[smappee docs]: /components/smappee/ -[snips docs]: /components/snips/ -[switch.broadlink docs]: /components/switch.broadlink/ -[switch.edimax docs]: /components/switch.edimax/ -[switch.eufy docs]: /components/switch.eufy/ -[switch.fritzbox docs]: /components/switch.fritzbox/ -[switch.hive docs]: /components/switch.hive/ -[switch.vesync docs]: /components/switch.vesync/ -[tts docs]: /components/tts/ -[upnp docs]: /components/upnp/ -[vacuum docs]: /components/vacuum/ -[vacuum.dyson docs]: /components/vacuum.dyson/ -[vacuum.neato docs]: /components/vacuum.neato/ -[vacuum.roomba docs]: /components/vacuum.roomba/ -[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/ -[weather.yweather docs]: /components/weather.yweather/ -[zha docs]: /components/zha/ -[#14108]: https://github.com/home-assistant/home-assistant/pull/14108 -[#14113]: https://github.com/home-assistant/home-assistant/pull/14113 -[#14154]: https://github.com/home-assistant/home-assistant/pull/14154 -[#14160]: https://github.com/home-assistant/home-assistant/pull/14160 -[#14163]: https://github.com/home-assistant/home-assistant/pull/14163 -[#14181]: https://github.com/home-assistant/home-assistant/pull/14181 -[#14190]: https://github.com/home-assistant/home-assistant/pull/14190 -[#14196]: https://github.com/home-assistant/home-assistant/pull/14196 -[#14156]: https://github.com/home-assistant/home-assistant/pull/14156 -[@OttoWinter]: https://github.com/OttoWinter -[@amelchio]: https://github.com/amelchio -[@balloob]: https://github.com/balloob -[@cdce8p]: https://github.com/cdce8p -[@mjg59]: https://github.com/mjg59 -[google_assistant docs]: /components/google_assistant/ -[homekit docs]: /components/homekit/ -[homekit_controller docs]: /components/homekit_controller/ -[light.hue docs]: /components/light.hue/ -[light.tplink docs]: /components/light.tplink/ -[media_player.cast docs]: /components/media_player.cast/ \ No newline at end of file diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown deleted file mode 100644 index 4063660e8c..0000000000 --- a/source/_posts/2018-05-11-release-69.markdown +++ /dev/null @@ -1,459 +0,0 @@ ---- -layout: post -title: "0.69: TBD - Update date" -description: "TBD." -date: 2018-05-05 00:01:00 -date_formatted: "May 11, 2018" -author: Paulus Schoutsen -author_twitter: balloob -comments: true -categories: Release-Notes -og_image: /images/blog/2018-05-0.69/components.png ---- - - - -## {% linkable_title New Platforms %} - -- New sensor domain expiry ([@masarliev] - [#14067]) ([sensor.domain_expiry docs]) (new-platform) -- Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform) -- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) -- Foundation for users ([@balloob] - [#13968]) ([auth docs]) ([http docs]) (new-platform) -- Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform) -- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform) -- Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform) -- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (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 %} - -- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change) -- Add Sonos device attribute with grouping information ([@amelchio] - [#13553]) ([media_player.sonos docs]) (breaking change) -- Re-implement HomematicIP cloud to async ([@mxworm] - [#13468]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) (breaking change) -- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) -- System log: make firing event optional ([@balloob] - [#14102]) ([system_log docs]) (breaking change) -- Disable eliqonline requirement ([@balloob] - [#14156]) ([sensor.eliqonline docs]) (breaking change) -- Custom component loading cleanup ([@balloob] - [#14211]) (breaking change) -- Converts RainMachine to hub model (part 2) ([@bachya] - [#14225]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) -- Homekit: Changed device_class requirement Humidity Sensor ([@cdce8p] - [#14277]) ([homekit docs]) (breaking change) -- Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change) -- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) - -## {% linkable_title Beta Fixes %} - -- Add missing 'sensor' to ABODE_PLATFORMS ([@jloutsenhizer] - [#14313]) ([abode docs]) (beta fix) -- Add debounce to move_cover ([@cdce8p] - [#14314]) ([homekit docs]) (beta fix) -- Fix module names for custom components ([@balloob] - [#14317]) (beta fix) -- Revert custom component loading logic ([@balloob] - [#14327]) (beta fix) -- fix(hbmqtt): partial packets breaking hbmqtt ([@graffic] - [#14329]) ([mqtt docs]) (beta fix) -- Fix Yeelight naming ([@syssi]) - -## {% linkable_title All changes %} - -- Pollen.com: Added attributes on top 3 allergens ([@bachya] - [#14018]) ([sensor.pollen docs]) (breaking change) -- Expose the condition code on condition sensors ([@maddox] - [#14011]) ([sensor.yweather docs]) -- upgrade rfxtrx lib, dimming support for Lighting3 ([@Danielhiversen] - [#14026]) ([rfxtrx docs]) -- Add Accuracy to Google Location Sharing ([@rdbahm] - [#14039]) ([device_tracker docs]) -- bump gogogate2 version ([@dlbroadfoot] - [#14044]) ([cover.gogogate2 docs]) -- device_tracker.ubus: catch ConnectionError ([@stintel] - [#14045]) ([device_tracker docs]) -- Show a notification when a config entry is discovered ([@balloob] - [#14022]) -- deCONZ use forward entry setup ([@Kane610] - [#13990]) ([binary_sensor docs]) ([deconz docs]) ([scene docs]) ([sensor docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([scene.deconz docs]) ([sensor.deconz docs]) -- Bump pyEight version to update API & reduce connection issues ([@mezz64] - [#14058]) ([eight_sleep docs]) -- Bump locationsharinglib to 1.2.2 ([@thelittlefireman] - [#14070]) ([device_tracker docs]) -- Remove excessive debugging in webostv module ([@stephanerosi] - [#14056]) ([media_player.webostv docs]) -- Support new Xiaomi Aqara device model names and LAN protocol 2.0 ([@ileler] - [#13540]) ([xiaomi_aqara docs]) ([binary_sensor.xiaomi_aqara docs]) ([light.xiaomi_aqara docs]) ([sensor.xiaomi_aqara docs]) ([switch.xiaomi_aqara docs]) -- Add devices to Tahoma ([@bakedraccoon] - [#14075]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) -- New sensor domain expiry ([@masarliev] - [#14067]) ([sensor.domain_expiry docs]) (new-platform) -- Modify weather components for "new" frontend card ([@c727] - [#14076]) ([weather.buienradar docs]) ([weather.darksky docs]) ([weather.openweathermap docs]) -- Add Sonos device attribute with grouping information ([@amelchio] - [#13553]) ([media_player.sonos docs]) (breaking change) -- Re-implement HomematicIP cloud to async ([@mxworm] - [#13468]) ([homematicip_cloud docs]) ([sensor.homematicip_cloud docs]) (breaking change) -- Update pyhomematic to 0.1.42 ([@danielperna84] - [#14095]) ([homematic docs]) -- Adds update file_path service to local_file camera ([@robmarkcole] - [#13976]) ([camera.local_file docs]) -- Zone component config entry support ([@Kane610] - [#14059]) ([zone docs]) -- Improve MQTT topic validation ([@OttoWinter] - [#14099]) ([mqtt docs]) -- Fix the optional friendly name of the Yeelight (Closes: #14088) ([@syssi] - [#14110]) ([light.yeelight docs]) -- Update QNAP lib to 0.2.6; handle null temps gracefully ([@colinodell] - [#14117]) ([sensor.qnap docs]) -- Support Xiaomi Mijia Bluetooth Wireless Temperature and Humidity Sensor ([@ratcashdev] - [#13955]) ([sensor.mitemp_bt docs]) (new-platform) -- Upgrade colorlog to 3.1.4 ([@fabaff] - [#14132]) -- Move RainMachine to component/hub model ([@bachya] - [#14085]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) (new-platform) -- Add support for light sensors with 'lx' unit to HomeKit ([@bieniu] - [#14131]) ([homekit docs]) -- Upgrade restrictedpython to 4.0b3 ([@fabaff] - [#14140]) ([python_script docs]) -- Logitech Pop support for emulated_hue component ([@dgraye] - [#12833]) ([emulated_hue docs]) -- Bump pyvizio to 0.0.3 ([@cgarwood] - [#14147]) ([media_player.vizio docs]) -- System log: make firing event optional ([@balloob] - [#14102]) ([system_log docs]) (breaking change) -- Upgrade pylast to 2.2.0 ([@fabaff] - [#14139]) ([sensor.lastfm docs]) -- Upgrade sqlalchemy to 1.2.7 ([@fabaff] - [#14138]) -- Upgrade tapsaff to 0.2.0 ([@fabaff] - [#14137]) ([binary_sensor.tapsaff docs]) -- Upgrade python-telegram-bot to 10.0.2 ([@fabaff] - [#14144]) -- Upgrade youtube_dl to 2018.04.25 ([@fabaff] - [#14136]) ([media_extractor docs]) -- Clean up HomeKit accessory information characteristics ([@schmittx] - [#14114]) ([homekit docs]) -- Upgrade psutil to 5.4.5 ([@fabaff] - [#14135]) -- Fixed datetime values ([@gives1976] - [#14153]) ([sensor.sql docs]) -- deluge-components-update ([@engrbm87] - [#14016]) ([sensor.deluge docs]) ([switch.deluge docs]) -- Light mqtt_json: Add HS color support ([@OttoWinter] - [#14029]) ([light.mqtt_json docs]) -- Convert more files to async/await syntax ([@OttoWinter] - [#14142]) -- Disable eliqonline requirement ([@balloob] - [#14156]) ([sensor.eliqonline docs]) (breaking change) -- deCONZ allow unloading of config entry ([@Kane610] - [#14115]) ([binary_sensor docs]) ([deconz docs]) ([scene docs]) ([sensor docs]) -- Upgrade netdisco to 1.4.0 ([@fabaff] - [#14152]) -- Add precipitation to OpenWeatherMap forecast ([@escoand] - [#13971]) ([weather.openweathermap docs]) -- Allow transitioning to colour temp for tradfri ([@Hate-Usernames] - [#14157]) -- Added update_interval to maxcube ([@dingusdk] - [#14143]) ([maxcube docs]) -- zha: Support remotes/buttons ([@rcloran] - [#12528]) ([zha docs]) ([binary_sensor.zha docs]) -- Upgrade numpy to 1.14.3 ([@fabaff] - [#14187]) ([binary_sensor.trend docs]) ([image_processing.opencv docs]) -- Updating darksky default update interval to 5 mins ([@msubra] - [#14195]) ([sensor.darksky docs]) -- Fix TypeError on round(self.humidity) (fixes #13116) ([@mvn23] - [#14174]) ([weather docs]) -- Add room hint support to Google Assistant cloud ([@balloob] - [#14180]) -- Update CODEOWNERS ([@pschmitt] - [#14214]) -- Fixes #14169 (Upgrade pyupnp-async to 0.1.0.2) ([@dgomes] - [#14210]) ([upnp docs]) -- zha: Clean up binary_sensor listener registration/state updates ([@rcloran] - [#14197]) -- HomematicIP cloud: Add logic to check accesspoint connection state ([@sander76] - [#14203]) ([homematicip_cloud docs]) -- Foundation for users ([@balloob] - [#13968]) ([auth docs]) ([http docs]) (new-platform) -- Allow easy extension of websocket API ([@balloob] - [#14186]) ([frontend docs]) ([websocket_api docs]) -- Change the divisor for total consumption output ([@CM000n] - [#14215]) ([switch.fritzbox docs]) -- Upgrade mypy to 0.590 ([@fabaff] - [#14207]) -- Template Sensor add device_class support ([@OttoWinter] - [#14034]) ([sensor.template docs]) -- Add more parameters for DSMR sensor ([@rubenvandeven] - [#13967]) ([sensor.dsmr docs]) -- Support setting explicit mute value for Panasonic Viera TV ([@blackwind] - [#13954]) ([media_player.panasonic_viera docs]) -- Allow to set a desired update interval for camera_proxy_stream view ([@NovapaX] - [#13350]) ([camera docs]) -- panasonic_viera: Provide unique_id from SSDP UDN, if available ([@scop] - [#13541]) ([media_player.panasonic_viera docs]) -- Custom component loading cleanup ([@balloob] - [#14211]) (breaking change) -- Buienradar improvements: continuous sensors and unique ID's ([@corneyl] - [#13249]) ([sensor.buienradar docs]) -- add volumio discovery ([@escoand] - [#14220]) ([media_player.volumio docs]) -- Converts RainMachine to hub model (part 2) ([@bachya] - [#14225]) ([rainmachine docs]) ([switch.rainmachine docs]) (breaking change) -- Add MQTT Sensor device_class ([@OttoWinter] - [#14033]) ([sensor.mqtt docs]) -- Allow independent control of white level on flux_led component ([@oblogic7] - [#13985]) ([light.flux_led docs]) -- Add Social Blade Sensor ([@meauxt] - [#14060]) ([sensor.socialblade docs]) ([sensor.uscis docs]) (new-platform) -- UPnP code cleanup ([@dgomes] - [#14235]) ([upnp docs]) ([sensor.upnp docs]) -- Improve config schema of the blackbird component ([@syssi] - [#14007]) ([media_player.blackbird docs]) -- Add support for tracking devices on Netgear access points ([@MatMaul] - [#13331]) ([device_tracker docs]) -- WUnderground unique ids ([@OttoWinter] - [#13311]) ([sensor.wunderground docs]) -- Add PostNL sensor (Dutch Postal Services) ([@iMicknl] - [#12366]) ([sensor.postnl docs]) (new-platform) -- python_openzwave update config service ([@perosb] - [#12060]) ([zwave docs]) -- Add unique_id to zwave node entity ([@andrey-git] - [#14201]) ([zwave docs]) -- Add prereqs for HomeKit Controller ([@marthoc] - [#14172]) -- Restores switch state, case the switch is optimistic ([@dgomes] - [#14151]) ([switch.mqtt docs]) -- Issue/add template fans ([@giangvo] - [#12027]) ([fan.template docs]) (new-platform) -- HomeKit - Climate: power state on/off support ([@roiff] - [#14082]) ([homekit docs]) -- Demo Sensor - Added device_class support ([@cdce8p] - [#14269]) ([sensor.demo docs]) -- Re-enable eliqonline requirement ([@molobrakos] - [#14265]) ([sensor.eliqonline docs]) -- Add fetching camera thumbnails over websocket ([@balloob] - [#14231]) ([camera docs]) ([frontend docs]) ([image_processing docs]) ([microsoft_face docs]) ([websocket_api docs]) -- Allow fetching media player covers via websocket connection ([@balloob] - [#14233]) ([media_player docs]) -- Fix ZWave light brightness ([@cdce8p] - [#14261]) ([light.zwave docs]) -- fix check config not working after #14211 ([@fanthos] - [#14259]) -- Issue Template Fix CRLF ([@OttoWinter] - [#14283]) -- Upgrade attrs to 18.1.0 ([@fabaff] - [#14281]) -- Update HAP-python to 2.0.0 ([@cdce8p] - [#14278]) ([homekit docs]) -- Upgrade holidays to 0.9.5 ([@fabaff] - [#14274]) ([binary_sensor.workday docs]) -- Homekit: Changed device_class requirement Humidity Sensor ([@cdce8p] - [#14277]) ([homekit docs]) (breaking change) -- HomeKit: Support triggered state for alarm_control_panel ([@schmittx] - [#14285]) ([homekit docs]) -- Upgrade astral to 1.6.1 ([@fabaff] - [#14297]) -- BOM Weather throttle fix ([@nickw444] - [#14234]) ([sensor.bom docs]) -- Publish attributes unconditionally ([@blackwind] - [#14179]) ([mqtt_statestream docs]) -- Sensor device classes ([@cdce8p] - [#14282]) ([sensor docs]) (breaking change) -- Matrix Chatbot ([@tinloaf] - [#13355]) ([matrix docs]) ([notify docs]) (breaking change) (new-platform) -- deCONZ add new device without restart ([@Kane610] - [#14221]) ([deconz docs]) ([binary_sensor.deconz docs]) ([light.deconz docs]) ([sensor.deconz docs]) -- Add alarmdotcom sensor status ([@jnewland] - [#14254]) ([alarm_control_panel.alarmdotcom docs]) -- Add domain to labels and count state changes to Prometheus ([@jnewland] - [#14253]) ([prometheus docs]) -- Add support for max_volume ([@relvacode] - [#13822]) ([media_player.onkyo docs]) -- Refactor ImageProcessingFaceEntity ([@robmarkcole] - [#14296]) ([image_processing docs]) ([image_processing.demo docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) -- Onkyo: SUPPORT_VOLUME_STEP ([@rsmeral] - [#14299]) ([media_player.onkyo docs]) -- Add All-Linking capabilities ([@teharris1] - [#14065]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) -- Add missing 'sensor' to ABODE_PLATFORMS ([@jloutsenhizer] - [#14313]) ([abode docs]) (beta fix) -- Add debounce to move_cover ([@cdce8p] - [#14314]) ([homekit docs]) (beta fix) -- Fix module names for custom components ([@balloob] - [#14317]) (beta fix) -- Revert custom component loading logic ([@balloob] - [#14327]) (beta fix) -- fix(hbmqtt): partial packets breaking hbmqtt ([@graffic] - [#14329]) ([mqtt docs]) (beta fix) - -[#12027]: https://github.com/home-assistant/home-assistant/pull/12027 -[#12060]: https://github.com/home-assistant/home-assistant/pull/12060 -[#12366]: https://github.com/home-assistant/home-assistant/pull/12366 -[#12528]: https://github.com/home-assistant/home-assistant/pull/12528 -[#12833]: https://github.com/home-assistant/home-assistant/pull/12833 -[#13249]: https://github.com/home-assistant/home-assistant/pull/13249 -[#13311]: https://github.com/home-assistant/home-assistant/pull/13311 -[#13331]: https://github.com/home-assistant/home-assistant/pull/13331 -[#13350]: https://github.com/home-assistant/home-assistant/pull/13350 -[#13355]: https://github.com/home-assistant/home-assistant/pull/13355 -[#13468]: https://github.com/home-assistant/home-assistant/pull/13468 -[#13540]: https://github.com/home-assistant/home-assistant/pull/13540 -[#13541]: https://github.com/home-assistant/home-assistant/pull/13541 -[#13553]: https://github.com/home-assistant/home-assistant/pull/13553 -[#13822]: https://github.com/home-assistant/home-assistant/pull/13822 -[#13954]: https://github.com/home-assistant/home-assistant/pull/13954 -[#13955]: https://github.com/home-assistant/home-assistant/pull/13955 -[#13967]: https://github.com/home-assistant/home-assistant/pull/13967 -[#13968]: https://github.com/home-assistant/home-assistant/pull/13968 -[#13971]: https://github.com/home-assistant/home-assistant/pull/13971 -[#13976]: https://github.com/home-assistant/home-assistant/pull/13976 -[#13985]: https://github.com/home-assistant/home-assistant/pull/13985 -[#13990]: https://github.com/home-assistant/home-assistant/pull/13990 -[#14007]: https://github.com/home-assistant/home-assistant/pull/14007 -[#14011]: https://github.com/home-assistant/home-assistant/pull/14011 -[#14016]: https://github.com/home-assistant/home-assistant/pull/14016 -[#14018]: https://github.com/home-assistant/home-assistant/pull/14018 -[#14022]: https://github.com/home-assistant/home-assistant/pull/14022 -[#14026]: https://github.com/home-assistant/home-assistant/pull/14026 -[#14029]: https://github.com/home-assistant/home-assistant/pull/14029 -[#14033]: https://github.com/home-assistant/home-assistant/pull/14033 -[#14034]: https://github.com/home-assistant/home-assistant/pull/14034 -[#14039]: https://github.com/home-assistant/home-assistant/pull/14039 -[#14044]: https://github.com/home-assistant/home-assistant/pull/14044 -[#14045]: https://github.com/home-assistant/home-assistant/pull/14045 -[#14056]: https://github.com/home-assistant/home-assistant/pull/14056 -[#14058]: https://github.com/home-assistant/home-assistant/pull/14058 -[#14059]: https://github.com/home-assistant/home-assistant/pull/14059 -[#14060]: https://github.com/home-assistant/home-assistant/pull/14060 -[#14065]: https://github.com/home-assistant/home-assistant/pull/14065 -[#14067]: https://github.com/home-assistant/home-assistant/pull/14067 -[#14070]: https://github.com/home-assistant/home-assistant/pull/14070 -[#14075]: https://github.com/home-assistant/home-assistant/pull/14075 -[#14076]: https://github.com/home-assistant/home-assistant/pull/14076 -[#14082]: https://github.com/home-assistant/home-assistant/pull/14082 -[#14085]: https://github.com/home-assistant/home-assistant/pull/14085 -[#14095]: https://github.com/home-assistant/home-assistant/pull/14095 -[#14099]: https://github.com/home-assistant/home-assistant/pull/14099 -[#14102]: https://github.com/home-assistant/home-assistant/pull/14102 -[#14110]: https://github.com/home-assistant/home-assistant/pull/14110 -[#14114]: https://github.com/home-assistant/home-assistant/pull/14114 -[#14115]: https://github.com/home-assistant/home-assistant/pull/14115 -[#14117]: https://github.com/home-assistant/home-assistant/pull/14117 -[#14131]: https://github.com/home-assistant/home-assistant/pull/14131 -[#14132]: https://github.com/home-assistant/home-assistant/pull/14132 -[#14135]: https://github.com/home-assistant/home-assistant/pull/14135 -[#14136]: https://github.com/home-assistant/home-assistant/pull/14136 -[#14137]: https://github.com/home-assistant/home-assistant/pull/14137 -[#14138]: https://github.com/home-assistant/home-assistant/pull/14138 -[#14139]: https://github.com/home-assistant/home-assistant/pull/14139 -[#14140]: https://github.com/home-assistant/home-assistant/pull/14140 -[#14142]: https://github.com/home-assistant/home-assistant/pull/14142 -[#14143]: https://github.com/home-assistant/home-assistant/pull/14143 -[#14144]: https://github.com/home-assistant/home-assistant/pull/14144 -[#14147]: https://github.com/home-assistant/home-assistant/pull/14147 -[#14151]: https://github.com/home-assistant/home-assistant/pull/14151 -[#14152]: https://github.com/home-assistant/home-assistant/pull/14152 -[#14153]: https://github.com/home-assistant/home-assistant/pull/14153 -[#14156]: https://github.com/home-assistant/home-assistant/pull/14156 -[#14157]: https://github.com/home-assistant/home-assistant/pull/14157 -[#14172]: https://github.com/home-assistant/home-assistant/pull/14172 -[#14174]: https://github.com/home-assistant/home-assistant/pull/14174 -[#14179]: https://github.com/home-assistant/home-assistant/pull/14179 -[#14180]: https://github.com/home-assistant/home-assistant/pull/14180 -[#14186]: https://github.com/home-assistant/home-assistant/pull/14186 -[#14187]: https://github.com/home-assistant/home-assistant/pull/14187 -[#14195]: https://github.com/home-assistant/home-assistant/pull/14195 -[#14197]: https://github.com/home-assistant/home-assistant/pull/14197 -[#14201]: https://github.com/home-assistant/home-assistant/pull/14201 -[#14203]: https://github.com/home-assistant/home-assistant/pull/14203 -[#14207]: https://github.com/home-assistant/home-assistant/pull/14207 -[#14210]: https://github.com/home-assistant/home-assistant/pull/14210 -[#14211]: https://github.com/home-assistant/home-assistant/pull/14211 -[#14214]: https://github.com/home-assistant/home-assistant/pull/14214 -[#14215]: https://github.com/home-assistant/home-assistant/pull/14215 -[#14220]: https://github.com/home-assistant/home-assistant/pull/14220 -[#14221]: https://github.com/home-assistant/home-assistant/pull/14221 -[#14225]: https://github.com/home-assistant/home-assistant/pull/14225 -[#14231]: https://github.com/home-assistant/home-assistant/pull/14231 -[#14233]: https://github.com/home-assistant/home-assistant/pull/14233 -[#14234]: https://github.com/home-assistant/home-assistant/pull/14234 -[#14235]: https://github.com/home-assistant/home-assistant/pull/14235 -[#14253]: https://github.com/home-assistant/home-assistant/pull/14253 -[#14254]: https://github.com/home-assistant/home-assistant/pull/14254 -[#14259]: https://github.com/home-assistant/home-assistant/pull/14259 -[#14261]: https://github.com/home-assistant/home-assistant/pull/14261 -[#14265]: https://github.com/home-assistant/home-assistant/pull/14265 -[#14269]: https://github.com/home-assistant/home-assistant/pull/14269 -[#14274]: https://github.com/home-assistant/home-assistant/pull/14274 -[#14277]: https://github.com/home-assistant/home-assistant/pull/14277 -[#14278]: https://github.com/home-assistant/home-assistant/pull/14278 -[#14281]: https://github.com/home-assistant/home-assistant/pull/14281 -[#14282]: https://github.com/home-assistant/home-assistant/pull/14282 -[#14283]: https://github.com/home-assistant/home-assistant/pull/14283 -[#14285]: https://github.com/home-assistant/home-assistant/pull/14285 -[#14296]: https://github.com/home-assistant/home-assistant/pull/14296 -[#14297]: https://github.com/home-assistant/home-assistant/pull/14297 -[#14299]: https://github.com/home-assistant/home-assistant/pull/14299 -[#14313]: https://github.com/home-assistant/home-assistant/pull/14313 -[#14314]: https://github.com/home-assistant/home-assistant/pull/14314 -[#14317]: https://github.com/home-assistant/home-assistant/pull/14317 -[#14327]: https://github.com/home-assistant/home-assistant/pull/14327 -[#14329]: https://github.com/home-assistant/home-assistant/pull/14329 -[@CM000n]: https://github.com/CM000n -[@Danielhiversen]: https://github.com/Danielhiversen -[@Hate-Usernames]: https://github.com/Hate-Usernames -[@Kane610]: https://github.com/Kane610 -[@MatMaul]: https://github.com/MatMaul -[@NovapaX]: https://github.com/NovapaX -[@OttoWinter]: https://github.com/OttoWinter -[@amelchio]: https://github.com/amelchio -[@andrey-git]: https://github.com/andrey-git -[@bachya]: https://github.com/bachya -[@bakedraccoon]: https://github.com/bakedraccoon -[@balloob]: https://github.com/balloob -[@bieniu]: https://github.com/bieniu -[@blackwind]: https://github.com/blackwind -[@c727]: https://github.com/c727 -[@cdce8p]: https://github.com/cdce8p -[@cgarwood]: https://github.com/cgarwood -[@colinodell]: https://github.com/colinodell -[@corneyl]: https://github.com/corneyl -[@danielperna84]: https://github.com/danielperna84 -[@dgomes]: https://github.com/dgomes -[@dgraye]: https://github.com/dgraye -[@dingusdk]: https://github.com/dingusdk -[@dlbroadfoot]: https://github.com/dlbroadfoot -[@engrbm87]: https://github.com/engrbm87 -[@escoand]: https://github.com/escoand -[@fabaff]: https://github.com/fabaff -[@fanthos]: https://github.com/fanthos -[@giangvo]: https://github.com/giangvo -[@gives1976]: https://github.com/gives1976 -[@graffic]: https://github.com/graffic -[@iMicknl]: https://github.com/iMicknl -[@ileler]: https://github.com/ileler -[@jloutsenhizer]: https://github.com/jloutsenhizer -[@jnewland]: https://github.com/jnewland -[@maddox]: https://github.com/maddox -[@marthoc]: https://github.com/marthoc -[@masarliev]: https://github.com/masarliev -[@meauxt]: https://github.com/meauxt -[@mezz64]: https://github.com/mezz64 -[@molobrakos]: https://github.com/molobrakos -[@msubra]: https://github.com/msubra -[@mvn23]: https://github.com/mvn23 -[@mxworm]: https://github.com/mxworm -[@nickw444]: https://github.com/nickw444 -[@oblogic7]: https://github.com/oblogic7 -[@perosb]: https://github.com/perosb -[@pschmitt]: https://github.com/pschmitt -[@ratcashdev]: https://github.com/ratcashdev -[@rcloran]: https://github.com/rcloran -[@rdbahm]: https://github.com/rdbahm -[@relvacode]: https://github.com/relvacode -[@robmarkcole]: https://github.com/robmarkcole -[@roiff]: https://github.com/roiff -[@rsmeral]: https://github.com/rsmeral -[@rubenvandeven]: https://github.com/rubenvandeven -[@sander76]: https://github.com/sander76 -[@schmittx]: https://github.com/schmittx -[@scop]: https://github.com/scop -[@stephanerosi]: https://github.com/stephanerosi -[@stintel]: https://github.com/stintel -[@syssi]: https://github.com/syssi -[@teharris1]: https://github.com/teharris1 -[@thelittlefireman]: https://github.com/thelittlefireman -[@tinloaf]: https://github.com/tinloaf -[abode docs]: /components/abode/ -[alarm_control_panel.alarmdotcom docs]: /components/alarm_control_panel.alarmdotcom/ -[auth docs]: /components/auth/ -[binary_sensor docs]: /components/binary_sensor/ -[binary_sensor.deconz docs]: /components/binary_sensor.deconz/ -[binary_sensor.insteon_plm docs]: /components/binary_sensor.insteon_plm/ -[binary_sensor.tapsaff docs]: /components/binary_sensor.tapsaff/ -[binary_sensor.trend docs]: /components/binary_sensor.trend/ -[binary_sensor.workday docs]: /components/binary_sensor.workday/ -[binary_sensor.xiaomi_aqara docs]: /components/binary_sensor.xiaomi_aqara/ -[binary_sensor.zha docs]: /components/binary_sensor.zha/ -[camera docs]: /components/camera/ -[camera.local_file docs]: /components/camera.local_file/ -[cover.gogogate2 docs]: /components/cover.gogogate2/ -[cover.tahoma docs]: /components/cover.tahoma/ -[deconz docs]: /components/deconz/ -[device_tracker docs]: /components/device_tracker/ -[eight_sleep docs]: /components/eight_sleep/ -[emulated_hue docs]: /components/emulated_hue/ -[fan.insteon_plm docs]: /components/fan.insteon_plm/ -[fan.template docs]: /components/fan.template/ -[frontend docs]: /components/frontend/ -[homekit docs]: /components/homekit/ -[homematic docs]: /components/homematic/ -[homematicip_cloud docs]: /components/homematicip_cloud/ -[http docs]: /components/http/ -[image_processing docs]: /components/image_processing/ -[image_processing.demo docs]: /components/image_processing.demo/ -[image_processing.dlib_face_detect docs]: /components/image_processing.dlib_face_detect/ -[image_processing.dlib_face_identify docs]: /components/image_processing.dlib_face_identify/ -[image_processing.microsoft_face_detect docs]: /components/image_processing.microsoft_face_detect/ -[image_processing.microsoft_face_identify docs]: /components/image_processing.microsoft_face_identify/ -[image_processing.opencv docs]: /components/image_processing.opencv/ -[insteon_plm docs]: /components/insteon_plm/ -[light.deconz docs]: /components/light.deconz/ -[light.flux_led docs]: /components/light.flux_led/ -[light.insteon_plm docs]: /components/light.insteon_plm/ -[light.mqtt_json docs]: /components/light.mqtt_json/ -[light.xiaomi_aqara docs]: /components/light.xiaomi_aqara/ -[light.yeelight docs]: /components/light.yeelight/ -[light.zwave docs]: /components/light.zwave/ -[matrix docs]: /components/matrix/ -[maxcube docs]: /components/maxcube/ -[media_extractor docs]: /components/media_extractor/ -[media_player docs]: /components/media_player/ -[media_player.blackbird docs]: /components/media_player.blackbird/ -[media_player.onkyo docs]: /components/media_player.onkyo/ -[media_player.panasonic_viera docs]: /components/media_player.panasonic_viera/ -[media_player.sonos docs]: /components/media_player.sonos/ -[media_player.vizio docs]: /components/media_player.vizio/ -[media_player.volumio docs]: /components/media_player.volumio/ -[media_player.webostv docs]: /components/media_player.webostv/ -[microsoft_face docs]: /components/microsoft_face/ -[mqtt docs]: /components/mqtt/ -[mqtt_statestream docs]: /components/mqtt_statestream/ -[notify docs]: /components/notify/ -[prometheus docs]: /components/prometheus/ -[python_script docs]: /components/python_script/ -[rainmachine docs]: /components/rainmachine/ -[rfxtrx docs]: /components/rfxtrx/ -[scene docs]: /components/scene/ -[scene.deconz docs]: /components/scene.deconz/ -[sensor docs]: /components/sensor/ -[sensor.bom docs]: /components/sensor.bom/ -[sensor.buienradar docs]: /components/sensor.buienradar/ -[sensor.darksky docs]: /components/sensor.darksky/ -[sensor.deconz docs]: /components/sensor.deconz/ -[sensor.deluge docs]: /components/sensor.deluge/ -[sensor.demo docs]: /components/sensor.demo/ -[sensor.domain_expiry docs]: /components/sensor.domain_expiry/ -[sensor.dsmr docs]: /components/sensor.dsmr/ -[sensor.eliqonline docs]: /components/sensor.eliqonline/ -[sensor.homematicip_cloud docs]: /components/sensor.homematicip_cloud/ -[sensor.insteon_plm docs]: /components/sensor.insteon_plm/ -[sensor.lastfm docs]: /components/sensor.lastfm/ -[sensor.mitemp_bt docs]: /components/sensor.mitemp_bt/ -[sensor.mqtt docs]: /components/sensor.mqtt/ -[sensor.pollen docs]: /components/sensor.pollen/ -[sensor.postnl docs]: /components/sensor.postnl/ -[sensor.qnap docs]: /components/sensor.qnap/ -[sensor.socialblade docs]: /components/sensor.socialblade/ -[sensor.sql docs]: /components/sensor.sql/ -[sensor.tahoma docs]: /components/sensor.tahoma/ -[sensor.template docs]: /components/sensor.template/ -[sensor.upnp docs]: /components/sensor.upnp/ -[sensor.uscis docs]: /components/sensor.uscis/ -[sensor.wunderground docs]: /components/sensor.wunderground/ -[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/ -[sensor.yweather docs]: /components/sensor.yweather/ -[switch.deluge docs]: /components/switch.deluge/ -[switch.fritzbox docs]: /components/switch.fritzbox/ -[switch.insteon_plm docs]: /components/switch.insteon_plm/ -[switch.mqtt docs]: /components/switch.mqtt/ -[switch.rainmachine docs]: /components/switch.rainmachine/ -[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/ -[system_log docs]: /components/system_log/ -[tahoma docs]: /components/tahoma/ -[upnp docs]: /components/upnp/ -[weather docs]: /components/weather/ -[weather.buienradar docs]: /components/weather.buienradar/ -[weather.darksky docs]: /components/weather.darksky/ -[weather.openweathermap docs]: /components/weather.openweathermap/ -[websocket_api docs]: /components/websocket_api/ -[xiaomi_aqara docs]: /components/xiaomi_aqara/ -[zha docs]: /components/zha/ -[zone docs]: /components/zone/ -[zwave docs]: /components/zwave/ diff --git a/source/addons/index.html b/source/addons/index.html deleted file mode 100644 index 413106dd86..0000000000 --- a/source/addons/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Hass.io Add-ons" -description: "List of the built-in add-ons of Hass.io." -date: 2017-04-30 13:35 -sidebar: true -comments: false -sharing: true -footer: true -regenerate: false ---- - -

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

    - -

    -Add-ons are only available if you've used the Hass.io installer. If you installed Home Assistant using any other method then you cannot use add-ons (but you can achieve the same result manually). -

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

    {% linkable_title Featured add-ons %}

    - -
      -{% 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/assets/jwplayer/glow/controlbar/background.png b/source/assets/jwplayer/glow/controlbar/background.png deleted file mode 100644 index e932cb09a9..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/background.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/blankButton.png b/source/assets/jwplayer/glow/controlbar/blankButton.png deleted file mode 100644 index 010159f3eb..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/blankButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/divider.png b/source/assets/jwplayer/glow/controlbar/divider.png deleted file mode 100644 index 021685f4b0..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/divider.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/source/assets/jwplayer/glow/controlbar/fullscreenButton.png deleted file mode 100644 index 9d3291e8e5..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png deleted file mode 100644 index ef55acc7ca..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/muteButton.png b/source/assets/jwplayer/glow/controlbar/muteButton.png deleted file mode 100644 index 40c40ab273..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/muteButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/source/assets/jwplayer/glow/controlbar/muteButtonOver.png deleted file mode 100644 index 091cc054a2..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/source/assets/jwplayer/glow/controlbar/normalscreenButton.png deleted file mode 100644 index f7c23cd5ba..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png deleted file mode 100644 index 1f6aebd73a..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/pauseButton.png b/source/assets/jwplayer/glow/controlbar/pauseButton.png deleted file mode 100644 index e6ab8aa55a..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/pauseButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png deleted file mode 100644 index 8dcf0c5bfc..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/playButton.png b/source/assets/jwplayer/glow/controlbar/playButton.png deleted file mode 100644 index f8d9a0079a..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/playButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/source/assets/jwplayer/glow/controlbar/playButtonOver.png deleted file mode 100644 index 6898116a3b..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/playButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png deleted file mode 100644 index 5e151d69c8..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png deleted file mode 100644 index e89fc5c6af..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png deleted file mode 100644 index ae47e9018b..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png b/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png deleted file mode 100644 index 132a8e7dc9..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderProgress.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/source/assets/jwplayer/glow/controlbar/timeSliderRail.png deleted file mode 100644 index 63692be0b7..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/source/assets/jwplayer/glow/controlbar/unmuteButton.png deleted file mode 100644 index 6433b4d476..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButton.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png deleted file mode 100644 index 206be887e0..0000000000 Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/background.png b/source/assets/jwplayer/glow/display/background.png deleted file mode 100644 index eb7c709d39..0000000000 Binary files a/source/assets/jwplayer/glow/display/background.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/bufferIcon.png b/source/assets/jwplayer/glow/display/bufferIcon.png deleted file mode 100644 index 10ae39736a..0000000000 Binary files a/source/assets/jwplayer/glow/display/bufferIcon.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/muteIcon.png b/source/assets/jwplayer/glow/display/muteIcon.png deleted file mode 100644 index 8e078ae438..0000000000 Binary files a/source/assets/jwplayer/glow/display/muteIcon.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/display/playIcon.png b/source/assets/jwplayer/glow/display/playIcon.png deleted file mode 100644 index 269e4311bc..0000000000 Binary files a/source/assets/jwplayer/glow/display/playIcon.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/dock/button.png b/source/assets/jwplayer/glow/dock/button.png deleted file mode 100644 index eb7c709d39..0000000000 Binary files a/source/assets/jwplayer/glow/dock/button.png and /dev/null differ diff --git a/source/assets/jwplayer/glow/glow.xml b/source/assets/jwplayer/glow/glow.xml deleted file mode 100644 index 71bdced010..0000000000 --- a/source/assets/jwplayer/glow/glow.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -
    - - -
    -

    Thanks!

    -

    Thank you for signing the Home Assistant Contributor license agreement. We are now redirecting you back to your pull request.

    -
    - - - - - - - diff --git a/source/developers/cla_sign_start.html b/source/developers/cla_sign_start.html deleted file mode 100644 index 53ed501016..0000000000 --- a/source/developers/cla_sign_start.html +++ /dev/null @@ -1,27 +0,0 @@ ---- -layout: page -title: "CLA Login" -description: "The Home Assistant contributor license agreement (CLA) signature page" -date: 2017-01-21 15:05:00 -0800 -sidebar: true -comments: false -sharing: true -footer: true ---- - -

    Please wait while we begin the signature process...

    -
    -
    - - - - diff --git a/source/developers/code_review_component.markdown b/source/developers/code_review_component.markdown deleted file mode 100644 index 3d2853668d..0000000000 --- a/source/developers/code_review_component.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Checklist for creating a component" -description: "A list of things to pay attention to when code reviewing a component." -date: 2017-01-15 14:09 -0800 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/code_review_platform.markdown b/source/developers/code_review_platform.markdown deleted file mode 100644 index 0be7ec0a02..0000000000 --- a/source/developers/code_review_platform.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Checklist for creating a platform" -description: "A list of things to pay attention to when code reviewing a platform." -date: 2017-01-15 14:09 -0800 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_deps_and_reqs.markdown b/source/developers/component_deps_and_reqs.markdown deleted file mode 100644 index 0a9b6758eb..0000000000 --- a/source/developers/component_deps_and_reqs.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Requirements & Dependencies" -description: "Instructions on how to define requirements and dependencies." -date: 2016-04-16 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_discovery.markdown b/source/developers/component_discovery.markdown deleted file mode 100644 index 69fb672d5f..0000000000 --- a/source/developers/component_discovery.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Component Discovery" -description: "How to make component discovery work." -date: 2017-11-23 07:27 +02:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_events.markdown b/source/developers/component_events.markdown deleted file mode 100644 index 65f729e52d..0000000000 --- a/source/developers/component_events.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Handling events" -description: "Instructions on how to handle events with your component." -date: 2016-04-16 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_generic_discovery.markdown b/source/developers/component_generic_discovery.markdown deleted file mode 100644 index 5fd2881601..0000000000 --- a/source/developers/component_generic_discovery.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Generic Platform Discovery" -description: "Using generic platform discovery." -date: 2016-05-12 22:00 -02:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_loading.markdown b/source/developers/component_loading.markdown deleted file mode 100644 index f5c6e04e9f..0000000000 --- a/source/developers/component_loading.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Loading your components" -description: "Instructions on how to get your component loaded by Home Assistant." -date: 2016-04-16 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_states.markdown b/source/developers/component_states.markdown deleted file mode 100644 index d94c5b12ba..0000000000 --- a/source/developers/component_states.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Handling states" -description: "Instructions on how to handle states with your component." -date: 2016-07-01 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/component_visibility.markdown b/source/developers/component_visibility.markdown deleted file mode 100644 index 29a84a747d..0000000000 --- a/source/developers/component_visibility.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Handling visibility" -description: "Instructions on how to handle visibility with your component." -date: 2016-07-01 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/creating_components.markdown b/source/developers/creating_components.markdown deleted file mode 100644 index 678014da4f..0000000000 --- a/source/developers/creating_components.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Creating components" -description: "Guidelines to get you create your first component for Home Assistant." -date: 2014-12-21 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown deleted file mode 100644 index 3e44e31340..0000000000 --- a/source/developers/credits.markdown +++ /dev/null @@ -1,899 +0,0 @@ ---- -layout: page -title: "Credits" -description: "Credits for the developers who contributed to Home Assistant." -date: 2018-04-29 16:35:15 +0000 -sidebar: true -comments: false -sharing: true -footer: true ---- - -This page contains a list of people who have contributed in one way or another to Home Assistant. Hover over a username to see their contributions. - -### {% linkable_title Author %} - -- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6642 total commits to the home-assistant organization, 3877 commits to home-assistant, 1448 commits to home-assistant.github.io, 768 commits to home-assistant-polymer, 244 commits to home-assistant-js, 123 commits to netdisco, 46 commits to home-assistant-js-websocket, 35 commits to developers.home-assistant, 33 commits to hass-release, 17 commits to LabelBot, 15 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to hassio-build, 2 commits to lambda-home-assistant-github, 2 commits to home-assistant-iOS, 2 commits to hassio-addons-example, 2 commits to issue-bot, 1 commit to architecture, 1 commit to home-assistant-notebooks, 1 commit to warrant") - -### {% linkable_title Contributors %} - -(in alphabetical order) - -- [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [a-andre (@a-andre)](https://github.com/a-andre "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Aaron Bach (@bachya)](https://github.com/bachya "53 total commits to the home-assistant organization, 35 commits to home-assistant, 18 commits to home-assistant.github.io") -- [Aaron Linville (@linville)](https://github.com/linville "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Abílio Costa (@abmantis)](https://github.com/abmantis "22 total commits to the home-assistant organization, 13 commits to home-assistant, 5 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") -- [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") -- [Adam Baxter (@voltagex)](https://github.com/voltagex "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Adam Dullage (@Dullage)](https://github.com/Dullage "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Adam Mills (@armills)](https://github.com/armills "324 total commits to the home-assistant organization, 171 commits to home-assistant, 92 commits to home-assistant-polymer, 57 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") -- [Adrian Popa (@mad-ady)](https://github.com/mad-ady "5 total commits to the home-assistant organization, 4 commits to appdaemon, 1 commit to home-assistant-polymer") -- [Adrien Ball (@adrienball)](https://github.com/adrienball "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Adrien Brault (@adrienbrault)](https://github.com/adrienbrault "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Adrián López (@adrianlzt)](https://github.com/adrianlzt "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") -- [AHS (@ahofelt)](https://github.com/ahofelt "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [akloeckner (@akloeckner)](https://github.com/akloeckner "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Alan Bowman (@alanbowman)](https://github.com/alanbowman "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Alan Tse (@alandtse)](https://github.com/alandtse "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Alasdair Nicol (@alasdairnicol)](https://github.com/alasdairnicol "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Albatross (@DyingAlbatross)](https://github.com/DyingAlbatross "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Albert Lee (@trisk)](https://github.com/trisk "18 total commits to the home-assistant organization, 11 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Alberto Arias Maestro (@albertoarias)](https://github.com/albertoarias "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "6 total commits to the home-assistant organization, 3 commits to hassio-addons, 3 commits to home-assistant.github.io") -- [Alex Harvey (@infamy)](https://github.com/infamy "29 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io, 4 commits to hassio-os") -- [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Alex Osadchyy (@aosadchyy)](https://github.com/aosadchyy "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Alex Tzonkov (@attzonko)](https://github.com/attzonko "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Alexander Bachmeier (@asbach)](https://github.com/asbach "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Alexander Kratzer (@hexxter)](https://github.com/hexxter "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Alexandre Perrin (@kAworu)](https://github.com/kAworu "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Alexis Iglauer (@ax42)](https://github.com/ax42 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant") -- [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to appdaemon, 2 commits to home-assistant") -- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "141 total commits to the home-assistant organization, 82 commits to home-assistant.github.io, 53 commits to home-assistant, 4 commits to home-assistant-polymer, 1 commit to hassio-addons, 1 commit to pi-gen") -- [amorsillo (@AndrewMorsillo)](https://github.com/AndrewMorsillo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "213 total commits to the home-assistant organization, 170 commits to home-assistant, 41 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") -- [andig (@andig)](https://github.com/andig "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Andreas Björshammar (@abjorshammar)](https://github.com/abjorshammar "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Andreas Jacobsen (@andreasjacobsen93)](https://github.com/andreasjacobsen93 "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to hassio-addons") -- [Andreas Rammhold (@andir)](https://github.com/andir "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Andreas Renberg (@IQAndreas)](https://github.com/IQAndreas "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Andreea\-Daniela Ene (@AndreeaEne)](https://github.com/AndreeaEne "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Andrei Pop (@andreipop2005)](https://github.com/andreipop2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Andrew (@aoakeson)](https://github.com/aoakeson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "815 total commits to the home-assistant organization, 680 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 22 commits to home-assistant.github.io") -- [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Andrew Stock (@watchforstock)](https://github.com/watchforstock "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Andrew Thigpen (@andythigpen)](https://github.com/andythigpen "33 total commits to the home-assistant organization, 32 commits to home-assistant, 1 commit to home-assistant-js") -- [Andrew Wedgbury (@sconemad)](https://github.com/sconemad "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [andrew-curtis (@andrew-curtis)](https://github.com/andrew-curtis "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Andrey (@andrey-git)](https://github.com/andrey-git "295 total commits to the home-assistant organization, 135 commits to home-assistant-polymer, 122 commits to home-assistant, 37 commits to home-assistant.github.io, 1 commit to home-assistant-js-websocket") -- [Andrey Kupreychik (@foxel)](https://github.com/foxel "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Andy Castille (@Klikini)](https://github.com/Klikini "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io") -- [anotherthomas (@anotherthomas)](https://github.com/anotherthomas "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Anthony Arnaud (@aarnaud)](https://github.com/aarnaud "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Anthony Hughes (@tony2nite)](https://github.com/tony2nite "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Antoine Bertin (@Diaoul)](https://github.com/Diaoul "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Anton Glukhov (@toxxin)](https://github.com/toxxin "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Anton Lundin (@glance-)](https://github.com/glance- "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to netdisco") -- [Anton Sarukhanov (@antsar)](https://github.com/antsar "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Antoni K (@Antoni-K)](https://github.com/Antoni-K "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts") -- [apo-mak (@apo-mak)](https://github.com/apo-mak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [arcsur (@arcsur)](https://github.com/arcsur "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Ardetus (@Ardetus)](https://github.com/Ardetus "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Ardi Mehist (@omgapuppy)](https://github.com/omgapuppy "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Ari Lotter (@arilotter)](https://github.com/arilotter "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Arno (@aetjansen)](https://github.com/aetjansen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [ArrayLabs (@arraylabs)](https://github.com/arraylabs "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [Arthur Leonard Andersen (@leoc)](https://github.com/leoc "9 total commits to the home-assistant organization, 9 commits to home-assistant") -- [Arttu mahlakaarto (@amahlaka)](https://github.com/amahlaka "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Ashton Campbell (@AshtonCampbell)](https://github.com/AshtonCampbell "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Assaf Inbal (@shmuelzon)](https://github.com/shmuelzon "11 total commits to the home-assistant organization, 9 commits to homebridge-homeassistant, 2 commits to home-assistant") -- [Audric Schiltknecht (@chemicalstorm)](https://github.com/chemicalstorm "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Audun Ytterdal (@auduny)](https://github.com/auduny "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Austin (@trainman419)](https://github.com/trainman419 "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Avraham David Gelbfish (@adgelbfish)](https://github.com/adgelbfish "2 total commits to the home-assistant organization, 1 commit to hadashboard, 1 commit to pi-gen") -- [azeroth12 (@azeroth12)](https://github.com/azeroth12 "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [baflo (@baflo)](https://github.com/baflo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Balázs Suhajda (@suhajdab)](https://github.com/suhajdab "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Baran Kaynak (@barankaynak)](https://github.com/barankaynak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Barry Williams (@bazwilliams)](https://github.com/bazwilliams "10 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io") -- [Bart274 (@Bart274)](https://github.com/Bart274 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Bas Schipper (@basschipper)](https://github.com/basschipper "9 total commits to the home-assistant organization, 7 commits to home-assistant, 2 commits to home-assistant.github.io") -- [bastshoes (@bastshoes)](https://github.com/bastshoes "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [battistaar (@battistaar)](https://github.com/battistaar "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [bcl1713 (@bcl1713)](https://github.com/bcl1713 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Beat (@bdurrer)](https://github.com/bdurrer "14 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Ben (@unixben)](https://github.com/unixben "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Ben Bangert (@bbangert)](https://github.com/bbangert "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Ben Doerr (@bendoerr)](https://github.com/bendoerr "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Ben Lebherz (@benleb)](https://github.com/benleb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Ben Nuttall (@bennuttall)](https://github.com/bennuttall "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Ben Origas (@borigas)](https://github.com/borigas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Ben Pirt (@bjpirt)](https://github.com/bjpirt "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Ben Randall (@veleek)](https://github.com/veleek "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Benedict Aas (@Shou)](https://github.com/Shou "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Benji (@bbbenji)](https://github.com/bbbenji "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Bertbert (@bertbert72)](https://github.com/bertbert72 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to home-assistant-polymer, 1 commit to hassio") -- [BigMoby (@bigmoby)](https://github.com/bigmoby "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [BioSehnsucht (@BioSehnsucht)](https://github.com/BioSehnsucht "14 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 4 commits to home-assistant, 2 commits to home-assistant-polymer") -- [Bjarni Ivarsson (@bjarniivarsson)](https://github.com/bjarniivarsson "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant-polymer") -- [Björn Orri (@bjornorri)](https://github.com/bjornorri "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") -- [Björn Ramberg (@bjorne)](https://github.com/bjorne "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [Blanyal D'Souza (@blanyal)](https://github.com/blanyal "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Bob Anderson (@rwa)](https://github.com/rwa "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Bob Igo (@Human)](https://github.com/Human "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [bonanitech (@bonanitech)](https://github.com/bonanitech "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [boojew (@boojew)](https://github.com/boojew "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Boris K (@bokub)](https://github.com/bokub "12 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.github.io") -- [bottomquark (@bottomquark)](https://github.com/bottomquark "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Boyi C (@fanthos)](https://github.com/fanthos "22 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 5 commits to home-assistant, 2 commits to home-assistant.github.io") -- [bpoirriez (@bpoirriez)](https://github.com/bpoirriez "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Brad Dixon (@rbdixon)](https://github.com/rbdixon "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Brad Johnson (@bradsk88)](https://github.com/bradsk88 "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Brahma Fear (@brahmafear)](https://github.com/brahmafear "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [Bram Kragten (@bramkragten)](https://github.com/bramkragten "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Brandon Mathis (@imathis)](https://github.com/imathis "484 total commits to the home-assistant organization, 484 commits to home-assistant.github.io") -- [Brandon Weeks (@brandonweeks)](https://github.com/brandonweeks "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [brburns (@brburns)](https://github.com/brburns "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [Brenda Wallace (@Br3nda)](https://github.com/Br3nda "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [Brent Hughes (@bah2830)](https://github.com/bah2830 "27 total commits to the home-assistant organization, 18 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco") -- [Brent Kerlin (@bkerlin)](https://github.com/bkerlin "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [Brent Saltzman (@brent20)](https://github.com/brent20 "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") -- [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "43 total commits to the home-assistant organization, 26 commits to home-assistant, 15 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") -- [Brian Fitzgerald (@Brianfit)](https://github.com/Brianfit "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Brian Hopkins (@btotharye)](https://github.com/btotharye "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Brian J King (@brianjking)](https://github.com/brianjking "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") -- [Brian Jinwright (@bjinwright)](https://github.com/bjinwright "159 total commits to the home-assistant organization, 159 commits to warrant") -- [Britton Clapp (@britton-clapp)](https://github.com/britton-clapp "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [BRUH Automation (@bruhautomation)](https://github.com/bruhautomation "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") -- [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant") -- [Bruno Binet (@bbinet)](https://github.com/bbinet "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [Bryce Edwards (@hoopty)](https://github.com/hoopty "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [bvansambeek (@bvansambeek)](https://github.com/bvansambeek "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [c727 (@c727)](https://github.com/c727 "71 total commits to the home-assistant organization, 50 commits to home-assistant-polymer, 13 commits to home-assistant.github.io, 6 commits to home-assistant, 2 commits to hassio") -- [Caius Cioran (@caiuspb)](https://github.com/caiuspb "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Caleb (@finish06)](https://github.com/finish06 "7 total commits to the home-assistant organization, 7 commits to home-assistant") -- [Cameron Bulock (@cbulock)](https://github.com/cbulock "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") -- [Cameron Moore (@moorereason)](https://github.com/moorereason "3 total commits to the home-assistant organization, 3 commits to hassio-cli") -- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "98 total commits to the home-assistant organization, 90 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant, 1 commit to hassbian-scripts") -- [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Carter (@BluGeni)](https://github.com/BluGeni "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [cdce8p (@cdce8p)](https://github.com/cdce8p "89 total commits to the home-assistant organization, 53 commits to home-assistant, 29 commits to home-assistant.github.io, 4 commits to home-assistant-polymer, 3 commits to hass-release") -- [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Cedric Van Goethem (@Zepheus)](https://github.com/Zepheus "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Cezar Sá Espinola (@cezarsa)](https://github.com/cezarsa "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [cgtobi (@cgtobi)](https://github.com/cgtobi "28 total commits to the home-assistant organization, 17 commits to home-assistant, 11 commits to home-assistant.github.io") -- [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard") -- [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "22 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 7 commits to home-assistant, 3 commits to home-assistant-polymer") -- [Charles Spirakis (@srcLurker)](https://github.com/srcLurker "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Chayoung You (@yous)](https://github.com/yous "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Check your git settings\! (@invalid-email-address)](https://github.com/invalid-email-address "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Chia\-liang Kao (@clkao)](https://github.com/clkao "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Chris (@chennin)](https://github.com/chennin "15 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 4 commits to home-assistant") -- [Chris Aloi (@ctaloi)](https://github.com/ctaloi "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Chris Crowe (@chriscrowe)](https://github.com/chriscrowe "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant") -- [Chris Huegle (@chuegle)](https://github.com/chuegle "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Chris Jones (@fezfox)](https://github.com/fezfox "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Chris Monteiro (@cmonteiro128)](https://github.com/cmonteiro128 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Chris Mulder (@chrisvis)](https://github.com/chrisvis "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Chris Smolen (@smolz)](https://github.com/smolz "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to appdaemon") -- [Chris Thorn (@chris-thorn)](https://github.com/chris-thorn "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [ChrisS85 (@ChrisS85)](https://github.com/ChrisS85 "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [Christiaan Blom (@Deinara)](https://github.com/Deinara "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Christian Brædstrup (@LinuxChristian)](https://github.com/LinuxChristian "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Christian Lasarczyk (@ChrisLasar)](https://github.com/ChrisLasar "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Christian Studer (@cstuder)](https://github.com/cstuder "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "37 total commits to the home-assistant organization, 22 commits to home-assistant, 15 commits to home-assistant.github.io") -- [Christoffer Kylvåg (@christoe)](https://github.com/christoe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Christoph Wagner (@Christoph-Wagner)](https://github.com/Christoph-Wagner "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Christopher Vella (@chrisvella)](https://github.com/chrisvella "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Christopher Viel (@Chris-V)](https://github.com/Chris-V "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [chrysn (@chrysn)](https://github.com/chrysn "65 total commits to the home-assistant organization, 65 commits to libcoap") -- [chz^3 (@chzchzchz)](https://github.com/chzchzchz "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Ciquattro (@CiquattroFPV)](https://github.com/CiquattroFPV "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [citruz (@citruz)](https://github.com/citruz "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [clach04 (@clach04)](https://github.com/clach04 "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to hassbian-scripts") -- [Claus F\. Strasburger (@cfstras)](https://github.com/cfstras "5 total commits to the home-assistant organization, 5 commits to pi-gen") -- [cogneato (@cogneato)](https://github.com/cogneato "15 total commits to the home-assistant organization, 15 commits to home-assistant.github.io") -- [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Colin Frei (@colinfrei)](https://github.com/colinfrei "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Colin O'Dell (@colinodell)](https://github.com/colinodell "27 total commits to the home-assistant organization, 16 commits to home-assistant, 11 commits to home-assistant.github.io") -- [Colin Teubner (@netopiax)](https://github.com/netopiax "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Conrad Juhl Andersen (@cnrd)](https://github.com/cnrd "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "18 total commits to the home-assistant organization, 18 commits to home-assistant.github.io") -- [Corey Pauley (@devspacenine)](https://github.com/devspacenine "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") -- [corneyl (@corneyl)](https://github.com/corneyl "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Craig J\. Ward (@wardcraigj)](https://github.com/wardcraigj "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io") -- [CTLS (@CTLS)](https://github.com/CTLS "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [CV (@dagobert)](https://github.com/dagobert "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [cxlwill (@cxlwill)](https://github.com/cxlwill "4 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 2 commits to hassbian-scripts") -- [Dale Higgs (@dale3h)](https://github.com/dale3h "36 total commits to the home-assistant organization, 24 commits to home-assistant.github.io, 10 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant") -- [Dan (@danieljkemp)](https://github.com/danieljkemp "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Dan Chen (@djchen)](https://github.com/djchen "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "17 total commits to the home-assistant organization, 14 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Dan Faulknor (@danielfaulknor)](https://github.com/danielfaulknor "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Dan Nixon (@DanNixon)](https://github.com/DanNixon "25 total commits to the home-assistant organization, 19 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Dan Ports (@drkp)](https://github.com/drkp "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Dan Sarginson (@dansarginson)](https://github.com/dansarginson "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Dan Smith (@kk7ds)](https://github.com/kk7ds "84 total commits to the home-assistant organization, 68 commits to home-assistant, 14 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") -- [Dan Sullivan (@dansullivan86)](https://github.com/dansullivan86 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Dani (@danichispa)](https://github.com/danichispa "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") -- [Daniel (@delneet)](https://github.com/delneet "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "303 total commits to the home-assistant organization, 189 commits to home-assistant, 111 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "88 total commits to the home-assistant organization, 42 commits to home-assistant, 39 commits to home-assistant.github.io, 7 commits to hassio-addons") -- [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Daniel Schaal (@schaal)](https://github.com/schaal "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Daniel Shokouhi (@dshokouhi)](https://github.com/dshokouhi "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io") -- [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Daniel Trnka (@trnila)](https://github.com/trnila "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Daniel Welch (@danielwelch)](https://github.com/danielwelch "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to hassio-addons") -- [DanielXYZ2000 (@DanielXYZ2000)](https://github.com/DanielXYZ2000 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to hassio-addons") -- [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [dasos (@dasos)](https://github.com/dasos "11 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco") -- [datafx (@datafx)](https://github.com/datafx "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Dave (@d4v3d)](https://github.com/d4v3d "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Dave Banks (@djbanks)](https://github.com/djbanks "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Dave J (@kxtcd950)](https://github.com/kxtcd950 "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") -- [DaveSergeant (@dethpickle)](https://github.com/dethpickle "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [David (@fanaticDavid)](https://github.com/fanaticDavid "16 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [David \(Drew\) Jackson (@David-Jackson)](https://github.com/David-Jackson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [David Broadfoot (@dlbroadfoot)](https://github.com/dlbroadfoot "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "16 total commits to the home-assistant organization, 16 commits to home-assistant.github.io") -- [David Fiel (@dfiel)](https://github.com/dfiel "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [David Grant (@davegravy)](https://github.com/davegravy "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") -- [David McNett (@nugget)](https://github.com/nugget "10 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 5 commits to home-assistant") -- [David Ohayon (@ohayon)](https://github.com/ohayon "3 total commits to the home-assistant organization, 3 commits to issue-bot") -- [David Straub (@DavidMStraub)](https://github.com/DavidMStraub "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") -- [David Wang (@dcwangmit01)](https://github.com/dcwangmit01 "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [David\-Leon Pohl (@DavidLP)](https://github.com/DavidLP "15 total commits to the home-assistant organization, 13 commits to home-assistant, 2 commits to home-assistant.github.io") -- [davidedmundson (@davidedmundson)](https://github.com/davidedmundson "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Dawid Wróbel (@wrobelda)](https://github.com/wrobelda "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Dean Camera (@abcminiuser)](https://github.com/abcminiuser "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [deisi (@deisi)](https://github.com/deisi "10 total commits to the home-assistant organization, 10 commits to home-assistant") -- [Delio Castillo (@jangeador)](https://github.com/jangeador "2 total commits to the home-assistant organization, 2 commits to hassio-addons") -- [Demid Lupin (@lupin-de-mid)](https://github.com/lupin-de-mid "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Denix (@denics)](https://github.com/denics "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Dennis de Greef (@dennisdegreef)](https://github.com/dennisdegreef "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Dennis Karpienski (@TheRealLink)](https://github.com/TheRealLink "24 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 6 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") -- [Dennis Sutch (@sutch)](https://github.com/sutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Derek (@itchaboy)](https://github.com/itchaboy "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Derek Brooks (@broox)](https://github.com/broox "39 total commits to the home-assistant organization, 30 commits to home-assistant, 9 commits to home-assistant.github.io") -- [dersger (@dersger)](https://github.com/dersger "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [devdelay (@devdelay)](https://github.com/devdelay "16 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant, 4 commits to homebridge-homeassistant") -- [Devon Peet (@dpeet)](https://github.com/dpeet "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Diogo Gomes (@dgomes)](https://github.com/dgomes "46 total commits to the home-assistant organization, 28 commits to home-assistant, 18 commits to home-assistant.github.io") -- [DoloresHA (@DoloresHA)](https://github.com/DoloresHA "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Domantas (@Dohxis)](https://github.com/Dohxis "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [dramamoose (@dramamoose)](https://github.com/dramamoose "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [DrewSK (@dzsquared)](https://github.com/dzsquared "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [DubhAd (@DubhAd)](https://github.com/DubhAd "240 total commits to the home-assistant organization, 240 commits to home-assistant.github.io") -- [Duoxilian (@Duoxilian)](https://github.com/Duoxilian "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant") -- [ebpetway (@ebpetway)](https://github.com/ebpetway "55 total commits to the home-assistant organization, 55 commits to warrant") -- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Egor Tsinko (@etsinko)](https://github.com/etsinko "12 total commits to the home-assistant organization, 9 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to netdisco") -- [eldanb (@eldanb)](https://github.com/eldanb "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Ellis Percival (@flyte)](https://github.com/flyte "29 total commits to the home-assistant organization, 25 commits to home-assistant, 4 commits to home-assistant.github.io") -- [endor-force (@endor-force)](https://github.com/endor-force "9 total commits to the home-assistant organization, 4 commits to hassio-addons, 4 commits to home-assistant.github.io, 1 commit to hassio-build") -- [engrbm87 (@engrbm87)](https://github.com/engrbm87 "3 total commits to the home-assistant organization, 3 commits to appdaemon") -- [Eric Hagan (@ehagan)](https://github.com/ehagan "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Eric Oosting (@eoosting)](https://github.com/eoosting "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Eric Rolf (@xrolfex)](https://github.com/xrolfex "13 total commits to the home-assistant organization, 13 commits to home-assistant") -- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "116 total commits to the home-assistant organization, 100 commits to home-assistant, 13 commits to home-assistant.github.io, 3 commits to netdisco") -- [Erik\-jan Riemers (@riemers)](https://github.com/riemers "14 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 1 commit to hassbian-scripts") -- [escoand (@escoand)](https://github.com/escoand "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco") -- [ettisan (@ettisan)](https://github.com/ettisan "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Eu (@covrig)](https://github.com/covrig "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Eugenio Panadero (@azogue)](https://github.com/azogue "76 total commits to the home-assistant organization, 45 commits to home-assistant, 25 commits to home-assistant.github.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer") -- [Ezra Bowden (@bn0)](https://github.com/bn0 "2 total commits to the home-assistant organization, 2 commits to warrant") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4643 total commits to the home-assistant organization, 2964 commits to home-assistant.github.io, 1567 commits to home-assistant, 32 commits to home-assistant-assets, 31 commits to home-assistant-notebooks, 11 commits to hassio-build, 11 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 4 commits to hassio, 3 commits to development-docs, 3 commits to hassio-os, 2 commits to home-assistant-iOS, 1 commit to example-custom-config, 1 commit to home-assistant-js-websocket") -- [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Fabien Piuzzi (@reefab)](https://github.com/reefab "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") -- [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant") -- [Felix (@xifle)](https://github.com/xifle "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Felix Krause (@KrauseFx)](https://github.com/KrauseFx "27 total commits to the home-assistant organization, 27 commits to issue-bot") -- [Ferry van Zeelst (@StaticCube)](https://github.com/StaticCube "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco") -- [Florian Klien (@flowolf)](https://github.com/flowolf "17 total commits to the home-assistant organization, 14 commits to home-assistant.github.io, 3 commits to home-assistant") -- [florianj1 (@florianj1)](https://github.com/florianj1 "1 total commits to the home-assistant organization, 1 commit to hassio") -- [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Franck Nijhof (@frenck)](https://github.com/frenck "30 total commits to the home-assistant organization, 21 commits to home-assistant.github.io, 5 commits to hassio, 2 commits to home-assistant-polymer, 1 commit to hassio-cli, 1 commit to appdaemon") -- [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Frantz (@rofrantz)](https://github.com/rofrantz "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco") -- [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.github.io") -- [Frederik Bolding (@FrederikBolding)](https://github.com/FrederikBolding "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "212 total commits to the home-assistant organization, 100 commits to hassbian-scripts, 73 commits to home-assistant.github.io, 34 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") -- [freol35241 (@freol35241)](https://github.com/freol35241 "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io") -- [Gabor SZOLLOSI (@szogi)](https://github.com/szogi "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to appdaemon") -- [GadgetReactor (@GadgetReactor)](https://github.com/GadgetReactor "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Geoff Norton (@kangaroo)](https://github.com/kangaroo "14 total commits to the home-assistant organization, 14 commits to home-assistant") -- [George\.M (@nodinosaur)](https://github.com/nodinosaur "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Georgi Kirichkov (@kirichkov)](https://github.com/kirichkov "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to appdaemon") -- [Georgi Yanev (@jumpalottahigh)](https://github.com/jumpalottahigh "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") -- [Georgii Staroselskii (@staroselskii)](https://github.com/staroselskii "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Gerard (@gerard33)](https://github.com/gerard33 "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant") -- [Gergely Imreh (@imrehg)](https://github.com/imrehg "16 total commits to the home-assistant organization, 11 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Gianluca Barbaro (@MrMep)](https://github.com/MrMep "24 total commits to the home-assistant organization, 16 commits to home-assistant, 8 commits to home-assistant.github.io") -- [Giel Janssens (@gieljnssns)](https://github.com/gieljnssns "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [GitBook Bot (@gitbook-bot)](https://github.com/gitbook-bot "1 total commits to the home-assistant organization, 1 commit to developers.home-assistant") -- [githubbuh (@githubbuh)](https://github.com/githubbuh "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [gitmopp (@gitmopp)](https://github.com/gitmopp "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Giuseppe (@glpatcern)](https://github.com/glpatcern "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [GMFalka (@GMFalka)](https://github.com/GMFalka "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Gopal Kildoliya (@gopalkildoliya)](https://github.com/gopalkildoliya "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Grant McConnaughey (@grantmcconnaughey)](https://github.com/grantmcconnaughey "8 total commits to the home-assistant organization, 8 commits to warrant") -- [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "80 total commits to the home-assistant organization, 75 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Greg Dowling (@pavoni)](https://github.com/pavoni "255 total commits to the home-assistant organization, 228 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") -- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "14 total commits to the home-assistant organization, 11 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Greg Stevenson (@gstevenson)](https://github.com/gstevenson "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Greg\. A\. (@gautric)](https://github.com/gautric "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [GTH (@gunnarhelgason)](https://github.com/gunnarhelgason "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Guillaume Rischard (@grischard)](https://github.com/grischard "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Gustav Ahlberg (@Gyran)](https://github.com/Gyran "20 total commits to the home-assistant organization, 20 commits to home-assistant") -- [gwendalg (@gwendalg)](https://github.com/gwendalg "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "114 total commits to the home-assistant organization, 90 commits to home-assistant, 23 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Harald Nagel (@haraldnagel)](https://github.com/haraldnagel "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Harris Borawski (@hborawski)](https://github.com/hborawski "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [hawk259 (@hawk259)](https://github.com/hawk259 "13 total commits to the home-assistant organization, 7 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Heath Paddock (@heathbar)](https://github.com/heathbar "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Heiko Rothe (@mKeRix)](https://github.com/mKeRix "20 total commits to the home-assistant organization, 15 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Heiko Thiery (@hthiery)](https://github.com/hthiery "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Hellowlol (@Hellowlol)](https://github.com/Hellowlol "4 total commits to the home-assistant organization, 3 commits to netdisco, 1 commit to appdaemon") -- [Helmut Januschka (@hjanuschka)](https://github.com/hjanuschka "3 total commits to the home-assistant organization, 3 commits to issue-bot") -- [Henning Dickten (@hensing)](https://github.com/hensing "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Henrik Nicolaisen (@hmn)](https://github.com/hmn "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Hernán Rossetto (@hmronline)](https://github.com/hmronline "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [heytcass (@heytcass)](https://github.com/heytcass "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Hillary Fraley (@hillaryfraley)](https://github.com/hillaryfraley "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io") -- [honcheng (@honcheng)](https://github.com/honcheng "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") -- [Hugo Dupras (@jabesq)](https://github.com/jabesq "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io") -- [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [Hung Le (@hungle)](https://github.com/hungle "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Hydreliox (@HydrelioxGitHub)](https://github.com/HydrelioxGitHub "46 total commits to the home-assistant organization, 34 commits to home-assistant, 12 commits to home-assistant.github.io") -- [Ian Copp (@icopp)](https://github.com/icopp "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [ianj001 (@ianj001)](https://github.com/ianj001 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Igor Bernstein (@igorbernstein2)](https://github.com/igorbernstein2 "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Igor Shults (@ishults)](https://github.com/ishults "12 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") -- [Issac Kelly (@issackelly)](https://github.com/issackelly "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Jacen (@jacen92)](https://github.com/jacen92 "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [jack (@jackmakesthings)](https://github.com/jackmakesthings "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jack Chapple (@jchapple)](https://github.com/jchapple "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jack Fan (@JackWindows)](https://github.com/JackWindows "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jack Minardi (@jminardi)](https://github.com/jminardi "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Jacob Mansfield (@cyberjacob)](https://github.com/cyberjacob "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Jacob Minnis (@jminn)](https://github.com/jminn "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jacob Siverskog (@jsiverskog)](https://github.com/jsiverskog "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Jacob Tomlinson (@jacobtomlinson)](https://github.com/jacobtomlinson "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Jaimyn Mayer (@jabelone)](https://github.com/jabelone "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts") -- [Jakub Bittner (@rexcze)](https://github.com/rexcze "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") -- [James Cole (@jamespcole)](https://github.com/jamespcole "94 total commits to the home-assistant organization, 93 commits to home-assistant, 1 commit to home-assistant-js") -- [James Marsh (@doctorjames)](https://github.com/doctorjames "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [James Ruan (@jamesruan)](https://github.com/jamesruan "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Jamie van Dyke (@fearoffish)](https://github.com/fearoffish "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") -- [JammyDodger231 (@JammyDodger231)](https://github.com/JammyDodger231 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Jan Harkes (@jaharkes)](https://github.com/jaharkes "110 total commits to the home-assistant organization, 100 commits to home-assistant, 10 commits to netdisco") -- [Jan Losinski (@janLo)](https://github.com/janLo "21 total commits to the home-assistant organization, 16 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Jan Pobořil (@iBobik)](https://github.com/iBobik "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jan Willhaus (@janwh)](https://github.com/janwh "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Janne Grunau (@jannau)](https://github.com/jannau "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jared J\. (@jjensn)](https://github.com/jjensn "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Jason Carter (@JasonCarter80)](https://github.com/JasonCarter80 "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Jason Hite (@jasonmhite)](https://github.com/jasonmhite "6 total commits to the home-assistant organization, 6 commits to appdaemon") -- [Javier González Calleja (@gonzalezcalleja)](https://github.com/gonzalezcalleja "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jay Stevens (@Jay2645)](https://github.com/Jay2645 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [JAYMAN-ATX (@JAYMAN-ATX)](https://github.com/JAYMAN-ATX "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") -- [JC Connell (@jcconnell)](https://github.com/jcconnell "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") -- [Jean Regisser (@jeanregisser)](https://github.com/jeanregisser "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jean\-Michel Julien (@KurdyMalloy)](https://github.com/KurdyMalloy "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Jean\-Philippe Bouillot (@Jypy)](https://github.com/Jypy "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jeff McGehee (@jlmcgehee21)](https://github.com/jlmcgehee21 "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jeff Schroeder (@SEJeff)](https://github.com/SEJeff "17 total commits to the home-assistant organization, 17 commits to home-assistant") -- [Jeff Wilson (@jawilson)](https://github.com/jawilson "24 total commits to the home-assistant organization, 19 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Jeffrey Lin (@linjef)](https://github.com/linjef "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Jens (@jhoepken)](https://github.com/jhoepken "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jens Østergaard Nielsen (@dingusdk)](https://github.com/dingusdk "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Jerad Meisner (@jeradM)](https://github.com/jeradM "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Jeremiah Wuenschel (@jer)](https://github.com/jer "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [jeremysv (@jeremysv)](https://github.com/jeremysv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "36 total commits to the home-assistant organization, 20 commits to home-assistant, 16 commits to home-assistant.github.io") -- [Jerold Albertson (@jeroldalbertson-wf)](https://github.com/jeroldalbertson-wf "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [Jesse Hills (@jesserockz)](https://github.com/jesserockz "9 total commits to the home-assistant organization, 9 commits to home-assistant") -- [Jesse Newland (@jnewland)](https://github.com/jnewland "14 total commits to the home-assistant organization, 11 commits to home-assistant, 3 commits to hubot-home-assistant") -- [JesseWebDotCom (@JesseWebDotCom)](https://github.com/JesseWebDotCom "16 total commits to the home-assistant organization, 8 commits to home-assistant, 8 commits to home-assistant.github.io") -- [jgrieger1 (@jgrieger1)](https://github.com/jgrieger1 "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [jiafengwang (@jiafengwang)](https://github.com/jiafengwang "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Joakim Nohlgård (@gebart)](https://github.com/gebart "2 total commits to the home-assistant organization, 2 commits to libcoap") -- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "107 total commits to the home-assistant organization, 89 commits to hassbian-scripts, 18 commits to home-assistant.github.io") -- [Job (@jmvermeulen)](https://github.com/jmvermeulen "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [jodur (@jodur)](https://github.com/jodur "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Joe Lu (@snjoetw)](https://github.com/snjoetw "24 total commits to the home-assistant organization, 18 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to appdaemon") -- [Joe McMonagle (@joemcmonagle)](https://github.com/joemcmonagle "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io") -- [joe248 (@joe248)](https://github.com/joe248 "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Joeboyc2 (@Joeboyc2)](https://github.com/Joeboyc2 "15 total commits to the home-assistant organization, 15 commits to home-assistant.github.io") -- [Johan Bloemberg (@aequitas)](https://github.com/aequitas "43 total commits to the home-assistant organization, 35 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") -- [Johan Haals (@jhaals)](https://github.com/jhaals "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Johan van der Kuijl (@Rubyan)](https://github.com/Rubyan "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to appdaemon") -- [Johann Kellerman (@kellerza)](https://github.com/kellerza "177 total commits to the home-assistant organization, 145 commits to home-assistant, 32 commits to home-assistant.github.io") -- [Johannes K\. (@roadrash2108)](https://github.com/roadrash2108 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [John (@J-C-B)](https://github.com/J-C-B "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [John Allen (@jra3)](https://github.com/jra3 "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "204 total commits to the home-assistant organization, 151 commits to home-assistant, 37 commits to home-assistant.github.io, 16 commits to home-assistant-polymer") -- [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [John Mihalic (@mezz64)](https://github.com/mezz64 "50 total commits to the home-assistant organization, 36 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to hadashboard, 1 commit to home-assistant-polymer") -- [Johnny Chadda (@joch)](https://github.com/joch "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Jon (@JonMurphy)](https://github.com/JonMurphy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jon Caruana (@joncar)](https://github.com/joncar "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Jon Griffith (@arretx)](https://github.com/arretx "12 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 1 commit to appdaemon") -- [Jon Maddox (@maddox)](https://github.com/maddox "107 total commits to the home-assistant organization, 82 commits to home-assistant, 16 commits to homebridge-homeassistant, 9 commits to home-assistant.github.io") -- [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Jonatan Castro (@jcastro)](https://github.com/jcastro "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Jonathan Baginski (@patchedsoul)](https://github.com/patchedsoul "115 total commits to the home-assistant organization, 87 commits to fabric-home-assistant, 28 commits to home-assistant.github.io") -- [Jonathan Weinberg (@jonathanweinberg)](https://github.com/jonathanweinberg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [joopert (@joopert)](https://github.com/joopert "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Jordi (@hokus15)](https://github.com/hokus15 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jordy (@jbarrancos)](https://github.com/jbarrancos "40 total commits to the home-assistant organization, 40 commits to home-assistant") -- [Jose Juan Montes (@jjmontesl)](https://github.com/jjmontesl "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Joseph Carter (@iKarith)](https://github.com/iKarith "9 total commits to the home-assistant organization, 9 commits to pi-gen") -- [Joseph Piron (@eagleamon)](https://github.com/eagleamon "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Josh (@karlw00t)](https://github.com/karlw00t "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Josh Anderson (@andersonshatch)](https://github.com/andersonshatch "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to homebridge-homeassistant") -- [Josh Nichols (@technicalpickles)](https://github.com/technicalpickles "28 total commits to the home-assistant organization, 15 commits to home-assistant, 13 commits to home-assistant.github.io") -- [Josh Wright (@JshWright)](https://github.com/JshWright "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io") -- [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [JudgeDredd (@JudgeDreddKLC)](https://github.com/JudgeDreddKLC "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") -- [Juggels (@Juggels)](https://github.com/Juggels "11 total commits to the home-assistant organization, 7 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Julian Kaffke (@jaykay)](https://github.com/jaykay "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "31 total commits to the home-assistant organization, 24 commits to home-assistant, 7 commits to home-assistant.github.io") -- [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Justin Dray (@justin8)](https://github.com/justin8 "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Justin Hayes (@GussyH)](https://github.com/GussyH "8 total commits to the home-assistant organization, 7 commits to hadashboard, 1 commit to appdaemon") -- [Justin Weberg (@justweb1)](https://github.com/justweb1 "26 total commits to the home-assistant organization, 13 commits to home-assistant-polymer, 7 commits to hassbot, 4 commits to home-assistant, 1 commit to home-assistant-js, 1 commit to hassio") -- [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [karlkar (@karlkar)](https://github.com/karlkar "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Keith Lamprecht (@Nixon506E)](https://github.com/Nixon506E "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Ken Bannister (@kb2ma)](https://github.com/kb2ma "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Ken Davidson (@kwdavidson)](https://github.com/kwdavidson "13 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 2 commits to appdaemon") -- [kennedyshead (@kennedyshead)](https://github.com/kennedyshead "10 total commits to the home-assistant organization, 10 commits to home-assistant") -- [Kenny Millington (@kmdm)](https://github.com/kmdm "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Kevin (@Mister-Espria)](https://github.com/Mister-Espria "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Kevin Fronczak (@fronzbot)](https://github.com/fronzbot "19 total commits to the home-assistant organization, 11 commits to home-assistant, 8 commits to home-assistant.github.io") -- [Kevin Gisi (@gisikw)](https://github.com/gisikw "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Kevin Gottsman (@gottsman)](https://github.com/gottsman "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Kevin Raddatz (@chronm)](https://github.com/chronm "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Kevin Siml (@appzer)](https://github.com/appzer "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Keyasha Brothern (@KMBrothern)](https://github.com/KMBrothern "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [kfcook (@kfcook)](https://github.com/kfcook "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Khole (@KJonline)](https://github.com/KJonline "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [kireyeu (@kireyeu)](https://github.com/kireyeu "4 total commits to the home-assistant organization, 4 commits to home-assistant-notebooks") -- [Klaas Hoekema (@KlaasH)](https://github.com/KlaasH "12 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 5 commits to home-assistant, 2 commits to home-assistant-polymer") -- [Klaus (@k-laus)](https://github.com/k-laus "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [koolsb (@koolsb)](https://github.com/koolsb "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Kory Prince (@korylprince)](https://github.com/korylprince "4 total commits to the home-assistant organization, 4 commits to home-assistant-polymer") -- [Krasimir Chariyski (@Chariyski)](https://github.com/Chariyski "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Krasimir Zhelev (@zhelev)](https://github.com/zhelev "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [kroimon (@kroimon)](https://github.com/kroimon "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Kyle Hendricks (@kylehendricks)](https://github.com/kylehendricks "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [lamiskin (@lamiskin)](https://github.com/lamiskin "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Lars Englund (@larsenglund)](https://github.com/larsenglund "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [lee-js (@lee-js)](https://github.com/lee-js "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Leon99 (@Leon99)](https://github.com/Leon99 "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Lev Aronsky (@aronsky)](https://github.com/aronsky "14 total commits to the home-assistant organization, 11 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Lewis Juggins (@lwis)](https://github.com/lwis "66 total commits to the home-assistant organization, 53 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [lichtteil (@lichtteil)](https://github.com/lichtteil "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Lindsay Ward (@lindsaymarkward)](https://github.com/lindsaymarkward "18 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 5 commits to home-assistant") -- [linuxlurak (@linuxlurak)](https://github.com/linuxlurak "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to hadashboard") -- [linvinus (@linvinus)](https://github.com/linvinus "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [lrmate (@lrmate)](https://github.com/lrmate "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Luar Roji (@cyberplant)](https://github.com/cyberplant "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Luc Touraille (@stilllman)](https://github.com/stilllman "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Luca Angemi (@luca-angemi)](https://github.com/luca-angemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Ludovic (@ldvc)](https://github.com/ldvc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Ludovico de Nittis (@RyuzakiKK)](https://github.com/RyuzakiKK "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Lukas (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "14 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "33 total commits to the home-assistant organization, 20 commits to home-assistant, 11 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") -- [Lukas Ecklmayr (@outrun0506)](https://github.com/outrun0506 "6 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Lukas Porubcan (@Luc3as)](https://github.com/Luc3as "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "8 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Maarten Groeneweg (@lazytesting)](https://github.com/lazytesting "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Maciej Bieniek (@bieniu)](https://github.com/bieniu "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to hassio-build") -- [Maciej Wasilak (@mwasilak)](https://github.com/mwasilak "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.github.io") -- [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant") -- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "28 total commits to the home-assistant organization, 28 commits to home-assistant.github.io") -- [makemeasandwich (@makemeasandwich)](https://github.com/makemeasandwich "12 total commits to the home-assistant organization, 12 commits to home-assistant") -- [Marc Egli (@frog32)](https://github.com/frog32 "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Marc Forth (@mf-social)](https://github.com/mf-social "25 total commits to the home-assistant organization, 24 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") -- [Marc Khouri (@ubnt-marc-khouri)](https://github.com/ubnt-marc-khouri "3 total commits to the home-assistant organization, 2 commits to home-assistant-polymer, 1 commit to hassio-build") -- [Marc Pabst (@mxtra)](https://github.com/mxtra "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Marc Plano\-Lesay (@Kernald)](https://github.com/Kernald "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") -- [Marcel030nl (@Marcel030nl)](https://github.com/Marcel030nl "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "141 total commits to the home-assistant organization, 77 commits to home-assistant, 62 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer") -- [Marcin Domański (@kabturek)](https://github.com/kabturek "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 commits to appdaemon") -- [Marco (@marconett)](https://github.com/marconett "3 total commits to the home-assistant organization, 3 commits to appdaemon") -- [Marco Orovecchia (@Oro)](https://github.com/Oro "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "5 total commits to the home-assistant organization, 5 commits to hadashboard") -- [Marius (@ciotlosm)](https://github.com/ciotlosm "13 total commits to the home-assistant organization, 8 commits to home-assistant-polymer, 5 commits to home-assistant") -- [Mark Coombes (@marthoc)](https://github.com/marthoc "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Mark Grosen (@mgsb)](https://github.com/mgsb "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Mark Huson (@mehuman)](https://github.com/mehuman "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [Mark Perdue (@markperdue)](https://github.com/markperdue "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [mark9white (@mark9white)](https://github.com/mark9white "1 total commits to the home-assistant organization, 1 commit to hassio") -- [markferry (@markferry)](https://github.com/markferry "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Markus (@iMarkus)](https://github.com/iMarkus "1 total commits to the home-assistant organization, 1 commit to hassio") -- [Markus Becker (@markushx)](https://github.com/markushx "6 total commits to the home-assistant organization, 6 commits to libcoap") -- [Markus Peter (@bimbar)](https://github.com/bimbar "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Markus Stenberg (@fingon)](https://github.com/fingon "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Martin Berg (@mbrrg)](https://github.com/mbrrg "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Martin Eberhardt (@DarkFox)](https://github.com/DarkFox "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "154 total commits to the home-assistant organization, 125 commits to home-assistant, 29 commits to home-assistant.github.io") -- [Martin Rowan (@shortbloke)](https://github.com/shortbloke "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Martin Weinelt (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Matt N\. (@mnoorenberghe)](https://github.com/mnoorenberghe "54 total commits to the home-assistant organization, 25 commits to home-assistant-iOS, 17 commits to home-assistant.github.io, 9 commits to home-assistant, 2 commits to home-assistant-polymer, 1 commit to homebridge-homeassistant") -- [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the home-assistant organization, 20 commits to hadashboard") -- [Matt Schmitt (@schmittx)](https://github.com/schmittx "68 total commits to the home-assistant organization, 52 commits to homebridge-homeassistant, 9 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") -- [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Matthew Bowen (@mgbowen)](https://github.com/mgbowen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Matthew Garrett (@mjg59)](https://github.com/mjg59 "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Matthew Rollings (@stealthcopter)](https://github.com/stealthcopter "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Matthias Dötsch (@brainexe)](https://github.com/brainexe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Matthias Urlichs (@smurfix)](https://github.com/smurfix "3 total commits to the home-assistant organization, 3 commits to appdaemon") -- [Mattias Welponer (@mxworm)](https://github.com/mxworm "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [mattie47 (@mattie47)](https://github.com/mattie47 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Max Prokhorov (@mcspr)](https://github.com/mcspr "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [maxclaey (@maxclaey)](https://github.com/maxclaey "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [maxlaverse (@maxlaverse)](https://github.com/maxlaverse "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") -- [mcfrojd (@mcfrojd)](https://github.com/mcfrojd "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Menno Blom (@b10m)](https://github.com/b10m "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to netdisco") -- [mertenats (@mertenats)](https://github.com/mertenats "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Micha LaQua (@milaq)](https://github.com/milaq "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Michael (@hartmms)](https://github.com/hartmms "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Michael Auchter (@auchter)](https://github.com/auchter "13 total commits to the home-assistant organization, 13 commits to home-assistant") -- [Michael Fester (@michaelfester)](https://github.com/michaelfester "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Michael Furtak (@mfurtak)](https://github.com/mfurtak "5 total commits to the home-assistant organization, 5 commits to issue-bot") -- [Michael Gilbert (@Zyell)](https://github.com/Zyell "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Michael Kutý (@michaelkuty)](https://github.com/michaelkuty "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Michael Luggen (@l00mi)](https://github.com/l00mi "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Michael Requeny (@requenym)](https://github.com/requenym "14 total commits to the home-assistant organization, 14 commits to home-assistant.github.io") -- [Michael Shim (@shimeez)](https://github.com/shimeez "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") -- [Michaël Arnauts (@michaelarnauts)](https://github.com/michaelarnauts "64 total commits to the home-assistant organization, 33 commits to home-assistant, 27 commits to home-assistant.github.io, 3 commits to home-assistant-polymer, 1 commit to netdisco") -- [Michel Settembrino (@Michel-Settembrino)](https://github.com/Michel-Settembrino "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [micw (@micw)](https://github.com/micw "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Mike (@mradziwo)](https://github.com/mradziwo "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Mike Christianson (@MikeChristianson)](https://github.com/MikeChristianson "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Mike Megally (@cmsimike)](https://github.com/cmsimike "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Mike Nestor (@mnestor)](https://github.com/mnestor "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Mike O'Driscoll (@mikeodr)](https://github.com/mikeodr "8 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 3 commits to home-assistant") -- [Mikkel Høgh (@mikl)](https://github.com/mikl "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Milan V\. (@milanvo)](https://github.com/milanvo "18 total commits to the home-assistant organization, 10 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [miniconfig (@miniconfig)](https://github.com/miniconfig "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Minims (@Minims)](https://github.com/Minims "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant") -- [Mister Wil (@MisterWil)](https://github.com/MisterWil "20 total commits to the home-assistant organization, 14 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Mitesh Patel (@gurumitts)](https://github.com/gurumitts "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") -- [mjj4791 (@mjj4791)](https://github.com/mjj4791 "23 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 8 commits to home-assistant") -- [mmmmmtasty (@mmmmmtasty)](https://github.com/mmmmmtasty "8 total commits to the home-assistant organization, 8 commits to appdaemon") -- [Molodax (@Molodax)](https://github.com/Molodax "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [moskovskiy82 (@moskovskiy82)](https://github.com/moskovskiy82 "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [motir (@motir)](https://github.com/motir "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [mountainsandcode (@mountainsandcode)](https://github.com/mountainsandcode "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [mukundv (@mukundv)](https://github.com/mukundv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Mārtiņš Grunskis (@grunskis)](https://github.com/grunskis "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Nash Kaminski (@nkaminski)](https://github.com/nkaminski "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Nathan Flynn (@eperdeme)](https://github.com/eperdeme "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to home-assistant-polymer, 1 commit to appdaemon") -- [Neil Lathwood (@laf)](https://github.com/laf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Nelis Willers (@NelisW)](https://github.com/NelisW "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") -- [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [neonbunny (@neonbunny)](https://github.com/neonbunny "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Nicholas Amadori (@namadori)](https://github.com/namadori "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Nicholas Griffin (@nicholasgriffintn)](https://github.com/nicholasgriffintn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Nick Touran (@partofthething)](https://github.com/partofthething "38 total commits to the home-assistant organization, 25 commits to home-assistant, 13 commits to home-assistant.github.io") -- [Nicko van Someren (@nickovs)](https://github.com/nickovs "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Nicolas Graziano (@ngraziano)](https://github.com/ngraziano "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Nicolas Martignoni (@martignoni)](https://github.com/martignoni "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [nielstron (@nielstron)](https://github.com/nielstron "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [Nigel Rook (@NigelRook)](https://github.com/NigelRook "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Niklas (@niklaswa)](https://github.com/niklaswa "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Niklas Wagner (@Skaronator)](https://github.com/Skaronator "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "123 total commits to the home-assistant organization, 95 commits to home-assistant, 28 commits to home-assistant.github.io") -- [nordlead2005 (@nordlead2005)](https://github.com/nordlead2005 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [NotoriousBDG (@notoriousbdg)](https://github.com/notoriousbdg "3 total commits to the home-assistant organization, 3 commits to hassio-addons") -- [NovapaX (@NovapaX)](https://github.com/NovapaX "56 total commits to the home-assistant organization, 50 commits to home-assistant-polymer, 5 commits to home-assistant, 1 commit to home-assistant-assets") -- [ntalekt (@ntalekt)](https://github.com/ntalekt "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Nuno Sousa (@nunofgs)](https://github.com/nunofgs "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to homebridge-homeassistant") -- [obgm (@obgm)](https://github.com/obgm "480 total commits to the home-assistant organization, 480 commits to libcoap") -- [OLD PROFILE\! Go to /dennisreimann (@dbloete)](https://github.com/dbloete "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Ole\-Kenneth (@olekenneth)](https://github.com/olekenneth "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Oleksii Serdiuk (@leppa)](https://github.com/leppa "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Oliv3rDog (@Oliv3rDog)](https://github.com/Oliv3rDog "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "27 total commits to the home-assistant organization, 17 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to netdisco") -- [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the home-assistant organization, 10 commits to home-assistant") -- [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "41 total commits to the home-assistant organization, 29 commits to home-assistant, 12 commits to home-assistant.github.io") -- [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "56 total commits to the home-assistant organization, 45 commits to home-assistant, 8 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") -- [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Parker Moore (@parkr)](https://github.com/parkr "60 total commits to the home-assistant organization, 60 commits to home-assistant.github.io") -- [pascal (@passie)](https://github.com/passie "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Pascal Bach (@bachp)](https://github.com/bachp "10 total commits to the home-assistant organization, 9 commits to home-assistant, 1 commit to netdisco") -- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "3005 total commits to the home-assistant organization, 1174 commits to hassio, 462 commits to home-assistant, 374 commits to hassio-build, 339 commits to hassio-addons, 318 commits to home-assistant.github.io, 307 commits to hassio-os, 16 commits to hassio-addons-example, 13 commits to hassio-cli, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") -- [Pat Thoyts (@patthoyts)](https://github.com/patthoyts "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Patrik (@ggravlingen)](https://github.com/ggravlingen "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Paul Annekov (@PaulAnnekov)](https://github.com/PaulAnnekov "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Paul Hendry (@pshendry)](https://github.com/pshendry "1 total commits to the home-assistant organization, 1 commit to warrant") -- [Paul Jimenez (@pjz)](https://github.com/pjz "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Paul Nicholls (@pauln)](https://github.com/pauln "2 total commits to the home-assistant organization, 2 commits to netdisco") -- [Paul Sokolovsky (@pfalcon)](https://github.com/pfalcon "6 total commits to the home-assistant organization, 3 commits to netdisco, 3 commits to home-assistant") -- [Pavel Ponomarev (@awsum)](https://github.com/awsum "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") -- [PawelWMS (@PawelWMS)](https://github.com/PawelWMS "12 total commits to the home-assistant organization, 12 commits to libcoap") -- [Pedro Navarro (@pedronavf)](https://github.com/pedronavf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Pedro Pombeiro (@PombeirP)](https://github.com/PombeirP "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Per Osbäck (@perosb)](https://github.com/perosb "18 total commits to the home-assistant organization, 18 commits to home-assistant") -- [Per Sandström (@persandstrom)](https://github.com/persandstrom "124 total commits to the home-assistant organization, 98 commits to home-assistant, 14 commits to home-assistant.github.io, 12 commits to home-assistant-polymer") -- [Pete Peterson (@petey)](https://github.com/petey "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [PeteBa (@PeteBa)](https://github.com/PeteBa "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant-polymer") -- [Peter Epley (@epleypa)](https://github.com/epleypa "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Petr Vraník (@konikvranik)](https://github.com/konikvranik "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io") -- [pezinek (@pezinek)](https://github.com/pezinek "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Phil (@godloth)](https://github.com/godloth "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") -- [Phil Cole (@filcole)](https://github.com/filcole "9 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 3 commits to home-assistant") -- [Phil Elson (@pelson)](https://github.com/pelson "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Phil Frost (@bitglue)](https://github.com/bitglue "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Phil Hawthorne (@philhawthorne)](https://github.com/philhawthorne "24 total commits to the home-assistant organization, 18 commits to home-assistant.github.io, 6 commits to home-assistant") -- [Phil Kates (@philk)](https://github.com/philk "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Philip Hofstetter (@pilif)](https://github.com/pilif "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Philip Howard (@Gadgetoid)](https://github.com/Gadgetoid "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Philip Kleimeyer (@philklei)](https://github.com/philklei "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Philip Lundrigan (@philipbl)](https://github.com/philipbl "65 total commits to the home-assistant organization, 56 commits to home-assistant, 9 commits to home-assistant.github.io") -- [Philip Rosenberg\-Watt (@PhilRW)](https://github.com/PhilRW "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Philipp Hellmich (@runningman84)](https://github.com/runningman84 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "38 total commits to the home-assistant organization, 25 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon") -- [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "33 total commits to the home-assistant organization, 20 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Pierre Ståhl (@postlund)](https://github.com/postlund "49 total commits to the home-assistant organization, 32 commits to home-assistant, 11 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer") -- [Piratonym (@Piratonym)](https://github.com/Piratonym "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [pkonnekermetametrics (@pkonnekermetametrics)](https://github.com/pkonnekermetametrics "5 total commits to the home-assistant organization, 5 commits to warrant") -- [PuckStar (@PuckStar)](https://github.com/PuckStar "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [R Huish (@Genestealer)](https://github.com/Genestealer "23 total commits to the home-assistant organization, 23 commits to home-assistant.github.io") -- [Raiford (@raiford)](https://github.com/raiford "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [rbflurry (@rbflurry)](https://github.com/rbflurry "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") -- [Reed Riley (@reedriley)](https://github.com/reedriley "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Rendili (@Rendili)](https://github.com/Rendili "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Rene Nulsch (@ReneNulschDE)](https://github.com/ReneNulschDE "21 total commits to the home-assistant organization, 14 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Rene Tode (@ReneTode)](https://github.com/ReneTode "38 total commits to the home-assistant organization, 38 commits to appdaemon") -- [Reza Moallemi (@moallemi)](https://github.com/moallemi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [rhooper (@rhooper)](https://github.com/rhooper "27 total commits to the home-assistant organization, 25 commits to home-assistant, 2 commits to hadashboard") -- [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Richard Arends (@Mosibi)](https://github.com/Mosibi "8 total commits to the home-assistant organization, 8 commits to home-assistant") -- [Richard Cox (@Khabi)](https://github.com/Khabi "15 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "13 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 6 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Richard Lucas (@lucasweb78)](https://github.com/lucasweb78 "9 total commits to the home-assistant organization, 9 commits to home-assistant") -- [Richard Niemand (@rniemand)](https://github.com/rniemand "1 total commits to the home-assistant organization, 1 commit to example-custom-config") -- [Rick (@rcuddy)](https://github.com/rcuddy "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [rkabadi (@rkabadi)](https://github.com/rkabadi "17 total commits to the home-assistant organization, 17 commits to home-assistant") -- [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Rob Cranfill (@RobCranfill)](https://github.com/RobCranfill "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1317 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 249 commits to home-assistant.github.io, 92 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to hassbot, 3 commits to appdaemon, 3 commits to scenegen, 3 commits to organization, 3 commits to home-assistant-js-websocket, 3 commits to hadashboard, 3 commits to home-assistant-js, 2 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to home-assistant-notebooks, 2 commits to micropython-home-assistant, 2 commits to home-assistant-assets") -- [Robert (@metbril)](https://github.com/metbril "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Robert Schütz (@dotlambda)](https://github.com/dotlambda "2 total commits to the home-assistant organization, 1 commit to netdisco, 1 commit to appdaemon") -- [Robert Svensson (@Kane610)](https://github.com/Kane610 "40 total commits to the home-assistant organization, 24 commits to home-assistant, 14 commits to home-assistant.github.io, 1 commit to home-assistant-polymer, 1 commit to netdisco") -- [Robin (@robmarkcole)](https://github.com/robmarkcole "42 total commits to the home-assistant organization, 27 commits to home-assistant.github.io, 14 commits to home-assistant, 1 commit to home-assistant-assets") -- [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [Roddie Hasan (@eiddor)](https://github.com/eiddor "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [roiff (@roiff)](https://github.com/roiff "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Ron Miller (@brainyron)](https://github.com/brainyron "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [roqeer (@roqeer)](https://github.com/roqeer "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Ross Schulman (@rschulman)](https://github.com/rschulman "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [rpitera (@rpitera)](https://github.com/rpitera "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Rubens Panfili (@rpanfili)](https://github.com/rpanfili "1 total commits to the home-assistant organization, 1 commit to hassio-addons") -- [rubund (@rubund)](https://github.com/rubund "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Ruslan Kiyanchuk (@zoresvit)](https://github.com/zoresvit "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Russ K (@rkubes)](https://github.com/rkubes "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Russell Cloran (@rcloran)](https://github.com/rcloran "31 total commits to the home-assistant organization, 27 commits to home-assistant, 4 commits to homebridge-homeassistant") -- [Ryan Bahm (@rdbahm)](https://github.com/rdbahm "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Ryan Jarvis (@Cabalist)](https://github.com/Cabalist "1 total commits to the home-assistant organization, 1 commit to hassbian-scripts") -- [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 163 commits to home-assistant, 15 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks") -- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "96 total commits to the home-assistant organization, 74 commits to hassio-cli, 16 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Ryan Turner (@turnrye)](https://github.com/turnrye "6 total commits to the home-assistant organization, 6 commits to home-assistant") -- [Sabesto (@Sabesto)](https://github.com/Sabesto "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Sacha Telgenhof (@stelgenhof)](https://github.com/stelgenhof "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Sam Holmes (@sam3d)](https://github.com/sam3d "4 total commits to the home-assistant organization, 4 commits to pi-gen") -- [sam-io (@sam-io)](https://github.com/sam-io "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [sander76 (@sander76)](https://github.com/sander76 "41 total commits to the home-assistant organization, 37 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Scott Bradshaw (@swbradshaw)](https://github.com/swbradshaw "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Scott Griffin (@scottocs11)](https://github.com/scottocs11 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Scott O'Neil (@americanwookie)](https://github.com/americanwookie "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Scott Reston (@ih8gates)](https://github.com/ih8gates "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Sean Dague (@sdague)](https://github.com/sdague "75 total commits to the home-assistant organization, 52 commits to home-assistant, 14 commits to home-assistant.github.io, 5 commits to home-assistant-polymer, 3 commits to netdisco, 1 commit to home-assistant-js") -- [Sean Gollschewsky (@gollo)](https://github.com/gollo "17 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to hassio-build") -- [Sean Wilson (@swilson)](https://github.com/swilson "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Sebastian (@sebk-666)](https://github.com/sebk-666 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Sebastian (@sgso)](https://github.com/sgso "3 total commits to the home-assistant organization, 3 commits to libcoap") -- [Sebastian Muszynski (@syssi)](https://github.com/syssi "115 total commits to the home-assistant organization, 69 commits to home-assistant, 42 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to netdisco") -- [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Semir Patel (@analogue)](https://github.com/analogue "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "9 total commits to the home-assistant organization, 9 commits to home-assistant") -- [Sergey Vishnikin (@armicron)](https://github.com/armicron "33 total commits to the home-assistant organization, 33 commits to warrant") -- [Sergio Viudes (@sjvc)](https://github.com/sjvc "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [sfam (@sfam)](https://github.com/sfam "65 total commits to the home-assistant organization, 58 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") -- [sharukins (@sharukins)](https://github.com/sharukins "3 total commits to the home-assistant organization, 3 commits to hassio-build") -- [siebert (@siebert)](https://github.com/siebert "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Simon (@echox)](https://github.com/echox "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Simon Szustkowski (@simonszu)](https://github.com/simonszu "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") -- [Sjors Spoorendonk (@sjorsjes)](https://github.com/sjorsjes "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [sjoshi10 (@sjoshi10)](https://github.com/sjoshi10 "1 total commits to the home-assistant organization, 1 commit to warrant") -- [snizzleorg (@snizzleorg)](https://github.com/snizzleorg "5 total commits to the home-assistant organization, 5 commits to hadashboard") -- [St\. John Johnson (@stjohnjohnson)](https://github.com/stjohnjohnson "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Stefan Jonasson (@stefan-jonasson)](https://github.com/stefan-jonasson "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Stefano Scipioni (@scipioni)](https://github.com/scipioni "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Steltek (@Steltek)](https://github.com/Steltek "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [stephanerosi (@stephanerosi)](https://github.com/stephanerosi "7 total commits to the home-assistant organization, 7 commits to home-assistant") -- [Stephen Edgar (@ntwb)](https://github.com/ntwb "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") -- [Stephen Yeargin (@stephenyeargin)](https://github.com/stephenyeargin "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Steve Easley (@SteveEasley)](https://github.com/SteveEasley "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Stu Gott (@stu-gott)](https://github.com/stu-gott "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant") -- [Stuart Williams (@stuwil)](https://github.com/stuwil "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [swanwila (@swanwila)](https://github.com/swanwila "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [System Tester (@systemtester)](https://github.com/systemtester "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Sytone (@sytone)](https://github.com/sytone "7 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 1 commit to hassio-build") -- [Sören Oldag (@soldag)](https://github.com/soldag "15 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 7 commits to home-assistant") -- [Tabakhase (@tabakhase)](https://github.com/tabakhase "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [tadly (@tadly)](https://github.com/tadly "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [tango-foxtrot (@tango-foxtrot)](https://github.com/tango-foxtrot "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Taylor Peet (@RePeet13)](https://github.com/RePeet13 "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") -- [Teagan Glenn (@Teagan42)](https://github.com/Teagan42 "59 total commits to the home-assistant organization, 49 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-js") -- [Ted Drain (@TD22057)](https://github.com/TD22057 "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [tedstriker (@tedstriker)](https://github.com/tedstriker "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Teemu Mikkonen (@T3m3z)](https://github.com/T3m3z "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Teemu R\. (@rytilahti)](https://github.com/rytilahti "53 total commits to the home-assistant organization, 40 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco") -- [Teguh Sobirin (@tjstyle)](https://github.com/tjstyle "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Tentoe (@Tentoe)](https://github.com/Tentoe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Theb-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [thecynic (@thecynic)](https://github.com/thecynic "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [TheFrogDaddy (@TheFrogDaddy)](https://github.com/TheFrogDaddy "1 total commits to the home-assistant organization, 1 commit to appdaemon") -- [themanieldaniel (@themanieldaniel)](https://github.com/themanieldaniel "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [Theodor Lindquist (@theolind)](https://github.com/theolind "25 total commits to the home-assistant organization, 25 commits to home-assistant") -- [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Thibault Cohen (@titilambert)](https://github.com/titilambert "47 total commits to the home-assistant organization, 34 commits to home-assistant, 13 commits to home-assistant.github.io") -- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to hassio-addons") -- [Thijs de Jong (@bakedraccoon)](https://github.com/bakedraccoon "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io") -- [ThinkPadNL (@ThinkPadNL)](https://github.com/ThinkPadNL "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Thom Troy (@ttroy50)](https://github.com/ttroy50 "13 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 6 commits to home-assistant") -- [Thomas Petazzoni (@tpetazzoni)](https://github.com/tpetazzoni "1 total commits to the home-assistant organization, 1 commit to libcoap") -- [Thomas Phillips (@thomas-phillips-nz)](https://github.com/thomas-phillips-nz "2 total commits to the home-assistant organization, 2 commits to pi-gen") -- [Thomas Purchas (@thomaspurchas)](https://github.com/thomaspurchas "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Thomas Pötsch (@thp-comnets)](https://github.com/thp-comnets "7 total commits to the home-assistant organization, 7 commits to libcoap") -- [thrawnarn (@thrawnarn)](https://github.com/thrawnarn "9 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco") -- [ThUnD3r\|Gr33n (@thundergreen)](https://github.com/thundergreen "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [tijuca (@tijuca)](https://github.com/tijuca "106 total commits to the home-assistant organization, 106 commits to libcoap") -- [Tim Wilbrink (@TWilb)](https://github.com/TWilb "15 total commits to the home-assistant organization, 15 commits to home-assistant-iOS") -- [Timo (@timotk)](https://github.com/timotk "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [timstanley1985 (@timstanley1985)](https://github.com/timstanley1985 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [TJ Rana (@tjrana)](https://github.com/tjrana "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [tleegaard (@tleegaard)](https://github.com/tleegaard "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Tobie Booth (@tobiebooth)](https://github.com/tobiebooth "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Toby Gray (@tobygray)](https://github.com/tobygray "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Tod Schmidt (@tschmidty69)](https://github.com/tschmidty69 "26 total commits to the home-assistant organization, 20 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio-addons") -- [toddeye (@toddeye)](https://github.com/toddeye "20 total commits to the home-assistant organization, 20 commits to home-assistant") -- [Tom Dickman (@tdickman)](https://github.com/tdickman "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Tom Duijf (@tomduijf)](https://github.com/tomduijf "70 total commits to the home-assistant organization, 53 commits to home-assistant, 9 commits to home-assistant.github.io, 6 commits to home-assistant-polymer, 2 commits to netdisco") -- [Tom Harris (@teharris1)](https://github.com/teharris1 "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [Tom Hoover (@tomhoover)](https://github.com/tomhoover "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Tom Matheussen (@Tommatheussen)](https://github.com/Tommatheussen "13 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant-polymer, 3 commits to home-assistant.github.io") -- [Tom Usher (@tomusher)](https://github.com/tomusher "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Tomi Salmi (@tomppasalmi)](https://github.com/tomppasalmi "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Tomi Tuhkanen (@ttu)](https://github.com/ttu "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [TopdRob (@TopdRob)](https://github.com/TopdRob "7 total commits to the home-assistant organization, 7 commits to home-assistant") -- [Torkild Retvedt (@torkildr)](https://github.com/torkildr "2 total commits to the home-assistant organization, 2 commits to appdaemon") -- [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Touliloup (@RiRomain)](https://github.com/RiRomain "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [tradiuz (@tradiuz)](https://github.com/tradiuz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [travislreno (@travislreno)](https://github.com/travislreno "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [trbs (@trbs)](https://github.com/trbs "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Trevor (@tboyce021)](https://github.com/tboyce021 "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io") -- [Trey Hunner (@treyhunner)](https://github.com/treyhunner "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant") -- [Tyler Page (@iamtpage)](https://github.com/iamtpage "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [uchagani (@uchagani)](https://github.com/uchagani "8 total commits to the home-assistant organization, 7 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Uli (@uehler)](https://github.com/uehler "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [UnrealKazu (@UnrealKazu)](https://github.com/UnrealKazu "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [upsert (@upsert)](https://github.com/upsert "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [User5981 (@User5981)](https://github.com/User5981 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Valentin Alexeev (@valentinalexeev)](https://github.com/valentinalexeev "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Victor Cerutti (@victorcerutti)](https://github.com/victorcerutti "3 total commits to the home-assistant organization, 3 commits to home-assistant-polymer") -- [Viet Dzung (@dzungpv)](https://github.com/dzungpv "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Vignesh Venkat (@vickyg3)](https://github.com/vickyg3 "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Ville Skyttä (@scop)](https://github.com/scop "40 total commits to the home-assistant organization, 19 commits to home-assistant, 10 commits to home-assistant.github.io, 4 commits to netdisco, 3 commits to hassio-addons, 2 commits to hassio-build, 2 commits to home-assistant-polymer") -- [viswa-swami (@viswa-swami)](https://github.com/viswa-swami "9 total commits to the home-assistant organization, 9 commits to home-assistant") -- [Vlad Korniev (@vkorn)](https://github.com/vkorn "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap") -- [vrs01 (@vrs01)](https://github.com/vrs01 "20 total commits to the home-assistant organization, 14 commits to home-assistant.github.io, 6 commits to appdaemon") -- [Wagner Sartori Junior (@trunet)](https://github.com/trunet "1 total commits to the home-assistant organization, 1 commit to netdisco") -- [Wesley Young (@wesdyoung)](https://github.com/wesdyoung "1 total commits to the home-assistant organization, 1 commit to warrant") -- [Wilco Land (@Wilco89)](https://github.com/Wilco89 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "20 total commits to the home-assistant organization, 19 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") -- [Will W\. (@tiktok7)](https://github.com/tiktok7 "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [William Johansson (@radhus)](https://github.com/radhus "1 total commits to the home-assistant organization, 1 commit to hassio") -- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "111 total commits to the home-assistant organization, 76 commits to home-assistant, 33 commits to home-assistant.github.io, 2 commits to netdisco") -- [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [wind-rider (@wind-rider)](https://github.com/wind-rider "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [wokar (@wokar)](https://github.com/wokar "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Wolf\-Bastian Pöttner (@BastianPoe)](https://github.com/BastianPoe "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Wolfgang Malgadey (@wmalgadey)](https://github.com/wmalgadey "5 total commits to the home-assistant organization, 5 commits to home-assistant") -- [XECDesign (@XECDesign)](https://github.com/XECDesign "138 total commits to the home-assistant organization, 138 commits to pi-gen") -- [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons") -- [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Yasin Soliman (@yasinS)](https://github.com/yasinS "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [yingzong (@yingzong)](https://github.com/yingzong "1 total commits to the home-assistant organization, 1 commit to warrant") -- [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Zio Tibia (@ziotibia81)](https://github.com/ziotibia81 "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Zorks (@Zorks)](https://github.com/Zorks "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Åskar Andersson (@olskar)](https://github.com/olskar "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 3 commits to home-assistant, 1 commit to hassbian-scripts") - - -This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know. - -This page was last updated Sunday, April 29th 2018, 4:35:15 pm UTC. diff --git a/source/developers/development.markdown b/source/developers/development.markdown deleted file mode 100644 index ea7c7bd480..0000000000 --- a/source/developers/development.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Starting with Development" -description: "Everything to get you started developing for Home Assistant." -date: 2014-12-21 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_101.markdown b/source/developers/development_101.markdown deleted file mode 100644 index 7e4858e890..0000000000 --- a/source/developers/development_101.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Development 101" -description: "Introduction to the basics of Home Assistant." -date: 2017-05-13 05:40:00 +0000 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_catching_up.markdown b/source/developers/development_catching_up.markdown deleted file mode 100644 index 30d098ce99..0000000000 --- a/source/developers/development_catching_up.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Catching up with Reality" -description: "Update your fork with the latest commit." -date: 2016-07-01 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_checklist.markdown b/source/developers/development_checklist.markdown deleted file mode 100644 index 7fb17c4368..0000000000 --- a/source/developers/development_checklist.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Development Checklist" -description: "Overview of the requirements for an improvement for Home Assistant." -date: 2016-07-01 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_config.markdown b/source/developers/development_config.markdown deleted file mode 100644 index 5d89b5b2b5..0000000000 --- a/source/developers/development_config.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Using Config" -description: "Introduction to the Config object in Home Assistant." -date: 2017-05-13 05:40:00 +0000 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_environment.markdown b/source/developers/development_environment.markdown deleted file mode 100644 index 4671f6ec64..0000000000 --- a/source/developers/development_environment.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Set up Development Environment" -description: "Set up your environment to start developing for Home Assistant." -date: 2014-12-21 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_events.markdown b/source/developers/development_events.markdown deleted file mode 100644 index 2552fb8e2f..0000000000 --- a/source/developers/development_events.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Using Events" -description: "Introduction to using events in Home Assistant." -date: 2017-05-13 05:40:00 +0000 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_guidelines.markdown b/source/developers/development_guidelines.markdown deleted file mode 100644 index e368c75a1e..0000000000 --- a/source/developers/development_guidelines.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Style guidelines" -description: "Details about styling your code." -date: 2017-04-28 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_hass_object.markdown b/source/developers/development_hass_object.markdown deleted file mode 100644 index e4554ecf7b..0000000000 --- a/source/developers/development_hass_object.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Hass object" -description: "Introduction to developing with the hass object." -date: 2016-04-16 13:32 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /developers/component_initialization/ ---- - - \ No newline at end of file diff --git a/source/developers/development_services.markdown b/source/developers/development_services.markdown deleted file mode 100644 index 6d5c203374..0000000000 --- a/source/developers/development_services.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Using Services" -description: "Introduction to services in Home Assistant." -date: 2017-05-13 05:40:00 +0000 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_states.markdown b/source/developers/development_states.markdown deleted file mode 100644 index cf3db78b4d..0000000000 --- a/source/developers/development_states.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Using States" -description: "Introduction to states in Home Assistant." -date: 2017-05-13 05:40:00 +0000 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_submitting.markdown b/source/developers/development_submitting.markdown deleted file mode 100644 index aaeadba89f..0000000000 --- a/source/developers/development_submitting.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Submit your work" -description: "Submit your work as Pull Request for Home Assistant." -date: 2016-07-01 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_testing.markdown b/source/developers/development_testing.markdown deleted file mode 100644 index dc24f7bbfe..0000000000 --- a/source/developers/development_testing.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Testing your code" -description: "Make sure that your code passes the checks" -date: 2016-07-01 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/development_validation.markdown b/source/developers/development_validation.markdown deleted file mode 100644 index 207b61b7d2..0000000000 --- a/source/developers/development_validation.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Validate the input" -description: "Validation of entries in configuration.yaml" -date: 2016-08-11 20:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/documentation/create_page.markdown b/source/developers/documentation/create_page.markdown deleted file mode 100644 index cb0c412519..0000000000 --- a/source/developers/documentation/create_page.markdown +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: page -title: "Create a new page" -description: "Create a new page for the documentation" -date: 2015-06-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -For a platform or component 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. - -Please honor the [Standards](/developers/documentation/standards/) we have for the documentation. - -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: "Awesome Sensor" -description: "home-assistant.io web presence" -date: 2015-06-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: "0.38" -ha_category: Sensor ---- - -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. -- If you're adding a new component, for the `ha_release` part of the header, just increment of the current release. If the current release is 0.37, make `ha_release` 0.38. If it's 0.30 or 0.40 please quote it with `" "`. -- `ha_category:` is needed to list the platform or component in the appropriate category on the website. - -### {% linkable_title Configuration %} - -Every platform page should contain a configuration sample. This sample must contain only the **required** variables to make it easy to copy and paste it for users into their `configuration.yaml` file. - -The **Configuration Variables** section must use the {% raw %}`{% configuration %} ... {% endconfiguration %}`{% endraw %} tag. - -{% raw %} -```text -{% configuration %} -api_key: - description: The API key to access the service. - required: true - type: string -name: - description: Name to use in the frontend. - required: false - default: The default name to use in the frontend. - type: string -monitored_conditions: - description: Conditions to display in the frontend. - required: true - type: list - keys: - weather: - description: A human-readable text summary. - temperature: - description: The current temperature. -{% endconfiguration %} - -``` -{% endraw %} - -Available keys: - -- **`description:`**: That the variable is about. -- **`required:`**: If the variable is required. -```text -required: true #=> Required -required: false #=> Optional -required: inclusive #=> Inclusive -required: exclusive #=> Exclusive -required: any string here #=> Any string here -``` -- **`type:`**: The type of the variable. Allowed entries: `string`, `int`, `time`, `template` or `map`. For multiple possibilities use `[string, int]`. If you use `map` then you need to define `keys:` (see the [`template` sensor](/components/sensor.template/) for an example). -- **`default:`**: The default value for the variable. - -### {% linkable_title Embedding Code %} - -You can use the [default markdown syntax](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#code) to generate syntax highlighted code. For inline code wrap your code in {% raw %}`{% endraw %}. - -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. Check the [Documentation Standards](/developers/documentation/standards/) for further details. - -If you are don't escape templates then 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 Images, icons, and logos %} - -The images which are displayed on the pages are stored in various directories according to their purpose. If you want to use a logo and placed `logo:` in the file header then this image should be stored in `source/images/supported_brands`. The background must be transparent. - -| Type | Location | -| :----------- |:----------------------------------------------| -| logos | source/images/supported_brands | -| blog | source/images/blog | -| screenshots | source/images/components | - -Not everything (product, component, etc.) should have a logo. To show something for internal parts of Home Assistant we are using the [Material Design Icons](https://materialdesignicons.com/). - -### {% linkable_title Linking From The Sidebar %} -If you are adding a new page that requires linking from the sidebar you need to edit the `docs_navigation.html` file in `home-assistant.github.io/source/_includes/asides/docs_navigation.html`. diff --git a/source/developers/documentation/index.markdown b/source/developers/documentation/index.markdown deleted file mode 100644 index 50370c7802..0000000000 --- a/source/developers/documentation/index.markdown +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Documentation Home Assistant" -description: "home-assistant.io web presence for the documentation" -date: 2015-06-17 08:00 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /developers/website/ ---- - -The website you are reading now is the home of Home Assistant: [https://www.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. Ruby version 2.3.0 or higher is required. -- Install `bundler`, a dependency manager for Ruby: `$ gem install bundler` -- In your home-assistant.github.io root directory, run `$ bundle` to install the gems you need. - -Short cut for Fedora: `$ sudo dnf -y install gcc-c++ ruby ruby-devel rubygem-bundler rubygem-json && 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` -

    - diff --git a/source/developers/documentation/standards.markdown b/source/developers/documentation/standards.markdown deleted file mode 100644 index 05b1223cc6..0000000000 --- a/source/developers/documentation/standards.markdown +++ /dev/null @@ -1,121 +0,0 @@ ---- -layout: page -title: "Documentation Standards" -description: "Standards for the creation and maintenance of documentation for Home Assistant." -date: 2017-09-16 03:51 -sidebar: true -comments: false -sharing: true -footer: true ---- - -To ensure that the documentation for Home Assistant is consistent and easy to follow for both novice and expert users, we ask that you follow a very strict set of standards for developing the documentation. - -## {% linkable_title General Documentation %} - -* The language of the documentation should be American-English. -* Don't put two spaces after a period and avoid the "Oxford comma". -* Be objective and not gender favoring, polarizing, race related or religion inconsiderate. -* The case of brand names, services, protocols, components, and platforms must match its respective counterpart. e.g., "Z-Wave" **not** "Zwave", "Z-wave", "Z Wave" or "ZWave". Also, "Input Select" **not** "input select" or "Input select". -* All headings should use the {% raw %}`{% linkable_title %}`{% endraw %} tag. - -## {% linkable_title Component and Platform Pages %} - -* The **Configuration Variables** section must use the {% raw %}`{% configuration %}`{% endraw %} tag. -* Configuration variables must document the requirement status. -* Configuration variables must document the default value, if any. -* Configuration variables must document the accepted value types. - * For configuration variables that accept multiple types, separate the types with a comma (i.e. `string, int`). -* Use YAML sequence syntax in the sample code if it is supported. -* All examples should be formatted to be included in `configuration.yaml` unless explicitly stated. - * Use capital letters and `_` to indicate that the value needs to be replaced. E.g., `api_key: YOUR_API_KEY` or `api_key: REPLACE_ME`. - * If you know that the API key or value contains [control characters](https://en.wikipedia.org/wiki/YAML#Syntax), e.g., `#`, `[`, `?`, etc., wrap it in quotes and add a note. -* Component and platform names should be a link to their respective documentation pages. - -## {% linkable_title Templates %} - -* All examples containing Jinja2 templates should be wrapped **outside** of the code markdown with the {% raw %}`{% raw %}`{% endraw %} tag. -* Do not use `states.switch.source.state` in templates. Instead use `states()` and `is_state()`. -* Use double quotes (`"`) for ([more information](#single-vs-double-quotation-marks)): - * `friendly_name` - * Single-line templates: - * `value_template` - * `level_template` - * `icon_template` - * Children of `data_template` -* Use single quotes (`'`) for ([more information](#single-vs-double-quotation-marks): - * Strings inside of templates: - * States - * Entity IDs - * `unit_of_measurement` -* No whitespace around pipe character (`|`) for Jinja2 filters. -* Single whitespace after Jinja2 opening delimiters ({% raw %}`{{`{% endraw %}). -* Single whitespace before Jinja2 closing delimiters ({% raw %}`}}`{% endraw %}). -* Do not quote values for: - * `device_class` - * `platform` - * `condition` - * `service` - -## {% linkable_title Renaming Pages %} - -It can happen that a component or platform is renamed, in this case the documentation needs to be updated as well. If you rename a page, add `redirect_from:` to the file header and let it point to the old location/name of the page. Please consider to add details, like release number or old component/platform name, to the page in a [note](/developers/documentation/create_page/#html). - -```text ---- -... -redirect_from: /getting-started/android/ ---- -``` - -Adding a redirect also applies if you move content around in the [documentation](/docs/). - -## {% linkable_title Single vs. Double Quotation Marks %} - -Use single quotes (`'`) for strings inside of a template. It is more obvious to escape a single quote when necessary (i.e. `name` is a possessive noun), because the single quotes that wrap the string are closer in position to the apostrophe inside the string. Use double quotes (`"`) outside of a template (unless it is a multi-line template, in which case outside quotes are not required). - -### {% linkable_title Examples %} - -#### {% linkable_title Double Quotes Outside, Single Quotes Inside (Valid) %} - -{% raw %} -```yaml -automation: - ... - action: - - service: notify.notify - data_template: - message: "{% if trigger.to_state.name == 'Dale\'s Bedroom' %}Someone's in your base, killing your noobs!{% else %}It's just another door.{% endif %}" -``` -{% endraw %} - -#### {% linkable_title Single Quotes Outside, Double Quotes Inside (Invalid) %} - -{% raw %} -```yaml -automation: - ... - action: - - service: notify.notify - data_template: - message: '{% if trigger.to_state.name == "Dale's Bedroom" %}Someone's in your base, killing your noobs!{% else %}It's just another door.{% endif %}' -``` -{% endraw %} - -#### {% linkable_title Multi-Line Template (Valid) %} - -{% raw %} -```yaml -automation: - ... - action: - - service: notify.notify - data_template: - message: >- - {% if trigger.to_state.name == 'Dale\'s Bedroom' %} - Someone's in your base, killing your noobs! - {% else %} - It's just another door. - {% endif %} -``` -{% endraw %} diff --git a/source/developers/frontend.markdown b/source/developers/frontend.markdown deleted file mode 100755 index 316ca36487..0000000000 --- a/source/developers/frontend.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Frontend development" -description: "Tips and hints if you are starting on Home Assistant frontend development" -date: 2014-12-21 13:32 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/frontend_add_card.markdown b/source/developers/frontend_add_card.markdown deleted file mode 100644 index d10dda464b..0000000000 --- a/source/developers/frontend_add_card.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Adding state card" -description: "Adding a state card to the frontend" -date: 2016-04-16 14:40 -07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/frontend_add_more_info.markdown b/source/developers/frontend_add_more_info.markdown deleted file mode 100644 index 5a6993837f..0000000000 --- a/source/developers/frontend_add_more_info.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Adding more info dialogs" -description: "Adding a more info dialog to the frontend" -date: 2016-04-16 14:40 -07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/frontend_creating_custom_panels.markdown b/source/developers/frontend_creating_custom_panels.markdown deleted file mode 100644 index 670a562cfa..0000000000 --- a/source/developers/frontend_creating_custom_panels.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Creating custom panels" -description: "Introduction to create custom panels for Home Assistant." -date: 2016-07-29 13:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/frontend_creating_custom_ui.markdown b/source/developers/frontend_creating_custom_ui.markdown deleted file mode 100644 index f70c3ce3c1..0000000000 --- a/source/developers/frontend_creating_custom_ui.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Creating custom UI" -description: "Introduction to create custom ui for Home Assistant." -date: 2017-02-04 13:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.38 ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_communication.markdown b/source/developers/hassio/addon_communication.markdown deleted file mode 100644 index 2ade126855..0000000000 --- a/source/developers/hassio/addon_communication.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -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/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_config.markdown b/source/developers/hassio/addon_config.markdown deleted file mode 100644 index a13c1e7c71..0000000000 --- a/source/developers/hassio/addon_config.markdown +++ /dev/null @@ -1,15 +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 -redirect_from: /hassio/addon_config/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_development.markdown b/source/developers/hassio/addon_development.markdown deleted file mode 100644 index 1a99e8f384..0000000000 --- a/source/developers/hassio/addon_development.markdown +++ /dev/null @@ -1,15 +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 -redirect_from: /hassio/addon_development/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_presentation.markdown b/source/developers/hassio/addon_presentation.markdown deleted file mode 100644 index 26ee4f20d2..0000000000 --- a/source/developers/hassio/addon_presentation.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Presenting your add-on" -description: "Details on how to present your Hass.io add-on." -date: 2018-01-24 22:15 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_publishing.markdown b/source/developers/hassio/addon_publishing.markdown deleted file mode 100644 index 735dbe7093..0000000000 --- a/source/developers/hassio/addon_publishing.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Publishing your 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_publishing/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_repository.markdown b/source/developers/hassio/addon_repository.markdown deleted file mode 100644 index 5e5797ff9f..0000000000 --- a/source/developers/hassio/addon_repository.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Create an add-on repository" -description: "Add-ons repositories." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /hassio/addon_repository/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_testing.markdown b/source/developers/hassio/addon_testing.markdown deleted file mode 100644 index 8c8eaa50cc..0000000000 --- a/source/developers/hassio/addon_testing.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Local add-on testing" -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/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/addon_tutorial.markdown b/source/developers/hassio/addon_tutorial.markdown deleted file mode 100644 index cca2f3a2f7..0000000000 --- a/source/developers/hassio/addon_tutorial.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Tutorial: Making your first add-on" -description: "Easy tutorial to get started making your first add-on." -date: 2017-05-12 13:28 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /hassio/addon_tutorial/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/architecture.markdown b/source/developers/hassio/architecture.markdown deleted file mode 100644 index 5b3a12f53c..0000000000 --- a/source/developers/hassio/architecture.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Hass.io Architecture" -description: "The architecture of Hass.io." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /hassio/architecture/ ---- - - \ No newline at end of file diff --git a/source/developers/hassio/debugging.markdown b/source/developers/hassio/debugging.markdown deleted file mode 100644 index be66c18e37..0000000000 --- a/source/developers/hassio/debugging.markdown +++ /dev/null @@ -1,15 +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 -redirect_from: /hassio/debugging/ ---- - - \ No newline at end of file diff --git a/source/developers/helpers.markdown b/source/developers/helpers.markdown deleted file mode 100644 index 8916b56c68..0000000000 --- a/source/developers/helpers.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Little online helpers" -description: "The little helpers for the development of Home Assistant." -date: 2016-05-17 16:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/index.markdown b/source/developers/index.markdown deleted file mode 100644 index 3248e7192b..0000000000 --- a/source/developers/index.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Developers" -description: "Everything you need to know to get started with Home Assistant development." -date: 2016-04-16 10:28 +07:00 -sidebar: true -comments: false -sharing: true -footer: true -og_image: /images/architecture/component_interaction.png ---- - - \ No newline at end of file diff --git a/source/developers/intent/conversation.markdown b/source/developers/intent/conversation.markdown deleted file mode 100644 index ea4cad2a45..0000000000 --- a/source/developers/intent/conversation.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -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 ---- - - \ No newline at end of file diff --git a/source/developers/intent/firing.markdown b/source/developers/intent/firing.markdown deleted file mode 100644 index b8e10eff20..0000000000 --- a/source/developers/intent/firing.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -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 ---- - - \ No newline at end of file diff --git a/source/developers/intent/handling.markdown b/source/developers/intent/handling.markdown deleted file mode 100644 index 040d2d01dc..0000000000 --- a/source/developers/intent/handling.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -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 ---- - - \ No newline at end of file diff --git a/source/developers/intent/index.markdown b/source/developers/intent/index.markdown deleted file mode 100644 index a00395d8a8..0000000000 --- a/source/developers/intent/index.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -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 ---- - - \ No newline at end of file diff --git a/source/developers/internationalization/backend_localization.markdown b/source/developers/internationalization/backend_localization.markdown deleted file mode 100644 index 2c2413fc21..0000000000 --- a/source/developers/internationalization/backend_localization.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Backend Localization" -description: "Translating platforms in Home Assistant" -date: 2018-03-01 18:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.64 ---- - - \ No newline at end of file diff --git a/source/developers/internationalization/custom_component_localization.markdown b/source/developers/internationalization/custom_component_localization.markdown deleted file mode 100644 index d0c6ecdc2f..0000000000 --- a/source/developers/internationalization/custom_component_localization.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Custom Component Localization" -description: "Translating custom components in Home Assistant" -date: 2018-03-01 18:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.64 ---- - - \ No newline at end of file diff --git a/source/developers/internationalization/index.markdown b/source/developers/internationalization/index.markdown deleted file mode 100644 index ed93383a94..0000000000 --- a/source/developers/internationalization/index.markdown +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: page -title: "Internationalization" -description: "Home Assistant internationalization summary" -date: 2018-03-01 18:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.64 ---- - - \ No newline at end of file diff --git a/source/developers/internationalization/translation.markdown b/source/developers/internationalization/translation.markdown deleted file mode 100644 index 411e5a09cb..0000000000 --- a/source/developers/internationalization/translation.markdown +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: page -title: "Translation" -description: "How to translate Home Assistant." -date: 2017-10-27 13:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_release: 0.57 -redirect_from: /developers/frontend_translation/ ---- - - \ No newline at end of file diff --git a/source/developers/license.markdown b/source/developers/license.markdown deleted file mode 100644 index 317ba72da2..0000000000 --- a/source/developers/license.markdown +++ /dev/null @@ -1,216 +0,0 @@ ---- -layout: page -title: "The Apache 2.0 License" -description: "The License that all Home Assistant projects are licensed under" -date: 2017-01-21 15:05:00 -0800 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The Home Assistant source code is released under the following license. - -``` - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -``` diff --git a/source/developers/maintenance.markdown b/source/developers/maintenance.markdown deleted file mode 100644 index d36bb625a0..0000000000 --- a/source/developers/maintenance.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Maintenance" -description: "Steps involved to maintain the current state of Home Assistant." -date: 2016-09-13 17:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/multiple_instances.markdown b/source/developers/multiple_instances.markdown deleted file mode 100644 index 6669c7016d..0000000000 --- a/source/developers/multiple_instances.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Multiple Instances" -description: "Quick primer on how multiple instances work together." -date: 2016-04-16 14:24 -07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/platform_example_light.markdown b/source/developers/platform_example_light.markdown deleted file mode 100644 index 2c067aed37..0000000000 --- a/source/developers/platform_example_light.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Example light platform" -description: "Minimum implementation of a Home Assistant platform." -date: 2016-04-16 14:24 -07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/platform_example_sensor.markdown b/source/developers/platform_example_sensor.markdown deleted file mode 100644 index 110ab63137..0000000000 --- a/source/developers/platform_example_sensor.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Example sensor platform" -description: "Minimum implementation of a Home Assistant platform." -date: 2016-04-16 14:24 -07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/python_api.markdown b/source/developers/python_api.markdown deleted file mode 100644 index 2e3ed1ba29..0000000000 --- a/source/developers/python_api.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Python Remote API" -description: "Home Assistant Python Remote API documentation" -date: 2015-05-11 12:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/releasing.markdown b/source/developers/releasing.markdown deleted file mode 100644 index 741aa147d6..0000000000 --- a/source/developers/releasing.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Releasing" -description: "Steps involved publishing a new Home Assistant release." -date: 2016-07-13 17:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown deleted file mode 100644 index 83ac65d3b4..0000000000 --- a/source/developers/rest_api.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "RESTful API" -description: "Home Assistant RESTful API documentation" -date: 2014-12-21 13:27 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/server_sent_events.markdown b/source/developers/server_sent_events.markdown deleted file mode 100644 index 62c1d956e6..0000000000 --- a/source/developers/server_sent_events.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "Server-sent events" -description: "Home Assistant Server-sent events documentation" -date: 2016-04-08 07:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/developers/websocket_api.markdown b/source/developers/websocket_api.markdown deleted file mode 100644 index 7e8bf2f9ed..0000000000 --- a/source/developers/websocket_api.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: page -title: "WebSocket API" -description: "Home Assistant WebSocket API documentation" -date: 2016-11-26 13:27 -sidebar: true -comments: false -sharing: true -footer: true ---- - - \ No newline at end of file diff --git a/source/docs/index.markdown b/source/docs/index.markdown deleted file mode 100644 index cbc6b8e364..0000000000 --- a/source/docs/index.markdown +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: "Documentation" -description: "Documentation for Home Assistant" -date: 2016-10-26 00:46 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The documentation covers from beginner to advanced topic around the installation, the setup, the configuration, and the usage of Home Assistant. - - - -
    - -To see what Home Assistant can do, take a look at the [demo page](/demo). diff --git a/source/faq/index.markdown b/source/faq/index.markdown deleted file mode 100644 index 9dc9352fcf..0000000000 --- a/source/faq/index.markdown +++ /dev/null @@ -1,32 +0,0 @@ ---- -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. If you want to get details about a term, please check the [glossary](/docs/glossary/). - -{% 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/favicon.png b/source/favicon.png deleted file mode 100644 index 2ad3a59140..0000000000 Binary files a/source/favicon.png and /dev/null differ diff --git a/source/getting-started/automation-2.markdown b/source/getting-started/automation-2.markdown deleted file mode 100644 index 6e179e7e37..0000000000 --- a/source/getting-started/automation-2.markdown +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: page -title: "Your second Automation" -description: "Step by step guiding through making your second automation." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-create-first/ ---- - -After the scratch on the Automation surface, let's dive deeper and create the automation rule: **Turn on the lights when the sun sets** - -We are defining a [trigger](/docs/automation/trigger/) to track the sunset and tell it to fire when the sun is setting. When this event is triggered, the service `light.turn_on` is called without any parameters. Because we specify no parameters, it will turn on all the lights. - -```yaml -# Example configuration.yaml entry -automation: - alias: Turn on the lights when the sun sets - initial_state: True - hide_entity: False - trigger: - platform: sun - event: sunset - action: - 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 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 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 the lights when the sun sets - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - 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. - -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. - -So we tweak the config to add the group and have the automation rule only turn on the group. - -```yaml -# Example configuration.yaml entry -group: - living_room: - - light.table_lamp - - light.ceiling - -automation: - alias: Turn on the light when the sun sets - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - service: light.turn_on - 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! - -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 -group: - living_room: - - light.table_lamp - - light.ceiling - - switch.christmas_lights - -automation: - alias: Turn on the lights when the sun sets - hide_entity: True - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - service: homeassistant.turn_on - entity_id: group.living_room -``` - -### [Next step: Presence detection »](/getting-started/presence-detection/) diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown deleted file mode 100644 index 2f420b19db..0000000000 --- a/source/getting-started/automation.markdown +++ /dev/null @@ -1,31 +0,0 @@ ---- -layout: page -title: "Automating Home Assistant" -description: "Instructions to get started with Automation using Home Assistant." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -When your devices are set up, it's time to put the cherry on the pie: **automation**. Home Assistant offers [a few built-in automations](/components/#automation) – but you'll be using the automation component to set up your own rules, for the most part. - -If you added a random sensor in the previous step then you can use that sensor for your very first automation: - -```yaml -automation: - - alias: Check sensor value and show notification - trigger: - platform: numeric_state - entity_id: sensor.random_sensor - above: 10 - action: - service: persistent_notification.create - data: - message: "Sensor value greater than 10" -``` - -For further details about automation, please take the next step or the [automation documentation](/docs/automation/). - -### [Next step: Home Assistant Automation Part 2 »](/getting-started/automation-2/) diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown deleted file mode 100644 index cbe0953026..0000000000 --- a/source/getting-started/configuration.markdown +++ /dev/null @@ -1,78 +0,0 @@ ---- -layout: page -title: "Configure Home Assistant" -description: "Instructions to get Home Assistant configured." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -

    -This guide applies only if you've installed Home Assistant via Hass.io. If you've used any other install method then [see here](/docs/configuration/) instead. -

    - -If you made it here, awesome! That means that you got Home Assistant up and running. It might have already found some of your networked devices. This is going to be fun! - -Home Assistant stores its configuration in a file called `configuration.yaml`. A default one is created when Home Assistant is started for the first time. Some of the things in the configuration file can be edited via the user interface, other parts require you to edit the configuration file directly. - -There are two common approaches to edit your configuration: via Samba/Windows Networking and via the HASS Configurator. Both of these are [official add-ons for Hass.io](/addons/). - -## {% linkable_title Installing Hass.io add-ons %} - -Hass.io add-ons are installed from the add-on store embedded in the Hass.io panel: - - - Open Home Assistant by navigating to [http://hassio.local:8123][local]. - - Click on the menu icon in the top left and select Hass.io in the sidebar. - - The Hass.io panel opens, now open the add-on store by clicking the shopping bag. - -[local]: http://hassio.local:8123 - -

    - -From the Hass.io main panel open the add-on store. -

    - -### {% linkable_title Editing config via HASS Configurator %} - -The first add-on we should install is the HASS Configurator. With the HASS Configurator you'll be able to edit your Home Assistant configuration from the web interface. - -Go to the add-on store (see previous step), click on Configurator and click on INSTALL. When installation is complete the UI will go to the add-on details page for the configurator. Here you will be able to change settings, start and stop the add-on. - - - Change the settings to set a password and click on save - - Start the add-on - - You will be able to click the "WEB UI" link to open the Web UI - -Time for the first practice with the configurator. Add the following to `configuration.yaml` file to add a link to the Configurator in the sidebar: - -```yaml -panel_iframe: - configurator: - title: Configurator - icon: mdi:wrench - url: http://hassio.local:3218 -``` - -Now restart Home Assistant for the changes to the configuration to take effect. You can do this by going to the config panel (Configuration in the sidebar) -> General -> Restart Home Assistant. - -### {% linkable_title Editing config via Samba/Windows Networking %} - -Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can be installed from the Hass.io add-on store. - -After you have installed it, click on START. Hass.io should now be available in the networking tab on your computer. Use a text editor like the free [Visual Studio Code](https://code.visualstudio.com/) to edit `configuration.yaml`. - -## {% linkable_title Configuring integrations %} - -Now that you are able to edit the configuration, it's time to set up some of your devices and services. Each service and device will have its own instructions on how to be integrated. Find your devices and services on the [components overview page](/components/). - -

    YAML can be a little daunting at first. A lot is possible! [Here is some more info.](/docs/configuration/devices/)

    - -For a sensor that is showing [random values](/components/sensor.random/), the entry would look like the sample below: - -```yaml -sensor: - - platform: random -``` - -### [Next step: Automate Home Assistant »](/getting-started/automation/) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown deleted file mode 100644 index 41382d7f35..0000000000 --- a/source/getting-started/index.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: "Install Home Assistant" -description: "Getting started: How to install Home Assistant." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -The goal of this getting started guide is to install [Hass.io](/hassio/) on a Raspberry Pi 3. Hass.io is our own all in one solution that turns your Raspberry Pi into the ultimate home automation hub. - -Follow this guide if you want to easily get started with Home Assistant, or if you have no or little Linux experience. For advanced users or if you have no Raspberry Pi at hand, check our [alternative installation methods](/docs/installation/). The [FAQ](/faq/#home-assistant-vs-hassio) explains more about the differences. - -### {% linkable_title Hardware requirements %} - -We will need a few things to get started with installing Home Assistant. Links below are linking to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. - -- [Raspberry Pi 3 model B](http://a.co/gEfMqL4) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 2.5A) -- [Micro SD Card](http://a.co/gslOydD). Get one that is Class 10 as they are more reliable. Size 32 GB or bigger recommended. -- SD Card reader. Part of most laptops, and also available as [standalone USB sticks](http://a.co/5FCyb0N) (the brand doesn't matter, just pick the cheapest) -- Ethernet cable (optional, Hass.io can work with WiFi too) - -

    - Support for the Raspberry Pi 3 model B+ is available in the alternative installation method [Hassbian](/docs/hassbian/installation/). - - The recently released Raspberry Pi 3 model B+ is not yet supported by Hass.io. -

    - -### {% linkable_title Software requirements %} - -- Download [Hass.io image for Raspberry Pi 3][pi3] -- Download [Etcher] to write the image to an SD card -- Text Editor like [Visual Studio Code](https://code.visualstudio.com/) - -[Etcher]: https://etcher.io/ -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi3.img.bz2 - -### {% linkable_title Installing Hass.io %} - -1. Put the SD card in your SD card reader. -1. Open Etcher, select the Hass.io image and flash it to the SD card. -1. WiFi setup only: open the file `system-connections/resin-sample` (from the `resin-boot` volume on the SD card) with a text editor. Change `ssid` to be your network name and `psk` to be your password. Note: When connecting to a 5 GHz-only network, make sure your device supports that. If you don't know what that means, then you probably have nothing to worry about. -1. Unmount the SD card and remove it from your SD card reader. -1. Insert the SD card into your Raspberry Pi 3. If you are going to use an Ethernet cable, connect that too. -1. Connect your Raspberry Pi to the power supply so it turns on. -1. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant. This will take about 20 minutes. Do not expect anything but the Home Assistant logo on the HDMI display, or any use for a keyboard or mouse. -1. Home Assistant will be available at [http://hassio.local:8123][local]. Shortly after the download has started, a simple preparation status page will be available at this URL. Point your browser there. The page refreshes automatically, and Home Assistant will be shown when the download is complete. - -[local]: http://hassio.local:8123 - -### [Next step: Configuring Home Assistant »](/getting-started/configuration/) diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown deleted file mode 100644 index 35943263a9..0000000000 --- a/source/getting-started/presence-detection.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -layout: page -title: "Setting up presence detection" -description: "Instructions on how to setup presence detection within Home Assistant." -date: 2015-10-04 12:08 -sidebar: true -comments: false -sharing: true -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 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 - -

    - -Screenshot of Home Assistant showing a school, work and home zone and two people. -

    - -### {% linkable_title Setting it up %} - -The device tracker component offers presence detection for Home Assistant. It supports three different methods for presence detection: scan for connected devices on the local network, scan for Bluetooth devices within range, and connect to third-party service. - -Scanning for connected devices is easy to setup; options include [supported routers][routers] and [scanning 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 modern smartphones may show as not home inaccurately (as they disconnect from WiFi if idle). - -You can scan for [Bluetooth][ha-bluetooth] and [Bluetooth LE][ha-bluetooth-le] devices. Unlike with WiFi, modern smartphones don't turn off Bluetooth automatically, though the range is lower. - -Home Assistant currently supports multiple third-party services for presence detection, such as [OwnTracks over MQTT][ha-owntracks-mqtt], [OwnTracks over HTTP][ha-owntracks-http] [GPSLogger][ha-gpslogger] and [Locative][ha-locative]. - -There are a wide [range of options][ha-presence] available, both for scanning your local network and third-party services. - -### {% linkable_title Zones %} - - - -Home Assistant will know the location of your device if you are using a device tracker that reports a GPS location (such as OwnTracks, GPS Logger, the iOS app, and others). By [setting up zones][zone] you will be able to add names to the locations of your devices. This way you can easily spot on the state page where the people in your house are and use it as [triggers][trigger] and [conditions][condition] for automation. - -

    -If you're looking at the [map view][ha-map] then any devices in your Home zone won't be visible, this is by design. -

    - -[routers]: /components/#presence-detection -[nmap]: /components/device_tracker.nmap_tracker/ -[ha-bluetooth]: /components/device_tracker.bluetooth_tracker/ -[ha-bluetooth-le]: /components/device_tracker.bluetooth_le_tracker/ -[ha-owntracks-mqtt]: /components/device_tracker.owntracks/ -[ha-owntracks-http]: /components/device_tracker.owntracks_http/ -[ha-locative]: /components/device_tracker.locative/ -[ha-gpslogger]: /components/device_tracker.gpslogger/ -[ha-presence]: /components/#presence-detection -[mqtt-self]: /components/mqtt/#run-your-own -[mqtt-cloud]: /components/mqtt/#cloudmqtt -[zone]: /components/zone/ -[trigger]: /getting-started/automation-trigger/#zone-trigger -[condition]: /getting-started/automation-condition/#zone-condition -[ha-map]: /components/map/ - -### [Next step: Use Home Assistant »](/getting-started/use/) diff --git a/source/getting-started/use.markdown b/source/getting-started/use.markdown deleted file mode 100644 index 1b6da436ab..0000000000 --- a/source/getting-started/use.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -layout: page -title: "Manage Home Assistant" -description: "Instructions about how to manage Home Assistant." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -If you are using Hassbian, browse to [http://hassbian.local:8123](http://hassbian.local:8123) to open the Home Assistant frontend. - -To reload your configuration, go to **Configuration** in your side panel, and choose "CHECK CONFIG" and "RELOAD CORE": - -

    - -

    - -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/external_storage.markdown b/source/hassio/external_storage.markdown deleted file mode 100644 index b4a930bc19..0000000000 --- a/source/hassio/external_storage.markdown +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: "External device" -description: "How to map external device on Hass.io." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -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 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 a specific add-on. - -### {% linkable_title Generic %} - -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 deleted file mode 100644 index a5f4798c8d..0000000000 --- a/source/hassio/index.markdown +++ /dev/null @@ -1,120 +0,0 @@ ---- -layout: page -title: "Hass.io" -description: "Manage your Home Assistant and custom add-ons." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /components/hassio/ ---- - -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/ - -## {% linkable_title hassio command %} - -On the SSH command line you can use the `hassio` command to retrieve logs, check the details of connected hardware, and more. - -Home Assistant: - -```bash -$ hassio homeassistant logs -$ hassio homeassistant restart -$ hassio homeassistant stop -$ hassio homeassistant start -$ hassio homeassistant update -$ hassio homeassistant check -``` - -Host: - -```bash -$ hassio host hardware -$ hassio host reboot -$ hassio host shutdown -$ hassio host update -``` - -Supervisor - -```bash -$ hassio supervisor logs -$ hassio supervisor info -$ hassio supervisor reload -$ hassio supervisor update -``` - -You can get a better description of the CLI capabilities by typing `hassio help`: - -```bash -NAME: - hassio - Commandline tool to allow interation with hass.io - -USAGE: - hassio [global options] command [command options] [arguments...] - -VERSION: - 1.2.1 - -AUTHOR: - Home-Assistant - -COMMANDS: - homeassistant, ha info, logs, check, restart, start, stop, update - supervisor, su info, logs, reload, update - host, ho hardware, reboot, shutdown, update - network, ne info, options - snapshots, sn list, info, reload, new, restore, remove - addons, ad list, info, logo, changelog, logs, stats, - reload, start, stop, install, uninstall, update - help, h Shows a list of commands or help for one command - -GLOBAL OPTIONS: - --debug, -d Prints Debug information - --help, -h show help - --version, -v print the version -``` diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown deleted file mode 100644 index 08a2744aed..0000000000 --- a/source/hassio/installation.markdown +++ /dev/null @@ -1,68 +0,0 @@ ---- -layout: page -title: "Installing Hass.io" -description: "Instructions on how-to install Hass.io." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Hass.io images are available for all available Raspberry Pi and Intel NUC platforms. - -

    - The recently released Raspberry Pi 3 model B+ is not yet supported. -

    - -- 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] - -- 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 takes ~20 minutes (slower/faster depending on the platform). - - - -- 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 your router doesn't support mDNS then you'll have to use the IP address of your Pi, instead of `hassio.local`, for example `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router. -

    - -

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

    - -

    -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 %} - -For advanced users, it is also possible to try Hass.io on your [Linux server or inside a virtual machine][linux]. To do so, run the following command as root: - -```bash -curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash -s -``` - -

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

    - -A detailed guide about running Hass.io as a virtual machine is available in the [blog](/blog/2017/11/29/hassio-virtual-machine/). - -[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/1.3/resinos-hassio-1.3-raspberrypi.img.bz2 -[pi2]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi2.img.bz2 -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi3.img.bz2 -[nuc]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-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 deleted file mode 100644 index 0840aa4a69..0000000000 --- a/source/hassio/installing_third_party_addons.markdown +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: page -title: "Installing third-party add-ons" -description: "Instructions on how to get started using third-party add-ons." -date: 2017-05-14 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -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. -

    - -

    - -From the Hass.io main panel open the add-on store. -

    - -

    - -Add the URL of the repository and then press "Add". 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 and then the System tab to find the System log. 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 deleted file mode 100644 index 8085f77f1f..0000000000 --- a/source/hassio/run_local.markdown +++ /dev/null @@ -1,104 +0,0 @@ ---- -layout: page -title: "Run local scripts" -description: "Instructions on how to run a local script for Home Assistant." -date: 2017-04-30 13:28 -sidebar: true -comments: false -sharing: true -footer: true ---- - -Hass.io is a managed environment, which means you can't install applications that can be embedded into Home Assistant using the `command_line` sensor/switch. - -There are three options if you need to run a script which reads data from a sensor or sends commands to other devices on Hass.io. - -The first option is to write a custom component for Home Assistant. This implies that you can communicate with your device using Python. For more information about developing a custom component, take a look at [custom-component development][custom-component]. - -The second option is to use STDIN inside an add-on and use the service `hassio.addon_stdin` to send data. For more information, have a look at [internal add-on communication][communication]. Here you will also find how you can easily access the Home Assistant Rest API. - -The third option is to create 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 %} - -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. - -In our Dockerfile we need to install: - -``` -RUN apk --no-cache add jq mosquitto-clients -``` - -Now we can process it with `run.sh`: - -```bash -#!/bin/bash -set -e - -CONFIG_PATH=/data/options.json - -# possible options for processing -MQTT_SERVER=$(jq --raw-output '.server' $CONFIG_PATH) -MQTT_PORT=$(jq --raw-output '.port' $CONFIG_PATH) -TOPIC=$(jq --raw-output '.topic' $CONFIG_PATH) -USER=$(jq --raw-output '.user' $CONFIG_PATH) -PASSWORD=$(jq --raw-output '.password' $CONFIG_PATH) -WAIT_TIME=$(jq --raw-output '.seconds' $CONFIG_PATH) - -# read data -while true -do - if OUTPUT="$(/read_my_sensor.sh)" - then - mosquitto_pub -h "$MQTT_SERVER" -p "$MQTT_PORT" -u "$USER" -P "$PASSWORD" -t "$TOPIC" -m "$OUTPUT" || true - else - echo "$(data) [ERROR] can't read sensor: $OUTPUT" - fi - - sleep "$WAIT_TIME" -done -``` - -### {% linkable_title Commands %} - -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. - -In our Dockerfile we need to install: - -``` -RUN apk --no-cache add jq mosquitto-clients -``` - -Now we can process it with `run.sh`: - -```bash -#!/bin/bash -set -e - -CONFIG_PATH=/data/options.json - -# possible options for processing -MQTT_SERVER=$(jq --raw-output '.server' $CONFIG_PATH) -MQTT_PORT=$(jq --raw-output '.port' $CONFIG_PATH) -TOPIC=$(jq --raw-output '.topic' $CONFIG_PATH) -USER=$(jq --raw-output '.user' $CONFIG_PATH) -PASSWORD=$(jq --raw-output '.password' $CONFIG_PATH) - -# read data -while read -r message -do - if [ "$message" == "on" ]; then - /do_command_on.sh || true - else - /do_command_off.sh || true - 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]: /developers/hassio/addon_tutorial/ -[communication]: /developers/hassio/addon_communication/ diff --git a/source/hassio/zwave.markdown b/source/hassio/zwave.markdown deleted file mode 100644 index 4ba8aed793..0000000000 --- a/source/hassio/zwave.markdown +++ /dev/null @@ -1,47 +0,0 @@ ---- -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 -``` - -### RAZBERRY BOARD - -If you need GPIO on Raspberry Pi 3 for your Z-Wave module, add the following line into `config.txt` (you have to access that on the SD card directly; simply plug it into your PC and edit it there): - -``` -dtoverlay=pi3-miniuart-bt -``` - -After that, you need to change `usb_path` to `/dev/ttyAMA0` in your `configuration.yaml`. - -```yaml -zwave: - usb_path: /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 deleted file mode 100644 index 881204f047..0000000000 --- a/source/help/index.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -layout: page -title: "Help" -description: "If you need help or have a question..." -date: 2015-06-25 12:30 -sidebar: true -comments: false -sharing: true -footer: true ---- - -There are various ways to get in touch with the Home Assistant community. It doesn't matter if you have a question, need help, want to request a feature, or just say 'Hi'. - -### {% linkable_title Communication channels %} - -- [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 in [/r/homeassistant][reddit] - -### {% linkable_title Bugs, Feature requests, and alike %} - -Have you found an issue in your Home Assistant installation? Please report it. Reporting it makes it easy to track and ensures that it gets fixed. For more details please refer to [Reporting issues](/help/reporting_issues/) page. - -- [Issue tracker Home Assistant](https://github.com/home-assistant/home-assistant/issues) -- [Issue tracker home-assistant.io](https://github.com/home-assistant/home-assistant.io/issues) (Website and documentation) -- [Issue tracker Frontend](https://github.com/home-assistant/home-assistant-polymer/issues) (Frontend) -- [Issue tracker Hass.io](https://github.com/home-assistant/hassio/issues) -- [Feature requests Home Assistant](https://community.home-assistant.io/c/feature-requests) (Don't post feature requests in the issue trackers. Thanks.) - -### {% linkable_title Videos, talks, workshops and alike %} - -- [Automate your home with Home Assistant](https://www.youtube.com/watch?v=SSrgi4iHGbs) at [foss-north 2018](http://foss-north.se/2018/speakers-and-talks.html#jparadies) - March 2018 -- [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 -- [Automating Your Life - Home Automation](http://slides.com/teagan42/life_automation#/) at Develop Denver 2016 - August -- [Building Online Communities: Home Assistant](https://medium.com/@gitter/building-online-communities-home-assistant-8818dff671ad#.och4x4rhx) - July 2016 -- [Home Assistant Support 101 - Getting around in Home Assistant](https://www.youtube.com/watch?v=dRfk9JAlPJk) ([Slides](https://docs.google.com/presentation/d/1PUnOpeFZxNj4LEjaohGqH_1hOGQGuS5yRHD1ThHr6nk/edit?usp=sharing)) - June 2016 -- [Awaken your home: Python and the Internet of Things](https://www.youtube.com/watch?v=Cfasc9EgbMU&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=1) at PyCon 2016 - June 2016 -- [Automating your Home with Home Assistant](https://www.youtube.com/watch?v=4-6rTwKl6ww&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=2) at OpenIoT 2016 - March 2016 - -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/). - -- [HackSpace magazine #6](https://s3-eu-west-1.amazonaws.com/rpi-magazines/issues/full_pdfs/000/000/013/original/HS_6_Digital_Optimised.pdf?1524495009) - May 2018 -- [The winners of the Thomas-Krenn-Awards 2018](https://www.thomas-krenn.com/de/tkmag/allgemein/die-gewinner-des-thomas-krenn-awards-2018-stehen-fest/) - March 2018 -- [Hausautomations-Schaltzentrale Home Assistant auf Python-Basis](https://www.heise.de/ct/ausgabe/2017-26-Hausautomations-Schaltzentrale-Home-Assistant-3909532.html) - December 2017 -- [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 and 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 -- [10 open source software tools for developing IoT applications](http://www.cbronline.com/news/internet-of-things/10-open-source-software-tools-developing-iot-applications/) - March 2017 -- [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 -- [Episode 105 - DIY Home Automation Roundup](https://www.hometech.fm/shows/105) by [HomeTech.fm](https://www.hometech.fm/) - April 2016 -- [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 - -[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/reporting_issues.markdown b/source/help/reporting_issues.markdown deleted file mode 100644 index d2290788c5..0000000000 --- a/source/help/reporting_issues.markdown +++ /dev/null @@ -1,72 +0,0 @@ ---- -layout: page -title: "Reporting issues" -description: "Reporting issues about Home Assistant" -date: 2018-03-26 09:00 -sidebar: false -comments: false -sharing: true -footer: true ---- - -If you have an installation, a setup or a configuration issue please use our [Forum](https://community.home-assistant.io/) to get help. We have a big community which will help you if they can. - -If you found a bug then please report it in one of our [trackers](/help/#bugs-feature-requests-and-alike). To help you and our developers to identify the issue quickly, please fill out the provided template. The "weird" content you will see is there to render your entry in a nice format after submitting. It's just [markddown](https://guides.github.com/features/mastering-markdown/). - -Use the command below to get the Home Assistant release you are running from a command-line. - -```bash -$ hass --version -``` - -Otherwise check the **About** page which is accessible in the **Developer tools** of the Home Assistant frontend. - -### {% linkable_title First Home Assistant release with the issue %} - -Please provide the release which contains the issue. - -### {% linkable_title Last working Home Assistant release (if known) %} - -If possible, provide the latest release of which you know that the component or platform was working. Home Assistant is evolving very fast and issues may already be addressed or be introduced by a recent change. - -### {% linkable_title Operating environment (Hass.io/Docker/Windows/etc.) %} - -There are many different ways to run Home Assistant. In this section please mention which you are using, e.g. manual installation, [Hass.io](/hassio/), Hasbian or as container (Docker). It can help if you mention which operating system you are using because not all are supported on the same level. - -### {% linkable_title Component/platform %} - -Please add the link to the documention of the component/platform in question. E.g., - -- issue with the `random` sensor: [https://www.home-assistant.io/components/sensor.random/](/components/sensor.random/) -- issue with the `hue` component: [https://www.home-assistant.io/components/hue/](/components/hue/) - -### {% linkable_title Description of problem %} - -Provide a summary of your issue and tell us what's wrong. - -There are components and platform which require additional steps (installing third-party tools, compilers, etc.) to get your setup working. Please describe the steps you took and the ones to reproduce the issue if needed. - -### {% linkable_title Problem-relevant `configuration.yaml` entries %} - -To exclude configuration issues and allow the developers to quickly test, and perhaps reproduce, your issue, add the relevant part of your `configuration.yaml` file. This file is located in your [configuration folder](/docs/configuration/). - -```yaml -sensor: - - platform: random -``` - -Make sure that you don't post your username, password, API key, access token or other [secrets](/docs/configuration/secrets/). - -### {% linkable_title Traceback (if applicable) %} - -If things go wrong there will be a so-called traceback or an error message in other words in your log. Please include this. It starts with **Traceback** and can contain informations where the error was triggered in the code. - -```bash -Traceback (most recent call last): -... -``` - -### {% linkable_title Additional information %} - -This section can contain additional details or other observation. Often the little things can help as well. - diff --git a/source/help/talking-points.markdown b/source/help/talking-points.markdown deleted file mode 100644 index 44c106d2de..0000000000 --- a/source/help/talking-points.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: "Talking points" -description: "Talking points for your Home Assistant talk or presentation." -date: 2016-10-06 06:00 -sidebar: false -comments: false -sharing: true -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 1000 implementations -- Not depending on cloud services. We like to keep your privacy private -- 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 deleted file mode 100644 index f4a91f4a66..0000000000 --- a/source/help/trivia.markdown +++ /dev/null @@ -1,67 +0,0 @@ ---- -layout: page -title: "Trivia" -description: "Home Assistant Trivia" -date: 2015-11-03 19:00 -sidebar: false -comments: false -sharing: true -footer: true ---- - -This page contains only irrelevant and unhelpful information about Home Assistant. If you are going to prepare a talk about Home Assistant, perhaps some information mentioned here can be used for the intro. - -### {% linkable_title Name %} - -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 %} - -The website [https://www.home-assistant.io](/) was launched on December 18, 2014 and contains documentation about the setup process, the platforms and components, and for the developers. - -### {% linkable_title Logo %} - -The current logo was created by [Jeremy Geltman](http://jeremygeltman.com/). Further details can be found in the [announcement](/blog/2015/03/08/new-logo/). - -### {% linkable_title License %} - -Home Assistant is open source software and available under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) license. - -### {% linkable_title Numbers %} - -This sections just contains some random numbers of the Home Assistant eco-system. Sorry, only the main repository counts. - -| Description | 2015 | 2016 | 2017 | -|---|---| -| [Forum posts](https://community.home-assistant.io/) | 352 | 33004 | 171981 | -| [Forum topics](https://community.home-assistant.io/) | 83 | 4863 | 21512 | -| [Forum members](https://community.home-assistant.io/) | 92 | 3931 | 16663 | -| [Github stars](https://github.com/home-assistant/home-assistant/stargazers) | 2519 | 5239 | 12074 | -| [Github forks](https://github.com/home-assistant/home-assistant/network) | 374 | 1424 | 3474 | -| Page views [ha.io](/) | 600,372 | 6,614,343 | 23,727,481 | - -### {% 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), etc.) into account. - -```bash -2013: 147 -2014: 328 -2015: 2963 -2016: 4299 -2017: 3917 -``` - -More details and statistics can be found on [Github](https://github.com/home-assistant/home-assistant/graphs/contributors). - -### {% linkable_title First commit %} - -The first commit in `git` was made on Sep 17, 2013 by [Paulus Schoutsen](https://github.com/balloob). - -```bash -commit d55e4d53cccc9123d03f45c53441e7cbfc58e515 -Author: Paulus Schoutsen -Date: Tue Sep 17 00:32:51 2013 -0700 - - Initial commit -``` diff --git a/source/images/architecture/home_automation_landscape.svg b/source/images/architecture/home_automation_landscape.svg deleted file mode 100644 index c0fbca2818..0000000000 --- a/source/images/architecture/home_automation_landscape.svg +++ /dev/null @@ -1,904 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - Lights - - - - Smart Home - - HomeAutomation - User - - Configuration - - Home Control - Commands - Information - - - - Switches - Many more... - Internet of Things - - - - - Commands - Information - Information - Commands - Information(ie. light is on) - Commands(ie. turn light on) - Graphic by Paulus Schoutsen 2014, CC BY 4.0 - - diff --git a/source/images/bird_32_gray.png b/source/images/bird_32_gray.png deleted file mode 100644 index cf2cb22d97..0000000000 Binary files a/source/images/bird_32_gray.png and /dev/null differ diff --git a/source/images/bird_32_gray_fail.png b/source/images/bird_32_gray_fail.png deleted file mode 100644 index d625965148..0000000000 Binary files a/source/images/bird_32_gray_fail.png and /dev/null differ diff --git a/source/images/blog/2018-03-0.66/components.png b/source/images/blog/2018-03-0.66/components.png deleted file mode 100644 index 890a4b8512..0000000000 Binary files a/source/images/blog/2018-03-0.66/components.png and /dev/null differ diff --git a/source/images/blog/2018-03-fedora-atomic/social.png b/source/images/blog/2018-03-fedora-atomic/social.png deleted file mode 100644 index c6bf2a202b..0000000000 Binary files a/source/images/blog/2018-03-fedora-atomic/social.png and /dev/null differ diff --git a/source/images/blog/2018-03-release-schedule/release-schedule-diagram.png b/source/images/blog/2018-03-release-schedule/release-schedule-diagram.png deleted file mode 100644 index a55075f53e..0000000000 Binary files a/source/images/blog/2018-03-release-schedule/release-schedule-diagram.png and /dev/null differ diff --git a/source/images/blog/2018-03-release-schedule/social.png b/source/images/blog/2018-03-release-schedule/social.png deleted file mode 100644 index 7444977694..0000000000 Binary files a/source/images/blog/2018-03-release-schedule/social.png and /dev/null differ diff --git a/source/images/blog/2018-04-0.67/components.png b/source/images/blog/2018-04-0.67/components.png deleted file mode 100644 index 798602b5c1..0000000000 Binary files a/source/images/blog/2018-04-0.67/components.png and /dev/null differ diff --git a/source/images/blog/2018-04-0.68/components.png b/source/images/blog/2018-04-0.68/components.png deleted file mode 100644 index 57d9fc40b3..0000000000 Binary files a/source/images/blog/2018-04-0.68/components.png and /dev/null differ diff --git a/source/images/blog/2018-04-developer-website/screenshot.png b/source/images/blog/2018-04-developer-website/screenshot.png deleted file mode 100644 index faccecea64..0000000000 Binary files a/source/images/blog/2018-04-developer-website/screenshot.png and /dev/null differ diff --git a/source/images/blog/2018-04-google-assistant/google-assistant-home-assistant.png b/source/images/blog/2018-04-google-assistant/google-assistant-home-assistant.png deleted file mode 100644 index a7ec721fbc..0000000000 Binary files a/source/images/blog/2018-04-google-assistant/google-assistant-home-assistant.png and /dev/null differ diff --git a/source/images/blog/2018-04-hassio-2018/blogpost.png b/source/images/blog/2018-04-hassio-2018/blogpost.png deleted file mode 100644 index 443fb8a540..0000000000 Binary files a/source/images/blog/2018-04-hassio-2018/blogpost.png and /dev/null differ diff --git a/source/images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg b/source/images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg deleted file mode 100644 index 2a4e3d885f..0000000000 Binary files a/source/images/blog/2018-04-ubiquiti-and-home-assistant/paulus.jpg and /dev/null differ diff --git a/source/images/code_bg.png b/source/images/code_bg.png deleted file mode 100644 index ebd3acfa9b..0000000000 Binary files a/source/images/code_bg.png and /dev/null differ diff --git a/source/images/dotted-border.png b/source/images/dotted-border.png deleted file mode 100644 index d19b60c9f6..0000000000 Binary files a/source/images/dotted-border.png and /dev/null differ diff --git a/source/images/email.png b/source/images/email.png deleted file mode 100644 index 9100c8bb19..0000000000 Binary files a/source/images/email.png and /dev/null differ diff --git a/source/images/line-tile.png b/source/images/line-tile.png deleted file mode 100644 index 9247c3b1f5..0000000000 Binary files a/source/images/line-tile.png and /dev/null differ diff --git a/source/images/rss.png b/source/images/rss.png deleted file mode 100644 index 037ce65db1..0000000000 Binary files a/source/images/rss.png and /dev/null differ diff --git a/source/images/screenshots/binary_sensor_classes_icons.png b/source/images/screenshots/binary_sensor_classes_icons.png deleted file mode 100644 index 53363bcb99..0000000000 Binary files a/source/images/screenshots/binary_sensor_classes_icons.png and /dev/null differ diff --git a/source/images/screenshots/get_trafikverket_weather_station_example.png b/source/images/screenshots/get_trafikverket_weather_station_example.png deleted file mode 100644 index fd0d7535fe..0000000000 Binary files a/source/images/screenshots/get_trafikverket_weather_station_example.png and /dev/null differ diff --git a/source/images/screenshots/hello-world-state-card.png b/source/images/screenshots/hello-world-state-card.png deleted file mode 100644 index 9b1f5cbc0a..0000000000 Binary files a/source/images/screenshots/hello-world-state-card.png and /dev/null differ diff --git a/source/images/screenshots/limitlessled_assumed_state.png b/source/images/screenshots/limitlessled_assumed_state.png deleted file mode 100644 index ea1b99c366..0000000000 Binary files a/source/images/screenshots/limitlessled_assumed_state.png and /dev/null differ diff --git a/source/images/screenshots/sensor_device_classes_icons.png b/source/images/screenshots/sensor_device_classes_icons.png deleted file mode 100644 index 58e115250c..0000000000 Binary files a/source/images/screenshots/sensor_device_classes_icons.png and /dev/null differ diff --git a/source/images/search.png b/source/images/search.png deleted file mode 100644 index d0e1b1908b..0000000000 Binary files a/source/images/search.png and /dev/null differ diff --git a/source/images/supported_brands/asterisk.png b/source/images/supported_brands/asterisk.png deleted file mode 100644 index b8d8a1a123..0000000000 Binary files a/source/images/supported_brands/asterisk.png and /dev/null differ diff --git a/source/images/supported_brands/eufy.png b/source/images/supported_brands/eufy.png deleted file mode 100644 index 98d647b056..0000000000 Binary files a/source/images/supported_brands/eufy.png and /dev/null differ diff --git a/source/images/supported_brands/foobot.png b/source/images/supported_brands/foobot.png deleted file mode 100644 index 2d502c2cda..0000000000 Binary files a/source/images/supported_brands/foobot.png and /dev/null differ diff --git a/source/images/supported_brands/gogogate2.png b/source/images/supported_brands/gogogate2.png deleted file mode 100644 index 551043f64a..0000000000 Binary files a/source/images/supported_brands/gogogate2.png and /dev/null differ diff --git a/source/images/supported_brands/mastodon.png b/source/images/supported_brands/mastodon.png deleted file mode 100644 index 7a156e5b81..0000000000 Binary files a/source/images/supported_brands/mastodon.png and /dev/null differ diff --git a/source/images/supported_brands/nanoleaf_aurora_light.png b/source/images/supported_brands/nanoleaf_aurora_light.png deleted file mode 100644 index fb14d4752f..0000000000 Binary files a/source/images/supported_brands/nanoleaf_aurora_light.png and /dev/null differ diff --git a/source/images/supported_brands/postnl.png b/source/images/supported_brands/postnl.png deleted file mode 100644 index 93d54db18c..0000000000 Binary files a/source/images/supported_brands/postnl.png and /dev/null differ diff --git a/source/images/supported_brands/qwikswitch.png b/source/images/supported_brands/qwikswitch.png deleted file mode 100644 index 0109f03a35..0000000000 Binary files a/source/images/supported_brands/qwikswitch.png and /dev/null differ diff --git a/source/images/supported_brands/sensirion.png b/source/images/supported_brands/sensirion.png deleted file mode 100644 index 4c0576cacd..0000000000 Binary files a/source/images/supported_brands/sensirion.png and /dev/null differ diff --git a/source/images/supported_brands/sigfox.png b/source/images/supported_brands/sigfox.png deleted file mode 100644 index fdc7200ec8..0000000000 Binary files a/source/images/supported_brands/sigfox.png and /dev/null differ diff --git a/source/images/supported_brands/socialblade.png b/source/images/supported_brands/socialblade.png deleted file mode 100644 index 3e2de38de2..0000000000 Binary files a/source/images/supported_brands/socialblade.png and /dev/null differ diff --git a/source/images/supported_brands/stride.png b/source/images/supported_brands/stride.png deleted file mode 100644 index ec9825c808..0000000000 Binary files a/source/images/supported_brands/stride.png and /dev/null differ diff --git a/source/images/supported_brands/trafikverket.png b/source/images/supported_brands/trafikverket.png deleted file mode 100644 index d39df442c8..0000000000 Binary files a/source/images/supported_brands/trafikverket.png and /dev/null differ diff --git a/source/images/supported_brands/uscis.png b/source/images/supported_brands/uscis.png deleted file mode 100644 index 2268fb48b1..0000000000 Binary files a/source/images/supported_brands/uscis.png and /dev/null differ diff --git a/source/images/supported_brands/vesync.png b/source/images/supported_brands/vesync.png deleted file mode 100644 index 72aba90413..0000000000 Binary files a/source/images/supported_brands/vesync.png and /dev/null differ diff --git a/source/images/supported_brands/waze.png b/source/images/supported_brands/waze.png deleted file mode 100755 index 927614e0c8..0000000000 Binary files a/source/images/supported_brands/waze.png and /dev/null differ diff --git a/source/images/supported_brands/zillow.png b/source/images/supported_brands/zillow.png deleted file mode 100644 index 49a3147b78..0000000000 Binary files a/source/images/supported_brands/zillow.png and /dev/null differ diff --git a/source/index.html b/source/index.html deleted file mode 100644 index 234bf17108..0000000000 --- a/source/index.html +++ /dev/null @@ -1,146 +0,0 @@ ---- -layout: page -date: 2014-12-18 22:39 -comments: false -show_title: false -sidebar: false -hero_unit: true -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. ---- - -{% assign recent_release_post = site.categories['Release-Notes'].first %} - -
    -
    - - - - - - - - - -
    -
    -

    Home Assistant in the press

    - - ProductHunt.com logo - - Linux.com logo - - Wired.com logo - - OpenSource.com logo - - Linux Magazine logo - - Ct logo - -
    -
    -
    -
    diff --git a/source/javascripts/github.js b/source/javascripts/github.js deleted file mode 100644 index fc2bb12cf4..0000000000 --- a/source/javascripts/github.js +++ /dev/null @@ -1,32 +0,0 @@ -var github = (function(){ - function escapeHtml(str) { - return $('
    ').text(str).html(); - } - function render(target, repos){ - var i = 0, fragment = '', t = $(target)[0]; - - for(i = 0; i < repos.length; i++) { - fragment += '
  • '+repos[i].name+'

    '+escapeHtml(repos[i].description||'')+'

  • '; - } - t.innerHTML = fragment; - } - return { - showRepos: function(options){ - $.ajax({ - url: "https://api.github.com/users/"+options.user+"/repos?sort=pushed&callback=?" - , dataType: 'jsonp' - , error: function (err) { $(options.target + ' li.loading').addClass('error').text("Error loading feed"); } - , success: function(data) { - var repos = []; - if (!data || !data.data) { return; } - for (var i = 0; i < data.data.length; i++) { - if (options.skip_forks && data.data[i].fork) { continue; } - repos.push(data.data[i]); - } - if (options.count) { repos.splice(options.count); } - render(options.target, repos); - } - }); - } - }; -})(); diff --git a/source/javascripts/libs/jXHR.js b/source/javascripts/libs/jXHR.js deleted file mode 100644 index 6775655cdf..0000000000 --- a/source/javascripts/libs/jXHR.js +++ /dev/null @@ -1,85 +0,0 @@ -// jXHR.js (JSON-P XHR) -// v0.1 (c) Kyle Simpson -// MIT License - -(function(global){ - var SETTIMEOUT = global.setTimeout, // for better compression - doc = global.document, - callback_counter = 0; - - global.jXHR = function() { - var script_url, - script_loaded, - jsonp_callback, - scriptElem, - publicAPI = null; - - function removeScript() { try { scriptElem.parentNode.removeChild(scriptElem); } catch (err) { } } - - function reset() { - script_loaded = false; - script_url = ""; - removeScript(); - scriptElem = null; - fireReadyStateChange(0); - } - - function ThrowError(msg) { - try { publicAPI.onerror.call(publicAPI,msg,script_url); } catch (err) { throw new Error(msg); } - } - - function handleScriptLoad() { - if ((this.readyState && this.readyState!=="complete" && this.readyState!=="loaded") || script_loaded) { return; } - this.onload = this.onreadystatechange = null; // prevent memory leak - script_loaded = true; - if (publicAPI.readyState !== 4) ThrowError("Script failed to load ["+script_url+"]."); - removeScript(); - } - - function fireReadyStateChange(rs,args) { - args = args || []; - publicAPI.readyState = rs; - if (typeof publicAPI.onreadystatechange === "function") publicAPI.onreadystatechange.apply(publicAPI,args); - } - - publicAPI = { - onerror:null, - onreadystatechange:null, - readyState:0, - open:function(method,url){ - reset(); - internal_callback = "cb"+(callback_counter++); - (function(icb){ - global.jXHR[icb] = function() { - try { fireReadyStateChange.call(publicAPI,4,arguments); } - catch(err) { - publicAPI.readyState = -1; - ThrowError("Script failed to run ["+script_url+"]."); - } - global.jXHR[icb] = null; - }; - })(internal_callback); - script_url = url.replace(/=\?/,"=jXHR."+internal_callback); - fireReadyStateChange(1); - }, - send:function(){ - SETTIMEOUT(function(){ - scriptElem = doc.createElement("script"); - scriptElem.setAttribute("type","text/javascript"); - scriptElem.onload = scriptElem.onreadystatechange = function(){handleScriptLoad.call(scriptElem);}; - scriptElem.setAttribute("src",script_url); - doc.getElementsByTagName("head")[0].appendChild(scriptElem); - },0); - fireReadyStateChange(2); - }, - setRequestHeader:function(){}, // noop - getResponseHeader:function(){return "";}, // basically noop - getAllResponseHeaders:function(){return [];} // ditto - }; - - reset(); - - return publicAPI; - }; -})(window); - diff --git a/source/javascripts/libs/jquery.min.js b/source/javascripts/libs/jquery.min.js deleted file mode 100644 index 32d50cb0ee..0000000000 --- a/source/javascripts/libs/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery.min.map -*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; -return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
    ",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) -}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("